提交 245b1af3 作者: wysheng

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

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