提交 c360bacd 作者: wysheng

智能分配

上级 b00dd8f5
......@@ -42,7 +42,8 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
u16 MaxCurrt = 0;
u16 NeedCurrt = 0;
u32 NowMaxCurrt = 0;
u16 MaxVolt = 0;
u16 NeedVolt = 0;
......@@ -118,12 +119,15 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
MaxCurrt = abs((s32)BclMsg_B.NeedCurrt - 4000);
NeedCurrt = abs((s32)BclMsg_B.NeedCurrt - 4000);
NeedVolt = BclMsg_B.NeedVolt;
static s16 GetCurrt_bak;
NeedPower = NeedCurrt*NeedVolt/100;
NowPower = DcModuleManage.ValidNum*UserParam.DcMaxPower*1000;
NowPower = DcModuleManage_B.ValidNum*UserParam.DcMaxPower*1000;
NowMaxCurrt = DcModuleManage_B.ValidNum*DcModuleAbility.MaxCurrt;
if(abs((s16)GetDcModuleCurrt_B()-GetCurrt_bak)<10 //ȶ
&& (abs((s32)NeedPower-(s32)(NowPower))>(UserParam.DcMaxPower*1000))
&& ((abs((s32)NeedPower-(s32)(NowPower))>/*UserParam.DcMaxPower*/1*1000)\
/*|| (abs((s32)(NeedCurrt) -(s32)(NowMaxCurrt))>DcModuleAbility.MaxCurrt)*/)
)
{
if(0 == UniChgTick)
......@@ -131,7 +135,7 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
if((GetSystemTick() - UniChgTick) > (10 * 1000))
{
if(NeedPower > NowPower \
if(((NeedPower > NowPower)/*||(NeedCurrt>NowMaxCurrt)*/) \
&& DcModuleGroup[0].flag == 0 \
&& DcModuleGroup[1].flag == 0 \
&& DcModuleGroup[3].flag == 0 )
......@@ -162,7 +166,7 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
#endif
}
}
else if(NeedPower < NowPower)
else if((NeedPower < NowPower)&&(NowPower-NeedPower>UserParam.DcMaxPower*1000*2)/*||(NeedCurrt<NowMaxCurrt)*/)
{
if(DcModuleGroup[0].status == Hold_B)
{
......
......@@ -101,6 +101,7 @@ void ChgProChgRun(StructChargeCtrl * pChargeCtrl)
UniChgTick = 0;
u32 NeedPower = 0;
u32 NowPower = 0;
u32 NowMaxCurrt = 0;
while (1)
{
if ((GetSystemTick() -CCS_SendTick) > 50)
......@@ -132,15 +133,17 @@ void ChgProChgRun(StructChargeCtrl * pChargeCtrl)
static s16 GetCurrt_bak;
NeedPower = NeedCurrt*NeedVolt/100;
NowPower = DcModuleManage.ValidNum*UserParam.DcMaxPower*1000;
NowMaxCurrt = DcModuleManage.ValidNum*DcModuleAbility.MaxCurrt;
if (abs((s16) GetDcModuleCurrt() -GetCurrt_bak) < 10 //ȶ
&& (abs((s32)(NeedPower) - (s32)(NowPower)) > (UserParam.DcMaxPower*1000)))
&& ((abs((s32)(NeedPower) - (s32)(NowPower)) > /*UserParam.DcMaxPower*/1*1000)
/*||(abs((s32)(NeedCurrt)-(s32)(NowMaxCurrt))>DcModuleAbility.MaxCurrt)*/))
{
if (0 == UniChgTick)
UniChgTick = GetSystemTick();
if ((GetSystemTick() -UniChgTick) > (10 * 1000))
{
if (NeedPower > NowPower \
if (((NeedPower > NowPower)/*||(NeedCurrt>NowMaxCurrt)*/) \
&& DcModuleGroup[1].flag == 0\
&& DcModuleGroup[2].flag == 0\
&& DcModuleGroup[3].flag == 0)
......@@ -171,7 +174,7 @@ void ChgProChgRun(StructChargeCtrl * pChargeCtrl)
#endif
}
}
else if(NeedPower < NowPower)
else if((NeedPower < NowPower)&&(NowPower-NeedPower>UserParam.DcMaxPower*1000*2)/*||(NeedCurrt<NowMaxCurrt)*/)
{
if (DcModuleGroup[2].status == Hold_A)
{
......
......@@ -694,13 +694,13 @@ void DcModuleCtrlProcess_SmartAllocation(void)
if (DcModuleGroup[i].status != Hold_B)
continue;
for (u8 j = 0; j < DcModuleGroup[i].num; j++)
//for (u8 j = 0; j < DcModuleGroup[i].num; j++)
{
addr = DcModuleGroup[i].modules[j].addr;
//addr = DcModuleGroup[i].modules[j].addr;
DcModuleManage_B.Cmd = 0x55; //开机
//DcModuleGroup[i].modules[j].cmd = 0x55;
SendDataToDcModule(addr, DcModuleManage_B.Cmd, DcModuleManage_B.SetVolt,
SendDataToDcModule(i, DcModuleManage_B.Cmd, DcModuleManage_B.SetVolt,
DcModuleManage_B.SetCurrt);
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论