Selaa lähdekoodia

[Improve][AX80][main]

2022.01.11 / Folus Wen

Actions:
1. CCS and BS control flow improve.

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 3 vuotta sitten
vanhempi
commit
fd215a735a

+ 7 - 0
EVSE/Projects/AX80/Apps/CCS/Makefile

@@ -66,6 +66,7 @@ ifeq ($(CCSType),AX80)
 	@echo "=============== Make AC CsuCommTask==========================="
 	$(CC) -D $(CCSType) -O0 -Wall -fmessage-length=0 CsuComm.c ${EXI_ENGINE} -lm -o CsuComm
 	cp -f CsuComm ../../Images/root
+	rm -f CsuComm
 else
 	@echo "=============== Make DC CsuCommTask==========================="
 	rm -f CsuComm
@@ -82,6 +83,7 @@ ifeq ($(CCSType),AX80)
 	cp -f SeccComm ../../Images/root
 	cp -f cacert.pem ../../Images/root
 	cp -f cakey.pem ../../Images/root
+	rm -f SeccComm
 else
 	@echo "=============== Make DC SeccCommTask==========================="
 	$(CC) SeccComm.c NidNmk.c ${EXI_ENGINE} -lm -o SeccComm $(CFLAGS)
@@ -128,8 +130,13 @@ PCBATesterTask:
 	rm -f PCBATester
 
 init:
+ifeq ($(CCSType),AX80)
+	rm -rfv ../../Images/root
+	mkdir -p ../../Images/root
+else
 	rm -rfv ../Images/root
 	mkdir -p ../Images/root
+endif
 #	cp -rfv ../Images/boot/reset_soft.sh ../Images/root/
 #	cp -rfv ../Images/boot/stop.sh ../Images/root/
 #	cp -rfv ../Images/boot/reboot.sh ../Images/root/

+ 53 - 28
EVSE/Projects/AX80/Apps/Module_Dispenser.c

@@ -972,7 +972,6 @@ int main(void)
 					ShmDispenser->gun_info.isDoEvReadyOnce = OFF;
 					ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current = CCS_PWM_DUTY_100;
 					ShmDispenser->gun_info.mcuFlag.isSetCpPwmDuty = ON;
-					if(ShmDispenser->isCcsEnable)system("pkill Module_CCS");
 				}
 
 				if(ShmDispenser->gun_info.legacyRequest.isLegacyRequest)
@@ -1000,16 +999,6 @@ int main(void)
 				if(isModeChange())
 				{}
 
-				if(ShmDispenser->isCcsEnable)
-				{
-					ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current = CCS_PWM_DUTY_CP_STATE_F;
-					ShmDispenser->gun_info.mcuFlag.isSetCpPwmDuty = ON;
-					sleep(4);
-					ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current = CCS_PWM_DUTY_100;
-					ShmDispenser->gun_info.mcuFlag.isSetCpPwmDuty = ON;
-					system("/root/Module_CCS &");
-				}
-
 				setChargerMode(SYS_MODE_PREPARING);
 
 				break;
@@ -1047,6 +1036,7 @@ int main(void)
 								ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current = CCS_PWM_DUTY_5;
 								ShmDispenser->gun_info.mcuFlag.isSetCpPwmDuty = ON;
 								ShmDispenser->gun_info.ccsHandshakeState = HANDSHAKE_DUTY_5_CHECK;
+								DEBUG_INFO("ccsHandshakeState = HANDSHAKE_DUTY_5_CHECK\n");
 							}
 							break;
 						case HANDSHAKE_DUTY_5_CHECK:
@@ -1056,6 +1046,7 @@ int main(void)
 								refreshStartTimer(&startTime[TMR_IDX_BS_HLC_HANDSHAKE]);
 								DEBUG_INFO("HLC slac handshake start.\n");
 								ShmDispenser->gun_info.ccsHandshakeState = HANDSHAKE_CCS;
+								DEBUG_INFO("ccsHandshakeState = HANDSHAKE_CCS\n");
 							}
 							break;
 						case HANDSHAKE_CCS:
