Ver código fonte

[Improve][AW-Regular][main.c][Module_AlarmDetect.c]
2022-03-21 / EASON YANG
Action
1. Improve: Print out fault code when alarm occurs.
2. Improve: The EVSE will stop the session if the EVSE occurs alarm during charging and unplug and plug the connector once. Protect for energy stolen.

File
1. main.c
Action 2

2. Module_AlarmDetect.c
Action 1

FIRMWARE VERSION: V0.70.XX.XXXX.PX

8009 3 anos atrás
pai
commit
8d430a1f0a

+ 19 - 19
EVSE/Projects/AW-Regular/Apps/Module_AlarmDetect.c

@@ -297,7 +297,7 @@ int main(void)
 					{
 						ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputOVP = ON;
 						ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_OVER_VOLTAGE;
-						DEBUG_INFO("ALARM_OVER_VOLTAGE : alarm \n");
+						DEBUG_INFO("ALARM_OVER_VOLTAGE : alarm [Code : 012200] \n");
 					}
 				}
 				else
@@ -384,7 +384,7 @@ int main(void)
 					{
 						ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputUVP = ON;
 						ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_UNDER_VOLTAGE;
-						DEBUG_INFO("ALARM_UNDER_VOLTAGE : alarm \n");
+						DEBUG_INFO("ALARM_UNDER_VOLTAGE : alarm [Code : 012203] \n");
 					}
 				}
 				else
@@ -469,7 +469,7 @@ int main(void)
 				{
 					ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemAcOutputOCP = ON;
 					ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_OVER_CURRENT;
-					DEBUG_INFO("ALARM_OVER_CURRENT : alarm \n");
+					DEBUG_INFO("ALARM_OVER_CURRENT : alarm [Code : 012216] \n");
 				}
 			}
 			else
@@ -534,7 +534,7 @@ int main(void)
 					{
 						ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemAmbientOTP = ON;
 						ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_OVER_TEMPERATURE;
-						DEBUG_INFO("ALARM_OVER_TEMPERATURE : alarm \n");
+						DEBUG_INFO("ALARM_OVER_TEMPERATURE : alarm [Code : 012223] \n");
 					}
 				}
 				else
@@ -564,7 +564,7 @@ int main(void)
 					{
 						ShmStatusCodeData->AlarmCode.AlarmEvents.bits.AcGroundfaultFail = ON;
 						ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_GROUND_FAIL;
-						DEBUG_INFO("ALARM_GROUND_FAIL : alarm \n");
+						DEBUG_INFO("ALARM_GROUND_FAIL : alarm [Code : 012256] \n");
 					}
 				}
 				else
@@ -594,7 +594,7 @@ int main(void)
 					{
 						ShmStatusCodeData->InfoCode.InfoEvents.bits.PilotFault = ON;
 						ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_CP_ERROR;
-						DEBUG_INFO("ALARM_CP_ERROR : alarm \n");
+						DEBUG_INFO("ALARM_CP_ERROR : alarm [Code : 023703] \n");
 					}
 				}
 				else
@@ -628,13 +628,13 @@ int main(void)
 						{
 							ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_CURRENT_LEAK_AC;
 							ShmCharger->gun_info[gun_index].otherAlarmCode.isACLeakage = ON;
-							DEBUG_INFO("ALARM_CURRENT_LEAK_AC : alarm \n");
+							DEBUG_INFO("ALARM_CURRENT_LEAK_AC : alarm [Code : 012233] \n");
 						}
 						else if(ShmCharger->gun_info[gun_index].primaryMcuAlarm.bits.dc_leak == ON)
 						{
 							ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_CURRENT_LEAK_DC;
 							ShmCharger->gun_info[gun_index].otherAlarmCode.isDcLeakage = ON;
-							DEBUG_INFO("ALARM_CURRENT_LEAK_DC : alarm \n");
+							DEBUG_INFO("ALARM_CURRENT_LEAK_DC : alarm [Code : 012233] \n");
 						}
 					}
 				}
