提交 c360bacd 作者: wysheng

智能分配

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