Bläddra i källkod

Merge branch 'AW-CCS'

FolusWen 3 år sedan
förälder
incheckning
7b7010f978
1 ändrade filer med 120 tillägg och 4 borttagningar
  1. 120 4
      EVSE/Projects/AW-CCS/Apps/main.c

+ 120 - 4
EVSE/Projects/AW-CCS/Apps/main.c

@@ -5012,6 +5012,7 @@ int main(void)
 
 					if(((ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_DISABLE) && (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_B)) ||
 					   ((ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_DISABLE) && (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_C)) ||
+					   ((ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_DISABLE) && (ShmCharger->gun_info[gun_index].primaryMcuState.socket_e.isSocketEPinOn == ON)) ||
 					   (ShmCharger->gun_info[gun_index].rfidReq == ON) ||
 					   (ShmCharger->gun_info[gun_index].bleConfigData.isRequestStart == ON) ||
 					   (ocpp_get_remotestart(gun_index) == ON) ||
@@ -5444,6 +5445,8 @@ int main(void)
 						ShmCharger->gun_info[gun_index].chargingMode = CHARGING_MODE_SOCKETE;
 						if(ShmCharger->gun_info[gun_index].primaryMcuState.socket_e.isSocketEPinOn == ON)
 							setRelay(gun_index,ON);
+
+						memcpy((char*)ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartUserId, ShmSysConfigAndInfo->SysConfig.UserId, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
 						ocpp_copy_userid_to_starttransaction(gun_index);
 						ocpp_set_starttransaction_req(gun_index, ON);
 						ftime(&startChargingTime[gun_index]);
@@ -5610,11 +5613,20 @@ int main(void)
 								{
 									if(DiffTimebWithNow(startTime[gun_index][TMR_IDX_PWN_CHANGE]) > TIMEOUT_SPEC_PWN_CHANGE)
 									{
-										if(ShmCharger->gun_info[gun_index].targetCurrent>0)
+										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);
-											ShmCharger->gun_info[gun_index].mcuFlag.isSetCpPwmDuty = YES;
 										}
+										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;
+										}
+
+										ShmCharger->gun_info[gun_index].mcuFlag.isSetCpPwmDuty = YES;
 										ftime(&startTime[gun_index][TMR_IDX_PWN_CHANGE]);
 									}
 								}
@@ -5634,12 +5646,20 @@ int main(void)
 								{
 									if(DiffTimebWithNow(startTime[gun_index][TMR_IDX_PWN_CHANGE]) > TIMEOUT_SPEC_PWN_CHANGE)
 									{
-										if(ShmCharger->gun_info[gun_index].targetCurrent>0)
+										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);
-											ShmCharger->gun_info[gun_index].mcuFlag.isSetCpPwmDuty = YES;
+										}
+										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;
 										}
 
+										ShmCharger->gun_info[gun_index].mcuFlag.isSetCpPwmDuty = YES;
 										ftime(&startTime[gun_index][TMR_IDX_PWN_CHANGE]);
 									}
 								}
@@ -5842,6 +5862,102 @@ int main(void)
 						{
 							setLedMotion(gun_index, LED_ACTION_STOP);
 						}
+						
+						// Charging profile preparation
+						if((DiffTimebWithNow(startTime[gun_index][TMR_IDX_PROFILE_PREPARE]) > TIMEOUT_SPEC_PROFILE_PREPARE) || (DiffTimebWithNow(startTime[gun_index][TMR_IDX_PROFILE_PREPARE]) < 0))
+						{
+							if(!ocpp_get_profile_conf(gun_index))
+							{
+								ocpp_set_profile_req(gun_index, ON);
+								ftime(&startTime[gun_index][TMR_IDX_PROFILE_PREPARE]);
+							}
+							else
+							{
+								ocpp_set_profile_conf(gun_index, OFF);
+							}
+						}
+
+						// 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);
+							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(DiffTimebWithNow(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;
+										}
+
+										ShmCharger->gun_info[gun_index].mcuFlag.isSetCpPwmDuty = YES;
+										ftime(&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(DiffTimebWithNow(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;
+										}
+
+										ShmCharger->gun_info[gun_index].mcuFlag.isSetCpPwmDuty = YES;
+										ftime(&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);
+								}
+							}
+						}
+
+						// Debug information
+						if((DiffTimebWithNow(startTime[gun_index][TMR_IDX_LOGPPRINTOUT]) > TIMEOUT_SPEC_LOGPPRINTOUT) || (DiffTimebWithNow(startTime[gun_index][TMR_IDX_LOGPPRINTOUT]) < 0))
+						{
+							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");
+							ftime(&startTime[gun_index][TMR_IDX_LOGPPRINTOUT]);
+						}
 
 						if(!ocpp_get_auth_result(YES, gun_index))
 							ShmCharger->gun_info[gun_index].rfidReq = OFF;