@@ -675,7 +675,7 @@ int main(void)
 					{
 						ShmStatusCodeData->AlarmCode.AlarmEvents.bits.McuSelftestFail = ON;
 						ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_MCU_TESTFAIL;
-						DEBUG_INFO("ALARM_MCU_TESTFAIL : alarm \n");
+						DEBUG_INFO("ALARM_MCU_TESTFAIL : alarm [Code : 012257] \n");
 					}
 				}
 				else
@@ -728,7 +728,7 @@ int main(void)
 					{
 						ShmStatusCodeData->AlarmCode.AlarmEvents.bits.EmergencyStopTrip = ON;
 						ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_EMERGENCY_STOP;
-						DEBUG_INFO("ALARM_EMERGENCY_STOP : alarm \n");
+						DEBUG_INFO("ALARM_EMERGENCY_STOP : alarm [Code : 012251] \n");
 					}
 				}
 				else
@@ -758,7 +758,7 @@ int main(void)
 					{
 						ShmStatusCodeData->FaultCode.FaultEvents.bits.AcOutputRelayWelding = ON;
 						ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_RELAY_WELDING;
-						DEBUG_INFO("ALARM_RELAY_STATUS : alarm \n");
+						DEBUG_INFO("ALARM_RELAY_WELDING : alarm [Code : 011009] \n");
 					}
 				}
 				else
@@ -773,7 +773,7 @@ int main(void)
 				{
 					ShmStatusCodeData->FaultCode.FaultEvents.bits.AcOutputRelayWelding = OFF;
 					ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode &= ~ALARM_RELAY_WELDING;
-					DEBUG_INFO("ALARM_RELAY_STATUS : recover \n");
+					DEBUG_INFO("ALARM_RELAY_WELDING : recover \n");
 				}
 			}
 
@@ -788,7 +788,7 @@ int main(void)
 					{
 						ShmStatusCodeData->FaultCode.FaultEvents.bits.AcOutputRelayDrivingFault = ON;
 						ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_RELAY_DRIVE_FAULT;
-						DEBUG_INFO("ALARM_RELAY_DRIVE_FAULT : alarm \n");
+						DEBUG_INFO("ALARM_RELAY_DRIVE_FAULT : alarm [Code : 011010] \n");
 					}
 				}
 				else
@@ -818,7 +818,7 @@ int main(void)
 					{
 						ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CircuitShort = ON;
 						ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_CURRENT_SHORT;
-						DEBUG_INFO("ALARM_CIRCUIT_SHORT : alarm \n");
+						DEBUG_INFO("ALARM_CIRCUIT_SHORT : alarm [Code : 012262] \n");
 					}
 				}
 				else
@@ -846,7 +846,7 @@ int main(void)
 				{
 					ShmStatusCodeData->FaultCode.FaultEvents.bits.RotarySwitchFault = ON;
 					ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_ROTATORY_SWITCH_FAULT;
-					DEBUG_INFO("ALARM_ROTATORY_SWITCH_FAULT : alarm \n");
+					DEBUG_INFO("ALARM_ROTATORY_SWITCH_FAULT : alarm [Code : 011036] \n");
 				}
 			}
 			else
@@ -868,7 +868,7 @@ int main(void)
 				{
 					ShmStatusCodeData->FaultCode.FaultEvents.bits.RcdSelfTestFail = ON;
 					ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_LEAK_MODULE_FAIL;
-					DEBUG_INFO("ALARM_LEAK_MODULE_FAIL : alarm \n");
+					DEBUG_INFO("ALARM_LEAK_MODULE_FAIL : alarm [Code : 011004] \n");
 				}
 			}
 			else
@@ -890,7 +890,7 @@ int main(void)
 				{
 					ShmStatusCodeData->FaultCode.FaultEvents.bits.ShutterFault = ON;
 					ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_SHUTTER_FAULT;
-					DEBUG_INFO("ALARM_SHUTTER_FAULT : alarm \n");
+					DEBUG_INFO("ALARM_SHUTTER_FAULT : alarm [Code : 011034] \n");
 				}
 			}
 			else
