Explorar el Código

[Improve][AX80][main]

2021.11.10 / Folus Wen

Actions:
1. Charging profile logic improvement.

Files:
1. As follow commit history

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

Hardware PWB P/N : XXXXXXX
Hardware Version : XXXXXXX
FolusWen hace 3 años
padre
commit
b24fd4fe0e

+ 1 - 0
EVSE/Projects/AX80/Apps/Module_Cabinet.c

@@ -474,6 +474,7 @@ int conn_updateGunInfo(int socketFd, int gun_index, Gun_Info *infoData)
 			ShmCharger->gun_info[gun_index].ccsHandshakeState = gunInfo.ccsHandshakeState;
 			ShmCharger->gun_info[gun_index].isUpgradeEnd = gunInfo.isUpgradeEnd;
 			ShmCharger->gun_info[gun_index].isUpgradePASS = gunInfo.isUpgradePASS;
+			ShmCharger->gun_info[gun_index].isGunPlugged = gunInfo.isGunPlugged;
 			memcpy(&ShmCharger->gun_info[gun_index].ver, &gunInfo.ver, sizeof(Ver));
 
 

+ 23 - 40
EVSE/Projects/AX80/Apps/Module_Dispenser.c

@@ -12,7 +12,7 @@
 #define TIMEOUT_SPEC_HANDSHAKING				180
 #define TIMEOUT_SPEC_AUTH						15
 #define TIMEOUT_SPEC_HANDSHAKING_LED			185
-#define TIMEOUT_SPEC_LOGPPRINTOUT				30
+#define TIMEOUT_SPEC_REFRESH_CHARGING_INFO		30
 #define TIMEOUT_SPEC_PROFILE_PREPARE			60
 #define TIMEOUT_SPEC_BS_HLC_HANDSHAKE			60
 #define TIMEOUT_SPEC_EV_READY					30
@@ -705,8 +705,8 @@ int InitShareMemory()
 
 
 /*
- * TODO:
- * 	1. Upgrade firmware
+ * Upgrade firmware
+ * @return
  */
 int upgrade_check()
 {
@@ -986,18 +986,7 @@ int main(void)
 					}
 					else
 					{
-						if((6 <= ShmDispenser->gun_info.targetCurrent))
-						{
-							ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current = ((ShmDispenser->gun_info.targetCurrent > ShmDispenser->gun_info.primaryMcuState.rating_current)?ShmDispenser->gun_info.primaryMcuState.rating_current:ShmDispenser->gun_info.targetCurrent);
-						}
-						else if((1 <= ShmDispenser->gun_info.targetCurrent) && (ShmDispenser->gun_info.targetCurrent < 6))
-						{
-							ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current = 6;
-						}
-						else
-						{
-							ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current = 100;
-						}
+						ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current = (ShmDispenser->gun_info.targetCurrent==0?CCS_PWM_DUTY_100:ShmDispenser->gun_info.targetCurrent);
 					}
 					ShmDispenser->gun_info.mcuFlag.isSetCpPwmDuty = YES;
 
@@ -1110,7 +1099,7 @@ int main(void)
 								//restore normal CP PWM duty
 								// Determine max charging current to MCU
 								DEBUG_INFO("Determine max charging current to MCU.\n");
-								ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current = ((ShmDispenser->gun_info.targetCurrent > ShmDispenser->gun_info.primaryMcuState.rating_current)?ShmDispenser->gun_info.primaryMcuState.rating_current:ShmDispenser->gun_info.targetCurrent);
+								ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current = (ShmDispenser->gun_info.targetCurrent==0?CCS_PWM_DUTY_100:ShmDispenser->gun_info.targetCurrent);
 								ShmDispenser->gun_info.mcuFlag.isSetCpPwmDuty = YES;
 								ShmDispenser->gun_info.ccsHandshakeState = HANDSHAKE_SET_MAX_CURRENT;
 								refreshStartTimer(&startTime[TMR_IDX_BS_HLC_HANDSHAKE]);
