提交 295c413d 作者: wysheng

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

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