@@ -1065,6 +1056,24 @@ int main(void)
 								ShmDispenser->gun_info.acCcsInfo.ChargingPermission = OFF;
 								ShmDispenser->gun_info.acCcsInfo.EVSENotification = NOTIFICATION_STOP;
 								DEBUG_INFO("HLC %d secs slac handshake timeout.\n", TIMEOUT_SPEC_BS_HLC_HANDSHAKE);
+
+								if(ShmDispenser->isCcsEnable)
+								{
+									DEBUG_INFO("TIMEOUT_SPEC_BS_HLC_HANDSHAKE.\n");
+									ShmDispenser->gun_info.acCcsInfo.ChargingPermission = OFF;
+									ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current = CCS_PWM_DUTY_CP_STATE_F;
+									ShmDispenser->gun_info.mcuFlag.isSetCpPwmDuty = ON;
+									ShmDispenser->gun_info.ccsHandshakeState = HANDSHAKE_CP_STATE_E;
+									ShmDispenser->gun_info.chargingMode = CHARGING_MODE_BS;
+									break;
+								}
+								else
+								{
+									ShmDispenser->gun_info.acCcsInfo.ChargingPermission = OFF;
+									ShmDispenser->gun_info.acCcsInfo.EVSENotification = NOTIFICATION_STOP;
+									DEBUG_INFO("BS/HLC %d secs handshake timeout.\n", TIMEOUT_SPEC_BS_HLC_HANDSHAKE);
+								}
+
 							}
 
 							if((ShmDispenser->gun_info.acCcsInfo.ChargingPermission == OFF) && (ShmDispenser->gun_info.acCcsInfo.CpSetPWMDuty != CCS_PWM_DUTY_5))
@@ -1077,12 +1086,38 @@ int main(void)
 							}
 
 							//CCS status check
-							if((16 < ShmDispenser->gun_info.acCcsInfo.PresentMsgFlowStatus) && (ShmDispenser->gun_info.acCcsInfo.PresentMsgFlowStatus < 254))
+							if((16 <= ShmDispenser->gun_info.acCcsInfo.PresentMsgFlowStatus) && (ShmDispenser->gun_info.acCcsInfo.PresentMsgFlowStatus < 253))
 							{
+								//change PWM duty to BS
+								if((ShmDispenser->gun_info.mcuFlag.isSetCpPwmDuty == OFF)&&(ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current!=CCS_PWM_DUTY_5))
+								{
+									ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current =CCS_PWM_DUTY_5;
+									ShmDispenser->gun_info.mcuFlag.isSetCpPwmDuty = ON;
+									DEBUG_INFO("ccsHandshakeState = HANDSHAKE_CCS (set 5% duty)\n");
+								}
+								refreshStartTimer(&startTime[TMR_IDX_HANDSHAKING]);
+							}
+
+							if((37 < ShmDispenser->gun_info.acCcsInfo.PresentMsgFlowStatus) && (ShmDispenser->gun_info.acCcsInfo.PresentMsgFlowStatus < 49))
+							{
+								 //chang PWM duty to BS
+								if((ShmDispenser->gun_info.mcuFlag.isSetCpPwmDuty == OFF)&&(ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current!=CCS_PWM_DUTY_5))
+								{
+									ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current =CCS_PWM_DUTY_5;
+									ShmDispenser->gun_info.mcuFlag.isSetCpPwmDuty = ON;
+								}
 								ShmDispenser->gun_info.chargingMode = CHARGING_MODE_HLC;
-								DEBUG_INFO("Enter HLC Mode charging.\n");
 								ShmDispenser->gun_info.ccsHandshakeState = HANDSHAKE_HLC_MODE;
-								refreshStartTimer(&startTime[TMR_IDX_HANDSHAKING]);
+								DEBUG_INFO("ccsHandshakeState = HANDSHAKE_HLC_MODE\n");
+							}
+							else if((54 < ShmDispenser->gun_info.acCcsInfo.PresentMsgFlowStatus) && (ShmDispenser->gun_info.acCcsInfo.PresentMsgFlowStatus <= 255))
+							{
+								DEBUG_INFO("ccsHandshakeState = CHARGING_MODE_BS, CCS terminated\n");
+								ShmDispenser->gun_info.acCcsInfo.ChargingPermission = OFF;
+								ShmDispenser->gun_info.primaryMcuCp_Pwn_Duty.max_current = CCS_PWM_DUTY_CP_STATE_F;
+								ShmDispenser->gun_info.mcuFlag.isSetCpPwmDuty = ON;
+								ShmDispenser->gun_info.ccsHandshakeState = HANDSHAKE_CP_STATE_E;
+								ShmDispenser->gun_info.chargingMode = CHARGING_MODE_BS;
 							}
 
 							break;
