Parcourir la source

2020-01-20 / Folus Wen

Actions:
1. Module_AlarmDetect.c OVP,UCP,OCP detect condition fix to only check gpio from MCU.
2. main.c firmware upgrade logic improvement.

Files:
1. As follow commit history.
FolusWen il y a 5 ans
Parent
commit
89e821e6b7

+ 20 - 40
EVSE/Projects/AW-Regular/Apps/Module_AlarmDetect.c

@@ -250,8 +250,7 @@ int main(void)
 			//=====================================
 			// Over voltage detection
 			//=====================================
-			if((ShmSysConfigAndInfo->SysInfo.InputVoltageR > SPEC_OV) &&
-				(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_VOLTAGE))
+			if((ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_VOLTAGE))
 			{
 				if(Alarm_Counter[gun_index].OV[0] > FILTER_SPEC)
 				{
@@ -267,8 +266,7 @@ int main(void)
 					Alarm_Counter[gun_index].OV[0]++;
 				}
 			}
-			else if((ShmSysConfigAndInfo->SysInfo.InputVoltageR < (SPEC_OV-HYSTERETIC_OUV)) &&
-					(!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_VOLTAGE)))
+			else if(!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_VOLTAGE))
 			{
 				Alarm_Counter[gun_index].OV[0] = 0;
 				if((ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputOVP == ON))
@@ -281,8 +279,7 @@ int main(void)
 
 			if(ShmSysConfigAndInfo->SysConfig.AcPhaseCount == 3)
 			{
-				if((ShmSysConfigAndInfo->SysInfo.InputVoltageS > SPEC_OV) &&
-				   (ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_VOLTAGE))
+				if((ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_VOLTAGE))
 				{
 					if(Alarm_Counter[gun_index].OV[1] > FILTER_SPEC)
 					{
@@ -298,8 +295,7 @@ int main(void)
 						Alarm_Counter[gun_index].OV[1]++;
 					}
 				}
-				else if((ShmSysConfigAndInfo->SysInfo.InputVoltageS < (SPEC_OV-HYSTERETIC_OUV)) &&
-						(!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_VOLTAGE)))
+				else if((!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_VOLTAGE)))
 				{
 					Alarm_Counter[gun_index].OV[1] = 0;
 					if((ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputOVP == ON))
@@ -310,8 +306,7 @@ int main(void)
 					}
 				}
 
-				if((ShmSysConfigAndInfo->SysInfo.InputVoltageT > SPEC_OV) &&
-				   (ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_VOLTAGE))
+				if((ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_VOLTAGE))
 				{
 					if(Alarm_Counter[gun_index].OV[2] > FILTER_SPEC)
 					{
@@ -327,8 +322,7 @@ int main(void)
 						Alarm_Counter[gun_index].OV[2]++;
 					}
 				}
