Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
DC360_1drap3_xiaoju_V1
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
丁雨邯
DC360_1drap3_xiaoju_V1
Commits
5a5d23e5
提交
5a5d23e5
authored
5月 05, 2020
作者:
wysheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修复一些错误
1. 错误的发送停止充电完成 2. BMS需求电压 电流
上级
6152cb7a
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
715 行增加
和
549 行删除
+715
-549
Drv_TCUComm.c
DcPillar/Src/Drivers/Drv_TCUComm.c
+205
-145
Drv_SmartAllocation.c
DcPillar/Src/SmartAllocation/Drv_SmartAllocation.c
+109
-95
SmartAllocation_B_ChgRun.c
DcPillar/Src/SmartAllocation/SmartAllocation_B_ChgRun.c
+34
-10
SmartAllocation_ChgRun.c
DcPillar/Src/SmartAllocation/SmartAllocation_ChgRun.c
+286
-220
Thd_TCU.c
DcPillar/Src/Thread/Thd_TCU.c
+81
-79
没有找到文件。
DcPillar/Src/Drivers/Drv_TCUComm.c
浏览文件 @
5a5d23e5
...
...
@@ -47,7 +47,7 @@ void TCURxIrqHandle(void)
StructTCUSend
Frame
;
Union1939Id
Id1939
=
{
.
Mult
=
0
,
.
Mult
=
0
,
};
IrSta
=
MCP2515_B_ReadStatus
();
portBASE_TYPE
taskWoken
=
pdFALSE
;
...
...
@@ -80,7 +80,7 @@ void TCURxIrqHandle(void)
if
(
Id1939
.
Disp
.
DP
)
Frame
.
Pgn
+=
0x010000
;
}
else
else
{
Frame
.
DA
=
0xFF
;
Frame
.
Pgn
=
(
Id1939
.
Disp
.
PF
<<
8
)
+
Id1939
.
Disp
.
DA_PS
;
...
...
@@ -91,23 +91,23 @@ void TCURxIrqHandle(void)
switch
(
Frame
.
Pgn
)
{
case
eCmd_start
:
// 充电启动帧
case
eCmd_stop
:
// 充电停止帧
case
eCmd_time
:
// 对时帧
case
eCmd_versi
:
// 版本校验帧
case
eCmd_param
:
// 下发充电参数信息帧
case
eCmd_SerCon
:
// 充电服务启停控制帧
case
eCmd_Gun
:
// 电子锁可控制帧
case
eCmd_power
:
// 功率调节控制帧
case
eCmd_Query
:
// 充电桩配置信息查询帧
case
eCmd_verificationAck
:
//车辆验证应答帧
////////////状态帧/////////////////
case
eCmd_startCompAck
:
// 充电启动完成应答帧
case
eCmd_stopCompAck
:
// 充电停止完成应答帧
case
eCmd_start
:
// 充电启动帧
case
eCmd_stop
:
// 充电停止帧
case
eCmd_time
:
// 对时帧
case
eCmd_versi
:
// 版本校验帧
case
eCmd_param
:
// 下发充电参数信息帧
case
eCmd_SerCon
:
// 充电服务启停控制帧
case
eCmd_Gun
:
// 电子锁可控制帧
case
eCmd_power
:
// 功率调节控制帧
case
eCmd_Query
:
// 充电桩配置信息查询帧
case
eCmd_verificationAck
:
//车辆验证应答帧
////////////状态帧/////////////////
case
eCmd_startCompAck
:
// 充电启动完成应答帧
case
eCmd_stopCompAck
:
// 充电停止完成应答帧
///////////数据帧/直流////////////
case
eCmd_DCTCUMeasu
:
// 计费单元遥测帧
///////////心跳帧///////////
case
eCmd_TcuHeart
:
// 计费单元心跳
case
eCmd_TcuHeart
:
// 计费单元心跳
case
eCmd_TCUErroComm
:
// 计费单元错误帧
Frame
.
Prio
=
Id1939
.
Disp
.
Prio
;
Frame
.
DP
=
Id1939
.
Disp
.
DP
;
...
...
@@ -126,7 +126,7 @@ void TCURxIrqHandle(void)
Frame
.
Data
[
5
]
=
RxMsg
.
Data
[
5
];
Frame
.
Data
[
6
]
=
RxMsg
.
Data
[
6
];
Frame
.
Data
[
7
]
=
RxMsg
.
Data
[
7
];
//if(Frame.DA == ChargerCont1939Addr)
{
if
(
pdTRUE
==
xQueueSendFromISR
(
TCUMsg
,
&
Frame
,
&
taskWoken
))
...
...
@@ -174,7 +174,7 @@ void TCURxIrqHandle(void)
if
(
Id1939
.
Disp
.
DP
)
Frame
.
Pgn
+=
0x010000
;
}
else
else
{
Frame
.
DA
=
0xFF
;
Frame
.
Pgn
=
(
Id1939
.
Disp
.
PF
<<
8
)
+
Id1939
.
Disp
.
DA_PS
;
...
...
@@ -185,24 +185,24 @@ void TCURxIrqHandle(void)
switch
(
Frame
.
Pgn
)
{
case
eCmd_start
:
// 充电启动帧
case
eCmd_stop
:
// 充电停止帧
case
eCmd_time
:
// 对时帧
case
eCmd_versi
:
//版本校验帧
case
eCmd_param
:
// 下发充电参数信息帧
case
eCmd_SerCon
:
// 充电服务启停控制帧
case
eCmd_Gun
:
// 电子锁可控制帧
case
eCmd_power
:
// 功率调节控制帧
case
eCmd_Query
:
// 充电桩配置信息查询帧
case
eCmd_verificationAck
:
//车辆验证应答帧
////////////状态帧/////////////////
case
eCmd_startCompAck
:
// 充电启动完成应答帧
case
eCmd_stopCompAck
:
// 充电停止完成应答帧
case
eCmd_start
:
// 充电启动帧
case
eCmd_stop
:
// 充电停止帧
case
eCmd_time
:
// 对时帧
case
eCmd_versi
:
//版本校验帧
case
eCmd_param
:
// 下发充电参数信息帧
case
eCmd_SerCon
:
// 充电服务启停控制帧
case
eCmd_Gun
:
// 电子锁可控制帧
case
eCmd_power
:
// 功率调节控制帧
case
eCmd_Query
:
// 充电桩配置信息查询帧
case
eCmd_verificationAck
:
//车辆验证应答帧
////////////状态帧/////////////////
case
eCmd_startCompAck
:
// 充电启动完成应答帧
case
eCmd_stopCompAck
:
// 充电停止完成应答帧
///////////数据帧/直流////////////
///////////心跳帧///////////
case
eCmd_TcuHeart
:
// 计费单元心跳
case
eCmd_TCUErroComm
:
// 计费单元错误帧
case
eCmd_TcuHeart
:
// 计费单元心跳
case
eCmd_TCUErroComm
:
// 计费单元错误帧
Frame
.
Prio
=
Id1939
.
Disp
.
Prio
;
Frame
.
DP
=
Id1939
.
Disp
.
DP
;
Frame
.
PF
=
Id1939
.
Disp
.
PF
;
...
...
@@ -350,7 +350,7 @@ u8 TCUCommInit(void)
//osMessageQDef(TCUMsg_B, 64, StructPgnRecv);
//TCUMsg_B = osMessageCreate(osMessageQ(TCUMsg_B), NULL);
TCUCanInit
();
return
TRUE
;
}
...
...
@@ -435,8 +435,8 @@ StructTCUEM TCUChgContralTCUEM_B;
StructTCUCControl
TCUControlInfo
=
{
.
ChargingServiceFlag
=
2
,
.
version
=
0x0220
,
.
ChargingServiceFlag
=
2
,
.
version
=
0x0220
,
.
ChargeNum
=
{
0
,
0
,
0
,
0
...
...
@@ -447,19 +447,19 @@ StructTCUCControl TCUControlInfo =
},
.
DeviceModel
=
{
0xFF
,
0xff
,
0xFF
,
0xff
,
},
//设备型号
.
HardwareVersion
=
{
0xFF
,
0xff
,
0xFF
,
0xff
,
},
//硬件版本
.
SoftwareVersion
=
{
0xFF
,
0xff
,
0xFF
,
0xff
,
},
//软件版本
...
...
@@ -473,7 +473,7 @@ StructTCUCControl TCUControlInfo =
.
DcMaxVolt
=
7500
,
//模块最大电压 XXX.xV
.
DcMinVolt
=
3000
,
//模块最小电压 XXX.xV
.
DcMaxCurrt
=
2400
,
//模块最大电流 XX.xA
.
DcMinCurrt
=
0
,
//模块最小电流 XX.xA
.
DcMinCurrt
=
0
,
//模块最小电流 XX.xA
.
PowerControl_A
=
{
2
,
0
,
100
...
...
@@ -528,7 +528,7 @@ void TCUMultiPackSendMsg(u8 * pfram, u16 len, EnumTCUCommPgn cmd, u8 Prio, u8 ad
u16
checkSum
=
0
;
u8
num
=
(
len
+
3
+
2
)
/
7
;
if
((
len
+
3
+
2
)
%
7
)
num
++
;
for
(
i
=
0
;
i
<
len
;
i
++
)
{
checkSum
+=
pfram
[
i
];
...
...
@@ -551,13 +551,13 @@ void TCUMultiPackSendMsg(u8 * pfram, u16 len, EnumTCUCommPgn cmd, u8 Prio, u8 ad
else
if
(
i
==
num
)
//最后一包
{
FrameSend
.
Data
[
0
]
=
i
;
if
(
len
<
lenFlag
)
{
FrameSend
.
Data
[
1
]
=
(
u8
)
checkSum
;
FrameSend
.
Data
[
2
]
=
(
u8
)
(
checkSum
>>
8
);
memset
(
&
FrameSend
.
Data
[
3
],
0x00
,
5
);
}
else
{
...
...
@@ -567,9 +567,9 @@ void TCUMultiPackSendMsg(u8 * pfram, u16 len, EnumTCUCommPgn cmd, u8 Prio, u8 ad
if
((
len
-
lenFlag
+
2
)
<
7
)
memset
(
&
FrameSend
.
Data
[
len
-
lenFlag
+
3
],
0x00
,
5
-
len
+
lenFlag
);
}
}
else
else
{
FrameSend
.
Data
[
0
]
=
i
;
memcpy
(
&
FrameSend
.
Data
[
1
],
&
pfram
[
lenFlag
],
7
);
...
...
@@ -612,7 +612,7 @@ void StartMeg(StructTCUSend * pPgnRecv)
TCUCtrl
.
Param
=
0
;
TCUCurChgRecd
.
TCUChgStartNotetrl
=
1
;
//回复充电开始发送标志位
}
else
else
{
TCUCurChgRecd
.
StarValid
=
0
;
//参数下发失败
TCUCurChgRecd
.
TCUChgStartNotetrl
=
1
;
//回复充电开始发送标志位
...
...
@@ -622,7 +622,7 @@ void StartMeg(StructTCUSend * pPgnRecv)
{
;
//启动逻辑处理阶段不做处理
}
else
else
{
TCUCurChgRecd
.
TCUChgStartNotetrl
=
1
;
//回复充电开始发送标志位
}
...
...
@@ -638,7 +638,7 @@ void StartMeg(StructTCUSend * pPgnRecv)
StartMeg_B
.
PlugToChgFlag
=
pPgnRecv
->
Data
[
2
];
StartMeg_B
.
AuxiliaryPower
=
pPgnRecv
->
Data
[
3
];
StartMeg_B
.
ParallelCharging
=
pPgnRecv
->
Data
[
4
];
if
((
StartMeg_B
.
LoadSswitch
==
1
)
||
(
StartMeg_B
.
LoadSswitch
==
2
)
&&
(
StartMeg_B
.
PlugToChgFlag
==
0
)
||
(
StartMeg_B
.
PlugToChgFlag
==
1
))
{
...
...
@@ -648,7 +648,7 @@ void StartMeg(StructTCUSend * pPgnRecv)
TCUCtrl
.
Param
=
0
;
TCUCurChgRecd_B
.
TCUChgStartNotetrl
=
1
;
//回复充电开始发送标志位
}
else
else
{
TCUCurChgRecd_B
.
StarValid
=
0
;
//参数下发失败
TCUCurChgRecd_B
.
TCUChgStartNotetrl
=
1
;
//回复充电开始发送标志位
...
...
@@ -713,7 +713,7 @@ u8 AllowDTUStartCharge(u8 * Reason)
*
Reason
=
0x1F
;
else
if
(
PillarError
.
Value
.
OutCurrt
)
*
Reason
=
0x21
;
else
else
{
*
Reason
=
0x00
;
TCUCurChgRecd
.
StarChgResult
=
1
;
//成功
...
...
@@ -768,7 +768,7 @@ u8 AllowDTUStartCharge_B(u8 * Reason)
*
Reason
=
0x1F
;
else
if
(
PillarError_B
.
Value
.
OutCurrt
)
*
Reason
=
0x21
;
else
else
{
*
Reason
=
0x00
;
TCUCurChgRecd_B
.
StarChgResult
=
1
;
//成功
...
...
@@ -794,7 +794,7 @@ void StartMegAck_A(void)
if
(
FALSE
==
AllowDTUStartCharge
(
&
Reason
))
Data
[
2
]
=
0x01
;
else
else
Data
[
2
]
=
0x00
;
Data
[
3
]
=
Reason
;
...
...
@@ -819,7 +819,7 @@ void StartMegAck_B(void)
if
(
FALSE
==
AllowDTUStartCharge_B
(
&
Reason
))
Data
[
2
]
=
0x01
;
else
else
Data
[
2
]
=
0x00
;
Data
[
3
]
=
Reason
;
...
...
@@ -890,7 +890,7 @@ u8 AllowDTUStartCompCharge(u8 * Reason)
*
Reason
=
0x30
;
else
if
(
TCUCurChgRecd
.
TCUStartCompresult
==
2
)
*
Reason
=
0x01
;
//控制导引故障
else
else
*
Reason
=
0x28
;
//其他故障
return
FALSE
;
...
...
@@ -956,7 +956,7 @@ u8 AllowDTUStartCompCharge_B(u8 * Reason)
*
Reason
=
0x30
;
else
if
(
TCUCurChgRecd_B
.
TCUStartCompresult
==
2
)
*
Reason
=
0x01
;
//控制导引故障
else
else
*
Reason
=
0x28
;
//其他故障
return
FALSE
;
...
...
@@ -974,7 +974,7 @@ void startCompSend_A(void)
if
(
FALSE
==
AllowDTUStartCompCharge
(
&
reason
))
Data
[
len
++
]
=
0x01
;
else
else
Data
[
len
++
]
=
0x00
;
Data
[
len
++
]
=
reason
;
...
...
@@ -989,7 +989,7 @@ void startCompSend_A(void)
Data
[
len
++
]
=
0x00
;
Data
[
len
++
]
=
0x00
;
}
else
else
{
Data
[
len
++
]
=
0x01
;
Data
[
len
++
]
=
0x01
;
...
...
@@ -998,7 +998,7 @@ void startCompSend_A(void)
if
(
ChgVer
==
eChgVer_2011
)
Data
[
len
++
]
=
0x01
;
else
else
Data
[
len
++
]
=
0x00
;
Data
[
len
++
]
=
BrmMsg
.
BatType
;
...
...
@@ -1032,11 +1032,11 @@ void startCompSend_A(void)
Data
[
len
++
]
=
0xDC
;
// BIN码 2
Data
[
len
++
]
=
0x05
;
// 最大输出电流
Data
[
len
++
]
=
0xa0
;
// BIN码 2
Data
[
len
++
]
=
0x0F
;
//最小输出电流0A
Data
[
len
++
]
=
0x0F
;
//最小输出电流0A
memcpy
(
&
Data
[
len
],
BrmMsg
.
Vin
,
17
);
//车辆识别码 BIN码 17
len
+=
17
;
TCUMultiPackSendMsg
(
Data
,
len
,
eCmd_startComp
,
4
,
ChargerCont1939Addr
);
TCUMultiPackSendMsg
(
Data
,
55
,
eCmd_startComp
,
4
,
ChargerCont1939Addr
);
}
...
...
@@ -1052,7 +1052,7 @@ void startCompSend_B(void)
if
(
FALSE
==
AllowDTUStartCompCharge_B
(
&
reason
))
Data
[
len
++
]
=
0x01
;
else
else
Data
[
len
++
]
=
0x00
;
Data
[
len
++
]
=
reason
;
...
...
@@ -1067,7 +1067,7 @@ void startCompSend_B(void)
Data
[
len
++
]
=
0x00
;
Data
[
len
++
]
=
0x00
;
}
else
else
{
Data
[
len
++
]
=
0x01
;
Data
[
len
++
]
=
0x01
;
...
...
@@ -1076,7 +1076,7 @@ void startCompSend_B(void)
if
(
ChgVer_B
==
eChgVer_2011
)
Data
[
len
++
]
=
0x01
;
else
else
Data
[
len
++
]
=
0x00
;
Data
[
len
++
]
=
BrmMsg_B
.
BatType
;
...
...
@@ -1110,10 +1110,10 @@ void startCompSend_B(void)
Data
[
len
++
]
=
0xDC
;
// BIN码 2
Data
[
len
++
]
=
0x05
;
// 最大输出电流
Data
[
len
++
]
=
0xa0
;
// BIN码 2
Data
[
len
++
]
=
0x0F
;
//最小输出电流0A
Data
[
len
++
]
=
0x0F
;
//最小输出电流0A
memcpy
(
&
Data
[
len
],
BrmMsg_B
.
Vin
,
17
);
//车辆识别码 BIN码 17
len
+=
17
;
TCUMultiPackSendMsg
(
Data
,
len
,
eCmd_startComp
,
4
,
ChargerCont1939Addr_B
);
//多包传输
TCUMultiPackSendMsg
(
Data
,
55
,
eCmd_startComp
,
4
,
ChargerCont1939Addr_B
);
//多包传输
}
...
...
@@ -1130,7 +1130,7 @@ void ACkStartCompMeg(StructTCUSend * pPgnRecv)
TCUCurChgRecd
.
TCUChargeEnable
=
0
;
}
TCUCurChgRecd
.
TCUChgStarCompNotetrl
=
3
;
TCUCurChgRecd
.
TCUChgStarCompNotetrl
=
0
;
}
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
{
...
...
@@ -1138,12 +1138,12 @@ void ACkStartCompMeg(StructTCUSend * pPgnRecv)
AckStartCompMeg_B
.
LoadSswitch
=
pPgnRecv
->
Data
[
1
];
AckStartCompMeg_B
.
AckFlag
=
pPgnRecv
->
Data
[
2
];
if
(
AckStartCompMeg_
A
.
AckFlag
==
01
)
if
(
AckStartCompMeg_
B
.
AckFlag
==
01
)
{
TCUCurChgRecd_B
.
TCUChargeEnable
=
0
;
}
TCUCurChgRecd_B
.
TCUChgStarCompNotetrl
=
3
;
TCUCurChgRecd_B
.
TCUChgStarCompNotetrl
=
0
;
}
}
...
...
@@ -1181,7 +1181,7 @@ void StopMegAck_A(void)
TCUCurChgRecd
.
TCUChargeEnable
=
0
;
//Bms停止标志
Data
[
1
]
=
00
;
}
else
else
Data
[
1
]
=
01
;
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_stopAck
,
4
,
ChargerCont1939Addr
);
...
...
@@ -1202,7 +1202,7 @@ void StopMegAck_B(void)
Data
[
1
]
=
00
;
TCUCurChgRecd_B
.
TCUChargeEnable
=
0
;
//b枪Bms停止标志
}
else
else
Data
[
1
]
=
01
;
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_stopAck
,
4
,
ChargerCont1939Addr_B
);
...
...
@@ -1279,7 +1279,7 @@ void GetStopReason_A(u8 * stopReason)
*
stopReason
=
0x2B
;
else
if
(
ChargeCtrl
.
CurProcess
==
eChgPro_ChgBreak
)
*
stopReason
=
0x2D
;
else
else
*
stopReason
=
0x2c
;
return
;
...
...
@@ -1355,7 +1355,7 @@ void GetStopReason_B(u8 * stopReason)
*
stopReason
=
0x2B
;
else
if
(
ChargeCtrl_B
.
CurProcess
==
eChgPro_B_ChgBreak
)
*
stopReason
=
0x2D
;
else
else
*
stopReason
=
0x2c
;
return
;
...
...
@@ -1516,7 +1516,7 @@ void TCUtimeSet(StructTCUSend * pPgnRecv)
StructTime
TimeBlock
;
cp56time2a
*
time
=
NULL
;
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
{
TCUCommuStatus
.
CommStage
=
TimeStage
;
...
...
@@ -1525,8 +1525,8 @@ void TCUtimeSet(StructTCUSend * pPgnRecv)
{
TCUCommuStatus_B
.
CommStage
=
TimeStage
;
}
memcpy
(
time
,
&
pPgnRecv
->
Data
[
1
],
7
);
TimeBlock
.
Year
=
time
->
year
+
2000
;
TimeBlock
.
Mon
=
time
->
month
;
...
...
@@ -1585,9 +1585,9 @@ void TCUVersionCheck(StructTCUSend * pPgnRecv)
{
TCUCommuStatus
.
VerChkVaild
=
1
;
//版本校验成功
TCUCommuStatus
.
CommStage
=
VersionStage
;
}
else
else
TCUCommuStatus
.
VerChkVaild
=
0
;
//版本校验失败
}
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
...
...
@@ -1598,12 +1598,12 @@ void TCUVersionCheck(StructTCUSend * pPgnRecv)
{
TCUCommuStatus_B
.
VerChkVaild
=
1
;
//版本校验成功
TCUCommuStatus_B
.
CommStage
=
VersionStage
;
}
else
else
TCUCommuStatus_B
.
VerChkVaild
=
0
;
//版本校验失败
}
return
;
...
...
@@ -1628,7 +1628,7 @@ void TCUVersionCheckSent(u8 ChgNum)
{
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_versiAck
,
6
,
ChargerCont1939Addr_B
);
}
}
...
...
@@ -1662,16 +1662,16 @@ void TCUParamAck(u8 ChgNum)
if
(
TCUCommuStatus
.
VerChkVaild
==
0
)
Data
[
2
]
=
1
;
//版本校验失败
else
else
Data
[
2
]
=
2
;
//心跳超时
}
else
else
{
Data
[
1
]
=
0
;
Data
[
2
]
=
0
;
TCUCommuStatus
.
ParamVaild
=
1
;
}
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_paramAck
,
6
,
ChargerCont1939Addr
);
}
else
if
(
ChgNum
==
2
)
...
...
@@ -1683,19 +1683,19 @@ void TCUParamAck(u8 ChgNum)
if
(
TCUCommuStatus_B
.
VerChkVaild
==
0
)
Data
[
2
]
=
1
;
//版本校验失败
else
else
Data
[
2
]
=
2
;
//心跳超时
}
else
else
{
Data
[
1
]
=
0
;
Data
[
2
]
=
0
;
TCUCommuStatus_B
.
ParamVaild
=
1
;
}
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_paramAck
,
6
,
ChargerCont1939Addr_B
);
}
}
...
...
@@ -1704,18 +1704,18 @@ void SerConAckAnalysis(StructTCUSend * pPgnRecv)
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
{
TCUCommuStatus
.
CommStage
=
ServiceContralStage
;
if
((
pPgnRecv
->
Data
[
1
]
!=
0x01
)
&&
(
pPgnRecv
->
Data
[
1
]
!=
0x02
))
TCUCommuStatus
.
ServiceContralVaildValue
=
1
;
//数据合法性校验失败
else
if
((
TCUCommuStatus
.
ConnectFlag
==
CONNECT_TIMEOUT
)
||
(
TCUCommuStatus
.
HeartBeatVaild
))
TCUCommuStatus
.
ServiceContralVaildValue
=
2
;
//通讯超时
else
if
(
TCUCommuStatus
.
VerChkVaild
==
0
)
TCUCommuStatus
.
ServiceContralVaildValue
=
3
;
//版本校验未完成
TCUCommuStatus
.
ServiceContralVaildValue
=
3
;
//版本校验未完成
else
if
(
TCUCommuStatus
.
ParamVaild
==
0
)
TCUCommuStatus
.
ServiceContralVaildValue
=
4
;
//参数下发为未完成
else
if
(
TCUCurChgRecd
.
TCUChargeEnable
==
1
)
TCUCommuStatus
.
ServiceContralVaildValue
=
05
;
else
else
TCUCommuStatus
.
ServiceContralVaildValue
=
0
;
TCUCommuStatus
.
ChargingServiceSetValue
=
pPgnRecv
->
Data
[
1
];
...
...
@@ -1726,18 +1726,18 @@ void SerConAckAnalysis(StructTCUSend * pPgnRecv)
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
{
TCUCommuStatus_B
.
CommStage
=
ServiceContralStage
;
if
((
pPgnRecv
->
Data
[
1
]
!=
0x01
)
&&
(
pPgnRecv
->
Data
[
1
]
!=
0x02
))
TCUCommuStatus_B
.
ServiceContralVaildValue
=
1
;
//数据合法性校验失败
else
if
((
TCUCommuStatus_B
.
ConnectFlag
==
CONNECT_TIMEOUT
)
||
(
TCUCommuStatus_B
.
HeartBeatVaild
))
TCUCommuStatus_B
.
ServiceContralVaildValue
=
2
;
//通讯超时
else
if
(
TCUCommuStatus_B
.
VerChkVaild
==
0
)
TCUCommuStatus_B
.
ServiceContralVaildValue
=
3
;
//版本校验未完成
TCUCommuStatus_B
.
ServiceContralVaildValue
=
3
;
//版本校验未完成
else
if
(
TCUCommuStatus_B
.
ParamVaild
==
0
)
TCUCommuStatus_B
.
ServiceContralVaildValue
=
4
;
//参数下发为未完成
else
if
(
TCUCurChgRecd_B
.
TCUChargeEnable
==
1
)
TCUCommuStatus_B
.
ServiceContralVaildValue
=
05
;
else
else
TCUCommuStatus_B
.
ServiceContralVaildValue
=
0
;
TCUCommuStatus_B
.
ChargingServiceSetValue
=
pPgnRecv
->
Data
[
1
];
...
...
@@ -1745,7 +1745,7 @@ void SerConAckAnalysis(StructTCUSend * pPgnRecv)
if
(
TCUCommuStatus_B
.
ServiceContralVaildValue
==
0
)
TCUControlInfo
.
ChargingServiceFlag
=
pPgnRecv
->
Data
[
1
];
}
}
...
...
@@ -1767,7 +1767,7 @@ void SerConAck(u8 ChgNum)
Data
[
2
]
=
00
;
//成功
Data
[
3
]
=
00
;
//成功
}
else
else
{
Data
[
2
]
=
01
;
//失败
Data
[
3
]
=
TCUCommuStatus
.
ServiceContralVaildValue
;
//失败
...
...
@@ -1784,7 +1784,7 @@ void SerConAck(u8 ChgNum)
Data
[
2
]
=
00
;
//成功
Data
[
3
]
=
00
;
//成功
}
else
else
{
Data
[
2
]
=
01
;
//失败
Data
[
3
]
=
TCUCommuStatus_B
.
ServiceContralVaildValue
;
//失败
...
...
@@ -1800,7 +1800,7 @@ void ElectControlAnalysis(StructTCUSend * pPgnRecv)
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
{
TCUCommuStatus
.
CommStage
=
ElectLockStage
;
TCUCommuStatus
.
ElectLockSetValue
=
pPgnRecv
->
Data
[
2
];
if
(((
pPgnRecv
->
Data
[
1
]
!=
0x01
)
&&
(
pPgnRecv
->
Data
[
1
]
!=
0x02
))
||
((
pPgnRecv
->
Data
[
2
]
!=
0x01
)
&&
...
...
@@ -1809,28 +1809,28 @@ void ElectControlAnalysis(StructTCUSend * pPgnRecv)
else
if
((
TCUCommuStatus
.
ConnectFlag
==
CONNECT_TIMEOUT
)
||
(
TCUCommuStatus
.
HeartBeatVaild
))
TCUCommuStatus
.
ElectLockVaildValue
=
2
;
//通讯超时
else
if
(
TCUCommuStatus
.
VerChkVaild
==
0
)
TCUCommuStatus
.
ElectLockVaildValue
=
3
;
//版本校验未完成
TCUCommuStatus
.
ElectLockVaildValue
=
3
;
//版本校验未完成
else
if
(
TCUCommuStatus
.
ParamVaild
==
0
)
TCUCommuStatus
.
ElectLockVaildValue
=
4
;
//参数下发为未完成
else
if
(
TCUCurChgRecd
.
TCUChargeEnable
==
1
)
TCUCommuStatus
.
ElectLockVaildValue
=
05
;
else
if
(
PillarError
.
Value
.
EleLock
==
1
)
TCUCommuStatus
.
ElectLockVaildValue
=
07
;
//电子锁故障
else
else
TCUCommuStatus
.
ServiceContralVaildValue
=
0
;
if
((
TCUCommuStatus
.
ServiceContralVaildValue
==
0
)
||
(
TCUCommuStatus
.
ServiceContralVaildValue
==
0x07
))
{
if
(
TCUCommuStatus
.
ElectLockSetValue
==
01
)
LockSet
(
eSwSta_On
);
else
else
LockSet
(
eSwSta_Off
);
}
}
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
{
TCUCommuStatus_B
.
CommStage
=
ElectLockStage
;
TCUCommuStatus_B
.
ElectLockSetValue
=
pPgnRecv
->
Data
[
2
];
if
(((
pPgnRecv
->
Data
[
1
]
!=
0x01
)
&&
(
pPgnRecv
->
Data
[
1
]
!=
0x02
))
||
((
pPgnRecv
->
Data
[
2
]
!=
0x01
)
&&
...
...
@@ -1839,21 +1839,21 @@ void ElectControlAnalysis(StructTCUSend * pPgnRecv)
else
if
((
TCUCommuStatus_B
.
ConnectFlag
==
CONNECT_TIMEOUT
)
||
(
TCUCommuStatus_B
.
HeartBeatVaild
))
TCUCommuStatus_B
.
ElectLockVaildValue
=
2
;
//通讯超时
else
if
(
TCUCommuStatus_B
.
VerChkVaild
==
0
)
TCUCommuStatus_B
.
ElectLockVaildValue
=
3
;
//版本校验未完成
TCUCommuStatus_B
.
ElectLockVaildValue
=
3
;
//版本校验未完成
else
if
(
TCUCommuStatus_B
.
ParamVaild
==
0
)
TCUCommuStatus_B
.
ElectLockVaildValue
=
4
;
//参数下发为未完成
else
if
(
TCUCurChgRecd_B
.
TCUChargeEnable
==
1
)
TCUCommuStatus_B
.
ElectLockVaildValue
=
05
;
else
if
(
PillarError
.
Value
.
EleLock
==
1
)
TCUCommuStatus_B
.
ElectLockVaildValue
=
07
;
//电子锁故障
else
else
TCUCommuStatus_B
.
ServiceContralVaildValue
=
0
;
if
((
TCUCommuStatus_B
.
ServiceContralVaildValue
==
0
)
||
(
TCUCommuStatus_B
.
ServiceContralVaildValue
==
0x07
))
{
if
(
TCUCommuStatus_B
.
ElectLockSetValue
==
01
)
LockSet
(
eSwSta_On
);
else
else
LockSet
(
eSwSta_Off
);
}
}
...
...
@@ -1867,7 +1867,7 @@ void ElectControlAck(u8 ChgNum)
0
};
if
(
ChgNum
==
1
)
{
Data
[
0
]
=
0
;
...
...
@@ -1882,7 +1882,7 @@ void ElectControlAck(u8 ChgNum)
Data
[
3
]
=
00
;
//成功
}
else
else
{
Data
[
2
]
=
01
;
//失败
Data
[
3
]
=
TCUCommuStatus
.
ServiceContralVaildValue
;
//失败
...
...
@@ -1903,7 +1903,7 @@ void ElectControlAck(u8 ChgNum)
Data
[
3
]
=
00
;
//成功
}
else
else
{
Data
[
2
]
=
01
;
//失败
Data
[
3
]
=
TCUCommuStatus_B
.
ServiceContralVaildValue
;
//失败
...
...
@@ -1926,7 +1926,7 @@ void PowerControlAnalysis(StructTCUSend * pPgnRecv)
if
(((
pPgnRecv
->
Data
[
1
]
!=
0x01
)
&&
(
pPgnRecv
->
Data
[
1
]
!=
0x02
))
||
((
pPgnRecv
->
Data
[
2
]
!=
0x01
)
&&
(
pPgnRecv
->
Data
[
2
]
!=
0x02
)))
TCUCommuStatus
.
PowerControlVaildValue
=
1
;
//数据合法性校验失败
else
else
{
TCUCommuStatus
.
PowerControlVaildValue
=
0
;
//数据合法性校验成功
...
...
@@ -1940,7 +1940,7 @@ void PowerControlAnalysis(StructTCUSend * pPgnRecv)
{
TCUControlInfo
.
PowerControl_A
.
Percentage
=
pPgnRecv
->
Data
[
3
];
}
}
}
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
...
...
@@ -1954,7 +1954,7 @@ void PowerControlAnalysis(StructTCUSend * pPgnRecv)
if
(((
pPgnRecv
->
Data
[
1
]
!=
0x01
)
&&
(
pPgnRecv
->
Data
[
1
]
!=
0x02
))
||
((
pPgnRecv
->
Data
[
2
]
!=
0x01
)
&&
(
pPgnRecv
->
Data
[
2
]
!=
0x02
)))
TCUCommuStatus_B
.
PowerControlVaildValue
=
1
;
//数据合法性校验失败
else
else
{
TCUCommuStatus_B
.
PowerControlVaildValue
=
0
;
//数据合法性校验成功
...
...
@@ -1968,10 +1968,10 @@ void PowerControlAnalysis(StructTCUSend * pPgnRecv)
{
TCUControlInfo
.
PowerControl_B
.
Percentage
=
pPgnRecv
->
Data
[
3
];
}
}
}
}
...
...
@@ -1981,7 +1981,7 @@ void PowerControlAck(u8 ChgNum)
{
0
};
if
(
ChgNum
==
1
)
{
Data
[
0
]
=
0
;
...
...
@@ -1995,7 +1995,7 @@ void PowerControlAck(u8 ChgNum)
Data
[
4
]
=
0
;
Data
[
5
]
=
0
;
}
else
else
{
Data
[
4
]
=
01
;
Data
[
5
]
=
TCUCommuStatus
.
PowerControlVaildValue
;
//失败
...
...
@@ -2014,7 +2014,7 @@ void PowerControlAck(u8 ChgNum)
Data
[
4
]
=
0
;
Data
[
5
]
=
0
;
}
else
else
{
Data
[
4
]
=
01
;
Data
[
5
]
=
TCUCommuStatus_B
.
PowerControlVaildValue
;
//失败
...
...
@@ -2079,7 +2079,7 @@ void InformationReporting_22_A(void)
if
((
ChargeStopType
==
eChgStop_PillarReady_BatVoltError
)
&&
(
TCUCurChgRecd
.
TCUChargeEnable
==
1
))
InformainReport_A
.
InfRe
.
BattPola
=
01
;
else
else
InformainReport_A
.
InfRe
.
BattPola
=
0
;
InformainReport_A
.
InfRe
.
ContGuid
=
0
;
//控制导引
...
...
@@ -2088,7 +2088,7 @@ void InformationReporting_22_A(void)
if
((
BstMsg
.
StopTruble
.
Value
.
ComponentTemp
==
0x01
)
&&
(
TCUCurChgRecd
.
TCUChargeEnable
==
1
))
InformainReport_A
.
InfRe
.
ConnTemp
=
0x01
;
else
else
InformainReport_A
.
InfRe
.
ConnTemp
=
0x00
;
InformainReport_A
.
InfRe
.
PutBack
=
PillarError
.
Value
.
PutBack
;
...
...
@@ -2099,7 +2099,7 @@ void InformationReporting_22_A(void)
(
0
!=
CemMsg
.
Cem
.
Value
.
Bcs
)
||
(
0
!=
CemMsg
.
Cem
.
Value
.
Bcl
)
||
(
0
!=
CemMsg
.
Cem
.
Value
.
Bst
)
||
(
0
!=
CemMsg
.
Cem
.
Value
.
Bsd
))
&&
(
TCUCurChgRecd
.
TCUChargeEnable
==
1
))
InformainReport_A
.
InfRe
.
BMSComm
=
01
;
else
else
InformainReport_A
.
InfRe
.
BMSComm
=
00
;
InformainReport_A
.
InfRe
.
InVoltHi
=
00
;
...
...
@@ -2107,12 +2107,12 @@ void InformationReporting_22_A(void)
if
((
ChargeStopType
==
eChgStop_Run_VoltOutHighErr
)
&&
(
TCUCurChgRecd
.
TCUChargeEnable
==
1
))
InformainReport_A
.
InfRe
.
DcVolHi
=
01
;
else
else
InformainReport_A
.
InfRe
.
DcVolHi
=
0
;
if
((
ChargeStopType
==
eChgStop_Run_CurrtOutHighErr
)
&&
(
TCUCurChgRecd
.
TCUChargeEnable
==
1
))
InformainReport_A
.
InfRe
.
DCCurrHi
=
01
;
else
else
InformainReport_A
.
InfRe
.
DCCurrHi
=
0
;
...
...
@@ -2138,14 +2138,14 @@ void InformationReporting_22_A(void)
((
InformainReport_A
.
data
[
2
]
&
0xfD
)
!=
0
)
||
((
InformainReport_A
.
data
[
3
]
&
0x00
)
!=
0
)
||
((
InformainReport_A
.
data
[
4
]
&
0x00
)
!=
0
)
||
((
InformainReport2_B
.
data
&
0x07CB
)
!=
0
))
InformainReport_A
.
InfRe
.
sumFalt
=
01
;
else
else
InformainReport_A
.
InfRe
.
sumFalt
=
00
;
if
(((
InformainReport_A
.
data
[
0
]
&
0x00
)
!=
0
)
||
((
InformainReport_A
.
data
[
1
]
&
0x00
)
!=
0
)
||
((
InformainReport_A
.
data
[
2
]
&
0x10
)
!=
0
)
||
((
InformainReport_A
.
data
[
3
]
&
0xFF
)
!=
0
)
||
((
InformainReport_A
.
data
[
4
]
&
0x0f
)
!=
0
)
||
((
InformainReport2_B
.
data
&
0x52
)
!=
0
))
InformainReport_A
.
InfRe
.
sumWarm
=
01
;
else
else
InformainReport_A
.
InfRe
.
sumWarm
=
00
;
memcpy
(
&
Data
[
1
],
InformainReport_A
.
data
,
5
);
...
...
@@ -2195,7 +2195,7 @@ void InformationReporting_22_B(void)
if
((
ChargeStopType_B
==
eChgStop_PillarReady_BatVoltError
)
&&
(
TCUCurChgRecd_B
.
TCUChargeEnable
==
1
))
InformainReport_B
.
InfRe
.
BattPola
=
01
;
else
else
InformainReport_B
.
InfRe
.
BattPola
=
0
;
InformainReport_B
.
InfRe
.
ContGuid
=
0
;
//控制导引
...
...
@@ -2204,7 +2204,7 @@ void InformationReporting_22_B(void)
if
((
BstMsg_B
.
StopTruble
.
Value
.
ComponentTemp
==
0x01
)
&&
(
TCUCurChgRecd_B
.
TCUChargeEnable
==
1
))
InformainReport_B
.
InfRe
.
ConnTemp
=
0x01
;
else
else
InformainReport_B
.
InfRe
.
ConnTemp
=
0x00
;
InformainReport_B
.
InfRe
.
PutBack
=
PillarError_B
.
Value
.
PutBack
;
...
...
@@ -2215,7 +2215,7 @@ void InformationReporting_22_B(void)
(
0
!=
CemMsg_B
.
Cem
.
Value
.
Bcs
)
||
(
0
!=
CemMsg_B
.
Cem
.
Value
.
Bcl
)
||
(
0
!=
CemMsg_B
.
Cem
.
Value
.
Bst
)
||
(
0
!=
CemMsg_B
.
Cem
.
Value
.
Bsd
))
&&
(
TCUCurChgRecd_B
.
TCUChargeEnable
==
1
))
InformainReport_B
.
InfRe
.
BMSComm
=
01
;
else
else
InformainReport_B
.
InfRe
.
BMSComm
=
00
;
InformainReport_B
.
InfRe
.
InVoltHi
=
00
;
...
...
@@ -2223,12 +2223,12 @@ void InformationReporting_22_B(void)
if
((
ChargeStopType_B
==
eChgStop_Run_VoltOutHighErr
)
&&
(
TCUCurChgRecd_B
.
TCUChargeEnable
==
1
))
InformainReport_B
.
InfRe
.
DcVolHi
=
01
;
else
else
InformainReport_B
.
InfRe
.
DcVolHi
=
0
;
if
((
ChargeStopType_B
==
eChgStop_Run_CurrtOutHighErr
)
&&
(
TCUCurChgRecd_B
.
TCUChargeEnable
==
1
))
InformainReport_B
.
InfRe
.
DCCurrHi
=
01
;
else
else
InformainReport_B
.
InfRe
.
DCCurrHi
=
0
;
...
...
@@ -2254,14 +2254,14 @@ void InformationReporting_22_B(void)
((
InformainReport_B
.
data
[
2
]
&
0xfD
)
!=
0
)
||
((
InformainReport_B
.
data
[
3
]
&
0x00
)
!=
0
)
||
((
InformainReport_B
.
data
[
4
]
&
0x00
)
!=
0
)
||
((
InformainReport2_B
.
data
&
0x07CB
)
!=
0
))
InformainReport_B
.
InfRe
.
sumFalt
=
01
;
else
else
InformainReport_B
.
InfRe
.
sumFalt
=
00
;
if
(((
InformainReport_B
.
data
[
0
]
&
0x00
)
!=
0
)
||
((
InformainReport_B
.
data
[
1
]
&
0x00
)
!=
0
)
||
((
InformainReport_B
.
data
[
2
]
&
0x10
)
!=
0
)
||
((
InformainReport_B
.
data
[
3
]
&
0xFF
)
!=
0
)
||
((
InformainReport_B
.
data
[
4
]
&
0x0f
)
!=
0
)
||
((
InformainReport2_B
.
data
&
0x52
)
!=
0
))
InformainReport_B
.
InfRe
.
sumWarm
=
0x01
;
else
else
InformainReport_B
.
InfRe
.
sumWarm
=
0x00
;
memcpy
(
&
Data
[
1
],
InformainReport_B
.
data
,
5
);
...
...
@@ -2282,7 +2282,7 @@ void InformationReporting_23_A(void)
if
(((
ChargeError
.
Value
.
IsolateWarn
==
1
)
||
(
ChargeError
.
Value
.
IsolateError
==
1
))
&&
(
TCUCurChgRecd
.
TCUChargeEnable
==
1
))
InformainReport2_A
.
InfRe
.
ImdWarm
=
0x01
;
else
else
InformainReport2_A
.
InfRe
.
ImdWarm
=
0x00
;
InformainReport2_A
.
InfRe
.
DrainResist
=
0x00
;
...
...
@@ -2309,7 +2309,7 @@ void InformationReporting_23_B(void)
if
(((
ChargeError_B
.
Value
.
IsolateWarn
==
1
)
||
(
ChargeError_B
.
Value
.
IsolateError
==
1
))
&&
(
TCUCurChgRecd_B
.
TCUChargeEnable
==
1
))
InformainReport2_B
.
InfRe
.
ImdWarm
=
0x01
;
else
else
InformainReport2_B
.
InfRe
.
ImdWarm
=
0x00
;
InformainReport2_B
.
InfRe
.
DrainResist
=
0x00
;
...
...
@@ -2331,33 +2331,68 @@ void measuringReporting20_A(void)
u8
len
=
0
;
Data
[
len
++
]
=
0x00
;
//充电输出电压
Data
[
len
++
]
=
GetDcModuleVolt
();
Data
[
len
++
]
=
GetDcModuleVolt
()
>>
8
;
Data
[
len
++
]
=
GetDcModuleCurrt
();
Data
[
len
++
]
=
GetDcModuleCurrt
()
>>
8
;
//充电输出电流
Data
[
len
++
]
=
4000
-
GetDcModuleCurrt
();
Data
[
len
++
]
=
(
4000
-
GetDcModuleCurrt
())
>>
8
;
//SOC
Data
[
len
++
]
=
BcsMsg
.
CurSoc
;
Data
[
len
++
]
=
BsmMsg
.
HighTemp
;
//电池组最低温度
Data
[
len
++
]
=
BsmMsg
.
LowTemp
;
//电池组最高温度
Data
[
len
++
]
=
BsmMsg
.
HighTemp
;
//单体电池最高 电压
Data
[
len
++
]
=
BcsMsg
.
BatVoltAndGroup
.
Value
.
Volt
;
Data
[
len
++
]
=
BcsMsg
.
BatVoltAndGroup
.
Value
.
Volt
>>
8
;
//单体电池最低 电压
Data
[
len
++
]
=
BcsMsg
.
BatVoltAndGroup
.
Value
.
Volt
;
Data
[
len
++
]
=
BcsMsg
.
BatVoltAndGroup
.
Value
.
Volt
>>
8
;
//充电机环境温 度
Data
[
len
++
]
=
Dht12_GetTemp
()
+
50
;
//充电导引电压
Data
[
len
++
]
=
0
;
Data
[
len
++
]
=
0
;
//BMS需求电压
Data
[
len
++
]
=
BclMsg
.
NeedVolt
;
Data
[
len
++
]
=
BclMsg
.
NeedVolt
>>
8
;
//12V
Data
[
len
++
]
=
BclMsg
.
NeedVolt
>>
8
;
//BMS需求电流
Data
[
len
++
]
=
BclMsg
.
NeedCurrt
;
Data
[
len
++
]
=
BclMsg
.
NeedCurrt
>>
8
;
//充电模式
Data
[
len
++
]
=
BclMsg
.
ChgType
;
//BMS充电电压测量值
Data
[
len
++
]
=
BcsMsg
.
ChgVolt
;
Data
[
len
++
]
=
BcsMsg
.
ChgVolt
>>
8
;
//12V
Data
[
len
++
]
=
BcsMsg
.
ChgVolt
>>
8
;
//BMS充电电流测量值
Data
[
len
++
]
=
BcsMsg
.
ChgCurrt
;
Data
[
len
++
]
=
BcsMsg
.
ChgCurrt
>>
8
;
//估算剩余充电时间
Data
[
len
++
]
=
BcsMsg
.
RemainMin
;
Data
[
len
++
]
=
BcsMsg
.
RemainMin
>>
8
;
//充电接口温度探头1温度(充电接口1 DC+)
Data
[
len
++
]
=
Adc_Get_a_PTemp
()
+
50
;
//充电接口温度探头2温度(充电接口1 DC-)
Data
[
len
++
]
=
Adc_Get_a_NTemp
()
+
50
;
//充电接口温度探头3温度(充电接口2 DC+)
Data
[
len
++
]
=
Adc_Get_B_PTemp
()
+
50
;
//充电接口温度探头4温度(充电接口2 DC-)
Data
[
len
++
]
=
Adc_Get_B_NTemp
()
+
50
;
//电能表当前读数
len
+=
4
;
TCUMultiPackSendMsg
(
Data
,
34
,
eCmd_DCConMeasu
,
6
,
ChargerCont1939Addr
);
}
...
...
@@ -2370,16 +2405,21 @@ void measuringReporting20_B(void)
Data
[
len
++
]
=
0x00
;
Data
[
len
++
]
=
GetDcModuleVolt_B
();
Data
[
len
++
]
=
GetDcModuleVolt_B
()
>>
8
;
Data
[
len
++
]
=
GetDcModuleCurrt_B
();
Data
[
len
++
]
=
GetDcModuleCurrt_B
(
)
>>
8
;
Data
[
len
++
]
=
4000
-
GetDcModuleCurrt_B
();
Data
[
len
++
]
=
(
4000
-
GetDcModuleCurrt_B
()
)
>>
8
;
Data
[
len
++
]
=
BcsMsg_B
.
CurSoc
;
Data
[
len
++
]
=
BsmMsg_B
.
HighTemp
;
Data
[
len
++
]
=
BsmMsg_B
.
LowTemp
;
Data
[
len
++
]
=
BsmMsg_B
.
HighTemp
;
Data
[
len
++
]
=
BcsMsg_B
.
BatVoltAndGroup
.
Value
.
Volt
;
Data
[
len
++
]
=
BcsMsg_B
.
BatVoltAndGroup
.
Value
.
Volt
>>
8
;
Data
[
len
++
]
=
BcsMsg_B
.
BatVoltAndGroup
.
Value
.
Volt
;
Data
[
len
++
]
=
BcsMsg_B
.
BatVoltAndGroup
.
Value
.
Volt
>>
8
;
Data
[
len
++
]
=
Dht12_GetTemp
()
+
50
;
//充电导引电压
Data
[
len
++
]
=
0
;
Data
[
len
++
]
=
0
;
Data
[
len
++
]
=
BclMsg_B
.
NeedVolt
;
Data
[
len
++
]
=
BclMsg_B
.
NeedVolt
>>
8
;
//12V
Data
[
len
++
]
=
BclMsg_B
.
NeedCurrt
;
...
...
@@ -2390,7 +2430,7 @@ void measuringReporting20_B(void)
Data
[
len
++
]
=
BcsMsg_B
.
ChgCurrt
;
Data
[
len
++
]
=
BcsMsg_B
.
ChgCurrt
>>
8
;
Data
[
len
++
]
=
BcsMsg_B
.
RemainMin
;
Data
[
len
++
]
=
BcsMsg_B
.
RemainMin
>>
8
;
Data
[
len
++
]
=
Adc_Get_a_PTemp
()
+
50
;
Data
[
len
++
]
=
Adc_Get_a_NTemp
()
+
50
;
Data
[
len
++
]
=
Adc_Get_B_PTemp
()
+
50
;
...
...
@@ -2403,7 +2443,7 @@ void ChgInfornQueryAck(u8 ChgNum)
{
u8
len
=
0
;
u8
data
[
64
]
=
{
0
};
data
[
len
++
]
=
0
;
memcpy
(
&
data
[
len
],
TCUControlInfo
.
ManufacturerCode
,
4
);
len
+=
4
;
...
...
@@ -2436,7 +2476,7 @@ void ChgInfornQueryAck(u8 ChgNum)
{
TCUMultiPackSendMsg
(
data
,
37
,
eCmd_QueryAck
,
6
,
ChargerCont1939Addr_B
);
}
}
...
...
@@ -2524,7 +2564,7 @@ void TCUErroCommAnalysis(StructTCUSend * pPgnRecv)
//TCUCommuStatus.ConnectFlag = CONNECT_TIMEOUT;
//TCUCommuStatus.HeartBeatErrCnt = 0;
//HeartBeatVaild = 0; //心跳失效
}
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
{
...
...
@@ -2539,13 +2579,33 @@ void TCUErroCommAnalysis(StructTCUSend * pPgnRecv)
void
TCUMeasuRecv
(
StructTCUSend
*
pPgnRecv
)
{
u16
temp
=
0
;
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
{
TCUCommuStatus
.
DCMeasuErrCnt
=
0
;
//充电电量
temp
=
pPgnRecv
->
Data
[
2
];
temp
=
(
temp
<<
8
)
+
pPgnRecv
->
Data
[
1
];
MeterValue
.
Energy
=
temp
;
//充电时长
temp
=
pPgnRecv
->
Data
[
4
];
temp
=
(
temp
<<
8
)
+
pPgnRecv
->
Data
[
3
];
}
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
{
TCUCommuStatus_B
.
DCMeasuErrCnt
=
0
;
//充电电量
temp
=
pPgnRecv
->
Data
[
2
];
temp
=
(
temp
<<
8
)
+
pPgnRecv
->
Data
[
1
];
MeterValue_B
.
Energy
=
temp
;
//充电时长
temp
=
pPgnRecv
->
Data
[
4
];
temp
=
(
temp
<<
8
)
+
pPgnRecv
->
Data
[
3
];
}
}
...
...
DcPillar/Src/SmartAllocation/Drv_SmartAllocation.c
浏览文件 @
5a5d23e5
...
...
@@ -141,13 +141,13 @@ void DcModuleManageProcess_SmartAllocation(void)
Flag
=
Flag
<<
1
;
}
DcModuleManage_All
.
ValidNum
=
Count
;
//DcModuleManage_All.ValidNum = Count;
for
(
i
=
0
;
i
<
DcModuleGroupSize
;
i
++
)
{
Currt
=
0
;
Volt
=
0
;
Count
=
0
;
status
=
DcModuleGroup
[
i
].
modules
[
0
].
status
;
for
(
j
=
0
;
j
<
DcModuleGroup
[
i
].
num
;
j
++
)
{
...
...
@@ -169,43 +169,22 @@ void DcModuleManageProcess_SmartAllocation(void)
DcModuleGroup
[
i
].
modules
[
j
].
status
=
Invalid
;
}
status
=
status
|
DcModuleGroup
[
i
].
modules
[
j
].
status
;
}
DcModuleGroup
[
i
].
ValidNum
=
Count
;
DcModuleGroup
[
i
].
Voltage
=
Volt
/
Count
;
DcModuleGroup
[
i
].
Current
=
Currt
;
}
for
(
i
=
0
;
i
<
DcModuleGroupSize
;
i
++
)
{
status
=
DcModuleGroup
[
i
].
modules
[
0
].
status
;
if
(
DcModuleGroup
[
i
].
num
!=
DcModuleGroup
[
i
].
ValidNum
)
{
}
if
(
DcModuleGroup
[
i
].
num
>
1
)
{
if
(
status
!=
Valid
)
{
if
(
DcModuleGroup
[
i
].
modules
[
1
].
status
!=
Valid
)
{
DcModuleGroup
[
i
].
status
=
Invalid
;
if
(
status
==
Invalid
)
DcModuleGroup
[
i
].
status
=
status
;
else
if
(
DcModuleGroup
[
i
].
status
==
Invalid
)
DcModuleGroup
[
i
].
status
=
status
;
}
}
}
else
{
if
(
status
!=
Valid
)
{
DcModuleGroup
[
i
].
status
=
Invalid
;
}
}
}
Currt
=
0
;
Currt_A
=
0
;
Currt_B
=
0
;
...
...
@@ -216,6 +195,10 @@ void DcModuleManageProcess_SmartAllocation(void)
Count_A
=
0
;
Count_B
=
0
;
u8
groupCount
=
0
;
u8
groupCount_A
=
0
;
u8
groupCount_B
=
0
;
for
(
i
=
0
;
i
<
DcModuleGroupSize
;
i
++
)
{
if
(
DcModuleGroup
[
i
].
status
==
Valid
)
...
...
@@ -223,27 +206,48 @@ void DcModuleManageProcess_SmartAllocation(void)
Volt
+=
DcModuleGroup
[
i
].
Voltage
;
Currt
+=
DcModuleGroup
[
i
].
Current
;
Count
+=
DcModuleGroup
[
i
].
ValidNum
;
groupCount
++
;
}
else
if
(
DcModuleGroup
[
i
].
status
==
Hold_A
)
{
Volt_A
+=
DcModuleGroup
[
i
].
Voltage
;
Currt_A
+=
DcModuleGroup
[
i
].
Current
;
Count_A
+=
DcModuleGroup
[
i
].
ValidNum
;
groupCount_A
++
;
}
else
if
(
DcModuleGroup
[
i
].
status
==
Hold_B
)
{
Volt_B
+=
DcModuleGroup
[
i
].
Voltage
;
Currt_B
+=
DcModuleGroup
[
i
].
Current
;
Count_B
+=
DcModuleGroup
[
i
].
ValidNum
;
groupCount_B
++
;
}
}
DcModuleCtrl
.
ActualCurrt
=
Currt_A
;
DcModuleCtrl
.
ActualVolt
=
Volt_A
;
DcModuleCtrl_ALL
.
ActualCurrt
=
Currt_A
;
DcModuleCtrl_ALL
.
ActualVolt
=
Volt_A
;
if
(
groupCount_A
)
DcModuleCtrl
.
ActualVolt
=
Volt_A
/
groupCount_A
;
else
DcModuleCtrl
.
ActualVolt
=
0
;
DcModuleCtrl_ALL
.
ActualCurrt
=
Currt
;
if
(
groupCount
)
DcModuleCtrl_ALL
.
ActualVolt
=
Volt
/
groupCount
;
else
DcModuleCtrl_ALL
.
ActualVolt
=
0
;
DcModuleCtrl_B
.
ActualCurrt
=
Currt_B
;
DcModuleCtrl_B
.
ActualVolt
=
Volt_B
;
if
(
groupCount_B
)
DcModuleCtrl_B
.
ActualVolt
=
Volt_B
/
(
groupCount_B
);
else
DcModuleCtrl_B
.
ActualVolt
=
0
;
DcModuleManage
.
ValidNum
=
Count_A
;
DcModuleManage_All
.
ValidNum
=
Count
;
...
...
@@ -273,93 +277,98 @@ void DcModuleCtrlProcess_SmartAllocation(void)
StructDcModuleSend
DataSend
;
u32
Temp
;
u8
addr
;
u32
Volt
=
0
;
u8
Cmd
=
0
;
u32
Volt
=
0
;
u8
Cmd
=
0
;
Temp
=
0
;
for
(
u8
i
=
0
;
i
<
DcModuleGroupSize
;
i
++
)
{
if
(
status
[
i
]
!=
DcModuleGroup
[
i
].
status
)
{
Temp
=
1
;
Volt
=
DcModuleAbility
.
MinVolt
*
100
;
Temp
=
1
;
Volt
=
DcModuleAbility
.
MinVolt
*
100
;
if
(
DcModuleGroup
[
i
].
status
==
Valid
)
{
//关机
if
(
status
[
i
]
==
Hold_A
)
{
if
(
i
==
0
)
if
(
i
==
0
)
{
DcModuleManage
.
SetVolt
=
DcModuleAbility
.
MinVolt
*
100
;
DcModuleManage
.
SetCurrt
=
DcModuleAbility
.
MinCurrt
*
100
;
DcModuleManage
.
Cmd
=
0xAA
;
//关机
DcModuleManage
.
Cmd
=
0xAA
;
//关机
}
else
if
(
i
==
1
)
else
if
(
i
==
1
)
{
GPIO_ResetBits
(
RELAY_K1K2_Port
,
RELAY_K1K2_Pin
);
GPIO_ResetBits
(
RELAY_K1K2_Port
,
RELAY_K1K2_Pin
);
}
else
if
(
i
==
2
)
else
if
(
i
==
2
)
{
GPIO_ResetBits
(
RELAY_K5K6_Port
,
RELAY_K5K6_Pin
);
GPIO_ResetBits
(
RELAY_K5K6_Port
,
RELAY_K5K6_Pin
);
}
else
// if(i == 3)
else
// if(i == 3)
{
GPIO_ResetBits
(
RELAY_K3K4_Port
,
RELAY_K3K4_Pin
);
GPIO_ResetBits
(
RELAY_K3K4_Port
,
RELAY_K3K4_Pin
);
}
}
else
if
(
status
[
i
]
==
Hold_B
)
{
if
(
i
==
2
)
if
(
i
==
2
)
{
DcModuleManage_B
.
SetVolt
=
DcModuleAbility
.
MinVolt
*
100
;
DcModuleManage_B
.
SetCurrt
=
DcModuleAbility
.
MinCurrt
*
100
;
DcModuleManage_B
.
Cmd
=
0xAA
;
//关机
DcModuleManage_B
.
Cmd
=
0xAA
;
//关机
}
else
if
(
i
==
0
)
else
if
(
i
==
0
)
{
GPIO_ResetBits
(
RELAY_K5K6_Port
,
RELAY_K5K6_Pin
);
GPIO_ResetBits
(
RELAY_K5K6_Port
,
RELAY_K5K6_Pin
);
}
else
if
(
i
==
1
)
else
if
(
i
==
1
)
{
GPIO_ResetBits
(
RELAY_K7K8_Port
,
RELAY_K7K8_Pin
);
GPIO_ResetBits
(
RELAY_K7K8_Port
,
RELAY_K7K8_Pin
);
}
else
// if(i == 3)
else
// if(i == 3)
{
GPIO_ResetBits
(
RELAY_K9K10_Port
,
RELAY_K9K10_Pin
);
GPIO_ResetBits
(
RELAY_K9K10_Port
,
RELAY_K9K10_Pin
);
}
}
//Volt = DcModuleAbility.MinVolt * 100;
Cmd
=
0xAA
;
//关机
Cmd
=
0xAA
;
//关机
}
else
if
(
DcModuleGroup
[
i
].
status
==
Hold_A
)
{
if
(
i
!=
0
)
//升压
if
(
i
!=
0
)
//升压
{
Volt
=
DcModuleManage
.
SetVolt
;
Volt
=
DcModuleManage
.
SetVolt
;
}
else
if
(
status
[
i
]
==
Hold_B
)
else
if
(
status
[
i
]
==
Hold_B
)
{
GPIO_ResetBits
(
RELAY_K5K6_Port
,
RELAY_K5K6_Pin
);
GPIO_ResetBits
(
RELAY_K5K6_Port
,
RELAY_K5K6_Pin
);
}
Cmd
=
0x55
;
//开机
Cmd
=
0x55
;
//开机
}
else
if
(
DcModuleGroup
[
i
].
status
==
Hold_B
)
{
if
(
i
!=
2
)
//升压
if
(
i
!=
2
)
//升压
{
Volt
=
DcModuleManage
.
SetVolt
;
Volt
=
DcModuleManage
.
SetVolt
;
}
else
if
(
status
[
i
]
==
Hold_A
)
else
if
(
status
[
i
]
==
Hold_A
)
{
GPIO_ResetBits
(
RELAY_K5K6_Port
,
RELAY_K5K6_Pin
);
GPIO_ResetBits
(
RELAY_K5K6_Port
,
RELAY_K5K6_Pin
);
}
Cmd
=
0x55
;
//开机
Cmd
=
0x55
;
//开机
}
else
{
}
for
(
u8
j
=
0
;
j
<
DcModuleGroup
[
i
].
num
;
j
++
)
{
addr
=
DcModuleGroup
[
i
].
modules
[
j
].
addr
;
...
...
@@ -371,7 +380,7 @@ void DcModuleCtrlProcess_SmartAllocation(void)
Temp
=
DcModuleAbility
.
MinCurrt
*
100
;
DataSend
.
Data
[
2
]
=
(
u8
)
(
Temp
>>
8
);
DataSend
.
Data
[
3
]
=
(
u8
)
(
Temp
>>
0
);
Temp
=
Volt
;
//DcModuleAbility.MinVolt * 100;
Temp
=
Volt
;
//DcModuleAbility.MinVolt * 100;
DataSend
.
Data
[
4
]
=
(
u8
)
(
Temp
>>
24
);
DataSend
.
Data
[
5
]
=
(
u8
)
(
Temp
>>
16
);
DataSend
.
Data
[
6
]
=
(
u8
)
(
Temp
>>
8
);
...
...
@@ -382,7 +391,7 @@ void DcModuleCtrlProcess_SmartAllocation(void)
{
//osDelay(10);
}
DataSend
.
Id
=
0x1307C080
+
addr
;
DataSend
.
Len
=
8
;
DataSend
.
Data
[
0
]
=
0x02
;
...
...
@@ -392,7 +401,7 @@ void DcModuleCtrlProcess_SmartAllocation(void)
DataSend
.
Data
[
4
]
=
0x00
;
DataSend
.
Data
[
5
]
=
0x00
;
DataSend
.
Data
[
6
]
=
0x00
;
DataSend
.
Data
[
7
]
=
Cmd
;
//关机
DataSend
.
Data
[
7
]
=
Cmd
;
//关机
//放入队列
if
(
pdTRUE
!=
xQueueSend
(
DcModeMsg
,
&
DataSend
,
0
))
...
...
@@ -400,12 +409,14 @@ void DcModuleCtrlProcess_SmartAllocation(void)
//osDelay(10);
}
}
status
[
i
]
=
DcModuleGroup
[
i
].
status
;
}
}
if
(
Temp
)
return
;
if
(
Temp
)
return
;
Temp
=
0
;
...
...
@@ -413,7 +424,8 @@ void DcModuleCtrlProcess_SmartAllocation(void)
{
if
(
status1
[
i
]
!=
DcModuleGroup
[
i
].
status
)
{
Temp
=
1
;
Temp
=
1
;
if
(
DcModuleGroup
[
i
].
status
==
Valid
)
{
//切换继电器
...
...
@@ -423,63 +435,65 @@ void DcModuleCtrlProcess_SmartAllocation(void)
}
else
if
(
status
[
i
]
==
Hold_B
)
{
}
}
else
if
(
DcModuleGroup
[
i
].
status
==
Hold_A
)
{
//切换继电器
if
(
i
==
0
)
if
(
i
==
0
)
{
}
else
if
(
i
==
1
)
else
if
(
i
==
1
)
{
GPIO_SetBits
(
RELAY_K1K2_Port
,
RELAY_K1K2_Pin
);
GPIO_SetBits
(
RELAY_K1K2_Port
,
RELAY_K1K2_Pin
);
}
else
if
(
i
==
2
)
else
if
(
i
==
2
)
{
GPIO_SetBits
(
RELAY_K5K6_Port
,
RELAY_K5K6_Pin
);
GPIO_SetBits
(
RELAY_K5K6_Port
,
RELAY_K5K6_Pin
);
}
else
// if(i == 3)
else
// if(i == 3)
{
GPIO_SetBits
(
RELAY_K3K4_Port
,
RELAY_K3K4_Pin
);
GPIO_SetBits
(
RELAY_K3K4_Port
,
RELAY_K3K4_Pin
);
}
}
else
if
(
DcModuleGroup
[
i
].
status
==
Hold_B
)
{
//切换继电器
if
(
i
==
2
)
if
(
i
==
2
)
{
}
else
if
(
i
==
0
)
else
if
(
i
==
0
)
{
GPIO_SetBits
(
RELAY_K5K6_Port
,
RELAY_K5K6_Pin
);
GPIO_SetBits
(
RELAY_K5K6_Port
,
RELAY_K5K6_Pin
);
}
else
if
(
i
==
1
)
else
if
(
i
==
1
)
{
GPIO_SetBits
(
RELAY_K7K8_Port
,
RELAY_K7K8_Pin
);
GPIO_SetBits
(
RELAY_K7K8_Port
,
RELAY_K7K8_Pin
);
}
else
// if(i == 3)
else
// if(i == 3)
{
GPIO_SetBits
(
RELAY_K9K10_Port
,
RELAY_K9K10_Pin
);
GPIO_SetBits
(
RELAY_K9K10_Port
,
RELAY_K9K10_Pin
);
}
}
else
{
//切换继电器
}
status1
[
i
]
=
DcModuleGroup
[
i
].
status
;
}
}
if
(
Temp
)
return
;
if
(
Temp
)
return
;
if
(
LastFlag_A
!=
DcModuleCtrl
.
CtrlFlag
)
{
LastFlag_A
=
DcModuleCtrl
.
CtrlFlag
;
...
...
DcPillar/Src/SmartAllocation/SmartAllocation_B_ChgRun.c
浏览文件 @
5a5d23e5
...
...
@@ -115,15 +115,15 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
MaxCurrt
=
abs
((
s32
)
BclMsg_B
.
NeedCurrt
-
4000
);
NeedCurrt
=
abs
((
s32
)
BclMsg_B
.
NeedCurrt
-
4000
);
static
s16
GetCurrt_bak
;
if
(
abs
((
s16
)
GetDcModuleCurrt_B
()
-
GetCurrt_bak
)
<
10
//ȶ
&&
(
abs
((
s16
)
NeedCurrt
-
(
s16
)
GetDcModuleCurrt_B
())
>
(
DcModuleAbility
.
MaxCurrt
*
10
))
&&
(
abs
((
s16
)
NeedCurrt
-
(
s16
)
GetDcModuleCurrt_B
())
>
(
DcModuleAbility
.
MaxCurrt
*
10
))
)
{
if
(
0
==
UniChgTick
)
UniChgTick
=
GetSystemTick
();
if
((
GetSystemTick
()
-
UniChgTick
)
>
(
5
*
1000
))
{
if
(
NeedCurrt
>
GetDcModuleCurrt_B
())
...
...
@@ -169,14 +169,14 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
{
UniChgTick
=
0
;
GetCurrt_bak
=
GetDcModuleCurrt_B
();
}
if
(
NeedCurrt
>
MaxCurrt
)
NeedCurrt
=
MaxCurrt
;
if
(
NeedCurrt
>
(
DcModuleAbility
.
MaxCurrt
*
DcModuleManage_B
.
ValidNum
))
NeedCurrt
=
DcModuleAbility
.
MaxCurrt
*
DcModuleManage_B
.
ValidNum
;
if
(
NeedCurrt
>
(
DcModuleAbility
.
MaxCurrt
*
(
DcModuleManage_B
.
ValidNum
+
DcModuleManage_All
.
ValidNum
)
))
NeedCurrt
=
DcModuleAbility
.
MaxCurrt
*
(
DcModuleManage_B
.
ValidNum
+
DcModuleManage_All
.
ValidNum
)
;
MaxVolt
=
BcpMsg_B
.
ChgMaxVolt
;
NeedVolt
=
BclMsg_B
.
NeedVolt
;
...
...
@@ -188,7 +188,7 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
CcsChgEnable
=
1
;
DcModuleSet_B
(
eSwSta_On
,
NeedVolt
,
NeedCurrt
);
ChargeTimerSet_B
(
eSwSta_On
);
}
}
if
((
eChgVer_2011
!=
UserParam
.
ChgVer
)
&&
(
eChgVer_2011
!=
ChgVer_B
))
{
...
...
@@ -240,7 +240,7 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
}
}
if
(
0
!=
BsmMsg_B
.
Valid
)
{
...
...
@@ -342,6 +342,30 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
}
else
CemMsg_B
.
Cem
.
Value
.
Bcl
=
0
;
if
(((
GetSystemTick
()
-
BcsMsg_B
.
RecvTick
)
>
1000
+
500
)
&&
(
eChgVer_2011
==
UserParam
.
ChgVer
))
{
StructChargeSend
FrameSend
;
FrameSend
.
Id
.
Mult
=
0
;
FrameSend
.
Id
.
Disp
.
Prio
=
7
;
FrameSend
.
Id
.
Disp
.
PF
=
TPCM
>>
8
;
FrameSend
.
Id
.
Disp
.
DA_PS
=
Card1939Addr
;
FrameSend
.
Id
.
Disp
.
SA
=
Charger1939Addr
;
FrameSend
.
Data
[
0
]
=
0x13
;
FrameSend
.
Data
[
1
]
=
0x09
;
FrameSend
.
Data
[
2
]
=
0x00
;
FrameSend
.
Data
[
3
]
=
0x02
;
FrameSend
.
Data
[
4
]
=
0xFe
;
FrameSend
.
Data
[
5
]
=
0x00
;
FrameSend
.
Data
[
6
]
=
0x11
;
FrameSend
.
Data
[
7
]
=
0x00
;
FrameSend
.
Len
=
8
;
BmsCommSendMsg_B
(
&
FrameSend
);
BcsMsg_B
.
RecvTick
=
GetSystemTick
();
}
else
CemMsg_B
.
Cem
.
Value
.
Bcs
=
0
;
//ֶ֡
if
((
GetSystemTick
()
-
BcsMsg_B
.
RecvTick
)
>
MsgTimeout_B_5S
)
{
...
...
@@ -372,7 +396,7 @@ void ChgProChgRun_B(StructChargeCtrl_B *pChargeCtrl)
pChargeCtrl
->
Param
=
0
;
}
if
(
0
==
ChargeEnable_B
)
if
(
0
==
TCUCurChgRecd_B
.
TCUChargeEnable
)
{
//ⲿƽ
CstMsg_B
.
StopReason
.
Value
.
Manual
=
1
;
CST_Send_B
(
&
CstMsg_B
);
...
...
DcPillar/Src/SmartAllocation/SmartAllocation_ChgRun.c
浏览文件 @
5a5d23e5
...
...
@@ -15,46 +15,51 @@
s32
GetChgVoltChgRun
(
void
)
{
if
(
ImdValue
.
Vaild
)
return
ImdValue
.
PnVolt
;
//if(eMeterSta_Unavail != MeterComm.Status)
// return MeterValue.Voltage;
if
(
BcsMsg
.
Valid
)
return
BcsMsg
.
ChgVolt
;
return
-
1
;
if
(
ImdValue
.
Vaild
)
return
ImdValue
.
PnVolt
;
//if(eMeterSta_Unavail != MeterComm.Status)
// return MeterValue.Voltage;
if
(
BcsMsg
.
Valid
)
return
BcsMsg
.
ChgVolt
;
return
-
1
;
}
s32
GetChgCurrtChgRun
(
void
)
{
//if(eMeterSta_Unavail != MeterComm.Status)
// return MeterValue.Current/100;
if
(
BcsMsg
.
Valid
)
return
abs
((
s32
)
BcsMsg
.
ChgCurrt
-
4000
);
return
-
1
;
//if(eMeterSta_Unavail != MeterComm.Status)
// return MeterValue.Current/100;
if
(
BcsMsg
.
Valid
)
return
abs
((
s32
)
BcsMsg
.
ChgCurrt
-
4000
);
return
-
1
;
}
extern
StructDcModuleManage
DcModuleManage_All
;
void
ChgProChgRun
(
StructChargeCtrl
*
pChargeCtrl
)
void
ChgProChgRun
(
StructChargeCtrl
*
pChargeCtrl
)
{
StructPgnRecv
PgnRecv
;
u32
CCS_SendTick
=
0
;
u32
CcStatusChkTick
=
0
;
u32
SocStopTick
=
0
;
StructPgnRecv
PgnRecv
;
u32
CCS_SendTick
=
0
;
u32
CcStatusChkTick
=
0
;
u32
SocStopTick
=
0
;
u16
MaxCurrt
=
0
;
u16
NeedCurrt
=
0
;
u16
MaxCurrt
=
0
;
u16
NeedCurrt
=
0
;
u16
MaxVolt
=
0
;
u16
NeedVolt
=
0
;
u16
MaxVolt
=
0
;
u16
NeedVolt
=
0
;
u16
CcsChgEnable
=
0
;
u16
CcsChgEnable
=
0
;
u32
BmsPauseTick
=
0
;
u32
BmsPauseTick
=
0
;
s32
Temp
=
0
;
u32
CurrtOutChkTick
=
0
;
s32
Temp
=
0
;
u32
CurrtOutChkTick
=
0
;
u32
UniChgTick
=
0
;
u32
UniChgTick
=
0
;
memset
(
&
BemMsg
,
0
,
sizeof
(
BemMsg
));
memset
(
&
CemMsg
,
0
,
sizeof
(
CemMsg
));
...
...
@@ -65,11 +70,11 @@ void ChgProChgRun(StructChargeCtrl *pChargeCtrl)
memset
(
&
BmvMsg
,
0xFF
,
sizeof
(
BmvMsg
));
memset
(
&
BmtMsg
,
0xFF
,
sizeof
(
BmtMsg
));
BmvMsg
.
Valid
=
0
;
BmtMsg
.
Valid
=
0
;
BmvMsg
.
Valid
=
0
;
BmtMsg
.
Valid
=
0
;
BemMsg
.
Valid
=
0
;
BstMsg
.
Valid
=
0
;
BemMsg
.
Valid
=
0
;
BstMsg
.
Valid
=
0
;
BmsCanInit
();
osDelay
(
20
);
...
...
@@ -81,458 +86,519 @@ void ChgProChgRun(StructChargeCtrl *pChargeCtrl)
DrainResistSet
(
eSwSta_Off
);
DcOutSet
(
eSwSta_On
);
CcsChgEnable
=
1
;
CCS_Send
(
GetDcModuleVolt
(),
(
4000
-
GetDcModuleCurrt
()),
GetChgMin
(),
CcsChgEnable
);
CCS_SendTick
=
GetSystemTick
();
BclMsg
.
RecvTick
=
GetSystemTick
();
BcsMsg
.
RecvTick
=
GetSystemTick
();
CcsChgEnable
=
1
;
CCS_Send
(
GetDcModuleVolt
(),
(
4000
-
GetDcModuleCurrt
()),
GetChgMin
(),
CcsChgEnable
);
CCS_SendTick
=
GetSystemTick
();
BclMsg
.
RecvTick
=
GetSystemTick
();
BcsMsg
.
RecvTick
=
GetSystemTick
();
BmsPauseTick
=
0
;
BmsPauseTick
=
0
;
CurrtOutChkTick
=
0
;
CurrtOutChkTick
=
0
;
UniChgEnable
=
FALSE
;
UniChgTick
=
0
;
UniChgEnable
=
FALSE
;
UniChgTick
=
0
;
while
(
1
)
while
(
1
)
{
if
((
GetSystemTick
()
-
CCS_SendTick
)
>
50
)
if
((
GetSystemTick
()
-
CCS_SendTick
)
>
50
)
{
CCS_Send
(
MeterValue
.
Voltage
,
(
4000
-
MeterValue
.
Current
/
100
),
GetChgMin
(),
CcsChgEnable
);
CCS_SendTick
=
GetSystemTick
();
CCS_Send
(
MeterValue
.
Voltage
,
(
4000
-
MeterValue
.
Current
/
100
),
GetChgMin
(),
CcsChgEnable
);
CCS_SendTick
=
GetSystemTick
();
}
ChgPgnRecv
(
&
PgnRecv
);
if
((
0
!=
ChargePauseFlag
)
||
(
0
!=
BmsPauseTick
))
if
((
0
!=
ChargePauseFlag
)
||
(
0
!=
BmsPauseTick
))
{
CcsChgEnable
=
0
;
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
CcsChgEnable
=
0
;
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
}
else
if
(
0
!=
BclMsg
.
Valid
)
else
if
(
0
!=
BclMsg
.
Valid
)
{
if
(
eChgVer_2011
!=
UserParam
.
ChgVer
)
MaxCurrt
=
abs
((
s32
)
BcpMsg
.
ChgMaxCurrt
-
4000
);
else
MaxCurrt
=
abs
((
s32
)
BclMsg
.
NeedCurrt
-
4000
);
if
(
eChgVer_2011
!=
UserParam
.
ChgVer
)
MaxCurrt
=
abs
((
s32
)
BcpMsg
.
ChgMaxCurrt
-
4000
);
else
MaxCurrt
=
abs
((
s32
)
BclMsg
.
NeedCurrt
-
4000
);
NeedCurrt
=
abs
((
s32
)
BclMsg
.
NeedCurrt
-
4000
);
NeedCurrt
=
abs
((
s32
)
BclMsg
.
NeedCurrt
-
4000
)
;
static
s16
GetCurrt_bak
;
static
s16
GetCurrt_bak
;
if
(
abs
((
s16
)
GetDcModuleCurrt
()
-
GetCurrt_bak
)
<
10
//ȶ
&&
(
abs
((
s16
)
NeedCurrt
-
(
s16
)
GetDcModuleCurrt
())
>
(
DcModuleAbility
.
MaxCurrt
*
10
))
)
if
(
abs
((
s16
)
GetDcModuleCurrt
()
-
GetCurrt_bak
)
<
10
//ȶ
&&
(
abs
((
s16
)
NeedCurrt
-
(
s16
)
GetDcModuleCurrt
())
>
(
DcModuleAbility
.
MaxCurrt
*
10
)))
{
if
(
0
==
UniChgTick
)
if
(
0
==
UniChgTick
)
UniChgTick
=
GetSystemTick
();
if
((
GetSystemTick
()
-
UniChgTick
)
>
(
10
*
1000
))
if
((
GetSystemTick
()
-
UniChgTick
)
>
(
10
*
1000
))
{
if
(
NeedCurrt
>
GetDcModuleCurrt
())
if
(
NeedCurrt
>
GetDcModuleCurrt
())
{
if
(
DcModuleGroup
[
1
].
status
==
Valid
)
if
(
DcModuleGroup
[
1
].
status
==
Valid
)
{
DcModuleGroup
[
1
].
status
=
Hold_A
;
DcModuleManage
.
ValidNum
+=
DcModuleGroup
[
1
].
ValidNum
;
}
else
if
(
DcModuleGroup
[
3
].
status
==
Valid
)
else
if
(
DcModuleGroup
[
3
].
status
==
Valid
)
{
DcModuleGroup
[
3
].
status
=
Hold_A
;
DcModuleManage
.
ValidNum
+=
DcModuleGroup
[
3
].
ValidNum
;
}
else
if
(
DcModuleGroup
[
2
].
status
==
Valid
)
else
if
(
DcModuleGroup
[
2
].
status
==
Valid
)
{
DcModuleGroup
[
2
].
status
=
Hold_A
;
DcModuleManage
.
ValidNum
+=
DcModuleGroup
[
2
].
ValidNum
;
if
(
DcModuleGroup
[
3
].
status
==
Hold_A
)
{
DcModuleGroup
[
3
].
status
=
Valid
;
DcModuleManage
.
ValidNum
-=
DcModuleGroup
[
3
].
ValidNum
;
}
}
}
else
else
{
if
(
DcModuleGroup
[
2
].
status
==
Hold_A
)
if
(
DcModuleGroup
[
2
].
status
==
Hold_A
)
{
DcModuleGroup
[
2
].
status
=
Valid
;
DcModuleManage
.
ValidNum
-=
DcModuleGroup
[
2
].
ValidNum
;
}
else
if
(
DcModuleGroup
[
3
].
status
==
Hold_A
)
else
if
(
DcModuleGroup
[
3
].
status
==
Hold_A
)
{
DcModuleGroup
[
3
].
status
=
Valid
;
DcModuleManage
.
ValidNum
-=
DcModuleGroup
[
3
].
ValidNum
;
}
else
if
(
DcModuleGroup
[
1
].
status
==
Hold_A
)
else
if
(
DcModuleGroup
[
1
].
status
==
Hold_A
)
{
DcModuleGroup
[
1
].
status
=
Valid
;
DcModuleManage
.
ValidNum
-=
DcModuleGroup
[
1
].
ValidNum
;
}
}
UniChgTick
=
0
;
UniChgTick
=
0
;
}
}
else
else
{
UniChgTick
=
0
;
GetCurrt_bak
=
GetDcModuleCurrt
();
UniChgTick
=
0
;
GetCurrt_bak
=
GetDcModuleCurrt
();
}
if
(
NeedCurrt
>
MaxCurrt
)
if
(
NeedCurrt
>
MaxCurrt
)
NeedCurrt
=
MaxCurrt
;
if
(
NeedCurrt
>
(
DcModuleAbility
.
MaxCurrt
*
DcModuleManage
.
ValidNum
))
NeedCurrt
=
DcModuleAbility
.
MaxCurrt
*
DcModuleManage
.
ValidNum
;
MaxVolt
=
BcpMsg
.
ChgMaxVolt
;
NeedVolt
=
BclMsg
.
NeedVolt
;
if
(
NeedVolt
>
MaxVolt
)
if
(
NeedCurrt
>
(
DcModuleAbility
.
MaxCurrt
*
(
DcModuleManage
.
ValidNum
+
DcModuleManage_All
.
ValidNum
)))
NeedCurrt
=
DcModuleAbility
.
MaxCurrt
*
(
DcModuleManage
.
ValidNum
+
DcModuleManage_All
.
ValidNum
);
MaxVolt
=
BcpMsg
.
ChgMaxVolt
;
NeedVolt
=
BclMsg
.
NeedVolt
;
if
(
NeedVolt
>
MaxVolt
)
NeedVolt
=
MaxVolt
;
if
(
NeedVolt
>
DcModuleAbility
.
MaxVolt
)
if
(
NeedVolt
>
DcModuleAbility
.
MaxVolt
)
NeedVolt
=
DcModuleAbility
.
MaxVolt
;
CcsChgEnable
=
1
;
CcsChgEnable
=
1
;
DcModuleSet
(
eSwSta_On
,
NeedVolt
,
NeedCurrt
);
ChargeTimerSet
(
eSwSta_On
);
}
/*ѹ쳣ж*/
if
((
eChgVer_2011
!=
UserParam
.
ChgVer
)
&&
(
eChgVer_2011
!=
ChgVer
))
if
((
eChgVer_2011
!=
UserParam
.
ChgVer
)
&&
(
eChgVer_2011
!=
ChgVer
))
{
Temp
=
GetChgVoltChgRun
();
if
((
0
!=
CcsChgEnable
)
&&
(
Temp
>=
DcModuleAbility
.
MinVolt
)
&&
(
Temp
>
GetDcModuleVoltSet
()))
Temp
=
GetChgVoltChgRun
();
if
((
0
!=
CcsChgEnable
)
&&
(
Temp
>=
DcModuleAbility
.
MinVolt
)
&&
(
Temp
>
GetDcModuleVoltSet
()))
{
if
((
Temp
-
GetDcModuleVoltSet
())
>
(
GetDcModuleVoltSet
()
*
5
/
100
))
if
((
Temp
-
GetDcModuleVoltSet
())
>
(
GetDcModuleVoltSet
()
*
5
/
100
))
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CstMsg
.
StopFault
.
Value
.
Volt
=
1
;
ChargeError
.
Value
.
VoltOutError
=
1
;
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcOutSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_VoltOutHighErr
;
ChargeStopType
=
eChgStop_Run_VoltOutHighErr
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
}
}
/*쳣ж*/
if
((
eChgVer_2011
!=
UserParam
.
ChgVer
)
&&
(
eChgVer_2011
!=
ChgVer
))
if
((
eChgVer_2011
!=
UserParam
.
ChgVer
)
&&
(
eChgVer_2011
!=
ChgVer
))
{
Temp
=
GetChgCurrtChgRun
();
if
((
0
!=
CcsChgEnable
)
&&
(
Temp
>
(
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
))
&&
(
Temp
>
GetDcModuleCurrtSet
()))
Temp
=
GetChgCurrtChgRun
();
if
((
0
!=
CcsChgEnable
)
&&
(
Temp
>
(
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
))
&&
(
Temp
>
GetDcModuleCurrtSet
()))
{
if
((
Temp
-
GetDcModuleCurrtSet
())
>
(
GetDcModuleCurrtSet
()
*
10
/
100
))
if
((
Temp
-
GetDcModuleCurrtSet
())
>
(
GetDcModuleCurrtSet
()
*
10
/
100
))
{
if
(
0
==
CurrtOutChkTick
)
CurrtOutChkTick
=
GetSystemTick
();
if
(
0
==
CurrtOutChkTick
)
CurrtOutChkTick
=
GetSystemTick
();
}
else
else
CurrtOutChkTick
=
0
;
}
else
else
CurrtOutChkTick
=
0
;
if
((
0
!=
CurrtOutChkTick
)
&&
((
GetSystemTick
()
-
CurrtOutChkTick
)
>
10000
))
if
((
0
!=
CurrtOutChkTick
)
&&
((
GetSystemTick
()
-
CurrtOutChkTick
)
>
10000
))
{
CurrtOutChkTick
=
0
;
CurrtOutChkTick
=
0
;
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CstMsg
.
StopFault
.
Value
.
Currt
=
1
;
ChargeError
.
Value
.
CurrtOutError
=
1
;
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcOutSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_CurrtOutHighErr
;
ChargeStopType
=
eChgStop_Run_CurrtOutHighErr
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
}
if
(
0
!=
BsmMsg
.
Valid
)
if
(
0
!=
BsmMsg
.
Valid
)
{
if
(
0x00
!=
BsmMsg
.
BatSta
.
Value
.
Volt
)
if
(
0x00
!=
BsmMsg
.
BatSta
.
Value
.
Volt
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopFault
.
Value
.
Volt
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_SinglBatVolt
;
ChargeStopType
=
eChgStop_Run_SinglBatVolt
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
else
if
(
0x00
!=
BsmMsg
.
BatSta
.
Value
.
Soc
)
else
if
(
0x00
!=
BsmMsg
.
BatSta
.
Value
.
Soc
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_SocOver
;
ChargeStopType
=
eChgStop_Run_SocOver
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
else
if
(
0x01
==
BsmMsg
.
BatSta
.
Value
.
Currt
)
else
if
(
0x01
==
BsmMsg
.
BatSta
.
Value
.
Currt
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopFault
.
Value
.
Currt
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_CurrtOver
;
ChargeStopType
=
eChgStop_Run_CurrtOver
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
else
if
(
0x01
==
BsmMsg
.
BatSta
.
Value
.
Temp
)
else
if
(
0x01
==
BsmMsg
.
BatSta
.
Value
.
Temp
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_BatTempOver
;
ChargeStopType
=
eChgStop_Run_BatTempOver
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0x01
==
BsmMsg
.
ChgSta
.
Value
.
Imd
)
if
(
0x01
==
BsmMsg
.
ChgSta
.
Value
.
Imd
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_BatIsolate
;
ChargeStopType
=
eChgStop_Run_BatIsolate
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0x01
==
BsmMsg
.
ChgSta
.
Value
.
Connect
)
if
(
0x01
==
BsmMsg
.
ChgSta
.
Value
.
Connect
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_Cc2Error
;
ChargeStopType
=
eChgStop_Run_Cc2Error
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
else
if
(
0x00
==
BsmMsg
.
ChgSta
.
Value
.
ChgEnable
)
else
if
(
0x00
==
BsmMsg
.
ChgSta
.
Value
.
ChgEnable
)
{
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
if
(
0
==
BmsPauseTick
)
if
(
0
==
BmsPauseTick
)
BmsPauseTick
=
GetSystemTick
();
if
((
0
!=
BmsPauseTick
)
&&
((
GetSystemTick
()
-
BmsPauseTick
)
>
MsgTimeout_10M
))
if
((
0
!=
BmsPauseTick
)
&&
((
GetSystemTick
()
-
BmsPauseTick
)
>
MsgTimeout_10M
))
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_BmsPause
;
ChargeStopType
=
eChgStop_Run_BmsPause
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
}
else
if
(
0x01
==
BsmMsg
.
ChgSta
.
Value
.
ChgEnable
)
else
if
(
0x01
==
BsmMsg
.
ChgSta
.
Value
.
ChgEnable
)
BmsPauseTick
=
0
;
}
if
((
GetSystemTick
()
-
BclMsg
.
RecvTick
)
>
MsgTimeout_1S
)
if
((
GetSystemTick
()
-
BclMsg
.
RecvTick
)
>
MsgTimeout_1S
)
{
CemMsg
.
Cem
.
Value
.
Bcl
=
1
;
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
pChargeCtrl
->
CurProcess
=
eChgPro_CommBreak
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
else
else
CemMsg
.
Cem
.
Value
.
Bcl
=
0
;
if
((
GetSystemTick
()
-
BcsMsg
.
RecvTick
)
>
MsgTimeout_5S
)
if
(((
GetSystemTick
()
-
BcsMsg
.
RecvTick
)
>
1000
+
500
)
&&
(
eChgVer_2011
==
UserParam
.
ChgVer
))
{
StructChargeSend
FrameSend
;
FrameSend
.
Id
.
Mult
=
0
;
FrameSend
.
Id
.
Disp
.
Prio
=
7
;
FrameSend
.
Id
.
Disp
.
PF
=
TPCM
>>
8
;
FrameSend
.
Id
.
Disp
.
DA_PS
=
Card1939Addr
;
FrameSend
.
Id
.
Disp
.
SA
=
Charger1939Addr
;
FrameSend
.
Data
[
0
]
=
0x13
;
FrameSend
.
Data
[
1
]
=
0x09
;
FrameSend
.
Data
[
2
]
=
0x00
;
FrameSend
.
Data
[
3
]
=
0x02
;
FrameSend
.
Data
[
4
]
=
0xFe
;
FrameSend
.
Data
[
5
]
=
0x00
;
FrameSend
.
Data
[
6
]
=
0x11
;
FrameSend
.
Data
[
7
]
=
0x00
;
FrameSend
.
Len
=
8
;
BmsCommSendMsg
(
&
FrameSend
);
BcsMsg
.
RecvTick
=
GetSystemTick
();
}
else
CemMsg
.
Cem
.
Value
.
Bcs
=
0
;
//ֶ֡
if
((
GetSystemTick
()
-
BcsMsg
.
RecvTick
)
>
MsgTimeout_5S
)
{
CemMsg
.
Cem
.
Value
.
Bcs
=
1
;
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
pChargeCtrl
->
CurProcess
=
eChgPro_CommBreak
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
else
else
CemMsg
.
Cem
.
Value
.
Bcs
=
0
;
if
(
0
!=
BemMsg
.
Valid
)
if
(
0
!=
BemMsg
.
Valid
)
{
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
pChargeCtrl
->
CurProcess
=
eChgPro_CommBreak
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0
!=
BstMsg
.
Valid
)
if
(
0
!=
BstMsg
.
Valid
)
{
CstMsg
.
StopReason
.
Value
.
BmsStop
=
1
;
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_BmsStop
;
ChargeStopType
=
eChgStop_Run_BmsStop
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0
==
ChargeEnable
)
{
//ⲿƽ
if
(
0
==
TCUCurChgRecd
.
TCUChargeEnable
)
{
//ⲿƽ
CstMsg
.
StopReason
.
Value
.
Manual
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_UserCancel
;
ChargeStopType
=
eChgStop_Run_UserCancel
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
if
((
BcsMsg
.
Valid
)
&&
(
BcsMsg
.
CurSoc
>=
100
))
if
((
BcsMsg
.
Valid
)
&&
(
BcsMsg
.
CurSoc
>=
100
))
{
if
(
0
==
SocStopTick
)
if
(
0
==
SocStopTick
)
SocStopTick
=
GetSystemTick
();
}
else
else
SocStopTick
=
0
;
if
((
0
!=
SocStopTick
)
&&
((
GetSystemTick
()
-
SocStopTick
)
>
(
MsgTimeout_60S
*
2
)))
{
//ⲿƽ
if
((
0
!=
SocStopTick
)
&&
((
GetSystemTick
()
-
SocStopTick
)
>
(
MsgTimeout_60S
*
2
)))
{
//ⲿƽ
CstMsg
.
StopReason
.
Value
.
AutoSet
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_Soc98
;
ChargeStopType
=
eChgStop_Run_Soc98
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
if
((
BcsMsg
.
Valid
)
&&
(
BcsMsg
.
BatVoltAndGroup
.
Value
.
Volt
>
BcpMsg
.
PerBatMaxVolt
)
&&
(
1
==
UserParam
.
ChgFun
.
Value
.
BatCellJud
))
if
((
BcsMsg
.
Valid
)
&&
(
BcsMsg
.
BatVoltAndGroup
.
Value
.
Volt
>
BcpMsg
.
PerBatMaxVolt
)
&&
(
1
==
UserParam
.
ChgFun
.
Value
.
BatCellJud
))
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopFault
.
Value
.
Volt
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
ChargeTimerSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_SinglBatVoltOverPermitMax
;
ChargeStopType
=
eChgStop_Run_SinglBatVoltOverPermitMax
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgStop
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
if
(
eSwSta_On
!=
CcStatusRead
())
if
(
eSwSta_On
!=
CcStatusRead
())
{
if
(
0
==
CcStatusChkTick
)
if
(
0
==
CcStatusChkTick
)
CcStatusChkTick
=
GetSystemTick
();
}
else
else
CcStatusChkTick
=
0
;
if
((
0
!=
CcStatusChkTick
)
&&
((
GetSystemTick
()
-
CcStatusChkTick
)
>
CC_CheckTick
))
if
((
0
!=
CcStatusChkTick
)
&&
((
GetSystemTick
()
-
CcStatusChkTick
)
>
CC_CheckTick
))
{
CstMsg
.
StopReason
.
Value
.
Manual
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcOutSet
(
eSwSta_Off
);
CcStatusChkTick
=
0
;
ChargeStopType
=
eChgStop_Run_CcOpen
;
CcStatusChkTick
=
0
;
ChargeStopType
=
eChgStop_Run_CcOpen
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgBreak
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0
!=
PillarError
.
Value
.
Emergency
)
if
(
0
!=
PillarError
.
Value
.
Emergency
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Emergency
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcOutSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_EmerClose
;
ChargeStopType
=
eChgStop_Run_EmerClose
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgBreak
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0
!=
PillarError
.
Value
.
Door
)
if
(
0
!=
PillarError
.
Value
.
Door
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcOutSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_DoorOpen
;
ChargeStopType
=
eChgStop_Run_DoorOpen
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgBreak
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0
!=
PillarError
.
Value
.
Contactor
)
if
(
0
!=
PillarError
.
Value
.
Contactor
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcOutSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_Contactor
;
ChargeStopType
=
eChgStop_Run_Contactor
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgBreak
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0
!=
PillarError
.
Value
.
UniContactor
)
if
(
0
!=
PillarError
.
Value
.
UniContactor
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcOutSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_Contactor
;
ChargeStopType
=
eChgStop_Run_Contactor
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgBreak
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0
!=
PillarError
.
Value
.
InVolt
)
if
(
0
!=
PillarError
.
Value
.
InVolt
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcOutSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_InVolt
;
ChargeStopType
=
eChgStop_Run_InVolt
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgBreak
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0
!=
PillarError
.
Value
.
NoDcmod
)
if
(
0
!=
PillarError
.
Value
.
NoDcmod
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcOutSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_NoDcmod
;
ChargeStopType
=
eChgStop_Run_NoDcmod
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgBreak
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
if
(
0
!=
PillarError
.
Value
.
Meter
)
if
(
0
!=
PillarError
.
Value
.
Meter
)
{
CstMsg
.
StopReason
.
Value
.
Truble
=
1
;
CstMsg
.
StopTruble
.
Value
.
Other
=
1
;
CST_Send
(
&
CstMsg
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcModuleSet
(
eSwSta_Off
,
DcModuleAbility
.
MinVolt
,
DcModuleAbility
.
MinCurrt
*
DcModuleManage
.
ValidNum
);
DcOutSet
(
eSwSta_Off
);
ChargeStopType
=
eChgStop_Run_Meter
;
ChargeStopType
=
eChgStop_Run_Meter
;
pChargeCtrl
->
CurProcess
=
eChgPro_ChgBreak
;
pChargeCtrl
->
Param
=
0
;
pChargeCtrl
->
Param
=
0
;
}
if
(
eChgPro_ChgRun
!=
pChargeCtrl
->
CurProcess
)
if
(
eChgPro_ChgRun
!=
pChargeCtrl
->
CurProcess
)
return
;
osDelay
(
5
);
}
}
...
...
DcPillar/Src/Thread/Thd_TCU.c
浏览文件 @
5a5d23e5
...
...
@@ -17,26 +17,26 @@ extern void TCUCanInit(void);
StructTCUCommuStatus
TCUCommuStatus
=
{
.
CommStage
=
HeartStage
,
.
ParamVaild
=
0
,
0
,
.
CommStage
=
HeartStage
,
.
ParamVaild
=
0
,
0
,
0
};
StructTCUCommuStatus
TCUCommuStatus_B
=
{
.
CommStage
=
HeartStage
,
.
ParamVaild
=
0
,
0
,
{
.
CommStage
=
HeartStage
,
.
ParamVaild
=
0
,
0
,
0
};
const
StructTCUCommuParam
TCUCommuParam
=
{
.
HeartPeriod
=
1
,
.
HeartErrCntMax
=
3
,
.
HeartTimeout
=
1
,
.
SignInPeriod
=
60
,
.
HeartPeriod
=
1
,
.
HeartErrCntMax
=
3
,
.
HeartTimeout
=
1
,
.
SignInPeriod
=
60
,
};
...
...
@@ -59,7 +59,7 @@ void TCURecvProcess(void)
break
;
case
eCmd_time
:
// 对时帧
TCUtimeSet
(
&
pPgnRecv
);
//时间设置
TCUtimeSet
(
&
pPgnRecv
);
//时间设置
break
;
case
eCmd_versi
:
//版本校验帧
...
...
@@ -82,7 +82,7 @@ void TCURecvProcess(void)
PowerControlAnalysis
(
&
pPgnRecv
);
break
;
case
eCmd_Query
:
// 充电桩配置信息查询帧
case
eCmd_Query
:
// 充电桩配置信息查询帧
if
(
pPgnRecv
.
DA
==
ChargerCont1939Addr
)
{
TCUCommuStatus
.
CommStage
=
ChgInfornQueryStage
;
...
...
@@ -91,14 +91,14 @@ void TCURecvProcess(void)
{
TCUCommuStatus_B
.
CommStage
=
ChgInfornQueryStage
;
}
break
;
case
eCmd_verificationAck
:
//车辆验证应答帧
verificationAck
(
&
pPgnRecv
);
break
;
////////////状态帧/////////////////
////////////状态帧/////////////////
case
eCmd_startCompAck
:
// 充电启动完成应答帧
ACkStartCompMeg
(
&
pPgnRecv
);
break
;
...
...
@@ -110,7 +110,7 @@ void TCURecvProcess(void)
///////////数据帧/直流////////////
case
eCmd_DCTCUMeasu
:
// 计费单元遥测帧
TCUMeasuRecv
(
&
pPgnRecv
);
break
;
///////////心跳帧///////////
...
...
@@ -121,7 +121,7 @@ void TCURecvProcess(void)
case
eCmd_TCUErroComm
:
// 计费单元错误帧
TCUErroCommAnalysis
(
&
pPgnRecv
);
break
;
default:
break
;
}
...
...
@@ -138,7 +138,7 @@ void InformationReporting(void)
if
(
TCUCommuStatus
.
VerChkVaild
)
//版本检验未完成不发送
{
InformationReporting_22_A
();
InformationReporting_23_A
();
}
...
...
@@ -148,7 +148,7 @@ void InformationReporting(void)
InformationReporting_22_B
();
InformationReporting_23_B
();
}
}
}
...
...
@@ -160,7 +160,7 @@ void DCMeasuring_A(void)
if
((
GetSystemTick
()
-
DCMeasuRecvTime
)
>
1000
)
{
DCMeasuRecvTime
=
GetSystemTick
();
if
(
TCUCommuStatus
.
VerChkVaild
)
//版本检验未完成不发送
{
TCUCommuStatus
.
DCMeasuErrCnt
++
;
...
...
@@ -172,12 +172,12 @@ void DCMeasuring_A(void)
TCUCommuStatus
.
HeartBeatVaild
=
0
;
//心跳失效
TCUCanInit
();
//can通讯接口初始化
}
else
else
{
measuringReporting20_A
();
}
}
if
(
TCUCommuStatus_B
.
VerChkVaild
)
//版本检验未完成不发送
{
TCUCommuStatus_B
.
DCMeasuErrCnt
++
;
...
...
@@ -189,12 +189,12 @@ void DCMeasuring_A(void)
TCUCommuStatus_B
.
HeartBeatVaild
=
0
;
//心跳失效
//TCUCanInit();
}
else
else
{
measuringReporting20_B
();
}
}
}
}
...
...
@@ -225,7 +225,7 @@ void ConEMSend(void)
ConEMSendEcount
++
;
TcuEMMsg
(
TCUCommuStatus
.
ErrData
.
Mult
);
}
else
else
{
ConEMSendTick
=
0
;
TCUCommuStatus
.
ConEMSendFlag
=
0
;
...
...
@@ -236,7 +236,7 @@ void ConEMSend(void)
ConEMSendEcount
=
0
;
}
}
else
else
{
ConEMSendTick
=
0
;
TCUCommuStatus
.
ConEMSendFlag
=
0
;
...
...
@@ -261,7 +261,7 @@ void ConEMSend(void)
ConEMSendEcount_B
++
;
TcuEMMsg_B
(
TCUCommuStatus_B
.
ErrData
.
Mult
);
}
else
else
{
ConEMSendTick_B
=
0
;
TCUCommuStatus_B
.
ConEMSendFlag
=
0
;
...
...
@@ -270,7 +270,7 @@ void ConEMSend(void)
}
}
}
else
else
{
ConEMSendTick_B
=
0
;
TCUCommuStatus_B
.
ConEMSendFlag
=
0
;
...
...
@@ -285,10 +285,10 @@ void ConEMSend(void)
void
CommutionConfigurationStage
(
void
)
{
static
EnumTCUCommStage
oldStage
;
static
EnumTCUCommStage
oldStage
;
static
u32
VersionRecvTime
=
0
;
static
u32
VersionSendTimes
=
0
;
static
EnumTCUCommStage
oldStage_B
;
static
EnumTCUCommStage
oldStage_B
;
static
u32
VersionRecvTime_B
=
0
;
static
u32
VersionSendTimes_B
=
0
;
if
(
TCUCommuStatus
.
CommStage
==
VersionStage
)
...
...
@@ -308,19 +308,19 @@ void CommutionConfigurationStage(void)
TCUCommuStatus
.
ErrData
.
Value
.
Param
=
1
;
TCUCommuStatus
.
ConEMSendFlag
=
1
;
TCUCommuStatus
.
CommStage
=
HeartStage
;
}
else
{
TCUVersionCheckSent
(
1
);
}
}
}
if
(
TCUCommuStatus_B
.
CommStage
==
VersionStage
)
{
if
(
oldStage_B
!=
VersionStage
)
...
...
@@ -335,21 +335,21 @@ void CommutionConfigurationStage(void)
VersionSendTimes_B
++
;
if
(
VersionSendTimes_B
>
5000
/
500
)
{
TCUCommuStatus_B
.
ErrData
.
Value
.
Param
=
1
;
TCUCommuStatus_B
.
ConEMSendFlag
=
1
;
TCUCommuStatus_B
.
CommStage
=
HeartStage
;
}
else
{
TCUVersionCheckSent
(
2
);
}
}
}
oldStage
=
TCUCommuStatus
.
CommStage
;
oldStage_B
=
TCUCommuStatus_B
.
CommStage
;
}
...
...
@@ -364,7 +364,7 @@ void TCUPillarHeartBeat(void)
}
SendTick
=
GetSystemTick
();
TCUHeartBeat_A
();
TCUCommuStatus
.
HeartBeatErrCnt
++
;
...
...
@@ -392,11 +392,11 @@ void TCUPillarHeartBeat(void)
void
CommutionRunStage
(
void
)
{
static
EnumTCUCommStage
oldStage
;
static
EnumTCUCommStage
oldStage
;
static
u32
sendTick
=
0
;
static
u8
sendTimes
=
0
;
static
EnumTCUCommStage
oldStage_B
;
static
EnumTCUCommStage
oldStage_B
;
static
u32
sendTick_B
=
0
;
static
u8
sendTimes_B
=
0
;
...
...
@@ -411,7 +411,7 @@ void CommutionRunStage(void)
sendTick_B
=
0
;
sendTimes_B
=
0
;
}
if
((
TCUCommuStatus
.
CommStage
==
ChageParamStage
))
{
if
(
GetSystemTick
()
-
sendTick
>=
500
)
...
...
@@ -495,7 +495,7 @@ void CommutionRunStage(void)
SerConAck
(
1
);
}
}
}
if
((
TCUCommuStatus_B
.
CommStage
==
ServiceContralStage
))
...
...
@@ -513,7 +513,7 @@ void CommutionRunStage(void)
SerConAck
(
2
);
}
}
}
if
((
TCUCommuStatus
.
CommStage
==
ElectLockStage
))
...
...
@@ -565,7 +565,7 @@ void CommutionRunStage(void)
PowerControlAck
(
1
);
}
}
}
if
((
TCUCommuStatus_B
.
CommStage
==
PowerControlStage
))
...
...
@@ -583,9 +583,9 @@ void CommutionRunStage(void)
PowerControlAck
(
2
);
}
}
}
if
((
TCUCommuStatus
.
CommStage
==
ChgInfornQueryStage
))
{
if
(
GetSystemTick
()
-
sendTick
>=
500
)
...
...
@@ -601,7 +601,7 @@ void CommutionRunStage(void)
ChgInfornQueryAck
(
1
);
}
}
}
if
((
TCUCommuStatus_B
.
CommStage
==
ChgInfornQueryStage
))
...
...
@@ -619,9 +619,9 @@ void CommutionRunStage(void)
ChgInfornQueryAck
(
2
);
}
}
}
oldStage
=
TCUCommuStatus
.
CommStage
;
oldStage_B
=
TCUCommuStatus_B
.
CommStage
;
}
...
...
@@ -653,7 +653,7 @@ void TCUCurChgRecordInterface_A(void)
ChgStartSendEcount
++
;
StartMegAck_A
();
//启动帧发送
}
else
else
{
ChgStartSendTick
=
0
;
TCUCurChgRecd
.
TCUChgStartNotetrl
=
0
;
//停止发送
...
...
@@ -663,7 +663,7 @@ void TCUCurChgRecordInterface_A(void)
}
else
if
(
TCUCurChgRecd
.
TCUChgStarCompNotetrl
==
1
)
{
st
op
CompSend_A
();
st
art
CompSend_A
();
ChgStartCompSendTick
=
GetSystemTick
();
TCUCurChgRecd
.
TCUChgStarCompNotetrl
=
2
;
}
...
...
@@ -678,7 +678,7 @@ void TCUCurChgRecordInterface_A(void)
startCompSend_A
();
ChgRecordSendTick
=
GetSystemTick
();
}
else
else
{
//超时大于,保存
TCUCommuStatus
.
ConEMSendFlag
=
1
;
//错误帧发送
TCUCommuStatus
.
ErrData
.
Value
.
startCompAck
=
1
;
...
...
@@ -711,7 +711,7 @@ void TCUCurChgRecordInterface_A(void)
ChgStopSendEcount
++
;
StopMegAck_A
();
}
else
else
{
ChgStopSendTick
=
0
;
TCUCurChgRecd
.
TCUChgStopNotetrl
=
0
;
//停止发送
...
...
@@ -725,6 +725,7 @@ void TCUCurChgRecordInterface_A(void)
stopCompSend_A
();
ChgRecordSendTick
=
GetSystemTick
();
TCUCurChgRecd
.
TCUChgStopCompNotetrl
=
2
;
ChgRecordSendErr
=
0
;
}
else
if
((
TCUCurChgRecd
.
TCUChgStopCompNotetrl
==
2
)
&&
(
0
!=
TCUCurChgRecd
.
TCUChargeEnable
))
{
...
...
@@ -737,7 +738,7 @@ void TCUCurChgRecordInterface_A(void)
stopCompSend_A
();
ChgRecordSendTick
=
GetSystemTick
();
}
else
else
{
//超时大于,保存
TCUCommuStatus
.
ConEMSendFlag
=
1
;
TCUCommuStatus
.
ErrData
.
Value
.
stopCompAck
=
1
;
...
...
@@ -783,7 +784,7 @@ void TCUCurChgRecordInterface_B(void)
ChgStartSendEcount
++
;
StartMegAck_B
();
//启动帧发送
}
else
else
{
ChgStartSendTick
=
0
;
TCUCurChgRecd_B
.
TCUChgStartNotetrl
=
0
;
//停止发送
...
...
@@ -793,9 +794,10 @@ void TCUCurChgRecordInterface_B(void)
}
else
if
(
TCUCurChgRecd_B
.
TCUChgStarCompNotetrl
==
1
)
{
st
op
CompSend_B
();
st
art
CompSend_B
();
ChgStartCompSendTick
=
GetSystemTick
();
TCUCurChgRecd_B
.
TCUChgStarCompNotetrl
=
2
;
ChgStartCompSendEcount
=
0
;
}
else
if
(
TCUCurChgRecd_B
.
TCUChgStarCompNotetrl
==
2
)
{
...
...
@@ -808,7 +810,7 @@ void TCUCurChgRecordInterface_B(void)
startCompSend_B
();
ChgRecordSendTick
=
GetSystemTick
();
}
else
else
{
//超时大于,保存
TCUCommuStatus_B
.
ConEMSendFlag
=
1
;
//错误帧发送
TCUCommuStatus_B
.
ErrData
.
Value
.
startCompAck
=
1
;
...
...
@@ -840,7 +842,7 @@ void TCUCurChgRecordInterface_B(void)
ChgStopSendEcount
++
;
StopMegAck_B
();
}
else
else
{
ChgStopSendTick
=
0
;
TCUCurChgRecd_B
.
TCUChgStopNotetrl
=
0
;
//停止发送
...
...
@@ -865,7 +867,7 @@ void TCUCurChgRecordInterface_B(void)
stopCompSend_B
();
ChgRecordSendTick
=
GetSystemTick
();
}
else
else
{
//超时大于,保存
TCUCommuStatus_B
.
ConEMSendFlag
=
1
;
//错误帧发送
TCUCommuStatus_B
.
ErrData
.
Value
.
stopCompAck
=
1
;
...
...
@@ -887,16 +889,16 @@ u8 TcuGetChgStatus(void)
{
u8
status
=
0
;
static
u8
old_status
=
0
;
if
(
eSwSta_Off
==
CcStatusRead
())
{
status
=
0x00
;
}
else
if
(
old_status
==
0
)
else
//
if(old_status == 0)
{
status
=
0x01
;
}
if
(
ChargeCtrl
.
CurProcess
==
eChgPro_ShakeHand
)
{
status
=
0x02
;
...
...
@@ -942,35 +944,35 @@ u8 TcuGetChgStatus(void)
{
status
=
0x0b
;
}
else
if
((
ChargeCtrl
.
CurProcess
==
eChgPro_ChgIdle
)
\
/*
else if((ChargeCtrl.CurProcess == eChgPro_ChgIdle)\
&& (old_status == 0x0b))
{
status = 0x0b;
}
old_status
=
status
;
}
*/
//
old_status = status;
return
status
;
}
u8
TcuGetChgStatus_B
(
void
)
{
/*
00H:车辆未连接
00H:车辆未连接
01H:车辆已连接
02H:参数握手阶段
02H:参数握手阶段
03H:绝缘监测阶段
04H:参数辨识阶段
05H:参数配置阶段
06H:预充电阶段
07H:正式充电阶段
08H:充电暂停
09H:充电停止中
0AH:充电停止完成
09H:充电停止中
0AH:充电停止完成
0BH:充电完成
*/
u8
status
=
0
;
static
u8
old_status
=
0
;
if
(
eSwSta_Off
==
CcStatusRead_B
())
{
status
=
0x00
;
...
...
@@ -979,7 +981,7 @@ u8 TcuGetChgStatus_B(void)
{
status
=
0x01
;
}
if
(
ChargeCtrl_B
.
CurProcess
==
eChgPro_B_ShakeHand
)
{
status
=
0x02
;
...
...
@@ -1031,7 +1033,7 @@ u8 TcuGetChgStatus_B(void)
status
=
0x0b
;
}
old_status
=
status
;
return
status
;
}
...
...
@@ -1056,7 +1058,7 @@ void SendStatus(void)
data
[
1
]
=
TcuGetChgStatus_B
();
TCUSinglePackSendMsg
(
data
,
8
,
eCmd_status
,
4
,
ChargerCont1939Addr_B
);
}
}
}
...
...
@@ -1111,8 +1113,8 @@ void TCUComm(void const * argument)
TCUSendMsg
(
&
DataSend
);
}
}
TCURecvProcess
();
//帧接收
TCUWorkProcess
();
//遥测遥信息处理
TCULinkProcess
();
//心跳包处理配置信息
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论