Browse Source

2020-06-11 /Edward Lien

Actions:
1.offline policy from locallist to free charge.(Module_FactoryConfig.c)
2.define.h add 4 AlarmEvents bits & AlarmStatusCode

3.main.h Add short_circuit_L2, short_circuit_L3
4.Module_InternalComm.c Module_AlarmDetect.c add short circuit alarm 3 phase code

Files:
1. As follow commit history

Image version: D0.14.XX.XXXX.XX
Image checksum: XXXXXXXX

Hardware PWB P/N : XXXXXXX
Hardware Version : XXXXXXX
Edward Lien 4 years ago
parent
commit
1f8361a222

+ 71 - 12
EVSE/Projects/AW-CCS/Apps/Module_AlarmDetect.c

@@ -52,10 +52,10 @@
 struct{
 	unsigned short int	OV[3];
 	unsigned short int	UV[3];
-	unsigned short int	OC;
+	unsigned short int	OC[3];
 	unsigned short int	OT_AMB;
 	unsigned short int	GMI;
-	unsigned short int	Short;
+	unsigned short int	Short[3];
 	unsigned short int	Leakage;
 	unsigned short int	HandShakingTimeout;
 	unsigned short int	EmrgencyBTN;
@@ -787,30 +787,87 @@ int main(void)
 			//=====================================
 			// Current short detection
 			//=====================================
-			if(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_CIRCUIT_SHORT)
+			if(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_L1_CIRCUIT_SHORT)
 			{
-				if(Alarm_Counter[gun_index].Short > FILTER_SPEC)
+				if(Alarm_Counter[gun_index].Short[0] > FILTER_SPEC)
 				{
 					if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShort == OFF)
 					{
 						ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShort = ON;
-						ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_CIRCUIT_SHORT;
-						DEBUG_INFO("ALARM_CIRCUIT_SHORT : alarm \r\n");
+						ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_L1_CIRCUIT_SHORT;
+						DEBUG_INFO("ALARM_L1_CIRCUIT_SHORT : alarm \r\n");
 					}
 				}
 				else
 				{
-					Alarm_Counter[gun_index].Short++;
+					Alarm_Counter[gun_index].Short[0]++;
 				}
 			}
-			else if(!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_CIRCUIT_SHORT))
+			else if(!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_L1_CIRCUIT_SHORT))
 			{
-				Alarm_Counter[gun_index].Short = 0;
+				Alarm_Counter[gun_index].Short[0] = 0;
 				if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShort == ON)
 				{
 					ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShort = OFF;
-					ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode &= ~ALARM_CIRCUIT_SHORT;
-					DEBUG_INFO("ALARM_CIRCUIT_SHORT : recover \r\n");
+					ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode &= ~ALARM_L1_CIRCUIT_SHORT;
+					DEBUG_INFO("ALARM_L1_CIRCUIT_SHORT : recover \r\n");
+				}
+			}
+			
+			if(ShmSysConfigAndInfo->SysConfig.AcPhaseCount == 3)
+			{
+				if(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_L2_CIRCUIT_SHORT)
+				{
+					if(Alarm_Counter[gun_index].Short[1] > FILTER_SPEC)
+					{
+						if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShortL2 == OFF)
+						{
+							ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShortL2 = ON;
+							ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_L2_CIRCUIT_SHORT;
+							DEBUG_INFO("ALARM_L2_CIRCUIT_SHORT : alarm \r\n");
+						}
+					}
+					else
+					{
+						Alarm_Counter[gun_index].Short[1]++;
+					}
+				}
+				else if(!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_L2_CIRCUIT_SHORT))
+				{
+					Alarm_Counter[gun_index].Short[1] = 0;
+					if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShortL2 == ON)
+					{
+						ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShortL2 = OFF;
+						ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode &= ~ALARM_L2_CIRCUIT_SHORT;
+						DEBUG_INFO("ALARM_L2_CIRCUIT_SHORT : recover \r\n");
+					}
+				}
+
+				if(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_L3_CIRCUIT_SHORT)
+				{
+					if(Alarm_Counter[gun_index].Short[2] > FILTER_SPEC)
+					{
+						if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShortL3 == OFF)
+						{
+							ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShortL3 = ON;
+							ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_L3_CIRCUIT_SHORT;
+							DEBUG_INFO("ALARM_L3_CIRCUIT_SHORT : alarm \r\n");
+						}
+					}
+					else
+					{
+						Alarm_Counter[gun_index].Short[2]++;
+					}
+				}
+				else if(!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_L3_CIRCUIT_SHORT))
+				{
+					Alarm_Counter[gun_index].Short[2] = 0;
+					if(ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShortL3 == ON)
+					{
+						ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShortL3 = OFF;
+						ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode &= ~ALARM_L3_CIRCUIT_SHORT;
+						DEBUG_INFO("ALARM_L3_CIRCUIT_SHORT : recover \r\n");
+					}
 				}
 			}
 
