提交 b398fc44 作者: wysheng

完善智能分配

上级 e74c2db3
...@@ -58,7 +58,7 @@ extern void DcModuleCanInit(void); ...@@ -58,7 +58,7 @@ extern void DcModuleCanInit(void);
extern osMessageQId DcModeMsg; extern osMessageQId DcModeMsg;
void SendCmdToDcModule(u8 addr, u8 cmd); void SendCmdToDcModule(u8 addr, u8 cmd);
void SendDataToDcModule(u8 addr, u8 cmd, u32 volt,u32 current); void SendDataToDcModule(u8 addr, u8 cmd, u32 volt, u32 current);
void DcModuleManageProcess_SmartAllocation(void) void DcModuleManageProcess_SmartAllocation(void)
...@@ -113,8 +113,9 @@ void DcModuleManageProcess_SmartAllocation(void) ...@@ -113,8 +113,9 @@ void DcModuleManageProcess_SmartAllocation(void)
} }
} }
if(CheckTick == 0) CheckTick = GetSystemTick(); if (CheckTick == 0)
CheckTick = GetSystemTick();
if ((GetSystemTick() -CheckTick) < 100) if ((GetSystemTick() -CheckTick) < 100)
return; return;
...@@ -215,7 +216,9 @@ void DcModuleManageProcess_SmartAllocation(void) ...@@ -215,7 +216,9 @@ void DcModuleManageProcess_SmartAllocation(void)
} }
else if (DcModuleGroup[i].status == Hold_A) else if (DcModuleGroup[i].status == Hold_A)
{ {
if(DcModuleGroup[i].flag) continue; if (DcModuleGroup[i].flag)
continue;
Volt_A += DcModuleGroup[i].Voltage; Volt_A += DcModuleGroup[i].Voltage;
Currt_A += DcModuleGroup[i].Current; Currt_A += DcModuleGroup[i].Current;
Count_A += DcModuleGroup[i].ValidNum; Count_A += DcModuleGroup[i].ValidNum;
...@@ -223,7 +226,9 @@ void DcModuleManageProcess_SmartAllocation(void) ...@@ -223,7 +226,9 @@ void DcModuleManageProcess_SmartAllocation(void)
} }
else if (DcModuleGroup[i].status == Hold_B) else if (DcModuleGroup[i].status == Hold_B)
{ {
if(DcModuleGroup[i].flag) continue; if (DcModuleGroup[i].flag)
continue;
Volt_B += DcModuleGroup[i].Voltage; Volt_B += DcModuleGroup[i].Voltage;
Currt_B += DcModuleGroup[i].Current; Currt_B += DcModuleGroup[i].Current;
Count_B += DcModuleGroup[i].ValidNum; Count_B += DcModuleGroup[i].ValidNum;
...@@ -271,15 +276,19 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -271,15 +276,19 @@ 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;// static u32 Tick = 0; //
if(Tick==0) Tick=GetSystemTick();
if (Tick == 0)
Tick = GetSystemTick();
if ((GetSystemTick() -Tick) < 100) if ((GetSystemTick() -Tick) < 100)
{ {
return; return;
} }
Tick = GetSystemTick();
Tick = GetSystemTick();
static StructDcModuleUsedStatus status[4] = static StructDcModuleUsedStatus status[4] =
{ {
Invalid, Invalid, Invalid, Invalid Invalid, Invalid, Invalid, Invalid
...@@ -294,10 +303,11 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -294,10 +303,11 @@ void DcModuleCtrlProcess_SmartAllocation(void)
u8 addr; u8 addr;
u32 Volt = 0; u32 Volt = 0;
u8 Cmd = 0; u8 Cmd = 0;
//u32 Value = 0;
//u32 Value = 0;
Temp = 0; Temp = 0;
for (u8 i = 0; i < DcModuleGroupSize; i++) for (u8 i = 0; i < DcModuleGroupSize; i++)
{ {
if (status[i] != DcModuleGroup[i].status) if (status[i] != DcModuleGroup[i].status)
...@@ -305,9 +315,9 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -305,9 +315,9 @@ void DcModuleCtrlProcess_SmartAllocation(void)
Temp = 1; Temp = 1;
Volt = DcModuleAbility.MinVolt * 100; Volt = DcModuleAbility.MinVolt * 100;
if (DcModuleGroup[i].status == Valid) //释放模块和继电器 if (DcModuleGroup[i].status == Valid) //释放模块,模块关机
{ {
//关机 //关机, 检测电流, 释放继电器
if (status[i] == Hold_A) if (status[i] == Hold_A)
{ {
if (i == 0) if (i == 0)
...@@ -316,18 +326,6 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -316,18 +326,6 @@ void DcModuleCtrlProcess_SmartAllocation(void)
DcModuleManage.SetCurrt = DcModuleAbility.MinCurrt * 100; DcModuleManage.SetCurrt = DcModuleAbility.MinCurrt * 100;
DcModuleManage.Cmd = 0xAA; //关机 DcModuleManage.Cmd = 0xAA; //关机
} }
else if (i == 1)
{
GPIO_ResetBits(RELAY_K1K2_Port, RELAY_K1K2_Pin);
}
else if (i == 2)
{
GPIO_ResetBits(RELAY_K5K6_Port, RELAY_K5K6_Pin);
}
else // if(i == 3)
{
GPIO_ResetBits(RELAY_K3K4_Port, RELAY_K3K4_Pin);
}
} }
else if (status[i] == Hold_B) else if (status[i] == Hold_B)
{ {
...@@ -337,81 +335,38 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -337,81 +335,38 @@ void DcModuleCtrlProcess_SmartAllocation(void)
DcModuleManage_B.SetCurrt = DcModuleAbility.MinCurrt * 100; DcModuleManage_B.SetCurrt = DcModuleAbility.MinCurrt * 100;
DcModuleManage_B.Cmd = 0xAA; //关机 DcModuleManage_B.Cmd = 0xAA; //关机
} }
else if (i == 0)
{
GPIO_ResetBits(RELAY_K5K6_Port, RELAY_K5K6_Pin);
}
else if (i == 1)
{
GPIO_ResetBits(RELAY_K7K8_Port, RELAY_K7K8_Pin);
}
else // if(i == 3)
{
GPIO_ResetBits(RELAY_K9K10_Port, RELAY_K9K10_Pin);
}
} }
//Volt = DcModuleAbility.MinVolt * 100;
Cmd = 0xAA; //关机 Cmd = 0xAA; //关机
DcModuleGroup[i].flag = 0; DcModuleGroup[i].flag = 0;
} }
else if (DcModuleGroup[i].status == Hold_A) //分配到A枪的模块 else if (DcModuleGroup[i].status == Hold_A) //分配到A枪的模块
{ {
// 开机, 升压, 切换继电器
if (i != 0) //升压 if (i != 0) //升压
{ {
Volt = DcModuleManage.SetVolt; Volt = DcModuleManage.SetVolt;
} }
else if (status[i] == Hold_B)
/*if (status[i] == Hold_B) //释放连到B枪的继电器
{ {
if (i == 0) //处理模块0组被B枪占用
{ //GPIO_ResetBits(RELAY_K5K6_Port, RELAY_K5K6_Pin);
GPIO_ResetBits(RELAY_K5K6_Port, RELAY_K5K6_Pin); }
}
else if (i == 1)
{
GPIO_ResetBits(RELAY_K7K8_Port, RELAY_K7K8_Pin);//不会走到这里
}
else if (i == 2)
{
//不会走到这里
}
else if (i == 3)
{
GPIO_ResetBits(RELAY_K9K10_Port, RELAY_K9K10_Pin);//不会走到这里
}
}*/
Cmd = 0x55; //开机 Cmd = 0x55; //开机
} }
else if (DcModuleGroup[i].status == Hold_B) else if (DcModuleGroup[i].status == Hold_B)
{ {
// 开机, 升压, 切换继电器
if (i != 2) //升压 if (i != 2) //升压
{ {
Volt = DcModuleManage_B.SetVolt; Volt = DcModuleManage_B.SetVolt;
} }
else if (status[i] == Hold_A)
/*if (status[i] == Hold_A) //释放连到A枪的继电器
{ {
if (i == 0) //处理模块组 2 被A枪占用
{ //GPIO_ResetBits(RELAY_K5K6_Port, RELAY_K5K6_Pin);
//不会走到这里 }
}
else if (i == 1)
{
GPIO_ResetBits(RELAY_K1K2_Port, RELAY_K1K2_Pin); //不会走到这里
}
else if (i == 2)
{
GPIO_ResetBits(RELAY_K5K6_Port, RELAY_K5K6_Pin);
}
else if (i == 3)
{
GPIO_ResetBits(RELAY_K3K4_Port, RELAY_K3K4_Pin); //不会走到这里
}
}*/
Cmd = 0x55; //开机 Cmd = 0x55; //开机
} }
...@@ -424,43 +379,7 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -424,43 +379,7 @@ void DcModuleCtrlProcess_SmartAllocation(void)
{ {
addr = DcModuleGroup[i].modules[j].addr; addr = DcModuleGroup[i].modules[j].addr;
/*DataSend.Id = 0x1307C080 + addr; SendCmdToDcModule(addr, Cmd);
DataSend.Len = 8;
DataSend.Data[0] = 0x00;
DataSend.Data[1] = 0x00;
Value = DcModuleAbility.MinCurrt * 100;
DataSend.Data[2] = (u8) (Value >> 8);
DataSend.Data[3] = (u8) (Value >> 0);
Value = Volt; //DcModuleAbility.MinVolt * 100;
DataSend.Data[4] = (u8) (Value >> 24);
DataSend.Data[5] = (u8) (Value >> 16);
DataSend.Data[6] = (u8) (Value >> 8);
DataSend.Data[7] = (u8) (Value >> 0);
//放入队列
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);
}*/
SendDataToDcModule(addr,Cmd,Volt,DcModuleAbility.MinCurrt * 100);
} }
status[i] = DcModuleGroup[i].status; status[i] = DcModuleGroup[i].status;
...@@ -470,127 +389,68 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -470,127 +389,68 @@ void DcModuleCtrlProcess_SmartAllocation(void)
if (Temp) if (Temp)
return; return;
Temp = 0; Temp = 0;
//检测升压完成
//检测升压 或者 降流
for (u8 i = 0; i < DcModuleGroupSize; i++) for (u8 i = 0; i < DcModuleGroupSize; i++)
{ {
if (DcModuleGroup[i].status == Hold_A && i != 0) if (DcModuleGroup[i].status == Hold_A && i != 0)
{ {
if(abs((s32)(DcModuleGroup[i].Voltage*100) - (s32)DcModuleManage.SetVolt) >10000) //差距在10V以内,升压完成
if (abs((s16) (DcModuleGroup[i].Voltage) - (s16) (DcModuleManage.SetVolt / 100)) > 100) //差距在10V以内,升压完成
{ {
Temp++; Temp++;
for (u8 j = 0; j < DcModuleGroup[i].num; j++) for (u8 j = 0; j < DcModuleGroup[i].num; j++)
{ {
addr = DcModuleGroup[i].modules[j].addr; addr = DcModuleGroup[i].modules[j].addr;
/*DataSend.Id = 0x1307C080 + addr; DcModuleManage.Cmd = 0x55; //开机
DataSend.Len = 8; SendDataToDcModule(addr, DcModuleManage.Cmd, DcModuleManage.SetVolt,
DataSend.Data[0] = 0x00; DcModuleAbility.MinCurrt * 100);
DataSend.Data[1] = 0x00;
Value = DcModuleAbility.MinCurrt * 100;
DataSend.Data[2] = (u8) (Value >> 8);
DataSend.Data[3] = (u8) (Value >> 0);
Value = DcModuleManage.SetVolt;
DataSend.Data[4] = (u8) (Value >> 24);
DataSend.Data[5] = (u8) (Value >> 16);
DataSend.Data[6] = (u8) (Value >> 8);
DataSend.Data[7] = (u8) (Value >> 0);
//放入队列
if (pdTRUE != xQueueSend(DcModeMsg, &DataSend, 0))
{
//osDelay(10);
}
DcModuleManage.Cmd = 0x55; //开机
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] = DcModuleManage.Cmd;
//放入队列
if (pdTRUE != xQueueSend(DcModeMsg, &DataSend, 0))
{
//osDelay(10);
}*/
DcModuleManage.Cmd = 0x55; //开机
SendDataToDcModule(addr,DcModuleManage.Cmd,DcModuleManage.SetVolt,DcModuleAbility.MinCurrt * 100);
} }
} }
else else
{ {
DcModuleGroup[i].flag = 0; DcModuleGroup[i].flag = 0;
} }
} }
else if (DcModuleGroup[i].status == Hold_B && i != 2) else if (DcModuleGroup[i].status == Hold_B && i != 2)
{ {
if(abs((s32)(DcModuleGroup[i].Voltage*100) - (s32)DcModuleManage_B.SetVolt) >10000)//差距在10V以内,升压完成 if (abs((s32) (DcModuleGroup[i].Voltage) - (s32) (DcModuleManage_B.SetVolt / 100)) > 100) //差距在10V以内,升压完成
{ {
Temp++; Temp++;
for (u8 j = 0; j < DcModuleGroup[i].num; j++) for (u8 j = 0; j < DcModuleGroup[i].num; j++)
{ {
addr = DcModuleGroup[i].modules[j].addr; addr = DcModuleGroup[i].modules[j].addr;
/*DataSend.Id = 0x1307C080 + addr; DcModuleManage_B.Cmd = 0x55; //开机
DataSend.Len = 8; SendDataToDcModule(addr, DcModuleManage_B.Cmd, DcModuleManage_B.SetVolt,
DataSend.Data[0] = 0x00; DcModuleAbility.MinCurrt * 100);
DataSend.Data[1] = 0x00;
Value = DcModuleAbility.MinCurrt * 100;
DataSend.Data[2] = (u8) (Value >> 8);
DataSend.Data[3] = (u8) (Value >> 0);
Value = DcModuleManage_B.SetVolt;
DataSend.Data[4] = (u8) (Value >> 24);
DataSend.Data[5] = (u8) (Value >> 16);
DataSend.Data[6] = (u8) (Value >> 8);
DataSend.Data[7] = (u8) (Value >> 0);
//放入队列
if (pdTRUE != xQueueSend(DcModeMsg, &DataSend, 0))
{
//osDelay(10);
}
DcModuleManage_B.Cmd = 0x55; //开机
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] = DcModuleManage_B.Cmd;
//放入队列
if (pdTRUE != xQueueSend(DcModeMsg, &DataSend, 0))
{
//osDelay(10);
}*/
DcModuleManage_B.Cmd = 0x55; //开机
SendDataToDcModule(addr,DcModuleManage_B.Cmd,DcModuleManage_B.SetVolt,DcModuleAbility.MinCurrt * 100);
} }
} }
else else
{ {
DcModuleGroup[i].flag = 0; DcModuleGroup[i].flag = 0;
} }
} }
else if (DcModuleGroup[i].status == Valid && i != 2 && i != 0)
{
if (DcModuleGroup[i].Current > 50) //大于5A
{
Temp++;
}
}
} }
if (Temp) if (Temp)
return; return;
Temp = 0; Temp = 0;
//切换继电器输出 //切换继电器输出
...@@ -603,16 +463,44 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -603,16 +463,44 @@ void DcModuleCtrlProcess_SmartAllocation(void)
if (DcModuleGroup[i].status == Valid) if (DcModuleGroup[i].status == Valid)
{ {
//切换继电器 //切换继电器
if (status[i] == Hold_A) if (status1[i] == Hold_A)
{ {
if (i == 0)
{
}
else if (i == 1)
{
GPIO_ResetBits(RELAY_K1K2_Port, RELAY_K1K2_Pin);
}
else if (i == 2)
{
GPIO_ResetBits(RELAY_K5K6_Port, RELAY_K5K6_Pin);
}
else // if(i == 3)
{
GPIO_ResetBits(RELAY_K3K4_Port, RELAY_K3K4_Pin);
}
} }
else if (status[i] == Hold_B) else if (status1[i] == Hold_B)
{ {
if (i == 2)
{
}
else if (i == 0)
{
GPIO_ResetBits(RELAY_K5K6_Port, RELAY_K5K6_Pin);
}
else if (i == 1)
{
GPIO_ResetBits(RELAY_K7K8_Port, RELAY_K7K8_Pin);
}
else if (i == 3)
{
GPIO_ResetBits(RELAY_K9K10_Port, RELAY_K9K10_Pin);
}
} }
} }
else if (DcModuleGroup[i].status == Hold_A) else if (DcModuleGroup[i].status == Hold_A)
{ {
...@@ -656,18 +544,19 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -656,18 +544,19 @@ void DcModuleCtrlProcess_SmartAllocation(void)
} }
else else
{ {
}
}
status1[i] = DcModuleGroup[i].status;
} }
status1[i] = DcModuleGroup[i].status;
} }
if (Temp) if (Temp)
return; return;
if (LastFlag_A != DcModuleCtrl.CtrlFlag) if (LastFlag_A != DcModuleCtrl.CtrlFlag)
{ {
LastFlag_A = DcModuleCtrl.CtrlFlag; LastFlag_A = DcModuleCtrl.CtrlFlag;
...@@ -736,46 +625,8 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -736,46 +625,8 @@ void DcModuleCtrlProcess_SmartAllocation(void)
for (u8 j = 0; j < DcModuleGroup[i].num; j++) for (u8 j = 0; j < DcModuleGroup[i].num; j++)
{ {
addr = DcModuleGroup[i].modules[j].addr; addr = DcModuleGroup[i].modules[j].addr;
/*DataSend.Id = 0x1307C080 + addr;
DataSend.Len = 8;
DataSend.Data[0] = 0x00;
DataSend.Data[1] = 0x00;
Temp = DcModuleManage.SetCurrt;
DataSend.Data[2] = (u8) (Temp >> 8);
DataSend.Data[3] = (u8) (Temp >> 0);
Temp = DcModuleManage.SetVolt;
DataSend.Data[4] = (u8) (Temp >> 24);
DataSend.Data[5] = (u8) (Temp >> 16);
DataSend.Data[6] = (u8) (Temp >> 8);
DataSend.Data[7] = (u8) (Temp >> 0);
//放入队列
if (pdTRUE != xQueueSend(DcModeMsg, &DataSend, 0))
{
//osDelay(10);
}
DcModuleManage.Cmd = 0x55; //开机 DcModuleManage.Cmd = 0x55; //开机
DataSend.Id = 0x1307C080 + addr; SendDataToDcModule(addr, DcModuleManage.Cmd, DcModuleManage.SetVolt, DcModuleManage.SetCurrt);
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] = DcModuleManage.Cmd;
//放入队列
if (pdTRUE != xQueueSend(DcModeMsg, &DataSend, 0))
{
//osDelay(10);
}*/
DcModuleManage.Cmd = 0x55;//开机
SendDataToDcModule(addr,DcModuleManage.Cmd,DcModuleManage.SetVolt,DcModuleManage.SetCurrt);
} }
} }
} }
...@@ -832,45 +683,9 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -832,45 +683,9 @@ void DcModuleCtrlProcess_SmartAllocation(void)
{ {
addr = DcModuleGroup[i].modules[j].addr; addr = DcModuleGroup[i].modules[j].addr;
/*DataSend.Id = 0x1307C080 + addr;
DataSend.Len = 8;
DataSend.Data[0] = 0x00;
DataSend.Data[1] = 0x00;
Temp = DcModuleManage_B.SetCurrt;
DataSend.Data[2] = (u8) (Temp >> 8);
DataSend.Data[3] = (u8) (Temp >> 0);
Temp = DcModuleManage_B.SetVolt;
DataSend.Data[4] = (u8) (Temp >> 24);
DataSend.Data[5] = (u8) (Temp >> 16);
DataSend.Data[6] = (u8) (Temp >> 8);
DataSend.Data[7] = (u8) (Temp >> 0);
//放入队列
if (pdTRUE != xQueueSend(DcModeMsg, &DataSend, 0))
{
//osDelay(10);
}
DcModuleManage_B.Cmd = 0x55; //开机 DcModuleManage_B.Cmd = 0x55; //开机
DataSend.Id = 0x1307C080 + addr; SendDataToDcModule(addr, DcModuleManage_B.Cmd, DcModuleManage_B.SetVolt,
DataSend.Len = 8; DcModuleManage_B.SetCurrt);
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] = DcModuleManage_B.Cmd;
//放入队列
if (pdTRUE != xQueueSend(DcModeMsg, &DataSend, 0))
{
//osDelay(10);
}*/
DcModuleManage_B.Cmd = 0x55;//开机
SendDataToDcModule(addr,DcModuleManage_B.Cmd,DcModuleManage_B.SetVolt,DcModuleManage_B.SetCurrt);
} }
} }
...@@ -880,24 +695,26 @@ void DcModuleCtrlProcess_SmartAllocation(void) ...@@ -880,24 +695,26 @@ void DcModuleCtrlProcess_SmartAllocation(void)
} }
} }
void release_DcModule(u8 flag) void release_DcModule(u8 flag)
{ {
for (u8 i = 0; i < 4; i++) for (u8 i = 0; i < 4; i++)
{ {
if(flag == 1) if (flag == 1)
{ {
if(DcModuleGroup[i].status == Hold_A) if (DcModuleGroup[i].status == Hold_A)
{ {
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;
} }
} }
else if(flag == 2) else if (flag == 2)
{ {
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;
...@@ -907,11 +724,13 @@ void release_DcModule(u8 flag) ...@@ -907,11 +724,13 @@ void release_DcModule(u8 flag)
} }
} }
void SendDataToDcModule(u8 addr, u8 cmd, u32 volt,u32 current)
void SendDataToDcModule(u8 addr, u8 cmd, u32 volt, u32 current)
{ {
StructDcModuleSend DataSend; StructDcModuleSend DataSend;
u32 Temp; u32 Temp;
DataSend.Id = 0x1307C080 + addr; DataSend.Id = 0x1307C080 + addr;
DataSend.Len = 8; DataSend.Len = 8;
DataSend.Data[0] = 0x00; DataSend.Data[0] = 0x00;
...@@ -929,7 +748,7 @@ void SendDataToDcModule(u8 addr, u8 cmd, u32 volt,u32 current) ...@@ -929,7 +748,7 @@ void SendDataToDcModule(u8 addr, u8 cmd, u32 volt,u32 current)
//放入队列 //放入队列
if (pdTRUE != xQueueSend(DcModeMsg, &DataSend, 0)) if (pdTRUE != xQueueSend(DcModeMsg, &DataSend, 0))
{ {
//osDelay(10); //osDelay(10);
} }
DataSend.Id = 0x1307C080 + addr; DataSend.Id = 0x1307C080 + addr;
...@@ -946,7 +765,31 @@ void SendDataToDcModule(u8 addr, u8 cmd, u32 volt,u32 current) ...@@ -946,7 +765,31 @@ void SendDataToDcModule(u8 addr, u8 cmd, u32 volt,u32 current)
//放入队列 //放入队列
if (pdTRUE != xQueueSend(DcModeMsg, &DataSend, 0)) if (pdTRUE != xQueueSend(DcModeMsg, &DataSend, 0))
{ {
//osDelay(10); //osDelay(10);
}
}
void SendCmdToDcModule(u8 addr, u8 cmd)
{
StructDcModuleSend DataSend;
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);
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论