@@ -1300,7 +1289,7 @@ int main(void)
 			case SYS_MODE_CHARGING:
 				if(isModeChange())
 				{
-					refreshStartTimer(&startTime[TMR_IDX_LOGPPRINTOUT]);
+					refreshStartTimer(&startTime[TMR_IDX_REFRESH_CHARGING_INFO]);
 					refreshStartTimer(&startTime[TMR_IDX_PROFILE_PREPARE]);
 					refreshStartTimer(&startTime[TMR_IDX_PWN_CHANGE]);
 
@@ -1348,19 +1337,7 @@ int main(void)
 					{
 						if(getDiffSecNow(startTime[TMR_IDX_PWN_CHANGE]) > TIMEOUT_SPEC_PWN_CHANGE)
 						{
-							if((6 <= ShmDispenser->gun_info.targetCurrent))
-							{
-								ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current = ((ShmDispenser->gun_info.targetCurrent > ShmDispenser->gun_info.primaryMcuState.rating_current)?ShmDispenser->gun_info.primaryMcuState.rating_current:ShmDispenser->gun_info.targetCurrent);
-							}
-							else if((1 <= ShmDispenser->gun_info.targetCurrent) && (ShmDispenser->gun_info.targetCurrent < 6))
-							{
-								ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current = 6;
-							}
-							else
-							{
-								ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current = 100;
-							}
-
+							ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current = (ShmDispenser->gun_info.targetCurrent==0?CCS_PWM_DUTY_100:ShmDispenser->gun_info.targetCurrent);
 							ShmDispenser->gun_info.mcuFlag.isSetCpPwmDuty = YES;
 							refreshStartTimer(&startTime[TMR_IDX_PWN_CHANGE]);
 						}
@@ -1371,13 +1348,13 @@ int main(void)
 					}
 
 					// Debug information
-					if(getDiffSecNow(startTime[TMR_IDX_LOGPPRINTOUT]) > TIMEOUT_SPEC_LOGPPRINTOUT)
+					if(getDiffSecNow(startTime[TMR_IDX_REFRESH_CHARGING_INFO]) > TIMEOUT_SPEC_REFRESH_CHARGING_INFO)
 					{
-						DEBUG_INFO("================================================\n");
+						DEBUG_INFO("==================================================\n");
 						DEBUG_INFO("gun_info.primaryMcuCp_Pwn_Duty.max_current: %d\n", ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current);
 						DEBUG_INFO("gun_info.targetCurrent: %d\n", ShmDispenser->gun_info.targetCurrent);
-						DEBUG_INFO("================================================\n");
-						refreshStartTimer(&startTime[TMR_IDX_LOGPPRINTOUT]);
+						DEBUG_INFO("==================================================\n");
+						refreshStartTimer(&startTime[TMR_IDX_REFRESH_CHARGING_INFO]);
 
 						getDateTimeString((char*)ShmDispenser->gun_info.StopDateTime);
 					}
@@ -1425,15 +1402,21 @@ int main(void)
 				else
 				{
 					// Debug information
-					if(getDiffSecNow(startTime[TMR_IDX_LOGPPRINTOUT]) > TIMEOUT_SPEC_LOGPPRINTOUT)
+					if(getDiffSecNow(startTime[TMR_IDX_REFRESH_CHARGING_INFO]) > TIMEOUT_SPEC_REFRESH_CHARGING_INFO)
 					{
-						DEBUG_INFO("=============================================================\n");
-						DEBUG_INFO("ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current: %d\n", ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current);
-						DEBUG_INFO("ShmDispenser->gun_info.targetCurrent: %d\n", ShmDispenser->gun_info.targetCurrent);
-						DEBUG_INFO("=============================================================\n");
-						refreshStartTimer(&startTime[TMR_IDX_LOGPPRINTOUT]);
+						DEBUG_INFO("==================================================\n");
+						DEBUG_INFO("gun_info.primaryMcuCp_Pwn_Duty.max_current: %d\n", ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current);
+						DEBUG_INFO("gun_info.targetCurrent: %d\n", ShmDispenser->gun_info.targetCurrent);
+						DEBUG_INFO("==================================================\n");
+						refreshStartTimer(&startTime[TMR_IDX_REFRESH_CHARGING_INFO]);
 					}
 
+					if(getDiffSecNow(startTime[TMR_IDX_PWN_CHANGE]) > TIMEOUT_SPEC_PWN_CHANGE)
+					{
+						ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current = (ShmDispenser->gun_info.targetCurrent==0?CCS_PWM_DUTY_100:ShmDispenser->gun_info.targetCurrent);
+						ShmDispenser->gun_info.mcuFlag.isSetCpPwmDuty = YES;
+						refreshStartTimer(&startTime[TMR_IDX_PWN_CHANGE]);
+					}
 
 					if(ShmDispenser->gun_info.legacyRequest.isLegacyRequest &&
 					   (((ShmDispenser->gun_info.chargingMode != CHARGING_MODE_SOCKETE) && (ShmDispenser->gun_info.primaryMcuState.cp_state == CP_STATE_C)) || ((ShmDispenser->gun_info.chargingMode == CHARGING_MODE_SOCKETE) && ShmDispenser->gun_info.primaryMcuState.socket_e.isSocketEPinOn)) &&

+ 41 - 159
EVSE/Projects/AX80/Apps/main.c

@@ -22,7 +22,7 @@
 #define TIMEOUT_SPEC_HANDSHAKING				180
 #define TIMEOUT_SPEC_AUTH						15
 #define TIMEOUT_SPEC_HANDSHAKING_LED			185
-#define TIMEOUT_SPEC_LOGPPRINTOUT				30
+#define TIMEOUT_SPEC_REFRESH_CHARGING_INFO		30
 #define TIMEOUT_SPEC_PROFILE_PREPARE			60
 #define TIMEOUT_SPEC_BS_HLC_HANDSHAKE			60
 #define TIMEOUT_SPEC_EV_READY					30
@@ -4293,28 +4293,18 @@ void checkAvailability(uint8_t gun_index)
 
 void checkChargingProfileLimit(uint8_t gun_index)
 {
+	static struct PreviousData
+	{
+		uint16_t targetCurrent;
+		uint16_t current_limit;
+	}previousData[3];
+
 	if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16)
 	{
 		if((ocpp_get_smartcharging_profileId(gun_index) > 0) &&
 		   (ocpp_get_profile_req(gun_index) != ON)	&&
 		   (((strlen((char*)ShmOCPP16Data->SmartChargingProfile[gun_index].ValidFrom)>0) && (strlen((char*)ShmOCPP16Data->SmartChargingProfile[gun_index].ValidTo)>0)) ? isProfileValid(gun_index) : ON))
 		{
-			// Debug information
-			if(getDiffSecNow(startTime[gun_index][TMR_IDX_LOGPPRINTOUT]) > TIMEOUT_SPEC_LOGPPRINTOUT)
-			{
-				DEBUG_INFO("===============================================================\n");
-				DEBUG_INFO("Profile ID found: %d\n", ShmOCPP16Data->SmartChargingProfile[gun_index].ChargingProfileId);
-				DEBUG_INFO("Valid from: %s\n", ShmOCPP16Data->SmartChargingProfile[gun_index].ValidFrom);
-				DEBUG_INFO("Valid to: %s\n", ShmOCPP16Data->SmartChargingProfile[gun_index].ValidTo);
-				DEBUG_INFO("Start schedule: %s\n", ShmOCPP16Data->SmartChargingProfile[gun_index].ChargingSchedule.StartSchedule);
-				DEBUG_INFO("Profile kind: %s\n", ShmOCPP16Data->SmartChargingProfile[gun_index].ChargingProfileKind);
-				DEBUG_INFO("RecurrencyKind: %s\n", ShmOCPP16Data->SmartChargingProfile[gun_index].RecurrencyKind);
-				DEBUG_INFO("Profile purpose: %s\n", ShmOCPP16Data->SmartChargingProfile[gun_index].ChargingProfilePurpose);
-				DEBUG_INFO("Transaction ID: %d\n", ShmOCPP16Data->SmartChargingProfile[gun_index].TransactionId);
-				DEBUG_INFO("ChargingRateUnit: %s\n", ShmOCPP16Data->SmartChargingProfile[gun_index].ChargingSchedule.ChargingRateUnit);
-				DEBUG_INFO("===============================================================\n");
-			}
-
 			// Checking profile kind
 			if((mystrcmp((char*)ShmOCPP16Data->SmartChargingProfile[gun_index].ChargingProfileKind, "Absolute") == PASS))
 			{
@@ -4349,22 +4339,6 @@ void checkChargingProfileLimit(uint8_t gun_index)
 		   (ocpp_get_profile_req(gun_index) != ON)	&&
 		   (((strlen((char*)ShmOCPP20Data->SmartChargingProfile[gun_index].validFrom)>0) && (strlen((char*)ShmOCPP20Data->SmartChargingProfile[gun_index].validTo)>0)) ? isProfileValid(gun_index) : ON))
 		{
-			// Debug information
-			if(getDiffSecNow(startTime[gun_index][TMR_IDX_LOGPPRINTOUT]) > TIMEOUT_SPEC_LOGPPRINTOUT)
-			{
-				DEBUG_INFO("===============================================================\n");
-				DEBUG_INFO("Profile ID found: %d\n", ShmOCPP20Data->SmartChargingProfile[gun_index].id);
-				DEBUG_INFO("Valid from: %s\n", ShmOCPP20Data->SmartChargingProfile[gun_index].validFrom);
-				DEBUG_INFO("Valid to: %s\n", ShmOCPP20Data->SmartChargingProfile[gun_index].validTo);
-				DEBUG_INFO("Start schedule: %s\n", ShmOCPP20Data->SmartChargingProfile[gun_index].chargingSchedule[0].startSchedule);
-				DEBUG_INFO("Profile kind: %s\n", ShmOCPP20Data->SmartChargingProfile[gun_index].chargingProfileKind);
-				DEBUG_INFO("RecurrencyKind: %s\n", ShmOCPP20Data->SmartChargingProfile[gun_index].recurrencyKind);
-				DEBUG_INFO("Profile purpose: %s\n", ShmOCPP20Data->SmartChargingProfile[gun_index].chargingProfilePurpose);
-				DEBUG_INFO("Transaction ID: %d\n", ShmOCPP20Data->SmartChargingProfile[gun_index].transactionId);
-				DEBUG_INFO("ChargingRateUnit: %s\n", ShmOCPP20Data->SmartChargingProfile[gun_index].chargingSchedule[0].chargingRateUnit);
-				DEBUG_INFO("===============================================================\n");
-			}
-
 			// Checking profile kind
 			if((mystrcmp((char*)ShmOCPP20Data->SmartChargingProfile[gun_index].chargingProfileKind, "Absolute") == PASS))
 			{
@@ -4380,7 +4354,7 @@ void checkChargingProfileLimit(uint8_t gun_index)
 						  )
 						{
 							ShmCharger->gun_info[gun_index].targetCurrent = (mystrcmp((char*)ShmOCPP20Data->SmartChargingProfile[gun_index].chargingSchedule[0].chargingRateUnit,"W")==PASS?ShmOCPP20Data->SmartChargingProfile[gun_index].chargingSchedule[0].chargingSchedulePeriod[idx_period].limit/(220*ShmOCPP20Data->SmartChargingProfile[gun_index].chargingSchedule[0].chargingSchedulePeriod[idx_period].numberPhases):ShmOCPP20Data->SmartChargingProfile[gun_index].chargingSchedule[0].chargingSchedulePeriod[idx_period].limit);
-							DEBUG_INFO("ShmCharger->gun_info[%d].targetCurrent on period[%d]: %d\n", gun_index, idx_period, ShmCharger->gun_info[gun_index].targetCurrent);
+							//DEBUG_INFO("ShmCharger->gun_info[%d].targetCurrent on period[%d]: %d\n", gun_index, idx_period, ShmCharger->gun_info[gun_index].targetCurrent);
 						}
 						else
 							break;
@@ -4393,6 +4367,30 @@ void checkChargingProfileLimit(uint8_t gun_index)
 			ShmCharger->gun_info[gun_index].targetCurrent = ShmCharger->gun_info[gun_index].primaryMcuState.rating_current;
 		}
 	}
+
+	if(ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent == 0)
+	{
+		ShmCharger->gun_info[gun_index].targetCurrent = ((ShmCharger->gun_info[gun_index].targetCurrent > ShmCharger->gun_info[gun_index].primaryMcuState.rating_current)?ShmCharger->gun_info[gun_index].primaryMcuState.rating_current:ShmCharger->gun_info[gun_index].targetCurrent);
+		ShmCharger->gun_info[gun_index].targetCurrent = ((1 <= ShmCharger->gun_info[gun_index].targetCurrent) && (ShmCharger->gun_info[gun_index].targetCurrent <= 5)?6:ShmCharger->gun_info[gun_index].targetCurrent);
+	}
+	else
+	{
+		ShmCharger->gun_info[gun_index].targetCurrent = ((ShmCharger->gun_info[gun_index].targetCurrent > ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent)?ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent:ShmCharger->gun_info[gun_index].targetCurrent);
+		ShmCharger->gun_info[gun_index].targetCurrent = ((1 <= ShmCharger->gun_info[gun_index].targetCurrent) && (ShmCharger->gun_info[gun_index].targetCurrent <= 5)?6:ShmCharger->gun_info[gun_index].targetCurrent);
+	}
+
+	if(ShmCharger->gun_info[gun_index].targetCurrent != previousData[gun_index].targetCurrent)
+	{
+		DEBUG_INFO("SysConfig.MaxChargingCurrent: %d\n", ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent);
+		DEBUG_INFO("gun-%02d target current: %d\n", gun_index, ShmCharger->gun_info[gun_index].targetCurrent);
+		 previousData[gun_index].targetCurrent = ShmCharger->gun_info[gun_index].targetCurrent;
+	}
+
+	if(ShmCharger->gun_info[gun_index].primaryMcuState.current_limit != previousData[gun_index].current_limit)
+	{
+		DEBUG_INFO("gun-%02d mcu current_limit: %d\n", gun_index, ShmCharger->gun_info[gun_index].primaryMcuState.current_limit);
+		previousData[gun_index].current_limit = ShmCharger->gun_info[gun_index].primaryMcuState.current_limit;
+	}
 }
 
 void checkStopReason(uint8_t gun_index)
@@ -4686,7 +4684,7 @@ void checkRfidAuthrize()
 				ShmCharger->isAuthrizing = TRUE;
 				ShmCharger->isGetAuthResult = FALSE;
 				isCheckdResult = FALSE;
-				sleep(1);
+				//sleep(1);
 			}
 		}
 	}