@@ -1007,7 +1064,9 @@ int main(void)
 				sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
 				sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "PowerDrop");
 			}
-			else if(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_CIRCUIT_SHORT)
+			else if((ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L1_CIRCUIT_SHORT) ||
+					(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L2_CIRCUIT_SHORT) ||
+					(ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode & ALARM_L3_CIRCUIT_SHORT))
 			{
 				sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].ErrorCode , "OtherError");
 				sprintf((char*)ShmOCPP16Data->StatusNotification[gun_index].VendorErrorCode , "CircuitShort");

+ 1 - 1
EVSE/Projects/AW-CCS/Apps/Module_FactoryConfig.c

@@ -281,7 +281,7 @@ int main(int argc, char *argv[])
 
 	// Backend configuration
 	SysConfig.BackendConnTimeout=300; 		// 300 seconds
-	SysConfig.OfflinePolicy = 0;			// 0: Local list	1: PH RFID		2: Free		3: Deny
+	SysConfig.OfflinePolicy = 2;			// 0: Local list	1: PH RFID		2: Free		3: Deny
 	SysConfig.OfflineMaxChargeEnergy = 0;	// 0: Same as MaxChargeEnergy	Other: 1~65535KWH
 	SysConfig.OfflineMaxChargeDuration = 0; // 0: Same as MaxChargeDuration Other: 1~65535 minutes
 	strcpy((char*)SysConfig.OcppServerURL, "");

+ 23 - 8
EVSE/Projects/AW-CCS/Apps/Module_InternalComm.c

