提交 f2c86dde 作者: wysheng

修复提及后解锁太快

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