@@ -1093,7 +1128,7 @@ int main(void)
 								{
 									DEBUG_INFO("Change to CP STATE E for 4 secs.\n");
 									//CP STATE E for 4 secs
-									sleep(4);
+									sleep(3);
 								}
 
 								//restore normal CP PWM duty
@@ -1196,7 +1231,7 @@ int main(void)
 
 							break;
 						case HANDSHAKE_HLC_MODE:
-							if(ShmDispenser->gun_info.acCcsInfo.EVChargeProgress == HLC_START_MODE)
+							if(ShmDispenser->gun_info.acCcsInfo.EVChargeProgress == HLC_START_MODE)//powerDelivery
 							{
 								ShmDispenser->gun_info.isCCSStartTransation = ON;
 							}
@@ -1302,17 +1337,6 @@ int main(void)
 				   (getDiffSecNow(startTime[TMR_IDX_CCS_HEARTBEAT_COUNT_RESET]) > TIMEOUT_SPEC_CCS_HEARTBEAT_COUNT_RESET))
 				{
 					refreshStartTimer(&startTime[TMR_IDX_CCS_HEARTBEAT_COUNT_RESET]);
-					if(ShmDispenser->gun_info.acCcsInfo.CcsHeartBeat > 0)
-					{
-						ShmDispenser->gun_info.acCcsInfo.CcsHeartBeat = 0;
-					}
-					else
-					{
-						DEBUG_INFO("CCS could not get MSG from car.\n");
-
-						//setChargerMode(SYS_MODE_TERMINATING);
-						//setRelay(OFF);
-					}
 				}
 
 				if(!ShmDispenser->gun_info.legacyRequest.isLegacyRequest ||
@@ -1320,7 +1344,8 @@ int main(void)
 				   ((ShmDispenser->gun_info.chargingMode == CHARGING_MODE_SOCKETE) && !ShmDispenser->gun_info.primaryMcuState.socket_e.isSocketEPinOn) ||
 				   ((ShmDispenser->gun_info.chargingMode == CHARGING_MODE_HLC) && (ShmDispenser->gun_info.acCcsInfo.EVChargeProgress == HLC_STOP_MODE)) ||
 				   ((ShmDispenser->gun_info.chargingMode == CHARGING_MODE_HLC) && ShmDispenser->gun_info.acCcsInfo.EVChargeProgress == HLC_RENEGOTIATE_MODE) ||
-				   ((ShmDispenser->gun_info.chargingMode == CHARGING_MODE_HLC) && ShmDispenser->gun_info.acCcsInfo.EVChargeProgress == HLC_STANDBY_MODE))
+				   ((ShmDispenser->gun_info.chargingMode == CHARGING_MODE_HLC) && ShmDispenser->gun_info.acCcsInfo.EVChargeProgress == HLC_STANDBY_MODE) ||
+				   ((ShmDispenser->gun_info.chargingMode == CHARGING_MODE_HLC) && ((49 <= ShmDispenser->gun_info.acCcsInfo.PresentMsgFlowStatus) && (ShmDispenser->gun_info.acCcsInfo.PresentMsgFlowStatus <= 255))))
 				{
 					setChargerMode(SYS_MODE_TERMINATING);
 					//setRelay(gun_index, OFF);

+ 19 - 13
EVSE/Projects/AX80/Apps/main.c

@@ -2798,6 +2798,13 @@ int SpawnTask()
 	system ("/root/Module_Cabinet &");
 	system ("/root/Module_Dispenser &");
 
+	if(ShmCharger->isCcsEnable == ON)
+	{
+		system ("/root/CsuComm &");
+		sleep(3);
+		system ("/root/SeccComm &");
+	}
+
 	return PASS;
 }
 
@@ -2812,7 +2819,7 @@ int InitQca7000()
 		system("/sbin/insmod /lib/qcaspi.ko");
 
 	sleep(2);