@@ -912,7 +912,7 @@ int main(void)
 				{
 					ShmStatusCodeData->FaultCode.FaultEvents.bits.AcConnectorLockFail = ON;
 					ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_LOCKER_FAULT;
-					DEBUG_INFO("ALARM_LOCKER_FAULT : alarm \n");
+					DEBUG_INFO("ALARM_LOCKER_FAULT : alarm [Code : 011027] \n");
 				}
 			}
 			else
@@ -934,7 +934,7 @@ int main(void)
 				{
 					ShmStatusCodeData->AlarmCode.AlarmEvents.bits.SystemL1InputDrop = ON;
 					ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode |= ALARM_POWER_DROP;
-					DEBUG_INFO("ALARM_POWER_DROP : alarm \n");
+					DEBUG_INFO("ALARM_POWER_DROP : alarm [Code : 012212] \n");
 				}
 			}
 			else

+ 14 - 2
EVSE/Projects/AW-Regular/Apps/main.c

@@ -3878,6 +3878,9 @@ void checkStopReason(uint8_t gun_index)
 		DEBUG_INFO("Gun-[%d] : StopReason [ %s ].\n",gun_index,ShmOCPP16Data->StopTransaction[gun_index].StopReason);
 
 		ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PowerConsumption = (ShmCharger->gun_info[gun_index].powerConsumption.power_consumption/100.0);
+
+		DEBUG_INFO("Gun-[%d] : PresentChargedEnergy [ %.4f ].\n",gun_index ,ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PresentChargedEnergy);
+
 		ShmOCPP16Data->CpMsg.bits[gun_index].StopTransactionReq = ON;
 	}
 	else if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_20)
@@ -3938,6 +3941,9 @@ void checkStopReason(uint8_t gun_index)
 		DEBUG_INFO("Gun-[%d] : StopReason [ %s ].\n", gun_index, ShmOCPP20Data->TransactionEvent[gun_index].transactionInfo.stoppedReason);
 
 		ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PowerConsumption = (ShmCharger->gun_info[gun_index].powerConsumption.power_consumption/100.0);
+
+		DEBUG_INFO("Gun-[%d] : PresentChargedEnergy [ %.4f ].\n",gun_index ,ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PresentChargedEnergy);
+
 		ShmOCPP20Data->CpMsg.bits[gun_index].TransactionEventReq = ON;
 	}
 }
@@ -4553,7 +4559,6 @@ int main(void)
 					if((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_A) && (ShmCharger->gun_info[gun_index].isGunPlugged == YES))
 					{
 						DEBUG_INFO("Charging gun is plugged before.\n");
-						ShmCharger->gun_info[gun_index].isGunUnpluggedBefore = YES;
 						setChargerMode(gun_index, SYS_MODE_IDLE);
 					}
 
@@ -4624,10 +4629,11 @@ int main(void)
 						ShmCharger->gun_info[gun_index].isChargerStopByCondition = NO;
 					}
 
+					// If unplug the connector during a session, the system must stop charging and stop session.
 					if(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_A)
 					{
 						ShmCharger->gun_info[gun_index].isGunUnpluggedBefore = YES;
-						DEBUG_INFO("Unplugged the charging gun during charging. \n");
+						DEBUG_INFO("The connector was unplugged under charging mode. \n");
 					}
 
 					if((ShmCharger->gun_info[gun_index].isGunUnpluggedBefore == YES) ||
@@ -5167,6 +5173,12 @@ int main(void)
 					setLedMotion(gun_index,LED_ACTION_ALARM);
 					setRelay(gun_index, OFF);
 
+					if((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_A))
+					{
+						setRequest(gun_index,OFF);
+						ShmCharger->gun_info[gun_index].isGunUnpluggedBefore = YES;
+					}
+
 					if((ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode == 0))
 					{
 						if((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PreviousSystemStatus == SYS_MODE_CHARGING) ||