提交 1d74835e 作者: wysheng

改为按功率分配

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