@@ -5214,9 +5212,6 @@ int main(void)
 							DEBUG_INFO("Wifi password: %s\n",  ShmSysConfigAndInfo->SysConfig.AthInterface.WifiPassword);
 							DEBUG_INFO("==========================================\n");
 
-							// Set max current to rating current
-							ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current = ShmCharger->gun_info[gun_index].primaryMcuState.rating_current;
-
 							// Default Ethernet / Wifi / 4G to 1:disconnected
 							switch(ShmSysConfigAndInfo->SysConfig.ModelName[10])
 							{
@@ -5397,14 +5392,6 @@ int main(void)
 							ocpp_set_profile_req(gun_index, ON);
 							sleep(1);
 							checkChargingProfileLimit(gun_index);
-							if(ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent == 0)
-							{
-								ShmCharger->gun_info[gun_index].targetCurrent = ((ShmCharger->gun_info[gun_index].targetCurrent > ShmCharger->gun_info[gun_index].primaryMcuState.rating_current)?ShmCharger->gun_info[gun_index].primaryMcuState.rating_current:ShmCharger->gun_info[gun_index].targetCurrent);
-							}
-							else
-							{
-								ShmCharger->gun_info[gun_index].targetCurrent = ((ShmCharger->gun_info[gun_index].targetCurrent > ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent)?ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent:ShmCharger->gun_info[gun_index].targetCurrent);
-							}
 
 							setChargerMode(gun_index, SYS_MODE_AUTHORIZING);
 						}
