提交 f2c86dde 作者: wysheng

修复提及后解锁太快

上级 539128bd
...@@ -1036,7 +1036,8 @@ u8 AllowDTUStartCompCharge(u8 * Reason) ...@@ -1036,7 +1036,8 @@ u8 AllowDTUStartCompCharge(u8 * Reason)
*Reason = 0x1E; //1EH:启动充电前直流输出接触器外侧电压与通信报文电池电压相差>±5% *Reason = 0x1E; //1EH:启动充电前直流输出接触器外侧电压与通信报文电池电压相差>±5%
else if(ChargeStopType == eChgStop_Conf_BatVoltLessPillarMinVolt) else if(ChargeStopType == eChgStop_Conf_BatVoltLessPillarMinVolt)
*Reason = 0x1f; //1FH:启动充电前直流输出接触器外侧电压小于充电机最小输出电压 *Reason = 0x1f; //1FH:启动充电前直流输出接触器外侧电压小于充电机最小输出电压
else if(ChargeStopType == eChgStop_Conf_StartVoltOverPillarMax) else if(ChargeStopType == eChgStop_Conf_StartVoltOverPillarMax
||ChargeStopType == eChgStop_PillarReady_BatVoltOverPillarMax)
*Reason = 0x20;//20H:启动充电前直流输出接触器外侧电压大于充电机最大输出电压 *Reason = 0x20;//20H:启动充电前直流输出接触器外侧电压大于充电机最大输出电压
else if(ChargeStopType == eChgStop_Conf_BatVoltOverPermitMax) else if(ChargeStopType == eChgStop_Conf_BatVoltOverPermitMax)
*Reason = 0x21;//21H:电池端电压大于电池最高允许充电电压 *Reason = 0x21;//21H:电池端电压大于电池最高允许充电电压
...@@ -2741,7 +2742,7 @@ void InformationReporting_23_A(void) ...@@ -2741,7 +2742,7 @@ void InformationReporting_23_A(void)
if(BsmMsg.BatSta.Mult != 0 || BsmMsg.ChgSta.Mult&0x0f != 0 if(BsmMsg.BatSta.Mult != 0 || BsmMsg.ChgSta.Mult&0x0f != 0
|| BstMsg.StopFault.Mult&0x0f != 0 || BstMsg.StopFault.Mult&0x0f != 0
|| BstMsg.StopTruble.Mult != 0) || BstMsg.StopTruble.Mult != 0)
InformainReport2_A.InfRe.bmsSend = 1; ;//InformainReport2_A.InfRe.bmsSend = 1;
memcpy(&Data[1], &InformainReport2_A.data, 4); memcpy(&Data[1], &InformainReport2_A.data, 4);
TCUSinglePackSendMsg(Data, 8, eCmd_DCConInfor2, 4, ChargerCont1939Addr); TCUSinglePackSendMsg(Data, 8, eCmd_DCConInfor2, 4, ChargerCont1939Addr);
...@@ -2783,7 +2784,7 @@ void InformationReporting_23_B(void) ...@@ -2783,7 +2784,7 @@ void InformationReporting_23_B(void)
if(BsmMsg_B.BatSta.Mult != 0 || BsmMsg_B.ChgSta.Mult&0x0f != 0 if(BsmMsg_B.BatSta.Mult != 0 || BsmMsg_B.ChgSta.Mult&0x0f != 0
|| BstMsg_B.StopFault.Mult&0x0f != 0 || BstMsg_B.StopFault.Mult&0x0f != 0
|| BstMsg_B.StopTruble.Mult != 0) || BstMsg_B.StopTruble.Mult != 0)
InformainReport2_B.InfRe.bmsSend = 1; ;//InformainReport2_B.InfRe.bmsSend = 1;
memcpy(&Data[1], &InformainReport2_B.data, 4); memcpy(&Data[1], &InformainReport2_B.data, 4);
TCUSinglePackSendMsg(Data, 8, eCmd_DCConInfor2, 4, ChargerCont1939Addr_B); TCUSinglePackSendMsg(Data, 8, eCmd_DCConInfor2, 4, ChargerCont1939Addr_B);
......
...@@ -588,7 +588,7 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -588,7 +588,7 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
if(eChgPro_B_ChgRun != pChargeCtrl->CurProcess) if(eChgPro_B_ChgRun != pChargeCtrl->CurProcess)
{ {
release_DcModule(2); //release_DcModule(2);
return; return;
} }
osDelay(5); osDelay(5);
......
...@@ -640,7 +640,7 @@ void ChgProChgRun(StructChargeCtrl * pChargeCtrl) ...@@ -640,7 +640,7 @@ void ChgProChgRun(StructChargeCtrl * pChargeCtrl)
if (eChgPro_ChgRun != pChargeCtrl->CurProcess) if (eChgPro_ChgRun != pChargeCtrl->CurProcess)
{ {
release_DcModule(1); //release_DcModule(1);
return; return;
} }
......
...@@ -283,13 +283,19 @@ void DcModuleSet(EnumSwitchStatus Set, u16 Volt, u16 Currt) ...@@ -283,13 +283,19 @@ void DcModuleSet(EnumSwitchStatus Set, u16 Volt, u16 Currt)
u16 GetDcModuleVolt(void) u16 GetDcModuleVolt(void)
{ {
if(DcModuleManage.ValidNum)
return (u16) ((u32) DcModuleCtrl.ActualVolt * UserParam.VoltRatio / 1000); return (u16) ((u32) DcModuleCtrl.ActualVolt * UserParam.VoltRatio / 1000);
else
return (u16) (DcModuleGroup[0].Voltage);
} }
u16 GetDcModuleCurrt(void) u16 GetDcModuleCurrt(void)
{ {
if(DcModuleManage.ValidNum)
return (u16) ((u32) DcModuleCtrl.ActualCurrt * UserParam.CurrtRatio / 1000); return (u16) ((u32) DcModuleCtrl.ActualCurrt * UserParam.CurrtRatio / 1000);
else
return (u16) (DcModuleGroup[0].Current);
} }
...@@ -407,15 +413,19 @@ void DcModuleSet_B(EnumSwitchStatus Set, u16 Volt, u16 Currt) ...@@ -407,15 +413,19 @@ void DcModuleSet_B(EnumSwitchStatus Set, u16 Volt, u16 Currt)
u16 GetDcModuleVolt_B(void) u16 GetDcModuleVolt_B(void)
{ {
//return DcModuleCtrl_B.ActualVolt; if(DcModuleManage_B.ValidNum)
return (u16) ((u32) DcModuleCtrl_B.ActualVolt * UserParam.VoltRatio / 1000); return (u16) ((u32) DcModuleCtrl_B.ActualVolt * UserParam.VoltRatio / 1000);
else
return (u16) (DcModuleGroup[2].Voltage);
} }
u16 GetDcModuleCurrt_B(void) u16 GetDcModuleCurrt_B(void)
{ {
//return DcModuleCtrl_B.ActualCurrt; if(DcModuleManage_B.ValidNum)
return (u16) ((u32) DcModuleCtrl_B.ActualCurrt * UserParam.CurrtRatio / 1000); return (u16) ((u32) DcModuleCtrl_B.ActualCurrt * UserParam.CurrtRatio / 1000);
else
return (u16) (DcModuleGroup[2].Current);
} }
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include "Drv_DcModule.h" #include "Drv_DcModule.h"
#include "Drv_BmsComm.h" #include "Drv_BmsComm.h"
#include "Drv_Meter.h" #include "Drv_Meter.h"
#include "Drv_SmartAllocation.h"
void ChgProChgStop(StructChargeCtrl *pChargeCtrl) void ChgProChgStop(StructChargeCtrl *pChargeCtrl)
...@@ -146,6 +147,7 @@ void ChgProChgStop(StructChargeCtrl *pChargeCtrl) ...@@ -146,6 +147,7 @@ void ChgProChgStop(StructChargeCtrl *pChargeCtrl)
if((GetDcModuleVolt() < 600) || ((GetSystemTick() - DrainResistTick) > 4000))//小于60V if((GetDcModuleVolt() < 600) || ((GetSystemTick() - DrainResistTick) > 4000))//小于60V
{ {
//DrainResistSet(eSwSta_Off); //DrainResistSet(eSwSta_Off);
release_DcModule(1);
ChgEndFlag = 1; ChgEndFlag = 1;
DrainResistTick = 0; DrainResistTick = 0;
} }
......
...@@ -131,8 +131,8 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl) ...@@ -131,8 +131,8 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl)
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
else if((eChgVer_2011 != UserParam.ChgVer) else if(((eChgVer_2011 != UserParam.ChgVer)
&& ((abs(GetBatVoltWaitPillarReady() - BcpMsg.StartVolt)) > (BcpMsg.StartVolt*5/100))) && ((abs(GetBatVoltWaitPillarReady() - BcpMsg.StartVolt)) > (BcpMsg.StartVolt*5/100))))
{ {
CstMsg.StopReason.Value.Truble = 1; CstMsg.StopReason.Value.Truble = 1;
CstMsg.StopTruble.Value.Other = 1; CstMsg.StopTruble.Value.Other = 1;
...@@ -143,7 +143,17 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl) ...@@ -143,7 +143,17 @@ void ChgProWaitPillarReady(StructChargeCtrl *pChargeCtrl)
pChargeCtrl->CurProcess = eChgPro_ChgStop; pChargeCtrl->CurProcess = eChgPro_ChgStop;
pChargeCtrl->Param = 0; pChargeCtrl->Param = 0;
} }
else if(GetBatVoltWaitPillarReady() > DcModuleAbility.MaxVolt)
{
CstMsg.StopReason.Value.Truble = 1;
CstMsg.StopTruble.Value.Other = 1;
CstMsg.StopFault.Value.Volt = 1;
DcOutSet(eSwSta_Off);
SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
ChargeStopType = eChgStop_PillarReady_BatVoltOverPillarMax;
pChargeCtrl->CurProcess = eChgPro_ChgStop;
pChargeCtrl->Param = 0;
}
else if(abs(GetDcModuleVolt()- GetBatVoltWaitPillarReady()) <= 100) else if(abs(GetDcModuleVolt()- GetBatVoltWaitPillarReady()) <= 100)
{ {
VoltReadyTick = 0; VoltReadyTick = 0;
......
...@@ -146,6 +146,7 @@ void ChgProChgStop_B(StructChargeCtrl_B *pChargeCtrl) ...@@ -146,6 +146,7 @@ void ChgProChgStop_B(StructChargeCtrl_B *pChargeCtrl)
if((GetDcModuleVolt_B() < 600) || ((GetSystemTick() - DrainResistTick) > 4000))//小于60V if((GetDcModuleVolt_B() < 600) || ((GetSystemTick() - DrainResistTick) > 4000))//小于60V
{ {
//DrainResistSet_B(eSwSta_Off); //DrainResistSet_B(eSwSta_Off);
release_DcModule(2);
ChgEndFlag = 1; ChgEndFlag = 1;
DrainResistTick = 0; DrainResistTick = 0;
} }
......
...@@ -72,7 +72,7 @@ EnumTCUProcess GetTCUProcess(EnumTCUProcess LcdPro) ...@@ -72,7 +72,7 @@ EnumTCUProcess GetTCUProcess(EnumTCUProcess LcdPro)
void TCUProMainMenu(StructTCUCtrl *pLcdCtrl) void TCUProMainMenu(StructTCUCtrl *pLcdCtrl)
{ {
LockSet(eSwSta_Off); //LockSet(eSwSta_Off);
while(1) while(1)
{ {
if(eLcdPro_TCUMainMenu != pLcdCtrl->CurScreen) if(eLcdPro_TCUMainMenu != pLcdCtrl->CurScreen)
...@@ -83,7 +83,7 @@ void TCUProMainMenu(StructTCUCtrl *pLcdCtrl) ...@@ -83,7 +83,7 @@ void TCUProMainMenu(StructTCUCtrl *pLcdCtrl)
void TCUProMainMenu_B(StructTCUCtrl *pLcdCtrl) void TCUProMainMenu_B(StructTCUCtrl *pLcdCtrl)
{ {
LockSet_B(eSwSta_Off); //LockSet_B(eSwSta_Off);
while(1) while(1)
{ {
if(eLcdPro_TCUMainMenu != pLcdCtrl->CurScreen) if(eLcdPro_TCUMainMenu != pLcdCtrl->CurScreen)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论