-	system("/sbin/ifconfig eth1 192.168.253.11 netmask 255.255.255.0 up");
+	system("/sbin/ifconfig eth1 192.168.0.11 netmask 255.255.255.0 up");
 	sleep(1);
 
 	return result;
@@ -5612,15 +5619,20 @@ int main(void)
 
 									break;
 								case HANDSHAKE_HLC_MODE:
-									if(ShmCharger->gun_info[gun_index].acCcsInfo.EVChargeProgress == HLC_START_MODE)
+									if(ShmCharger->gun_info[gun_index].acCcsInfo.EVChargeProgress == HLC_START_MODE)//powerDelivery
 									{
-										setRelay(gun_index,ON);
-										ShmCharger->gun_info[gun_index].isCCSStartTransation = ON;
+										if(ShmCharger->gun_info[gun_index].legacyRequest.isRelayOn == OFF)
+										{
+												setRelay(gun_index,ON);
+												ShmCharger->gun_info[gun_index].isCCSStartTransation = ON;
+												DEBUG_INFO("HANDSHAKE_HLC_MODE:setRelay ON\n");
+										}
 									}
 
 									if((ShmCharger->gun_info[gun_index].primaryMcuState.relay_state == ON) &&
 										(ShmCharger->gun_info[gun_index].isCCSStartTransation == ON))
 									{
+										DEBUG_INFO("HANDSHAKE_HLC_MODE:Relay ON done\n");
 										ocpp_set_unlocker_req(gun_index, OFF);
 										presentChargedEnergyClear(gun_index);
 										getDateTimeString((char*)ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartDateTime);
@@ -5642,6 +5654,7 @@ int main(void)
 										ocpp_set_starttransaction_req(gun_index, ON);
 										ShmCharger->gun_info[gun_index].isCCSStartTransation = OFF;
 										setChargerMode(gun_index, SYS_MODE_CHARGING);
+										DEBUG_INFO("set SYS_MODE_CHARGING\n");
 										refreshStartTimer(&startChargingTime[gun_index]);
 										refreshStartTimer(&startTime[gun_index][TMR_IDX_CCS_HEARTBEAT_COUNT_RESET]);
 									}
@@ -5733,14 +5746,6 @@ int main(void)
 						   (getDiffSecNow(startTime[gun_index][TMR_IDX_CCS_HEARTBEAT_COUNT_RESET]) > TIMEOUT_SPEC_CCS_HEARTBEAT_COUNT_RESET))
 						{
 							refreshStartTimer(&startTime[gun_index][TMR_IDX_CCS_HEARTBEAT_COUNT_RESET]);
-							if(ShmCharger->gun_info[gun_index].acCcsInfo.CcsHeartBeat > 0)
-							{
-								ShmCharger->gun_info[gun_index].acCcsInfo.CcsHeartBeat = 0;
-							}
-							else
-							{
-								DEBUG_INFO("CCS could not get MSG from car.\n");
-							}
 						}
 
 						if((ShmCharger->gun_info[gun_index].rfidReq == ON) ||
@@ -5754,7 +5759,8 @@ int main(void)
 						   (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].schedule.isTriggerStop == ON) ||
 						   ((ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_HLC) && (ShmCharger->gun_info[gun_index].acCcsInfo.EVChargeProgress == HLC_STOP_MODE)) ||
 						   ((ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_HLC) && ShmCharger->gun_info[gun_index].acCcsInfo.EVChargeProgress == HLC_RENEGOTIATE_MODE) ||
-						   ((ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_HLC) && ShmCharger->gun_info[gun_index].acCcsInfo.EVChargeProgress == HLC_STANDBY_MODE))
+						   ((ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_HLC) && ShmCharger->gun_info[gun_index].acCcsInfo.EVChargeProgress == HLC_STANDBY_MODE) ||
+						   ((ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_HLC) && ((49 <= ShmCharger->gun_info[gun_index].acCcsInfo.PresentMsgFlowStatus) && (ShmCharger->gun_info[gun_index].acCcsInfo.PresentMsgFlowStatus <= 255))))
 						{
 							setChargerMode(gun_index, SYS_MODE_TERMINATING);
 						}