@@ -5535,34 +5522,19 @@ int main(void)
 										ocpp_set_profile_req(gun_index, ON);
 										sleep(1);
 										checkChargingProfileLimit(gun_index);
-										if(ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent == 0)
-										{
-											ShmCharger->gun_info[gun_index].targetCurrent = ((ShmCharger->gun_info[gun_index].targetCurrent > ShmCharger->gun_info[gun_index].primaryMcuState.rating_current)?ShmCharger->gun_info[gun_index].primaryMcuState.rating_current:ShmCharger->gun_info[gun_index].targetCurrent);
-											ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current = ((ShmCharger->gun_info[gun_index].targetCurrent > ShmCharger->gun_info[gun_index].primaryMcuState.rating_current)?ShmCharger->gun_info[gun_index].primaryMcuState.rating_current:ShmCharger->gun_info[gun_index].targetCurrent);
-										}
-										else
-										{
-											ShmCharger->gun_info[gun_index].targetCurrent = ((ShmCharger->gun_info[gun_index].targetCurrent > ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent)?ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent:ShmCharger->gun_info[gun_index].targetCurrent);
-											ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current = ((ShmCharger->gun_info[gun_index].targetCurrent > ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent)?ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent:ShmCharger->gun_info[gun_index].targetCurrent);
-										}
 
 										refreshStartTimer(&startTime[gun_index][TMR_IDX_BS_HLC_HANDSHAKE]);
 									}
 									break;
 								case HANDSHAKE_SET_MAX_CURRENT:
