Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
DC360_1drap3_xiaoju_V1
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
丁雨邯
DC360_1drap3_xiaoju_V1
Commits
39e8b28b
提交
39e8b28b
authored
6月 02, 2020
作者:
wysheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加中兴模块协议
上级
24b380b5
显示空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
424 行增加
和
90 行删除
+424
-90
Drv_DcModule.h
DcPillar/Src/Drivers/Drv_DcModule.h
+3
-0
Drv_SmartAllocation.c
DcPillar/Src/SmartAllocation/Drv_SmartAllocation.c
+351
-64
Drv_SmartAllocation.h
DcPillar/Src/SmartAllocation/Drv_SmartAllocation.h
+4
-0
Drv_SmartAllocation_DcModule.c
DcPillar/Src/SmartAllocation/Drv_SmartAllocation_DcModule.c
+66
-26
没有找到文件。
DcPillar/Src/Drivers/Drv_DcModule.h
浏览文件 @
39e8b28b
...
@@ -4,6 +4,9 @@
...
@@ -4,6 +4,9 @@
#include "Global.h"
#include "Global.h"
#define DcModule_ZhongXing 1
#define DcModule_BaudRate (250)
#define DcModule_BaudRate (250)
#define DcModule_Can eCan_1
#define DcModule_Can eCan_1
...
...
DcPillar/Src/SmartAllocation/Drv_SmartAllocation.c
浏览文件 @
39e8b28b
...
@@ -5,6 +5,9 @@
...
@@ -5,6 +5,9 @@
#include "Drv_SmartAllocation.h"
#include "Drv_SmartAllocation.h"
#include "Global.h"
#include "Global.h"
#include "Drv_BoardIo.h"
#include "Drv_BoardIo.h"
#include "Thd_Charge.h"
#include "Thd_Charge_B.h"
StructDcModuleGroup
DcModuleGroup
[]
=
StructDcModuleGroup
DcModuleGroup
[]
=
{
{
...
@@ -59,6 +62,10 @@ extern osMessageQId DcModeMsg;
...
@@ -59,6 +62,10 @@ 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
SendCheckToDcModule
(
void
);
void
DcModuleGroupDateInit
(
void
);
u8
DcModuleGetStatus
(
u8
addr
);
void
DcModuleSetGroupNum
(
void
);
extern
void
GetNXRAcVoltMsg
(
u32
addr
);
extern
void
GetNXRAcVoltMsg
(
u32
addr
);
...
@@ -75,47 +82,7 @@ void DcModuleManageProcess_SmartAllocation(void)
...
@@ -75,47 +82,7 @@ void DcModuleManageProcess_SmartAllocation(void)
u8
status
;
u8
status
;
StructDcModuleSend
DataSend
;
SendCheckToDcModule
();
static
u32
StaticTick
=
0
;
if
(
StaticTick
==
0
)
StaticTick
=
GetSystemTick
();
if
((
GetSystemTick
()
-
StaticTick
)
>
1000
)
{
StaticTick
=
GetSystemTick
();
for
(
i
=
0
;
i
<
DcModuleGroupSize
;
i
++
)
{
for
(
j
=
0
;
j
<
DcModuleGroup
[
i
].
num
;
j
++
)
{
addr
=
DcModuleGroup
[
i
].
modules
[
j
].
addr
;
DataSend
.
Id
=
0x1307C080
+
addr
;
DataSend
.
Len
=
8
;
DataSend
.
Data
[
0
]
=
0x01
;
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
]
=
0x00
;
//DcModuleSendMsg(&DataSend);
//放入队列
if
(
pdTRUE
!=
xQueueSend
(
DcModeMsg
,
&
DataSend
,
0
))
{
osDelay
(
10
);
}
}
}
}
if
(
CheckTick
==
0
)
CheckTick
=
GetSystemTick
();
if
((
GetSystemTick
()
-
CheckTick
)
<
100
)
if
((
GetSystemTick
()
-
CheckTick
)
<
100
)
return
;
return
;
...
@@ -136,7 +103,7 @@ void DcModuleManageProcess_SmartAllocation(void)
...
@@ -136,7 +103,7 @@ void DcModuleManageProcess_SmartAllocation(void)
}
}
else
else
{
{
if
(
0x0002
!=
(
DcModuleStatus_ALL
[
i
].
State
&
0x0002
)
)
if
(
DcModuleGetStatus
(
i
)
/*0x0002 != (DcModuleStatus_ALL[i].State & 0x0002)*/
)
{
{
DcModuleManage_All
.
ValidFlag
|=
Flag
;
DcModuleManage_All
.
ValidFlag
|=
Flag
;
Count
++
;
Count
++
;
...
@@ -393,11 +360,11 @@ void DcModuleCtrlProcess_SmartAllocation(void)
...
@@ -393,11 +360,11 @@ void DcModuleCtrlProcess_SmartAllocation(void)
continue
;
continue
;
}
}
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;
DcModuleGroup
[
i
].
modules
[
j
].
cmd
=
Cmd
;
//
DcModuleGroup[i].modules[j].cmd = Cmd;
SendDataToDcModule
(
addr
,
Cmd
,
Volt
,
Current
);
SendDataToDcModule
(
i
,
Cmd
,
Volt
,
Current
);
}
}
status
[
i
]
=
DcModuleGroup
[
i
].
status
;
status
[
i
]
=
DcModuleGroup
[
i
].
status
;
...
@@ -418,13 +385,13 @@ void DcModuleCtrlProcess_SmartAllocation(void)
...
@@ -418,13 +385,13 @@ void DcModuleCtrlProcess_SmartAllocation(void)
{
{
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;
DcModuleManage
.
Cmd
=
0x55
;
//开机
DcModuleManage
.
Cmd
=
0x55
;
//开机
DcModuleGroup
[
i
].
modules
[
j
].
cmd
=
0x55
;
//
DcModuleGroup[i].modules[j].cmd = 0x55;
SendDataToDcModule
(
addr
,
DcModuleManage
.
Cmd
,
DcModuleManage
.
SetVolt
,
SendDataToDcModule
(
i
,
DcModuleManage
.
Cmd
,
DcModuleManage
.
SetVolt
,
DcModuleAbility
.
MinCurrt
*
100
);
DcModuleAbility
.
MinCurrt
*
100
);
}
}
}
}
...
@@ -442,13 +409,13 @@ void DcModuleCtrlProcess_SmartAllocation(void)
...
@@ -442,13 +409,13 @@ void DcModuleCtrlProcess_SmartAllocation(void)
{
{
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;
DcModuleManage_B
.
Cmd
=
0x55
;
//开机
DcModuleManage_B
.
Cmd
=
0x55
;
//开机
DcModuleGroup
[
i
].
modules
[
j
].
cmd
=
0x55
;
//
DcModuleGroup[i].modules[j].cmd = 0x55;
SendDataToDcModule
(
addr
,
DcModuleManage_B
.
Cmd
,
DcModuleManage_B
.
SetVolt
,
SendDataToDcModule
(
i
,
DcModuleManage_B
.
Cmd
,
DcModuleManage_B
.
SetVolt
,
DcModuleAbility
.
MinCurrt
*
100
);
DcModuleAbility
.
MinCurrt
*
100
);
}
}
}
}
...
@@ -462,10 +429,10 @@ void DcModuleCtrlProcess_SmartAllocation(void)
...
@@ -462,10 +429,10 @@ void DcModuleCtrlProcess_SmartAllocation(void)
if
(
DcModuleGroup
[
i
].
Current
>
50
)
//电流小于5A,将降流完成, 可以释放继电器
if
(
DcModuleGroup
[
i
].
Current
>
50
)
//电流小于5A,将降流完成, 可以释放继电器
{
{
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;
DcModuleGroup
[
i
].
modules
[
j
].
cmd
=
0xAA
;
//
DcModuleGroup[i].modules[j].cmd = 0xAA;
SendCmdToDcModule
(
addr
,
0xAA
);
//关机
SendCmdToDcModule
(
addr
,
0xAA
);
//关机
}
}
}
}
...
@@ -644,12 +611,12 @@ void DcModuleCtrlProcess_SmartAllocation(void)
...
@@ -644,12 +611,12 @@ void DcModuleCtrlProcess_SmartAllocation(void)
if
(
DcModuleGroup
[
i
].
status
!=
Hold_A
)
if
(
DcModuleGroup
[
i
].
status
!=
Hold_A
)
continue
;
continue
;
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;
DcModuleManage
.
Cmd
=
0x55
;
//开机
DcModuleManage
.
Cmd
=
0x55
;
//开机
DcModuleGroup
[
i
].
modules
[
j
].
cmd
=
0x55
;
//
DcModuleGroup[i].modules[j].cmd = 0x55;
SendDataToDcModule
(
addr
,
DcModuleManage
.
Cmd
,
DcModuleManage
.
SetVolt
,
DcModuleManage
.
SetCurrt
);
SendDataToDcModule
(
i
,
DcModuleManage
.
Cmd
,
DcModuleManage
.
SetVolt
,
DcModuleManage
.
SetCurrt
);
}
}
}
}
}
}
...
@@ -749,11 +716,20 @@ void release_DcModule(u8 flag)
...
@@ -749,11 +716,20 @@ void release_DcModule(u8 flag)
}
}
void
SendDataToDcModule
(
u8
addr
,
u8
cmd
,
u32
volt
,
u32
current
)
void
SendDataToDcModule
_Incre
(
u8
group_index
,
u8
cmd
,
u32
volt
,
u32
current
)
{
{
StructDcModuleSend
DataSend
;
StructDcModuleSend
DataSend
;
u32
Temp
;
u32
Temp
=
0
;
u8
addr
=
0
;
if
(
group_index
>
3
)
return
;
for
(
u8
j
=
0
;
j
<
DcModuleGroup
[
group_index
].
num
;
j
++
)
{
addr
=
DcModuleGroup
[
group_index
].
modules
[
j
].
addr
;
DcModuleGroup
[
group_index
].
modules
[
j
].
cmd
=
cmd
;
DataSend
.
Id
=
0x1307C080
+
addr
;
DataSend
.
Id
=
0x1307C080
+
addr
;
DataSend
.
Len
=
8
;
DataSend
.
Len
=
8
;
...
@@ -793,14 +769,100 @@ void SendDataToDcModule(u8 addr, u8 cmd, u32 volt, u32 current)
...
@@ -793,14 +769,100 @@ void SendDataToDcModule(u8 addr, u8 cmd, u32 volt, u32 current)
{
{
//osDelay(10);
//osDelay(10);
}
}
}
}
}
void
SendDataToDcModule_ZhongXing
(
u8
group_index
,
u8
cmd
,
u32
volt
,
u32
current
)
{
void
SendCmdToDcModule
(
u8
addr
,
u8
cmd
)
StructDcModuleSend
DataSend
;
u32
Temp
=
0
;
u8
addr
=
0
;
u8
sendCmd
=
0
;
if
(
group_index
>
3
)
return
;
if
(
cmd
==
0xAA
)
//关机
{
sendCmd
=
0x02
;
}
else
if
(
cmd
==
0x55
)
//开机
{
/*
0x01 --- 快速开机( 绝缘检测阶段使用)
0x02 --- 停止充电
0x03 --- 软起开机( 预启动阶段使用)
0x04 --- 预留
0x05 --- 参数修改
0x06 --- 停止充电, 自动清除分组组号
*/
sendCmd
=
0x01
;
if
(
ChargeCtrl
.
CurProcess
==
eChgPro_ChgRun
&&
DcModuleGroup
[
group_index
].
status
==
Hold_A
)
{
sendCmd
=
0x05
;
}
else
if
(
ChargeCtrl_B
.
CurProcess
==
eChgPro_ChgRun
&&
DcModuleGroup
[
group_index
].
status
==
Hold_B
)
{
sendCmd
=
0x05
;
}
}
for
(
u8
j
=
0
;
j
<
DcModuleGroup
[
group_index
].
num
;
j
++
)
{
addr
=
DcModuleGroup
[
group_index
].
modules
[
j
].
addr
;
DcModuleGroup
[
group_index
].
modules
[
j
].
cmd
=
cmd
;
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
);
//放入队列
if
(
pdTRUE
!=
xQueueSend
(
DcModeMsg
,
&
DataSend
,
0
))
{
//osDelay(10);
}
}
}
}
void
SendDataToDcModule
(
u8
addr
,
u8
cmd
,
u32
volt
,
u32
current
)
{
{
#if DcModule_ZhongXing
SendDataToDcModule_ZhongXing
(
addr
,
cmd
,
volt
,
current
);
#else
SendDataToDcModule_Incre
(
addr
,
cmd
,
volt
,
current
);
#endif
}
void
SendCmdToDcModule_Incre
(
u8
group_index
,
u8
cmd
)
{
StructDcModuleSend
DataSend
;
StructDcModuleSend
DataSend
;
u8
addr
=
0
;
if
(
group_index
>
3
)
return
;
for
(
u8
j
=
0
;
j
<
DcModuleGroup
[
group_index
].
num
;
j
++
)
{
addr
=
DcModuleGroup
[
group_index
].
modules
[
j
].
addr
;
DcModuleGroup
[
group_index
].
modules
[
j
].
cmd
=
cmd
;
DataSend
.
Id
=
0x1307C080
+
addr
;
DataSend
.
Id
=
0x1307C080
+
addr
;
DataSend
.
Len
=
8
;
DataSend
.
Len
=
8
;
DataSend
.
Data
[
0
]
=
0x02
;
DataSend
.
Data
[
0
]
=
0x02
;
...
@@ -817,6 +879,231 @@ void SendCmdToDcModule(u8 addr, u8 cmd)
...
@@ -817,6 +879,231 @@ void SendCmdToDcModule(u8 addr, u8 cmd)
{
{
//osDelay(10);
//osDelay(10);
}
}
}
}
void
SendCmdToDcModule_ZhongXing
(
u8
group_index
,
u8
cmd
)
{
}
void
SendCmdToDcModule
(
u8
addr
,
u8
cmd
)
{
#if DcModule_ZhongXing
//SendCmdToDcModule_ZhongXing(addr,cmd);
SendDataToDcModule_ZhongXing
(
addr
,
cmd
,
0
,
0
);
#else
SendCmdToDcModule_Incre
(
addr
,
cmd
);
#endif
}
void
SendCheckToDcModule_Incre
(
void
)
{
StructDcModuleSend
DataSend
;
u8
addr
=
0
;
static
u32
StaticTick
=
0
;
if
((
GetSystemTick
()
-
StaticTick
)
>
1000
)
{
StaticTick
=
GetSystemTick
();
for
(
u8
i
=
0
;
i
<
DcModuleGroupSize
;
i
++
)
{
for
(
u8
j
=
0
;
j
<
DcModuleGroup
[
i
].
num
;
j
++
)
{
addr
=
DcModuleGroup
[
i
].
modules
[
j
].
addr
;
DataSend
.
Id
=
0x1307C080
+
addr
;
DataSend
.
Len
=
8
;
DataSend
.
Data
[
0
]
=
0x01
;
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
]
=
0x00
;
//DcModuleSendMsg(&DataSend);
//放入队列
if
(
pdTRUE
!=
xQueueSend
(
DcModeMsg
,
&
DataSend
,
0
))
{
osDelay
(
10
);
}
}
}
}
}
void
SendCheckToDcModule_ZhongXing
(
void
)
{
//心跳帧
StructDcModuleSend
DataSend
;
u16
addr
=
0
;
static
u32
StaticTick
=
0
;
if
((
GetSystemTick
()
-
StaticTick
)
>
1000
)
{
StaticTick
=
GetSystemTick
();
for
(
u8
i
=
0
;
i
<
DcModuleGroupSize
;
i
++
)
{
if
(
DcModuleStatus_ALL
[
i
].
Temp
==
0
)
//未分组
{
DcModuleSetGroupNum
();
continue
;
}
for
(
u8
j
=
0
;
j
<
DcModuleGroup
[
i
].
num
;
j
++
)
{
addr
=
DcModuleGroup
[
i
].
modules
[
j
].
addr
;
DataSend
.
Id
=
0x180160A0
|
(
addr
<<
8
);
DataSend
.
Len
=
8
;
DataSend
.
Data
[
0
]
=
0x00
;
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
]
=
0x00
;
//DcModuleSendMsg(&DataSend);
//放入队列
if
(
pdTRUE
!=
xQueueSend
(
DcModeMsg
,
&
DataSend
,
0
))
{
//osDelay(10);
}
}
}
}
}
void
SendCheckToDcModule
(
void
)
{
#if DcModule_ZhongXing
SendCheckToDcModule_ZhongXing
();
#else
SendCheckToDcModule_Incre
();
#endif
}
void
DcModuleGroupDateInit_Incre
(
void
)
{
memset
(
&
DcModuleGroup
,
0
,
sizeof
(
DcModuleGroup
));
DcModuleGroup
[
0
].
num
=
2
;
DcModuleGroup
[
1
].
num
=
1
;
DcModuleGroup
[
2
].
num
=
2
;
DcModuleGroup
[
3
].
num
=
1
;
DcModuleGroup
[
0
].
modules
[
0
].
addr
=
0x01
;
DcModuleGroup
[
0
].
modules
[
1
].
addr
=
0x02
;
DcModuleGroup
[
1
].
modules
[
0
].
addr
=
0x03
;
DcModuleGroup
[
2
].
modules
[
0
].
addr
=
0x04
;
DcModuleGroup
[
2
].
modules
[
1
].
addr
=
0x05
;
DcModuleGroup
[
3
].
modules
[
0
].
addr
=
0x06
;
}
void
DcModuleGroupDateInit_ZhongXing
(
void
)
{
memset
(
&
DcModuleGroup
,
0
,
sizeof
(
DcModuleGroup
));
DcModuleGroup
[
0
].
num
=
2
;
DcModuleGroup
[
1
].
num
=
2
;
DcModuleGroup
[
2
].
num
=
2
;
DcModuleGroup
[
3
].
num
=
2
;
DcModuleGroup
[
0
].
modules
[
0
].
addr
=
0x00
;
DcModuleGroup
[
0
].
modules
[
1
].
addr
=
0x01
;
DcModuleGroup
[
1
].
modules
[
0
].
addr
=
0x02
;
DcModuleGroup
[
1
].
modules
[
1
].
addr
=
0x03
;
DcModuleGroup
[
2
].
modules
[
0
].
addr
=
0x04
;
DcModuleGroup
[
2
].
modules
[
1
].
addr
=
0x05
;
DcModuleGroup
[
3
].
modules
[
0
].
addr
=
0x06
;
DcModuleGroup
[
3
].
modules
[
1
].
addr
=
0x07
;
}
void
DcModuleGroupDateInit
(
void
)
{
#if DcModule_ZhongXing
DcModuleGroupDateInit_ZhongXing
();
#else
DcModuleGroupDateInit_Incre
();
#endif
}
}
u8
DcModuleGetStatus_Incre
(
u8
addr
)
{
if
(
0x0002
!=
(
DcModuleStatus_ALL
[
addr
].
State
&
0x0002
))
{
return
TRUE
;
}
else
{
return
FALSE
;
}
}
u8
DcModuleGetStatus_ZhongXing
(
u8
addr
)
{
if
(
0x0000
!=
(
DcModuleStatus_ALL
[
addr
].
State
&
0xFE10
))
{
return
TRUE
;
}
else
{
return
FALSE
;
}
}
u8
DcModuleGetStatus
(
u8
addr
)
{
#if DcModule_ZhongXing
return
DcModuleGetStatus_Incre
(
addr
);
#else
return
DcModuleGetStatus_ZhongXing
(
addr
);
#endif
}
void
DcModuleSetGroupNum
(
void
)
//中兴模块分组设置
{
StructDcModuleSend
DataSend
;
u16
addr
=
0
;
for
(
u8
i
=
0
;
i
<
DcModuleGroupSize
;
i
++
)
{
addr
=
DcModuleGroup
[
i
].
modules
[
0
].
addr
;
DataSend
.
Id
=
0x180460A0
|
(
addr
<<
8
);
DataSend
.
Len
=
8
;
DataSend
.
Data
[
0
]
=
0x28
;
DataSend
.
Data
[
1
]
=
i
+
1
;
DataSend
.
Data
[
2
]
=
0x02
;
DataSend
.
Data
[
3
]
=
0x60
|
DcModuleGroup
[
i
].
modules
[
0
].
addr
;
DataSend
.
Data
[
4
]
=
0x60
|
DcModuleGroup
[
i
].
modules
[
1
].
addr
;
DataSend
.
Data
[
5
]
=
0x00
;
DataSend
.
Data
[
6
]
=
0x00
;
DataSend
.
Data
[
7
]
=
0x00
;
//DcModuleSendMsg(&DataSend);
//放入队列
if
(
pdTRUE
!=
xQueueSend
(
DcModeMsg
,
&
DataSend
,
0
))
{
//osDelay(10);
}
}
}
DcPillar/Src/SmartAllocation/Drv_SmartAllocation.h
浏览文件 @
39e8b28b
...
@@ -44,4 +44,8 @@ typedef struct
...
@@ -44,4 +44,8 @@ typedef struct
extern
StructDcModuleGroup
DcModuleGroup
[];
extern
StructDcModuleGroup
DcModuleGroup
[];
extern
void
DcModuleGroupDateInit
(
void
);
#endif
/*__DRV_SMARTALLOCATION_H__*/
#endif
/*__DRV_SMARTALLOCATION_H__*/
DcPillar/Src/SmartAllocation/Drv_SmartAllocation_DcModule.c
浏览文件 @
39e8b28b
...
@@ -39,6 +39,9 @@ void DcModeleRelayInit(void);
...
@@ -39,6 +39,9 @@ void DcModeleRelayInit(void);
extern
void
GetNXRAcVolt
(
CanRxMsg
*
RxMsg
);
extern
void
GetNXRAcVolt
(
CanRxMsg
*
RxMsg
);
extern
void
GetNXRAcVoltMsg
(
u32
addr
);
extern
void
GetNXRAcVoltMsg
(
u32
addr
);
void
DcModuleMsgReceive
(
CanRxMsg
*
RxMsg
);
static
s8
DcModleVoltChkCnt
=
0
;
static
s8
DcModleVoltChkCnt
=
0
;
...
@@ -62,7 +65,7 @@ void DcModuleRxIrqHandle(void)
...
@@ -62,7 +65,7 @@ void DcModuleRxIrqHandle(void)
if
((
CAN_ID_EXT
==
RxMsg
.
IDE
)
&&
(
CAN_RTR_DATA
==
RxMsg
.
RTR
))
if
((
CAN_ID_EXT
==
RxMsg
.
IDE
)
&&
(
CAN_RTR_DATA
==
RxMsg
.
RTR
))
{
{
if
((
0x1207C080
==
(
RxMsg
.
ExtId
&
0xFFFFFFC0
))
&&
(
0x01
==
RxMsg
.
Data
[
0
]))
//模块状态回复
/*
if ((0x1207C080 == (RxMsg.ExtId & 0xFFFFFFC0)) && (0x01 == RxMsg.Data[0])) //模块状态回复
{
{
Data.Id = RxMsg.ExtId & 0x0000003F;
Data.Id = RxMsg.ExtId & 0x0000003F;
DcModuleManage_All.OnlineFlag |= ((long long) 1 << Data.Id);
DcModuleManage_All.OnlineFlag |= ((long long) 1 << Data.Id);
...
@@ -73,7 +76,8 @@ void DcModuleRxIrqHandle(void)
...
@@ -73,7 +76,8 @@ void DcModuleRxIrqHandle(void)
DcModuleStatus_ALL[Data.Id] = Data;
DcModuleStatus_ALL[Data.Id] = Data;
}
}
GetNXRAcVolt
(
&
RxMsg
);
GetNXRAcVolt(&RxMsg);*/
DcModuleMsgReceive
(
&
RxMsg
);
}
}
}
}
}
}
...
@@ -87,7 +91,7 @@ void DcModuleRxIrqHandle(void)
...
@@ -87,7 +91,7 @@ void DcModuleRxIrqHandle(void)
if
((
CAN_ID_EXT
==
RxMsg
.
IDE
)
&&
(
CAN_RTR_DATA
==
RxMsg
.
RTR
))
if
((
CAN_ID_EXT
==
RxMsg
.
IDE
)
&&
(
CAN_RTR_DATA
==
RxMsg
.
RTR
))
{
{
if
((
0x1207C080
==
(
RxMsg
.
ExtId
&
0xFFFFFFC0
))
&&
(
0x01
==
RxMsg
.
Data
[
0
]))
//模块状态回复
/*
if ((0x1207C080 == (RxMsg.ExtId & 0xFFFFFFC0)) && (0x01 == RxMsg.Data[0])) //模块状态回复
{
{
Data.Id = RxMsg.ExtId & 0x0000003F;
Data.Id = RxMsg.ExtId & 0x0000003F;
DcModuleManage_All.OnlineFlag |= ((long long) 1 << Data.Id);
DcModuleManage_All.OnlineFlag |= ((long long) 1 << Data.Id);
...
@@ -98,7 +102,8 @@ void DcModuleRxIrqHandle(void)
...
@@ -98,7 +102,8 @@ void DcModuleRxIrqHandle(void)
DcModuleStatus_ALL[Data.Id] = Data;
DcModuleStatus_ALL[Data.Id] = Data;
}
}
GetNXRAcVolt
(
&
RxMsg
);
GetNXRAcVolt(&RxMsg);*/
DcModuleMsgReceive
(
&
RxMsg
);
}
}
}
}
}
}
...
@@ -722,32 +727,67 @@ void setDcMoudleVoltChkCnt(s8 val)
...
@@ -722,32 +727,67 @@ void setDcMoudleVoltChkCnt(s8 val)
DcModleVoltChkCnt
=
0
;
DcModleVoltChkCnt
=
0
;
}
}
void
DcModuleMsgReceive_ZhongXing
(
CanRxMsg
*
RxMsg
)
void
DcModule_ZhongXing
(
void
)
{
{
u32
addr_src
=
0x6f
;
u8
addr
=
0
;
u32
addr_dst
=
0xa0
;
if
((
0x1801A060
==
(
RxMsg
->
ExtId
&
0xFFFFA060
)))
//心跳应答
u32
cmd
=
0
;
StructDcModuleSend
DataSend
=
{
{
0
addr
=
(
u8
)(
RxMsg
->
ExtId
&
0x000000FF
);
};
DcModuleManage_All
.
OnlineFlag
|=
((
long
long
)
1
<<
(
addr
&
0x0f
));
}
DataSend
.
Id
=
(
6
<<
26
)
|
(
cmd
<<
16
)
|
(
addr_dst
<<
8
)
|
(
addr_src
);
else
if
((
0x1804A060
==
(
RxMsg
->
ExtId
&
0xFFFFA060
)))
//分组应答
DataSend
.
Len
=
8
;
{
DataSend
.
Data
[
0
]
=
0x10
;
addr
=
(
u8
)(
RxMsg
->
ExtId
&
0x000000FF
);
DataSend
.
Data
[
1
]
=
0x00
;
if
(
RxMsg
->
Data
[
0
]
==
0xA8
&&
RxMsg
->
Data
[
1
]
==
0x00
)
DataSend
.
Data
[
2
]
=
0x00
;
{
DataSend
.
Data
[
3
]
=
0x00
;
//分组成功
DataSend
.
Data
[
4
]
=
0x00
;
}
DataSend
.
Data
[
5
]
=
0x00
;
}
DataSend
.
Data
[
6
]
=
0x00
;
else
if
((
0x1810A060
==
(
RxMsg
->
ExtId
&
0xFFFFA060
)))
//遥信帧
DataSend
.
Data
[
7
]
=
0x00
;
{
addr
=
(
u8
)(
RxMsg
->
ExtId
&
0x000000FF
);
//RxMsg->Data[0]; //状态
//RxMsg->Data[1]; //告警故障
//RxMsg->Data[2]; //输出电压H 分辨率: 0.1V/位
//RxMsg->Data[3]; //输出电压L
//RxMsg->Data[4]; //输出电流H 分辨率: 0.01A/位
//RxMsg->Data[5]; //输出电流L
//RxMsg->Data[6]; //当前组号
StructDcModuleStatus
Data
;
Data
.
Id
=
addr
&
0x0F
;
DcModuleManage_All
.
OnlineFlag
|=
((
long
long
)
1
<<
(
addr
&
0x0f
));
Data
.
Currt
=
((
u16
)
RxMsg
->
Data
[
4
]
<<
8
)
+
RxMsg
->
Data
[
5
];
Data
.
Volt
=
((
u16
)
RxMsg
->
Data
[
2
]
<<
8
)
+
RxMsg
->
Data
[
3
];
Data
.
State
=
((
u16
)
RxMsg
->
Data
[
1
]
<<
8
)
+
RxMsg
->
Data
[
0
];
Data
.
RecvTime
=
GetSystemTick
();
Data
.
Temp
=
RxMsg
->
Data
[
6
];
//当前组号
DcModuleStatus_ALL
[
Data
.
Id
]
=
Data
;
}
}
if
(
pdTRUE
!=
xQueueSend
(
DcModeMsg
,
&
DataSend
,
0
))
void
DcModuleMsgReceive_Incre
(
CanRxMsg
*
RxMsg
)
{
StructDcModuleStatus
Data
;
if
((
0x1207C080
==
(
RxMsg
->
ExtId
&
0xFFFFFFC0
))
&&
(
0x01
==
RxMsg
->
Data
[
0
]))
//模块状态回复
{
{
//osDelay(10);
Data
.
Id
=
RxMsg
->
ExtId
&
0x0000003F
;
DcModuleManage_All
.
OnlineFlag
|=
((
long
long
)
1
<<
Data
.
Id
);
Data
.
Currt
=
((
u32
)
RxMsg
->
Data
[
2
]
<<
8
)
+
RxMsg
->
Data
[
3
];
Data
.
Volt
=
((
u32
)
RxMsg
->
Data
[
4
]
<<
8
)
+
RxMsg
->
Data
[
5
];
Data
.
State
=
((
u32
)
RxMsg
->
Data
[
6
]
<<
8
)
+
RxMsg
->
Data
[
7
];
Data
.
RecvTime
=
GetSystemTick
();
DcModuleStatus_ALL
[
Data
.
Id
]
=
Data
;
}
}
GetNXRAcVolt
(
RxMsg
);
}
void
DcModuleMsgReceive
(
CanRxMsg
*
RxMsg
)
{
#if DcModule_ZhongXing
DcModuleMsgReceive_ZhongXing
(
RxMsg
);
#else
DcModuleMsgReceive_Incre
(
RxMsg
);
#endif
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论