Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
DC360_1drap3_xiaoju_V1
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
丁雨邯
DC360_1drap3_xiaoju_V1
Commits
a19862e2
提交
a19862e2
authored
4月 29, 2020
作者:
wysheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
完善新协议
上级
1beec2a0
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
86 行增加
和
42 行删除
+86
-42
Drv_TCUComm.c
DcPillar/Src/Drivers/Drv_TCUComm.c
+28
-17
Drv_TCUComm.h
DcPillar/Src/Drivers/Drv_TCUComm.h
+19
-8
Global.h
DcPillar/Src/Global.h
+0
-14
Thd_TCU.c
DcPillar/Src/Thread/Thd_TCU.c
+19
-3
Thd_TCU.h
DcPillar/Src/Thread/Thd_TCU.h
+20
-0
没有找到文件。
DcPillar/Src/Drivers/Drv_TCUComm.c
浏览文件 @
a19862e2
...
...
@@ -192,6 +192,7 @@ void TCURxIrqHandle(void)
///////////心跳帧///////////
case
eCmd_TcuHeart
:
// 计费单元心跳
case
eCmd_TCUErroComm
:
// 计费单元错误帧
Frame
.
Prio
=
Id1939
.
Disp
.
Prio
;
Frame
.
DP
=
Id1939
.
Disp
.
DP
;
Frame
.
PF
=
Id1939
.
Disp
.
PF
;
...
...
@@ -561,9 +562,11 @@ void StartMeg(StructTCUSend * pPgnRecv)
((
eLcdPro_TCUMainMenu
==
TCUCtrl
.
CurScreen
)
||
(
eLcdPro_TCUChargeSummary_B
==
TCUCtrl
.
CurScreen
)))
{
StartMeg_A
.
GunNum
=
1
;
//pPgnRecv->Data[0];
StartMeg_A
.
GunNum
=
0
;
//pPgnRecv->Data[0];
StartMeg_A
.
LoadSswitch
=
pPgnRecv
->
Data
[
1
];
StartMeg_A
.
PlugToChgFlag
=
pPgnRecv
->
Data
[
2
];
StartMeg_A
.
AuxiliaryPower
=
pPgnRecv
->
Data
[
3
];
StartMeg_A
.
ParallelCharging
=
pPgnRecv
->
Data
[
4
];
if
((
StartMeg_A
.
LoadSswitch
==
1
)
||
(
StartMeg_A
.
LoadSswitch
==
2
)
&&
(
StartMeg_A
.
PlugToChgFlag
==
0
)
||
(
StartMeg_A
.
PlugToChgFlag
==
1
))
...
...
@@ -598,10 +601,12 @@ void StartMeg(StructTCUSend * pPgnRecv)
if
((
TCUCurChgRecd_B
.
TCUChgStartNotetrl
==
0
)
&&
(
TCUCurChgRecd_B
.
TCUChargeEnable
==
0
)
&&
((
eLcdPro_TCUMainMenu
==
TCUCtrl
.
CurScreen
)
||
(
eLcdPro_TCUChargeSummary
==
TCUCtrl
.
CurScreen
)))
{
StartMeg_B
.
GunNum
=
2
;
//pPgnRecv->Data[0];
StartMeg_B
.
GunNum
=
0
;
//pPgnRecv->Data[0];
StartMeg_B
.
LoadSswitch
=
pPgnRecv
->
Data
[
1
];
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
))
{
...
...
@@ -765,9 +770,9 @@ void StartMegAck_A(void)
Data
[
3
]
=
Reason
;
Data
[
4
]
=
StartMeg_A
.
LoadSswitch
;
Data
[
5
]
=
0x00
;
Data
[
6
]
=
0x00
;
Data
[
7
]
=
0x00
;
Data
[
5
]
=
StartMeg_A
.
PlugToChgFlag
;
Data
[
6
]
=
StartMeg_A
.
AuxiliaryPower
;
Data
[
7
]
=
StartMeg_A
.
ParallelCharging
;
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_startAck
,
6
,
ChargerCont1939Addr
);
}
...
...
@@ -790,6 +795,9 @@ void StartMegAck_B(void)
Data
[
3
]
=
Reason
;
Data
[
4
]
=
StartMeg_B
.
LoadSswitch
;
Data
[
5
]
=
StartMeg_B
.
PlugToChgFlag
;
Data
[
6
]
=
StartMeg_B
.
AuxiliaryPower
;
Data
[
7
]
=
StartMeg_B
.
ParallelCharging
;
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_startAck
,
6
,
ChargerCont1939Addr_B
);
}
...
...
@@ -1084,7 +1092,7 @@ void ACkStartCompMeg(StructTCUSend * pPgnRecv)
{
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
{
AckStartCompMeg_A
.
GunNum
=
1
;
//pPgnRecv->Data[0];
AckStartCompMeg_A
.
GunNum
=
0
;
//pPgnRecv->Data[0];
AckStartCompMeg_A
.
LoadSswitch
=
pPgnRecv
->
Data
[
1
];
AckStartCompMeg_A
.
AckFlag
=
pPgnRecv
->
Data
[
2
];
...
...
@@ -1097,7 +1105,7 @@ void ACkStartCompMeg(StructTCUSend * pPgnRecv)
}
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
{
AckStartCompMeg_B
.
GunNum
=
2
;
//pPgnRecv->Data[0];
AckStartCompMeg_B
.
GunNum
=
0
;
//pPgnRecv->Data[0];
AckStartCompMeg_B
.
LoadSswitch
=
pPgnRecv
->
Data
[
1
];
AckStartCompMeg_B
.
AckFlag
=
pPgnRecv
->
Data
[
2
];
...
...
@@ -1408,14 +1416,14 @@ void stopCompAck(StructTCUSend * pPgnRecv)
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
{
AckStopCompMeg_A
.
GunNum
=
1
;
//pPgnRecv->Data[0];
AckStopCompMeg_A
.
GunNum
=
0
;
//pPgnRecv->Data[0];
AckStopCompMeg_A
.
StopReason
=
pPgnRecv
->
Data
[
1
];
AckStopCompMeg_A
.
AckFlag
=
pPgnRecv
->
Data
[
2
];
TCUCurChgRecd
.
TCUChgStopCompNotetrl
=
3
;
//停止完成帧命令发送
}
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
{
AckStopCompMeg_B
.
GunNum
=
2
;
//pPgnRecv->Data[0];
AckStopCompMeg_B
.
GunNum
=
0
;
//pPgnRecv->Data[0];
AckStopCompMeg_B
.
StopReason
=
pPgnRecv
->
Data
[
1
];
AckStopCompMeg_B
.
AckFlag
=
pPgnRecv
->
Data
[
2
];
TCUCurChgRecd_B
.
TCUChgStopCompNotetrl
=
3
;
//停止完成帧命令发送
...
...
@@ -1445,7 +1453,7 @@ void TCUHeartBeat_B(void)
{
0
};
static
u8
CountNum
;
//最大255
static
u8
CountNum
=
0
;
//最大255
Data
[
0
]
=
0x00
;
Data
[
1
]
=
CountNum
++
;
...
...
@@ -2261,7 +2269,7 @@ void measuringReporting20_B(void)
void
ChgInfornQueryAck
(
void
)
{
u8
data
[
128
]
;
u8
data
[
64
]
=
{
0
}
;
u8
len
=
0
;
data
[
len
++
]
=
0
;
//TCUCommuStatus.ChgNum;
...
...
@@ -2353,22 +2361,23 @@ void verificationAck(StructTCUSend * pPgnRecv)
}
void
TcuEMMsg
(
u
8
data
)
void
TcuEMMsg
(
u
16
data
)
{
u8
Data
[
8
];
u8
Data
[
8
]
=
{
0
}
;
Data
[
0
]
=
0x00
;
Data
[
1
]
=
data
;
Data
[
1
]
=
data
>>
8
;
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_ConErroComm
,
4
,
ChargerCont1939Addr
);
}
void
TcuEMMsg_B
(
u
8
data
)
void
TcuEMMsg_B
(
u
16
data
)
{
u8
Data
[
8
];
u8
Data
[
8
]
=
{
0
}
;
Data
[
0
]
=
0x00
;
Data
[
1
]
=
data
;
Data
[
1
]
=
data
>>
8
;
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_ConErroComm
,
4
,
ChargerCont1939Addr_B
);
}
...
...
@@ -2394,3 +2403,5 @@ void TCUMeasuRecv(StructTCUSend * pPgnRecv)
}
}
DcPillar/Src/Drivers/Drv_TCUComm.h
浏览文件 @
a19862e2
...
...
@@ -58,6 +58,8 @@ typedef struct
u8
GunNum
;
//抢号 单枪 0 一机多冲 1-255
u8
LoadSswitch
;
//负荷控制开关 是否根据用户型号提供不同输出功率 01启用02关闭其他无效
u8
PlugToChgFlag
;
//即插即充标识 00非 01 即插即充other:invalid
u8
AuxiliaryPower
;
//辅助电源选择:00H:使用12V(默认)01H: 24V(优先使用12V探测,失败后切24V电源探测)其他:无效
u8
ParallelCharging
;
//并充(两把枪充一辆车)选择:00H:关闭(默认) 01H:启用 其他:无效
}
StructStartMeg
;
typedef
struct
{
...
...
@@ -193,12 +195,17 @@ typedef union
u32
timeAck
:
1
;
//
u32
SerConAck
:
1
;
//
u32
GunAck
:
1
;
//
u32
powerAck
:
1
;
//
u32
QueryAck
:
1
;
//
u32
DCConInfor
:
1
;
//
u32
DCConMeasu
:
1
;
//
u32
verification
:
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秒内未收到充电控制器车辆验证报文则判定为超时。
}
Value
;
...
...
@@ -259,6 +266,10 @@ typedef enum
eCmd_stopComp
=
0x001300
,
// 充电停止完成帧
eCmd_stopCompAck
=
0x001400
,
// 充电停止完成应答帧
eCmd_status
=
0x001500
,
//充电桩状态信息帧
///////////数据帧/直流////////////
eCmd_DCConMeasu
=
0x002000
,
// 充电控制器遥测帧
eCmd_DCTCUMeasu
=
0x002100
,
// 计费单元遥测 帧
...
...
@@ -315,8 +326,8 @@ extern void measuringReporting20_B(void);
extern
void
ChgInfornQueryAck
(
void
);
extern
void
verification
(
void
);
extern
void
verificationAck
(
StructTCUSend
*
pPgnRecv
);
extern
void
TcuEMMsg
(
u
8
data
);
extern
void
TcuEMMsg_B
(
u
8
data
);
extern
void
TcuEMMsg
(
u
16
data
);
extern
void
TcuEMMsg_B
(
u
16
data
);
extern
void
TCUParam
(
StructTCUSend
*
pPgnRecv
);
extern
void
TCUMeasuRecv
(
StructTCUSend
*
pPgnRecv
);
...
...
DcPillar/Src/Global.h
浏览文件 @
a19862e2
...
...
@@ -15,20 +15,6 @@
#define AppCodeSize ((u32)250*1024)
#define McnRomSectionSize ((u32)2*1024)
#define UpdateFlagAddr ((u32)0x08002800)
typedef
union
{
u8
Mult
;
struct
{
u32
Idle
:
1
;
//
u32
startCompAck
:
1
;
//
u32
stopCompAck
:
1
;
//
u32
DCTCUInfor
:
1
;
//
u32
DCTCUMeasu
:
1
;
//
u32
Param
:
1
;
//服务启停
u32
verificationAck
:
1
;
//
}
Value
;
}
UnionConEM
;
#ifndef NULL
#define NULL ((void *)0)
...
...
DcPillar/Src/Thread/Thd_TCU.c
浏览文件 @
a19862e2
...
...
@@ -118,7 +118,7 @@ void TCURecvProcess(void)
case
eCmd_TCUErroComm
:
// 计费单元错误帧
TCUErroCommAnalysis
(
&
pPgnRecv
);
break
;
default:
break
;
}
...
...
@@ -816,6 +816,22 @@ void TCUCurChgRecordInterface_B(void)
}
}
void
SendStatus
(
void
)
{
static
u32
ChgStutusSendTick
=
0
;
u8
data
[
8
]
=
{
0
};
if
(
TCUCommuStatus
.
VerChkVaild
==
0
)
//版本检验未完成不发送
return
;
if
((
GetSystemTick
()
-
ChgStutusSendTick
)
>
(
500
))
{
ChgStutusSendTick
=
GetSystemTick
();
data
[
0
]
=
0
;
data
[
1
]
=
ChargeCtrl
.
CurProcess
;
//待完善 04/29
TCUSinglePackSendMsg
(
data
,
6
,
eCmd_startComp
,
4
,
ChargerCont1939Addr
);
TCUSinglePackSendMsg
(
data
,
6
,
eCmd_startComp
,
4
,
ChargerCont1939Addr_B
);
}
}
void
TCUChgStarStopProcess
(
void
)
//充电流启停程逻辑
{
...
...
@@ -842,8 +858,8 @@ void TCULinkProcess(void) //心跳帧处理
CommutionConfigurationStage
();
//配置阶段
CommutionRunStage
();
//运行阶段
ConEMSend
();
//ab超时发送逻辑
SendStatus
();
}
osMessageQId
TcuSendMsgId
=
0
;
...
...
DcPillar/Src/Thread/Thd_TCU.h
浏览文件 @
a19862e2
...
...
@@ -20,6 +20,26 @@ typedef enum
ChgInfornQueryStage
=
7
,
}
EnumTCUCommStage
;
typedef
union
{
u16
Mult
;
struct
{
u32
startCompAck
:
1
;
//充电启动完成 状态确认超时
u32
stopCompAck
:
1
;
//充电停止完成 状态确认超时
u32
DCTCUInfor
:
1
;
//遥信报文接收超时
u32
DCTCUMeasu
:
1
;
//遥测报文接收超时
u32
Param
:
1
;
//下发充电参数报文接收超时
//接收请求发送数据帧超时
//接收数据发送帧超时
//接收程序校验命令帧超时
//接收立即复位命令帧超时
//车辆验证确认帧接收超时
u32
verificationAck
:
1
;
//
}
Value
;
}
UnionConEM
;
typedef
struct
{
EnumTCUCommStage
CommStage
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论