@@ -819,9 +819,10 @@ unsigned char Query_AC_MCU_Alarm(unsigned char fd, unsigned char targetAddr, Ac_
 			Ret_Buf->bits.power_drop = (((rx[7]>>7)&0x01)?1:0);
 
 			//rx[8] 3 bits reserved
-			Ret_Buf->bits.circuit_short = (((rx[8]>>0)&0x01)?1:0);
-			Ret_Buf->bits.set_circuit = (((rx[8]>>1)&0x01)?1:0);
+			Ret_Buf->bits.short_circuit_L1 = (((rx[8]>>0)&0x01)?1:0);
+			Ret_Buf->bits.rotate_switch_fault = (((rx[8]>>1)&0x01)?1:0);
 			Ret_Buf->bits.relay_drive_fault = (((rx[8]>>2)&0x01)?1:0);
+			
 			Ret_Buf->bits.OVP_L2 = (((rx[8]>>4)&0x01)?1:0);
 			Ret_Buf->bits.OVP_L3 = (((rx[8]>>5)&0x01)?1:0);
 			Ret_Buf->bits.UVP_L2 = (((rx[8]>>6)&0x01)?1:0);
@@ -830,7 +831,9 @@ unsigned char Query_AC_MCU_Alarm(unsigned char fd, unsigned char targetAddr, Ac_
 
 			//rx[9] 2~7bits reserved
 			Ret_Buf->bits.OCP_L2 = (((rx[9]>>0)&0x01)?1:0);
-			Ret_Buf->bits.OCP_L3 = (((rx[9]>>1)&0x01)?1:0);			
+			Ret_Buf->bits.OCP_L3 = (((rx[9]>>1)&0x01)?1:0);		
+			Ret_Buf->bits.short_circuit_L2 = (((rx[9]>>2)&0x01)?1:0);
+			Ret_Buf->bits.short_circuit_L3 = (((rx[9]>>3)&0x01)?1:0);			
 
 			result = PASS;
 		}
@@ -1999,12 +2002,12 @@ int main(void)
 					//================================================
 					// Byte[8]
 					//================================================
-					if(ShmCharger->gun_info[gun_index].primaryMcuAlarm.bits.circuit_short == 0x01)
+					if(ShmCharger->gun_info[gun_index].primaryMcuAlarm.bits.short_circuit_L1 == 0x01)
 						ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode |= 1<<16;
 					else
 						ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode &= ~(1<<16);
 
-					if(ShmCharger->gun_info[gun_index].primaryMcuAlarm.bits.set_circuit == 0x01)
+					if(ShmCharger->gun_info[gun_index].primaryMcuAlarm.bits.rotate_switch_fault == 0x01)
 						ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode |= 1<<17;
 					else
 						ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode &= ~(1<<17);
@@ -2045,7 +2048,17 @@ int main(void)
 					if(ShmCharger->gun_info[gun_index].primaryMcuAlarm.bits.OCP_L3 == 0x01)
 						ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode |= 1<<25;
 					else
-						ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode &= ~(1<<25);							
+						ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode &= ~(1<<25);			
+
+					if(ShmCharger->gun_info[gun_index].primaryMcuAlarm.bits.short_circuit_L2 == 0x01)
+						ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode |= 1<<26;
+					else
+						ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode &= ~(1<<26);
+
+					if(ShmCharger->gun_info[gun_index].primaryMcuAlarm.bits.short_circuit_L3 == 0x01)
+						ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode |= 1<<27;
+					else
+						ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode &= ~(1<<27);							
 
 					failCount[gun_index] = 0;
 					
@@ -2213,8 +2226,10 @@ int main(void)
 						DEBUG_INFO("MCU-%d get shutter_fault : %d\r\n", gun_index, ShmCharger->gun_info[gun_index].primaryMcuAlarm.bits.shutter_fault);
 						DEBUG_INFO("MCU-%d get locker_fault : %d\r\n", gun_index, ShmCharger->gun_info[gun_index].primaryMcuAlarm.bits.locker_fault);
 						DEBUG_INFO("MCU-%d get power_drop : %d\r\n", gun_index, ShmCharger->gun_info[gun_index].primaryMcuAlarm.bits.power_drop);
-						DEBUG_INFO("MCU-%d get circuit_short : %d\r\n", gun_index, ShmCharger->gun_info[gun_index].primaryMcuAlarm.bits.circuit_short);
-						DEBUG_INFO("MCU-%d get set_circuit : %d\r\n", gun_index, ShmCharger->gun_info[gun_index].primaryMcuAlarm.bits.set_circuit);
+						DEBUG_INFO("MCU-%d get rotate_switch_fault : %d\r\n", gun_index, ShmCharger->gun_info[gun_index].primaryMcuAlarm.bits.rotate_switch_fault);
+						DEBUG_INFO("MCU-%d get short_circuit_L1 : %d\r\n", gun_index, ShmCharger->gun_info[gun_index].primaryMcuAlarm.bits.short_circuit_L1);
+						DEBUG_INFO("MCU-%d get short_circuit_L2 : %d\r\n", gun_index, ShmCharger->gun_info[gun_index].primaryMcuAlarm.bits.short_circuit_L2);
+						DEBUG_INFO("MCU-%d get short_circuit_L3 : %d\r\n", gun_index, ShmCharger->gun_info[gun_index].primaryMcuAlarm.bits.short_circuit_L3);
 						DEBUG_INFO("MCU-%d get relay_drive_fault : %d\r\n", gun_index, ShmCharger->gun_info[gun_index].primaryMcuAlarm.bits.relay_drive_fault);
 						DEBUG_INFO("MCU-%d get InputAlarmCode : %x\r\n", gun_index, ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode);
 					}

+ 1 - 1
EVSE/Projects/AW-CCS/Apps/main.c

@@ -1204,7 +1204,7 @@ void get_firmware_version(unsigned char gun_index)
 	strcpy((char*)ShmSysConfigAndInfo->SysInfo.CsuPrimFwRev, ShmCharger->gun_info[gun_index].ver.Version_FW);
 
 	// Get CSU root file system version
-	sprintf((char*)ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev, "D0.13.00.0000.00");
+	sprintf((char*)ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev, "D0.14.00.0000.00");
 
 	// Get AC connector type from model name
 	for(uint8_t idx=0;idx<3;idx++)

+ 8 - 4
EVSE/Projects/AW-CCS/Apps/main.h

@@ -107,7 +107,7 @@
 #define ALARM_LOCKER_FAULT                      0x00004000  
 #define ALARM_POWER_DROP                        0x00008000
   
-#define ALARM_CIRCUIT_SHORT                     0x00010000 
+#define ALARM_L1_CIRCUIT_SHORT                  0x00010000 
 #define ALARM_ROTATORY_SWITCH_FAULT             0x00020000 
 #define ALARM_RELAY_DRIVE_FAULT                 0x00040000 
 #define ALARM_BLE_MODULE_BROKEN                 0x00080000 
@@ -118,6 +118,8 @@
 
 #define ALARM_L2_OVER_CURRENT					0x01000000
 #define ALARM_L3_OVER_CURRENT					0x02000000
