提交 245b1af3 作者: wysheng

完善测试协议;插枪交流接触器吸合,避免绝缘监测阶段无电压

上级 1dc50805
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
#include "Thd_Charge_B.h" #include "Thd_Charge_B.h"
StructDcModuleGroup DcModuleGroup[] = StructDcModuleGroup DcModuleGroup[4] ;/*=
{ {
{ {
2, 0, 2, 0,
...@@ -39,7 +39,7 @@ StructDcModuleGroup DcModuleGroup[] = ...@@ -39,7 +39,7 @@ StructDcModuleGroup DcModuleGroup[] =
}, },
Invalid, 0, 0, 0 Invalid, 0, 0, 0
}, },
}; };*/
static u8 DcModuleGroupSize = sizeof(DcModuleGroup) / sizeof(DcModuleGroup[0]); static u8 DcModuleGroupSize = sizeof(DcModuleGroup) / sizeof(DcModuleGroup[0]);
...@@ -245,7 +245,7 @@ void DcModuleManageProcess_SmartAllocation(void) ...@@ -245,7 +245,7 @@ void DcModuleManageProcess_SmartAllocation(void)
DcModuleManage_B.ValidNum = Count_B; DcModuleManage_B.ValidNum = Count_B;
if (0 == DcModuleManage_All.OnlineFlag) if (0 == DcModuleManage_All.OnlineFlag)
DcModuleCanInit(); ;//DcModuleCanInit();
} }
...@@ -286,7 +286,6 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -286,7 +286,6 @@ void DcModuleCtrlProcess_SmartAllocation(void)
{ {
if (status[i] != DcModuleGroup[i].status) if (status[i] != DcModuleGroup[i].status)
{ {
Temp = 1;
Volt = DcModuleAbility.MinVolt * 100; Volt = DcModuleAbility.MinVolt * 100;
Current = DcModuleAbility.MinCurrt * 100; Current = DcModuleAbility.MinCurrt * 100;
if (DcModuleGroup[i].status == Valid) //释放模块,模块关机 if (DcModuleGroup[i].status == Valid) //释放模块,模块关机
...@@ -305,6 +304,7 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -305,6 +304,7 @@ void DcModuleCtrlProcess_SmartAllocation(void)
//关机降流 //关机降流
Current = 0; Current = 0;
} }
Temp = 1;
} }
else if (status[i] == Hold_B) else if (status[i] == Hold_B)
{ {
...@@ -319,6 +319,12 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -319,6 +319,12 @@ void DcModuleCtrlProcess_SmartAllocation(void)
//关机降流 //关机降流
Current = 0; Current = 0;
} }
Temp = 1;
}
else
{
status[i] = DcModuleGroup[i].status;
continue;
} }
Cmd = 0xAA; //关机 Cmd = 0xAA; //关机
...@@ -330,13 +336,19 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -330,13 +336,19 @@ void DcModuleCtrlProcess_SmartAllocation(void)
if (i != 0) //升压 if (i != 0) //升压
{ {
Volt = DcModuleManage.SetVolt; Volt = DcModuleManage.SetVolt;
Temp = 1;
} }
else if (status[i] == Hold_B) else if (status[i] == Hold_B)
{ {
//处理模块0组被B枪占用 //处理模块0组被B枪占用
//GPIO_ResetBits(RELAY_K5K6_Port, RELAY_K5K6_Pin); //GPIO_ResetBits(RELAY_K5K6_Port, RELAY_K5K6_Pin);
}
}
else
{
status[i] = DcModuleGroup[i].status;
continue;
}
Cmd = 0x55; //开机 Cmd = 0x55; //开机
} }
else if (DcModuleGroup[i].status == Hold_B) else if (DcModuleGroup[i].status == Hold_B)
...@@ -345,13 +357,18 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -345,13 +357,18 @@ void DcModuleCtrlProcess_SmartAllocation(void)
if (i != 2) //升压 if (i != 2) //升压
{ {
Volt = DcModuleManage_B.SetVolt; Volt = DcModuleManage_B.SetVolt;
Temp = 1;
} }
else if (status[i] == Hold_A) else if (status[i] == Hold_A)
{ {
//处理模块组 2 被A枪占用 //处理模块组 2 被A枪占用
//GPIO_ResetBits(RELAY_K5K6_Port, RELAY_K5K6_Pin); //GPIO_ResetBits(RELAY_K5K6_Port, RELAY_K5K6_Pin);
} }
else
{
status[i] = DcModuleGroup[i].status;
continue;
}
Cmd = 0x55; //开机 Cmd = 0x55; //开机
} }
else else
...@@ -448,7 +465,6 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -448,7 +465,6 @@ void DcModuleCtrlProcess_SmartAllocation(void)
{ {
if (status1[i] != DcModuleGroup[i].status) if (status1[i] != DcModuleGroup[i].status)
{ {
Temp = 1;
if (DcModuleGroup[i].status == Valid) if (DcModuleGroup[i].status == Valid)
{ {
...@@ -543,10 +559,7 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -543,10 +559,7 @@ void DcModuleCtrlProcess_SmartAllocation(void)
} }
if (Temp) /*if (LastFlag_A != DcModuleCtrl.CtrlFlag)
return;
if (LastFlag_A != DcModuleCtrl.CtrlFlag)
{ {
LastFlag_A = DcModuleCtrl.CtrlFlag; LastFlag_A = DcModuleCtrl.CtrlFlag;
Temp++; Temp++;
...@@ -565,7 +578,7 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -565,7 +578,7 @@ void DcModuleCtrlProcess_SmartAllocation(void)
} }
if (0 == Temp) if (0 == Temp)
return; return;*/
if (DcModuleCtrl.CtrlFlag) if (DcModuleCtrl.CtrlFlag)
{ {
...@@ -730,12 +743,13 @@ void SendDataToDcModule_Incre(u8 group_index, u8 cmd, u32 volt, u32 current) ...@@ -730,12 +743,13 @@ void SendDataToDcModule_Incre(u8 group_index, u8 cmd, u32 volt, u32 current)
{ {
addr = DcModuleGroup[group_index].modules[j].addr; addr = DcModuleGroup[group_index].modules[j].addr;
DcModuleGroup[group_index].modules[j].cmd = cmd; DcModuleGroup[group_index].modules[j].cmd = cmd;
DcModuleGroup[group_index].modules[j].VoltageSet = volt;
DcModuleGroup[group_index].modules[j].CurrentSet = current;
DataSend.Id = 0x1307C080 + addr; DataSend.Id = 0x1307C080 + addr;
DataSend.Len = 8; DataSend.Len = 8;
DataSend.Data[0] = 0x00; DataSend.Data[0] = 0x00;
DataSend.Data[1] = 0x00; DataSend.Data[1] = 0x00;
if(current != 0) //if(current != 0)
{ {
Temp = current; Temp = current;
DataSend.Data[2] = (u8) (Temp >> 8); DataSend.Data[2] = (u8) (Temp >> 8);
...@@ -1107,3 +1121,37 @@ void DcModuleSetGroupNum(void) //中兴模块分组设置 ...@@ -1107,3 +1121,37 @@ void DcModuleSetGroupNum(void) //中兴模块分组设置
} }
} }
void SendDataToDcModule_A(EnumSwitchStatus Set, u16 Volt, u16 Currt)
{
u8 cmd = 0;
if (eSwSta_Off == Set)
{
cmd = 0xAA;//机
}
else
{
cmd = 0x55;//机
}
DcModuleSet(Set,Volt,Currt);
Currt = 2;
SendDataToDcModule(0,cmd,Volt*100,Currt*100);
}
void SendDataToDcModule_B(EnumSwitchStatus Set, u16 Volt, u16 Currt)
{
u8 cmd = 0;
if (eSwSta_Off == Set)
{
cmd = 0xAA;//机
}
else
{
cmd = 0x55;//机
}
DcModuleSet_B(Set,Volt,Currt);
Currt = 2;
SendDataToDcModule(2,cmd,Volt*100,Currt*100);
}
...@@ -19,6 +19,8 @@ typedef struct ...@@ -19,6 +19,8 @@ typedef struct
u8 cmd; u8 cmd;
u32 Voltage; u32 Voltage;
u32 Current; u32 Current;
u32 VoltageSet;
u32 CurrentSet;
}StructDcModule; }StructDcModule;
typedef struct typedef struct
...@@ -46,6 +48,9 @@ extern StructDcModuleGroup DcModuleGroup[]; ...@@ -46,6 +48,9 @@ extern StructDcModuleGroup DcModuleGroup[];
extern void DcModuleGroupDateInit(void); extern void DcModuleGroupDateInit(void);
void SendDataToDcModule_A(EnumSwitchStatus Set, u16 Volt, u16 Currt);
void SendDataToDcModule_B(EnumSwitchStatus Set, u16 Volt, u16 Currt);
#endif /*__DRV_SMARTALLOCATION_H__*/ #endif /*__DRV_SMARTALLOCATION_H__*/
...@@ -133,7 +133,7 @@ void ChgProChgBreak(StructChargeCtrl *pChargeCtrl) ...@@ -133,7 +133,7 @@ void ChgProChgBreak(StructChargeCtrl *pChargeCtrl)
while(1) while(1)
{ {
if((0 != CST_SendTick) && ((GetSystemTick() - CST_SendTick) > 10)) if((0== CemMsg.Cem.Value.Bst)&&(0 != CST_SendTick) && ((GetSystemTick() - CST_SendTick) > 7))
{ {
CST_Send(&CstMsg); CST_Send(&CstMsg);
CST_SendTick = GetSystemTick(); CST_SendTick = GetSystemTick();
......
...@@ -45,7 +45,10 @@ void ChgProChgIdle(StructChargeCtrl *pChargeCtrl) ...@@ -45,7 +45,10 @@ void ChgProChgIdle(StructChargeCtrl *pChargeCtrl)
CcStatusChkTick = GetSystemTick(); CcStatusChkTick = GetSystemTick();
} }
else else
{
CcStatusChkTick = 0; CcStatusChkTick = 0;
CemMsg.Cem.Mult = 0;
}
if((0 != CcStatusChkTick) && ((GetSystemTick() - CcStatusChkTick) > 1500)) if((0 != CcStatusChkTick) && ((GetSystemTick() - CcStatusChkTick) > 1500))
{ {
...@@ -55,6 +58,7 @@ void ChgProChgIdle(StructChargeCtrl *pChargeCtrl) ...@@ -55,6 +58,7 @@ void ChgProChgIdle(StructChargeCtrl *pChargeCtrl)
pChargeCtrl->CurProcess = eChgPro_ShakeHand; pChargeCtrl->CurProcess = eChgPro_ShakeHand;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
ACContactorSet(eSwSta_On);
} }
if( if(
(0 != PillarError.Value.Emergency) (0 != PillarError.Value.Emergency)
......
...@@ -56,10 +56,10 @@ void ChgProChgStop(StructChargeCtrl *pChargeCtrl) ...@@ -56,10 +56,10 @@ void ChgProChgStop(StructChargeCtrl *pChargeCtrl)
while(1) while(1)
{ {
if((0 != CST_SendTick) && ((GetSystemTick() - CST_SendTick) > 10)) if((0== CemMsg.Cem.Value.Bst)&&(0 != CST_SendTick) && ((GetSystemTick() - CST_SendTick) > 7))
{ {
CST_Send(&CstMsg);
CST_SendTick = GetSystemTick(); CST_SendTick = GetSystemTick();
CST_Send(&CstMsg);
} }
if((0 != CSD_SendTick) && ((GetSystemTick() - CSD_SendTick) > 250))//时间到 if((0 != CSD_SendTick) && ((GetSystemTick() - CSD_SendTick) > 250))//时间到
......
...@@ -26,7 +26,7 @@ void ChgProCommBeak(StructChargeCtrl *pChargeCtrl) ...@@ -26,7 +26,7 @@ void ChgProCommBeak(StructChargeCtrl *pChargeCtrl)
} }
CommErrorCount++; CommErrorCount++;
if(CommErrorCount > 2) if(CommErrorCount > 3)
{ {
CstMsg.StopReason.Value.Truble = 1;//故障停止 CstMsg.StopReason.Value.Truble = 1;//故障停止
CstMsg.StopTruble.Value.Other = 1;//其他故障 通信超时超过三次 CstMsg.StopTruble.Value.Other = 1;//其他故障 通信超时超过三次
......
...@@ -46,7 +46,7 @@ void ChgProCommError(StructChargeCtrl *pChargeCtrl) ...@@ -46,7 +46,7 @@ void ChgProCommError(StructChargeCtrl *pChargeCtrl)
while(1) while(1)
{ {
if((0 != CST_SendTick) && ((GetSystemTick() - CST_SendTick) > 10)) if((0== CemMsg.Cem.Value.Bst)&&(0 != CST_SendTick) && ((GetSystemTick() - CST_SendTick) > 7))
{ {
CST_Send(&CstMsg); CST_Send(&CstMsg);
CST_SendTick = GetSystemTick(); CST_SendTick = GetSystemTick();
......
...@@ -115,7 +115,7 @@ void ImdProcess(EnumImdChkStep *pImdChckStep) ...@@ -115,7 +115,7 @@ void ImdProcess(EnumImdChkStep *pImdChckStep)
else else
Tmep = DcModuleAbility.MinVolt; Tmep = DcModuleAbility.MinVolt;
DcModuleSet(eSwSta_On, Tmep, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_On, Tmep, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
*pImdChckStep = eImdStep_DcModOut; *pImdChckStep = eImdStep_DcModOut;
ImdTimeout = 0; ImdTimeout = 0;
break; break;
...@@ -169,7 +169,7 @@ void ImdProcess(EnumImdChkStep *pImdChckStep) ...@@ -169,7 +169,7 @@ void ImdProcess(EnumImdChkStep *pImdChckStep)
ChargeError.Value.IsolateWarn = 1;//绝缘警告 ChargeError.Value.IsolateWarn = 1;//绝缘警告
ChargeError.Value.IsolateError = 0; ChargeError.Value.IsolateError = 0;
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);//关直流模块输出 SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);//关直流模块输出
osDelay(100); osDelay(100);
//DrainResistSet(eSwSta_On); //DrainResistSet(eSwSta_On);
ImdCheckSet(eSwSta_Off); ImdCheckSet(eSwSta_Off);
...@@ -190,7 +190,7 @@ void ImdProcess(EnumImdChkStep *pImdChckStep) ...@@ -190,7 +190,7 @@ void ImdProcess(EnumImdChkStep *pImdChckStep)
{ {
ChargeError.Value.IsolateWarn = 0;//绝缘警告 ChargeError.Value.IsolateWarn = 0;//绝缘警告
ChargeError.Value.IsolateError = 0;//绝缘故障 ChargeError.Value.IsolateError = 0;//绝缘故障
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);//关直流模块输出 SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);//关直流模块输出
osDelay(100); osDelay(100);
//DrainResistSet(eSwSta_On); //DrainResistSet(eSwSta_On);
ImdCheckSet(eSwSta_Off); ImdCheckSet(eSwSta_Off);
...@@ -201,7 +201,7 @@ void ImdProcess(EnumImdChkStep *pImdChckStep) ...@@ -201,7 +201,7 @@ void ImdProcess(EnumImdChkStep *pImdChckStep)
{ {
ChargeError.Value.IsolateWarn = 1;//绝缘警告 ChargeError.Value.IsolateWarn = 1;//绝缘警告
ChargeError.Value.IsolateError = 0;//绝缘故障 ChargeError.Value.IsolateError = 0;//绝缘故障
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);//关直流模块输出 SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);//关直流模块输出
osDelay(100); osDelay(100);
//DrainResistSet(eSwSta_On); //DrainResistSet(eSwSta_On);
ImdCheckSet(eSwSta_Off); ImdCheckSet(eSwSta_Off);
...@@ -212,7 +212,7 @@ void ImdProcess(EnumImdChkStep *pImdChckStep) ...@@ -212,7 +212,7 @@ void ImdProcess(EnumImdChkStep *pImdChckStep)
{ {
ChargeError.Value.IsolateWarn = 0;//绝缘警告 ChargeError.Value.IsolateWarn = 0;//绝缘警告
ChargeError.Value.IsolateError = 1;//绝缘故障 ChargeError.Value.IsolateError = 1;//绝缘故障
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);//关直流模块输出 SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);//关直流模块输出
osDelay(100); osDelay(100);
//DrainResistSet(eSwSta_On); //DrainResistSet(eSwSta_On);
ImdCheckSet(eSwSta_Off); ImdCheckSet(eSwSta_Off);
...@@ -222,7 +222,7 @@ void ImdProcess(EnumImdChkStep *pImdChckStep) ...@@ -222,7 +222,7 @@ void ImdProcess(EnumImdChkStep *pImdChckStep)
} }
break; break;
case eImdStep_Bleeder: case eImdStep_Bleeder:
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);//关直流模块输出 SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);//关直流模块输出
DcOutSet(eSwSta_Off); DcOutSet(eSwSta_Off);
//DrainResistSet(eSwSta_On); //DrainResistSet(eSwSta_On);
ImdWorkSet(eSwSta_Off); ImdWorkSet(eSwSta_Off);
...@@ -245,7 +245,7 @@ void ImdProcess(EnumImdChkStep *pImdChckStep) ...@@ -245,7 +245,7 @@ void ImdProcess(EnumImdChkStep *pImdChckStep)
} }
break; break;
case eImdStep_Stop: case eImdStep_Stop:
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);//关直流模块输出 SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);//关直流模块输出
DcOutSet(eSwSta_Off); DcOutSet(eSwSta_Off);
ImdWorkSet(eSwSta_Off); ImdWorkSet(eSwSta_Off);
ImdCheckSet(eSwSta_Off); ImdCheckSet(eSwSta_Off);
...@@ -347,7 +347,7 @@ void ChgProImdCheck(StructChargeCtrl *pChargeCtrl) ...@@ -347,7 +347,7 @@ void ChgProImdCheck(StructChargeCtrl *pChargeCtrl)
CcStatusChkTick = 0; CcStatusChkTick = 0;
if((0 != CcStatusChkTick) && ((GetSystemTick() - CcStatusChkTick) > CC_CheckTick * 2)) if((0 != CcStatusChkTick) && ((GetSystemTick() - CcStatusChkTick) > CC_CheckTick * 2))
{ {
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
DcOutSet(eSwSta_Off); DcOutSet(eSwSta_Off);
CcStatusChkTick = 0; CcStatusChkTick = 0;
ChargeStopType = eChgStop_Imd_CcOpen; ChargeStopType = eChgStop_Imd_CcOpen;
...@@ -356,7 +356,7 @@ void ChgProImdCheck(StructChargeCtrl *pChargeCtrl) ...@@ -356,7 +356,7 @@ void ChgProImdCheck(StructChargeCtrl *pChargeCtrl)
} }
if(0 != PillarError.Value.Emergency) if(0 != PillarError.Value.Emergency)
{ {
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
DcOutSet(eSwSta_Off); DcOutSet(eSwSta_Off);
ChargeStopType = eChgStop_Imd_EmerClose; ChargeStopType = eChgStop_Imd_EmerClose;
pChargeCtrl->CurProcess = eChgPro_ChgBreak; pChargeCtrl->CurProcess = eChgPro_ChgBreak;
...@@ -364,7 +364,7 @@ void ChgProImdCheck(StructChargeCtrl *pChargeCtrl) ...@@ -364,7 +364,7 @@ void ChgProImdCheck(StructChargeCtrl *pChargeCtrl)
} }
if(0 != PillarError.Value.Door) if(0 != PillarError.Value.Door)
{ {
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
DcOutSet(eSwSta_Off); DcOutSet(eSwSta_Off);
ChargeStopType = eChgStop_Imd_DoorOpen; ChargeStopType = eChgStop_Imd_DoorOpen;
pChargeCtrl->CurProcess = eChgPro_ChgBreak; pChargeCtrl->CurProcess = eChgPro_ChgBreak;
...@@ -372,7 +372,7 @@ void ChgProImdCheck(StructChargeCtrl *pChargeCtrl) ...@@ -372,7 +372,7 @@ void ChgProImdCheck(StructChargeCtrl *pChargeCtrl)
} }
if(0 != PillarError.Value.Contactor) if(0 != PillarError.Value.Contactor)
{ {
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
DcOutSet(eSwSta_Off); DcOutSet(eSwSta_Off);
ChargeStopType = eChgStop_Imd_Contactor; ChargeStopType = eChgStop_Imd_Contactor;
pChargeCtrl->CurProcess = eChgPro_ChgBreak; pChargeCtrl->CurProcess = eChgPro_ChgBreak;
...@@ -380,7 +380,7 @@ void ChgProImdCheck(StructChargeCtrl *pChargeCtrl) ...@@ -380,7 +380,7 @@ void ChgProImdCheck(StructChargeCtrl *pChargeCtrl)
} }
if(0 != PillarError.Value.UniContactor) if(0 != PillarError.Value.UniContactor)
{ {
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
DcOutSet(eSwSta_Off); DcOutSet(eSwSta_Off);
ChargeStopType = eChgStop_Imd_Contactor; ChargeStopType = eChgStop_Imd_Contactor;
pChargeCtrl->CurProcess = eChgPro_ChgBreak; pChargeCtrl->CurProcess = eChgPro_ChgBreak;
...@@ -388,7 +388,7 @@ void ChgProImdCheck(StructChargeCtrl *pChargeCtrl) ...@@ -388,7 +388,7 @@ void ChgProImdCheck(StructChargeCtrl *pChargeCtrl)
} }
if(0 != PillarError.Value.InVolt) if(0 != PillarError.Value.InVolt)
{ {
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
DcOutSet(eSwSta_Off); DcOutSet(eSwSta_Off);
ChargeStopType = eChgStop_Imd_InVolt; ChargeStopType = eChgStop_Imd_InVolt;
pChargeCtrl->CurProcess = eChgPro_ChgBreak; pChargeCtrl->CurProcess = eChgPro_ChgBreak;
...@@ -396,7 +396,7 @@ void ChgProImdCheck(StructChargeCtrl *pChargeCtrl) ...@@ -396,7 +396,7 @@ void ChgProImdCheck(StructChargeCtrl *pChargeCtrl)
} }
if(0 != PillarError.Value.NoDcmod) if(0 != PillarError.Value.NoDcmod)
{ {
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
DcOutSet(eSwSta_Off); DcOutSet(eSwSta_Off);
ChargeStopType = eChgStop_Imd_NoDcmod; ChargeStopType = eChgStop_Imd_NoDcmod;
pChargeCtrl->CurProcess = eChgPro_ChgBreak; pChargeCtrl->CurProcess = eChgPro_ChgBreak;
...@@ -404,7 +404,7 @@ void ChgProImdCheck(StructChargeCtrl *pChargeCtrl) ...@@ -404,7 +404,7 @@ void ChgProImdCheck(StructChargeCtrl *pChargeCtrl)
} }
if(0 != PillarError.Value.Meter) if(0 != PillarError.Value.Meter)
{ {
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
DcOutSet(eSwSta_Off); DcOutSet(eSwSta_Off);
ChargeStopType = eChgStop_Imd_Meter; ChargeStopType = eChgStop_Imd_Meter;
pChargeCtrl->CurProcess = eChgPro_ChgBreak; pChargeCtrl->CurProcess = eChgPro_ChgBreak;
......
...@@ -40,7 +40,7 @@ void ChgProWaitBmsReady(StructChargeCtrl *pChargeCtrl) ...@@ -40,7 +40,7 @@ void ChgProWaitBmsReady(StructChargeCtrl *pChargeCtrl)
BroMsg.RecvTick = GetSystemTick(); BroMsg.RecvTick = GetSystemTick();
BRO_AA_RecvTick = GetSystemTick(); BRO_AA_RecvTick = GetSystemTick();
CemMsg.Cem.Mult =0;
while(1) while(1)
{ {
if((GetSystemTick() - CML_SendTick) > 250) if((GetSystemTick() - CML_SendTick) > 250)
...@@ -51,7 +51,7 @@ void ChgProWaitBmsReady(StructChargeCtrl *pChargeCtrl) ...@@ -51,7 +51,7 @@ void ChgProWaitBmsReady(StructChargeCtrl *pChargeCtrl)
CML_Send(DcModuleAbility.MaxVolt, DcModuleAbility.MinVolt, 4000 - (DcModuleAbility.MaxCurrt*DcModuleManage.ValidNum), 4000 - DcModuleAbility.MinCurrt); CML_Send(DcModuleAbility.MaxVolt, DcModuleAbility.MinVolt, 4000 - (DcModuleAbility.MaxCurrt*DcModuleManage.ValidNum), 4000 - DcModuleAbility.MinCurrt);
CML_SendTick = GetSystemTick(); CML_SendTick = GetSystemTick();
} }
if((GetSystemTick() - CTS_SendTick) > 500) if((GetSystemTick() - CTS_SendTick) > 480)
{ {
CTS_Send(); CTS_Send();
CTS_SendTick = GetSystemTick(); CTS_SendTick = GetSystemTick();
......
...@@ -38,7 +38,7 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl) ...@@ -38,7 +38,7 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl)
u8 CroStarus = 0x00; u8 CroStarus = 0x00;
u32 CcStatusChkTick = 0; u32 CcStatusChkTick = 0;
u32 VoltReadyTick = 0; u32 VoltReadyTick = 0;
u32 Bro_00_Tick = 0;
BemMsg.Valid = 0; BemMsg.Valid = 0;
BmsCanInit(); BmsCanInit();
osDelay(20); osDelay(20);
...@@ -56,16 +56,16 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl) ...@@ -56,16 +56,16 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl)
CRO_SendTick = GetSystemTick(); CRO_SendTick = GetSystemTick();
if((BcpMsg.StartVolt >= DcModuleAbility.MinVolt) && (BcpMsg.StartVolt <= DcModuleAbility.MaxVolt)) if((BcpMsg.StartVolt >= DcModuleAbility.MinVolt) && (BcpMsg.StartVolt <= DcModuleAbility.MaxVolt))
DcModuleSet(eSwSta_On, BcpMsg.StartVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_On, BcpMsg.StartVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
else if(BcpMsg.StartVolt < DcModuleAbility.MinVolt) else if(BcpMsg.StartVolt < DcModuleAbility.MinVolt)
DcModuleSet(eSwSta_On, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_On, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
else else
{ {
CstMsg.StopReason.Value.Truble = 1; CstMsg.StopReason.Value.Truble = 1;
CstMsg.StopTruble.Value.Other = 1; CstMsg.StopTruble.Value.Other = 1;
CstMsg.StopFault.Value.Volt = 1; CstMsg.StopFault.Value.Volt = 1;
DcOutSet(eSwSta_Off); DcOutSet(eSwSta_Off);
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
ChargeStopType = eChgStop_PillarReady_BatVoltOverPillarMax; ChargeStopType = eChgStop_PillarReady_BatVoltOverPillarMax;
pChargeCtrl->CurProcess = eChgPro_ChgStop; pChargeCtrl->CurProcess = eChgPro_ChgStop;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
...@@ -81,6 +81,7 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl) ...@@ -81,6 +81,7 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl)
CRO_SendTick = GetSystemTick(); CRO_SendTick = GetSystemTick();
} }
ChgPgnRecv(&PgnRecv); ChgPgnRecv(&PgnRecv);
if((eChgVer_2011 != UserParam.ChgVer) && (eChgVer_2011 != ChgVer)) if((eChgVer_2011 != UserParam.ChgVer) && (eChgVer_2011 != ChgVer))
...@@ -94,7 +95,7 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl) ...@@ -94,7 +95,7 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl)
CstMsg.StopTruble.Value.Other = 1; CstMsg.StopTruble.Value.Other = 1;
CstMsg.StopFault.Value.Volt = 1; CstMsg.StopFault.Value.Volt = 1;
DcOutSet(eSwSta_Off); DcOutSet(eSwSta_Off);
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
ChargeStopType = eChgStop_PillarReady_BatVoltError; ChargeStopType = eChgStop_PillarReady_BatVoltError;
pChargeCtrl->CurProcess = eChgPro_ChgStop; pChargeCtrl->CurProcess = eChgPro_ChgStop;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
...@@ -107,7 +108,7 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl) ...@@ -107,7 +108,7 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl)
CstMsg.StopTruble.Value.Other = 1; CstMsg.StopTruble.Value.Other = 1;
CstMsg.StopFault.Value.Volt = 1; CstMsg.StopFault.Value.Volt = 1;
DcOutSet(eSwSta_Off); DcOutSet(eSwSta_Off);
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
ChargeStopType = eChgStop_PillarReady_BatVoltMismatchBcpVolt; ChargeStopType = eChgStop_PillarReady_BatVoltMismatchBcpVolt;
pChargeCtrl->CurProcess = eChgPro_ChgStop; pChargeCtrl->CurProcess = eChgPro_ChgStop;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
...@@ -122,9 +123,9 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl) ...@@ -122,9 +123,9 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl)
else else
{ {
if((GetBatVoltWaitPillarReady() >= DcModuleAbility.MinVolt) && (GetBatVoltWaitPillarReady() <= DcModuleAbility.MaxVolt)) if((GetBatVoltWaitPillarReady() >= DcModuleAbility.MinVolt) && (GetBatVoltWaitPillarReady() <= DcModuleAbility.MaxVolt))
DcModuleSet(eSwSta_On, GetBatVoltWaitPillarReady(), DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_On, GetBatVoltWaitPillarReady(), DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
else if(GetBatVoltWaitPillarReady() < DcModuleAbility.MinVolt) else if(GetBatVoltWaitPillarReady() < DcModuleAbility.MinVolt)
DcModuleSet(eSwSta_On, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_On, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
} }
} }
if((0 != VoltReadyTick) && ((GetSystemTick() - VoltReadyTick) > (MsgTimeout_60S))) if((0 != VoltReadyTick) && ((GetSystemTick() - VoltReadyTick) > (MsgTimeout_60S)))
...@@ -136,7 +137,7 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl) ...@@ -136,7 +137,7 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl)
CstMsg.StopTruble.Value.Other = 1; CstMsg.StopTruble.Value.Other = 1;
CstMsg.StopFault.Value.Volt = 1; CstMsg.StopFault.Value.Volt = 1;
DcOutSet(eSwSta_Off); DcOutSet(eSwSta_Off);
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
ChargeStopType = eChgStop_Conf_ChgMaxVoltLessPillarMinVolt; ChargeStopType = eChgStop_Conf_ChgMaxVoltLessPillarMinVolt;
pChargeCtrl->CurProcess = eChgPro_ChgStop; pChargeCtrl->CurProcess = eChgPro_ChgStop;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
...@@ -176,7 +177,7 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl) ...@@ -176,7 +177,7 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl)
if((GetSystemTick() - BroMsg.RecvTick) > MsgTimeout_5S) if((GetSystemTick() - BroMsg.RecvTick) > MsgTimeout_5S)
{ {
CemMsg.Cem.Value.Bro = 1; CemMsg.Cem.Value.Bro = 1;
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
pChargeCtrl->CurProcess = eChgPro_CommBreak; pChargeCtrl->CurProcess = eChgPro_CommBreak;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
...@@ -185,14 +186,34 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl) ...@@ -185,14 +186,34 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl)
if(0 != BemMsg.Valid) if(0 != BemMsg.Valid)
{ {
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
pChargeCtrl->CurProcess = eChgPro_CommBreak; pChargeCtrl->CurProcess = eChgPro_CommBreak;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
#if 1
if(0x00== BroMsg.Status)
Bro_00_Tick =GetSystemTick();
else
Bro_00_Tick =GetSystemTick();
if( GetSystemTick() -Bro_00_Tick >= MsgTimeout_1S)
{
/*VoltReadyTick = 0;
pChargeCtrl->CurProcess = eChgPro_ChgStart;
pChargeCtrl->Param = 0;*/
//CstMsg.StopReason.Value.Truble = 1;
// CstMsg.StopTruble.Value.Other = 1;
// CstMsg.StopFault.Value.Volt = 1;
CemMsg.Cem.Mult = 0;
DcOutSet(eSwSta_Off);
SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
ChargeStopType = eChgStop_Conf_ChgMaxVoltLessPillarMinVolt;
pChargeCtrl->CurProcess = eChgPro_CommError;
pChargeCtrl->Param = 0;
}
#endif
if(0 == TCUCurChgRecd.TCUChargeEnable) if(0 == TCUCurChgRecd.TCUChargeEnable)
{//外部控制结束充电 {//外部控制结束充电
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
ChargeStopType = eChgStop_PillarReady_UserCancel; ChargeStopType = eChgStop_PillarReady_UserCancel;
pChargeCtrl->CurProcess = eChgPro_ChgStop; pChargeCtrl->CurProcess = eChgPro_ChgStop;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
...@@ -207,7 +228,7 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl) ...@@ -207,7 +228,7 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl)
CcStatusChkTick = 0; CcStatusChkTick = 0;
if((0 != CcStatusChkTick) && ((GetSystemTick() - CcStatusChkTick) > CC_CheckTick * 2)) if((0 != CcStatusChkTick) && ((GetSystemTick() - CcStatusChkTick) > CC_CheckTick * 2))
{ {
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
CcStatusChkTick = 0; CcStatusChkTick = 0;
ChargeStopType = eChgStop_PillarReady_CcOpen; ChargeStopType = eChgStop_PillarReady_CcOpen;
pChargeCtrl->CurProcess = eChgPro_ChgBreak; pChargeCtrl->CurProcess = eChgPro_ChgBreak;
...@@ -215,49 +236,49 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl) ...@@ -215,49 +236,49 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl)
} }
if(0 != PillarError.Value.Emergency) if(0 != PillarError.Value.Emergency)
{ {
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
ChargeStopType = eChgStop_PillarReady_EmerClose; ChargeStopType = eChgStop_PillarReady_EmerClose;
pChargeCtrl->CurProcess = eChgPro_ChgBreak; pChargeCtrl->CurProcess = eChgPro_ChgBreak;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
if(0 != PillarError.Value.Door) if(0 != PillarError.Value.Door)
{ {
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
ChargeStopType = eChgStop_PillarReady_DoorOpen; ChargeStopType = eChgStop_PillarReady_DoorOpen;
pChargeCtrl->CurProcess = eChgPro_ChgBreak; pChargeCtrl->CurProcess = eChgPro_ChgBreak;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
if(0 != PillarError.Value.Contactor) if(0 != PillarError.Value.Contactor)
{ {
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
ChargeStopType = eChgStop_PillarReady_Contactor; ChargeStopType = eChgStop_PillarReady_Contactor;
pChargeCtrl->CurProcess = eChgPro_ChgBreak; pChargeCtrl->CurProcess = eChgPro_ChgBreak;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
if(0 != PillarError.Value.UniContactor) if(0 != PillarError.Value.UniContactor)
{ {
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
ChargeStopType = eChgStop_PillarReady_Contactor; ChargeStopType = eChgStop_PillarReady_Contactor;
pChargeCtrl->CurProcess = eChgPro_ChgBreak; pChargeCtrl->CurProcess = eChgPro_ChgBreak;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
if(0 != PillarError.Value.InVolt) if(0 != PillarError.Value.InVolt)
{ {
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
ChargeStopType = eChgStop_PillarReady_InVolt; ChargeStopType = eChgStop_PillarReady_InVolt;
pChargeCtrl->CurProcess = eChgPro_ChgBreak; pChargeCtrl->CurProcess = eChgPro_ChgBreak;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
if(0 != PillarError.Value.NoDcmod) if(0 != PillarError.Value.NoDcmod)
{ {
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
ChargeStopType = eChgStop_PillarReady_NoDcmod; ChargeStopType = eChgStop_PillarReady_NoDcmod;
pChargeCtrl->CurProcess = eChgPro_ChgBreak; pChargeCtrl->CurProcess = eChgPro_ChgBreak;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
if(0 != PillarError.Value.Meter) if(0 != PillarError.Value.Meter)
{ {
DcModuleSet(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum); SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
ChargeStopType = eChgStop_PillarReady_Meter; ChargeStopType = eChgStop_PillarReady_Meter;
pChargeCtrl->CurProcess = eChgPro_ChgBreak; pChargeCtrl->CurProcess = eChgPro_ChgBreak;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
......
...@@ -48,7 +48,10 @@ void ChgProChgIdle_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -48,7 +48,10 @@ void ChgProChgIdle_B(StructChargeCtrl_B *pChargeCtrl)
CcStatusChkTick = GetSystemTick(); CcStatusChkTick = GetSystemTick();
} }
else else
{
CcStatusChkTick = 0; CcStatusChkTick = 0;
CemMsg_B.Cem.Mult = 0;
}
if((0 != CcStatusChkTick) && ((GetSystemTick() - CcStatusChkTick) > 1500)) if((0 != CcStatusChkTick) && ((GetSystemTick() - CcStatusChkTick) > 1500))
{ {
...@@ -58,6 +61,8 @@ void ChgProChgIdle_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -58,6 +61,8 @@ void ChgProChgIdle_B(StructChargeCtrl_B *pChargeCtrl)
pChargeCtrl->CurProcess = eChgPro_B_ShakeHand; pChargeCtrl->CurProcess = eChgPro_B_ShakeHand;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
ACContactorSet(eSwSta_On);
} }
if( if(
......
...@@ -56,10 +56,10 @@ void ChgProChgStop_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -56,10 +56,10 @@ void ChgProChgStop_B(StructChargeCtrl_B *pChargeCtrl)
while(1) while(1)
{ {
if((0 != CST_SendTick) && ((GetSystemTick() - CST_SendTick) > 10)) if((0 != CST_SendTick) && ((GetSystemTick() - CST_SendTick) > 7))
{ {
CST_Send_B(&CstMsg_B);
CST_SendTick = GetSystemTick(); CST_SendTick = GetSystemTick();
CST_Send_B(&CstMsg_B);
} }
if((0 != CSD_SendTick) && ((GetSystemTick() - CSD_SendTick) > 250))//时间到 if((0 != CSD_SendTick) && ((GetSystemTick() - CSD_SendTick) > 250))//时间到
......
...@@ -26,7 +26,7 @@ void ChgProCommBeak_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -26,7 +26,7 @@ void ChgProCommBeak_B(StructChargeCtrl_B *pChargeCtrl)
} }
CommErrorCount_B++; CommErrorCount_B++;
if(CommErrorCount_B > 2) if(CommErrorCount_B > 3)
{ {
CstMsg_B.StopReason.Value.Truble = 1;//故障停止 CstMsg_B.StopReason.Value.Truble = 1;//故障停止
CstMsg_B.StopTruble.Value.Other = 1;//其他故障 通信超时超过三次 CstMsg_B.StopTruble.Value.Other = 1;//其他故障 通信超时超过三次
......
...@@ -115,7 +115,7 @@ void ImdProcess_B(EnumImdChkStep *pImdChckStep) ...@@ -115,7 +115,7 @@ void ImdProcess_B(EnumImdChkStep *pImdChckStep)
else else
Tmep = DcModuleAbility.MinVolt; Tmep = DcModuleAbility.MinVolt;
DcModuleSet_B(eSwSta_On, Tmep, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_On, Tmep, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
*pImdChckStep = eImdStep_DcModOut; *pImdChckStep = eImdStep_DcModOut;
ImdTimeout = 0; ImdTimeout = 0;
break; break;
...@@ -169,7 +169,7 @@ void ImdProcess_B(EnumImdChkStep *pImdChckStep) ...@@ -169,7 +169,7 @@ void ImdProcess_B(EnumImdChkStep *pImdChckStep)
ChargeError_B.Value.IsolateWarn = 1;//绝缘警告 ChargeError_B.Value.IsolateWarn = 1;//绝缘警告
ChargeError_B.Value.IsolateError = 0; ChargeError_B.Value.IsolateError = 0;
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);//关直流模块输出 SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);//关直流模块输出
osDelay(100); osDelay(100);
//DrainResistSet_B(eSwSta_On); //DrainResistSet_B(eSwSta_On);
ImdCheckSet_B(eSwSta_Off); ImdCheckSet_B(eSwSta_Off);
...@@ -190,7 +190,7 @@ void ImdProcess_B(EnumImdChkStep *pImdChckStep) ...@@ -190,7 +190,7 @@ void ImdProcess_B(EnumImdChkStep *pImdChckStep)
{ {
ChargeError_B.Value.IsolateWarn = 0;//绝缘警告 ChargeError_B.Value.IsolateWarn = 0;//绝缘警告
ChargeError_B.Value.IsolateError = 0;//绝缘故障 ChargeError_B.Value.IsolateError = 0;//绝缘故障
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);//关直流模块输出 SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);//关直流模块输出
osDelay(100); osDelay(100);
//DrainResistSet_B(eSwSta_On); //DrainResistSet_B(eSwSta_On);
ImdCheckSet_B(eSwSta_Off); ImdCheckSet_B(eSwSta_Off);
...@@ -201,7 +201,7 @@ void ImdProcess_B(EnumImdChkStep *pImdChckStep) ...@@ -201,7 +201,7 @@ void ImdProcess_B(EnumImdChkStep *pImdChckStep)
{ {
ChargeError_B.Value.IsolateWarn = 1;//绝缘警告 ChargeError_B.Value.IsolateWarn = 1;//绝缘警告
ChargeError_B.Value.IsolateError = 0;//绝缘故障 ChargeError_B.Value.IsolateError = 0;//绝缘故障
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);//关直流模块输出 SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);//关直流模块输出
osDelay(100); osDelay(100);
//DrainResistSet_B(eSwSta_On); //DrainResistSet_B(eSwSta_On);
ImdCheckSet_B(eSwSta_Off); ImdCheckSet_B(eSwSta_Off);
...@@ -212,7 +212,7 @@ void ImdProcess_B(EnumImdChkStep *pImdChckStep) ...@@ -212,7 +212,7 @@ void ImdProcess_B(EnumImdChkStep *pImdChckStep)
{ {
ChargeError_B.Value.IsolateWarn = 0;//绝缘警告 ChargeError_B.Value.IsolateWarn = 0;//绝缘警告
ChargeError_B.Value.IsolateError = 1;//绝缘故障 ChargeError_B.Value.IsolateError = 1;//绝缘故障
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);//关直流模块输出 SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);//关直流模块输出
osDelay(100); osDelay(100);
//DrainResistSet_B(eSwSta_On); //DrainResistSet_B(eSwSta_On);
ImdCheckSet_B(eSwSta_Off); ImdCheckSet_B(eSwSta_Off);
...@@ -222,7 +222,7 @@ void ImdProcess_B(EnumImdChkStep *pImdChckStep) ...@@ -222,7 +222,7 @@ void ImdProcess_B(EnumImdChkStep *pImdChckStep)
} }
break; break;
case eImdStep_Bleeder: case eImdStep_Bleeder:
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);//关直流模块输出 SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);//关直流模块输出
DcOutSet_B(eSwSta_Off); DcOutSet_B(eSwSta_Off);
//DrainResistSet_B(eSwSta_On); //DrainResistSet_B(eSwSta_On);
ImdWorkSet_B(eSwSta_Off); ImdWorkSet_B(eSwSta_Off);
...@@ -245,7 +245,7 @@ void ImdProcess_B(EnumImdChkStep *pImdChckStep) ...@@ -245,7 +245,7 @@ void ImdProcess_B(EnumImdChkStep *pImdChckStep)
} }
break; break;
case eImdStep_Stop: case eImdStep_Stop:
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);//关直流模块输出 SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);//关直流模块输出
DcOutSet_B(eSwSta_Off); DcOutSet_B(eSwSta_Off);
ImdWorkSet_B(eSwSta_Off); ImdWorkSet_B(eSwSta_Off);
ImdCheckSet_B(eSwSta_Off); ImdCheckSet_B(eSwSta_Off);
...@@ -347,7 +347,7 @@ void ChgProImdCheck_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -347,7 +347,7 @@ void ChgProImdCheck_B(StructChargeCtrl_B *pChargeCtrl)
CcStatusChkTick = 0; CcStatusChkTick = 0;
if((0 != CcStatusChkTick) && ((GetSystemTick() - CcStatusChkTick) > CC_CheckTick_B * 2)) if((0 != CcStatusChkTick) && ((GetSystemTick() - CcStatusChkTick) > CC_CheckTick_B * 2))
{ {
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
DcOutSet_B(eSwSta_Off); DcOutSet_B(eSwSta_Off);
CcStatusChkTick = 0; CcStatusChkTick = 0;
ChargeStopType_B = eChgStop_Imd_CcOpen; ChargeStopType_B = eChgStop_Imd_CcOpen;
...@@ -356,7 +356,7 @@ void ChgProImdCheck_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -356,7 +356,7 @@ void ChgProImdCheck_B(StructChargeCtrl_B *pChargeCtrl)
} }
if(0 != PillarError_B.Value.Emergency) if(0 != PillarError_B.Value.Emergency)
{ {
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
DcOutSet_B(eSwSta_Off); DcOutSet_B(eSwSta_Off);
ChargeStopType_B = eChgStop_Imd_EmerClose; ChargeStopType_B = eChgStop_Imd_EmerClose;
pChargeCtrl->CurProcess = eChgPro_B_ChgBreak; pChargeCtrl->CurProcess = eChgPro_B_ChgBreak;
...@@ -364,7 +364,7 @@ void ChgProImdCheck_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -364,7 +364,7 @@ void ChgProImdCheck_B(StructChargeCtrl_B *pChargeCtrl)
} }
if(0 != PillarError_B.Value.Door) if(0 != PillarError_B.Value.Door)
{ {
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
DcOutSet_B(eSwSta_Off); DcOutSet_B(eSwSta_Off);
ChargeStopType_B = eChgStop_Imd_DoorOpen; ChargeStopType_B = eChgStop_Imd_DoorOpen;
pChargeCtrl->CurProcess = eChgPro_B_ChgBreak; pChargeCtrl->CurProcess = eChgPro_B_ChgBreak;
...@@ -372,7 +372,7 @@ void ChgProImdCheck_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -372,7 +372,7 @@ void ChgProImdCheck_B(StructChargeCtrl_B *pChargeCtrl)
} }
if(0 != PillarError_B.Value.Contactor) if(0 != PillarError_B.Value.Contactor)
{ {
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
DcOutSet_B(eSwSta_Off); DcOutSet_B(eSwSta_Off);
ChargeStopType_B = eChgStop_Imd_Contactor; ChargeStopType_B = eChgStop_Imd_Contactor;
pChargeCtrl->CurProcess = eChgPro_B_ChgBreak; pChargeCtrl->CurProcess = eChgPro_B_ChgBreak;
...@@ -380,7 +380,7 @@ void ChgProImdCheck_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -380,7 +380,7 @@ void ChgProImdCheck_B(StructChargeCtrl_B *pChargeCtrl)
} }
if(0 != PillarError_B.Value.UniContactor) if(0 != PillarError_B.Value.UniContactor)
{ {
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
DcOutSet_B(eSwSta_Off); DcOutSet_B(eSwSta_Off);
ChargeStopType_B = eChgStop_Imd_Contactor; ChargeStopType_B = eChgStop_Imd_Contactor;
pChargeCtrl->CurProcess = eChgPro_B_ChgBreak; pChargeCtrl->CurProcess = eChgPro_B_ChgBreak;
...@@ -388,7 +388,7 @@ void ChgProImdCheck_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -388,7 +388,7 @@ void ChgProImdCheck_B(StructChargeCtrl_B *pChargeCtrl)
} }
if(0 != PillarError_B.Value.InVolt) if(0 != PillarError_B.Value.InVolt)
{ {
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
DcOutSet_B(eSwSta_Off); DcOutSet_B(eSwSta_Off);
ChargeStopType_B = eChgStop_Imd_InVolt; ChargeStopType_B = eChgStop_Imd_InVolt;
pChargeCtrl->CurProcess = eChgPro_B_ChgBreak; pChargeCtrl->CurProcess = eChgPro_B_ChgBreak;
...@@ -396,7 +396,7 @@ void ChgProImdCheck_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -396,7 +396,7 @@ void ChgProImdCheck_B(StructChargeCtrl_B *pChargeCtrl)
} }
if(0 != PillarError_B.Value.NoDcmod) if(0 != PillarError_B.Value.NoDcmod)
{ {
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
DcOutSet_B(eSwSta_Off); DcOutSet_B(eSwSta_Off);
ChargeStopType_B = eChgStop_Imd_NoDcmod; ChargeStopType_B = eChgStop_Imd_NoDcmod;
pChargeCtrl->CurProcess = eChgPro_B_ChgBreak; pChargeCtrl->CurProcess = eChgPro_B_ChgBreak;
...@@ -404,7 +404,7 @@ void ChgProImdCheck_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -404,7 +404,7 @@ void ChgProImdCheck_B(StructChargeCtrl_B *pChargeCtrl)
} }
if(0 != PillarError_B.Value.Meter) if(0 != PillarError_B.Value.Meter)
{ {
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
DcOutSet_B(eSwSta_Off); DcOutSet_B(eSwSta_Off);
ChargeStopType_B = eChgStop_Imd_Meter; ChargeStopType_B = eChgStop_Imd_Meter;
pChargeCtrl->CurProcess = eChgPro_B_ChgBreak; pChargeCtrl->CurProcess = eChgPro_B_ChgBreak;
......
...@@ -38,6 +38,7 @@ void ChgProWaitPillarReady_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -38,6 +38,7 @@ void ChgProWaitPillarReady_B(StructChargeCtrl_B *pChargeCtrl)
u8 CroStarus = 0x00; u8 CroStarus = 0x00;
u32 CcStatusChkTick = 0; u32 CcStatusChkTick = 0;
u32 VoltReadyTick = 0; u32 VoltReadyTick = 0;
u32 Bro_00_Tick_B = 0;
BemMsg_B.Valid = 0; BemMsg_B.Valid = 0;
BmsCanInit_B(); BmsCanInit_B();
...@@ -56,16 +57,16 @@ void ChgProWaitPillarReady_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -56,16 +57,16 @@ void ChgProWaitPillarReady_B(StructChargeCtrl_B *pChargeCtrl)
CRO_SendTick = GetSystemTick(); CRO_SendTick = GetSystemTick();
if((BcpMsg_B.StartVolt >= DcModuleAbility.MinVolt) && (BcpMsg_B.StartVolt <= DcModuleAbility.MaxVolt)) if((BcpMsg_B.StartVolt >= DcModuleAbility.MinVolt) && (BcpMsg_B.StartVolt <= DcModuleAbility.MaxVolt))
DcModuleSet_B(eSwSta_On, BcpMsg_B.StartVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_On, BcpMsg_B.StartVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
else if(BcpMsg_B.StartVolt < DcModuleAbility.MinVolt) else if(BcpMsg_B.StartVolt < DcModuleAbility.MinVolt)
DcModuleSet_B(eSwSta_On, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_On, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
else else
{ {
CstMsg_B.StopReason.Value.Truble = 1; CstMsg_B.StopReason.Value.Truble = 1;
CstMsg_B.StopTruble.Value.Other = 1; CstMsg_B.StopTruble.Value.Other = 1;
CstMsg_B.StopFault.Value.Volt = 1; CstMsg_B.StopFault.Value.Volt = 1;
DcOutSet_B(eSwSta_Off); DcOutSet_B(eSwSta_Off);
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
ChargeStopType_B = eChgStop_PillarReady_BatVoltOverPillarMax; ChargeStopType_B = eChgStop_PillarReady_BatVoltOverPillarMax;
pChargeCtrl->CurProcess = eChgPro_B_ChgStop; pChargeCtrl->CurProcess = eChgPro_B_ChgStop;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
...@@ -93,7 +94,7 @@ void ChgProWaitPillarReady_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -93,7 +94,7 @@ void ChgProWaitPillarReady_B(StructChargeCtrl_B *pChargeCtrl)
CstMsg_B.StopTruble.Value.Other = 1; CstMsg_B.StopTruble.Value.Other = 1;
CstMsg_B.StopFault.Value.Volt = 1; CstMsg_B.StopFault.Value.Volt = 1;
DcOutSet_B(eSwSta_Off); DcOutSet_B(eSwSta_Off);
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
ChargeStopType_B = eChgStop_PillarReady_BatVoltError; ChargeStopType_B = eChgStop_PillarReady_BatVoltError;
pChargeCtrl->CurProcess = eChgPro_B_ChgStop; pChargeCtrl->CurProcess = eChgPro_B_ChgStop;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
...@@ -106,7 +107,7 @@ void ChgProWaitPillarReady_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -106,7 +107,7 @@ void ChgProWaitPillarReady_B(StructChargeCtrl_B *pChargeCtrl)
CstMsg_B.StopTruble.Value.Other = 1; CstMsg_B.StopTruble.Value.Other = 1;
CstMsg_B.StopFault.Value.Volt = 1; CstMsg_B.StopFault.Value.Volt = 1;
DcOutSet_B(eSwSta_Off); DcOutSet_B(eSwSta_Off);
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
ChargeStopType_B = eChgStop_PillarReady_BatVoltMismatchBcpVolt; ChargeStopType_B = eChgStop_PillarReady_BatVoltMismatchBcpVolt;
pChargeCtrl->CurProcess = eChgPro_B_ChgStop; pChargeCtrl->CurProcess = eChgPro_B_ChgStop;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
...@@ -121,9 +122,9 @@ void ChgProWaitPillarReady_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -121,9 +122,9 @@ void ChgProWaitPillarReady_B(StructChargeCtrl_B *pChargeCtrl)
else else
{ {
if((GetBatVoltWaitPillarReady_B() >= DcModuleAbility.MinVolt) && (GetBatVoltWaitPillarReady_B() <= DcModuleAbility.MaxVolt)) if((GetBatVoltWaitPillarReady_B() >= DcModuleAbility.MinVolt) && (GetBatVoltWaitPillarReady_B() <= DcModuleAbility.MaxVolt))
DcModuleSet_B(eSwSta_On, GetBatVoltWaitPillarReady_B(), DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_On, GetBatVoltWaitPillarReady_B(), DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
else if(GetBatVoltWaitPillarReady_B() < DcModuleAbility.MinVolt) else if(GetBatVoltWaitPillarReady_B() < DcModuleAbility.MinVolt)
DcModuleSet_B(eSwSta_On, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_On, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
} }
} }
if((0 != VoltReadyTick) && ((GetSystemTick() - VoltReadyTick) > (MsgTimeout_B_60S))) if((0 != VoltReadyTick) && ((GetSystemTick() - VoltReadyTick) > (MsgTimeout_B_60S)))
...@@ -135,7 +136,7 @@ void ChgProWaitPillarReady_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -135,7 +136,7 @@ void ChgProWaitPillarReady_B(StructChargeCtrl_B *pChargeCtrl)
CstMsg_B.StopTruble.Value.Other = 1; CstMsg_B.StopTruble.Value.Other = 1;
CstMsg_B.StopFault.Value.Volt = 1; CstMsg_B.StopFault.Value.Volt = 1;
DcOutSet_B(eSwSta_Off); DcOutSet_B(eSwSta_Off);
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
ChargeStopType_B= eChgStop_Conf_ChgMaxVoltLessPillarMinVolt; ChargeStopType_B= eChgStop_Conf_ChgMaxVoltLessPillarMinVolt;
pChargeCtrl->CurProcess = eChgPro_B_ChgStop; pChargeCtrl->CurProcess = eChgPro_B_ChgStop;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
...@@ -176,23 +177,42 @@ void ChgProWaitPillarReady_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -176,23 +177,42 @@ void ChgProWaitPillarReady_B(StructChargeCtrl_B *pChargeCtrl)
if((GetSystemTick() - BroMsg_B.RecvTick) > MsgTimeout_B_5S) if((GetSystemTick() - BroMsg_B.RecvTick) > MsgTimeout_B_5S)
{ {
CemMsg_B.Cem.Value.Bro = 1; CemMsg_B.Cem.Value.Bro = 1;
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
pChargeCtrl->CurProcess = eChgPro_B_CommBreak; pChargeCtrl->CurProcess = eChgPro_B_CommBreak;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
else else
CemMsg_B.Cem.Value.Bro = 0; CemMsg_B.Cem.Value.Bro = 0;
if(0x00== BroMsg_B.Status)
Bro_00_Tick_B =GetSystemTick();
else
Bro_00_Tick_B =GetSystemTick();
if( GetSystemTick() -Bro_00_Tick_B >= MsgTimeout_1S)
{
/*VoltReadyTick = 0;
pChargeCtrl->CurProcess = eChgPro_ChgStart;
pChargeCtrl->Param = 0;*/
//CstMsg.StopReason.Value.Truble = 1;
// CstMsg.StopTruble.Value.Other = 1;
// CstMsg.StopFault.Value.Volt = 1;
CemMsg_B.Cem.Mult = 0;
DcOutSet_B(eSwSta_Off);
SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
ChargeStopType_B = eChgStop_Conf_ChgMaxVoltLessPillarMinVolt;
pChargeCtrl->CurProcess = eChgPro_B_CommError;
pChargeCtrl->Param = 0;
}
if(0 != BemMsg_B.Valid) if(0 != BemMsg_B.Valid)
{ {
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
pChargeCtrl->CurProcess = eChgPro_B_CommBreak; pChargeCtrl->CurProcess = eChgPro_B_CommBreak;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
if(0 == TCUCurChgRecd_B.TCUChargeEnable) if(0 == TCUCurChgRecd_B.TCUChargeEnable)
{//外部控制结束充电 {//外部控制结束充电
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
ChargeStopType_B = eChgStop_PillarReady_UserCancel; ChargeStopType_B = eChgStop_PillarReady_UserCancel;
pChargeCtrl->CurProcess = eChgPro_B_ChgStop; pChargeCtrl->CurProcess = eChgPro_B_ChgStop;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
...@@ -207,7 +227,7 @@ void ChgProWaitPillarReady_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -207,7 +227,7 @@ void ChgProWaitPillarReady_B(StructChargeCtrl_B *pChargeCtrl)
CcStatusChkTick = 0; CcStatusChkTick = 0;
if((0 != CcStatusChkTick) && ((GetSystemTick() - CcStatusChkTick) > CC_CheckTick_B * 2)) if((0 != CcStatusChkTick) && ((GetSystemTick() - CcStatusChkTick) > CC_CheckTick_B * 2))
{ {
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
CcStatusChkTick = 0; CcStatusChkTick = 0;
ChargeStopType_B = eChgStop_PillarReady_CcOpen; ChargeStopType_B = eChgStop_PillarReady_CcOpen;
pChargeCtrl->CurProcess = eChgPro_B_ChgBreak; pChargeCtrl->CurProcess = eChgPro_B_ChgBreak;
...@@ -215,49 +235,49 @@ void ChgProWaitPillarReady_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -215,49 +235,49 @@ void ChgProWaitPillarReady_B(StructChargeCtrl_B *pChargeCtrl)
} }
if(0 != PillarError_B.Value.Emergency) if(0 != PillarError_B.Value.Emergency)
{ {
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
ChargeStopType_B = eChgStop_PillarReady_EmerClose; ChargeStopType_B = eChgStop_PillarReady_EmerClose;
pChargeCtrl->CurProcess = eChgPro_B_ChgBreak; pChargeCtrl->CurProcess = eChgPro_B_ChgBreak;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
if(0 != PillarError_B.Value.Door) if(0 != PillarError_B.Value.Door)
{ {
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
ChargeStopType_B = eChgStop_PillarReady_DoorOpen; ChargeStopType_B = eChgStop_PillarReady_DoorOpen;
pChargeCtrl->CurProcess = eChgPro_B_ChgBreak; pChargeCtrl->CurProcess = eChgPro_B_ChgBreak;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
if(0 != PillarError_B.Value.Contactor) if(0 != PillarError_B.Value.Contactor)
{ {
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
ChargeStopType_B = eChgStop_PillarReady_Contactor; ChargeStopType_B = eChgStop_PillarReady_Contactor;
pChargeCtrl->CurProcess = eChgPro_B_ChgBreak; pChargeCtrl->CurProcess = eChgPro_B_ChgBreak;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
if(0 != PillarError_B.Value.UniContactor) if(0 != PillarError_B.Value.UniContactor)
{ {
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
ChargeStopType_B = eChgStop_PillarReady_Contactor; ChargeStopType_B = eChgStop_PillarReady_Contactor;
pChargeCtrl->CurProcess = eChgPro_B_ChgBreak; pChargeCtrl->CurProcess = eChgPro_B_ChgBreak;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
if(0 != PillarError_B.Value.InVolt) if(0 != PillarError_B.Value.InVolt)
{ {
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
ChargeStopType_B = eChgStop_PillarReady_InVolt; ChargeStopType_B = eChgStop_PillarReady_InVolt;
pChargeCtrl->CurProcess = eChgPro_B_ChgBreak; pChargeCtrl->CurProcess = eChgPro_B_ChgBreak;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
if(0 != PillarError_B.Value.NoDcmod) if(0 != PillarError_B.Value.NoDcmod)
{ {
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
ChargeStopType_B = eChgStop_PillarReady_NoDcmod; ChargeStopType_B = eChgStop_PillarReady_NoDcmod;
pChargeCtrl->CurProcess = eChgPro_B_ChgBreak; pChargeCtrl->CurProcess = eChgPro_B_ChgBreak;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
if(0 != PillarError_B.Value.Meter) if(0 != PillarError_B.Value.Meter)
{ {
DcModuleSet_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum); SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage_B.ValidNum);
ChargeStopType_B = eChgStop_PillarReady_Meter; ChargeStopType_B = eChgStop_PillarReady_Meter;
pChargeCtrl->CurProcess = eChgPro_B_ChgBreak; pChargeCtrl->CurProcess = eChgPro_B_ChgBreak;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
#define MsgTimeout_B_1S (1000+200) #define MsgTimeout_B_1S (1000+200)
#define MsgTimeout_B_5S (5000+500) #define MsgTimeout_B_5S (5000+500)
#define MsgTimeout_B_10S (10*1000+3000) #define MsgTimeout_B_10S (10*1000+3000)
#define MsgTimeout_B_60S (60*1000+3000) #define MsgTimeout_B_60S (60*1000+8700)
#define MsgTimeout_B_10M (10*60*1000+3000) #define MsgTimeout_B_10M (10*60*1000+3000)
typedef enum typedef enum
......
...@@ -149,6 +149,7 @@ void TCUBuildComm(StructTCUCtrl *pLcdCtrl) ...@@ -149,6 +149,7 @@ void TCUBuildComm(StructTCUCtrl *pLcdCtrl)
TCUCurChgRecd.TCUChgStarCompNotetrl =1;//开始完成帧发送标志 TCUCurChgRecd.TCUChgStarCompNotetrl =1;//开始完成帧发送标志
pLcdCtrl->CurScreen = GetTCUProcess(eLcdPro_TCUMainMenu); pLcdCtrl->CurScreen = GetTCUProcess(eLcdPro_TCUMainMenu);
pLcdCtrl->Param = 0; pLcdCtrl->Param = 0;
TCUCurChgRecd.TCUChargeEnable = 0;
break; break;
/*case eChgPro_ChgRecognize: /*case eChgPro_ChgRecognize:
case eChgPro_ChgRecognizeEx: case eChgPro_ChgRecognizeEx:
...@@ -192,6 +193,7 @@ void TCUBuildComm_B(StructTCUCtrl *pLcdCtrl) ...@@ -192,6 +193,7 @@ void TCUBuildComm_B(StructTCUCtrl *pLcdCtrl)
TCUCurChgRecd_B.TCUChgStarCompNotetrl =1;//开始完成帧发送标志 TCUCurChgRecd_B.TCUChgStarCompNotetrl =1;//开始完成帧发送标志
pLcdCtrl->CurScreen = GetTCUProcess(eLcdPro_TCUMainMenu); pLcdCtrl->CurScreen = GetTCUProcess(eLcdPro_TCUMainMenu);
pLcdCtrl->Param = 0; pLcdCtrl->Param = 0;
TCUCurChgRecd_B.TCUChargeEnable = 0;
break; break;
/*case eChgPro_ChgRecognize: /*case eChgPro_ChgRecognize:
case eChgPro_ChgRecognizeEx: case eChgPro_ChgRecognizeEx:
......
...@@ -25,7 +25,7 @@ void vApplicationStackOverflowHook( TaskHandle_t xTask, char *pcTaskName ) ...@@ -25,7 +25,7 @@ void vApplicationStackOverflowHook( TaskHandle_t xTask, char *pcTaskName )
void vApplicationIdleHook( void ) void vApplicationIdleHook( void )
{ {
FeedDog(); //FeedDog();
} }
//#pragma section = ".checksum" //#pragma section = ".checksum"
...@@ -136,7 +136,7 @@ int main(void) ...@@ -136,7 +136,7 @@ int main(void)
} }
DBGMCU_Config(DBGMCU_IWDG_STOP, ENABLE); DBGMCU_Config(DBGMCU_IWDG_STOP, ENABLE);
WdgInit(); //WdgInit();
/* Start scheduler */ /* Start scheduler */
osKernelStart(); osKernelStart();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论