|
@@ -1048,9 +1048,9 @@ void SetK1K2RelayStatus(byte index)
|
|
|
{
|
|
|
if (_chargingData[index]->SystemStatus < S_PREPARING_FOR_EVSE)
|
|
|
{
|
|
|
- if(ShmChargerInfo->Control.SysCtrl.bits.SecondRelayBoardEnable)
|
|
|
- {
|
|
|
- // two relay board
|
|
|
+ if(ShmChargerInfo->Control.SysCtrl.bits.SecondRelayBoardEnable)
|
|
|
+ {
|
|
|
+ // two relay board
|
|
|
if(index == 0)
|
|
|
{
|
|
|
if(regRelay[0].relay_event.bits.Gun1_P == YES)
|
|
@@ -1065,10 +1065,10 @@ void SetK1K2RelayStatus(byte index)
|
|
|
if (regRelay[1].relay_event.bits.Gun2_N == YES)
|
|
|
outputRelay[1].relay_event.bits.Gun2_N = NO;
|
|
|
}
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- // only one relay board
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // only one relay board
|
|
|
if(index == 0)
|
|
|
{
|
|
|
if(regRelay[0].relay_event.bits.Gun1_P == YES)
|
|
@@ -1083,16 +1083,16 @@ void SetK1K2RelayStatus(byte index)
|
|
|
if (regRelay[0].relay_event.bits.Gun2_N == YES)
|
|
|
outputRelay[0].relay_event.bits.Gun2_N = NO;
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
else if ((_chargingData[index]->SystemStatus >= S_PREPARING_FOR_EVSE &&
|
|
|
_chargingData[index]->SystemStatus <= S_CHARGING))
|
|
|
{
|
|
|
if (_chargingData[index]->RelayWeldingCheck == YES)
|
|
|
{
|
|
|
- if(ShmChargerInfo->Control.SysCtrl.bits.SecondRelayBoardEnable)
|
|
|
- {
|
|
|
- // two relay board
|
|
|
+ if(ShmChargerInfo->Control.SysCtrl.bits.SecondRelayBoardEnable)
|
|
|
+ {
|
|
|
+ // two relay board
|
|
|
if(index == 0)
|
|
|
{
|
|
|
if(regRelay[0].relay_event.bits.Gun1_N == NO)
|
|
@@ -1107,10 +1107,10 @@ void SetK1K2RelayStatus(byte index)
|
|
|
if (regRelay[1].relay_event.bits.Gun2_P == NO)
|
|
|
outputRelay[1].relay_event.bits.Gun2_P = YES;
|
|
|
}
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- // only one relay board
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // only one relay board
|
|
|
if(index == 0)
|
|
|
{
|
|
|
if(regRelay[0].relay_event.bits.Gun1_N == NO)
|
|
@@ -1125,7 +1125,7 @@ void SetK1K2RelayStatus(byte index)
|
|
|
if (regRelay[0].relay_event.bits.Gun2_P == NO)
|
|
|
outputRelay[0].relay_event.bits.Gun2_P = YES;
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
else if ((_chargingData[index]->SystemStatus >= S_TERMINATING &&
|
|
@@ -1134,9 +1134,9 @@ void SetK1K2RelayStatus(byte index)
|
|
|
{
|
|
|
if ((_chargingData[index]->PresentChargingCurrent * 10) <= SEFETY_SWITCH_RELAY_CUR)
|
|
|
{
|
|
|
- if(ShmChargerInfo->Control.SysCtrl.bits.SecondRelayBoardEnable)
|
|
|
- {
|
|
|
- // two relay board
|
|
|
+ if(ShmChargerInfo->Control.SysCtrl.bits.SecondRelayBoardEnable)
|
|
|
+ {
|
|
|
+ // two relay board
|
|
|
if(index == 0)
|
|
|
{
|
|
|
if(regRelay[0].relay_event.bits.Gun1_P == YES)
|
|
@@ -1151,10 +1151,10 @@ void SetK1K2RelayStatus(byte index)
|
|
|
if (regRelay[1].relay_event.bits.Gun2_N == YES)
|
|
|
outputRelay[1].relay_event.bits.Gun2_N = NO;
|
|
|
}
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- // only one relay board
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // only one relay board
|
|
|
if(index == 0)
|
|
|
{
|
|
|
if(regRelay[0].relay_event.bits.Gun1_P == YES)
|
|
@@ -1169,7 +1169,7 @@ void SetK1K2RelayStatus(byte index)
|
|
|
if (regRelay[0].relay_event.bits.Gun2_N == YES)
|
|
|
outputRelay[0].relay_event.bits.Gun2_N = NO;
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
else if (_chargingData[index]->SystemStatus == S_CCS_PRECHARGE_ST0)
|
|
@@ -1191,10 +1191,11 @@ void SetParalleRelayStatus()
|
|
|
((_chargingData[0]->SystemStatus == S_IDLE || _chargingData[0]->SystemStatus == S_MAINTAIN || _chargingData[0]->SystemStatus == S_FAULT) &&
|
|
|
(_chargingData[1]->SystemStatus == S_IDLE || _chargingData[1]->SystemStatus == S_MAINTAIN || _chargingData[0]->SystemStatus == S_FAULT)))
|
|
|
{
|
|
|
- if(ShmChargerInfo->Control.SysCtrl.bits.SecondRelayBoardEnable)
|
|
|
- {
|
|
|
- // two relay board
|
|
|
+ if(ShmChargerInfo->Control.SysCtrl.bits.SecondRelayBoardEnable)
|
|
|
+ {
|
|
|
+ // two relay board
|
|
|
// 初始化~ 不搭橋接
|
|
|
+#if 0
|
|
|
if (regRelay[0].relay_event.bits.Gun1_Parallel_P == YES)
|
|
|
outputRelay[0].relay_event.bits.Gun1_Parallel_P = NO;
|
|
|
if (regRelay[0].relay_event.bits.Gun1_Parallel_N == YES)
|
|
@@ -1207,16 +1208,34 @@ void SetParalleRelayStatus()
|
|
|
outputRelay[1].relay_event.bits.Gun1_Parallel_P = NO;
|
|
|
if (regRelay[1].relay_event.bits.Gun1_Parallel_N == YES)
|
|
|
outputRelay[1].relay_event.bits.Gun1_Parallel_N = NO;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- // only one relay board
|
|
|
- // 初始化~ 不搭橋接
|
|
|
+#endif
|
|
|
+ // gun 1 & gun 3 parallel relay enable
|
|
|
+ if (regRelay[0].relay_event.bits.Gun1_Parallel_P == NO)
|
|
|
+ outputRelay[0].relay_event.bits.Gun1_Parallel_P = YES;
|
|
|
+ if (regRelay[0].relay_event.bits.Gun1_Parallel_N == NO)
|
|
|
+ outputRelay[0].relay_event.bits.Gun1_Parallel_N = YES;
|
|
|
+
|
|
|
+ // gun 3 & gun 4 parallel relay disable
|
|
|
+ if (regRelay[0].relay_event.bits.Gun2_Parallel_P == YES)
|
|
|
+ outputRelay[0].relay_event.bits.Gun2_Parallel_P = NO;
|
|
|
+ if (regRelay[0].relay_event.bits.Gun2_Parallel_N == YES)
|
|
|
+ outputRelay[0].relay_event.bits.Gun2_Parallel_N = NO;
|
|
|
+
|
|
|
+ // gun 4 & gun 2 parallel relay enable
|
|
|
+ if (regRelay[1].relay_event.bits.Gun1_Parallel_P == NO)
|
|
|
+ outputRelay[1].relay_event.bits.Gun1_Parallel_P = YES;
|
|
|
+ if (regRelay[1].relay_event.bits.Gun1_Parallel_N == NO)
|
|
|
+ outputRelay[1].relay_event.bits.Gun1_Parallel_N = YES;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // only one relay board
|
|
|
+ // 初始化~ 不搭橋接
|
|
|
if (regRelay[0].relay_event.bits.Gun1_Parallel_N == YES)
|
|
|
outputRelay[0].relay_event.bits.Gun1_Parallel_N = NO;
|
|
|
if (regRelay[0].relay_event.bits.Gun2_Parallel_N == YES)
|
|
|
outputRelay[0].relay_event.bits.Gun2_Parallel_N = NO;
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -1228,10 +1247,11 @@ void SetParalleRelayStatus()
|
|
|
{
|
|
|
if (ShmSysConfigAndInfo->SysInfo.ReAssignedFlag < _REASSIGNED_RELAY_M_TO_A)
|
|
|
{
|
|
|
- if(ShmChargerInfo->Control.SysCtrl.bits.SecondRelayBoardEnable)
|
|
|
- {
|
|
|
- // two relay board
|
|
|
+ if(ShmChargerInfo->Control.SysCtrl.bits.SecondRelayBoardEnable)
|
|
|
+ {
|
|
|
+ // two relay board
|
|
|
// 最大充 - 搭上橋接
|
|
|
+#if 0
|
|
|
if (regRelay[0].relay_event.bits.Gun1_Parallel_N == NO)
|
|
|
outputRelay[0].relay_event.bits.Gun1_Parallel_N = YES;
|
|
|
if (regRelay[0].relay_event.bits.Gun1_Parallel_P == NO)
|
|
@@ -1244,23 +1264,30 @@ void SetParalleRelayStatus()
|
|
|
outputRelay[1].relay_event.bits.Gun1_Parallel_N = YES;
|
|
|
if (regRelay[1].relay_event.bits.Gun1_Parallel_P == NO)
|
|
|
outputRelay[1].relay_event.bits.Gun1_Parallel_P = YES;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- // only one relay board
|
|
|
+#endif
|
|
|
+ // gun 3 & gun 4 parallel relay enable
|
|
|
+ if (regRelay[0].relay_event.bits.Gun2_Parallel_N == NO)
|
|
|
+ outputRelay[0].relay_event.bits.Gun2_Parallel_N = YES;
|
|
|
+ if (regRelay[0].relay_event.bits.Gun2_Parallel_P == NO)
|
|
|
+ outputRelay[0].relay_event.bits.Gun2_Parallel_P = YES;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // only one relay board
|
|
|
// 最大充 - 搭上橋接
|
|
|
if (regRelay[0].relay_event.bits.Gun1_Parallel_N == NO)
|
|
|
outputRelay[0].relay_event.bits.Gun1_Parallel_N = YES;
|
|
|
if (regRelay[0].relay_event.bits.Gun2_Parallel_N == NO)
|
|
|
outputRelay[0].relay_event.bits.Gun2_Parallel_N = YES;
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- if(ShmChargerInfo->Control.SysCtrl.bits.SecondRelayBoardEnable)
|
|
|
- {
|
|
|
- // two relay board
|
|
|
+ if(ShmChargerInfo->Control.SysCtrl.bits.SecondRelayBoardEnable)
|
|
|
+ {
|
|
|
+ // two relay board
|
|
|
// 平均充 - 不搭
|
|
|
+#if 0
|
|
|
if (regRelay[0].relay_event.bits.Gun1_Parallel_P == YES)
|
|
|
outputRelay[0].relay_event.bits.Gun1_Parallel_P = NO;
|
|
|
if (regRelay[0].relay_event.bits.Gun1_Parallel_N == YES)
|
|
@@ -1273,26 +1300,33 @@ void SetParalleRelayStatus()
|
|
|
outputRelay[1].relay_event.bits.Gun1_Parallel_P = NO;
|
|
|
if (regRelay[1].relay_event.bits.Gun1_Parallel_N == YES)
|
|
|
outputRelay[1].relay_event.bits.Gun1_Parallel_N = NO;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- // only one relay board
|
|
|
+#endif
|
|
|
+ // gun 3 & gun 4 parallel relay disable
|
|
|
+ if (regRelay[0].relay_event.bits.Gun2_Parallel_P == YES)
|
|
|
+ outputRelay[0].relay_event.bits.Gun2_Parallel_P = NO;
|
|
|
+ if (regRelay[0].relay_event.bits.Gun2_Parallel_N == YES)
|
|
|
+ outputRelay[0].relay_event.bits.Gun2_Parallel_N = NO;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // only one relay board
|
|
|
// 平均充 - 不搭
|
|
|
if (regRelay[0].relay_event.bits.Gun1_Parallel_N == YES)
|
|
|
outputRelay[0].relay_event.bits.Gun1_Parallel_N = NO;
|
|
|
if (regRelay[0].relay_event.bits.Gun2_Parallel_N == YES)
|
|
|
outputRelay[0].relay_event.bits.Gun2_Parallel_N = NO;
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
else if (ShmSysConfigAndInfo->SysInfo.MainChargingMode == _MAIN_CHARGING_MODE_AVER)
|
|
|
{
|
|
|
if (ShmSysConfigAndInfo->SysInfo.ReAssignedFlag < _REASSIGNED_RELAY_A_TO_M)
|
|
|
{
|
|
|
- if(ShmChargerInfo->Control.SysCtrl.bits.SecondRelayBoardEnable)
|
|
|
- {
|
|
|
- // two relay board
|
|
|
+ if(ShmChargerInfo->Control.SysCtrl.bits.SecondRelayBoardEnable)
|
|
|
+ {
|
|
|
+ // two relay board
|
|
|
// 平均充 - 不搭
|
|
|
+#if 0
|
|
|
if (regRelay[0].relay_event.bits.Gun1_Parallel_P == YES)
|
|
|
outputRelay[0].relay_event.bits.Gun1_Parallel_P = NO;
|
|
|
if (regRelay[0].relay_event.bits.Gun1_Parallel_N == YES)
|
|
@@ -1305,23 +1339,30 @@ void SetParalleRelayStatus()
|
|
|
outputRelay[1].relay_event.bits.Gun1_Parallel_P = NO;
|
|
|
if (regRelay[1].relay_event.bits.Gun1_Parallel_N == YES)
|
|
|
outputRelay[1].relay_event.bits.Gun1_Parallel_N = NO;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- // only one relay board
|
|
|
+#endif
|
|
|
+ // gun 3 & gun 4 parallel relay disable
|
|
|
+ if (regRelay[0].relay_event.bits.Gun2_Parallel_P == YES)
|
|
|
+ outputRelay[0].relay_event.bits.Gun2_Parallel_P = NO;
|
|
|
+ if (regRelay[0].relay_event.bits.Gun2_Parallel_N == YES)
|
|
|
+ outputRelay[0].relay_event.bits.Gun2_Parallel_N = NO;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // only one relay board
|
|
|
// 平均充 - 不搭
|
|
|
if (regRelay[0].relay_event.bits.Gun1_Parallel_N == YES)
|
|
|
outputRelay[0].relay_event.bits.Gun1_Parallel_N = NO;
|
|
|
if (regRelay[0].relay_event.bits.Gun2_Parallel_N == YES)
|
|
|
outputRelay[0].relay_event.bits.Gun2_Parallel_N = NO;
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- if(ShmChargerInfo->Control.SysCtrl.bits.SecondRelayBoardEnable)
|
|
|
- {
|
|
|
- // two relay board
|
|
|
+ if(ShmChargerInfo->Control.SysCtrl.bits.SecondRelayBoardEnable)
|
|
|
+ {
|
|
|
+ // two relay board
|
|
|
// 最大充 - 搭上橋接
|
|
|
+#if 0
|
|
|
if (regRelay[0].relay_event.bits.Gun1_Parallel_N == NO)
|
|
|
outputRelay[0].relay_event.bits.Gun1_Parallel_N = YES;
|
|
|
if (regRelay[0].relay_event.bits.Gun1_Parallel_P == NO)
|
|
@@ -1334,16 +1375,22 @@ void SetParalleRelayStatus()
|
|
|
outputRelay[1].relay_event.bits.Gun1_Parallel_N = YES;
|
|
|
if (regRelay[1].relay_event.bits.Gun1_Parallel_P == NO)
|
|
|
outputRelay[1].relay_event.bits.Gun1_Parallel_P = YES;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- // only one relay board
|
|
|
+#endif
|
|
|
+ // gun 3 & gun 4 parallel relay enable
|
|
|
+ if (regRelay[0].relay_event.bits.Gun2_Parallel_N == NO)
|
|
|
+ outputRelay[0].relay_event.bits.Gun2_Parallel_N = YES;
|
|
|
+ if (regRelay[0].relay_event.bits.Gun2_Parallel_P == NO)
|
|
|
+ outputRelay[0].relay_event.bits.Gun2_Parallel_P = YES;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // only one relay board
|
|
|
// 最大充 - 搭上橋接
|
|
|
if (regRelay[0].relay_event.bits.Gun1_Parallel_N == NO)
|
|
|
outputRelay[0].relay_event.bits.Gun1_Parallel_N = YES;
|
|
|
if (regRelay[0].relay_event.bits.Gun2_Parallel_N == NO)
|
|
|
outputRelay[0].relay_event.bits.Gun2_Parallel_N = YES;
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1354,7 +1401,8 @@ void SetParalleRelayStatus()
|
|
|
void SetAcContactorStatus(void)
|
|
|
{
|
|
|
if(ShmChargerInfo->Control.RelayCtrl.bits.AcContactor == YES &&
|
|
|
- ShmChargerInfo->Control.RelayCtrl.bits.AcContactorForceOff == NO)
|
|
|
+ ShmChargerInfo->Control.RelayCtrl.bits.AcContactorOffByPsu == NO &&
|
|
|
+ ShmChargerInfo->Control.RelayCtrl.bits.AcContactorOffByEmergency == NO)
|
|
|
{
|
|
|
outputRelay[0].relay_event.bits.AC_Contactor = YES;
|
|
|
}
|
|
@@ -1366,7 +1414,8 @@ void SetAcContactorStatus(void)
|
|
|
if(ShmChargerInfo->Control.SysCtrl.bits.SecondRelayBoardEnable)
|
|
|
{
|
|
|
if(ShmChargerInfo->Control.RelayCtrl.bits.AcContactor == YES &&
|
|
|
- ShmChargerInfo->Control.RelayCtrl.bits.AcContactorForceOff == NO)
|
|
|
+ ShmChargerInfo->Control.RelayCtrl.bits.AcContactorOffByPsu == NO &&
|
|
|
+ ShmChargerInfo->Control.RelayCtrl.bits.AcContactorOffByEmergency == NO)
|
|
|
{
|
|
|
outputRelay[1].relay_event.bits.AC_Contactor = YES;
|
|
|
}
|
|
@@ -2591,8 +2640,8 @@ int main(void)
|
|
|
memset(&outputRelay[0], 0x00, sizeof(Relay));
|
|
|
memset(&outputRelay[1], 0x00, sizeof(Relay));
|
|
|
|
|
|
- if(ShmChargerInfo->Control.SysCtrl.bits.RelayBoardDisable == false)
|
|
|
- {
|
|
|
+ if(ShmChargerInfo->Control.SysCtrl.bits.RelayBoardDisable == false)
|
|
|
+ {
|
|
|
if(Config_Relay_Output(Uart5Fd, Addr.DO360_RC1, &outputRelay[0]) != PASS)
|
|
|
PRINTF_FUNC("Config_Relay1_Output fail");
|
|
|
|
|
@@ -2601,9 +2650,9 @@ int main(void)
|
|
|
if(Config_Relay_Output(Uart5Fd, Addr.DO360_RC2, &outputRelay[1]) != PASS)
|
|
|
PRINTF_FUNC("Config_Relay2_Output fail");
|
|
|
}
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
- _RelaySelfTestOK = NO;
|
|
|
+ _RelaySelfTestOK = NO;
|
|
|
cur_led_color.Connect_1_Red = COLOR_MIN_LV;
|
|
|
cur_led_color.Connect_1_Green = COLOR_MIN_LV;
|
|
|
cur_led_color.Connect_1_Blue = COLOR_MIN_LV;
|