Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
DC360_1drap3_xiaoju_V1
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
丁雨邯
DC360_1drap3_xiaoju_V1
Commits
184cd9d2
提交
184cd9d2
authored
6月 29, 2020
作者:
wysheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化智能分配
上级
2d35a47b
显示空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
310 行增加
和
297 行删除
+310
-297
Drv_DcModule.h
DcPillar/Src/Drivers/Drv_DcModule.h
+49
-6
Drv_TCUComm.c
DcPillar/Src/Drivers/Drv_TCUComm.c
+21
-3
Global.h
DcPillar/Src/Global.h
+1
-1
ChgPro_ChgRun_SmartAllocation.c
DcPillar/Src/SmartAllocation/ChgPro_ChgRun_SmartAllocation.c
+7
-7
Drv_DcModule_SmartAllocation.c
DcPillar/Src/SmartAllocation/Drv_DcModule_SmartAllocation.c
+6
-6
Drv_SmartAllocation.c
DcPillar/Src/SmartAllocation/Drv_SmartAllocation.c
+190
-258
Drv_SmartAllocation.h
DcPillar/Src/SmartAllocation/Drv_SmartAllocation.h
+9
-16
ChgPro_ChgIdle.c
DcPillar/Src/Thread/Charge/ChgPro_ChgIdle.c
+27
-0
没有找到文件。
DcPillar/Src/Drivers/Drv_DcModule.h
浏览文件 @
184cd9d2
...
@@ -4,8 +4,7 @@
...
@@ -4,8 +4,7 @@
#include "Global.h"
#include "Global.h"
#define DcModule_ZhongXing 1
#define DcModule_ZhongXing 0
#define DcModule_BaudRate (250)
#define DcModule_BaudRate (250)
...
@@ -78,8 +77,6 @@ typedef struct
...
@@ -78,8 +77,6 @@ typedef struct
#define DcModuleMaxCurrt (100) //10A
#define DcModuleMaxCurrt (100) //10A
#define DcModuleMinCurrt (5) //1A
#define DcModuleMinCurrt (5) //1A
#define DcModuleSinMaxCurrt (2000)
#define DcModuleSinMaxCurrt (2000)
#else
#else
#define DcModuleMaxVolt (5000)//750V
#define DcModuleMaxVolt (5000)//750V
...
@@ -93,15 +90,61 @@ typedef enum
...
@@ -93,15 +90,61 @@ typedef enum
eSwSta_High
,
eSwSta_High
,
}
EnumModuStatus
;
}
EnumModuStatus
;
#if DcModule_ZhongXing
typedef
union
{
u16
Mult
;
struct
{
u16
Reserve1
:
3
;
//Bit2-Bit0: 预留
u16
GroupType
:
1
;
//Bit3: 分组模式 0x00 --- 固定分组 0x01 --- 动态分组
u16
Fault
:
1
;
//Bit4: 0x01 --- 故障状态, 0x00 --- 正常
u16
Alarm
:
1
;
//Bit5: 0x01 --- 告警状态, 0x00 --- 正常
u16
OnOff
:
2
;
//Bit7 ~ Bit6: 工作状态 0x01 --- 待机状态 0x02 --- 工作状态
u16
Reserve
:
1
;
//Bit0: 预留
u16
other
:
1
;
//Bit1: 其他故障 0x00 -- 正常 0x01 --- 故障
u16
fan
:
1
;
//Bit2: 风扇故障 0x00 -- 正常 0x01 --- 故障
u16
outShort
:
1
;
//Bit3: 直流输出短路 0x00 -- 正常 0x01 --- 故障
u16
tempOver
:
1
;
//Bit4: 过温 0x00 -- 正常 0x01 --- 故障
u16
outLow
:
1
;
//Bit5: 直流输出欠压 0x00 -- 正常 0x01 --- 故障
u16
outHigh
:
1
;
//Bit6: 直流输出过压故障 0x00 -- 正常 0x01 --- 故障
u16
accIn
:
1
;
//Bit7: 交流输入故障 0x00 -- 正常 0x01 --- 故障
}
Value
;
}
UnionDcModuleStatus
;
#else
typedef
union
{
u16
Mult
;
struct
{
u16
OnOff
:
1
;
//0x01 --- 关机状态 0x00 --- 工作状态
u16
Fault
:
1
;
// 0x01 --- 故障状态, 0x00 --- 正常
u16
Alarm
:
1
;
//0x01 --- 模块限流, 0x00 --- 模块恒压
u16
fan
:
1
;
//风扇故障 0x00 -- 正常 0x01 --- 故障
u16
accInHigh
:
1
;
//交流输入过压故障 0x00 -- 正常 0x01 --- 故障
u16
accInLow
:
1
;
//交流输入欠压故障 0x00 -- 正常 0x01 --- 故障
u16
outHigh
:
1
;
//直流输出过压故障 0x00 -- 正常 0x01 --- 故障
u16
outLow
:
1
;
//直流输出欠压 0x00 -- 正常 0x01 --- 故障
u16
outCurrentOver
:
1
;
// 0x00 -- 正常 0x01 --- 过流保护
u16
tempOver
:
1
;
//过温 0x00 -- 正常 0x01 --- 故障
u16
SetOnOff
:
1
;
//0x00 -- 设置开机 0x01 --- 设置关机
u16
Reserve1
:
5
;
//
}
Value
;
}
UnionDcModuleStatus
;
#endif
typedef
struct
typedef
struct
{
{
u8
Id
;
u8
Id
;
u8
Temp
;
u8
Temp
;
u16
Volt
;
//0.1V/Bit;
u16
Volt
;
//0.1V/Bit;
u16
Currt
;
//0.1A/Bit;
u16
Currt
;
//0.1A/Bit;
u16
State
;
UnionDcModuleStatus
State
;
u32
RecvTime
;
u32
RecvTime
;
u16
ModStatus
;
}
StructDcModuleStatus
;
}
StructDcModuleStatus
;
extern
StructDcModuleAbility
DcModuleAbility
;
extern
StructDcModuleAbility
DcModuleAbility
;
...
...
DcPillar/Src/Drivers/Drv_TCUComm.c
浏览文件 @
184cd9d2
...
@@ -463,7 +463,7 @@ StructTCUCControl TCUControlInfo =
...
@@ -463,7 +463,7 @@ StructTCUCControl TCUControlInfo =
},
//硬件版本
},
//硬件版本
.
SoftwareVersion
=
.
SoftwareVersion
=
{
{
(
u8
)(
__SoftVer__
>>
8
),
(
u8
)(
__SoftVer__
),
0x00
(
u8
)(
__SoftVer__
>>
16
),
(
u8
)(
__SoftVer__
>>
8
),
(
u8
)(
__SoftVer__
)
},
//软件版本
},
//软件版本
.
SoftwareData
=
.
SoftwareData
=
{
{
...
@@ -2526,12 +2526,21 @@ void InformationReporting_22_A(void)
...
@@ -2526,12 +2526,21 @@ void InformationReporting_22_A(void)
InformainReport_A
.
InfRe
.
DcModErr
=
PillarError
.
Value
.
DCmodError
;
InformainReport_A
.
InfRe
.
DcModErr
=
PillarError
.
Value
.
DCmodError
;
#if DcModule_ZhongXing
InformainReport_A
.
InfRe
.
DCModIn
=
DcModuleStatus_A
.
Value
.
accIn
;
InformainReport_A
.
InfRe
.
DCModIn
=
DcModuleStatus_A
.
Value
.
accIn
;
InformainReport_A
.
InfRe
.
DCModInHi
=
0
;
//
InformainReport_A.InfRe.DCModInHi = 0;
InformainReport_A
.
InfRe
.
DCModInLo
=
0
;
//
InformainReport_A.InfRe.DCModInLo = 0;
//InformainReport_A.InfRe.DCModPhas = 0;
//InformainReport_A.InfRe.DCModPhas = 0;
InformainReport_A
.
InfRe
.
DcOutShor
=
DcModuleStatus_A
.
Value
.
outShort
;
InformainReport_A
.
InfRe
.
DcOutShor
=
DcModuleStatus_A
.
Value
.
outShort
;
//InformainReport_A.InfRe.DCModOutCuHi = 0;
//InformainReport_A.InfRe.DCModOutCuHi = 0;
#else
//InformainReport_A.InfRe.DCModIn = DcModuleStatus_A.Value.accIn;
InformainReport_A
.
InfRe
.
DCModInHi
=
DcModuleStatus_A
.
Value
.
accInHigh
;
InformainReport_A
.
InfRe
.
DCModInLo
=
DcModuleStatus_A
.
Value
.
accInLow
;
//InformainReport_A.InfRe.DCModPhas = 0;
//InformainReport_A.InfRe.DcOutShor = DcModuleStatus_A.Value.outShort;
InformainReport_A
.
InfRe
.
DCModOutCuHi
=
DcModuleStatus_A
.
Value
.
outCurrentOver
;
#endif
InformainReport_A
.
InfRe
.
DCModOutVoHi
=
DcModuleStatus_A
.
Value
.
outHigh
;
InformainReport_A
.
InfRe
.
DCModOutVoHi
=
DcModuleStatus_A
.
Value
.
outHigh
;
InformainReport_A
.
InfRe
.
DCModOutVoLo
=
DcModuleStatus_A
.
Value
.
outLow
;
InformainReport_A
.
InfRe
.
DCModOutVoLo
=
DcModuleStatus_A
.
Value
.
outLow
;
...
@@ -2659,12 +2668,21 @@ void InformationReporting_22_B(void)
...
@@ -2659,12 +2668,21 @@ void InformationReporting_22_B(void)
InformainReport_B
.
InfRe
.
DcModErr
=
PillarError_B
.
Value
.
DCmodError
;
InformainReport_B
.
InfRe
.
DcModErr
=
PillarError_B
.
Value
.
DCmodError
;
#if DcModule_ZhongXing
InformainReport_B
.
InfRe
.
DCModIn
=
DcModuleStatus_B
.
Value
.
accIn
;
InformainReport_B
.
InfRe
.
DCModIn
=
DcModuleStatus_B
.
Value
.
accIn
;
//InformainReport_B.InfRe.DCModInHi = 0;
//InformainReport_B.InfRe.DCModInHi = 0;
//InformainReport_B.InfRe.DCModInLo = 0;
//InformainReport_B.InfRe.DCModInLo = 0;
//InformainReport_B.InfRe.DCModPhas = 0;
//InformainReport_B.InfRe.DCModPhas = 0;
InformainReport_B
.
InfRe
.
DcOutShor
=
DcModuleStatus_B
.
Value
.
outShort
;
InformainReport_B
.
InfRe
.
DcOutShor
=
DcModuleStatus_B
.
Value
.
outShort
;
//InformainReport_B.InfRe.DCModOutCuHi = 0;
//InformainReport_B.InfRe.DCModOutCuHi = 0;
#else
//InformainReport_B.InfRe.DCModIn = DcModuleStatus_B.Value.accIn;
InformainReport_B
.
InfRe
.
DCModInHi
=
DcModuleStatus_B
.
Value
.
accInHigh
;
InformainReport_B
.
InfRe
.
DCModInLo
=
DcModuleStatus_B
.
Value
.
accInLow
;
//InformainReport_B.InfRe.DCModPhas = 0;
//InformainReport_B.InfRe.DcOutShor = DcModuleStatus_B.Value.outShort;
InformainReport_B
.
InfRe
.
DCModOutCuHi
=
DcModuleStatus_B
.
Value
.
outCurrentOver
;
#endif
InformainReport_B
.
InfRe
.
DCModOutVoHi
=
DcModuleStatus_B
.
Value
.
outHigh
;
InformainReport_B
.
InfRe
.
DCModOutVoHi
=
DcModuleStatus_B
.
Value
.
outHigh
;
InformainReport_B
.
InfRe
.
DCModOutVoLo
=
DcModuleStatus_B
.
Value
.
outLow
;
InformainReport_B
.
InfRe
.
DCModOutVoLo
=
DcModuleStatus_B
.
Value
.
outLow
;
...
...
DcPillar/Src/Global.h
浏览文件 @
184cd9d2
...
@@ -425,7 +425,7 @@ extern u8 HexToBcd(u8 Hex);
...
@@ -425,7 +425,7 @@ extern u8 HexToBcd(u8 Hex);
extern
int
CopyCode
(
u32
Des
,
u32
Scr
,
u32
Len
);
extern
int
CopyCode
(
u32
Des
,
u32
Scr
,
u32
Len
);
extern
int
UpdateFlagSet
(
u32
Status
);
extern
int
UpdateFlagSet
(
u32
Status
);
#define __SoftVer__ (0x01
10
) //BCD码 如:V1.02 SoftVer = 0x0102
#define __SoftVer__ (0x01
0102
) //BCD码 如:V1.02 SoftVer = 0x0102
#endif
#endif
DcPillar/Src/SmartAllocation/ChgPro_ChgRun_SmartAllocation.c
浏览文件 @
184cd9d2
...
@@ -153,26 +153,26 @@ void ChgProChgRun(StructChargeCtrl * pChargeCtrl)
...
@@ -153,26 +153,26 @@ void ChgProChgRun(StructChargeCtrl * pChargeCtrl)
if
(
DcModuleGroup
[
1
].
status
==
Valid
)
if
(
DcModuleGroup
[
1
].
status
==
Valid
)
{
{
DcModuleGroup
[
1
].
status
=
Hold_A
;
DcModuleGroup
[
1
].
status
=
Hold_A
;
DcModuleManage
.
ValidNum
+=
DcModuleGroup
[
1
].
ValidNum
;
//
DcModuleManage.ValidNum += DcModuleGroup[1].ValidNum;
DcModuleGroup
[
1
].
flag
=
1
;
DcModuleGroup
[
1
].
flag
=
1
;
}
}
else
if
(
DcModuleGroup
[
3
].
status
==
Valid
)
else
if
(
DcModuleGroup
[
3
].
status
==
Valid
)
{
{
DcModuleGroup
[
3
].
status
=
Hold_A
;
DcModuleGroup
[
3
].
status
=
Hold_A
;
DcModuleManage
.
ValidNum
+=
DcModuleGroup
[
3
].
ValidNum
;
//
DcModuleManage.ValidNum += DcModuleGroup[3].ValidNum;
DcModuleGroup
[
3
].
flag
=
1
;
DcModuleGroup
[
3
].
flag
=
1
;
}
}
else
if
(
DcModuleGroup
[
2
].
status
==
Valid
else
if
(
DcModuleGroup
[
2
].
status
==
Valid
&&
ChargeCtrl_B
.
CurProcess
==
eChgPro_ChgIdle
)
&&
ChargeCtrl_B
.
CurProcess
==
eChgPro_ChgIdle
)
{
{
DcModuleGroup
[
2
].
status
=
Hold_A
;
DcModuleGroup
[
2
].
status
=
Hold_A
;
DcModuleManage
.
ValidNum
+=
DcModuleGroup
[
2
].
ValidNum
;
//
DcModuleManage.ValidNum += DcModuleGroup[2].ValidNum;
DcModuleGroup
[
2
].
flag
=
1
;
DcModuleGroup
[
2
].
flag
=
1
;
#if (DcModule_ZhongXing == 0)
#if (DcModule_ZhongXing == 0)
if
(
DcModuleGroup
[
3
].
status
==
Hold_A
)
if
(
DcModuleGroup
[
3
].
status
==
Hold_A
)
{
{
DcModuleGroup
[
3
].
status
=
Valid
;
DcModuleGroup
[
3
].
status
=
Valid
;
DcModuleManage
.
ValidNum
-=
DcModuleGroup
[
3
].
ValidNum
;
//
DcModuleManage.ValidNum -= DcModuleGroup[3].ValidNum;
}
}
#endif
#endif
}
}
...
@@ -182,17 +182,17 @@ void ChgProChgRun(StructChargeCtrl * pChargeCtrl)
...
@@ -182,17 +182,17 @@ void ChgProChgRun(StructChargeCtrl * pChargeCtrl)
if
(
DcModuleGroup
[
2
].
status
==
Hold_A
)
if
(
DcModuleGroup
[
2
].
status
==
Hold_A
)
{
{
DcModuleGroup
[
2
].
status
=
Valid
;
DcModuleGroup
[
2
].
status
=
Valid
;
DcModuleManage
.
ValidNum
-=
DcModuleGroup
[
2
].
ValidNum
;
//
DcModuleManage.ValidNum -= DcModuleGroup[2].ValidNum;
}
}
else
if
(
DcModuleGroup
[
3
].
status
==
Hold_A
)
else
if
(
DcModuleGroup
[
3
].
status
==
Hold_A
)
{
{
DcModuleGroup
[
3
].
status
=
Valid
;
DcModuleGroup
[
3
].
status
=
Valid
;
DcModuleManage
.
ValidNum
-=
DcModuleGroup
[
3
].
ValidNum
;
//
DcModuleManage.ValidNum -= DcModuleGroup[3].ValidNum;
}
}
else
if
(
DcModuleGroup
[
1
].
status
==
Hold_A
)
else
if
(
DcModuleGroup
[
1
].
status
==
Hold_A
)
{
{
DcModuleGroup
[
1
].
status
=
Valid
;
DcModuleGroup
[
1
].
status
=
Valid
;
DcModuleManage
.
ValidNum
-=
DcModuleGroup
[
1
].
ValidNum
;
//
DcModuleManage.ValidNum -= DcModuleGroup[1].ValidNum;
}
}
}
}
...
...
DcPillar/Src/SmartAllocation/Drv_DcModule_SmartAllocation.c
浏览文件 @
184cd9d2
...
@@ -29,7 +29,7 @@ StructDcModuleManage DcModuleManage;
...
@@ -29,7 +29,7 @@ StructDcModuleManage DcModuleManage;
StructDcModuleManage
DcModuleManage_B
;
StructDcModuleManage
DcModuleManage_B
;
StructDcModuleManage
DcModuleManage_All
;
StructDcModuleManage
DcModuleManage_All
;
StructDcModuleStatus
DcModuleStatus_ALL
[
64
];
StructDcModuleStatus
DcModuleStatus_ALL
[
16
];
StructDcModuleCtrl
DcModuleCtrl
;
StructDcModuleCtrl
DcModuleCtrl
;
StructDcModuleCtrl
DcModuleCtrl_B
;
StructDcModuleCtrl
DcModuleCtrl_B
;
...
@@ -320,7 +320,7 @@ void DcModule(void const * parameter)
...
@@ -320,7 +320,7 @@ void DcModule(void const * parameter)
{
{
DcModeleRelayInit
();
DcModeleRelayInit
();
DCModuleRelayOutChkInit
();
DCModuleRelayOutChkInit
();
osDelay
(
6000
);
//
osDelay(6000);
DcModuleCanInit
();
DcModuleCanInit
();
//ACContactorSet(eSwSta_On);
//ACContactorSet(eSwSta_On);
...
@@ -348,7 +348,7 @@ void DcModule(void const * parameter)
...
@@ -348,7 +348,7 @@ void DcModule(void const * parameter)
}
}
}
}
RelayStatusCheck
();
//
RelayStatusCheck();
DcModuleManageProcess_SmartAllocation
();
DcModuleManageProcess_SmartAllocation
();
...
@@ -735,7 +735,7 @@ void DcModuleMsgReceive_ZhongXing(CanRxMsg* RxMsg)
...
@@ -735,7 +735,7 @@ void DcModuleMsgReceive_ZhongXing(CanRxMsg* RxMsg)
DcModuleManage_All
.
OnlineFlag
|=
((
long
long
)
1
<<
(
addr
&
0x0f
));
DcModuleManage_All
.
OnlineFlag
|=
((
long
long
)
1
<<
(
addr
&
0x0f
));
Data
.
Currt
=
(((
u16
)
RxMsg
->
Data
[
4
]
<<
8
)
+
RxMsg
->
Data
[
5
])
/
10
;
Data
.
Currt
=
(((
u16
)
RxMsg
->
Data
[
4
]
<<
8
)
+
RxMsg
->
Data
[
5
])
/
10
;
Data
.
Volt
=
((
u16
)
RxMsg
->
Data
[
2
]
<<
8
)
+
RxMsg
->
Data
[
3
];
Data
.
Volt
=
((
u16
)
RxMsg
->
Data
[
2
]
<<
8
)
+
RxMsg
->
Data
[
3
];
Data
.
State
=
((
u16
)
RxMsg
->
Data
[
1
]
<<
8
)
+
RxMsg
->
Data
[
0
];
Data
.
State
.
Mult
=
((
u16
)
RxMsg
->
Data
[
1
]
<<
8
)
+
RxMsg
->
Data
[
0
];
Data
.
RecvTime
=
GetSystemTick
();
Data
.
RecvTime
=
GetSystemTick
();
Data
.
Temp
=
RxMsg
->
Data
[
6
];
//当前组号
Data
.
Temp
=
RxMsg
->
Data
[
6
];
//当前组号
DcModuleStatus_ALL
[
Data
.
Id
]
=
Data
;
DcModuleStatus_ALL
[
Data
.
Id
]
=
Data
;
...
@@ -751,12 +751,12 @@ void DcModuleMsgReceive_Incre(CanRxMsg* RxMsg)
...
@@ -751,12 +751,12 @@ void DcModuleMsgReceive_Incre(CanRxMsg* RxMsg)
DcModuleManage_All
.
OnlineFlag
|=
((
long
long
)
1
<<
Data
.
Id
);
DcModuleManage_All
.
OnlineFlag
|=
((
long
long
)
1
<<
Data
.
Id
);
Data
.
Currt
=
((
u32
)
RxMsg
->
Data
[
2
]
<<
8
)
+
RxMsg
->
Data
[
3
];
Data
.
Currt
=
((
u32
)
RxMsg
->
Data
[
2
]
<<
8
)
+
RxMsg
->
Data
[
3
];
Data
.
Volt
=
((
u32
)
RxMsg
->
Data
[
4
]
<<
8
)
+
RxMsg
->
Data
[
5
];
Data
.
Volt
=
((
u32
)
RxMsg
->
Data
[
4
]
<<
8
)
+
RxMsg
->
Data
[
5
];
Data
.
State
=
((
u32
)
RxMsg
->
Data
[
6
]
<<
8
)
+
RxMsg
->
Data
[
7
];
Data
.
State
.
Mult
=
((
u32
)
RxMsg
->
Data
[
6
]
<<
8
)
+
RxMsg
->
Data
[
7
];
Data
.
RecvTime
=
GetSystemTick
();
Data
.
RecvTime
=
GetSystemTick
();
DcModuleStatus_ALL
[
Data
.
Id
]
=
Data
;
DcModuleStatus_ALL
[
Data
.
Id
]
=
Data
;
}
}
GetNXRAcVolt
(
RxMsg
);
//
GetNXRAcVolt(RxMsg);
}
}
void
DcModuleMsgReceive
(
CanRxMsg
*
RxMsg
)
void
DcModuleMsgReceive
(
CanRxMsg
*
RxMsg
)
...
...
DcPillar/Src/SmartAllocation/Drv_SmartAllocation.c
浏览文件 @
184cd9d2
...
@@ -64,7 +64,6 @@ void SendCmdToDcModule(u8 addr, u8 cmd);
...
@@ -64,7 +64,6 @@ 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
SendCheckToDcModule
(
void
);
void
DcModuleGroupDateInit
(
void
);
void
DcModuleGroupDateInit
(
void
);
u8
DcModuleGetStatus
(
u8
addr
);
void
DcModuleSetGroupNum
(
void
);
void
DcModuleSetGroupNum
(
void
);
extern
void
GetNXRAcVoltMsg
(
u32
addr
);
extern
void
GetNXRAcVoltMsg
(
u32
addr
);
...
@@ -111,7 +110,7 @@ void DcModuleManageProcess_SmartAllocation(void)
...
@@ -111,7 +110,7 @@ void DcModuleManageProcess_SmartAllocation(void)
}
}
else
else
{
{
if
(
DcModule
GetStatus
(
i
)
/*0x0002 != (DcModuleStatus_ALL[i].State & 0x0002)*/
)
if
(
DcModule
Status_ALL
[
i
].
State
.
Value
.
Fault
!=
0x01
)
{
{
DcModuleManage_All
.
ValidFlag
|=
Flag
;
DcModuleManage_All
.
ValidFlag
|=
Flag
;
Count
++
;
Count
++
;
...
@@ -129,7 +128,7 @@ void DcModuleManageProcess_SmartAllocation(void)
...
@@ -129,7 +128,7 @@ void DcModuleManageProcess_SmartAllocation(void)
if
(
GetSystemTick
()
-
GetAcVoltTick
>
1000
)
if
(
GetSystemTick
()
-
GetAcVoltTick
>
1000
)
{
{
GetAcVoltTick
=
GetSystemTick
();
GetAcVoltTick
=
GetSystemTick
();
GetNXRAcVoltMsg
(
1
);
//
GetNXRAcVoltMsg(1);
}
}
}
}
...
@@ -147,7 +146,7 @@ void DcModuleManageProcess_SmartAllocation(void)
...
@@ -147,7 +146,7 @@ void DcModuleManageProcess_SmartAllocation(void)
addr
=
DcModuleGroup
[
i
].
modules
[
j
].
addr
;
addr
=
DcModuleGroup
[
i
].
modules
[
j
].
addr
;
Flag
=
1
<<
addr
;
Flag
=
1
<<
addr
;
DcModuleGroup
[
i
].
modules
[
j
].
status
=
DcModuleStatus_ALL
[
addr
].
State
;
DcModuleGroup
[
i
].
modules
[
j
].
status
.
Mult
=
DcModuleStatus_ALL
[
addr
].
State
.
Mult
;
if
(
Flag
&
DcModuleManage_All
.
ValidFlag
)
if
(
Flag
&
DcModuleManage_All
.
ValidFlag
)
{
{
...
@@ -259,16 +258,12 @@ void DcModuleManageProcess_SmartAllocation(void)
...
@@ -259,16 +258,12 @@ void DcModuleManageProcess_SmartAllocation(void)
}
}
//u32 look_temp = 0;
//u32 maxSetCurr = 0;
//u32 maxSetCurr_B = 0;
void
DcModuleCtrlProcess_SmartAllocation
(
void
)
void
DcModuleCtrlProcess_SmartAllocation
(
void
)
{
{
static
u32
CtrlTick
=
0
;
static
u32
CtrlTick
=
0
;
static
u8
LastFlag_A
=
0
;
static
u8
LastFlag_A
=
0
;
static
u8
LastFlag_B
=
0
;
static
u8
LastFlag_B
=
0
;
u32
Temp
=
0
;
static
u32
Tick
=
0
;
//
static
u32
Tick
=
0
;
//
if
((
GetSystemTick
()
-
Tick
)
<
100
)
if
((
GetSystemTick
()
-
Tick
)
<
100
)
...
@@ -277,7 +272,7 @@ void DcModuleCtrlProcess_SmartAllocation(void)
...
@@ -277,7 +272,7 @@ void DcModuleCtrlProcess_SmartAllocation(void)
}
}
Tick
=
GetSystemTick
();
Tick
=
GetSystemTick
();
static
StructDcModuleUsedStatus
status
[
4
]
=
/*
static StructDcModuleUsedStatus status[4] =
{
{
Invalid, Invalid, Invalid, Invalid
Invalid, Invalid, Invalid, Invalid
};
};
...
@@ -286,13 +281,10 @@ void DcModuleCtrlProcess_SmartAllocation(void)
...
@@ -286,13 +281,10 @@ void DcModuleCtrlProcess_SmartAllocation(void)
Invalid, Invalid, Invalid, Invalid
Invalid, Invalid, Invalid, Invalid
};
};
u32
Temp
;
u8 addr;
u8 addr;
u32 Volt = 0;
u32 Volt = 0;
u8 Cmd = 0;
u8 Cmd = 0;
u32 Current = 0;
u32 Current = 0;
Temp
=
0
;
for (u8 i = 0; i < DcModuleGroupSize; i++)
for (u8 i = 0; i < DcModuleGroupSize; i++)
...
@@ -390,13 +382,7 @@ void DcModuleCtrlProcess_SmartAllocation(void)
...
@@ -390,13 +382,7 @@ void DcModuleCtrlProcess_SmartAllocation(void)
continue;
continue;
}
}
//for (u8 j = 0; j < DcModuleGroup[i].num; j++)
{
//addr = DcModuleGroup[i].modules[j].addr;
//DcModuleGroup[i].modules[j].cmd = Cmd;
SendDataToDcModule(i, Cmd, Volt, Current);
SendDataToDcModule(i, Cmd, Volt, Current);
}
status[i] = DcModuleGroup[i].status;
status[i] = DcModuleGroup[i].status;
}
}
...
@@ -404,7 +390,7 @@ void DcModuleCtrlProcess_SmartAllocation(void)
...
@@ -404,7 +390,7 @@ 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
++
)
...
@@ -414,17 +400,10 @@ void DcModuleCtrlProcess_SmartAllocation(void)
...
@@ -414,17 +400,10 @@ void DcModuleCtrlProcess_SmartAllocation(void)
if
(
abs
((
s16
)
(
DcModuleGroup
[
i
].
Voltage
)
-
(
s16
)
(
DcModuleManage
.
SetVolt
/
100
))
>
100
)
//差距在10V以内,升压完成
if
(
abs
((
s16
)
(
DcModuleGroup
[
i
].
Voltage
)
-
(
s16
)
(
DcModuleManage
.
SetVolt
/
100
))
>
100
)
//差距在10V以内,升压完成
{
{
Temp
++
;
Temp
++
;
//for (u8 j = 0; j < DcModuleGroup[i].num; j++)
{
//addr = DcModuleGroup[i].modules[j].addr;
DcModuleManage
.
Cmd
=
0x55
;
//开机
DcModuleManage
.
Cmd
=
0x55
;
//开机
//DcModuleGroup[i].modules[j].cmd = 0x55;
SendDataToDcModule
(
i
,
DcModuleManage
.
Cmd
,
DcModuleManage
.
SetVolt
,
SendDataToDcModule
(
i
,
DcModuleManage
.
Cmd
,
DcModuleManage
.
SetVolt
,
DcModuleAbility
.
MinCurrt
*
100
);
DcModuleAbility
.
MinCurrt
*
100
);
}
}
}
else
else
{
{
...
@@ -439,15 +418,11 @@ void DcModuleCtrlProcess_SmartAllocation(void)
...
@@ -439,15 +418,11 @@ void DcModuleCtrlProcess_SmartAllocation(void)
{
{
Temp
++
;
Temp
++
;
//for (u8 j = 0; j < DcModuleGroup[i].num; j++)
{
//addr = DcModuleGroup[i].modules[j].addr;
DcModuleManage_B
.
Cmd
=
0x55
;
//开机
DcModuleManage_B
.
Cmd
=
0x55
;
//开机
//DcModuleGroup[i].modules[j].cmd = 0x55;
SendDataToDcModule
(
i
,
DcModuleManage_B
.
Cmd
,
DcModuleManage_B
.
SetVolt
,
SendDataToDcModule
(
i
,
DcModuleManage_B
.
Cmd
,
DcModuleManage_B
.
SetVolt
,
DcModuleAbility
.
MinCurrt
*
100
);
DcModuleAbility
.
MinCurrt
*
100
);
}
}
}
else
else
{
{
...
@@ -458,15 +433,14 @@ void DcModuleCtrlProcess_SmartAllocation(void)
...
@@ -458,15 +433,14 @@ void DcModuleCtrlProcess_SmartAllocation(void)
{
{
if
(
DcModuleGroup
[
i
].
Current
>
50
)
//电流小于5A,将降流完成, 可以释放继电器
if
(
DcModuleGroup
[
i
].
Current
>
50
)
//电流小于5A,将降流完成, 可以释放继电器
{
{
//if(i != 2 && i != 0)
Temp
++
;
Temp
++
;
//for (u8 j = 0; j < DcModuleGroup[i].num; j++)
//SendCmdToDcModule(i, 0xAA); //关机
{
//SendDataToDcModule(i, 0xAA, DcModuleAbility.MinVolt * 100, DcModuleAbility.MinCurrt * 100);
//addr = DcModuleGroup[i].modules[j].addr;
//DcModuleGroup[i].modules[j].cmd = 0xAA;
SendCmdToDcModule
(
i
,
0xAA
);
//关机
}
}
}
if
(
DcModuleGroup
[
i
].
modules
[
0
].
status
.
Value
.
OnOff
==
DCModuleStatusOn
)
SendDataToDcModule
(
i
,
0xAA
,
DcModuleAbility
.
MinVolt
*
100
,
DcModuleAbility
.
MinCurrt
*
100
);
//DcModuleGroup[i].flag = 0;
}
}
}
}
...
@@ -724,18 +698,16 @@ void DcModuleCtrlProcess_SmartAllocation(void)
...
@@ -724,18 +698,16 @@ 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++)
{
//addr = DcModuleGroup[i].modules[j].addr;
DcModuleManage
.
Cmd
=
0x55
;
//开机
DcModuleManage
.
Cmd
=
0x55
;
//开机
//DcModuleGroup[i].modules[j].cmd = 0x55;
SendDataToDcModule
(
i
,
DcModuleManage
.
Cmd
,
DcModuleManage
.
SetVolt
,
DcModuleManage
.
SetCurrt
);
SendDataToDcModule
(
i
,
DcModuleManage
.
Cmd
,
DcModuleManage
.
SetVolt
,
DcModuleManage
.
SetCurrt
);
}
}
}
}
}
else
else
{
{
DcModuleManage
.
Cmd
=
0xAA
;
DcModuleManage
.
SetCurrt
=
(
DcModuleAbility
.
MinCurrt
*
100
);
DcModuleManage
.
SetVolt
=
(
DcModuleAbility
.
MinVolt
*
100
);
}
}
if
(
DcModuleCtrl_B
.
CtrlFlag
)
if
(
DcModuleCtrl_B
.
CtrlFlag
)
...
@@ -788,21 +760,18 @@ void DcModuleCtrlProcess_SmartAllocation(void)
...
@@ -788,21 +760,18 @@ void DcModuleCtrlProcess_SmartAllocation(void)
if
(
DcModuleGroup
[
i
].
status
!=
Hold_B
)
if
(
DcModuleGroup
[
i
].
status
!=
Hold_B
)
continue
;
continue
;
//for (u8 j = 0; j < DcModuleGroup[i].num; j++)
{
//addr = DcModuleGroup[i].modules[j].addr;
DcModuleManage_B
.
Cmd
=
0x55
;
//开机
DcModuleManage_B
.
Cmd
=
0x55
;
//开机
//DcModuleGroup[i].modules[j].cmd = 0x55;
SendDataToDcModule
(
i
,
DcModuleManage_B
.
Cmd
,
DcModuleManage_B
.
SetVolt
,
SendDataToDcModule
(
i
,
DcModuleManage_B
.
Cmd
,
DcModuleManage_B
.
SetVolt
,
DcModuleManage_B
.
SetCurrt
);
DcModuleManage_B
.
SetCurrt
);
}
}
}
}
}
else
else
{
{
DcModuleManage_B
.
Cmd
=
0xAA
;
DcModuleManage_B
.
SetCurrt
=
(
DcModuleAbility
.
MinCurrt
*
100
);
DcModuleManage_B
.
SetVolt
=
(
DcModuleAbility
.
MinVolt
*
100
);
}
}
...
@@ -835,11 +804,9 @@ void release_DcModule(u8 flag)
...
@@ -835,11 +804,9 @@ void release_DcModule(u8 flag)
}
}
void
SendDataToDcModule_Incre
(
u8
group_index
,
u8
cmd
,
u32
volt
,
u32
current
)
/*void SendCmdToDcModule_Incre(u8 group_index, u8 cmd
)
{
{
StructDcModuleSend DataSend;
StructDcModuleSend DataSend;
u32
Temp
=
0
;
u8 addr = 0;
u8 addr = 0;
if(group_index > 3)
if(group_index > 3)
...
@@ -849,50 +816,97 @@ void SendDataToDcModule_Incre(u8 group_index, u8 cmd, u32 volt, u32 current)
...
@@ -849,50 +816,97 @@ void SendDataToDcModule_Incre(u8 group_index, u8 cmd, u32 volt, u32 current)
{
{
addr = DcModuleGroup[group_index].modules[j].addr;
addr = DcModuleGroup[group_index].modules[j].addr;
DcModuleGroup[group_index].modules[j].cmd = cmd;
DcModuleGroup[group_index].modules[j].cmd = cmd;
DcModuleGroup
[
group_index
].
modules
[
j
].
VoltageSet
=
volt
;
DcModuleGroup
[
group_index
].
modules
[
j
].
CurrentSet
=
current
;
DataSend.Id = 0x1307C080 + addr;
DataSend.Id = 0x1307C080 + addr;
DataSend.Len = 8;
DataSend.Len = 8;
DataSend
.
Data
[
0
]
=
0x0
0
;
DataSend.Data[0] = 0x0
2
;
DataSend.Data[1] = 0x00;
DataSend.Data[1] = 0x00;
//if(current != 0)
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))
{
{
Temp
=
current
;
//osDelay(10);
DataSend
.
Data
[
2
]
=
(
u8
)
(
Temp
>>
8
);
}
DataSend
.
Data
[
3
]
=
(
u8
)
(
Temp
>>
0
);
}
Temp
=
volt
;
DataSend
.
Data
[
4
]
=
(
u8
)
(
Temp
>>
24
);
}
DataSend
.
Data
[
5
]
=
(
u8
)
(
Temp
>>
16
);
DataSend
.
Data
[
6
]
=
(
u8
)
(
Temp
>>
8
);
void SendCmdToDcModule_ZhongXing(u8 group_index, u8 cmd)
DataSend
.
Data
[
7
]
=
(
u8
)
(
Temp
>>
0
);
{
}
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
}*/
#if DcModule_ZhongXing
void
DcModuleSetGroupNum
(
void
)
//中兴模块分组设置
{
StructDcModuleSend
DataSend
;
u16
addr
=
0
;
for
(
u8
i
=
0
;
i
<
DcModuleGroupSize
;
i
++
)
{
for
(
u8
j
=
0
;
j
<
DcModuleGroup
[
i
].
num
;
j
++
)
{
addr
=
DcModuleGroup
[
i
].
modules
[
j
].
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
))
if
(
pdTRUE
!=
xQueueSend
(
DcModeMsg
,
&
DataSend
,
0
))
{
{
//osDelay(10);
//osDelay(10);
}
}
}
}
}
}
DataSend
.
Id
=
0x1307C080
+
addr
;
void
DcModuleCancelGroupNum
(
u16
addr
)
{
//改为动态分组
StructDcModuleSend
DataSend
;
DataSend
.
Id
=
0x180260A0
|
(
addr
<<
8
);
DataSend
.
Len
=
8
;
DataSend
.
Len
=
8
;
DataSend
.
Data
[
0
]
=
0x02
;
DataSend
.
Data
[
0
]
=
0x00
;
DataSend
.
Data
[
1
]
=
0x00
;
DataSend
.
Data
[
1
]
=
0x0E
;
DataSend
.
Data
[
2
]
=
0x00
;
DataSend
.
Data
[
2
]
=
0x03
;
DataSend
.
Data
[
3
]
=
0x00
;
DataSend
.
Data
[
3
]
=
0x00
;
DataSend
.
Data
[
4
]
=
0x00
;
DataSend
.
Data
[
4
]
=
0x00
;
DataSend
.
Data
[
5
]
=
0x00
;
DataSend
.
Data
[
5
]
=
0x00
;
DataSend
.
Data
[
6
]
=
0x00
;
DataSend
.
Data
[
6
]
=
0x00
;
DataSend
.
Data
[
7
]
=
cmd
;
DataSend
.
Data
[
7
]
=
0x02
;
//DcModuleSendMsg(&DataSend);
//放入队列
//放入队列
if
(
pdTRUE
!=
xQueueSend
(
DcModeMsg
,
&
DataSend
,
0
))
if
(
pdTRUE
!=
xQueueSend
(
DcModeMsg
,
&
DataSend
,
0
))
{
{
//osDelay(10);
//osDelay(10);
}
}
}
}
}
void
SendDataToDcModule_ZhongXing
(
u8
group_index
,
u8
cmd
,
u32
volt
,
u32
current
)
void
SendDataToDcModule_ZhongXing
(
u8
group_index
,
u8
cmd
,
u32
volt
,
u32
current
)
{
{
...
@@ -974,39 +988,47 @@ void SendDataToDcModule_ZhongXing(u8 group_index, u8 cmd, u32 volt, u32 current)
...
@@ -974,39 +988,47 @@ void SendDataToDcModule_ZhongXing(u8 group_index, u8 cmd, u32 volt, u32 current)
}
}
void
Send
DataToDcModule
(
u8
addr
,
u8
cmd
,
u32
volt
,
u32
current
)
void
Send
CheckToDcModule_ZhongXing
(
void
)
{
{
#if DcModule_ZhongXing
//心跳帧
SendDataToDcModule_ZhongXing
(
addr
,
cmd
,
volt
,
current
);
StructDcModuleSend
DataSend
;
#else
u16
addr
=
0
;
SendDataToDcModule_Incre
(
addr
,
cmd
,
volt
,
current
);
static
u32
StaticTick
=
0
;
#endif
}
if
((
GetSystemTick
()
-
StaticTick
)
>
2000
)
{
StaticTick
=
GetSystemTick
();
void
SendCmdToDcModule_Incre
(
u8
group_index
,
u8
cmd
)
for
(
u8
i
=
0
;
i
<
DcModuleGroupSize
;
i
++
)
{
{
StructDcModuleSend
DataSend
;
u8
addr
=
0
;
if
(
group_index
>
3
)
for
(
u8
j
=
0
;
j
<
DcModuleGroup
[
i
].
num
;
j
++
)
return
;
{
addr
=
DcModuleGroup
[
i
].
modules
[
j
].
addr
;
for
(
u8
j
=
0
;
j
<
DcModuleGroup
[
group_index
].
num
;
j
++
)
if
(
DcModuleStatus_ALL
[
addr
].
State
.
Value
.
GroupType
==
0x00
)
{
{
addr
=
DcModuleGroup
[
group_index
].
modules
[
j
].
addr
;
DcModuleCancelGroupNum
(
addr
);
DcModuleGroup
[
group_index
].
modules
[
j
].
cmd
=
cmd
;
}
DataSend
.
Id
=
0x1307C080
+
addr
;
if
(
DcModuleStatus_ALL
[
addr
].
Temp
==
0
)
//未分组
{
DcModuleSetGroupNum
();
//return;//continue;
}
DataSend
.
Id
=
0x180160A0
|
(
addr
<<
8
);
DataSend
.
Len
=
8
;
DataSend
.
Len
=
8
;
DataSend
.
Data
[
0
]
=
0x02
;
DataSend
.
Data
[
0
]
=
0x00
;
DataSend
.
Data
[
1
]
=
0x00
;
DataSend
.
Data
[
1
]
=
0x00
;
DataSend
.
Data
[
2
]
=
0x00
;
DataSend
.
Data
[
2
]
=
0x00
;
DataSend
.
Data
[
3
]
=
0x00
;
DataSend
.
Data
[
3
]
=
0x00
;
DataSend
.
Data
[
4
]
=
0x00
;
DataSend
.
Data
[
4
]
=
0x00
;
DataSend
.
Data
[
5
]
=
0x00
;
DataSend
.
Data
[
5
]
=
0x00
;
DataSend
.
Data
[
6
]
=
0x00
;
DataSend
.
Data
[
6
]
=
0x00
;
DataSend
.
Data
[
7
]
=
cmd
;
DataSend
.
Data
[
7
]
=
0x00
;
//DcModuleSendMsg(&DataSend);
//放入队列
//放入队列
if
(
pdTRUE
!=
xQueueSend
(
DcModeMsg
,
&
DataSend
,
0
))
if
(
pdTRUE
!=
xQueueSend
(
DcModeMsg
,
&
DataSend
,
0
))
{
{
...
@@ -1014,96 +1036,111 @@ void SendCmdToDcModule_Incre(u8 group_index, u8 cmd)
...
@@ -1014,96 +1036,111 @@ void SendCmdToDcModule_Incre(u8 group_index, u8 cmd)
}
}
}
}
}
}
}
}
void
SendCmdToDcModule_ZhongXing
(
u8
group_index
,
u8
cmd
)
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
;
void
SendCmdToDcModule
(
u8
addr
,
u8
cmd
)
DcModuleGroup
[
1
].
modules
[
0
].
addr
=
0x02
;
{
DcModuleGroup
[
1
].
modules
[
1
].
addr
=
0x03
;
#if DcModule_ZhongXing
//SendCmdToDcModule_ZhongXing(addr,cmd);
SendDataToDcModule_ZhongXing
(
addr
,
cmd
,
0
,
0
);
#else
SendCmdToDcModule_Incre
(
addr
,
cmd
);
#endif
}
DcModuleGroup
[
2
].
modules
[
0
].
addr
=
0x04
;
DcModuleGroup
[
2
].
modules
[
1
].
addr
=
0x05
;
void
SendCheckToDcModule_Incre
(
void
)
DcModuleGroup
[
3
].
modules
[
0
].
addr
=
0x06
;
DcModuleGroup
[
3
].
modules
[
1
].
addr
=
0x07
;
}
#else
void
SendDataToDcModule_Incre
(
u8
group_index
,
u8
cmd
,
u32
volt
,
u32
current
)
{
{
StructDcModuleSend
DataSend
;
StructDcModuleSend
DataSend
;
u32
Temp
=
0
;
u8
addr
=
0
;
u8
addr
=
0
;
static
u32
StaticTick
=
0
;
if
((
GetSystemTick
()
-
StaticTick
)
>
1000
)
if
(
group_index
>
3
)
return
;
for
(
u8
j
=
0
;
j
<
DcModuleGroup
[
group_index
].
num
;
j
++
)
{
{
StaticTick
=
GetSystemTick
();
addr
=
DcModuleGroup
[
group_index
].
modules
[
j
].
addr
;
DcModuleGroup
[
group_index
].
modules
[
j
].
cmd
=
cmd
;
DcModuleGroup
[
group_index
].
modules
[
j
].
VoltageSet
=
volt
;
DcModuleGroup
[
group_index
].
modules
[
j
].
CurrentSet
=
current
;
for
(
u8
i
=
0
;
i
<
DcModuleGroupSize
;
i
++
)
//if(cmd != 0xAA
)
{
{
for
(
u8
j
=
0
;
j
<
DcModuleGroup
[
i
].
num
;
j
++
)
DataSend
.
Id
=
0x1307C080
+
addr
;
DataSend
.
Len
=
8
;
DataSend
.
Data
[
0
]
=
0x00
;
DataSend
.
Data
[
1
]
=
0x00
;
Temp
=
current
;
DataSend
.
Data
[
2
]
=
(
u8
)
(
Temp
>>
8
);
DataSend
.
Data
[
3
]
=
(
u8
)
(
Temp
>>
0
);
Temp
=
volt
;
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
))
{
{
addr
=
DcModuleGroup
[
i
].
modules
[
j
].
addr
;
//osDelay(10);
}
}
DataSend
.
Id
=
0x1307C080
+
addr
;
DataSend
.
Id
=
0x1307C080
+
addr
;
DataSend
.
Len
=
8
;
DataSend
.
Len
=
8
;
DataSend
.
Data
[
0
]
=
0x01
;
DataSend
.
Data
[
0
]
=
0x02
;
DataSend
.
Data
[
1
]
=
0x00
;
DataSend
.
Data
[
1
]
=
0x00
;
DataSend
.
Data
[
2
]
=
0x00
;
DataSend
.
Data
[
2
]
=
0x00
;
DataSend
.
Data
[
3
]
=
0x00
;
DataSend
.
Data
[
3
]
=
0x00
;
DataSend
.
Data
[
4
]
=
0x00
;
DataSend
.
Data
[
4
]
=
0x00
;
DataSend
.
Data
[
5
]
=
0x00
;
DataSend
.
Data
[
5
]
=
0x00
;
DataSend
.
Data
[
6
]
=
0x00
;
DataSend
.
Data
[
6
]
=
0x00
;
DataSend
.
Data
[
7
]
=
0x00
;
DataSend
.
Data
[
7
]
=
cmd
;
//DcModuleSendMsg(&DataSend);
//放入队列
//放入队列
if
(
pdTRUE
!=
xQueueSend
(
DcModeMsg
,
&
DataSend
,
0
))
if
(
pdTRUE
!=
xQueueSend
(
DcModeMsg
,
&
DataSend
,
0
))
{
{
osDelay
(
10
);
//osDelay(10);
}
}
}
}
}
}
}
}
void
SendCheckToDcModule_
ZhongXing
(
void
)
void
SendCheckToDcModule_
Incre
(
void
)
{
{
//心跳帧
StructDcModuleSend
DataSend
;
StructDcModuleSend
DataSend
;
u
16
addr
=
0
;
u
8
addr
=
0
;
static
u32
StaticTick
=
0
;
static
u32
StaticTick
=
0
;
if
((
GetSystemTick
()
-
StaticTick
)
>
2
000
)
if
((
GetSystemTick
()
-
StaticTick
)
>
1
000
)
{
{
StaticTick
=
GetSystemTick
();
StaticTick
=
GetSystemTick
();
for
(
u8
i
=
0
;
i
<
DcModuleGroupSize
;
i
++
)
for
(
u8
i
=
0
;
i
<
DcModuleGroupSize
;
i
++
)
{
{
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
;
if
(
DcModuleStatus_ALL
[
addr
].
State
&
0x0080
==
0x0000
)
DataSend
.
Id
=
0x1307C080
+
addr
;
{
DcModuleCancelGroupNum
(
addr
);
}
if
(
DcModuleStatus_ALL
[
addr
].
Temp
==
0
)
//未分组
{
DcModuleSetGroupNum
();
//return;//continue;
}
DataSend
.
Id
=
0x180160A0
|
(
addr
<<
8
);
DataSend
.
Len
=
8
;
DataSend
.
Len
=
8
;
DataSend
.
Data
[
0
]
=
0x0
0
;
DataSend
.
Data
[
0
]
=
0x0
1
;
DataSend
.
Data
[
1
]
=
0x00
;
DataSend
.
Data
[
1
]
=
0x00
;
DataSend
.
Data
[
2
]
=
0x00
;
DataSend
.
Data
[
2
]
=
0x00
;
DataSend
.
Data
[
3
]
=
0x00
;
DataSend
.
Data
[
3
]
=
0x00
;
...
@@ -1122,17 +1159,10 @@ void SendCheckToDcModule_ZhongXing(void)
...
@@ -1122,17 +1159,10 @@ void SendCheckToDcModule_ZhongXing(void)
}
}
}
}
}
void
SendCheckToDcModule
(
void
)
{
#if DcModule_ZhongXing
SendCheckToDcModule_ZhongXing
();
#else
SendCheckToDcModule_Incre
();
#endif
}
}
void
DcModuleGroupDateInit_Incre
(
void
)
void
DcModuleGroupDateInit_Incre
(
void
)
{
{
memset
(
&
DcModuleGroup
,
0
,
sizeof
(
DcModuleGroup
));
memset
(
&
DcModuleGroup
,
0
,
sizeof
(
DcModuleGroup
));
...
@@ -1152,25 +1182,15 @@ void DcModuleGroupDateInit_Incre(void)
...
@@ -1152,25 +1182,15 @@ void DcModuleGroupDateInit_Incre(void)
DcModuleGroup
[
3
].
modules
[
0
].
addr
=
0x06
;
DcModuleGroup
[
3
].
modules
[
0
].
addr
=
0x06
;
}
}
void
DcModuleGroupDateInit_ZhongXing
(
void
)
#endif
{
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
;
void
SendCheckToDcModule
(
void
)
DcModuleGroup
[
3
].
modules
[
1
].
addr
=
0x07
;
{
#if DcModule_ZhongXing
SendCheckToDcModule_ZhongXing
();
#else
SendCheckToDcModule_Incre
();
#endif
}
}
...
@@ -1183,95 +1203,16 @@ void DcModuleGroupDateInit(void)
...
@@ -1183,95 +1203,16 @@ void DcModuleGroupDateInit(void)
#endif
#endif
}
}
u8
DcModuleGetStatus_Incre
(
u8
addr
)
void
SendDataToDcModule
(
u8
addr
,
u8
cmd
,
u32
volt
,
u32
current
)
{
if
(
0x0002
!=
(
DcModuleStatus_ALL
[
addr
].
State
&
0x0002
))
{
return
TRUE
;
}
else
{
return
FALSE
;
}
}
u8
DcModuleGetStatus_ZhongXing
(
u8
addr
)
{
if
(
0x0010
!=
(
DcModuleStatus_ALL
[
addr
].
State
&
0x0010
))
{
return
TRUE
;
}
else
{
return
FALSE
;
}
}
u8
DcModuleGetStatus
(
u8
addr
)
{
{
#if DcModule_ZhongXing
#if DcModule_ZhongXing
return
DcModuleGetStatus_ZhongXing
(
addr
);
SendDataToDcModule_ZhongXing
(
addr
,
cmd
,
volt
,
current
);
#else
#else
return
DcModuleGetStatus_Incre
(
addr
);
SendDataToDcModule_Incre
(
addr
,
cmd
,
volt
,
current
);
#endif
#endif
}
}
void
DcModuleSetGroupNum
(
void
)
//中兴模块分组设置
{
StructDcModuleSend
DataSend
;
u16
addr
=
0
;
for
(
u8
i
=
0
;
i
<
DcModuleGroupSize
;
i
++
)
{
for
(
u8
j
=
0
;
j
<
DcModuleGroup
[
i
].
num
;
j
++
)
{
addr
=
DcModuleGroup
[
i
].
modules
[
j
].
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);
}
}
}
}
void
DcModuleCancelGroupNum
(
u16
addr
)
{
//改为动态分组
StructDcModuleSend
DataSend
;
DataSend
.
Id
=
0x180260A0
|
(
addr
<<
8
);
DataSend
.
Len
=
8
;
DataSend
.
Data
[
0
]
=
0x00
;
DataSend
.
Data
[
1
]
=
0x0E
;
DataSend
.
Data
[
2
]
=
0x03
;
DataSend
.
Data
[
3
]
=
0x00
;
DataSend
.
Data
[
4
]
=
0x00
;
DataSend
.
Data
[
5
]
=
0x00
;
DataSend
.
Data
[
6
]
=
0x00
;
DataSend
.
Data
[
7
]
=
0x02
;
//DcModuleSendMsg(&DataSend);
//放入队列
if
(
pdTRUE
!=
xQueueSend
(
DcModeMsg
,
&
DataSend
,
0
))
{
//osDelay(10);
}
}
void
SendDataToDcModule_A
(
EnumSwitchStatus
Set
,
u16
Volt
,
u16
Currt
)
void
SendDataToDcModule_A
(
EnumSwitchStatus
Set
,
u16
Volt
,
u16
Currt
)
{
{
u8
cmd
=
0
;
u8
cmd
=
0
;
...
@@ -1285,7 +1226,6 @@ void SendDataToDcModule_A(EnumSwitchStatus Set, u16 Volt, u16 Currt)
...
@@ -1285,7 +1226,6 @@ void SendDataToDcModule_A(EnumSwitchStatus Set, u16 Volt, u16 Currt)
}
}
DcModuleSet
(
Set
,
Volt
,
Currt
);
DcModuleSet
(
Set
,
Volt
,
Currt
);
Currt
=
2
;
SendDataToDcModule
(
0
,
cmd
,
Volt
*
100
,
Currt
*
100
);
SendDataToDcModule
(
0
,
cmd
,
Volt
*
100
,
Currt
*
100
);
}
}
...
@@ -1353,7 +1293,7 @@ void RelayStatusCheck(void)
...
@@ -1353,7 +1293,7 @@ void RelayStatusCheck(void)
}
}
void
DcModuleStatusCheck
_ZhongXing
(
void
)
void
DcModuleStatusCheck
(
void
)
{
{
u16
status
=
0
;
u16
status
=
0
;
u16
status_A
=
0
;
u16
status_A
=
0
;
...
@@ -1367,7 +1307,7 @@ void DcModuleStatusCheck_ZhongXing(void)
...
@@ -1367,7 +1307,7 @@ void DcModuleStatusCheck_ZhongXing(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
;
status_A
|=
DcModuleStatus_ALL
[
addr
].
State
;
status_A
|=
DcModuleStatus_ALL
[
addr
].
State
.
Mult
;
}
}
}
}
else
if
(
DcModuleGroup
[
i
].
status
==
Hold_B
)
else
if
(
DcModuleGroup
[
i
].
status
==
Hold_B
)
...
@@ -1375,7 +1315,7 @@ void DcModuleStatusCheck_ZhongXing(void)
...
@@ -1375,7 +1315,7 @@ void DcModuleStatusCheck_ZhongXing(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
;
status_B
|=
DcModuleStatus_ALL
[
addr
].
State
;
status_B
|=
DcModuleStatus_ALL
[
addr
].
State
.
Mult
;
}
}
}
}
else
if
(
DcModuleGroup
[
i
].
status
==
Valid
)
else
if
(
DcModuleGroup
[
i
].
status
==
Valid
)
...
@@ -1383,7 +1323,7 @@ void DcModuleStatusCheck_ZhongXing(void)
...
@@ -1383,7 +1323,7 @@ void DcModuleStatusCheck_ZhongXing(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
;
status
|=
DcModuleStatus_ALL
[
addr
].
State
;
status
|=
DcModuleStatus_ALL
[
addr
].
State
.
Mult
;
}
}
}
}
}
}
...
@@ -1405,12 +1345,4 @@ void DcModuleStatusCheck_ZhongXing(void)
...
@@ -1405,12 +1345,4 @@ void DcModuleStatusCheck_ZhongXing(void)
DcModuleStatus_B
.
Mult
=
(
u8
)(
status_B
>>
8
);
DcModuleStatus_B
.
Mult
=
(
u8
)(
status_B
>>
8
);
}
}
void
DcModuleStatusCheck
(
void
)
{
#if DcModule_ZhongXing
DcModuleStatusCheck_ZhongXing
();
#else
#endif
}
DcPillar/Src/SmartAllocation/Drv_SmartAllocation.h
浏览文件 @
184cd9d2
...
@@ -2,6 +2,14 @@
...
@@ -2,6 +2,14 @@
#define __DRV_SMARTALLOCATION_H__
#define __DRV_SMARTALLOCATION_H__
#include "Global.h"
#include "Global.h"
#include "Drv_DcModule.h"
#if DcModule_ZhongXing
#define DCModuleStatusOn 0x02
#else
#define DCModuleStatusOn 0x00
#endif
typedef
enum
typedef
enum
{
{
...
@@ -15,7 +23,7 @@ typedef struct
...
@@ -15,7 +23,7 @@ typedef struct
{
{
u8
addr
;
u8
addr
;
u8
online
;
u8
online
;
u16
status
;
UnionDcModuleStatus
status
;
u8
cmd
;
u8
cmd
;
u32
Voltage
;
u32
Voltage
;
u32
Current
;
u32
Current
;
...
@@ -44,21 +52,6 @@ typedef struct
...
@@ -44,21 +52,6 @@ typedef struct
u16
ActualCurrt
;
//0.1A/Bit;
u16
ActualCurrt
;
//0.1A/Bit;
}
StructDcModuleGroupCtrl
;
}
StructDcModuleGroupCtrl
;
typedef
union
{
u8
Mult
;
struct
{
u8
Reserve
:
1
;
//Bit0: 预留
u8
other
:
1
;
//Bit1: 其他故障 0x00 -- 正常 0x01 --- 故障
u8
fan
:
1
;
//Bit2: 风扇故障 0x00 -- 正常 0x01 --- 故障
u8
outShort
:
1
;
//Bit3: 直流输出短路 0x00 -- 正常 0x01 --- 故障
u8
tempOver
:
1
;
//Bit4: 过温 0x00 -- 正常 0x01 --- 故障
u8
outLow
:
1
;
//Bit5: 直流输出欠压 0x00 -- 正常 0x01 --- 故障
u8
outHigh
:
1
;
//Bit6: 直流输出过压故障 0x00 -- 正常 0x01 --- 故障
u8
accIn
:
1
;
//Bit7: 交流输入故障 0x00 -- 正常 0x01 --- 故障
}
Value
;
}
UnionDcModuleStatus
;
extern
UnionDcModuleStatus
DcModuleStatus
;
extern
UnionDcModuleStatus
DcModuleStatus
;
extern
UnionDcModuleStatus
DcModuleStatus_A
;
extern
UnionDcModuleStatus
DcModuleStatus_A
;
...
...
DcPillar/Src/Thread/Charge/ChgPro_ChgIdle.c
浏览文件 @
184cd9d2
...
@@ -46,6 +46,8 @@ void ChgProChgIdle(StructChargeCtrl *pChargeCtrl)
...
@@ -46,6 +46,8 @@ void ChgProChgIdle(StructChargeCtrl *pChargeCtrl)
memset
(
&
BmvMsg
,
0xFF
,
sizeof
(
BmvMsg
));
memset
(
&
BmvMsg
,
0xFF
,
sizeof
(
BmvMsg
));
memset
(
&
BmtMsg
,
0xFF
,
sizeof
(
BmtMsg
));
memset
(
&
BmtMsg
,
0xFF
,
sizeof
(
BmtMsg
));
u32
OneSecondTick
=
GetSystemTick
();
u32
LockCount
=
0
;
while
(
1
)
while
(
1
)
{
{
memset
(
&
BemMsg
,
0
,
sizeof
(
BemMsg
));
memset
(
&
BemMsg
,
0
,
sizeof
(
BemMsg
));
...
@@ -96,6 +98,31 @@ void ChgProChgIdle(StructChargeCtrl *pChargeCtrl)
...
@@ -96,6 +98,31 @@ void ChgProChgIdle(StructChargeCtrl *pChargeCtrl)
}
}
ACContactorSet
(
eSwSta_On
);
ACContactorSet
(
eSwSta_On
);
}
}
if
((
GetSystemTick
()
-
OneSecondTick
)
>=
1000
)
{
if
(
LockGet
()
==
eSwSta_On
&&
ChargeStopType
!=
eChgStop_None
)
{
LockCount
++
;
if
(
LockCount
>=
10
)
{
LockCount
=
10
;
}
else
if
(
LockCount
>=
3
)
{
LockCount
=
10
;
LockSet
(
eSwSta_Off
);
}
else
if
(
LockCount
>=
2
)
{
LockSet
(
eSwSta_On
);
}
}
}
if
(
if
(
(
0
!=
PillarError
.
Value
.
Emergency
)
(
0
!=
PillarError
.
Value
.
Emergency
)
||
(
0
!=
PillarError
.
Value
.
NoDcmod
)
||
(
0
!=
PillarError
.
Value
.
NoDcmod
)
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论