提交 1d74835e 作者: wysheng

改为按功率分配

上级 da0c4803
......@@ -92,7 +92,8 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
UniChgEnable = FALSE;
UniChgTick = 0;
u32 NeedPower = 0;
u32 NowPower = 0;
while(1)
{
if((GetSystemTick() - CCS_SendTick) > 50)
......@@ -119,9 +120,10 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
NeedCurrt = abs((s32)BclMsg_B.NeedCurrt - 4000);
static s16 GetCurrt_bak;
NeedPower = NeedCurrt*NeedVolt/100;
NowPower = DcModuleManage.ValidNum*UserParam.DcMaxPower*1000;
if(abs((s16)GetDcModuleCurrt_B()-GetCurrt_bak)<10 //ȶ
&& (abs((s16)NeedCurrt-(s16)(DcModuleAbility.MaxCurrt*DcModuleManage_B.ValidNum))>(DcModuleAbility.MaxCurrt))
&& (abs((s32)NeedPower-(s32)(NowPower))>(UserParam.DcMaxPower))
)
{
if(0 == UniChgTick)
......@@ -129,7 +131,7 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
if((GetSystemTick() - UniChgTick) > (10 * 1000))
{
if(NeedCurrt > (DcModuleAbility.MaxCurrt*DcModuleManage_B.ValidNum) \
if(NeedPower > NowPower \
&& DcModuleGroup[0].flag == 0 \
&& DcModuleGroup[1].flag == 0 \
&& DcModuleGroup[3].flag == 0 )
......@@ -160,7 +162,7 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
#endif
}
}
else if(NeedCurrt < (DcModuleAbility.MaxCurrt*DcModuleManage_B.ValidNum))
else if(NeedPower < NowPower)
{
if(DcModuleGroup[0].status == Hold_B)
{
......
......@@ -99,7 +99,8 @@ void ChgProChgRun(StructChargeCtrl * pChargeCtrl)
UniChgEnable = FALSE;
UniChgTick = 0;
u32 NeedPower = 0;
u32 NowPower = 0;
while (1)
{
if ((GetSystemTick() -CCS_SendTick) > 50)
......@@ -126,16 +127,20 @@ void ChgProChgRun(StructChargeCtrl * pChargeCtrl)
NeedCurrt = abs((s32) BclMsg.NeedCurrt - 4000);
NeedVolt = BclMsg.NeedVolt;
static s16 GetCurrt_bak;
NeedPower = NeedCurrt*NeedVolt/100;
NowPower = DcModuleManage.ValidNum*UserParam.DcMaxPower*1000;
if (abs((s16) GetDcModuleCurrt() -GetCurrt_bak) < 10 //ȶ
&& (abs((s16) NeedCurrt - (s16)(DcModuleManage.ValidNum*DcModuleAbility.MaxCurrt)) > (DcModuleAbility.MaxCurrt)))
&& (abs((s32)(NeedPower) - (s32)(NowPower)) > (UserParam.DcMaxPower*1000)))
{
if (0 == UniChgTick)
UniChgTick = GetSystemTick();
if ((GetSystemTick() -UniChgTick) > (10 * 1000))
{
if (NeedCurrt > (DcModuleManage.ValidNum*DcModuleAbility.MaxCurrt) \
if (NeedPower > NowPower \
&& DcModuleGroup[1].flag == 0\
&& DcModuleGroup[2].flag == 0\
&& DcModuleGroup[3].flag == 0)
......@@ -166,7 +171,7 @@ void ChgProChgRun(StructChargeCtrl * pChargeCtrl)
#endif
}
}
else if(NeedCurrt < (DcModuleAbility.MaxCurrt * DcModuleManage.ValidNum))
else if(NeedPower < NowPower)
{
if (DcModuleGroup[2].status == Hold_A)
{
......
......@@ -251,6 +251,9 @@ void DcModuleManageProcess_SmartAllocation(void)
}
//u32 look_temp = 0;
//u32 maxSetCurr = 0;
//u32 maxSetCurr_B = 0;
void DcModuleCtrlProcess_SmartAllocation(void)
{
......@@ -600,12 +603,13 @@ void DcModuleCtrlProcess_SmartAllocation(void)
}
else
Temp = DcModuleManage.SetCurrt;
if (Temp > (DcModuleAbility.MaxCurrt * 100))
Temp = (DcModuleAbility.MaxCurrt * 100);
else if (Temp < (DcModuleAbility.MinCurrt * 100))
Temp = (DcModuleAbility.MinCurrt * 100);
//look_temp = Temp;
//maxSetCurr = UserParam.DcMaxPower*1000/(DcModuleManage.SetVolt/1000)*1000;
if (Temp <= DcModuleManage.SetCurrt)
DcModuleManage.SetCurrt = Temp;
else
......@@ -679,6 +683,12 @@ void DcModuleCtrlProcess_SmartAllocation(void)
else if (DcModuleManage_B.SetCurrt < (DcModuleAbility.MinCurrt * 100))
DcModuleManage_B.SetCurrt = (DcModuleAbility.MinCurrt * 100);
/*if(DcModuleManage_B.SetCurrt/1000*DcModuleManage_B.SetVolt/1000 \
> UserParam.DcMaxPower*1000)
{
DcModuleManage_B.SetCurrt = UserParam.DcMaxPower*1000*1000*1000/DcModuleManage.SetVolt;
}*/
for (u8 i = 0; i < DcModuleGroupSize; i++)
{
if (DcModuleGroup[i].status != Hold_B)
......@@ -834,35 +844,36 @@ void SendDataToDcModule_ZhongXing(u8 group_index, u8 cmd, u32 volt, u32 current)
DcModuleGroup[group_index].modules[j].cmd = sendCmd;
DcModuleGroup[group_index].modules[j].VoltageSet = volt;
DcModuleGroup[group_index].modules[j].CurrentSet = current;
DataSend.Id = 0x18059FA0;
DataSend.Len = 8;
DataSend.Data[0] = 0x10 | sendCmd;
DataSend.Data[1] = group_index + 1;
//if(current != 0)
{
Temp = current/10;
DataSend.Data[4] = (u8) (Temp >> 8);
DataSend.Data[5] = (u8) (Temp >> 0);
Temp = volt/100;
DataSend.Data[2] = (u8) (Temp >> 8);
DataSend.Data[3] = (u8) (Temp >> 0);
DataSend.Data[6] = (u8) (Temp >> 8);
DataSend.Data[7] = (u8) (Temp >> 0);
}
//放入队列
if (pdTRUE != xQueueSend(DcModeMsg, &DataSend, 0))
{
//osDelay(10);
}
DataSend.Id = 0x18059FA0;
DataSend.Len = 8;
DataSend.Data[0] = 0x10 | sendCmd;
DataSend.Data[1] = group_index + 1;
//if(current != 0)
{
Temp = current/10;
DataSend.Data[4] = (u8) (Temp >> 8);
DataSend.Data[5] = (u8) (Temp >> 0);
Temp = volt/100;
DataSend.Data[2] = (u8) (Temp >> 8);
DataSend.Data[3] = (u8) (Temp >> 0);
DataSend.Data[6] = (u8) (Temp >> 8);
DataSend.Data[7] = (u8) (Temp >> 0);
//放入队列
if (pdTRUE != xQueueSend(DcModeMsg, &DataSend, 0))
{
//osDelay(10);
}
}
if(sendCmd != 0x02) //非停止充电,下发修改充电参数
if(sendCmd != 0x02) //非停止充电,下发修改充电参数
{
DataSend.Data[0] = 0x10 | 0x05;
if (pdTRUE != xQueueSend(DcModeMsg, &DataSend, 0))
{
DataSend.Data[0] = 0x10 | 0x05;
if (pdTRUE != xQueueSend(DcModeMsg, &DataSend, 0))
{
//osDelay(10);
}
//osDelay(10);
}
}
......
......@@ -58,6 +58,8 @@
#define DataFactoryTestAddr_B_DcModNum ((u16)0x0145)
#define IconFactoryTestAddr_B_ConnectSta ((u16)0x0146)
extern StructDcModuleManage DcModuleManage_All;
void FactoryTestPaint_B(void)
{
//char Buff[32];
......@@ -89,7 +91,7 @@ void FactoryTestPaint_B(void)
TempU16 = 1;
LcdShowData16(IconFactoryTestAddr_B_MeterSta, TempU16);
LcdShowData16(DataFactoryTestAddr_B_DcModNum, DcModuleManage_B.ValidNum);
LcdShowData16(DataFactoryTestAddr_B_DcModNum, DcModuleManage_All.ValidNum);
if(eSwSta_On == CcStatusRead_B())
TempU16 = 1;
......
......@@ -244,6 +244,7 @@ void TCUChargeSummary(StructTCUCtrl *pLcdCtrl)
TCUCurChgRecd.TCUChgStopCompNotetrl= 1;//停止完成帧命令发送
pLcdCtrl->CurScreen = eLcdPro_TCUMainMenu;//GetTCUProcess(eLcdPro_TCUMainMenu);
pLcdCtrl->Param = 0;
TCUCurChgRecd.TCUChargeEnable = 0;
break;
default:
break;
......@@ -264,7 +265,7 @@ void TCUChargeSummary_B(StructTCUCtrl *pLcdCtrl)
TCUCurChgRecd_B.TCUChgStopCompNotetrl= 1;//停止完成帧命令发送
pLcdCtrl->CurScreen = eLcdPro_TCUMainMenu;//GetTCUProcess(eLcdPro_TCUMainMenu);
pLcdCtrl->Param = 0;
TCUCurChgRecd_B.TCUChargeEnable = 0;
break;
default:
break;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论