+#define ALARM_L2_CIRCUIT_SHORT                  0x04000000 
+#define ALARM_L3_CIRCUIT_SHORT                  0x08000000
 
 //===================================
 // Define Led constant
@@ -320,8 +322,8 @@ typedef struct AC_PRIMARY_MCU_ALARM
 			unsigned long shutter_fault:1;
 			unsigned long locker_fault:1;
 			unsigned long power_drop:1;
-			unsigned long circuit_short:1;
-			unsigned long set_circuit:1;
+			unsigned long rotate_switch_fault:1;
+			unsigned long short_circuit_L1:1;
 			unsigned long relay_drive_fault:1;
 			unsigned long comm_timeout:1;
 			unsigned long OVP_L2:1;
@@ -329,7 +331,9 @@ typedef struct AC_PRIMARY_MCU_ALARM
 			unsigned long OCP_L2:1;
 			unsigned long OVP_L3:1;
 			unsigned long UVP_L3:1;
-			unsigned long OCP_L3:1;			
+			unsigned long OCP_L3:1;	
+			unsigned long short_circuit_L2:1;
+			unsigned long short_circuit_L3:1;			
 		}bits;
 	};
 }Ac_Primary_Mcu_Alarm;

BIN
EVSE/Projects/AW-CCS/Images/FactoryDefaultConfig.bin


BIN
EVSE/Projects/AW-CCS/Images/ramdisk.gz


+ 15 - 7
EVSE/Projects/define.h

@@ -719,7 +719,7 @@ char AlarmStatusCode[128][6]=
 	"012213",	//System L2 input drop
 	"012214",	//System L3 input drop
 	"012215",	//System AC output OVP
-	"012216",	//System AC output OCP
+	"012216",	//System AC output OCP L1
 	"012217",	//System CHAdeMO output OVP
 	"012218",	//System CHAdeMO output OCP
 	"012219",	//System CCS output OVP
@@ -765,7 +765,7 @@ char AlarmStatusCode[128][6]=
 	"012259",	//CHAdeMO groundfault detection timeout (GFD)
 	"012260",	//CCS groundfault detection timeout (GFD)
 	"012261",	//GB groundfault detection timeout (GFD)
-	"012262",	//Circuit Short
+	"012262",	//Circuit Short L1
 	"012263",	// PSU Duplicate ID
 	"012264", 	// PSU Output Short Circuit
 	"012265", 	// PSU Discharge Abnormal
@@ -796,12 +796,16 @@ char AlarmStatusCode[128][6]=
 	"012290",	// GBT output UVP
 	"012291",	// Self test Failed due to communication of GBTboard failure
 	"012292",	// Self test Failed due to communication of AC failure
-	"012293",	// Self test Failed due to communication of Ledboard failure
+	"012293",	// Reserved
 	"012294",	// Ac input OVP
 	"012295",	// Ac input UVP
 	"012296",	// CHAdeMO groundfault detection - warning
 	"012297",	// CCS groundfault detection - warning
 	"012298",	// GB groundfault detection - warning
+	"012299",	//System AC output OCP L2
+	"012300",	//System AC output OCP L3
+	"012301",	//Circuit Short L2
+	"012302",	//Circuit Short L3
 
 };
 struct AlarmCodeData
@@ -917,14 +921,18 @@ struct AlarmCodeData
 			unsigned char GbtOutputUVPFail :1;					//bit 2
 			unsigned char GbtboardStestFail :1;					//bit 3
 			unsigned char AcConnectorStestFail:1;				//bit 4
-			unsigned char LedboardStestFail:1;					//bit 5
-			unsigned char AcSystemInputOVP:1;					//bit 6
-			unsigned char AcSystemInputUVP:1;					//bit 7
+			unsigned char :1;									//bit 5
+			unsigned char AcSystemInputOVP:1;									//bit 6
+			unsigned char AcSystemInputUVP:1;									//bit 7
 			//AlarmVal[12]
 			unsigned char ChademoGroundWarning :1;					//bit 0
 			unsigned char CcsGroundfaultWarning :1;					//bit 1
 			unsigned char GbGroundfaultWarning :1;					//bit 2
-			unsigned char :5;					//bit 3 ~ 7
+			unsigned char SystemAcOutputOCPL2:1;					//bit 3
+			unsigned char SystemAcOutputOCPL3:1;					//bit 4
+			unsigned char CircuitShortL2:1;							//bit 5
+			unsigned char CircuitShortL3:1;							//bit 6
+			unsigned char :1;										//bit 7
 		}bits;
 	}AlarmEvents;
 };