Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
DC360_1drap3_xiaoju_V1
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
丁雨邯
DC360_1drap3_xiaoju_V1
Commits
f0d59927
提交
f0d59927
authored
4月 30, 2020
作者:
wysheng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
拆分AB枪与TCU通讯
上级
91b7b8ce
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
560 行增加
和
300 行删除
+560
-300
Drv_TCUComm.c
DcPillar/Src/Drivers/Drv_TCUComm.c
+302
-201
Drv_TCUComm.h
DcPillar/Src/Drivers/Drv_TCUComm.h
+7
-7
Thd_TCU.c
DcPillar/Src/Thread/Thd_TCU.c
+249
-87
Thd_TCU.h
DcPillar/Src/Thread/Thd_TCU.h
+2
-5
没有找到文件。
DcPillar/Src/Drivers/Drv_TCUComm.c
浏览文件 @
f0d59927
...
...
@@ -127,16 +127,16 @@ void TCURxIrqHandle(void)
Frame
.
Data
[
6
]
=
RxMsg
.
Data
[
6
];
Frame
.
Data
[
7
]
=
RxMsg
.
Data
[
7
];
if
(
Frame
.
DA
==
ChargerCont1939Addr
)
//
if(Frame.DA == ChargerCont1939Addr)
{
if
(
pdTRUE
==
xQueueSendFromISR
(
TCUMsg
,
&
Frame
,
&
taskWoken
))
portEND_SWITCHING_ISR
(
taskWoken
);
}
else
if
(
Frame
.
DA
==
ChargerCont1939Addr_B
)
/*
else if(Frame.DA == ChargerCont1939Addr_B)
{
if (pdTRUE == xQueueSendFromISR(TCUMsg_B, &Frame, &taskWoken))
portEND_SWITCHING_ISR(taskWoken);
}
}
*/
break
;
...
...
@@ -221,16 +221,16 @@ void TCURxIrqHandle(void)
Frame
.
Data
[
6
]
=
RxMsg
.
Data
[
6
];
Frame
.
Data
[
7
]
=
RxMsg
.
Data
[
7
];
if
(
Frame
.
DA
==
ChargerCont1939Addr
)
//
if(Frame.DA == ChargerCont1939Addr)
{
if
(
pdTRUE
==
xQueueSendFromISR
(
TCUMsg
,
&
Frame
,
&
taskWoken
))
portEND_SWITCHING_ISR
(
taskWoken
);
}
else
if
(
Frame
.
DA
==
ChargerCont1939Addr_B
)
/*
else if(Frame.DA == ChargerCont1939Addr_B)
{
if (pdTRUE == xQueueSendFromISR(TCUMsg_B, &Frame, &taskWoken))
portEND_SWITCHING_ISR(taskWoken);
}
}
*/
break
;
...
...
@@ -346,9 +346,9 @@ u8 TCUCommInit(void)
osMessageQDef
(
TCUMsg
,
64
,
StructPgnRecv
);
TCUMsg
=
osMessageCreate
(
osMessageQ
(
TCUMsg
),
NULL
);
TCUMsg_B
=
NULL
;
osMessageQDef
(
TCUMsg_B
,
64
,
StructPgnRecv
);
TCUMsg_B
=
osMessageCreate
(
osMessageQ
(
TCUMsg_B
),
NULL
);
//
TCUMsg_B = NULL;
//
osMessageQDef(TCUMsg_B, 64, StructPgnRecv);
//
TCUMsg_B = osMessageCreate(osMessageQ(TCUMsg_B), NULL);
TCUCanInit
();
return
TRUE
;
...
...
@@ -618,10 +618,7 @@ void StartMeg(StructTCUSend * pPgnRecv)
{
;
//启动逻辑处理阶段不做处理
}
else
//if((TCUCurChgRecd.TCUChgStartNotetrl ==0)
// &&(TCUCurChgRecd.TCUChargeEnable !=0)
// )
else
{
TCUCurChgRecd
.
TCUChgStartNotetrl
=
1
;
//回复充电开始发送标志位
}
...
...
@@ -658,10 +655,7 @@ void StartMeg(StructTCUSend * pPgnRecv)
{
;
//启动逻辑处理阶段不做处理
}
else
//if((TCUCurChgRecd_B.TCUChgStartNotetrl ==0)
// &&(TCUCurChgRecd_B.TCUChargeEnable !=0)
// )
else
{
TCUCurChgRecd_B
.
TCUChgStartNotetrl
=
1
;
//充电阶段
}
...
...
@@ -954,7 +948,7 @@ u8 AllowDTUStartCompCharge_B(u8 * Reason)
*
Reason
=
0x28
;
else
if
((
VerificaInfo_B
.
result
==
1
)
&&
(
StartMeg_B
.
PlugToChgFlag
==
1
))
*
Reason
=
0x29
;
else
if
(
TCUCommuStatus
.
ErrData_B
.
Value
.
verificationAck
==
1
)
else
if
(
TCUCommuStatus
_B
.
ErrData
.
Value
.
verificationAck
==
1
)
*
Reason
=
0x30
;
else
if
(
TCUCurChgRecd
.
TCUStartCompresult
==
2
)
*
Reason
=
0x01
;
//控制导引故障
...
...
@@ -1297,7 +1291,7 @@ void GetStopReason_B(u8 * stopReason)
*
stopReason
=
02
;
else
if
(
TCUCurChgRecd_B
.
TCUChgStopType
==
3
)
*
stopReason
=
03
;
else
if
(
TCUCommuStatus
.
ErrData_B
.
Value
.
startCompAck
==
1
)
else
if
(
TCUCommuStatus
_B
.
ErrData
.
Value
.
startCompAck
==
1
)
*
stopReason
=
0x04
;
else
if
(
ChargeStopType_B
==
eChgStop_Run_CcOpen
)
*
stopReason
=
0x05
;
//控制导引超时//充电过程中充电导引枪连接
...
...
@@ -1499,16 +1493,17 @@ void AckTCUHeartBeat(StructTCUSend * pPgnRecv)
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
{
TCUCommuStatus
.
HeartBeatErrCnt
=
0
;
TCUCommuStatus
.
ConnectFlag
=
CONNECT_NORMAL
;
//tcu检测控制器心跳状态
TCUCommuStatus
.
HeartBeatVaild
=
1
;
//控制器检测tcu心跳状态
}
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
{
TCUCommuStatus
.
HeartBeatErrCnt_B
=
0
;
TCUCommuStatus_B
.
HeartBeatErrCnt
=
0
;
TCUCommuStatus_B
.
ConnectFlag
=
CONNECT_NORMAL
;
//tcu检测控制器心跳状态
TCUCommuStatus_B
.
HeartBeatVaild
=
1
;
//控制器检测tcu心跳状态
}
TCUCommuStatus
.
ConnectFlag
=
CONNECT_NORMAL
;
//tcu检测控制器心跳状态
TCUCommuStatus
.
HeartBeatVaild
=
1
;
//控制器检测tcu心跳状态
}
...
...
@@ -1520,16 +1515,14 @@ void TCUtimeSet(StructTCUSend * pPgnRecv)
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
{
TCUCommuStatus
.
C
hgNum
=
1
;
TCUCommuStatus
.
C
ommStage
=
TimeStage
;
}
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
{
TCUCommuStatus
.
ChgNum
=
2
;
TCUCommuStatus
_B
.
CommStage
=
TimeStage
;
}
TCUCommuStatus
.
CommStage
=
TimeStage
;
memcpy
(
time
,
&
pPgnRecv
->
Data
[
1
],
7
);
TimeBlock
.
Year
=
time
->
year
+
2000
;
TimeBlock
.
Mon
=
time
->
month
;
...
...
@@ -1546,7 +1539,7 @@ void TCUtimeSet(StructTCUSend * pPgnRecv)
}
void
TCUtimeSetAck
(
void
)
void
TCUtimeSetAck
(
u8
ChgNum
)
{
u8
Data
[
8
]
=
{
...
...
@@ -1555,7 +1548,7 @@ void TCUtimeSetAck(void)
StructTime
Time
;
cp56time2a
*
time
=
NULL
;
Data
[
0
]
=
0
;
//TCUCommuStatus.ChgNum;
Data
[
0
]
=
0
;
StampToTime
(
RtcGetTime
(),
&
Time
);
time
->
year
=
Time
.
Year
-
2000
;
time
->
month
=
Time
.
Mon
;
...
...
@@ -1564,11 +1557,11 @@ void TCUtimeSetAck(void)
time
->
min
=
Time
.
Min
;
time
->
msec
=
(((
u16
)
Time
.
Sec
)
*
1000
);
memcpy
(
&
Data
[
1
],
time
,
7
);
if
(
TCUCommuStatus
.
ChgNum
==
1
)
if
(
ChgNum
==
1
)
{
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_timeAck
,
6
,
ChargerCont1939Addr
);
}
else
if
(
TCUCommuStatus
.
ChgNum
==
2
)
else
if
(
ChgNum
==
2
)
{
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_timeAck
,
6
,
ChargerCont1939Addr_B
);
}
...
...
@@ -1579,32 +1572,41 @@ void TCUVersionCheck(StructTCUSend * pPgnRecv)
{
u16
version
;
//TCUCommuStatus.ChgNum = pPgnRecv->Data[0];
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
{
TCUCommuStatus
.
ChgNum
=
1
;
version
=
(((
u16
)
pPgnRecv
->
Data
[
2
])
<<
8
)
+
pPgnRecv
->
Data
[
1
];
if
(
TCUControlInfo
.
version
<=
version
)
{
TCUCommuStatus
.
VerChkVaild
=
1
;
//版本校验成功
TCUCommuStatus
.
CommStage
=
VersionStage
;
}
else
TCUCommuStatus
.
VerChkVaild
=
0
;
//版本校验失败
}
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
{
TCUCommuStatus
.
ChgNum
=
2
;
}
version
=
(((
u16
)
pPgnRecv
->
Data
[
2
])
<<
8
)
+
pPgnRecv
->
Data
[
1
];
version
=
(((
u16
)
pPgnRecv
->
Data
[
2
])
<<
8
)
+
pPgnRecv
->
Data
[
1
];
if
(
TCUControlInfo
.
version
<=
version
)
{
TCUCommuStatus
.
VerChkVaild
=
1
;
//版本校验成功
TCUCommuStatus
.
CommStage
=
VersionStage
;
if
(
TCUControlInfo
.
version
<=
version
)
{
TCUCommuStatus_B
.
VerChkVaild
=
1
;
//版本校验成功
TCUCommuStatus_B
.
CommStage
=
VersionStage
;
}
else
TCUCommuStatus_B
.
VerChkVaild
=
0
;
//版本校验失败
}
else
TCUCommuStatus
.
VerChkVaild
=
0
;
//版本校验失败
return
;
}
void
TCUVersionCheckSent
(
void
)
void
TCUVersionCheckSent
(
u8
ChgNum
)
{
u8
Data
[
8
]
=
{
...
...
@@ -1614,11 +1616,11 @@ void TCUVersionCheckSent(void)
Data
[
0
]
=
0
;
Data
[
1
]
=
TCUControlInfo
.
version
;
Data
[
2
]
=
(
u8
)
(
TCUControlInfo
.
version
>>
8
);
if
(
TCUCommuStatus
.
ChgNum
==
1
)
if
(
ChgNum
==
1
)
{
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_versiAck
,
6
,
ChargerCont1939Addr
);
}
else
if
(
TCUCommuStatus
.
ChgNum
==
2
)
else
if
(
ChgNum
==
2
)
{
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_versiAck
,
6
,
ChargerCont1939Addr_B
);
}
...
...
@@ -1630,46 +1632,63 @@ void TCUParam(StructTCUSend * pPgnRecv)
{
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
{
TCUCommuStatus
.
ChgNum
=
1
;
TCUCommuStatus
.
CommStage
=
ChageParamStage
;
memcpy
(
TCUControlInfo
.
ChargeNum
,
&
pPgnRecv
->
Data
[
0
],
8
);
}
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
{
TCUCommuStatus
.
ChgNum
=
2
;
TCUCommuStatus_B
.
CommStage
=
ChageParamStage
;
memcpy
(
TCUControlInfo
.
ChargeNum
,
&
pPgnRecv
->
Data
[
0
],
8
);
}
TCUCommuStatus
.
CommStage
=
ChageParamStage
;
memcpy
(
TCUControlInfo
.
ChargeNum
,
&
pPgnRecv
->
Data
[
0
],
8
);
}
void
TCUParamAck
(
void
)
void
TCUParamAck
(
u8
ChgNum
)
{
u8
Data
[
8
];
memset
(
Data
,
0
,
8
);
Data
[
0
]
=
0
;
//TCUCommuStatus.ChgNum;
Data
[
0
]
=
0
;
if
((
TCUCommuStatus
.
VerChkVaild
==
0
)
||
(
TCUCommuStatus
.
ConnectFlag
==
CONNECT_TIMEOUT
)
)
if
(
ChgNum
==
1
)
{
TCUCommuStatus
.
ParamVaild
=
0
;
Data
[
1
]
=
01
;
//失败
if
((
TCUCommuStatus
.
VerChkVaild
==
0
)
||
(
TCUCommuStatus
.
ConnectFlag
==
CONNECT_TIMEOUT
))
{
TCUCommuStatus
.
ParamVaild
=
0
;
Data
[
1
]
=
01
;
//失败
if
(
TCUCommuStatus
.
VerChkVaild
==
0
)
Data
[
2
]
=
1
;
//版本校验失败
if
(
TCUCommuStatus
.
VerChkVaild
==
0
)
Data
[
2
]
=
1
;
//版本校验失败
else
Data
[
2
]
=
2
;
//心跳超时
}
else
Data
[
2
]
=
2
;
//心跳超时
}
else
{
Data
[
1
]
=
0
;
Data
[
2
]
=
0
;
TCUCommuStatus
.
ParamVaild
=
1
;
}
if
(
TCUCommuStatus
.
ChgNum
==
1
)
{
{
Data
[
1
]
=
0
;
Data
[
2
]
=
0
;
TCUCommuStatus
.
ParamVaild
=
1
;
}
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_paramAck
,
6
,
ChargerCont1939Addr
);
}
else
if
(
TCUCommuStatus
.
ChgNum
==
2
)
else
if
(
ChgNum
==
2
)
{
if
((
TCUCommuStatus_B
.
VerChkVaild
==
0
)
||
(
TCUCommuStatus_B
.
ConnectFlag
==
CONNECT_TIMEOUT
))
{
TCUCommuStatus_B
.
ParamVaild
=
0
;
Data
[
1
]
=
01
;
//失败
if
(
TCUCommuStatus_B
.
VerChkVaild
==
0
)
Data
[
2
]
=
1
;
//版本校验失败
else
Data
[
2
]
=
2
;
//心跳超时
}
else
{
Data
[
1
]
=
0
;
Data
[
2
]
=
0
;
TCUCommuStatus_B
.
ParamVaild
=
1
;
}
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_paramAck
,
6
,
ChargerCont1939Addr_B
);
}
...
...
@@ -1678,64 +1697,94 @@ void TCUParamAck(void)
void
SerConAckAnalysis
(
StructTCUSend
*
pPgnRecv
)
{
//TCUCommuStatus.ChgNum = pPgnRecv->Data[0];
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
{
TCUCommuStatus
.
ChgNum
=
1
;
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
;
//版本校验未完成
else
if
(
TCUCommuStatus
.
ParamVaild
==
0
)
TCUCommuStatus
.
ServiceContralVaildValue
=
4
;
//参数下发为未完成
else
if
(
TCUCurChgRecd
.
TCUChargeEnable
==
1
)
TCUCommuStatus
.
ServiceContralVaildValue
=
05
;
else
TCUCommuStatus
.
ServiceContralVaildValue
=
0
;
TCUCommuStatus
.
ChargingServiceSetValue
=
pPgnRecv
->
Data
[
1
];
if
(
TCUCommuStatus
.
ServiceContralVaildValue
==
0
)
TCUControlInfo
.
ChargingServiceFlag
=
pPgnRecv
->
Data
[
1
];
}
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
{
TCUCommuStatus
.
ChgNum
=
2
;
}
TCUCommuStatus
.
CommStage
=
ServiceContralStage
;
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
;
//版本校验未完成
else
if
(
TCUCommuStatus_B
.
ParamVaild
==
0
)
TCUCommuStatus_B
.
ServiceContralVaildValue
=
4
;
//参数下发为未完成
else
if
(
TCUCurChgRecd_B
.
TCUChargeEnable
==
1
)
TCUCommuStatus_B
.
ServiceContralVaildValue
=
05
;
else
TCUCommuStatus_B
.
ServiceContralVaildValue
=
0
;
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
;
//版本校验未完成
else
if
(
TCUCommuStatus
.
ParamVaild
==
0
)
TCUCommuStatus
.
ServiceContralVaildValue
=
4
;
//参数下发为未完成
else
if
((
TCUCurChgRecd
.
TCUChargeEnable
==
1
)
||
(
TCUCurChgRecd_B
.
TCUChargeEnable
==
1
))
TCUCommuStatus
.
ServiceContralVaildValue
=
05
;
else
TCUCommuStatus
.
ServiceContralVaildValue
=
0
;
TCUCommuStatus_B
.
ChargingServiceSetValue
=
pPgnRecv
->
Data
[
1
];
TCUCommuStatus
.
ChargingServiceSetValue
=
pPgnRecv
->
Data
[
1
];
if
(
TCUCommuStatus_B
.
ServiceContralVaildValue
==
0
)
TCUControlInfo
.
ChargingServiceFlag
=
pPgnRecv
->
Data
[
1
];
}
if
(
TCUCommuStatus
.
ServiceContralVaildValue
==
0
)
TCUControlInfo
.
ChargingServiceFlag
=
pPgnRecv
->
Data
[
1
];
}
void
SerConAck
(
void
)
void
SerConAck
(
u8
ChgNum
)
{
u8
Data
[
8
]
=
{
0
};
Data
[
0
]
=
0
;
//TCUCommuStatus.ChgNum;
Data
[
1
]
=
TCUCommuStatus
.
ChargingServiceSetValue
;
if
(
TCUCommuStatus
.
ServiceContralVaildValue
==
0
)
{
Data
[
2
]
=
00
;
//成功
Data
[
3
]
=
00
;
//成功
}
else
{
Data
[
2
]
=
01
;
//失败
Data
[
3
]
=
TCUCommuStatus
.
ServiceContralVaildValue
;
//失败
}
if
(
TCUCommuStatus
.
ChgNum
==
1
)
if
(
ChgNum
==
1
)
{
Data
[
0
]
=
0
;
Data
[
1
]
=
TCUCommuStatus
.
ChargingServiceSetValue
;
if
(
TCUCommuStatus
.
ServiceContralVaildValue
==
0
)
{
Data
[
2
]
=
00
;
//成功
Data
[
3
]
=
00
;
//成功
}
else
{
Data
[
2
]
=
01
;
//失败
Data
[
3
]
=
TCUCommuStatus
.
ServiceContralVaildValue
;
//失败
}
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_SerConAck
,
4
,
ChargerCont1939Addr
);
}
else
if
(
TCUCommuStatus
.
ChgNum
==
2
)
else
if
(
ChgNum
==
2
)
{
Data
[
0
]
=
0
;
Data
[
1
]
=
TCUCommuStatus_B
.
ChargingServiceSetValue
;
if
(
TCUCommuStatus_B
.
ServiceContralVaildValue
==
0
)
{
Data
[
2
]
=
00
;
//成功
Data
[
3
]
=
00
;
//成功
}
else
{
Data
[
2
]
=
01
;
//失败
Data
[
3
]
=
TCUCommuStatus_B
.
ServiceContralVaildValue
;
//失败
}
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_SerConAck
,
4
,
ChargerCont1939Addr_B
);
}
...
...
@@ -1744,88 +1793,117 @@ void SerConAck(void)
void
ElectControlAnalysis
(
StructTCUSend
*
pPgnRecv
)
{
//TCUCommuStatus.ChgNum = pPgnRecv->Data[0];
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
{
TCUCommuStatus
.
ChgNum
=
1
;
}
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
{
TCUCommuStatus
.
ChgNum
=
2
;
}
TCUCommuStatus
.
CommStage
=
ElectLockStage
;
TCUCommuStatus
.
CommStage
=
ElectLockStage
;
TCUCommuStatus
.
ElectLockSetValue
=
pPgnRecv
->
Data
[
2
];
if
(((
pPgnRecv
->
Data
[
1
]
!=
0x01
)
&&
(
pPgnRecv
->
Data
[
1
]
!=
0x02
))
||
((
pPgnRecv
->
Data
[
2
]
!=
0x01
)
&&
(
pPgnRecv
->
Data
[
2
]
!=
0x02
)))
TCUCommuStatus
.
ElectLockVaildValue
=
1
;
//数据合法性校验失败
else
if
((
TCUCommuStatus
.
ConnectFlag
==
CONNECT_TIMEOUT
)
||
(
TCUCommuStatus
.
HeartBeatVaild
))
TCUCommuStatus
.
ElectLockVaildValue
=
2
;
//通讯超时
else
if
(
TCUCommuStatus
.
VerChkVaild
==
0
)
TCUCommuStatus
.
ElectLockVaildValue
=
3
;
//版本校验未完成
else
if
(
TCUCommuStatus
.
ParamVaild
==
0
)
TCUCommuStatus
.
ElectLockVaildValue
=
4
;
//参数下发为未完成
else
if
((
TCUCurChgRecd
.
TCUChargeEnable
==
1
)
||
(
TCUCurChgRecd_B
.
TCUChargeEnable
==
1
))
TCUCommuStatus
.
ElectLockVaildValue
=
05
;
else
if
(
PillarError
.
Value
.
EleLock
==
1
)
TCUCommuStatus
.
ElectLockVaildValue
=
07
;
//电子锁故障
else
TCUCommuStatus
.
ServiceContralVaildValue
=
0
;
TCUCommuStatus
.
ElectLockSetValue
=
pPgnRecv
->
Data
[
2
];
if
(((
pPgnRecv
->
Data
[
1
]
!=
0x01
)
&&
(
pPgnRecv
->
Data
[
1
]
!=
0x02
))
||
((
pPgnRecv
->
Data
[
2
]
!=
0x01
)
&&
(
pPgnRecv
->
Data
[
2
]
!=
0x02
)))
TCUCommuStatus
.
ElectLockVaildValue
=
1
;
//数据合法性校验失败
else
if
((
TCUCommuStatus
.
ConnectFlag
==
CONNECT_TIMEOUT
)
||
(
TCUCommuStatus
.
HeartBeatVaild
))
TCUCommuStatus
.
ElectLockVaildValue
=
2
;
//通讯超时
else
if
(
TCUCommuStatus
.
VerChkVaild
==
0
)
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
TCUCommuStatus
.
ServiceContralVaildValue
=
0
;
if
((
TCUCommuStatus
.
ServiceContralVaildValue
==
0
)
||
(
TCUCommuStatus
.
ServiceContralVaildValue
==
0x07
))
{
if
(
TCUCommuStatus
.
ChgNum
==
1
)
if
((
TCUCommuStatus
.
ServiceContralVaildValue
==
0
)
||
(
TCUCommuStatus
.
ServiceContralVaildValue
==
0x07
))
{
if
(
TCUCommuStatus
.
ElectLockSetValue
==
01
)
LockSet
(
eSwSta_On
);
else
LockSet
(
eSwSta_Off
);
}
else
if
(
TCUCommuStatus
.
ChgNum
==
2
)
{
}
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
)
&&
(
pPgnRecv
->
Data
[
2
]
!=
0x02
)))
TCUCommuStatus_B
.
ElectLockVaildValue
=
1
;
//数据合法性校验失败
else
if
((
TCUCommuStatus_B
.
ConnectFlag
==
CONNECT_TIMEOUT
)
||
(
TCUCommuStatus_B
.
HeartBeatVaild
))
TCUCommuStatus_B
.
ElectLockVaildValue
=
2
;
//通讯超时
else
if
(
TCUCommuStatus_B
.
VerChkVaild
==
0
)
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
TCUCommuStatus_B
.
ServiceContralVaildValue
=
0
;
if
(
TCUCommuStatus
.
ElectLockSetValue
==
01
)
if
((
TCUCommuStatus_B
.
ServiceContralVaildValue
==
0
)
||
(
TCUCommuStatus_B
.
ServiceContralVaildValue
==
0x07
))
{
if
(
TCUCommuStatus_B
.
ElectLockSetValue
==
01
)
LockSet
(
eSwSta_On
);
else
LockSet
(
eSwSta_Off
);
}
}
}
void
ElectControlAck
(
void
)
void
ElectControlAck
(
u8
ChgNum
)
{
u8
Data
[
8
]
=
{
0
};
Data
[
0
]
=
0
;
//TCUCommuStatus.ChgNum;
Data
[
1
]
=
TCUCommuStatus
.
ElectLockSetValue
;
if
(
ChgNum
==
1
)
{
Data
[
0
]
=
0
;
Data
[
1
]
=
TCUCommuStatus
.
ElectLockSetValue
;
if
(
PillarError
.
Value
.
EleLock
==
1
)
TCUCommuStatus
.
ServiceContralVaildValue
=
0x07
;
if
(
PillarError
.
Value
.
EleLock
==
1
)
TCUCommuStatus
.
ServiceContralVaildValue
=
0x07
;
if
(
TCUCommuStatus
.
ElectLockVaildValue
==
0
)
{
Data
[
2
]
=
00
;
//成功
if
(
TCUCommuStatus
.
ElectLockVaildValue
==
0
)
{
Data
[
2
]
=
00
;
//成功
Data
[
3
]
=
00
;
//成功
}
else
{
Data
[
2
]
=
01
;
//失败
Data
[
3
]
=
TCUCommuStatus
.
ServiceContralVaildValue
;
//失败
}
if
(
TCUCommuStatus
.
ChgNum
==
1
)
{
Data
[
3
]
=
00
;
//成功
}
else
{
Data
[
2
]
=
01
;
//失败
Data
[
3
]
=
TCUCommuStatus
.
ServiceContralVaildValue
;
//失败
}
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_GunAck
,
4
,
ChargerCont1939Addr
);
}
else
if
(
TCUCommuStatus
.
ChgNum
==
2
)
else
if
(
ChgNum
==
2
)
{
Data
[
0
]
=
0
;
Data
[
1
]
=
TCUCommuStatus_B
.
ElectLockSetValue
;
if
(
PillarError
.
Value
.
EleLock
==
1
)
TCUCommuStatus_B
.
ServiceContralVaildValue
=
0x07
;
if
(
TCUCommuStatus_B
.
ElectLockVaildValue
==
0
)
{
Data
[
2
]
=
00
;
//成功
Data
[
3
]
=
00
;
//成功
}
else
{
Data
[
2
]
=
01
;
//失败
Data
[
3
]
=
TCUCommuStatus_B
.
ServiceContralVaildValue
;
//失败
}
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_GunAck
,
4
,
ChargerCont1939Addr_B
);
}
}
...
...
@@ -1833,30 +1911,21 @@ void ElectControlAck(void)
void
PowerControlAnalysis
(
StructTCUSend
*
pPgnRecv
)
{
//TCUCommuStatus.ChgNum = pPgnRecv->Data[0];
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
{
TCUCommuStatus
.
ChgNum
=
1
;
}
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
{
TCUCommuStatus
.
ChgNum
=
2
;
}
TCUCommuStatus
.
CommStage
=
PowerControlStage
;
TCUCommuStatus
.
CommStage
=
PowerControlStage
;
TCUCommuStatus
.
PowerControltype
=
pPgnRecv
->
Data
[
1
];
TCUCommuStatus
.
PowerControlParam
=
pPgnRecv
->
Data
[
2
]
+
(
u16
)
pPgnRecv
->
Data
[
3
]
<<
8
;
if
(((
pPgnRecv
->
Data
[
1
]
!=
0x01
)
&&
(
pPgnRecv
->
Data
[
1
]
!=
0x02
))
||
((
pPgnRecv
->
Data
[
2
]
!=
0x01
)
&&
(
pPgnRecv
->
Data
[
2
]
!=
0x02
)))
TCUCommuStatus
.
PowerControlVaildValue
=
1
;
//数据合法性校验失败
else
{
TCUCommuStatus
.
PowerControlVaildValue
=
0
;
//数据合法性校验成功
TCUCommuStatus
.
PowerControltype
=
pPgnRecv
->
Data
[
1
];
TCUCommuStatus
.
PowerControlParam
=
pPgnRecv
->
Data
[
2
]
+
((
u16
)
pPgnRecv
->
Data
[
3
])
<<
8
;
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr
)
//a枪
if
(((
pPgnRecv
->
Data
[
1
]
!=
0x01
)
&&
(
pPgnRecv
->
Data
[
1
]
!=
0x02
))
||
((
pPgnRecv
->
Data
[
2
]
!=
0x01
)
&&
(
pPgnRecv
->
Data
[
2
]
!=
0x02
)))
TCUCommuStatus
.
PowerControlVaildValue
=
1
;
//数据合法性校验失败
else
{
TCUCommuStatus
.
PowerControlVaildValue
=
0
;
//数据合法性校验成功
TCUControlInfo
.
PowerControl_A
.
ControlType
=
pPgnRecv
->
Data
[
1
];
if
(
pPgnRecv
->
Data
[
1
]
==
01
)
...
...
@@ -1867,9 +1936,24 @@ void PowerControlAnalysis(StructTCUSend * pPgnRecv)
{
TCUControlInfo
.
PowerControl_A
.
Percentage
=
pPgnRecv
->
Data
[
3
];
}
}
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
//b枪
}
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
{
TCUCommuStatus_B
.
CommStage
=
PowerControlStage
;
TCUCommuStatus_B
.
PowerControltype
=
pPgnRecv
->
Data
[
1
];
TCUCommuStatus_B
.
PowerControlParam
=
pPgnRecv
->
Data
[
2
]
+
((
u16
)
pPgnRecv
->
Data
[
3
])
<<
8
;
if
(((
pPgnRecv
->
Data
[
1
]
!=
0x01
)
&&
(
pPgnRecv
->
Data
[
1
]
!=
0x02
))
||
((
pPgnRecv
->
Data
[
2
]
!=
0x01
)
&&
(
pPgnRecv
->
Data
[
2
]
!=
0x02
)))
TCUCommuStatus_B
.
PowerControlVaildValue
=
1
;
//数据合法性校验失败
else
{
TCUCommuStatus_B
.
PowerControlVaildValue
=
0
;
//数据合法性校验成功
TCUControlInfo
.
PowerControl_B
.
ControlType
=
pPgnRecv
->
Data
[
1
];
if
(
pPgnRecv
->
Data
[
1
]
==
01
)
...
...
@@ -1880,40 +1964,57 @@ void PowerControlAnalysis(StructTCUSend * pPgnRecv)
{
TCUControlInfo
.
PowerControl_B
.
Percentage
=
pPgnRecv
->
Data
[
3
];
}
}
}
}
void
PowerControlAck
(
void
)
void
PowerControlAck
(
u8
ChgNum
)
{
u8
Data
[
8
]
=
{
0
};
Data
[
0
]
=
0
;
//TCUCommuStatus.ChgNum;
Data
[
1
]
=
TCUCommuStatus
.
PowerControltype
;
Data
[
2
]
=
(
u8
)
TCUCommuStatus
.
PowerControlParam
;
Data
[
3
]
=
(
u8
)
(
TCUCommuStatus
.
PowerControlParam
>>
8
);
if
(
TCUCommuStatus
.
PowerControlVaildValue
==
0
)
{
Data
[
4
]
=
0
;
Data
[
5
]
=
0
;
}
else
{
Data
[
4
]
=
01
;
Data
[
5
]
=
TCUCommuStatus
.
PowerControlVaildValue
;
//失败
}
if
(
TCUCommuStatus
.
ChgNum
==
1
)
if
(
ChgNum
==
1
)
{
Data
[
0
]
=
0
;
Data
[
1
]
=
TCUCommuStatus
.
PowerControltype
;
Data
[
2
]
=
(
u8
)
TCUCommuStatus
.
PowerControlParam
;
Data
[
3
]
=
(
u8
)
(
TCUCommuStatus
.
PowerControlParam
>>
8
);
if
(
TCUCommuStatus
.
PowerControlVaildValue
==
0
)
{
Data
[
4
]
=
0
;
Data
[
5
]
=
0
;
}
else
{
Data
[
4
]
=
01
;
Data
[
5
]
=
TCUCommuStatus
.
PowerControlVaildValue
;
//失败
}
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_powerAck
,
4
,
ChargerCont1939Addr
);
}
else
if
(
TCUCommuStatus
.
ChgNum
==
2
)
else
if
(
ChgNum
==
2
)
{
Data
[
0
]
=
0
;
Data
[
1
]
=
TCUCommuStatus_B
.
PowerControltype
;
Data
[
2
]
=
TCUCommuStatus_B
.
PowerControlParam
;
Data
[
3
]
=
(
u8
)
(
TCUCommuStatus_B
.
PowerControlParam
>>
8
);
if
(
TCUCommuStatus_B
.
PowerControlVaildValue
==
0
)
{
Data
[
4
]
=
0
;
Data
[
5
]
=
0
;
}
else
{
Data
[
4
]
=
01
;
Data
[
5
]
=
TCUCommuStatus_B
.
PowerControlVaildValue
;
//失败
}
TCUSinglePackSendMsg
(
Data
,
8
,
eCmd_powerAck
,
4
,
ChargerCont1939Addr_B
);
}
}
...
...
@@ -2294,7 +2395,7 @@ void measuringReporting20_B(void)
}
void
ChgInfornQueryAck
(
void
)
void
ChgInfornQueryAck
(
u8
ChgNum
)
{
u8
len
=
0
;
u8
data
[
64
]
=
{
0
};
...
...
@@ -2322,11 +2423,11 @@ void ChgInfornQueryAck(void)
data
[
len
++
]
=
(
u8
)
(
4000
-
TCUControlInfo
.
DcMinCurrt
);
data
[
len
++
]
=
(
u8
)
((
4000
-
TCUControlInfo
.
DcMinCurrt
)
>>
8
);
if
(
TCUCommuStatus
.
ChgNum
==
1
)
if
(
ChgNum
==
1
)
{
TCUMultiPackSendMsg
(
data
,
len
,
eCmd_QueryAck
,
6
,
ChargerCont1939Addr
);
}
else
if
(
TCUCommuStatus
.
ChgNum
==
2
)
else
if
(
ChgNum
==
2
)
{
TCUMultiPackSendMsg
(
data
,
len
,
eCmd_QueryAck
,
6
,
ChargerCont1939Addr_B
);
}
...
...
@@ -2425,7 +2526,7 @@ void TCUMeasuRecv(StructTCUSend * pPgnRecv)
}
else
if
(
pPgnRecv
->
DA
==
ChargerCont1939Addr_B
)
{
TCUCommuStatus
.
DCMeasuErrCnt_B
=
0
;
TCUCommuStatus
_B
.
DCMeasuErrCnt
=
0
;
}
}
...
...
DcPillar/Src/Drivers/Drv_TCUComm.h
浏览文件 @
f0d59927
...
...
@@ -293,7 +293,7 @@ extern void StartMeg ( StructTCUSend* pPgnRecv );
extern
void
StartMegAck_A
(
void
);
extern
void
StartMegAck_B
(
void
);
extern
void
AckTCUHeartBeat
(
StructTCUSend
*
pPgnRecv
);
extern
void
TCUParamAck
(
void
);
extern
void
TCUParamAck
(
u8
);
extern
void
startCompSend_A
(
void
);
extern
void
startCompSend_B
(
void
);
...
...
@@ -308,22 +308,22 @@ extern void stopCompAck( StructTCUSend* pPgnRecv);
extern
void
TCUHeartBeat_A
(
void
);
extern
void
TCUHeartBeat_B
(
void
);
extern
void
TCUtimeSet
(
StructTCUSend
*
pPgnRecv
);
extern
void
TCUtimeSetAck
(
void
);
extern
void
TCUtimeSetAck
(
u8
);
extern
void
TCUVersionCheck
(
StructTCUSend
*
pPgnRecv
);
extern
void
TCUVersionCheckSent
(
void
);
extern
void
TCUVersionCheckSent
(
u8
);
extern
void
SerConAckAnalysis
(
StructTCUSend
*
pPgnRecv
);
extern
void
SerConAck
(
void
);
extern
void
SerConAck
(
u8
);
extern
void
ElectControlAnalysis
(
StructTCUSend
*
pPgnRecv
);
extern
void
ElectControlAck
(
void
);
extern
void
ElectControlAck
(
u8
);
extern
void
PowerControlAnalysis
(
StructTCUSend
*
pPgnRecv
);
extern
void
PowerControlAck
(
void
);
extern
void
PowerControlAck
(
u8
);
extern
void
InformationReporting_22_A
(
void
);
extern
void
InformationReporting_22_B
(
void
);
extern
void
InformationReporting_23_A
(
void
);
extern
void
InformationReporting_23_B
(
void
);
extern
void
measuringReporting20_A
(
void
);
extern
void
measuringReporting20_B
(
void
);
extern
void
ChgInfornQueryAck
(
void
);
extern
void
ChgInfornQueryAck
(
u8
);
extern
void
verification
(
void
);
extern
void
verificationAck
(
StructTCUSend
*
pPgnRecv
);
extern
void
TcuEMMsg
(
u16
data
);
...
...
DcPillar/Src/Thread/Thd_TCU.c
浏览文件 @
f0d59927
...
...
@@ -17,7 +17,6 @@ extern void TCUCanInit(void);
StructTCUCommuStatus
TCUCommuStatus
=
{
.
ChgNum
=
0
,
.
CommStage
=
HeartStage
,
.
ParamVaild
=
0
,
0
,
...
...
@@ -25,8 +24,7 @@ StructTCUCommuStatus TCUCommuStatus =
};
StructTCUCommuStatus
TCUCommuStatus_B
=
{
.
ChgNum
=
0
,
{
.
CommStage
=
HeartStage
,
.
ParamVaild
=
0
,
0
,
...
...
@@ -85,17 +83,15 @@ void TCURecvProcess(void)
break
;
case
eCmd_Query
:
// 充电桩配置信息查询帧
//TCUCommuStatus.ChgNum = pPgnRecv.Data[0];
if
(
pPgnRecv
.
DA
==
ChargerCont1939Addr
)
{
TCUCommuStatus
.
C
hgNum
=
1
;
TCUCommuStatus
.
C
ommStage
=
ChgInfornQueryStage
;
}
else
if
(
pPgnRecv
.
DA
==
ChargerCont1939Addr_B
)
{
TCUCommuStatus
.
ChgNum
=
2
;
TCUCommuStatus
_B
.
CommStage
=
ChgInfornQueryStage
;
}
TCUCommuStatus
.
CommStage
=
ChgInfornQueryStage
;
break
;
case
eCmd_verificationAck
:
//车辆验证应答帧
...
...
@@ -132,7 +128,6 @@ void TCURecvProcess(void)
}
void
InformationReporting
(
void
)
{
//遥信
...
...
@@ -140,11 +135,18 @@ void InformationReporting(void)
if
(
GetSystemTick
()
-
DCConInforSendTime
>=
500
)
{
DCConInforSendTime
=
GetSystemTick
();
InformationReporting_22_A
();
InformationReporting_23_A
();
InformationReporting_22_B
();
InformationReporting_23_B
();
if
(
TCUCommuStatus
.
VerChkVaild
)
//版本检验未完成不发送
{
InformationReporting_22_A
();
InformationReporting_23_A
();
}
if
(
TCUCommuStatus_B
.
VerChkVaild
)
//版本检验未完成不发送
{
InformationReporting_22_B
();
InformationReporting_23_B
();
}
}
}
...
...
@@ -156,34 +158,42 @@ void DCMeasuring_A(void)
if
((
GetSystemTick
()
-
DCMeasuRecvTime
)
>
1000
)
{
TCUCommuStatus
.
DCMeasuErrCnt
++
;
DCMeasuRecvTime
=
GetSystemTick
();
if
(
TCUCommuStatus
.
DCMeasuErrCnt
>
5
)
{
memset
(
&
TCUCommuStatus
,
0x00
,
sizeof
(
TCUCommuStatus
));
//通讯初始化
TCUCommuStatus
.
ConnectFlag
=
CONNECT_TIMEOUT
;
TCUCommuStatus
.
HeartBeatErrCnt
=
0
;
TCUCommuStatus
.
HeartBeatVaild
=
0
;
//心跳失效
TCUCanInit
();
//can通讯接口初始化
}
else
{
measuringReporting20_A
();
}
TCUCommuStatus
.
DCMeasuErrCnt_B
++
;
if
(
TCUCommuStatus
.
DCMeasuErrCnt_B
>
5
)
if
(
TCUCommuStatus
.
VerChkVaild
)
//版本检验未完成不发送
{
memset
(
&
TCUCommuStatus
,
0x00
,
sizeof
(
TCUCommuStatus
));
//通讯初始化
TCUCommuStatus
.
ConnectFlag
=
CONNECT_TIMEOUT
;
TCUCommuStatus
.
HeartBeatErrCnt
=
0
;
TCUCommuStatus
.
HeartBeatVaild
=
0
;
//心跳失效
TCUCanInit
();
TCUCommuStatus
.
DCMeasuErrCnt
++
;
if
(
TCUCommuStatus
.
DCMeasuErrCnt
>
5
)
{
memset
(
&
TCUCommuStatus
,
0x00
,
sizeof
(
TCUCommuStatus
));
//通讯初始化
TCUCommuStatus
.
ConnectFlag
=
CONNECT_TIMEOUT
;
TCUCommuStatus
.
HeartBeatErrCnt
=
0
;
TCUCommuStatus
.
HeartBeatVaild
=
0
;
//心跳失效
TCUCanInit
();
//can通讯接口初始化
}
else
{
measuringReporting20_A
();
}
}
else
if
(
TCUCommuStatus_B
.
VerChkVaild
)
//版本检验未完成不发送
{
measuringReporting20_B
();
TCUCommuStatus_B
.
DCMeasuErrCnt
++
;
if
(
TCUCommuStatus_B
.
DCMeasuErrCnt
>
5
)
{
memset
(
&
TCUCommuStatus_B
,
0x00
,
sizeof
(
TCUCommuStatus
));
//通讯初始化
TCUCommuStatus_B
.
ConnectFlag
=
CONNECT_TIMEOUT
;
TCUCommuStatus_B
.
HeartBeatErrCnt
=
0
;
TCUCommuStatus_B
.
HeartBeatVaild
=
0
;
//心跳失效
//TCUCanInit();
}
else
{
measuringReporting20_B
();
}
}
}
}
...
...
@@ -233,26 +243,26 @@ void ConEMSend(void)
}
}
if
(
TCUCommuStatus
.
ConEMSendFlag_B
==
1
)
if
(
TCUCommuStatus
_B
.
ConEMSendFlag
==
1
)
{
TcuEMMsg_B
(
TCUCommuStatus
.
ErrData_B
.
Mult
);
//帧超时
TcuEMMsg_B
(
TCUCommuStatus
_B
.
ErrData
.
Mult
);
//帧超时
ConEMSendTick_B
=
GetSystemTick
();
TCUCommuStatus
.
ConEMSendFlag_B
=
2
;
TCUCommuStatus
_B
.
ConEMSendFlag
=
2
;
}
else
if
(
TCUCommuStatus
.
ConEMSendFlag_B
==
2
)
else
if
(
TCUCommuStatus
_B
.
ConEMSendFlag
==
2
)
{
if
(
GetSystemTick
()
-
ConEMSendTick_B
>=
250
)
{
if
(
ConEMSendEcount_B
<
20
)
{
ConEMSendEcount_B
++
;
TcuEMMsg_B
(
TCUCommuStatus
.
ErrData_B
.
Mult
);
TcuEMMsg_B
(
TCUCommuStatus
_B
.
ErrData
.
Mult
);
}
else
{
ConEMSendTick_B
=
0
;
TCUCommuStatus
.
ConEMSendFlag_B
=
0
;
TCUCommuStatus
.
ErrData_B
.
Mult
=
0
;
TCUCommuStatus
_B
.
ConEMSendFlag
=
0
;
TCUCommuStatus
_B
.
ErrData
.
Mult
=
0
;
ConEMSendEcount_B
=
0
;
}
}
...
...
@@ -260,10 +270,10 @@ void ConEMSend(void)
else
{
ConEMSendTick_B
=
0
;
TCUCommuStatus
.
ConEMSendFlag_B
=
0
;
TCUCommuStatus
_B
.
ConEMSendFlag
=
0
;
if
(
TCUCurChgRecd_B
.
TCUChargeEnable
==
0
)
TCUCommuStatus
.
ErrData_B
.
Mult
=
0
;
//主动停机结束帧发送完成或主动TCU停机时置0
TCUCommuStatus
_B
.
ErrData
.
Mult
=
0
;
//主动停机结束帧发送完成或主动TCU停机时置0
ConEMSendEcount_B
=
0
;
}
...
...
@@ -275,6 +285,9 @@ void CommutionConfigurationStage(void)
static
EnumTCUCommStage
oldStage
;
static
u32
VersionRecvTime
=
0
;
static
u32
VersionSendTimes
=
0
;
static
EnumTCUCommStage
oldStage_B
;
static
u32
VersionRecvTime_B
=
0
;
static
u32
VersionSendTimes_B
=
0
;
if
(
TCUCommuStatus
.
CommStage
==
VersionStage
)
{
if
(
oldStage
!=
VersionStage
)
...
...
@@ -288,30 +301,52 @@ void CommutionConfigurationStage(void)
VersionSendTimes
++
;
if
(
VersionSendTimes
>
5000
/
500
)
{
if
(
TCUCommuStatus
.
ChgNum
==
1
)
{
TCUCommuStatus
.
ErrData
.
Value
.
Param
=
1
;
TCUCommuStatus
.
ConEMSendFlag
=
1
;
}
else
{
TCUCommuStatus
.
ErrData_B
.
Value
.
Param
=
1
;
TCUCommuStatus
.
ConEMSendFlag_B
=
1
;
}
TCUCommuStatus
.
ErrData
.
Value
.
Param
=
1
;
TCUCommuStatus
.
ConEMSendFlag
=
1
;
TCUCommuStatus
.
CommStage
=
HeartStage
;
}
else
{
TCUVersionCheckSent
();
TCUVersionCheckSent
(
1
);
}
}
}
if
(
TCUCommuStatus_B
.
CommStage
==
VersionStage
)
{
if
(
oldStage_B
!=
VersionStage
)
{
VersionRecvTime_B
=
0
;
VersionSendTimes_B
=
0
;
}
if
(
GetSystemTick
()
-
VersionRecvTime_B
>=
500
)
{
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
;
}
...
...
@@ -327,9 +362,6 @@ void TCUPillarHeartBeat(void)
TCUHeartBeat_A
();
TCUHeartBeat_B
();
TCUCommuStatus
.
HeartBeatErrCnt
++
;
if
(
TCUCommuStatus
.
HeartBeatErrCnt
>
5
)
...
...
@@ -338,22 +370,42 @@ void TCUPillarHeartBeat(void)
TCUCommuStatus
.
ConnectFlag
=
CONNECT_TIMEOUT
;
TCUCanInit
();
}
TCUHeartBeat_B
();
TCUCommuStatus_B
.
HeartBeatErrCnt
++
;
if
(
TCUCommuStatus_B
.
HeartBeatErrCnt
>
5
)
{
memset
(
&
TCUCommuStatus_B
,
0x00
,
sizeof
(
TCUCommuStatus
));
//通讯初始化
TCUCommuStatus_B
.
ConnectFlag
=
CONNECT_TIMEOUT
;
//TCUCanInit();
}
}
void
CommutionRunStage
(
void
)
{
static
EnumTCUCommStage
oldStage
;
static
u32
sendTick
=
0
;
static
u8
sendTimes
=
0
;
static
EnumTCUCommStage
oldStage_B
;
static
u32
sendTick_B
=
0
;
static
u8
sendTimes_B
=
0
;
if
(
oldStage
!=
TCUCommuStatus
.
CommStage
)
{
sendTick
=
0
;
sendTimes
=
0
;
}
if
(
oldStage_B
!=
TCUCommuStatus_B
.
CommStage
)
{
sendTick_B
=
0
;
sendTimes_B
=
0
;
}
if
((
TCUCommuStatus
.
CommStage
==
ChageParamStage
))
{
...
...
@@ -367,7 +419,24 @@ void CommutionRunStage(void)
}
else
{
TCUParamAck
();
TCUParamAck
(
1
);
}
}
}
if
((
TCUCommuStatus_B
.
CommStage
==
ChageParamStage
))
{
if
(
GetSystemTick
()
-
sendTick_B
>=
500
)
{
sendTick_B
=
GetSystemTick
();
sendTimes_B
++
;
if
(
sendTimes_B
>
2000
/
500
)
{
TCUCommuStatus_B
.
CommStage
=
HeartStage
;
}
else
{
TCUParamAck
(
2
);
}
}
}
...
...
@@ -384,11 +453,26 @@ void CommutionRunStage(void)
}
else
{
TCUtimeSetAck
();
TCUtimeSetAck
(
1
);
}
}
}
if
((
TCUCommuStatus_B
.
CommStage
==
TimeStage
))
{
if
(
GetSystemTick
()
-
sendTick_B
>=
500
)
{
sendTimes_B
++
;
sendTick_B
=
GetSystemTick
();
if
(
sendTimes_B
>
2000
/
500
)
{
TCUCommuStatus_B
.
CommStage
=
HeartStage
;
}
else
{
TCUtimeSetAck
(
2
);
}
}
}
if
((
TCUCommuStatus
.
CommStage
==
ServiceContralStage
))
...
...
@@ -403,7 +487,25 @@ void CommutionRunStage(void)
}
else
{
SerConAck
();
SerConAck
(
1
);
}
}
}
if
((
TCUCommuStatus_B
.
CommStage
==
ServiceContralStage
))
{
if
(
GetSystemTick
()
-
sendTick_B
>=
500
)
{
sendTimes_B
++
;
sendTick_B
=
GetSystemTick
();
if
(
sendTimes_B
>
2000
/
500
)
{
TCUCommuStatus_B
.
CommStage
=
HeartStage
;
}
else
{
SerConAck
(
2
);
}
}
...
...
@@ -421,7 +523,24 @@ void CommutionRunStage(void)
}
else
{
ElectControlAck
();
ElectControlAck
(
1
);
}
}
}
if
((
TCUCommuStatus_B
.
CommStage
==
ElectLockStage
))
{
if
(
GetSystemTick
()
-
sendTick_B
>=
500
)
{
sendTimes_B
++
;
sendTick_B
=
GetSystemTick
();
if
(
sendTimes
>
2000
/
500
)
{
TCUCommuStatus_B
.
CommStage
=
HeartStage
;
}
else
{
ElectControlAck
(
2
);
}
}
}
...
...
@@ -438,12 +557,30 @@ void CommutionRunStage(void)
}
else
{
PowerControlAck
();
PowerControlAck
(
1
);
}
}
}
if
((
TCUCommuStatus_B
.
CommStage
==
PowerControlStage
))
{
if
(
GetSystemTick
()
-
sendTick_B
>=
500
)
{
sendTimes_B
++
;
sendTick_B
=
GetSystemTick
();
if
(
sendTimes_B
>
2000
/
500
)
{
TCUCommuStatus_B
.
CommStage
=
HeartStage
;
}
else
{
PowerControlAck
(
2
);
}
}
}
if
((
TCUCommuStatus
.
CommStage
==
ChgInfornQueryStage
))
{
if
(
GetSystemTick
()
-
sendTick
>=
500
)
...
...
@@ -456,13 +593,32 @@ void CommutionRunStage(void)
}
else
{
ChgInfornQueryAck
();
ChgInfornQueryAck
(
1
);
}
}
}
if
((
TCUCommuStatus_B
.
CommStage
==
ChgInfornQueryStage
))
{
if
(
GetSystemTick
()
-
sendTick_B
>=
500
)
{
sendTimes_B
++
;
sendTick_B
=
GetSystemTick
();
if
(
sendTimes_B
>
2000
/
500
)
{
TCUCommuStatus_B
.
CommStage
=
HeartStage
;
}
else
{
ChgInfornQueryAck
(
2
);
}
}
}
oldStage
=
TCUCommuStatus
.
CommStage
;
oldStage_B
=
TCUCommuStatus_B
.
CommStage
;
}
...
...
@@ -514,12 +670,12 @@ void TCUCurChgRecordInterface_A(void)
if
(
ChgRecordSendErr
<
20
)
//超时5S
{
//超时小于20次
startCompSend_
B
();
startCompSend_
A
();
ChgRecordSendTick
=
GetSystemTick
();
}
else
{
//超时大于,保存
TCUCommuStatus
.
ConEMSendFlag
_B
=
1
;
//错误帧发送
TCUCommuStatus
.
ConEMSendFlag
=
1
;
//错误帧发送
TCUCommuStatus
.
ErrData
.
Value
.
startCompAck
=
1
;
TCUCurChgRecd
.
TCUChgStarCompNotetrl
=
3
;
...
...
@@ -528,11 +684,11 @@ void TCUCurChgRecordInterface_A(void)
}
}
}
else
if
(
TCUCurChgRecd
_B
.
TCUChgStarCompNotetrl
==
3
)
else
if
(
TCUCurChgRecd
.
TCUChgStarCompNotetrl
==
3
)
{
TCUCurChgRecd
_B
.
TCUStartCompresult
=
0
;
//
TCUCurChgRecd
_B
.
TCUChargeEnable
=
0
;
//归零
TCUCurChgRecd
_B
.
StarChgType
=
0
;
TCUCurChgRecd
.
TCUStartCompresult
=
0
;
//
TCUCurChgRecd
.
TCUChargeEnable
=
0
;
//归零
TCUCurChgRecd
.
StarChgType
=
0
;
ChgStartCompSendEcount
=
0
;
}
else
if
(
TCUCurChgRecd
.
TCUChgStopNotetrl
==
1
)
//停止帧逻辑
...
...
@@ -649,8 +805,8 @@ void TCUCurChgRecordInterface_B(void)
}
else
{
//超时大于,保存
TCUCommuStatus
.
ConEMSendFlag_B
=
1
;
//错误帧发送
TCUCommuStatus
.
ErrData_B
.
Value
.
startCompAck
=
1
;
TCUCommuStatus
_B
.
ConEMSendFlag
=
1
;
//错误帧发送
TCUCommuStatus
_B
.
ErrData
.
Value
.
startCompAck
=
1
;
TCUCurChgRecd_B
.
TCUChargeEnable
=
0
;
//超时停机
TCUCurChgRecd_B
.
TCUChgStarCompNotetrl
=
3
;
ChgStartCompSendEcount
=
0
;
...
...
@@ -706,8 +862,8 @@ void TCUCurChgRecordInterface_B(void)
}
else
{
//超时大于,保存
TCUCommuStatus
.
ConEMSendFlag_B
=
1
;
//错误帧发送
TCUCommuStatus
.
ErrData_B
.
Value
.
stopCompAck
=
1
;
TCUCommuStatus
_B
.
ConEMSendFlag
=
1
;
//错误帧发送
TCUCommuStatus
_B
.
ErrData
.
Value
.
stopCompAck
=
1
;
TCUCurChgRecd_B
.
TCUChgStopCompNotetrl
=
3
;
ChgRecordSendErr
=
0
;
}
...
...
@@ -879,17 +1035,23 @@ void SendStatus(void)
{
static
u32
ChgStutusSendTick
=
0
;
u8
data
[
8
]
=
{
0
};
if
(
TCUCommuStatus
.
ConnectFlag
==
CONNECT_TIMEOUT
)
return
;
if
((
GetSystemTick
()
-
ChgStutusSendTick
)
>
(
500
))
{
ChgStutusSendTick
=
GetSystemTick
();
data
[
0
]
=
0
;
data
[
1
]
=
TcuGetChgStatus
();
TCUSinglePackSendMsg
(
data
,
8
,
eCmd_status
,
4
,
ChargerCont1939Addr
);
data
[
1
]
=
TcuGetChgStatus_B
();
TCUSinglePackSendMsg
(
data
,
8
,
eCmd_status
,
4
,
ChargerCont1939Addr_B
);
if
(
TCUCommuStatus
.
ConnectFlag
==
CONNECT_NORMAL
)
{
data
[
1
]
=
TcuGetChgStatus
();
TCUSinglePackSendMsg
(
data
,
8
,
eCmd_status
,
4
,
ChargerCont1939Addr
);
}
if
(
TCUCommuStatus_B
.
ConnectFlag
==
CONNECT_NORMAL
)
{
data
[
1
]
=
TcuGetChgStatus_B
();
TCUSinglePackSendMsg
(
data
,
8
,
eCmd_status
,
4
,
ChargerCont1939Addr_B
);
}
}
}
...
...
@@ -902,8 +1064,8 @@ void TCUChgStarStopProcess(void) //充电流启停程逻辑
void
TCUWorkProcess
(
void
)
{
if
(
TCUCommuStatus
.
VerChkVaild
==
0
)
//版本检验未完成不发送
return
;
//
if (TCUCommuStatus.VerChkVaild == 0) //版本检验未完成不发送
//
return;
InformationReporting
();
//遥信
DCMeasuring_A
();
//遥测
...
...
DcPillar/Src/Thread/Thd_TCU.h
浏览文件 @
f0d59927
...
...
@@ -43,7 +43,7 @@ typedef union
typedef
struct
{
EnumTCUCommStage
CommStage
;
u8
ChgNum
;
u8
VerChkVaild
;
u8
ParamVaild
;
...
...
@@ -61,18 +61,14 @@ typedef struct
u8
ConnectFlag
;
//0 未连接 其他已连接
u8
HeartBeatVaild
;
//接收心跳有效标志位
u8
HeartBeatErrCnt
;
u8
HeartBeatErrCnt_B
;
u16
HeartBeatNumCnt
;
u16
HeartBeatLoseCnt
;
u32
DCMeasuErrCnt
;
u32
DCMeasuErrCnt_B
;
UnionConEM
ErrData
;
UnionConEM
ErrData_B
;
u8
ConEMSendFlag
;
u8
ConEMSendFlag_B
;
}
StructTCUCommuStatus
;
...
...
@@ -89,6 +85,7 @@ typedef struct
extern
StructTCUCommuStatus
TCUCommuStatus
;
extern
StructTCUCommuStatus
TCUCommuStatus_B
;
extern
void
TCUComm
(
void
const
*
argument
);
#endif
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论