-				else if((ShmSysConfigAndInfo->SysInfo.InputVoltageT < (SPEC_OV-HYSTERETIC_OUV)) &&
-						(!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_VOLTAGE)))
+				else if((!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_VOLTAGE)))
 				{
 					Alarm_Counter[gun_index].OV[2] = 0;
 					if((ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputOVP == ON))
@@ -343,8 +337,7 @@ int main(void)
 			//=====================================
 			// Under voltage detection
 			//=====================================
-			if((ShmSysConfigAndInfo->SysInfo.InputVoltageR  < SPEC_UV) &&
-				(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_UNDER_VOLTAGE))
+			if((ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_UNDER_VOLTAGE))
 			{
 				if(Alarm_Counter[gun_index].UV[0] > FILTER_SPEC)
 				{
@@ -360,8 +353,7 @@ int main(void)
 					Alarm_Counter[gun_index].UV[0]++;
 				}
 			}
-			else if((ShmSysConfigAndInfo->SysInfo.InputVoltageR  > (SPEC_UV+HYSTERETIC_OUV)) &&
-					(!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_UNDER_VOLTAGE)))
+			else if((!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_UNDER_VOLTAGE)))
 			{
 				Alarm_Counter[gun_index].UV[0] = 0;
 				if((ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputUVP == ON))
@@ -374,8 +366,7 @@ int main(void)
 
 			if(ShmSysConfigAndInfo->SysConfig.AcPhaseCount == 3)
 			{
-				if((ShmSysConfigAndInfo->SysInfo.InputVoltageS < SPEC_UV) &&
-				   (ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_UNDER_VOLTAGE))
+				if((ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_UNDER_VOLTAGE))
 				{
 					if(Alarm_Counter[gun_index].UV[1] > FILTER_SPEC)
 					{
@@ -391,8 +382,7 @@ int main(void)
 						Alarm_Counter[gun_index].UV[1]++;
 					}
 				}
-				else if((ShmSysConfigAndInfo->SysInfo.InputVoltageS > (SPEC_UV+HYSTERETIC_OUV)) &&
-						(!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_UNDER_VOLTAGE)))
+				else if((!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_UNDER_VOLTAGE)))
 				{
 					Alarm_Counter[gun_index].UV[1] = 0;
 					if((ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL2InputUVP == ON))
@@ -403,8 +393,7 @@ int main(void)
 					}
 				}
 
-				if((ShmSysConfigAndInfo->SysInfo.InputVoltageT < SPEC_UV) &&
-				   (ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_UNDER_VOLTAGE))
+				if((ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_UNDER_VOLTAGE))
 				{
 					if(Alarm_Counter[gun_index].UV[2] > FILTER_SPEC)
 					{
@@ -420,8 +409,7 @@ int main(void)
 						Alarm_Counter[gun_index].UV[2]++;
 					}
 				}
