提交 295c413d 作者: wysheng

二次解锁;修复智能分配BUG

上级 3214a158
......@@ -147,26 +147,26 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
if(DcModuleGroup[3].status == Valid)
{
DcModuleGroup[3].status = Hold_B;
DcModuleManage_B.ValidNum += DcModuleGroup[3].ValidNum;
//DcModuleManage_B.ValidNum += DcModuleGroup[3].ValidNum;
DcModuleGroup[3].flag = 1;
}
else if(DcModuleGroup[1].status == Valid)
{
DcModuleGroup[1].status = Hold_B;
DcModuleManage_B.ValidNum += DcModuleGroup[1].ValidNum;
//DcModuleManage_B.ValidNum += DcModuleGroup[1].ValidNum;
DcModuleGroup[1].flag = 1;
}
else if(DcModuleGroup[0].status == Valid
&& ChargeCtrl.CurProcess == eChgPro_ChgIdle)
{
DcModuleGroup[0].status = Hold_B;
DcModuleManage_B.ValidNum += DcModuleGroup[0].ValidNum;
//DcModuleManage_B.ValidNum += DcModuleGroup[0].ValidNum;
DcModuleGroup[0].flag = 1;
#if (DcModule_ZhongXing == 0)
if(DcModuleGroup[1].status == Hold_B)
{
DcModuleGroup[1].status = Valid;
DcModuleManage_B.ValidNum -= DcModuleGroup[1].ValidNum;
//DcModuleManage_B.ValidNum -= DcModuleGroup[1].ValidNum;
}
#endif
}
......@@ -176,17 +176,17 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
if(DcModuleGroup[0].status == Hold_B)
{
DcModuleGroup[0].status = Valid;
DcModuleManage_B.ValidNum -= DcModuleGroup[0].ValidNum;
//DcModuleManage_B.ValidNum -= DcModuleGroup[0].ValidNum;
}
else if(DcModuleGroup[1].status == Hold_B)
{
DcModuleGroup[1].status = Valid;
DcModuleManage_B.ValidNum -= DcModuleGroup[1].ValidNum;
//DcModuleManage_B.ValidNum -= DcModuleGroup[1].ValidNum;
}
else if(DcModuleGroup[3].status == Hold_B)
{
DcModuleGroup[3].status = Valid;
DcModuleManage_B.ValidNum -= DcModuleGroup[3].ValidNum;
//DcModuleManage_B.ValidNum -= DcModuleGroup[3].ValidNum;
}
}
......@@ -585,7 +585,7 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
if(eChgPro_B_ChgRun != pChargeCtrl->CurProcess)
{
//release_DcModule(2);
release_DcModule(2);
return;
}
osDelay(5);
......
......@@ -636,7 +636,7 @@ void ChgProChgRun(StructChargeCtrl * pChargeCtrl)
if (eChgPro_ChgRun != pChargeCtrl->CurProcess)
{
//release_DcModule(1);
release_DcModule(1);
return;
}
......
......@@ -205,7 +205,7 @@ void DcModuleManageProcess_SmartAllocation(void)
}
else if (DcModuleGroup[i].status == Hold_A)
{
if (DcModuleGroup[i].flag)
if (DcModuleGroup[i].flag&&i!=0)
continue;
Volt_A += DcModuleGroup[i].Voltage;
......@@ -215,7 +215,7 @@ void DcModuleManageProcess_SmartAllocation(void)
}
else if (DcModuleGroup[i].status == Hold_B)
{
if (DcModuleGroup[i].flag)
if (DcModuleGroup[i].flag&&i!=2)
continue;
Volt_B += DcModuleGroup[i].Voltage;
......@@ -440,7 +440,7 @@ void DcModuleCtrlProcess_SmartAllocation(void)
if(DcModuleGroup[i].modules[0].status.Value.OnOff == DCModuleStatusOn)
SendDataToDcModule(i, 0xAA, DcModuleAbility.MinVolt * 100, DcModuleAbility.MinCurrt * 100);
//DcModuleGroup[i].flag = 0;
DcModuleGroup[i].flag = 0;
}
}
......@@ -787,7 +787,7 @@ void release_DcModule(u8 flag)
if (DcModuleGroup[i].status == Hold_A)
{
DcModuleGroup[i].status = Valid;
DcModuleManage.ValidNum -= DcModuleGroup[i].ValidNum;
//DcModuleManage.ValidNum -= DcModuleGroup[i].ValidNum;
DcModuleGroup[i].flag = 0;
}
}
......@@ -796,7 +796,7 @@ void release_DcModule(u8 flag)
if (DcModuleGroup[i].status == Hold_B)
{
DcModuleGroup[i].status = Valid;
DcModuleManage_B.ValidNum -= DcModuleGroup[i].ValidNum;
//DcModuleManage_B.ValidNum -= DcModuleGroup[i].ValidNum;
DcModuleGroup[i].flag = 0;
}
}
......@@ -1080,7 +1080,7 @@ void SendDataToDcModule_Incre(u8 group_index, u8 cmd, u32 volt, u32 current)
DcModuleGroup[group_index].modules[j].VoltageSet = volt;
DcModuleGroup[group_index].modules[j].CurrentSet = current;
//if(cmd != 0xAA)
if(cmd != 0xAA)
{
DataSend.Id = 0x1307C080 + addr;
DataSend.Len = 8;
......@@ -1102,6 +1102,9 @@ void SendDataToDcModule_Incre(u8 group_index, u8 cmd, u32 volt, u32 current)
}
}
if((DcModuleGroup[group_index].modules[j].status.Value.OnOff==0x01 && cmd==0x55)
||(DcModuleGroup[group_index].modules[j].status.Value.OnOff==0x00 && cmd==0xAA))
{
DataSend.Id = 0x1307C080 + addr;
DataSend.Len = 8;
DataSend.Data[0] = 0x02;
......@@ -1119,6 +1122,7 @@ void SendDataToDcModule_Incre(u8 group_index, u8 cmd, u32 volt, u32 current)
//osDelay(10);
}
}
}
}
......
......@@ -90,7 +90,7 @@ void ChgProChgIdle(StructChargeCtrl *pChargeCtrl)
if(DcModuleGroup[0].status == Hold_B)
{
DcModuleGroup[0].status = Valid;
DcModuleGroup[0].flag = 1;
//DcModuleGroup[0].flag = 1;
SendDataToDcModule_A(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
}
pChargeCtrl->CurProcess = eChgPro_ShakeHand;
......@@ -99,27 +99,39 @@ void ChgProChgIdle(StructChargeCtrl *pChargeCtrl)
ACContactorSet(eSwSta_On);
}
if((GetSystemTick() - OneSecondTick) >= 1000)
{
if(LockGet()==eSwSta_On && ChargeStopType != eChgStop_None)
OneSecondTick = GetSystemTick();
if(LockGet()==eSwSta_On)
{
LockCount++;
if(LockCount>=10)
{
LockCount = 10;
}
else if(LockCount >= 3)
else if(LockCount >= 6)
{
LockCount = 10;
LockSet(eSwSta_Off);
}
else if(LockCount >= 5)
{
LockSet(eSwSta_On);
}
else if(LockCount >= 3)
{
//LockCount = 10;
LockSet(eSwSta_Off);
}
else if(LockCount >= 2)
{
LockSet(eSwSta_On);
}
}
else
{
LockCount = 0;
}
}
......
......@@ -43,7 +43,8 @@ void ChgProChgIdle_B(StructChargeCtrl_B *pChargeCtrl)
memset(&BmvMsg_B, 0xFF, sizeof(BmvMsg));
memset(&BmtMsg_B, 0xFF, sizeof(BmtMsg));
u32 OneSecondTick = GetSystemTick();
u32 LockCount = 0;
while(1)
{
memset(&BemMsg_B, 0, sizeof(BemMsg));
......@@ -93,7 +94,7 @@ void ChgProChgIdle_B(StructChargeCtrl_B *pChargeCtrl)
if(DcModuleGroup[2].status == Hold_A)
{
DcModuleGroup[2].status = Valid;
DcModuleGroup[2].flag = 1;
//DcModuleGroup[2].flag = 1;
SendDataToDcModule_B(eSwSta_Off, DcModuleAbility.MinVolt, DcModuleAbility.MinCurrt*DcModuleManage.ValidNum);
}
pChargeCtrl->CurProcess = eChgPro_B_ShakeHand;
......@@ -103,6 +104,41 @@ void ChgProChgIdle_B(StructChargeCtrl_B *pChargeCtrl)
ACContactorSet(eSwSta_On);
}
if((GetSystemTick() - OneSecondTick) >= 1000)
{
OneSecondTick = GetSystemTick();
if(LockGet_B()==eSwSta_On)
{
LockCount++;
if(LockCount>=10)
{
LockCount = 10;
}
else if(LockCount >= 6)
{
LockCount = 10;
LockSet_B(eSwSta_Off);
}
else if(LockCount >= 5)
{
LockSet_B(eSwSta_On);
}
else if(LockCount >= 3)
{
//LockCount = 10;
LockSet_B(eSwSta_Off);
}
else if(LockCount >= 2)
{
LockSet_B(eSwSta_On);
}
}
else
{
LockCount = 0;
}
}
if(
(0 != PillarError_B.Value.Emergency)
|| (0 != PillarError_B.Value.NoDcmod)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论