Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
DC360_1drap3_xiaoju_V1
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
丁雨邯
DC360_1drap3_xiaoju_V1
Commits
0137a391
提交
0137a391
authored
5月 13, 2020
作者:
wysheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修复充电桩状态信息优先级;
完善协议:启动程序在线更新(拒绝升级,不支持)
上级
aa721fa9
显示空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
158 行增加
和
30 行删除
+158
-30
Drv_TCUComm.c
DcPillar/Src/Drivers/Drv_TCUComm.c
+63
-0
Drv_TCUComm.h
DcPillar/Src/Drivers/Drv_TCUComm.h
+50
-25
Thd_TCU.c
DcPillar/Src/Thread/Thd_TCU.c
+41
-3
Thd_TCU.h
DcPillar/Src/Thread/Thd_TCU.h
+4
-2
没有找到文件。
DcPillar/Src/Drivers/Drv_TCUComm.c
浏览文件 @
0137a391
...
...
@@ -2730,5 +2730,68 @@ void TCUMeasuRecv(StructTCUSend * pPgnRecv)
}
}
typedef
struct
{
u8
type
;
//设备类型
u8
addr
;
//设备通信地址
u8
sno
;
//程序内部编号
u16
ver
;
//升级目标版本
}
StructStartDownload
;
StructStartDownload
StartDownload
=
{
0
};
StructStartDownload
StartDownload_B
=
{
0
};
void
TCUStartDownloadHandle
(
StructTCUSend
*
pPgnRecv
)
{
u16
tmp
=
0
;
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
{
TCUCommuStatus
.
CommStage
=
StartDownloadStage
;
StartDownload
.
type
=
pPgnRecv
->
Data
[
1
];
StartDownload
.
addr
=
pPgnRecv
->
Data
[
2
];
StartDownload
.
sno
=
pPgnRecv
->
Data
[
3
];
tmp
=
pPgnRecv
->
Data
[
4
];
tmp
=
tmp
<<
8
;
tmp
|=
pPgnRecv
->
Data
[
5
];
StartDownload
.
ver
=
tmp
;
}
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
{
TCUCommuStatus_B
.
CommStage
=
StartDownloadStage
;
StartDownload_B
.
type
=
pPgnRecv
->
Data
[
1
];
StartDownload_B
.
addr
=
pPgnRecv
->
Data
[
2
];
StartDownload_B
.
sno
=
pPgnRecv
->
Data
[
3
];
tmp
=
pPgnRecv
->
Data
[
4
];
tmp
=
tmp
<<
8
;
tmp
|=
pPgnRecv
->
Data
[
5
];
StartDownload_B
.
ver
=
tmp
;
}
}
void
StartDownloadAck
(
u8
ChgNum
)
{
u8
Data
[
8
]
=
{
0
};
if
(
ChgNum
==
1
)
{
Data
[
1
]
=
StartDownload
.
type
;
Data
[
2
]
=
StartDownload
.
addr
;
Data
[
3
]
=
0x01
;
//01H:禁止下载
Data
[
4
]
=
0x01
;
//0x01:英特尔HEX格式
Data
[
5
]
=
0x01
;
//0x01:校验码方案A
Data
[
6
]
=
0x01
;
//01H:本身不支持此功能
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_startDownloadAck
,
4
,
ChargerCont1939Addr
);
}
else
if
(
ChgNum
==
2
)
{
Data
[
1
]
=
StartDownload_B
.
type
;
Data
[
2
]
=
StartDownload_B
.
addr
;
Data
[
3
]
=
0x01
;
//01H:禁止下载
Data
[
4
]
=
0x01
;
//0x01:英特尔HEX格式
Data
[
5
]
=
0x01
;
//0x01:校验码方案A
Data
[
6
]
=
0x01
;
//01H:本身不支持此功能
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_startDownloadAck
,
4
,
ChargerCont1939Addr_B
);
}
}
DcPillar/Src/Drivers/Drv_TCUComm.h
浏览文件 @
0137a391
...
...
@@ -186,26 +186,26 @@ typedef union
u32
Mult
;
struct
{
u32
Idle
:
1
;
//
u32
paramAck
:
1
;
//
u32
startAck
:
1
;
//
u32
startComp
:
1
;
//
u32
stopAck
:
1
;
//
u32
stopComp
:
1
;
//
u32
timeAck
:
1
;
//
u32
SerConAck
:
1
;
//
u32
GunAck
:
1
;
//
计费控制单元自下发电子锁控制报文5秒内未收到应答报文则判定为超时。
u32
powerAck
:
1
;
//
计费控制单元自下发充电功率调节报文5秒内未收到应答报文则判定为超时。
u32
QueryAck
:
1
;
//
计费控制单元自下发充电桩配置信息查询报文5秒内未收到应答报文则判定为超时。
u32
DCConInfor
:
1
;
//
计费控制单元与充电控制器完成版本校验和充电参数下发后,心跳帧接收正常情况下,5秒内未收到充电控制器遥信报文则判定为超时。
u32
DCConMeasu
:
1
;
//
计费控制单元与充电控制器完成版本校验和充电参数下发后,心跳帧接收正常情况下,5秒内未收到充电控制器遥测报文则判定为超时。
u32
StartDownload
:
1
;
//计费控制单元自发送下发启动下载命令2秒内未收到应答报文则判定为超时。
u32
DataRequestSend
:
1
;
//
计费控制单元自发送下发请求发送数据命令2秒内未收到应答报文则判定为超时。
u32
DataSend
:
1
;
//
计费控制单元自发送下发数据发送帧1秒内未收到应答报文则判定为超时。
u32
ProgramVerification
:
1
;
//
计费控制单元自发送下发程序校验命令2秒内未收到应答报文则判定为超时。
u32
CarVerification
:
1
;
//
计费控制单元与充电控制器完成版本校验和充电参数下发后,心跳帧接收正常情况下,充电启动帧中,充电启动标识为即插即充,且接收到充电启动应答帧后60秒内未收到充电控制器车辆验证报文则判定为超时。
u32
Idle
:
1
;
//
预留
u32
paramAck
:
1
;
//
下发充电参数应答超时
u32
startAck
:
1
;
//
充电启动命令应答超时
u32
startComp
:
1
;
//
等待充电启动完成状态超时
u32
stopAck
:
1
;
//
充电停止命令应答超时
u32
stopComp
:
1
;
//
等待充电停止完成状态超时
u32
timeAck
:
1
;
//
对时操作应答超时
u32
SerConAck
:
1
;
//
充电服务启停应答超时
u32
GunAck
:
1
;
//
电子锁控制应答超时
u32
powerAck
:
1
;
//
充电功率调节应答超时
u32
QueryAck
:
1
;
//
充电桩配置信息查询应答超时
u32
DCConInfor
:
1
;
//
遥信报文接收超时
u32
DCConMeasu
:
1
;
//
遥测报文接收超时
u32
StartDownload
:
1
;
//启动下载命令应答超时
u32
DataRequestSend
:
1
;
//
请求发送数据帧应答超时
u32
DataSend
:
1
;
//
数据发送帧应答超时
u32
ProgramVerification
:
1
;
//
程序校验命令帧应答超时
u32
CarVerification
:
1
;
//
车辆验证报文接收超时
}
Value
;
...
...
@@ -257,8 +257,32 @@ typedef enum
eCmd_Query
=
0x006000
,
// 充电桩配置信息查询帧
eCmd_QueryAck
=
0x006100
,
// 充电桩配置信息查询应答帧
eCmd_verification
=
0x002D00
,
// 车辆验证数据帧
eCmd_verificationAck
=
0x002E00
,
//车辆验证应答帧
/*****************在线升级命令 start*******************/
eCmd_upDateHeart
=
0x007000
,
//升级心跳帧 007000H
eCmd_upDateHeartAck
=
0x007100
,
//升级心跳应答帧 007100H
eCmd_startDownload
=
0x007200
,
//启动下载命令帧 007200H
eCmd_startDownloadAck
=
0x007300
,
//启动下载应答帧 007300H
//索要区间命令帧 007400H
//索要区间应答帧1 007500H
//索要区间应答帧2 007600H
//启动组包命令帧 007700H
//启动组包应答帧 007800H
//数据发送帧 007900H
//完成组包命令帧 007A00H
//完成组包应答帧 007B00H
//程序校验数据帧 007C00H
//程序校验应答帧 007D00H
//eCmd_reset = 0x007E00,//立即复位命令帧 007E00H
//eCmd_resetAck = 0x007F00,//立即复位应答帧 007F00H
/*****************在线升级命令 end*******************/
eCmd_valueSet
=
0x008000
,
//定值设置命令帧 008000H
eCmd_valueSetAck
=
0x008100
,
//定值设置命令应答帧 008100H
eCmd_valueQuery
=
0x008200
,
//定值查询命令帧 008200H
eCmd_valueQueryAck
=
0x008300
,
//定值查询命令应答帧 008300H
eCmd_verification
=
0x002D00
,
//车辆验证数据帧
eCmd_verificationAck
=
0x002E00
,
//车辆验证应答帧
////////////状态帧/////////////////
eCmd_startComp
=
0x001100
,
// 充电启动完成帧
...
...
@@ -267,8 +291,7 @@ typedef enum
eCmd_stopComp
=
0x001300
,
// 充电停止完成帧
eCmd_stopCompAck
=
0x001400
,
// 充电停止完成应答帧
eCmd_status
=
0x001500
,
//充电桩状态信息帧
eCmd_status
=
0x001500
,
//充电桩状态帧
///////////数据帧/直流////////////
eCmd_DCConMeasu
=
0x002000
,
// 充电控制器遥测帧
...
...
@@ -280,7 +303,7 @@ typedef enum
eCmd_ACTCUMeasu
=
0x003100
,
// 计费单元遥测 帧
eCmd_ACConInfor
=
0x003200
,
// 充电控制器遥信帧
eCmd_ACTCUInfor
=
0x003300
,
// 计费单元遥信帧
///////////心跳帧///////////
///////////心跳帧///////////
eCmd_TcuHeart
=
0x004000
,
// 计费单元心跳
eCmd_ContHeart
=
0x004100
,
// 充电控制器心跳帧
...
...
@@ -353,6 +376,8 @@ extern StructVerificationInformain VerificaInfo_B ;
extern
StructTCUEM
TCUChgContralTCUEM_A
;
extern
StructTCUEM
TCUChgContralTCUEM_B
;
void
TCUStartDownloadHandle
(
StructTCUSend
*
pPgnRecv
);
void
StartDownloadAck
(
u8
ChgNum
);
#endif
...
...
DcPillar/Src/Thread/Thd_TCU.c
浏览文件 @
0137a391
...
...
@@ -121,7 +121,9 @@ void TCURecvProcess(void)
case
eCmd_TCUErroComm
:
// 计费单元错误帧
TCUErroCommAnalysis
(
&
pPgnRecv
);
break
;
case
eCmd_startDownload
:
TCUStartDownloadHandle
(
&
pPgnRecv
);
break
;
default:
break
;
}
...
...
@@ -622,6 +624,42 @@ void CommutionRunStage(void)
}
if
((
TCUCommuStatus
.
CommStage
==
StartDownloadStage
))
{
if
(
GetSystemTick
()
-
sendTick_B
>=
500
)
{
sendTimes_B
++
;
sendTick_B
=
GetSystemTick
();
if
(
sendTimes_B
>
2000
/
500
)
{
TCUCommuStatus_B
.
CommStage
=
HeartStage
;
}
else
{
StartDownloadAck
(
1
);
}
}
}
if
((
TCUCommuStatus_B
.
CommStage
==
StartDownloadStage
))
{
if
(
GetSystemTick
()
-
sendTick_B
>=
500
)
{
sendTimes_B
++
;
sendTick_B
=
GetSystemTick
();
if
(
sendTimes_B
>
2000
/
500
)
{
TCUCommuStatus_B
.
CommStage
=
HeartStage
;
}
else
{
StartDownloadAck
(
2
);
}
}
}
oldStage
=
TCUCommuStatus
.
CommStage
;
oldStage_B
=
TCUCommuStatus_B
.
CommStage
;
}
...
...
@@ -1053,13 +1091,13 @@ void SendStatus(void)
if
(
TCUCommuStatus
.
ConnectFlag
==
CONNECT_NORMAL
)
{
data
[
1
]
=
TcuGetChgStatus
();
TCUSinglePackSendMsg
(
data
,
8
,
eCmd_status
,
4
,
ChargerCont1939Addr
);
TCUSinglePackSendMsg
(
data
,
8
,
eCmd_status
,
6
,
ChargerCont1939Addr
);
}
if
(
TCUCommuStatus_B
.
ConnectFlag
==
CONNECT_NORMAL
)
{
data
[
1
]
=
TcuGetChgStatus_B
();
TCUSinglePackSendMsg
(
data
,
8
,
eCmd_status
,
4
,
ChargerCont1939Addr_B
);
TCUSinglePackSendMsg
(
data
,
8
,
eCmd_status
,
6
,
ChargerCont1939Addr_B
);
}
}
...
...
DcPillar/Src/Thread/Thd_TCU.h
浏览文件 @
0137a391
...
...
@@ -18,6 +18,7 @@ typedef enum
ElectLockStage
=
5
,
PowerControlStage
=
6
,
ChgInfornQueryStage
=
7
,
StartDownloadStage
=
8
,
}
EnumTCUCommStage
;
typedef
union
...
...
@@ -25,13 +26,14 @@ typedef union
u16
Mult
;
struct
{
u32
startCompAck
:
1
;
//充电启动完成
状态确认超时
u32
stopCompAck
:
1
;
//充电停止完成
状态确认超时
u32
startCompAck
:
1
;
//充电启动完成状态确认超时
u32
stopCompAck
:
1
;
//充电停止完成状态确认超时
u32
DCTCUInfor
:
1
;
//遥信报文接收超时
u32
DCTCUMeasu
:
1
;
//遥测报文接收超时
u32
Param
:
1
;
//下发充电参数报文接收超时
//接收请求发送数据帧超时
//接收数据发送帧超时
//接收程序校验命令帧超时
//接收立即复位命令帧超时
//车辆验证确认帧接收超时
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论