-									//if(ShmCharger->gun_info[gun_index].mcuFlag.isSetCpPwmDuty == OFF)
-									{
-										DEBUG_INFO("Enter BS Mode charging.\n");
-										//for EV READY 30 secs didn't start charging to STATE E
-										refreshStartTimer(&startTime[gun_index][TMR_IDX_HANDSHAKING]);
-									}
-									break;
 								case HANDSHAKE_BS_MODE:
+									DEBUG_INFO("Enter BS Mode charging.\n");
 									refreshStartTimer(&startTime[gun_index][TMR_IDX_HANDSHAKING]);
+									checkChargingProfileLimit(gun_index);
 									if(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_C)
 										setRelay(gun_index,ON);
 
-									if((ShmCharger->gun_info[gun_index].primaryMcuState.relay_state == ON))
+									if((ShmCharger->gun_info[gun_index].primaryMcuState.relay_state == ON) || (ShmCharger->gun_info[gun_index].targetCurrent == 0))
 									{
 										ocpp_set_unlocker_req(gun_index, OFF);
 										presentChargedEnergyClear(gun_index);
@@ -5663,12 +5635,14 @@ 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");
+							setChargerMode(gun_index, SYS_MODE_IDLE);
 						}
 
 						// Use RFID card to stop handshaking
 						if((ShmCharger->gun_info[gun_index].rfidReq == ON) && isMatchPresentUser(gun_index))
 						{
 							DEBUG_INFO("Use RFID card to stop handshaking.\n");
+							setChargerMode(gun_index, SYS_MODE_IDLE);
 						}
 						else
 						{
@@ -5693,7 +5667,7 @@ int main(void)
 						{
 							ShmCharger->gun_info[gun_index].rfidReq = OFF;
 							//ftime(&startChargingTime[gun_index]);
-							refreshStartTimer(&startTime[gun_index][TMR_IDX_LOGPPRINTOUT]);
+							refreshStartTimer(&startTime[gun_index][TMR_IDX_REFRESH_CHARGING_INFO]);
 							refreshStartTimer(&startTime[gun_index][TMR_IDX_PROFILE_PREPARE]);
 							refreshStartTimer(&startTime[gun_index][TMR_IDX_PWN_CHANGE]);
 							ocpp_set_auth_req(OFF);
@@ -5784,70 +5758,6 @@ int main(void)
 								}
 							}
 