-				else if((ShmSysConfigAndInfo->SysInfo.InputVoltageT > (SPEC_OV+HYSTERETIC_OUV)) &&
-						(!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_UNDER_VOLTAGE)))
+				else if((!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_UNDER_VOLTAGE)))
 				{
 					Alarm_Counter[gun_index].UV[2] = 0;
 					if((ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL3InputUVP == ON))
@@ -436,8 +424,7 @@ int main(void)
 			//=====================================
 			// Over current detection
 			//=====================================
-			if((ShmCharger->gun_info[gun_index].outputCurrent.L1N_L12[0] > SPEC_OC) &&
-			   (ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_CURRENT))
+			if((ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_CURRENT))
 			{
 				if((ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemAcOutputOCP == OFF))
 				{
@@ -446,8 +433,7 @@ int main(void)
 					DEBUG_INFO("ALARM_OVER_CURRENT : alarm \r\n");
 				}
 			}
-			else if ((ShmCharger->gun_info[gun_index].outputCurrent.L1N_L12[0] < (SPEC_OC-HYSTERETIC_OC)) &&
-					 (!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_CURRENT)))
+			else if ((!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_CURRENT)))
 			{
 				if((ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemAcOutputOCP == ON))
 				{
@@ -459,8 +445,7 @@ int main(void)
 
 			if(ShmSysConfigAndInfo->SysConfig.AcPhaseCount == 3)
 			{
-				if((ShmCharger->gun_info[gun_index].outputCurrent.L2N_L23[0] > SPEC_OC) &&
-				   (ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_CURRENT))
+				if((ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_CURRENT))
 				{
 					if((ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemAcOutputOCP == OFF))
 					{
@@ -469,8 +454,7 @@ int main(void)
 						DEBUG_INFO("ALARM_OVER_CURRENT : alarm \r\n");
 					}
 				}
-				else if ((ShmCharger->gun_info[gun_index].outputCurrent.L2N_L23[0] < (SPEC_OC-HYSTERETIC_OC)) &&
-						 (!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_CURRENT)))
+				else if ((!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_CURRENT)))
 				{
 					if((ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemAcOutputOCP == ON))
 					{
@@ -480,8 +464,7 @@ int main(void)
 					}
 				}
 
-				if((ShmCharger->gun_info[gun_index].outputCurrent.L3N_L31[0] > SPEC_OC) &&
-				   (ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_CURRENT))
+				if((ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_CURRENT))
 				{
 					if((ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemAcOutputOCP == OFF))
 					{
@@ -490,8 +473,7 @@ int main(void)
 						DEBUG_INFO("ALARM_OVER_CURRENT : alarm \r\n");
 					}
 				}
-				else if ((ShmCharger->gun_info[gun_index].outputCurrent.L3N_L31[0] < (SPEC_OC-HYSTERETIC_OC)) &&
-						 (!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_CURRENT)))
+				else if ((!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_CURRENT)))
 				{
 					if((ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemAcOutputOCP == ON))
 					{
@@ -505,8 +487,7 @@ int main(void)
 			//=====================================
 			// Over temperature detection
 			//=====================================
-			if(//(ShmSysConfigAndInfo->SysInfo.SystemAmbientTemp > SPEC_OT) &&
-			   (ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_TEMPERATURE))
+			if((ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_TEMPERATURE))
 			{
 				if(Alarm_Counter[gun_index].OT_AMB > FILTER_SPEC)
 				{
@@ -522,8 +503,7 @@ int main(void)
 					Alarm_Counter[gun_index].OT_AMB++;
 				}
 			}
-			else if(//(ShmSysConfigAndInfo->SysInfo.SystemAmbientTemp < (SPEC_OT-10)) &&
-					(!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_TEMPERATURE)))
+			else if((!(ShmCharger->gun_info[gun_index].primaryMcuAlarm.InputAlarmCode & ALARM_OVER_TEMPERATURE)))
 			{
 				Alarm_Counter[gun_index].OT_AMB = 0;
 				if((ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemAmbientOTP == ON))

+ 2 - 2
EVSE/Projects/AW-Regular/Apps/Module_FactoryConfig.c

@@ -226,8 +226,8 @@ int main(int argc, char *argv[])
 	// System configuration
 	time_t t = time(NULL);
 	struct tm tm = *localtime(&t);
-	strcpy((char*)SysConfig.ModelName, "AWLU700100W1PH");
-	strcpy((char*)SysConfig.SerialNumber, "D1904A001A0");
+	strcpy((char*)SysConfig.ModelName, "AWLU770100W1P0");
+	strcpy((char*)SysConfig.SerialNumber, "D19520001A0");
 	sprintf((char*)SysConfig.SystemId, "%s%s", SysConfig.ModelName, SysConfig.SerialNumber);
 	sprintf((char*)SysConfig.SystemDateTime, "%d-%d-%d %d:%d:%d", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
 	SysConfig.AuthorisationMode = 0;	// 0:PH card	1: OCPP backend		2: PH backend	3: Free Mode

+ 34 - 10
EVSE/Projects/AW-Regular/Apps/main.c

@@ -954,7 +954,8 @@ int upgrade_check()
 							case CSU_ROOT_FILE_SYSTEM:
 							case CSU_USER_CONFIGURATION:
 							case CSU_PRIMARY_CONTROLLER:
-								Upgrade_Flash(ShmCharger->fwUpgradeInfo.fwType, ShmCharger->fwUpgradeInfo.location, ShmCharger->fwUpgradeInfo.modelName);
+								if(Upgrade_Flash(ShmCharger->fwUpgradeInfo.fwType, ShmCharger->fwUpgradeInfo.location, ShmCharger->fwUpgradeInfo.modelName) != PASS)
+									result = FAIL;
 
 								sprintf(cmd, "yes|rm %s", ShmCharger->fwUpgradeInfo.location);
 								system(cmd);
@@ -1445,6 +1446,7 @@ int main(void)
 			if(ShmSysConfigAndInfo->SysInfo.FirmwareUpdate ||
 			   ShmOCPP16Data->MsMsg.bits.UpdateFirmwareReq)
 			{
+				ShmCharger->isUpdateSuccess = FAIL;
 				for(int gun_index = 0;gun_index<AC_QUANTITY;gun_index++)
 					setChargerMode(gun_index, SYS_MODE_MAINTAIN);
 			}
@@ -2065,9 +2067,15 @@ int main(void)
 					if(ShmSysConfigAndInfo->SysInfo.FirmwareUpdate)
 					{
 						DEBUG_INFO("Firmware local upgrading...\r\n");
+						ShmSysConfigAndInfo->SysInfo.FirmwareUpdate = OFF;
+
 						if(upgrade_check())
 						{
-							ShmSysConfigAndInfo->SysInfo.FirmwareUpdate = OFF;
+							ShmCharger->isUpdateSuccess = PASS;
+						}
+						else
+						{
+							ShmCharger->isUpdateSuccess = FAIL;
 						}
 					}
 					else if(ShmOCPP16Data->MsMsg.bits.UpdateFirmwareReq)
@@ -2085,9 +2093,14 @@ int main(void)
 							DEBUG_INFO("Firmware remote upgrading...\r\n");
 							sprintf((char*)ShmOCPP16Data->FirmwareStatusNotification.Status, "Installing");
 							ShmOCPP16Data->SpMsg.bits.FirmwareStatusNotificationReq = ON;
+							ShmOCPP16Data->MsMsg.bits.UpdateFirmwareReq = OFF;
 							if(upgrade_check())
 							{
-								ShmOCPP16Data->MsMsg.bits.UpdateFirmwareReq = OFF;
+								ShmCharger->isUpdateSuccess = PASS;
+							}
+							else
+							{
+								ShmCharger->isUpdateSuccess = FAIL;
 							}
 						}
 						else
@@ -2100,13 +2113,24 @@ int main(void)
 						//======================================
 						if(!ShmCharger->gun_info[gun_index].mcuFlag.isMcuUpgradeReq && ((AC_QUANTITY>1)?!ShmCharger->gun_info[gun_index^1].mcuFlag.isMcuUpgradeReq:YES))
 						{
-							sprintf((char*)ShmOCPP16Data->FirmwareStatusNotification.Status, "Installed");
-							ShmOCPP16Data->SpMsg.bits.FirmwareStatusNotificationReq = ON;
-							sleep(5);
-							DEBUG_INFO("Firmware upgraded, reboot...\r\n");
-							system("reboot -f");
-							sleep(5);
-							system("reboot -f");
+							if(ShmCharger->isUpdateSuccess == PASS)
+							{
+								sprintf((char*)ShmOCPP16Data->FirmwareStatusNotification.Status, "Installed");
+								ShmOCPP16Data->SpMsg.bits.FirmwareStatusNotificationReq = ON;
+								DEBUG_WARN("Firmware upgrade success.\r\n");
+
+								sleep(5);
+								DEBUG_INFO("Firmware upgraded, reboot...\r\n");
+								system("reboot -f");
+								sleep(5);
+								system("reboot -f");
+							}
+							else
+							{
+								sprintf((char*)ShmOCPP16Data->FirmwareStatusNotification.Status, "InstallationFailed");
+								ShmOCPP16Data->SpMsg.bits.FirmwareStatusNotificationReq = ON;
+								DEBUG_WARN("Firmware upgrade fail.\r\n");
+							}
 						}
 					}
 

+ 1 - 1
EVSE/Projects/AW-Regular/Apps/main.h

@@ -390,10 +390,10 @@ struct Charger
 	Gun_Info 				gun_info[2];
 	Fw_Upgrade_Info			fwUpgradeInfo;
 	
-
 	unsigned char 			speaker_type;
 	unsigned char			rfidReq:1;
 	unsigned char			isSpeakerOn:1;
+	unsigned char 			isUpdateSuccess:1;
 };
 
 #endif /* CONFIG_MAIN_H_ */

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


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