|
@@ -1832,7 +1832,7 @@ int LoadSysConfigAndInfo(struct SysConfigData *ptr)
|
|
|
|
|
|
if(strlen((char*)ShmSysConfigAndInfo->SysConfig.SystemId) == 0x00)
|
|
|
{
|
|
|
- DEBUG_INFO("System id over length.\n");
|
|
|
+ DEBUG_INFO("SystemId over length.\n");
|
|
|
}
|
|
|
|
|
|
system("cd /root;./Module_FactoryConfig -m");
|
|
@@ -1883,12 +1883,12 @@ int StoreUsrConfigData(struct SysConfigData *UsrData)
|
|
|
DEBUG_INFO("EvseConfig write to file in /mnt OK.\n");
|
|
|
|
|
|
DEBUG_INFO("Erase /dev/mtd10.\n");
|
|
|
- runShellCmd("flash_erase /dev/mtd10 0 12");
|
|
|
+ runShellCmd("flash_erase /dev/mtd10 0 0");
|
|
|
DEBUG_INFO("Write /dev/mtd10.\n");
|
|
|
runShellCmd("nandwrite -p /dev/mtd10 /mnt/EvseConfig.bin");
|
|
|
|
|
|
DEBUG_INFO("Erase /dev/mtd11.\n");
|
|
|
- runShellCmd("flash_erase /dev/mtd11 0 12");
|
|
|
+ runShellCmd("flash_erase /dev/mtd11 0 0");
|
|
|
DEBUG_INFO("Write /dev/mtd11.\n");
|
|
|
runShellCmd("nandwrite -p /dev/mtd11 /mnt/EvseConfig.bin");
|
|
|
|
|
@@ -1982,8 +1982,8 @@ void InitEthernet()
|
|
|
system("pgrep -f \"udhcpc -i eth0\" | xargs kill");
|
|
|
memset(tmpbuf,0,256);
|
|
|
sprintf(tmpbuf,"/sbin/ifconfig eth0 %s netmask %s up &",
|
|
|
- ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthIpAddress,
|
|
|
- ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthSubmaskAddress);
|
|
|
+ ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthIpAddress,
|
|
|
+ ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthSubmaskAddress);
|
|
|
system(tmpbuf);
|
|
|
memset(tmpbuf,0,256);
|
|
|
sprintf(tmpbuf,"route add default gw %s eth0 &",
|
|
@@ -2002,26 +2002,29 @@ void InitEthernet()
|
|
|
if(cnt_pingDNS_Fail >= 3)
|
|
|
{
|
|
|
ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet=ON;
|
|
|
- if((ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthDhcpClient==0))
|
|
|
+ if(!ShmSysConfigAndInfo->SysInfo.OcppConnStatus)
|
|
|
{
|
|
|
- system("pgrep -f \"udhcpc -i eth0\" | xargs kill");
|
|
|
- sprintf(tmpbuf, "/sbin/udhcpc -i eth0 -x hostname:CSU3_%s -s /root/dhcp_script/eth0.script > /dev/null &", ShmSysConfigAndInfo->SysConfig.SystemId);
|
|
|
- system(tmpbuf);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- system("pgrep -f \"udhcpc -i eth0\" | xargs kill");
|
|
|
- memset(tmpbuf,0,256);
|
|
|
- sprintf(tmpbuf,"/sbin/ifconfig eth0 %s netmask %s up &",
|
|
|
- ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthIpAddress,
|
|
|
- ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthSubmaskAddress);
|
|
|
- system(tmpbuf);
|
|
|
- memset(tmpbuf,0,256);
|
|
|
- sprintf(tmpbuf,"route add default gw %s eth0 &",
|
|
|
- ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthGatewayAddress);
|
|
|
- system(tmpbuf);
|
|
|
+ if((ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthDhcpClient==0))
|
|
|
+ {
|
|
|
+ system("pgrep -f \"udhcpc -i eth0\" | xargs kill");
|
|
|
+ sprintf(tmpbuf, "/sbin/udhcpc -i eth0 -x hostname:CSU3_%s -s /root/dhcp_script/eth0.script > /dev/null &", ShmSysConfigAndInfo->SysConfig.SystemId);
|
|
|
+ system(tmpbuf);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ system("pgrep -f \"udhcpc -i eth0\" | xargs kill");
|
|
|
+ memset(tmpbuf,0,256);
|
|
|
+ sprintf(tmpbuf,"/sbin/ifconfig eth0 %s netmask %s up &",
|
|
|
+ ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthIpAddress,
|
|
|
+ ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthSubmaskAddress);
|
|
|
+ system(tmpbuf);
|
|
|
+ memset(tmpbuf,0,256);
|
|
|
+ sprintf(tmpbuf,"route add default gw %s eth0 &",
|
|
|
+ ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthGatewayAddress);
|
|
|
+ system(tmpbuf);
|
|
|
+ }
|
|
|
+ cnt_pingDNS_Fail = 0;
|
|
|
}
|
|
|
- cnt_pingDNS_Fail = 0;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -3276,14 +3279,14 @@ void checkReset()
|
|
|
if(strcmp((char*)ShmOCPP16Data->Reset.Type, "Hard") == 0)
|
|
|
{
|
|
|
system("sync");
|
|
|
- sleep(5);
|
|
|
+ sleep(10);
|
|
|
system("reboot -f");
|
|
|
- sleep(5);
|
|
|
+ sleep(10);
|
|
|
system("reboot -f");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- sleep(5);
|
|
|
+ sleep(10);
|
|
|
close(wtdFd);
|
|
|
system("/usr/bin/run_evse_restart.sh");
|
|
|
}
|
|
@@ -3306,16 +3309,15 @@ void checkReset()
|
|
|
setChargerMode(gun_index, SYS_MODE_BOOTING);
|
|
|
if(strcmp((char*)ShmOCPP20Data->Reset.type, "Immediate") == 0)
|
|
|
{
|
|
|
-
|
|
|
system("sync");
|
|
|
- sleep(5);
|
|
|
+ sleep(10);
|
|
|
system("reboot -f");
|
|
|
- sleep(5);
|
|
|
+ sleep(10);
|
|
|
system("reboot -f");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- sleep(5);
|
|
|
+ sleep(10);
|
|
|
close(wtdFd);
|
|
|
system("/usr/bin/run_evse_restart.sh");
|
|
|
}
|
|
@@ -3331,13 +3333,14 @@ void checkReservation(uint8_t gun_index)
|
|
|
if(ShmOCPP16Data->CsMsg.bits[gun_index].ReserveNowReq)
|
|
|
{
|
|
|
ShmOCPP16Data->CsMsg.bits[gun_index].ReserveNowReq = OFF;
|
|
|
+ ShmOCPP16Data->CsMsg.bits[gun_index].ReserveNowConf = ON;
|
|
|
if(isMode(gun_index, SYS_MODE_IDLE) && !isReservationExpired(gun_index))
|
|
|
{
|
|
|
+ sleep(5);
|
|
|
ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].ReservationId = ShmOCPP16Data->ReserveNow[gun_index].ReservationId;
|
|
|
setChargerMode(gun_index, SYS_MODE_RESERVATION);
|
|
|
}
|
|
|
DEBUG_INFO("Reservation request on connector-%d.\n", gun_index);
|
|
|
- ShmOCPP16Data->CsMsg.bits[gun_index].ReserveNowConf = ON;
|
|
|
}
|
|
|
}
|
|
|
else if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_20)
|
|
@@ -3345,13 +3348,14 @@ void checkReservation(uint8_t gun_index)
|
|
|
if(ShmOCPP20Data->CsMsg.bits[gun_index].ReserveNowReq)
|
|
|
{
|
|
|
ShmOCPP20Data->CsMsg.bits[gun_index].ReserveNowReq = OFF;
|
|
|
+ ShmOCPP20Data->CsMsg.bits[gun_index].ReserveNowConf = ON;
|
|
|
if(isMode(gun_index, SYS_MODE_IDLE) && !isReservationExpired(gun_index))
|
|
|
{
|
|
|
+ sleep(5);
|
|
|
ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].ReservationId = ShmOCPP20Data->ReserveNow[gun_index].id;
|
|
|
setChargerMode(gun_index, SYS_MODE_RESERVATION);
|
|
|
}
|
|
|
DEBUG_INFO("Reservation request on connector-%d.\n", gun_index);
|
|
|
- ShmOCPP20Data->CsMsg.bits[gun_index].ReserveNowConf = ON;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -3424,17 +3428,25 @@ void checkAvailability(uint8_t gun_index)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void checkChargingProfileLimit(uint8_t gun_index)
|
|
|
+void checkChargingProfileLimit(uint8_t gun_index, uint8_t system_mode)
|
|
|
{
|
|
|
+ static struct PreviousData
|
|
|
+ {
|
|
|
+ uint16_t targetCurrent;
|
|
|
+ uint16_t current_limit;
|
|
|
+ uint16_t primaryMcuCp_Pwn_Duty;
|
|
|
+ }previousData[4];
|
|
|
+
|
|
|
if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16)
|
|
|
{
|
|
|
if((ocpp_get_smartcharging_profileId(gun_index) > 0) &&
|
|
|
- (ocpp_get_profile_req(gun_index) != ON) &&
|
|
|
+ //(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(DiffTimebWithNow(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);
|
|
@@ -3445,6 +3457,8 @@ void checkChargingProfileLimit(uint8_t gun_index)
|
|
|
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");
|
|
|
+
|
|
|
+ ftime(&startTime[gun_index][TMR_IDX_LOGPPRINTOUT]);
|
|
|
}
|
|
|
|
|
|
// Checking profile kind
|
|
@@ -3470,7 +3484,7 @@ void checkChargingProfileLimit(uint8_t gun_index)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- else if((ShmOCPP16Data->SmartChargingProfile[gun_index].ChargingProfileId == 0) && (ShmOCPP16Data->CSUMsg.bits[gun_index].ChargingProfileReq != ON))
|
|
|
+ else if((ShmOCPP16Data->SmartChargingProfile[gun_index].ChargingProfileId == 0))//&& (ShmOCPP16Data->CSUMsg.bits[gun_index].ChargingProfileReq != ON))
|
|
|
{
|
|
|
ShmCharger->gun_info[gun_index].targetCurrent = ShmCharger->gun_info[gun_index].primaryMcuState.rating_current;
|
|
|
}
|
|
@@ -3478,12 +3492,13 @@ void checkChargingProfileLimit(uint8_t gun_index)
|
|
|
else if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_20)
|
|
|
{
|
|
|
if((ocpp_get_smartcharging_profileId(gun_index) > 0) &&
|
|
|
- (ocpp_get_profile_req(gun_index) != ON) &&
|
|
|
+ //(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(DiffTimebWithNow(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);
|
|
@@ -3493,7 +3508,9 @@ void checkChargingProfileLimit(uint8_t gun_index)
|
|
|
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");
|
|
|
+ DEBUG_INFO("========================================\n");
|
|
|
+
|
|
|
+ ftime(&startTime[gun_index][TMR_IDX_LOGPPRINTOUT]);
|
|
|
}
|
|
|
|
|
|
// Checking profile kind
|
|
@@ -3519,11 +3536,98 @@ void checkChargingProfileLimit(uint8_t gun_index)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- else if((ShmOCPP20Data->SmartChargingProfile[gun_index].id == 0) && (ShmOCPP20Data->CSUMsg.bits[gun_index].ChargingProfileReq != ON))
|
|
|
+ else if((ShmOCPP20Data->SmartChargingProfile[gun_index].id == 0))// && (ShmOCPP20Data->CSUMsg.bits[gun_index].ChargingProfileReq != ON))
|
|
|
{
|
|
|
ShmCharger->gun_info[gun_index].targetCurrent = ShmCharger->gun_info[gun_index].primaryMcuState.rating_current;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ switch(system_mode)
|
|
|
+ {
|
|
|
+ case SYS_MODE_IDLE:
|
|
|
+ case SYS_MODE_PREPARING:
|
|
|
+ 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);
|
|
|
+ ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current = ((1 <= ShmCharger->gun_info[gun_index].targetCurrent) && (ShmCharger->gun_info[gun_index].targetCurrent <= 5)? 6:((ShmCharger->gun_info[gun_index].targetCurrent == 0)? 100: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);
|
|
|
+ ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current = ((1 <= ShmCharger->gun_info[gun_index].targetCurrent) && (ShmCharger->gun_info[gun_index].targetCurrent <= 5)? 6:((ShmCharger->gun_info[gun_index].targetCurrent == 0)? 100:ShmCharger->gun_info[gun_index].targetCurrent));
|
|
|
+ }
|
|
|
+ ShmCharger->gun_info[gun_index].mcuFlag.isSetCpPwmDuty = YES;
|
|
|
+
|
|
|
+ break;
|
|
|
+ case SYS_MODE_CHARGING:
|
|
|
+ case SYS_MODE_TERMINATING:
|
|
|
+ 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(DiffTimebWithNow(startTime[gun_index][TMR_IDX_PWN_CHANGE]) > TIMEOUT_SPEC_PWN_CHANGE)
|
|
|
+ {
|
|
|
+ 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].primaryMcuCp_Pwn_Duty.max_current = ((1 <= ShmCharger->gun_info[gun_index].targetCurrent) && (ShmCharger->gun_info[gun_index].targetCurrent <= 5)? 6:((ShmCharger->gun_info[gun_index].targetCurrent == 0)? 100:ShmCharger->gun_info[gun_index].targetCurrent));
|
|
|
+ ShmCharger->gun_info[gun_index].mcuFlag.isSetCpPwmDuty = YES;
|
|
|
+ ftime(&startTime[gun_index][TMR_IDX_PWN_CHANGE]);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ 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(DiffTimebWithNow(startTime[gun_index][TMR_IDX_PWN_CHANGE]) > TIMEOUT_SPEC_PWN_CHANGE)
|
|
|
+ {
|
|
|
+ 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].primaryMcuCp_Pwn_Duty.max_current = ((1 <= ShmCharger->gun_info[gun_index].targetCurrent) && (ShmCharger->gun_info[gun_index].targetCurrent <= 5)? 6:((ShmCharger->gun_info[gun_index].targetCurrent == 0)? 100:ShmCharger->gun_info[gun_index].targetCurrent));
|
|
|
+ ShmCharger->gun_info[gun_index].mcuFlag.isSetCpPwmDuty = YES;
|
|
|
+ ftime(&startTime[gun_index][TMR_IDX_PWN_CHANGE]);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {}
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(previousData[gun_index].primaryMcuCp_Pwn_Duty != ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current)
|
|
|
+ {
|
|
|
+ DEBUG_INFO("====================================================\n");
|
|
|
+ DEBUG_INFO("gun-%02d primaryMcuCp_Pwn_Duty: %d\n", gun_index, ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current);
|
|
|
+ DEBUG_INFO("====================================================\n");
|
|
|
+
|
|
|
+ previousData[gun_index].primaryMcuCp_Pwn_Duty = ShmCharger->gun_info[gun_index].primaryMcuCp_Pwn_Duty.max_current;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(ShmCharger->gun_info[gun_index].targetCurrent != previousData[gun_index].targetCurrent)
|
|
|
+ {
|
|
|
+ DEBUG_INFO("====================================================\n");
|
|
|
+ DEBUG_INFO("MaxChargingCurrent: %d \n", ShmSysConfigAndInfo->SysConfig.MaxChargingCurrent);
|
|
|
+ DEBUG_INFO("gun-%02d targetCurrent: %d\n", gun_index, ShmCharger->gun_info[gun_index].targetCurrent);
|
|
|
+ DEBUG_INFO("====================================================\n");
|
|
|
+
|
|
|
+ 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("====================================================\n");
|
|
|
+ DEBUG_INFO("gun-%02d mcu current_limit: %d\n", gun_index, ShmCharger->gun_info[gun_index].primaryMcuState.current_limit);
|
|
|
+ DEBUG_INFO("====================================================\n");
|
|
|
+
|
|
|
+ previousData[gun_index].current_limit = ShmCharger->gun_info[gun_index].primaryMcuState.current_limit;
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void checkStopReason(uint8_t gun_index)
|
|
@@ -3791,8 +3895,8 @@ int main(void)
|
|
|
//==============================================
|
|
|
// Something need run in Idle mode
|
|
|
//==============================================
|
|
|
- if(((ShmSysConfigAndInfo->SysInfo.AcChargingData[0].SystemStatus==SYS_MODE_IDLE) || (ShmSysConfigAndInfo->SysInfo.AcChargingData[0].SystemStatus==SYS_MODE_ALARM)) &&
|
|
|
- (AC_QUANTITY>1?((ShmSysConfigAndInfo->SysInfo.AcChargingData[1].SystemStatus==SYS_MODE_IDLE) || (ShmSysConfigAndInfo->SysInfo.AcChargingData[1].SystemStatus==SYS_MODE_ALARM)):true))
|
|
|
+ if(((ShmSysConfigAndInfo->SysInfo.AcChargingData[0].SystemStatus==SYS_MODE_IDLE) || (ShmSysConfigAndInfo->SysInfo.AcChargingData[0].SystemStatus==SYS_MODE_ALARM) || (ShmSysConfigAndInfo->SysInfo.AcChargingData[0].SystemStatus==SYS_MODE_DEBUG)) &&
|
|
|
+ (AC_QUANTITY>1?((ShmSysConfigAndInfo->SysInfo.AcChargingData[1].SystemStatus==SYS_MODE_IDLE) || (ShmSysConfigAndInfo->SysInfo.AcChargingData[1].SystemStatus==SYS_MODE_ALARM) || (ShmSysConfigAndInfo->SysInfo.AcChargingData[1].SystemStatus==SYS_MODE_DEBUG)):true))
|
|
|
{
|
|
|
//======================================
|
|
|
// Check restore factory setting request
|
|
@@ -4101,40 +4205,7 @@ int main(void)
|
|
|
// Get target current
|
|
|
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);
|
|
|
- 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;
|
|
|
- }
|
|
|
- }
|
|
|
- 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((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;
|
|
|
+ checkChargingProfileLimit(gun_index, ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus);
|
|
|
|
|
|
setChargerMode(gun_index, SYS_MODE_AUTHORIZING);
|
|
|
}
|
|
@@ -4317,8 +4388,10 @@ int main(void)
|
|
|
ShmCharger->gun_info[gun_index].isGunPlugged = YES;
|
|
|
ShmCharger->gun_info[gun_index].isGunUnpluggedBefore = NO;
|
|
|
|
|
|
+ checkChargingProfileLimit(gun_index, ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus);
|
|
|
+
|
|
|
// Set relay on when the system is state C
|
|
|
- if(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_C)
|
|
|
+ if((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_C) && ((ShmCharger->gun_info[gun_index].targetCurrent != 0)))
|
|
|
setRelay(gun_index, ON);
|
|
|
|
|
|
if((ShmCharger->gun_info[gun_index].primaryMcuState.relay_state == ON) || (ShmCharger->gun_info[gun_index].targetCurrent == 0))
|
|
@@ -4351,6 +4424,7 @@ int main(void)
|
|
|
ocpp_set_profile_req(gun_index, ON);
|
|
|
ShmCharger->gun_info[gun_index].isChargerStopByCondition = NO;
|
|
|
}
|
|
|
+
|
|
|
if(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_A)
|
|
|
{
|
|
|
ShmCharger->gun_info[gun_index].isGunUnpluggedBefore = YES;
|
|
@@ -4526,7 +4600,7 @@ int main(void)
|
|
|
}
|
|
|
|
|
|
// Checking profile id > 0 and current time is between charging profile validFrom & validTo
|
|
|
- checkChargingProfileLimit(gun_index);
|
|
|
+ checkChargingProfileLimit(gun_index, ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus);
|
|
|
|
|
|
// If temperature warning derating PWM duty 20%
|
|
|
if(ShmSysConfigAndInfo->SysInfo.SystemAmbientTemp >= SPEC_TEMPERATURE_WARN)
|
|
@@ -4539,70 +4613,16 @@ int main(void)
|
|
|
}
|
|
|
ShmCharger->gun_info[gun_index].targetCurrent = (ShmCharger->gun_info[gun_index].targetCurrent==0?ShmCharger->gun_info[gun_index].targetCurrent:(((ShmCharger->gun_info[gun_index].targetCurrent*ShmCharger->gun_info[gun_index].tempCoefficient)>=6) ? (ShmCharger->gun_info[gun_index].targetCurrent*ShmCharger->gun_info[gun_index].tempCoefficient):6));
|
|
|
|
|
|
- // 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)
|
|
|
- {
|
|
|
- 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
|
|
|
- {}
|
|
|
- }
|
|
|
- }
|
|
|
- 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)
|
|
|
- {
|
|
|
- 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
|
|
|
- {}
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
// 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]);
|
|
|
}
|
|
|
|
|
@@ -4730,15 +4750,6 @@ int main(void)
|
|
|
setLedMotion(gun_index, LED_ACTION_STOP);
|
|
|
checkStopReason(gun_index);
|
|
|
setChargerMode(gun_index, SYS_MODE_COMPLETE);
|
|
|
-
|
|
|
- /*
|
|
|
- // If relay is off, the system should change to complete mode
|
|
|
- if(!ShmCharger->gun_info[gun_index].primaryMcuState.relay_state)
|
|
|
- {
|
|
|
- checkStopReason(gun_index);
|
|
|
- setChargerMode(gun_index, SYS_MODE_COMPLETE);
|
|
|
- }
|
|
|
- */
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -4891,72 +4902,20 @@ int main(void)
|
|
|
}
|
|
|
|
|
|
// Check target current if charging profile limit > 0
|
|
|
- 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)
|
|
|
- {
|
|
|
- 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
|
|
|
- {}
|
|
|
- }
|
|
|
- }
|
|
|
- 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)
|
|
|
- {
|
|
|
- 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
|
|
|
- {}
|
|
|
- }
|
|
|
- }
|
|
|
+ checkChargingProfileLimit(gun_index, ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus);
|
|
|
+
|
|
|
+ setRelay(gun_index, OFF);
|
|
|
|
|
|
// 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]);
|
|
|
}
|
|
|
|
|
@@ -4990,6 +4949,7 @@ int main(void)
|
|
|
|
|
|
if((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_A) || ocpp_get_reset_req())
|
|
|
{
|
|
|
+ sleep(2);
|
|
|
ShmCharger->gun_info[gun_index].rfidReq = OFF;
|
|
|
ShmCharger->gun_info[gun_index].isAuthPassEnd = OFF;
|
|
|
ShmCharger->gun_info[gun_index].bleConfigData.isRequestStop = OFF;
|
|
@@ -5187,7 +5147,6 @@ int main(void)
|
|
|
}
|
|
|
|
|
|
ShmCharger->gun_info[gun_index].rfidReq = OFF;
|
|
|
-
|
|
|
}
|
|
|
else if(ocpp_get_remotestart(gun_index))
|
|
|
{
|