-							// Determine max charging current to MCU
-							if(ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent == 0)
-							{
-								ShmCharger->gun_info[gun_index].targetCurrent = ((ShmCharger->gun_info[gun_index].targetCurrent > ShmCharger->gun_info[gun_index].primaryMcuState.rating_current)?ShmCharger->gun_info[gun_index].primaryMcuState.rating_current:ShmCharger->gun_info[gun_index].targetCurrent);
-								if((ShmCharger->gun_info[gun_index].targetCurrent != ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current) ||
-								   (ShmCharger->gun_info[gun_index].primaryMcuState.current_limit != ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current))
-								{
-									if(ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_BS)
-									{
-										if(getDiffSecNow(startTime[gun_index][TMR_IDX_PWN_CHANGE]) > TIMEOUT_SPEC_PWN_CHANGE)
-										{
-											if((6 <= ShmCharger->gun_info[gun_index].targetCurrent))
-											{
-												ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current = ((ShmCharger->gun_info[gun_index].targetCurrent > ShmCharger->gun_info[gun_index].primaryMcuState.rating_current)?ShmCharger->gun_info[gun_index].primaryMcuState.rating_current:ShmCharger->gun_info[gun_index].targetCurrent);
-											}
-											else if((1 <= ShmCharger->gun_info[gun_index].targetCurrent) && (ShmCharger->gun_info[gun_index].targetCurrent < 6))
-											{
-												ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current = 6;
-											}
-											else
-											{
-												ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current = 100;
-											}
-											refreshStartTimer(&startTime[gun_index][TMR_IDX_PWN_CHANGE]);
-										}
-									}
-									else if(ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_HLC)
-									{
-										ShmCharger->gun_info[gun_index].acCcsInfo.EVSEMaxCurrent = (float)((ShmCharger->gun_info[gun_index].targetCurrent > ShmCharger->gun_info[gun_index].primaryMcuState.rating_current)?ShmCharger->gun_info[gun_index].primaryMcuState.rating_current:ShmCharger->gun_info[gun_index].targetCurrent);
-									}
-								}
-							}
-							else
-							{
-								ShmCharger->gun_info[gun_index].targetCurrent = ((ShmCharger->gun_info[gun_index].targetCurrent > ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent)?ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent:ShmCharger->gun_info[gun_index].targetCurrent);
-								if((ShmCharger->gun_info[gun_index].targetCurrent != ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current) ||
-								   (ShmCharger->gun_info[gun_index].primaryMcuState.current_limit != ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current))
-								{
-									if(ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_BS)
-									{
-										if(getDiffSecNow(startTime[gun_index][TMR_IDX_PWN_CHANGE]) > TIMEOUT_SPEC_PWN_CHANGE)
-										{
-											if((6 <= ShmCharger->gun_info[gun_index].targetCurrent))
-											{
-												ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current = ((ShmCharger->gun_info[gun_index].targetCurrent > ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent)?ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent:ShmCharger->gun_info[gun_index].targetCurrent);
-											}
-											else if((1 <= ShmCharger->gun_info[gun_index].targetCurrent) && (ShmCharger->gun_info[gun_index].targetCurrent < 6))
-											{
-												ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current = 6;
-											}
-											else
-											{
-												ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current = 100;
-											}
-											refreshStartTimer(&startTime[gun_index][TMR_IDX_PWN_CHANGE]);
-										}
-									}
-									else if(ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_HLC)
-									{
-										ShmCharger->gun_info[gun_index].acCcsInfo.EVSEMaxCurrent = (float)((ShmCharger->gun_info[gun_index].targetCurrent > ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent)?ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent:ShmCharger->gun_info[gun_index].targetCurrent);
-									}
-								}
-							}
-
 							// Charging session local limit condition check
 							if(ocpp_get_connection_status())
 							{
@@ -5958,17 +5868,11 @@ int main(void)
 							}
 
 							// Debug information
