提交 fad481da 作者: wysheng

优化模块CAN通讯

上级 756cfd3e
...@@ -70,6 +70,13 @@ void DcModuleManageProcess_SmartAllocation(void) ...@@ -70,6 +70,13 @@ void DcModuleManageProcess_SmartAllocation(void)
u32 Volt, Volt_A, Volt_B; u32 Volt, Volt_A, Volt_B;
u8 status; u8 status;
static u32 Tick = 0;
if ((GetSystemTick() -Tick) < 10)
{
return;
}
Tick = GetSystemTick();
StructDcModuleSend DataSend; StructDcModuleSend DataSend;
...@@ -265,6 +272,14 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -265,6 +272,14 @@ void DcModuleCtrlProcess_SmartAllocation(void)
static u8 LastFlag_A = 0; static u8 LastFlag_A = 0;
static u8 LastFlag_B = 0; static u8 LastFlag_B = 0;
static u32 Tick = 0;
if ((GetSystemTick() -Tick) < 10)
{
return;
}
Tick = GetSystemTick();
static StructDcModuleUsedStatus status[4] = static StructDcModuleUsedStatus status[4] =
{ {
Invalid, Invalid, Invalid, Invalid Invalid, Invalid, Invalid, Invalid
......
...@@ -16,11 +16,11 @@ ...@@ -16,11 +16,11 @@
StructDcModuleAbility DcModuleAbility = StructDcModuleAbility DcModuleAbility =
{ {
.MaxVolt = DcModuleMaxVolt, .MaxVolt = DcModuleMaxVolt,
.MinVolt = DcModuleMinVolt, .MinVolt = DcModuleMinVolt,
.MaxCurrt = DcModuleMaxCurrt, .MaxCurrt = DcModuleMaxCurrt,
.MinCurrt = DcModuleMinCurrt, .MinCurrt = DcModuleMinCurrt,
.SingleMaxCurrt = DcModuleSinMaxCurrt, .SingleMaxCurrt = DcModuleSinMaxCurrt,
}; };
...@@ -45,11 +45,11 @@ void DcModuleRxIrqHandle(void) ...@@ -45,11 +45,11 @@ void DcModuleRxIrqHandle(void)
u8 RecvFlag; u8 RecvFlag;
Union1939Id Id1939 = Union1939Id Id1939 =
{ {
.Mult = 0, .Mult = 0,
}; };
UnionYouExtId CommId = UnionYouExtId CommId =
{ {
.Mult = 0, .Mult = 0,
}; };
IrSta = MCP2515_ReadStatus(); IrSta = MCP2515_ReadStatus();
...@@ -253,7 +253,7 @@ void DcModuleSet(EnumSwitchStatus Set, u16 Volt, u16 Currt) ...@@ -253,7 +253,7 @@ void DcModuleSet(EnumSwitchStatus Set, u16 Volt, u16 Currt)
DcModuleManage.ValidNum -= DcModuleGroup[0].ValidNum; DcModuleManage.ValidNum -= DcModuleGroup[0].ValidNum;
} }
} }
else else
{ {
DcModuleCtrl.CtrlFlag = 1; DcModuleCtrl.CtrlFlag = 1;
DcModuleCtrl.NeedVolt = Volt; DcModuleCtrl.NeedVolt = Volt;
...@@ -307,7 +307,7 @@ void DcModule(void const * parameter) ...@@ -307,7 +307,7 @@ void DcModule(void const * parameter)
osDelay(6000); osDelay(6000);
DcModeleRelayInit(); DcModeleRelayInit();
DcModuleCanInit(); DcModuleCanInit();
//ACContactorSet(eSwSta_On); //ACContactorSet(eSwSta_On);
DcModuleAbility.MaxVolt = UserParam.DcMaxVolt; DcModuleAbility.MaxVolt = UserParam.DcMaxVolt;
DcModuleAbility.MinVolt = UserParam.DcMinVolt; DcModuleAbility.MinVolt = UserParam.DcMinVolt;
DcModuleAbility.MaxCurrt = UserParam.DcMaxCurrt; DcModuleAbility.MaxCurrt = UserParam.DcMaxCurrt;
...@@ -315,26 +315,30 @@ void DcModule(void const * parameter) ...@@ -315,26 +315,30 @@ void DcModule(void const * parameter)
DcModuleAbility.SingleMaxCurrt = UserParam.SingleMaxCurrt; DcModuleAbility.SingleMaxCurrt = UserParam.SingleMaxCurrt;
DcModeMsg = NULL; DcModeMsg = NULL;
osMessageQDef(DcModeMsg, 64, StructDcModuleSend); osMessageQDef(DcModeMsg, 128, StructDcModuleSend);
DcModeMsg = osMessageCreate(osMessageQ(DcModeMsg), NULL); DcModeMsg = osMessageCreate(osMessageQ(DcModeMsg), NULL);
u32 SendTick = GetSystemTick();
while (1) while (1)
{ {
if ((GetSystemTick() -SendTick) > 10)
{
SendTick = GetSystemTick();
StructDcModuleSend DataSend; StructDcModuleSend DataSend;
if (pdTRUE == xQueueReceive(DcModeMsg, &DataSend, 0)) if (pdTRUE == xQueueReceive(DcModeMsg, &DataSend, 0))
{ {
DcModuleSendMsg(&DataSend); DcModuleSendMsg(&DataSend);
} }
}
DcModuleManageProcess_SmartAllocation(); DcModuleManageProcess_SmartAllocation();
osDelay(15); //osDelay(15);
DcModuleCtrlProcess_SmartAllocation(); DcModuleCtrlProcess_SmartAllocation();
osDelay(15); osDelay(10);
} }
} }
...@@ -368,7 +372,7 @@ void DcModuleSet_B(EnumSwitchStatus Set, u16 Volt, u16 Currt) ...@@ -368,7 +372,7 @@ void DcModuleSet_B(EnumSwitchStatus Set, u16 Volt, u16 Currt)
DcModuleManage_B.ValidNum -= DcModuleGroup[2].ValidNum; DcModuleManage_B.ValidNum -= DcModuleGroup[2].ValidNum;
} }
} }
else else
{ {
DcModuleCtrl_B.CtrlFlag = 1; DcModuleCtrl_B.CtrlFlag = 1;
DcModuleCtrl_B.NeedVolt = Volt; DcModuleCtrl_B.NeedVolt = Volt;
...@@ -428,7 +432,7 @@ void DcModuleSet_AB(EnumSwitchStatus Set, u16 Volt, u16 Currt) ...@@ -428,7 +432,7 @@ void DcModuleSet_AB(EnumSwitchStatus Set, u16 Volt, u16 Currt)
DcModuleCtrl_B.CtrlFlag = 0; DcModuleCtrl_B.CtrlFlag = 0;
} }
else else
{ {
if (ChargeEnable_AB == 0) //单枪连冲 if (ChargeEnable_AB == 0) //单枪连冲
{ {
...@@ -444,7 +448,7 @@ void DcModuleSet_AB(EnumSwitchStatus Set, u16 Volt, u16 Currt) ...@@ -444,7 +448,7 @@ void DcModuleSet_AB(EnumSwitchStatus Set, u16 Volt, u16 Currt)
DcModuleCtrl.NeedCurrt = DcModuleAbility.MinCurrt * DcModuleManage.ValidNum; DcModuleCtrl.NeedCurrt = DcModuleAbility.MinCurrt * DcModuleManage.ValidNum;
DcModuleCtrl.CtrlFlag = 0; DcModuleCtrl.CtrlFlag = 0;
} }
else else
{ {
DcModuleCtrl.NeedVolt = Volt; DcModuleCtrl.NeedVolt = Volt;
DcModuleCtrl.NeedCurrt = Currt; //* (DcModuleManage.ValidNum / (DcModuleManage.ValidNum + DcModuleManage_B.ValidNum)); DcModuleCtrl.NeedCurrt = Currt; //* (DcModuleManage.ValidNum / (DcModuleManage.ValidNum + DcModuleManage_B.ValidNum));
...@@ -465,7 +469,7 @@ void DcModuleSet_AB(EnumSwitchStatus Set, u16 Volt, u16 Currt) ...@@ -465,7 +469,7 @@ void DcModuleSet_AB(EnumSwitchStatus Set, u16 Volt, u16 Currt)
DcModuleCtrl.NeedCurrt = DcModuleAbility.MinCurrt * DcModuleManage.ValidNum; DcModuleCtrl.NeedCurrt = DcModuleAbility.MinCurrt * DcModuleManage.ValidNum;
DcModuleCtrl.CtrlFlag = 0; DcModuleCtrl.CtrlFlag = 0;
} }
else else
{ {
DcModuleCtrl.NeedVolt = Volt; DcModuleCtrl.NeedVolt = Volt;
DcModuleCtrl_B.NeedVolt = Volt; DcModuleCtrl_B.NeedVolt = Volt;
......
...@@ -1122,7 +1122,7 @@ void TCUComm(void const * argument) ...@@ -1122,7 +1122,7 @@ void TCUComm(void const * argument)
// TCUCodeDone();//告警故障处理 // TCUCodeDone();//告警故障处理
// TCUSaveEventDone(); // TCUSaveEventDone();
//osDelay(10); osDelay(5);
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论