-							if(getDiffSecNow(startTime[gun_index][TMR_IDX_LOGPPRINTOUT]) > TIMEOUT_SPEC_LOGPPRINTOUT)
+							if(getDiffSecNow(startTime[gun_index][TMR_IDX_REFRESH_CHARGING_INFO]) > TIMEOUT_SPEC_REFRESH_CHARGING_INFO)
 							{
-								DEBUG_INFO("==============================================================\n");
-								DEBUG_INFO("ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent: %d \n", ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent);
-								DEBUG_INFO("ShmCharger->gun_info[%d].primaryMcuCp_Pwn_Duty.max_current: %d\n", gun_index, ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current);
-								DEBUG_INFO("ShmCharger->gun_info[%d].targetCurrent: %d\n", gun_index, ShmCharger->gun_info[gun_index].targetCurrent);
-								DEBUG_INFO("==============================================================\n");
-								refreshStartTimer(&startTime[gun_index][TMR_IDX_LOGPPRINTOUT]);
-
 								getDateTimeString((char*)ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StopDateTime);
 								DB_Update_Record_Buf(localDb, gun_index);
+								refreshStartTimer(&startTime[gun_index][TMR_IDX_REFRESH_CHARGING_INFO]);
 							}
 						}
 
@@ -6013,7 +5917,6 @@ int main(void)
 
 							if(ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_BS)
 							{
-								ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current = CCS_PWM_DUTY_100;
 								sleep(1);
 								checkStopReason(gun_index);
 								setChargerMode(gun_index, SYS_MODE_COMPLETE);
@@ -6057,27 +5960,6 @@ int main(void)
 							// Checking profile id > 0 and current time is between charging profile validFrom & validTo
 							checkChargingProfileLimit(gun_index);
 
-							// Determine max charging current to MCU
-							if(ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent == 0)
-							{
-								ShmCharger->gun_info[gun_index].targetCurrent = ((ShmCharger->gun_info[gun_index].targetCurrent > ShmCharger->gun_info[gun_index].primaryMcuState.rating_current)?ShmCharger->gun_info[gun_index].primaryMcuState.rating_current:ShmCharger->gun_info[gun_index].targetCurrent);
-							}
-							else
-							{
-								ShmCharger->gun_info[gun_index].targetCurrent = ((ShmCharger->gun_info[gun_index].targetCurrent > ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent)?ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent:ShmCharger->gun_info[gun_index].targetCurrent);
-							}
-
-							// Debug information
-							if(getDiffSecNow(startTime[gun_index][TMR_IDX_LOGPPRINTOUT]) > TIMEOUT_SPEC_LOGPPRINTOUT)
-							{
-								DEBUG_INFO("=============================================================\n");
-								DEBUG_INFO("ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent: %d\n", ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent);
-								DEBUG_INFO("ShmCharger->gun_info[%d].primaryMcuCp_Pwn_Duty.max_current: %d\n", gun_index, ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current);
-								DEBUG_INFO("ShmCharger->gun_info[%d].targetCurrent: %d\n", gun_index, ShmCharger->gun_info[gun_index].targetCurrent);
-								DEBUG_INFO("=============================================================\n");
-								refreshStartTimer(&startTime[gun_index][TMR_IDX_LOGPPRINTOUT]);
-							}
-
 							if(!ocpp_get_auth_result(YES, gun_index))
 								ShmCharger->gun_info[gun_index].rfidReq = OFF;
 

+ 1 - 1
EVSE/Projects/AX80/Apps/main.h

@@ -219,7 +219,7 @@ enum TIMER_IDX
 {
 	TMR_IDX_HANDSHAKING=0,
 	TMR_IDX_AUTH,
-	TMR_IDX_LOGPPRINTOUT,
+	TMR_IDX_REFRESH_CHARGING_INFO,
 	TMR_IDX_PROFILE_PREPARE,
 	TMR_IDX_BS_HLC_HANDSHAKE,
 	TMR_IDX_CCS_HEARTBEAT_COUNT_RESET,