提交 5dd57d55 作者: wysheng

根据小桔反馈增加上报信息

上级 e12903e0
...@@ -721,15 +721,8 @@ void StartMeg(StructTCUSend * pPgnRecv) ...@@ -721,15 +721,8 @@ void StartMeg(StructTCUSend * pPgnRecv)
/* /*
00H:成功 00H:成功
0CH:烟感故障 0CH:烟感故障
0DH:充电桩过温故障(一体式充电桩内部过温故障保护,分体式充电桩充电机柜内部过温� 13H:输入高压断路器故障
��障保护或充电桩内部过温故障保护)
0EH:充电接口过温故障
14H:输入高压接触器拒动/误动故障
15H:输入高压接触器粘连故障
16H:输出高压接触器拒动/误动故障
18H:输出高压熔断器故障 18H:输出高压熔断器故障
19H:并联接触器拒动/误动故障(仅直流桩使用)
1BH:泄放回路故障
1CH:辅助电源故障(仅直流桩使用) 1CH:辅助电源故障(仅直流桩使用)
20H:输出电压欠压故障 20H:输出电压欠压故障
23H:无空余充电机模块可用(仅限具备功率分配功能的直流充电桩使用) 23H:无空余充电机模块可用(仅限具备功率分配功能的直流充电桩使用)
...@@ -740,7 +733,6 @@ void StartMeg(StructTCUSend * pPgnRecv) ...@@ -740,7 +733,6 @@ void StartMeg(StructTCUSend * pPgnRecv)
28H:直流充电主控模块与功率控制模块通信超时(仅直流桩使用) 28H:直流充电主控模块与功率控制模块通信超时(仅直流桩使用)
29H:功率控制模块与开关模块通信超时(仅直流桩使用) 29H:功率控制模块与开关模块通信超时(仅直流桩使用)
2AH:开关模块故障(仅直流桩使用) 2AH:开关模块故障(仅直流桩使用)
2BH:绝缘监测仪通信故障
2CH:环境监控板通信故障 2CH:环境监控板通信故障
2DH:灯板通信故障 2DH:灯板通信故障
2EH: 电能表通信故障 2EH: 电能表通信故障
...@@ -770,22 +762,34 @@ u8 AllowDTUStartCharge(u8 * Reason) ...@@ -770,22 +762,34 @@ u8 AllowDTUStartCharge(u8 * Reason)
*Reason = 0x0A; //0AH:门禁故障(充电桩) *Reason = 0x0A; //0AH:门禁故障(充电桩)
else if (PillarError.Value.SPD == 1) else if (PillarError.Value.SPD == 1)
*Reason = 0x0B; //0BH:避雷器故障 *Reason = 0x0B; //0BH:避雷器故障
else if (ChargeError.Value.TempError == 1)
*Reason = 0x0D; //0DH:充电桩过温故障
else if (ChargeError.Value.GunTempError == 1)
*Reason = 0x0E; //0EH:充电接口过温故障
else if (PillarError.Value.EleLock == 1) else if (PillarError.Value.EleLock == 1)
*Reason = 0x0F; //0FH:充电接口电子锁故障 *Reason = 0x0F; //0FH:充电接口电子锁故障
else if ((PillarError.Value.Insulation == 1) || (PillarError.Value.ImdDev == 1)) else if (PillarError.Value.Insulation == 1)
*Reason = 0x010; //10H:绝缘监测故障(仅直流桩使用) *Reason = 0x010; //10H:绝缘监测故障(仅直流桩使用)
else if (ChargeStopType == eChgStop_PillarReady_BatVoltError) else if (ChargeStopType == eChgStop_PillarReady_BatVoltError)
*Reason = 0x11; //11H:电池极性反接故障(仅直流桩使用) *Reason = 0x11; //11H:电池极性反接故障(仅直流桩使用)
else if ((ChargeStopType == eChgStop_Imd_BhmTimeOut) || (ChargeStopType == eChgStop_ComBreak_CommError)) else if ((ChargeStopType == eChgStop_Imd_BhmTimeOut) || (ChargeStopType == eChgStop_ComBreak_CommError))
*Reason = 0x12; //12H:BMS通信超时故障(仅直流桩使用)备注:还未进入自检阶段,实际不存在此失败原因 *Reason = 0x12; //12H:BMS通信超时故障(仅直流桩使用)备注:还未进入自检阶段,实际不存在此失败原因
else if (PillarError.Value.ACContactor == 1) else if (PillarError.Value.ACContactor1 == 1)
*Reason = 0x13; //13H:输入高压断路器故障 *Reason = 0x14; //14H:输入高压接触器拒动/误动故障
else if (PillarError.Value.Contactor) else if (PillarError.Value.ACContactor2 == 1)
*Reason = 0x15; //15H:输入高压接触器粘连故障
else if (PillarError.Value.Contactor1)
*Reason = 0x16; //16H:输出高压接触器拒动/误动故障
else if (PillarError.Value.Contactor2)
*Reason = 0x17; //17H:输出高压接触器粘连故障 *Reason = 0x17; //17H:输出高压接触器粘连故障
else if (PillarError.Value.UniContactor) else if (PillarError.Value.UniContactor1)
*Reason = 0x19; //19H:并联接触器拒动/误动故障(仅直流桩使用)
else if (PillarError.Value.UniContactor2)
*Reason = 0x1A; //1AH:并联接触器粘连故障(仅直流桩使用) *Reason = 0x1A; //1AH:并联接触器粘连故障(仅直流桩使用)
else if (PillarError.Value.DCmodError) else if (PillarError.Value.DCmodError)
*Reason = 0x1D; //1DH:充电机模块故障 *Reason = 0x1D; //1DH:充电机模块故障
else if (ChargeError.Value.DrainError == 1)
*Reason = 0x1B; //1BH:泄放回路故障
else if (PillarError.Value.InVolt) else if (PillarError.Value.InVolt)
*Reason = 0x1E; //1EH:输入电源故障(交流输入电压过压故障、交流输入电压欠压故障、交流输入缺相故障、交流输入电流过流故障等) *Reason = 0x1E; //1EH:输入电源故障(交流输入电压过压故障、交流输入电压欠压故障、交流输入缺相故障、交流输入电流过流故障等)
else if (PillarError.Value.OutVolt) else if (PillarError.Value.OutVolt)
...@@ -794,6 +798,8 @@ u8 AllowDTUStartCharge(u8 * Reason) ...@@ -794,6 +798,8 @@ u8 AllowDTUStartCharge(u8 * Reason)
*Reason = 0x21; //21H:输出电流过流故障 *Reason = 0x21; //21H:输出电流过流故障
else if (ChargeStopType == eChgStop_Imd_Short) else if (ChargeStopType == eChgStop_Imd_Short)
*Reason = 0x22; //22H:输出短路故障 *Reason = 0x22; //22H:输出短路故障
else if(PillarError.Value.ImdDev == 1)
*Reason = 0x2B; //2BH:绝缘监测仪通信故障
else else
{ {
*Reason = 0x00; *Reason = 0x00;
...@@ -810,49 +816,65 @@ u8 AllowDTUStartCharge(u8 * Reason) ...@@ -810,49 +816,65 @@ u8 AllowDTUStartCharge(u8 * Reason)
u8 AllowDTUStartCharge_B(u8 * Reason) u8 AllowDTUStartCharge_B(u8 * Reason)
{ {
if (TCUCurChgRecd_B.StarValid == 0) if (TCUCurChgRecd_B.StarValid == 0)
*Reason = 0x01; *Reason = 0x01; //数据合法性校验失败(“充电启动帧”中“负荷控制开关”等数据项合法性校验失败)
else if (TCUCommuStatus_B.ConnectFlag == CONNECT_TIMEOUT) else if (TCUCommuStatus_B.ConnectFlag == CONNECT_TIMEOUT)
*Reason = 0x02; *Reason = 0x02; //充电控制器与计费控制单元通讯超时(“计费控制单元心跳帧”接收超时)
else if (TCUCommuStatus_B.VerChkVaild == 0) else if (TCUCommuStatus_B.VerChkVaild == 0)
*Reason = 0x03; *Reason = 0x03; //03H:充电控制器与计费控制单元“版本校验”未完成
else if (TCUCommuStatus_B.ParamVaild == 0) else if (TCUCommuStatus_B.ParamVaild == 0)
*Reason = 0x05; *Reason = 0x04; //04H:充电控制器与计费控制单元“下发充电参数”未完成
else if (TCUControlInfo.ChargingServiceFlag == 0x01) //服务暂停
*Reason = 0x05; //05H:充电桩暂停服务(参见9.7节 充电服务启停控制)
else if (ChargeCtrl_B.CurProcess != eChgPro_B_ChgIdle) else if (ChargeCtrl_B.CurProcess != eChgPro_B_ChgIdle)
*Reason = 0x06; *Reason = 0x06; //06H:充电桩处于“工作”状态
else if (ChargePauseFlag_B == 1) else if (ChargePauseFlag_B == 1) //充电暂停
*Reason = 0x07; *Reason = 0x07; //07H:充电桩处于“暂停”状态(参见GB/T 27930-2015中10.3.3和10.3.4小节)
else if (eSwSta_On != CcStatusRead_B()) else if (eSwSta_On != CcStatusRead_B())
*Reason = 0x08; *Reason = 0x08; //08H:充电桩与车辆处于未连接状态
else if (PillarError_B.Value.Emergency == 1) else if (PillarError_B.Value.Emergency == 1)
*Reason = 0x09; *Reason = 0x09; //09H:急停按钮动作故障
else if (PillarError_B.Value.Door == 1) else if (PillarError_B.Value.Door == 1)
*Reason = 0x0A; *Reason = 0x0A; //0AH:门禁故障(充电桩)
else if (PillarError_B.Value.SPD == 1) else if (PillarError_B.Value.SPD == 1)
*Reason = 0x0B; *Reason = 0x0B; //0BH:避雷器故障
else if (PillarError_B.Value.EleLock == 1) else if (ChargeError_B.Value.TempError == 1)
*Reason = 0x0F; *Reason = 0x0D; //0DH:充电桩过温故障
else if ((PillarError_B.Value.Insulation == 1) || (PillarError_B.Value.ImdDev == 1)) else if (ChargeError_B.Value.GunTempError == 1)
*Reason = 0x010; *Reason = 0x0E; //0EH:充电接口过温故障
else if (PillarError.Value.EleLock == 1)
*Reason = 0x0F; //0FH:充电接口电子锁故障
else if (PillarError_B.Value.Insulation == 1)
*Reason = 0x010; //10H:绝缘监测故障(仅直流桩使用)
else if (ChargeStopType_B == eChgStop_PillarReady_BatVoltError) else if (ChargeStopType_B == eChgStop_PillarReady_BatVoltError)
*Reason = 0x11; *Reason = 0x11; //11H:电池极性反接故障(仅直流桩使用)
else if ((ChargeStopType_B == eChgStop_Imd_BhmTimeOut) || (ChargeStopType_B == eChgStop_ComBreak_CommError)) else if ((ChargeStopType_B == eChgStop_Imd_BhmTimeOut) || (ChargeStopType_B == eChgStop_ComBreak_CommError))
*Reason = 0x12; *Reason = 0x12; //12H:BMS通信超时故障(仅直流桩使用)备注:还未进入自检阶段,实际不存在此失败原因
else if (PillarError_B.Value.ACContactor == 1) else if (PillarError_B.Value.ACContactor1 == 1)
*Reason = 0x13; *Reason = 0x14; //14H:输入高压接触器拒动/误动故障
else if (PillarError_B.Value.Contactor) else if (PillarError_B.Value.ACContactor2 == 1)
*Reason = 0x17; *Reason = 0x15; //15H:输入高压接触器粘连故障
else if (PillarError_B.Value.UniContactor) else if (PillarError_B.Value.Contactor1)
*Reason = 0x1A; *Reason = 0x16; //16H:输出高压接触器拒动/误动故障
else if (PillarError_B.Value.Contactor2)
*Reason = 0x17; //17H:输出高压接触器粘连故障
else if (PillarError_B.Value.UniContactor1)
*Reason = 0x19; //19H:并联接触器拒动/误动故障(仅直流桩使用)
else if (PillarError_B.Value.UniContactor2)
*Reason = 0x1A; //1AH:并联接触器粘连故障(仅直流桩使用)
else if (PillarError_B.Value.DCmodError) else if (PillarError_B.Value.DCmodError)
*Reason = 0x1D; *Reason = 0x1D; //1DH:充电机模块故障
else if (ChargeError_B.Value.DrainError == 1)
*Reason = 0x1B; //1BH:泄放回路故障
else if (PillarError_B.Value.InVolt) else if (PillarError_B.Value.InVolt)
*Reason = 0x1E; *Reason = 0x1E; //1EH:输入电源故障(交流输入电压过压故障、交流输入电压欠压故障、交流输入缺相故障、交流输入电流过流故障等)
else if (PillarError_B.Value.OutVolt) else if (PillarError_B.Value.OutVolt)
*Reason = 0x1F; *Reason = 0x1F; //1FH:输出电压过压故障
else if (PillarError_B.Value.OutCurrt) else if (PillarError_B.Value.OutCurrt)
*Reason = 0x21; *Reason = 0x21; //21H:输出电流过流故障
else if (ChargeStopType_B == eChgStop_Imd_Short) else if (ChargeStopType_B == eChgStop_Imd_Short)
*Reason = 0x22; *Reason = 0x22; //22H:输出短路故障
else if(PillarError_B.Value.ImdDev == 1)
*Reason = 0x2B; //2BH:绝缘监测仪通信故障
else else
{ {
*Reason = 0x00; *Reason = 0x00;
...@@ -920,23 +942,14 @@ void StartMegAck_B(void) ...@@ -920,23 +942,14 @@ void StartMegAck_B(void)
00H:成功 00H:成功
01H:充电中控制导引故障 01H:充电中控制导引故障
06H:烟感故障 06H:烟感故障
08H:交流输入接触器拒动/误动故障 07H:交流输入断路器故障
09H:交流输入接触器粘连故障
0BH:充电桩过温故障
0CH:充电接口过温故障
10H:直流输出接触器拒动/误动故障
12H:直流输出熔断器故障 12H:直流输出熔断器故障
13H:并联接触器拒动/误动故障
15H:泄放回路故障
16H:辅助电源故障 16H:辅助电源故障
19H:直流母线输出电压欠压故障 19H:直流母线输出电压欠压故障
21H:电池端电压大于电池最高允许充电电压
23H:BRM 报文数据项异常(报文数据长度错误,BMS 通信协议版本号错误,其他数据错误) 23H:BRM 报文数据项异常(报文数据长度错误,BMS 通信协议版本号错误,其他数据错误)
25H:BCP 报文数据项异常(报文数据长度错误,电池当前电压越限,其他数据项错误) 25H:BCP 报文数据项异常(报文数据长度错误,电池当前电压越限,其他数据项错误)
26H:BRO 报文(0x00)接收超时 26H:BRO 报文(0x00)接收超时
28H:预留 28H:预留
2BH:门禁故障(充电机柜,仅直流桩使用) 2BH:门禁故障(充电机柜,仅直流桩使用)
2CH:水浸故障(充电桩) 2CH:水浸故障(充电桩)
2DH:水浸故障(充电机柜,仅直流桩使用) 2DH:水浸故障(充电机柜,仅直流桩使用)
...@@ -944,7 +957,6 @@ void StartMegAck_B(void) ...@@ -944,7 +957,6 @@ void StartMegAck_B(void)
2FH:功率控制模块与开关模块通信超时(仅直流桩使用) 2FH:功率控制模块与开关模块通信超时(仅直流桩使用)
30H:开关模块故障(仅直流桩使用) 30H:开关模块故障(仅直流桩使用)
31H:BMS通信协议版本不匹配 31H:BMS通信协议版本不匹配
32H:绝缘监测仪通信故障
33H:设备自检超时 33H:设备自检超时
34H:预充功率分配超时 34H:预充功率分配超时
36H:启动充电超时(收到启动命令开始120秒未进入充电阶段) 36H:启动充电超时(收到启动命令开始120秒未进入充电阶段)
...@@ -972,20 +984,32 @@ u8 AllowDTUStartCompCharge(u8 * Reason) ...@@ -972,20 +984,32 @@ u8 AllowDTUStartCompCharge(u8 * Reason)
*Reason = 0x04; //04H:门禁故障(充电桩) *Reason = 0x04; //04H:门禁故障(充电桩)
else if (PillarError.Value.SPD == 1) else if (PillarError.Value.SPD == 1)
*Reason = 0x05; //05H:避雷器故障 *Reason = 0x05; //05H:避雷器故障
else if (PillarError.Value.ACContactor == 1) else if (PillarError.Value.ACContactor1 == 1)
*Reason = 0x08; //07H:交流输入断路器故障 *Reason = 0x08; //08H:交流输入接触器拒动/误动故障
else if (PillarError.Value.ACContactor2 == 1)
*Reason = 0x09; //09H:交流输入接触器粘连故障
else if (PillarError.Value.InVolt == 1) else if (PillarError.Value.InVolt == 1)
*Reason = 0x0A; //0AH:交流输入故障(过压,欠压,缺相,过流) *Reason = 0x0A; //0AH:交流输入故障(过压,欠压,缺相,过流)
else if (PillarError.Value.EleLock == 1) else if (PillarError.Value.EleLock == 1)
*Reason = 0x0D; //0DH:充电接口电子锁故障 *Reason = 0x0D; //0DH:充电接口电子锁故障
else if ((PillarError.Value.Insulation == 1) || (PillarError.Value.ImdDev == 1)) else if (PillarError.Value.Insulation == 1)
*Reason = 0x0E; //0EH:绝缘监测故障 *Reason = 0x0E; //0EH:绝缘监测故障
else if (ChargeStopType == eChgStop_PillarReady_BatVoltError) else if (ChargeStopType == eChgStop_PillarReady_BatVoltError)
*Reason = 0x0F; //0FH:电池极性反接故障 *Reason = 0x0F; //0FH:电池极性反接故障
else if (PillarError.Value.Contactor) else if (ChargeError.Value.TempError)
*Reason = 0x0B;//0BH:充电桩过温故障
else if (ChargeError.Value.GunTempError)
*Reason = 0x0C;//0CH:充电接口过温故障
else if (PillarError.Value.Contactor1)
*Reason = 0x10;//10H:直流输出接触器拒动/误动故障
else if (PillarError.Value.Contactor2)
*Reason = 0x11; //11H:直流输出接触器粘连故障 *Reason = 0x11; //11H:直流输出接触器粘连故障
else if (PillarError.Value.UniContactor) else if (PillarError.Value.UniContactor1)
*Reason = 0x13; //13H:并联接触器拒动/误动故障
else if (PillarError.Value.UniContactor2)
*Reason = 0x14; //14H:并联接触器粘连故障 *Reason = 0x14; //14H:并联接触器粘连故障
else if (ChargeError.Value.DrainError)
*Reason = 0x15;//15H:泄放回路故障
else if (PillarError.Value.DCmodError) else if (PillarError.Value.DCmodError)
*Reason = 0x17; //17H:充电机模块故障 *Reason = 0x17; //17H:充电机模块故障
else if (PillarError.Value.OutVolt) else if (PillarError.Value.OutVolt)
...@@ -1006,20 +1030,26 @@ u8 AllowDTUStartCompCharge(u8 * Reason) ...@@ -1006,20 +1030,26 @@ u8 AllowDTUStartCompCharge(u8 * Reason)
*Reason = 0x1f; //1FH:启动充电前直流输出接触器外侧电压小于充电机最小输出电压 *Reason = 0x1f; //1FH:启动充电前直流输出接触器外侧电压小于充电机最小输出电压
else if(ChargeStopType == eChgStop_Conf_StartVoltOverPillarMax) else if(ChargeStopType == eChgStop_Conf_StartVoltOverPillarMax)
*Reason = 0x20;//20H:启动充电前直流输出接触器外侧电压大于充电机最大输出电压 *Reason = 0x20;//20H:启动充电前直流输出接触器外侧电压大于充电机最大输出电压
else if(ChargeStopType == eChgStop_Conf_BatVoltOverPermitMax)
*Reason = 0x21;//21H:电池端电压大于电池最高允许充电电压
else if (CemMsg.Cem.Value.Brm == 1) else if (CemMsg.Cem.Value.Brm == 1)
*Reason = 0x22; //22H:BRM 报文接收超时 *Reason = 0x22; //22H:BRM 报文接收超时
else if (CemMsg.Cem.Value.Bcp == 1) else if (CemMsg.Cem.Value.Bcp == 1)
*Reason = 0x24; //24H:BCP 报文接收超时 *Reason = 0x24; //24H:BCP 报文接收超时
else if (ChargeError.Value.Bcp)
*Reason = 0x25;//25H:BCP 报文数据项异常
else if (CemMsg.Cem.Value.Bro == 1) else if (CemMsg.Cem.Value.Bro == 1)
*Reason = 0x27; //27H:BRO 报文(0xAA)接收超时 *Reason = 0x27; //27H:BRO 报文(0xAA)接收超时
//else if ((CemMsg.Cem.Value.Bro != 0) || (ChargeStopType != 0))
// *Reason = 0x28;
else if (CemMsg.Cem.Value.Bcl == 1) else if (CemMsg.Cem.Value.Bcl == 1)
*Reason = 0x29; //29H:BCL报文接收超时 *Reason = 0x29; //29H:BCL报文接收超时
else if (CemMsg.Cem.Value.Bcs == 1) else if (CemMsg.Cem.Value.Bcs == 1)
*Reason = 0x2A; //2AH:BCS报文接收超时 *Reason = 0x2A; //2AH:BCS报文接收超时
else if(PillarError.Value.ImdDev == 1)
*Reason = 0x32; //32H:绝缘监测仪通信故障
else if(ChargeStopType == eChgStop_PillarReady_NoVolt) else if(ChargeStopType == eChgStop_PillarReady_NoVolt)
*Reason = 0x35;//35H:预充阶段调压失败 *Reason = 0x35;//35H:预充阶段调压失败
else if (ChargeError.Value.DCMoudleOnTimeOut)
*Reason = 0x37;//37H:充电模块开机超时
else if ((VerificaInfo.result == 1) && (StartMeg_A.StarChgType == 1)) else if ((VerificaInfo.result == 1) && (StartMeg_A.StarChgType == 1))
*Reason = 0x3F; //3DH: 车辆验证确认帧超时 *Reason = 0x3F; //3DH: 车辆验证确认帧超时
else if (TCUCommuStatus.ErrData.Value.verificationAck == 1) else if (TCUCommuStatus.ErrData.Value.verificationAck == 1)
...@@ -1027,7 +1057,7 @@ u8 AllowDTUStartCompCharge(u8 * Reason) ...@@ -1027,7 +1057,7 @@ u8 AllowDTUStartCompCharge(u8 * Reason)
else if (TCUCurChgRecd.TCUStartCompresult == 2) else if (TCUCurChgRecd.TCUStartCompresult == 2)
*Reason = 0x01; //控制导引故障 *Reason = 0x01; //控制导引故障
else else
* Reason = 0xFF; //其他故障 *Reason = 0xFF; //其他故障
return FALSE; return FALSE;
} }
...@@ -1041,71 +1071,90 @@ u8 AllowDTUStartCompCharge_B(u8 * Reason) ...@@ -1041,71 +1071,90 @@ u8 AllowDTUStartCompCharge_B(u8 * Reason)
return TRUE; return TRUE;
} }
else if (TCUCommuStatus_B.ConnectFlag == CONNECT_TIMEOUT) else if (TCUCommuStatus_B.ConnectFlag == CONNECT_TIMEOUT)
*Reason = 0x02; //通讯超时 *Reason = 0x02; //充电控制器与计费控制单元通讯超时
else if (PillarError_B.Value.Emergency == 1) else if (PillarError_B.Value.Emergency == 1)
*Reason = 0x03; *Reason = 0x03; //03H:急停按钮动作故障
else if (PillarError_B.Value.Door == 1) else if (PillarError_B.Value.Door == 1)
*Reason = 0x04; *Reason = 0x04; //04H:门禁故障(充电桩)
else if (PillarError_B.Value.SPD == 1) else if (PillarError_B.Value.SPD == 1)
*Reason = 0x05; *Reason = 0x05; //05H:避雷器故障
else if (PillarError_B.Value.ACContactor == 1) else if (PillarError_B.Value.ACContactor1 == 1)
*Reason = 0x08; *Reason = 0x08; //08H:交流输入接触器拒动/误动故障
else if (PillarError_B.Value.ACContactor2 == 1)
*Reason = 0x09; //09H:交流输入接触器粘连故障
else if (PillarError_B.Value.InVolt == 1) else if (PillarError_B.Value.InVolt == 1)
*Reason = 0x0A; *Reason = 0x0A; //0AH:交流输入故障(过压,欠压,缺相,过流)
else if (PillarError_B.Value.EleLock == 1) else if (PillarError_B.Value.EleLock == 1)
*Reason = 0x0D; *Reason = 0x0D; //0DH:充电接口电子锁故障
else if ((PillarError_B.Value.Insulation == 1) || (PillarError_B.Value.ImdDev == 1)) else if (PillarError_B.Value.Insulation == 1)
*Reason = 0x0E; *Reason = 0x0E; //0EH:绝缘监测故障
else if (ChargeStopType_B == eChgStop_PillarReady_BatVoltError) else if (ChargeStopType_B == eChgStop_PillarReady_BatVoltError)
*Reason = 0x0F; *Reason = 0x0F; //0FH:电池极性反接故障
else if (PillarError_B.Value.Contactor) else if (ChargeError_B.Value.TempError)
*Reason = 0x11; *Reason = 0x0B;//0BH:充电桩过温故障
else if (PillarError_B.Value.UniContactor) else if (ChargeError_B.Value.GunTempError)
*Reason = 0x14; *Reason = 0x0C;//0CH:充电接口过温故障
else if (PillarError_B.Value.Contactor1)
*Reason = 0x10;//10H:直流输出接触器拒动/误动故障
else if (PillarError_B.Value.Contactor2)
*Reason = 0x11; //11H:直流输出接触器粘连故障
else if (PillarError_B.Value.UniContactor1)
*Reason = 0x13; //13H:并联接触器拒动/误动故障
else if (PillarError_B.Value.UniContactor2)
*Reason = 0x14; //14H:并联接触器粘连故障
else if (ChargeError_B.Value.DrainError)
*Reason = 0x15;//15H:泄放回路故障
else if (PillarError_B.Value.DCmodError) else if (PillarError_B.Value.DCmodError)
*Reason = 0x17; *Reason = 0x17; //17H:充电机模块故障
else if (PillarError_B.Value.OutVolt) else if (PillarError_B.Value.OutVolt)
*Reason = 0x18; *Reason = 0x18; //18H:直流母线输出电压过压故障
else if (PillarError_B.Value.OutCurrt) else if (PillarError_B.Value.OutCurrt)
*Reason = 0x1A; *Reason = 0x1A; //1AH:直流母线输出电流过流故障
else if (PillarError_B.Value.OutShort) else if (PillarError_B.Value.OutShort)
*Reason = 0x1B; *Reason = 0x1B; //1BH:直流母线输出短路故障
else if (ChargeStopType_B == eChgStop_Imd_Short) else if (ChargeStopType_B == eChgStop_Imd_Short)
*Reason = 0x1B; *Reason = 0x1B;
else if (ChargeStopType_B == eChgStop_Conf_ChgMaxVoltLessPillarMinVolt) else if (ChargeStopType_B == eChgStop_Conf_ChgMaxVoltLessPillarMinVolt)
*Reason = 0x1C; *Reason = 0x1C; //1CH:电池最高允许充电电压小于充电机最小输出电压
else if (TCUCurChgRecd_B.TCUChgStopType == 0x1d) else if (TCUCurChgRecd_B.TCUChgStopType == 0x1d)
*Reason = 0x1D; *Reason = 0x1D; //1DH:绝缘监测前直流输出接触器外侧电压≥10 V
else if (ChargeStopType_B == eChgStop_PillarReady_BatVoltMismatchBcpVolt) else if (ChargeStopType_B == eChgStop_PillarReady_BatVoltMismatchBcpVolt)
*Reason = 0x1E; *Reason = 0x1E; //1EH:启动充电前直流输出接触器外侧电压与通信报文电池电压相差>±5%
else if(ChargeStopType_B == eChgStop_Conf_BatVoltLessPillarMinVolt) else if(ChargeStopType_B == eChgStop_Conf_BatVoltLessPillarMinVolt)
*Reason = 0x1f; *Reason = 0x1f; //1FH:启动充电前直流输出接触器外侧电压小于充电机最小输出电压
else if(ChargeStopType_B == eChgStop_Conf_StartVoltOverPillarMax) else if(ChargeStopType_B == eChgStop_Conf_StartVoltOverPillarMax)
*Reason = 0x20; *Reason = 0x20;//20H:启动充电前直流输出接触器外侧电压大于充电机最大输出电压
else if(ChargeStopType_B == eChgStop_Conf_BatVoltOverPermitMax)
*Reason = 0x21;//21H:电池端电压大于电池最高允许充电电压
else if (CemMsg_B.Cem.Value.Brm == 1) else if (CemMsg_B.Cem.Value.Brm == 1)
*Reason = 0x22; *Reason = 0x22; //22H:BRM 报文接收超时
else if (CemMsg_B.Cem.Value.Bcp == 1) else if (CemMsg_B.Cem.Value.Bcp == 1)
*Reason = 0x24; *Reason = 0x24; //24H:BCP 报文接收超时
else if (ChargeError_B.Value.Bcp)
*Reason = 0x25;//25H:BCP 报文数据项异常
else if (CemMsg_B.Cem.Value.Bro == 1) else if (CemMsg_B.Cem.Value.Bro == 1)
*Reason = 0x27; *Reason = 0x27; //27H:BRO 报文(0xAA)接收超时
//else if ((CemMsg_B.Cem.Value.Bro != 0) || (ChargeStopType_B != 0))
// *Reason = 0x28;
else if (CemMsg_B.Cem.Value.Bcl == 1) else if (CemMsg_B.Cem.Value.Bcl == 1)
*Reason = 0x29; //29H:BCL报文接收超时 *Reason = 0x29; //29H:BCL报文接收超时
else if (CemMsg_B.Cem.Value.Bcs == 1) else if (CemMsg_B.Cem.Value.Bcs == 1)
*Reason = 0x2A; //2AH:BCS报文接收超时 *Reason = 0x2A; //2AH:BCS报文接收超时
else if(PillarError_B.Value.ImdDev == 1)
*Reason = 0x32; //32H:绝缘监测仪通信故障
else if(ChargeStopType_B == eChgStop_PillarReady_NoVolt) else if(ChargeStopType_B == eChgStop_PillarReady_NoVolt)
*Reason = 0x35;//35H:预充阶段调压失败 *Reason = 0x35;//35H:预充阶段调压失败
else if (ChargeError_B.Value.DCMoudleOnTimeOut)
*Reason = 0x37;//37H:充电模块开机超时
else if ((VerificaInfo_B.result == 1) && (StartMeg_B.StarChgType == 1)) else if ((VerificaInfo_B.result == 1) && (StartMeg_B.StarChgType == 1))
*Reason = 0x3F; *Reason = 0x3F; //3DH: 车辆验证确认帧超时
else if (TCUCommuStatus_B.ErrData.Value.verificationAck == 1) else if (TCUCommuStatus_B.ErrData.Value.verificationAck == 1)
*Reason = 0x3D; *Reason = 0x3D; //3FH:车辆鉴权不通过
else if (TCUCurChgRecd_B.TCUStartCompresult == 2) else if (TCUCurChgRecd_B.TCUStartCompresult == 2)
*Reason = 0x01; //控制导引故障 *Reason = 0x01; //控制导引故障
else else
* Reason = 0xFF; //其他故障 *Reason = 0xFF; //其他故障
return FALSE; return FALSE;
} }
...@@ -1386,16 +1435,11 @@ void StopMegAck_B(void) ...@@ -1386,16 +1435,11 @@ void StopMegAck_B(void)
07H:充电桩充电中暂停超时 07H:充电桩充电中暂停超时
0BH:烟感故障 0BH:烟感故障
0CH:交流输入断路器故障 0CH:交流输入断路器故障
0DH:交流输入接触器拒动/误动故障
10H:充电桩过温故障
11H:充电接口过温故障
13H:直流输出接触器拒动/误动故障
15H:直流输出熔断器故障 15H:直流输出熔断器故障
17H:并联接触器粘连故障
18H:泄放回路故障
19H:辅助电源故障 19H:辅助电源故障
1CH:直流母线输出电压欠压故障 1CH:直流母线输出电压欠压故障
21H:动力蓄电池状态信息(BSM)超时
2DH:预留 2DH:预留
2EH:无有效电流停止 2EH:无有效电流停止
2FH:环境监控板通信故障 2FH:环境监控板通信故障
...@@ -1422,16 +1466,28 @@ void GetStopReason_A(u8 * stopReason) ...@@ -1422,16 +1466,28 @@ void GetStopReason_A(u8 * stopReason)
*stopReason = 0x09; //09H:门禁故障(充电桩) *stopReason = 0x09; //09H:门禁故障(充电桩)
else if (PillarError.Value.SPD) else if (PillarError.Value.SPD)
*stopReason = 0x0A; //0AH:避雷器故障 *stopReason = 0x0A; //0AH:避雷器故障
else if (PillarError.Value.ACContactor) else if (PillarError.Value.ACContactor1)
*stopReason = 0x0D;//0DH:交流输入接触器拒动/误动故障
else if (PillarError.Value.ACContactor2)
*stopReason = 0x0E; //0EH:交流输入接触器粘连故障 *stopReason = 0x0E; //0EH:交流输入接触器粘连故障
else if (PillarError.Value.InVolt) else if (PillarError.Value.InVolt)
*stopReason = 0x0F; //0FH:交流输入故障(过压,欠压,缺相,过流) *stopReason = 0x0F; //0FH:交流输入故障(过压,欠压,缺相,过流)
else if (ChargeError.Value.TempError)
*stopReason = 0x10; //10H:充电桩过温故障
else if (ChargeError.Value.GunTempError)
*stopReason = 0x11;//11H:充电接口过温故障
else if (PillarError.Value.EleLock) else if (PillarError.Value.EleLock)
*stopReason = 0x12; //12H:充电接口电子锁故障 *stopReason = 0x12; //12H:充电接口电子锁故障
else if (PillarError.Value.Contactor) else if (PillarError.Value.Contactor1)
*stopReason = 0x13; //13H:直流输出接触器拒动/误动故障
else if (PillarError.Value.Contactor2)
*stopReason = 0x14; //14H:直流输出接触器粘连故障 *stopReason = 0x14; //14H:直流输出接触器粘连故障
else if (PillarError.Value.UniContactor) else if (PillarError.Value.UniContactor1)
*stopReason = 0x16; //16H:并联接触器拒动/误动故障 *stopReason = 0x16; //16H:并联接触器拒动/误动故障
else if (PillarError.Value.UniContactor2)
*stopReason = 0x17;//17H:并联接触器粘连故障
else if (ChargeError.Value.DrainError)
*stopReason = 0x18;//18H:泄放回路故障
else if (PillarError.Value.DCmodError) else if (PillarError.Value.DCmodError)
*stopReason = 0x1A; //1AH:充电机模块故障 *stopReason = 0x1A; //1AH:充电机模块故障
else if (ChargeStopType == eChgStop_Run_VoltOutHighErr) else if (ChargeStopType == eChgStop_Run_VoltOutHighErr)
...@@ -1444,19 +1500,16 @@ void GetStopReason_A(u8 * stopReason) ...@@ -1444,19 +1500,16 @@ void GetStopReason_A(u8 * stopReason)
*stopReason = 0x1F; //1FH:电池充电需求报文(BCL)超时 *stopReason = 0x1F; //1FH:电池充电需求报文(BCL)超时
else if (CemMsg.Cem.Value.Bcs == 1) else if (CemMsg.Cem.Value.Bcs == 1)
*stopReason = 0x20; //20H:电池充电总状态报文(BCS)超时 *stopReason = 0x20; //20H:电池充电总状态报文(BCS)超时
else if (ChargeError.Value.Bsm)
//else if(CemMsg.Cem.Value.Bsm==1) *stopReason = 0x21;//21H:动力蓄电池状态信息(BSM)超时
// *stopReason = 0x21;
else if (BsmMsg.BatSta.Value.Volt == 0x01) else if (BsmMsg.BatSta.Value.Volt == 0x01)
*stopReason = 0x22; //22H:BSM 报文中单体动力蓄电池电压过压 *stopReason = 0x22; //22H:BSM 报文中单体动力蓄电池电压过压
else if (BsmMsg.BatSta.Value.Volt == 0x02) else if (BsmMsg.BatSta.Value.Volt == 0x02)
*stopReason = 0x23; //23H:BSM 报文中单体动力蓄电池电压过低 *stopReason = 0x23; //23H:BSM 报文中单体动力蓄电池电压过低
else if (BsmMsg.BatSta.Value.Soc == 0x01) else if (BsmMsg.BatSta.Value.Soc == 0x01)
*stopReason = 0x24; //24H:BSM 报文中SOC 过高 *stopReason = 0x24; //24H:BSM 报文中SOC 过高
else if (BsmMsg.BatSta.Value.Soc == 0x02) else if (BsmMsg.BatSta.Value.Soc == 0x02)
*stopReason = 0x25; //25H:BSM 报文中SOC 过低 *stopReason = 0x25; //25H:BSM 报文中SOC 过低
else if (BsmMsg.BatSta.Value.Currt == 0x01) else if (BsmMsg.BatSta.Value.Currt == 0x01)
*stopReason = 0x26; //26H:BSM 报文中充电过电流 *stopReason = 0x26; //26H:BSM 报文中充电过电流
else if (BsmMsg.BatSta.Value.Temp == 0x01) else if (BsmMsg.BatSta.Value.Temp == 0x01)
...@@ -1485,75 +1538,86 @@ void GetStopReason_A(u8 * stopReason) ...@@ -1485,75 +1538,86 @@ void GetStopReason_A(u8 * stopReason)
void GetStopReason_B(u8 * stopReason) void GetStopReason_B(u8 * stopReason)
{ {
if (TCUCurChgRecd_B.TCUChgStopType == 1) if (TCUCurChgRecd_B.TCUChgStopType == 1)
*stopReason = 01; *stopReason = 01; //01H:计费控制单元正常停止
else if (TCUCurChgRecd_B.TCUChgStopType == 2) else if (TCUCurChgRecd_B.TCUChgStopType == 2)
*stopReason = 02; *stopReason = 02; //02H:计费控制单元自身故障终止
else if (TCUCurChgRecd_B.TCUChgStopType == 3) else if (TCUCurChgRecd_B.TCUChgStopType == 3)
*stopReason = 03; *stopReason = 03; //03H:计费控制单元判断充电控制器故障停止
else if (TCUCommuStatus_B.ErrData.Value.startCompAck == 1) else if (TCUCommuStatus_B.ErrData.Value.startCompAck == 1)
*stopReason = 0x04; *stopReason = 0x04; //04H:启动完成状态帧确认超时故障终止
else if (ChargeStopType_B == eChgStop_Run_CcOpen) else if (ChargeStopType_B == eChgStop_Run_CcOpen)
*stopReason = 0x05; //控制导引超时//充电过程中充电导引枪连接 *stopReason = 0x05; //05H:充电中控制导引故障//充电过程中充电导引枪连接
else if (TCUCommuStatus_B.ConnectFlag == CONNECT_TIMEOUT) else if (TCUCommuStatus_B.ConnectFlag == CONNECT_TIMEOUT)
*stopReason = 0x06; //充电控制器与计费单元通讯超时停止 *stopReason = 0x06; //06H:充电控制器与计费控制单元通讯超时
else if (PillarError_B.Value.Emergency) else if (PillarError_B.Value.Emergency)
*stopReason = 0x08; //急停按钮动作故障 *stopReason = 0x08; //08H:急停按钮动作故障
else if (PillarError_B.Value.Door) else if (PillarError_B.Value.Door)
*stopReason = 0x09; //门禁故障 *stopReason = 0x09; //09H:门禁故障(充电桩)
else if (PillarError_B.Value.SPD) else if (PillarError_B.Value.SPD)
*stopReason = 0x0A; //防雷器故障 *stopReason = 0x0A; //0AH:避雷器故障
else if (PillarError_B.Value.ACContactor) else if (PillarError_B.Value.ACContactor1)
*stopReason = 0x0E; //交流接触器粘连故障 *stopReason = 0x0D;//0DH:交流输入接触器拒动/误动故障
else if (PillarError_B.Value.ACContactor2)
*stopReason = 0x0E; //0EH:交流输入接触器粘连故障
else if (PillarError_B.Value.InVolt) else if (PillarError_B.Value.InVolt)
*stopReason = 0x0F; //交流输入故障//过欠压缺相 *stopReason = 0x0F; //0FH:交流输入故障(过压,欠压,缺相,过流)
else if (ChargeError_B.Value.TempError)
*stopReason = 0x10; //10H:充电桩过温故障
else if (ChargeError_B.Value.GunTempError)
*stopReason = 0x11;//11H:充电接口过温故障
else if (PillarError_B.Value.EleLock) else if (PillarError_B.Value.EleLock)
*stopReason = 0x12; // *stopReason = 0x12; //12H:充电接口电子锁故障
else if (PillarError_B.Value.Contactor) else if (PillarError_B.Value.Contactor1)
*stopReason = 0x14; //直流输出继电器粘连故障 *stopReason = 0x13; //13H:直流输出接触器拒动/误动故障
else if (PillarError_B.Value.UniContactor) else if (PillarError_B.Value.Contactor2)
*stopReason = 0x16; //并联接触器粘连故障 *stopReason = 0x14; //14H:直流输出接触器粘连故障
else if (PillarError_B.Value.UniContactor1)
*stopReason = 0x16; //16H:并联接触器拒动/误动故障
else if (PillarError_B.Value.UniContactor2)
*stopReason = 0x17;//17H:并联接触器粘连故障
else if (ChargeError_B.Value.DrainError)
*stopReason = 0x18;//18H:泄放回路故障
else if (PillarError_B.Value.DCmodError) else if (PillarError_B.Value.DCmodError)
*stopReason = 0x1A; //充电模块故障 *stopReason = 0x1A; //1AH:充电机模块故障
else if (ChargeStopType_B == eChgStop_Run_VoltOutHighErr) else if (ChargeStopType_B == eChgStop_Run_VoltOutHighErr)
*stopReason = 0x1B; //直流输出电压故障 *stopReason = 0x1B; //1BH:直流母线输出电压过压故障
else if (ChargeStopType_B == eChgStop_Run_CurrtOutHighErr) else if (ChargeStopType_B == eChgStop_Run_CurrtOutHighErr)
*stopReason = 0x1D; //直流输出过流故障 *stopReason = 0x1D; //1DH:直流母线输出电流过流故障
else if (PillarError_B.Value.OutShort) else if (PillarError_B.Value.OutShort)
*stopReason = 0x1E; //直流输出短路故障 *stopReason = 0x1E; //1EH:直流母线输出短路故障
else if (CemMsg_B.Cem.Value.Bcl == 1) else if (CemMsg_B.Cem.Value.Bcl == 1)
*stopReason = 0x1F; *stopReason = 0x1F; //1FH:电池充电需求报文(BCL)超时
else if (CemMsg_B.Cem.Value.Bcs == 1) else if (CemMsg_B.Cem.Value.Bcs == 1)
*stopReason = 0x20; *stopReason = 0x20; //20H:电池充电总状态报文(BCS)超时
else if (ChargeError_B.Value.Bsm)
//else if(CemMsg_B.Cem.Value.Bsm==1) *stopReason = 0x21;//21H:动力蓄电池状态信息(BSM)超时
// *stopReason = 0x21;
else if (BsmMsg_B.BatSta.Value.Volt == 0x01) else if (BsmMsg_B.BatSta.Value.Volt == 0x01)
*stopReason = 0x22; *stopReason = 0x22; //22H:BSM 报文中单体动力蓄电池电压过压
else if (BsmMsg_B.BatSta.Value.Volt == 0x02) else if (BsmMsg_B.BatSta.Value.Volt == 0x02)
*stopReason = 0x23; *stopReason = 0x23; //23H:BSM 报文中单体动力蓄电池电压过低
else if (BsmMsg_B.BatSta.Value.Soc == 0x01) else if (BsmMsg_B.BatSta.Value.Soc == 0x01)
*stopReason = 0x24; *stopReason = 0x24; //24H:BSM 报文中SOC 过高
else if (BsmMsg_B.BatSta.Value.Soc == 0x02) else if (BsmMsg_B.BatSta.Value.Soc == 0x02)
*stopReason = 0x25; *stopReason = 0x25; //25H:BSM 报文中SOC 过低
else if (BsmMsg_B.BatSta.Value.Currt == 0x01) else if (BsmMsg_B.BatSta.Value.Currt == 0x01)
*stopReason = 0x26; *stopReason = 0x26; //26H:BSM 报文中充电过电流
else if (BsmMsg_B.BatSta.Value.Temp == 0x01) else if (BsmMsg_B.BatSta.Value.Temp == 0x01)
*stopReason = 0x27; *stopReason = 0x27; //27H:BSM 报文中动力蓄电池温度过高
else if (BsmMsg_B.ChgSta.Value.Imd == 0x01) else if (BsmMsg_B.ChgSta.Value.Imd == 0x01)
*stopReason = 0x28; *stopReason = 0x28; //28H:BSM 报文中动力蓄电池绝缘状态异常
else if (BsmMsg_B.ChgSta.Value.Connect == 0x01) else if (BsmMsg_B.ChgSta.Value.Connect == 0x01)
*stopReason = 0x29; *stopReason = 0x29; //29H:BSM 报文中连接器连接状态异常
else if ((BstMsg_B.StopReason.Value.NeedSoc == 0x01) || (BstMsg_B.StopReason.Value.SetVolt == 0x01) || else if ((BstMsg_B.StopReason.Value.NeedSoc == 0x01) || (BstMsg_B.StopReason.Value.SetVolt == 0x01) ||
(BstMsg_B.StopReason.Value.PerSetVolt == 0x01) (BstMsg_B.StopReason.Value.PerSetVolt == 0x01)
||((ChargeStopType_B == eChgStop_Run_BmsStop)&&(BstMsg_B.StopTruble.Mult == 0)&&(BstMsg_B.StopFault.Mult & 0x0F == 0)) ||((ChargeStopType_B == eChgStop_Run_BmsStop)&&(BstMsg_B.StopTruble.Mult == 0)&&(BstMsg_B.StopFault.Mult & 0x0F == 0))
|| ChargeStopType_B == eChgStop_Run_Soc98) || ChargeStopType_B == eChgStop_Run_Soc98)
*stopReason = 0x2A; *stopReason = 0x2A; //2AH:BMS 正常终止充电
else if ((BstMsg_B.StopTruble.Mult != 0) || ((BstMsg_B.StopFault.Mult & 0x0F) != 0)) else if ((BstMsg_B.StopTruble.Mult != 0) || ((BstMsg_B.StopFault.Mult & 0x0F) != 0))
*stopReason = 0x2B; *stopReason = 0x2B; //2BH:BMS 异常终止充电
else if (ChargeCtrl_B.CurProcess == eChgPro_B_ChgBreak) else if (ChargeCtrl_B.CurProcess == eChgPro_B_ChgBreak)
*stopReason = 0x2C; *stopReason = 0x2C; //2CH:充电桩判断BMS 其他异常终止
else else
* stopReason = 0xFF; * stopReason = 0xff; //FFH:充电桩其他故障
return; return;
} }
...@@ -2383,27 +2447,30 @@ void InformationReporting_22_A(void) ...@@ -2383,27 +2447,30 @@ void InformationReporting_22_A(void)
InformainReport_A.InfRe.Emergency = PillarError.Value.Emergency; InformainReport_A.InfRe.Emergency = PillarError.Value.Emergency;
InformainReport_A.InfRe.smoke = 0x00; InformainReport_A.InfRe.smoke = 0x00;
InformainReport_A.InfRe.AccContac = 0x00; InformainReport_A.InfRe.AccContac = 0x00;
InformainReport_A.InfRe.DCOutConOff = PillarError.Value.Contactor; InformainReport_A.InfRe.DCOutConOff = PillarError.Value.Contactor1;
InformainReport_A.InfRe.DCFuse = 00; InformainReport_A.InfRe.DCFuse = 00;
InformainReport_A.InfRe.EleLock = PillarError.Value.EleLock; InformainReport_A.InfRe.EleLock = PillarError.Value.EleLock;
InformainReport_A.InfRe.Fan = 00; InformainReport_A.InfRe.Fan = 00;
InformainReport_A.InfRe.SPD = PillarError.Value.SPD; InformainReport_A.InfRe.SPD = PillarError.Value.SPD;
InformainReport_A.InfRe.ImdDev = PillarError.Value.ImdDev; InformainReport_A.InfRe.ImdDev = PillarError.Value.Insulation;
if ((ChargeStopType == eChgStop_PillarReady_BatVoltError) && (TCUCurChgRecd.TCUChargeEnable == 1)) if (ChargeStopType == eChgStop_PillarReady_BatVoltError)
InformainReport_A.InfRe.BattPola = 01; InformainReport_A.InfRe.BattPola = 01;
else else
InformainReport_A.InfRe.BattPola = 0; InformainReport_A.InfRe.BattPola = 0;
InformainReport_A.InfRe.ContGuid = 0; //控制导引 InformainReport_A.InfRe.ContGuid = 0; //控制导引
/*if (eSwSta_On != CcStatusRead()
&& (1 == TCUCurChgRecd.TCUChargeEnable) )*/
if(CstMsg.StopReason.Value.Manual == 1)
{
InformainReport_A.InfRe.ContGuid = 1;
}
InformainReport_A.InfRe.tempOver = 0; InformainReport_A.InfRe.tempOver = ChargeError.Value.TempError;
if ((BstMsg.StopTruble.Value.ComponentTemp == 0x01) && (TCUCurChgRecd.TCUChargeEnable == 1)) InformainReport_A.InfRe.ConnTemp = ChargeError.Value.GunTempError;
InformainReport_A.InfRe.ConnTemp = 0x01;
else
InformainReport_A.InfRe.ConnTemp = 0x00;
InformainReport_A.InfRe.PutBack = PillarError.Value.PutBack; InformainReport_A.InfRe.PutBack = PillarError.Value.PutBack;
...@@ -2432,8 +2499,6 @@ void InformationReporting_22_A(void) ...@@ -2432,8 +2499,6 @@ void InformationReporting_22_A(void)
} }
} }
if ((ChargeStopType == eChgStop_Run_VoltOutHighErr) && (TCUCurChgRecd.TCUChargeEnable == 1)) if ((ChargeStopType == eChgStop_Run_VoltOutHighErr) && (TCUCurChgRecd.TCUChargeEnable == 1))
InformainReport_A.InfRe.DcVolHi = 01; InformainReport_A.InfRe.DcVolHi = 01;
else else
...@@ -2516,13 +2581,13 @@ void InformationReporting_22_B(void) ...@@ -2516,13 +2581,13 @@ void InformationReporting_22_B(void)
InformainReport_B.InfRe.Emergency = PillarError_B.Value.Emergency; InformainReport_B.InfRe.Emergency = PillarError_B.Value.Emergency;
InformainReport_B.InfRe.smoke = 0x00; InformainReport_B.InfRe.smoke = 0x00;
InformainReport_B.InfRe.AccContac = 0x00; InformainReport_B.InfRe.AccContac = 0x00;
InformainReport_B.InfRe.DCOutConOff = PillarError_B.Value.Contactor; InformainReport_B.InfRe.DCOutConOff = PillarError_B.Value.Contactor1;
InformainReport_B.InfRe.DCFuse = 00; InformainReport_B.InfRe.DCFuse = 00;
InformainReport_B.InfRe.EleLock = PillarError_B.Value.EleLock; InformainReport_B.InfRe.EleLock = PillarError_B.Value.EleLock;
InformainReport_B.InfRe.Fan = 00; InformainReport_B.InfRe.Fan = 00;
InformainReport_B.InfRe.SPD = PillarError_B.Value.SPD; InformainReport_B.InfRe.SPD = PillarError_B.Value.SPD;
InformainReport_B.InfRe.ImdDev = PillarError_B.Value.ImdDev; InformainReport_B.InfRe.ImdDev = PillarError_B.Value.Insulation;
if ((ChargeStopType_B == eChgStop_PillarReady_BatVoltError) && (TCUCurChgRecd_B.TCUChargeEnable == 1)) if ((ChargeStopType_B == eChgStop_PillarReady_BatVoltError) && (TCUCurChgRecd_B.TCUChargeEnable == 1))
InformainReport_B.InfRe.BattPola = 01; InformainReport_B.InfRe.BattPola = 01;
...@@ -2530,13 +2595,14 @@ void InformationReporting_22_B(void) ...@@ -2530,13 +2595,14 @@ void InformationReporting_22_B(void)
InformainReport_B.InfRe.BattPola = 0; InformainReport_B.InfRe.BattPola = 0;
InformainReport_B.InfRe.ContGuid = 0; //控制导引 InformainReport_B.InfRe.ContGuid = 0; //控制导引
if(CstMsg_B.StopReason.Value.Manual == 1)
{
InformainReport_B.InfRe.ContGuid = 1;
}
InformainReport_B.InfRe.tempOver = 0; InformainReport_B.InfRe.tempOver = ChargeError_B.Value.TempError;
if ((BstMsg_B.StopTruble.Value.ComponentTemp == 0x01) && (TCUCurChgRecd_B.TCUChargeEnable == 1)) InformainReport_B.InfRe.ConnTemp = ChargeError_B.Value.GunTempError;
InformainReport_B.InfRe.ConnTemp = 0x01;
else
InformainReport_B.InfRe.ConnTemp = 0x00;
InformainReport_B.InfRe.PutBack = PillarError_B.Value.PutBack; InformainReport_B.InfRe.PutBack = PillarError_B.Value.PutBack;
...@@ -2626,22 +2692,23 @@ void InformationReporting_23_A(void) ...@@ -2626,22 +2692,23 @@ void InformationReporting_23_A(void)
Data[0] = 0x00; Data[0] = 0x00;
InformainReport2_A.InfRe.Door = PillarError.Value.Door; InformainReport2_A.InfRe.Door = PillarError.Value.Door;
InformainReport2_A.InfRe.DCOutConOn = 0x00; InformainReport2_A.InfRe.DCOutConOn = PillarError.Value.Contactor2;
if (((ChargeError.Value.IsolateWarn == 1) || (ChargeError.Value.IsolateError == 1)) && if ((ChargeError.Value.IsolateWarn == 1) &&(TCUCurChgRecd.TCUChargeEnable == 1))
(TCUCurChgRecd.TCUChargeEnable == 1))
InformainReport2_A.InfRe.ImdWarm = 0x01; InformainReport2_A.InfRe.ImdWarm = 0x01;
else else
InformainReport2_A.InfRe.ImdWarm = 0x00; InformainReport2_A.InfRe.ImdWarm = 0x00;
InformainReport2_A.InfRe.DrainResist = 0x00; InformainReport2_A.InfRe.DrainResist = ChargeError.Value.DrainError;
InformainReport2_A.InfRe.tempOver = 0; InformainReport2_A.InfRe.tempOver = ChargeError.Value.TempWarn;
InformainReport2_A.InfRe.gunTemp = 0; InformainReport2_A.InfRe.gunTemp = ChargeError.Value.GunTempWarn;
InformainReport2_A.InfRe.AccContacON = PillarError.Value.ACContactor; InformainReport2_A.InfRe.AccContacON = PillarError.Value.ACContactor1;
InformainReport2_A.InfRe.AccContacOff = 00; InformainReport2_A.InfRe.AccContacOff = PillarError.Value.ACContactor2;
InformainReport2_A.InfRe.Power = 00; InformainReport2_A.InfRe.Power = 00;
InformainReport2_A.InfRe.UniContactorOff = PillarError.Value.UniContactor; InformainReport2_A.InfRe.UniContactorOff = PillarError.Value.UniContactor1;
InformainReport2_A.InfRe.UniContactorOn = 0x00; InformainReport2_A.InfRe.UniContactorOn = PillarError.Value.UniContactor2;
InformainReport2_A.InfRe.ImdCon = PillarError.Value.ImdDev;
memcpy(&Data[1], &InformainReport2_A.data, 2); memcpy(&Data[1], &InformainReport2_A.data, 2);
TCUSinglePackSendMsg(Data, 8, eCmd_DCConInfor2, 4, ChargerCont1939Addr); TCUSinglePackSendMsg(Data, 8, eCmd_DCConInfor2, 4, ChargerCont1939Addr);
} }
...@@ -2656,22 +2723,23 @@ void InformationReporting_23_B(void) ...@@ -2656,22 +2723,23 @@ void InformationReporting_23_B(void)
Data[0] = 0x00; Data[0] = 0x00;
InformainReport2_B.InfRe.Door = PillarError_B.Value.Door; InformainReport2_B.InfRe.Door = PillarError_B.Value.Door;
InformainReport2_B.InfRe.DCOutConOn = 0x0; InformainReport2_B.InfRe.DCOutConOn = PillarError_B.Value.Contactor2;
if (((ChargeError_B.Value.IsolateWarn == 1) || (ChargeError_B.Value.IsolateError == 1)) && if ((ChargeError_B.Value.IsolateWarn == 1) &&(TCUCurChgRecd_B.TCUChargeEnable == 1))
(TCUCurChgRecd_B.TCUChargeEnable == 1))
InformainReport2_B.InfRe.ImdWarm = 0x01; InformainReport2_B.InfRe.ImdWarm = 0x01;
else else
InformainReport2_B.InfRe.ImdWarm = 0x00; InformainReport2_B.InfRe.ImdWarm = 0x00;
InformainReport2_B.InfRe.DrainResist = 0x00; InformainReport2_B.InfRe.DrainResist = ChargeError_B.Value.DrainError;
InformainReport2_B.InfRe.tempOver = 0; InformainReport2_B.InfRe.tempOver = ChargeError_B.Value.TempWarn;
InformainReport2_B.InfRe.gunTemp = 0; InformainReport2_B.InfRe.gunTemp = ChargeError_B.Value.GunTempWarn;
InformainReport2_B.InfRe.AccContacON = PillarError_B.Value.ACContactor; InformainReport2_B.InfRe.AccContacON = PillarError_B.Value.ACContactor1;
InformainReport2_B.InfRe.AccContacOff = 00; InformainReport2_B.InfRe.AccContacOff = PillarError_B.Value.ACContactor2;
InformainReport2_B.InfRe.Power = 00; InformainReport2_B.InfRe.Power = 00;
InformainReport2_B.InfRe.UniContactorOff = PillarError_B.Value.UniContactor; InformainReport2_B.InfRe.UniContactorOff = PillarError_B.Value.UniContactor1;
InformainReport2_B.InfRe.UniContactorOn = 0x00; InformainReport2_B.InfRe.UniContactorOn = PillarError_B.Value.UniContactor2;
InformainReport2_B.InfRe.ImdCon = PillarError_B.Value.ImdDev;
memcpy(&Data[1], &InformainReport2_B.data, 2); memcpy(&Data[1], &InformainReport2_B.data, 2);
TCUSinglePackSendMsg(Data, 8, eCmd_DCConInfor2, 4, ChargerCont1939Addr_B); TCUSinglePackSendMsg(Data, 8, eCmd_DCConInfor2, 4, ChargerCont1939Addr_B);
} }
......
#ifndef __DRV_TCUCOMM_H__ #ifndef __DRV_TCUCOMM_H__
#define __DRV_TCUCOMM_H__ #define __DRV_TCUCOMM_H__
#include "Global.h" #include "Global.h"
#include "Thd_Charge.h" #include "Thd_Charge.h"
#include "Memory.h" #include "Memory.h"
...@@ -10,36 +10,36 @@ ...@@ -10,36 +10,36 @@
#include "Thd_TcuControl.h" #include "Thd_TcuControl.h"
extern u8 TCUSendMsg(StructChargeSend *pMsg); extern u8 TCUSendMsg(StructChargeSend * pMsg);
extern void TCUCanInit_B(void); extern void TCUCanInit_B(void);
extern osMessageQId TCUMsg; extern osMessageQId TCUMsg;
typedef struct typedef struct {
{
u8 ControlType; u8 ControlType;
s16 Kwh; s16 Kwh;
u8 Percentage; u8 Percentage;
}StructPowerControl; } StructPowerControl;
typedef struct cp56time2a { typedef struct cp56time2a {
u16 msec; u16 msec;
u16 min :6; u16 min : 6;
u8 res1 :1; u8 res1 : 1;
u8 iv :1; // invalid, iv = 0 有效; iv = 1 无效 u8 iv : 1; // invalid, iv = 0 有效; iv = 1 无效
u8 hour :5; u8 hour : 5;
u8 res2 :2; u8 res2 : 2;
u8 su :1; //summer time, su = 0 标准时间; su = 1 夏季时间 u8 su : 1; //summer time, su = 0 标准时间; su = 1 夏季时间
u8 mday :5; u8 mday : 5;
u8 wday :3; u8 wday : 3;
u8 month :4; u8 month : 4;
u8 res3 :4; u8 res3 : 4;
u8 year :7; u8 year : 7;
u8 res4 :1; u8 res4 : 1;
} cp56time2a; } cp56time2a;
typedef struct
{ typedef struct {
//u8 Len; //u8 Len;
// u8 Data[8]; // u8 Data[8];
// Union1939Id Id; // Union1939Id Id;
...@@ -51,62 +51,67 @@ typedef struct ...@@ -51,62 +51,67 @@ typedef struct
u8 Len; u8 Len;
u8 Data[8]; u8 Data[8];
u32 Pgn; u32 Pgn;
}StructTCUSend; } StructTCUSend;
typedef struct
{ typedef struct {
//u8 GunNum; //抢号 单枪 0 一机多冲 1-255 //u8 GunNum; //抢号 单枪 0 一机多冲 1-255
u8 LoadSswitch;//负荷控制开关 是否根据用户型号提供不同输出功率 01启用02关闭其他无效 u8 LoadSswitch; //负荷控制开关 是否根据用户型号提供不同输出功率 01启用02关闭其他无效
u8 StarChgType;//即插即充标识 00非 01 即插即充other:invalid u8 StarChgType; //即插即充标识 00非 01 即插即充other:invalid
u8 AuxiliaryPower;//辅助电源选择:00H:使用12V(默认)01H: 24V(优先使用12V探测,失败后切24V电源探测)其他:无效 u8 AuxiliaryPower; //辅助电源选择:00H:使用12V(默认)01H: 24V(优先使用12V探测,失败后切24V电源探测)其他:无效
u8 ParallelCharging;//并充(两把枪充一辆车)选择:00H:关闭(默认) 01H:启用 其他:无效 u8 ParallelCharging; //并充(两把枪充一辆车)选择:00H:关闭(默认) 01H:启用 其他:无效
}StructStartMeg; } StructStartMeg;
typedef struct
{
typedef struct {
//u8 GunNum; //抢号 单枪 0 一机多冲 1-255 //u8 GunNum; //抢号 单枪 0 一机多冲 1-255
u8 LoadSswitch;//负荷控制开关 是否根据用户型号提供不同输出功率 01启用02关闭其他无效 u8 LoadSswitch; //负荷控制开关 是否根据用户型号提供不同输出功率 01启用02关闭其他无效
u8 AckFlag; u8 AckFlag;
//u32 RecvTick; //u32 RecvTick;
}StructStartCompMeg; } StructStartCompMeg;
typedef struct
{
typedef struct {
//u8 GunNum; //抢号 单枪 0 一机多冲 1-255 //u8 GunNum; //抢号 单枪 0 一机多冲 1-255
u8 StopReason; u8 StopReason;
u8 AckFlag; u8 AckFlag;
}StructStopCompMeg; } StructStopCompMeg;
typedef enum
{ typedef enum {
stopIdle =0, stopIdle = 0,
commStop =1, commStop = 1,
TcuFultStop =2, TcuFultStop = 2,
ChgFultStop =3, ChgFultStop = 3,
}stopReason; } stopReason;
typedef struct
{
typedef struct {
//u8 GunNum; //抢号 单枪 0 一机多冲 1-255 //u8 GunNum; //抢号 单枪 0 一机多冲 1-255
stopReason StopReason;// stopReason StopReason; //
}StructStopMeg; } StructStopMeg;
typedef struct typedef struct {
{ u8 ChargingServiceFlag; //01充电服务停止02充电服务启用
u8 ChargingServiceFlag;//01充电服务停止02充电服务启用
u16 version; u16 version;
u8 ChargeNum[8]; u8 ChargeNum[8];
u8 ManufacturerCode[4];//厂家编码 u8 ManufacturerCode[4]; //厂家编码
u8 DeviceModel[2];//设备型号 u8 DeviceModel[2]; //设备型号
u8 HardwareVersion[2];//硬件版本 u8 HardwareVersion[2]; //硬件版本
u8 SoftwareVersion[2];//软件版本 u8 SoftwareVersion[2]; //软件版本
u8 SoftwareData[4];//软件日期 u8 SoftwareData[4]; //软件日期
u8 BmsVersion;//BMS协议版本号01H GB/27930-2011 02HGB/27930-2011 u8 BmsVersion; //BMS协议版本号01H GB/27930-2011 02HGB/27930-2011
u16 DcMaxVolt;//模块最大电压 XXX.xV u16 DcMaxVolt; //模块最大电压 XXX.xV
u16 DcMinVolt;//模块最小电压 XXX.xV u16 DcMinVolt; //模块最小电压 XXX.xV
u16 DcMaxCurrt;//模块最大电流 XX.xA u16 DcMaxCurrt; //模块最大电流 XX.xA
u16 DcMinCurrt;//模块最小电流 XX.xA u16 DcMinCurrt; //模块最小电流 XX.xA
StructPowerControl PowerControl_A; StructPowerControl PowerControl_A;
StructPowerControl PowerControl_B; StructPowerControl PowerControl_B;
}StructTCUCControl; } StructTCUCControl;
/* /*
...@@ -116,27 +121,27 @@ typedef struct ...@@ -116,27 +121,27 @@ typedef struct
其它类型故障 其它类型故障
*/ */
typedef union typedef union {
{
u8 data[5]; u8 data[5];
struct
{
u8 workStau : 2;//工作状态 struct {
u8 sumFalt : 1;//总故障 u8 workStau : 2; //工作状态
u8 sumWarm : 1;//总告警 u8 sumFalt : 1; //总故障
u8 Emergency: 1;//急停按钮动作 故障 u8 sumWarm : 1; //总告警
u8 smoke : 1;//烟感故障 u8 Emergency : 1; //急停按钮动作 故障
u8 AccContac: 1;//交流输入断路器故障 u8 smoke : 1; //烟感故障
u8 DCOutConOff: 1;//直流母线输出接触器拒动/误动故障 u8 AccContac : 1; //交流输入断路器故障
u8 DCOutConOff : 1; //直流母线输出接触器拒动/误动故障
u8 DCFuse : 1;//熔断器故障
u8 EleLock : 1;//充电接口电子锁故障 u8 DCFuse : 1; //熔断器故障
u8 Fan : 1;//充电桩风扇故障 u8 EleLock : 1; //充电接口电子锁故障
u8 SPD : 1;//避雷器故障 u8 Fan : 1; //充电桩风扇故障
u8 ImdDev : 1;//绝缘监测故障 u8 SPD : 1; //避雷器故障
u8 BattPola : 1;//电池极性反接故障 u8 ImdDev : 1; //绝缘监测故障
u8 ContGuid : 1;//充电中控制导引故障 u8 BattPola : 1; //电池极性反接故障
u8 tempOver : 1;//充电桩过温故障 u8 ContGuid : 1; //充电中控制导引故障
u8 tempOver : 1; //充电桩过温故障
/* /*
充电接口过温故障 充电接口过温故障
...@@ -169,12 +174,12 @@ typedef union ...@@ -169,12 +174,12 @@ typedef union
*/ */
u8 DcModErr : 1; u8 DcModErr : 1;
u8 DCModIn : 1; u8 DCModIn : 1;
u8 DCModInHi: 1; u8 DCModInHi : 1;
u8 DCModInLo: 1; u8 DCModInLo : 1;
u8 DCModPhas: 1; u8 DCModPhas : 1;
u8 DcOutShor: 1; u8 DcOutShor : 1;
u8 DCModOutCuHi: 1; u8 DCModOutCuHi : 1;
u8 DCModOutVoHi: 1; u8 DCModOutVoHi : 1;
/* /*
充电模块直流输出欠压故障 充电模块直流输出欠压故障
...@@ -186,22 +191,25 @@ typedef union ...@@ -186,22 +191,25 @@ typedef union
充电接口电子锁状态 充电接口电子锁状态
直流输出接触器状态 直流输出接触器状态
*/ */
u8 DCModOutVoLo: 1; u8 DCModOutVoLo : 1;
u8 DCModTempHi : 1; u8 DCModTempHi : 1;
u8 DCModComm : 1; u8 DCModComm : 1;
u8 DCModFan : 1; u8 DCModFan : 1;
u8 CCConnect : 1; u8 CCConnect : 1;
u8 InsertGunSta: 1; u8 InsertGunSta : 1;
u8 ElectLock : 1; u8 ElectLock : 1;
u8 DcOutContSta: 1; u8 DcOutContSta : 1;
}InfRe; } InfRe;
}UnionInformainReport1;
} UnionInformainReport1;
typedef union
{ typedef union {
u32 data; u32 data;
struct
{
struct {
/* /*
充电桩门禁故障 充电桩门禁故障
直流输出接触器粘连故障 直流输出接触器粘连故障
...@@ -212,14 +220,14 @@ typedef union ...@@ -212,14 +220,14 @@ typedef union
交流输入接触器拒动/误动故障 交流输入接触器拒动/误动故障
交流输入接触器粘连故障 交流输入接触器粘连故障
*/ */
u16 Door : 1;// u16 Door : 1; //
u16 DCOutConOn : 1;//母线接触器粘连故障 u16 DCOutConOn : 1; //母线接触器粘连故障
u16 ImdWarm : 1; u16 ImdWarm : 1;
u16 DrainResist : 1; u16 DrainResist : 1;
u16 tempOver : 1; u16 tempOver : 1;
u16 gunTemp : 1; u16 gunTemp : 1;
u16 AccContacON : 1;//交流数日接触器据动/误动故障 u16 AccContacON : 1; //交流数日接触器据动/误动故障
u16 AccContacOff: 1;//粘连故障 u16 AccContacOff : 1; //粘连故障
/* /*
辅助电源故障 辅助电源故障
...@@ -231,9 +239,10 @@ typedef union ...@@ -231,9 +239,10 @@ typedef union
充电机柜门禁故障 充电机柜门禁故障
充电机柜水浸故障 充电机柜水浸故障
*/ */
u16 Power : 1;//辅助电源 u16 Power : 1; //辅助电源
u16 UniContactorOff : 1;//母线接触器据动/误动故障 u16 UniContactorOff : 1; //接触器据动/误动故障
u16 UniContactorOn : 1;//并联接触器粘连故障 u16 UniContactorOn : 1; //并联接触器粘连故障
u16 reserve1 : 5;
/* /*
充电机柜烟感故障 充电机柜烟感故障
...@@ -245,6 +254,7 @@ typedef union ...@@ -245,6 +254,7 @@ typedef union
开关模块通信告警 开关模块通信告警
开关模块故障 开关模块故障
*/ */
u16 reserve2 : 8;
/* /*
开关模块告警 开关模块告警
...@@ -256,91 +266,91 @@ typedef union ...@@ -256,91 +266,91 @@ typedef union
灯板通信故障 灯板通信故障
电能表通信故障 电能表通信故障
*/ */
}InfRe; u16 reserve3 : 4;
}UnionInformainReport2; u16 ImdCon : 1;
u16 reserve4 : 3;
} InfRe;
typedef union } UnionInformainReport2;
{
typedef union {
u32 Mult; 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;//电子锁控制应答超时
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;
}UnionTCUEM;
typedef struct
{
// u8 Valid;
UnionTCUEM tcuem;//充电控制器反馈超时
}StructTCUEM;
typedef struct
{
u8 result;
u8 FailReason;
}StructVerificationInformain;
#define TCU1939Addr (0x8A) struct {
#define ChargerCont1939Addr (0xE0) u32 Idle : 1; //预留
#define ChargerCont1939Addr_B (0xE1) u32 paramAck : 1; //下发充电参数应答超时
u32 startAck : 1; //充电启动命令应答超时
u32 startComp : 1; //等待充电启动完成状态超时
u32 stopAck : 1; //充电停止命令应答超时
u32 stopComp : 1; //等待充电停止完成状态超时
u32 timeAck : 1; //对时操作应答超时
u32 SerConAck : 1; //充电服务启停应答超时
typedef enum u32 GunAck : 1; //电子锁控制应答超时
{ u32 powerAck : 1; //充电功率调节应答超时
eCmd_start = 0x000100,// 充电启动帧 u32 QueryAck : 1; //充电桩配置信息查询应答超时
eCmd_startAck = 0x000200,// 充电启动帧反馈 u32 DCConInfor : 1; //遥信报文接收超时
u32 DCConMeasu : 1; //遥测报文接收超时
u32 StartDownload : 1; //启动下载命令应答超时
u32 DataRequestSend : 1; //请求发送数据帧应答超时
u32 DataSend : 1; //数据发送帧应答超时
eCmd_stop = 0x000300,// 充电停止帧 u32 ProgramVerification: 1; //程序校验命令帧应答超时
eCmd_stopAck = 0x000400,// 充电停止帧反馈 u32 CarVerification : 1; //车辆验证报文接收超时
eCmd_time = 0x000500,// 对时帧
eCmd_timeAck = 0x000600,// 对时帧反馈
eCmd_versi = 0x000700,//版本校验帧 } Value;
eCmd_versiAck = 0x000800,//版本校验帧反馈
eCmd_param = 0x000900,// 下发充电参数信息帧
eCmd_paramAck = 0x000A00,// 下发充电参数信息应答帧
eCmd_SerCon = 0x000B00,// 充电服务启停控制帧 } UnionTCUEM;
eCmd_SerConAck = 0x000C00,// 充电服务启停控制帧应答
eCmd_Gun = 0x000D00,// 电子锁可控制帧
eCmd_GunAck = 0x000E00,// 电子锁可控制应答帧
eCmd_power = 0x000F00,// 功率调节控制帧 typedef struct {
eCmd_powerAck = 0x001000,// 功率调节控制应答帧 // u8 Valid;
UnionTCUEM tcuem; //充电控制器反馈超时
} StructTCUEM;
eCmd_Query = 0x006000,// 充电桩配置信息查询帧
eCmd_QueryAck = 0x006100,// 充电桩配置信息查询应答帧 typedef struct {
u8 result;
u8 FailReason;
} StructVerificationInformain;
#define TCU1939Addr (0x8A)
#define ChargerCont1939Addr (0xE0)
#define ChargerCont1939Addr_B (0xE1)
typedef enum {
eCmd_start = 0x000100, // 充电启动帧
eCmd_startAck = 0x000200, // 充电启动帧反馈
eCmd_stop = 0x000300, // 充电停止帧
eCmd_stopAck = 0x000400, // 充电停止帧反馈
eCmd_time = 0x000500, // 对时帧
eCmd_timeAck = 0x000600, // 对时帧反馈
eCmd_versi = 0x000700, //版本校验帧
eCmd_versiAck = 0x000800, //版本校验帧反馈
eCmd_param = 0x000900, // 下发充电参数信息帧
eCmd_paramAck = 0x000A00, // 下发充电参数信息应答帧
eCmd_SerCon = 0x000B00, // 充电服务启停控制帧
eCmd_SerConAck = 0x000C00, // 充电服务启停控制帧应答
eCmd_Gun = 0x000D00, // 电子锁可控制帧
eCmd_GunAck = 0x000E00, // 电子锁可控制应答帧
eCmd_power = 0x000F00, // 功率调节控制帧
eCmd_powerAck = 0x001000, // 功率调节控制应答帧
eCmd_Query = 0x006000, // 充电桩配置信息查询帧
eCmd_QueryAck = 0x006100, // 充电桩配置信息查询应答帧
/*****************在线升级命令 start*******************/ /*****************在线升级命令 start*******************/
eCmd_upDateHeart = 0x007000,//升级心跳帧 007000H eCmd_upDateHeart = 0x007000, //升级心跳帧 007000H
eCmd_upDateHeartAck = 0x007100,//升级心跳应答帧 007100H eCmd_upDateHeartAck = 0x007100, //升级心跳应答帧 007100H
eCmd_startDownload = 0x007200,//启动下载命令帧 007200H eCmd_startDownload = 0x007200, //启动下载命令帧 007200H
eCmd_startDownloadAck = 0x007300,//启动下载应答帧 007300H eCmd_startDownloadAck = 0x007300, //启动下载应答帧 007300H
//索要区间命令帧 007400H //索要区间命令帧 007400H
//索要区间应答帧1 007500H //索要区间应答帧1 007500H
//索要区间应答帧2 007600H //索要区间应答帧2 007600H
...@@ -351,110 +361,108 @@ typedef enum ...@@ -351,110 +361,108 @@ typedef enum
//完成组包应答帧 007B00H //完成组包应答帧 007B00H
//程序校验数据帧 007C00H //程序校验数据帧 007C00H
//程序校验应答帧 007D00H //程序校验应答帧 007D00H
eCmd_reset = 0x007E00,//立即复位命令帧 007E00H eCmd_reset = 0x007E00, //立即复位命令帧 007E00H
eCmd_resetAck = 0x007F00,//立即复位应答帧 007F00H eCmd_resetAck = 0x007F00, //立即复位应答帧 007F00H
/*****************在线升级命令 end*******************/
eCmd_valueSet = 0x008000,//定值设置命令帧 008000H /*****************在线升级命令 end*******************/
eCmd_valueSetAck = 0x008100,//定值设置命令应答帧 008100H eCmd_valueSet = 0x008000, //定值设置命令帧 008000H
eCmd_valueQuery = 0x008200,//定值查询命令帧 008200H eCmd_valueSetAck = 0x008100, //定值设置命令应答帧 008100H
eCmd_valueQueryAck = 0x008300,//定值查询命令应答帧 008300H eCmd_valueQuery = 0x008200, //定值查询命令帧 008200H
eCmd_valueQueryAck = 0x008300, //定值查询命令应答帧 008300H
eCmd_debugInfo = 0x008E00,//调试信息下行命令帧 0x8E eCmd_debugInfo = 0x008E00, //调试信息下行命令帧 0x8E
eCmd_debugInfoAck = 0x008F00,//调试信息上行帧 0x8F eCmd_debugInfoAck = 0x008F00, //调试信息上行帧 0x8F
eCmd_verification = 0x002D00, //车辆验证数据帧
eCmd_verification = 0x002D00,//车辆验证数据帧 eCmd_verificationAck = 0x002E00, //车辆验证应答帧
eCmd_verificationAck = 0x002E00,//车辆验证应答帧
////////////状态帧///////////////// ////////////状态帧/////////////////
eCmd_startComp = 0x001100,// 充电启动完成帧 eCmd_startComp = 0x001100, // 充电启动完成帧
eCmd_startCompAck = 0x001200,// 充电启动完成应答帧 eCmd_startCompAck = 0x001200, // 充电启动完成应答帧
eCmd_stopComp = 0x001300, // 充电停止完成帧
eCmd_stopComp = 0x001300,// 充电停止完成帧 eCmd_stopCompAck = 0x001400, // 充电停止完成应答帧
eCmd_stopCompAck = 0x001400,// 充电停止完成应答帧 eCmd_status = 0x001500, //充电桩状态帧
eCmd_status = 0x001500,//充电桩状态帧
///////////数据帧/直流//////////// ///////////数据帧/直流////////////
eCmd_DCConMeasu = 0x002000,// 充电控制器遥测帧 eCmd_DCConMeasu = 0x002000, // 充电控制器遥测帧
eCmd_DCTCUMeasu = 0x002100,// 计费单元遥测帧 eCmd_DCTCUMeasu = 0x002100, // 计费单元遥测帧
eCmd_DCConInfor1 = 0x002200,// 充电控制器遥信帧 eCmd_DCConInfor1 = 0x002200, // 充电控制器遥信帧
eCmd_DCConInfor2 = 0x002300,// 充电控制器遥信帧 eCmd_DCConInfor2 = 0x002300, // 充电控制器遥信帧
///////////数据帧/交流//////////// ///////////数据帧/交流////////////
eCmd_ACConMeasu = 0x003000,// 充电控制器遥测帧 eCmd_ACConMeasu = 0x003000, // 充电控制器遥测帧
eCmd_ACTCUMeasu = 0x003100,// 计费单元遥测 帧 eCmd_ACTCUMeasu = 0x003100, // 计费单元遥测 帧
eCmd_ACConInfor = 0x003200,// 充电控制器遥信帧 eCmd_ACConInfor = 0x003200, // 充电控制器遥信帧
eCmd_ACTCUInfor = 0x003300,// 计费单元遥信帧 eCmd_ACTCUInfor = 0x003300, // 计费单元遥信帧
///////////心跳帧/////////// ///////////心跳帧///////////
eCmd_TcuHeart = 0x004000, // 计费单元心跳 eCmd_TcuHeart = 0x004000, // 计费单元心跳
eCmd_ContHeart = 0x004100, // 充电控制器心跳帧 eCmd_ContHeart = 0x004100, // 充电控制器心跳帧
eCmd_TCUErroComm = 0x005100, // 计费单元错误帧 eCmd_TCUErroComm = 0x005100, // 计费单元错误帧
eCmd_ConErroComm = 0x005200, //充电控制器错误帧 eCmd_ConErroComm = 0x005200, //充电控制器错误帧
}EnumTCUCommPgn; } EnumTCUCommPgn;
extern u8 TCUCommInit(void); extern u8 TCUCommInit(void);
extern void StartMeg ( StructTCUSend* pPgnRecv ); extern void StartMeg(StructTCUSend * pPgnRecv);
extern void StartMegAck_A(void); extern void StartMegAck_A(void);
extern void StartMegAck_B(void); extern void StartMegAck_B(void);
extern void AckTCUHeartBeat(StructTCUSend* pPgnRecv); extern void AckTCUHeartBeat(StructTCUSend * pPgnRecv);
extern void TCUParamAck(u8); extern void TCUParamAck(u8);
extern void startCompSend_A(void); extern void startCompSend_A(void);
extern void startCompSend_B(void); extern void startCompSend_B(void);
extern void ACkStartCompMeg ( StructTCUSend* pPgnRecv ); extern void ACkStartCompMeg(StructTCUSend * pPgnRecv);
extern void StopMeg( StructTCUSend* pPgnRecv ); extern void StopMeg(StructTCUSend * pPgnRecv);
extern void StopMegAck_A(void ); extern void StopMegAck_A(void);
extern void StopMegAck_B(void ); extern void StopMegAck_B(void);
extern void stopCompSend_A(void); extern void stopCompSend_A(void);
extern void stopCompSend_B(void); extern void stopCompSend_B(void);
extern void stopCompAck( StructTCUSend* pPgnRecv); extern void stopCompAck(StructTCUSend * pPgnRecv);
extern void TCUHeartBeat_A(void); extern void TCUHeartBeat_A(void);
extern void TCUHeartBeat_B(void); extern void TCUHeartBeat_B(void);
extern void TCUtimeSet(StructTCUSend* pPgnRecv); extern void TCUtimeSet(StructTCUSend * pPgnRecv);
extern void TCUtimeSetAck(u8); extern void TCUtimeSetAck(u8);
extern void TCUVersionCheck(StructTCUSend* pPgnRecv); extern void TCUVersionCheck(StructTCUSend * pPgnRecv);
extern void TCUVersionCheckSent(u8); extern void TCUVersionCheckSent(u8);
extern void SerConAckAnalysis(StructTCUSend* pPgnRecv); extern void SerConAckAnalysis(StructTCUSend * pPgnRecv);
extern void SerConAck(u8); extern void SerConAck(u8);
extern void ElectControlAnalysis(StructTCUSend* pPgnRecv); extern void ElectControlAnalysis(StructTCUSend * pPgnRecv);
extern void ElectControlAck(u8); extern void ElectControlAck(u8);
extern void PowerControlAnalysis(StructTCUSend* pPgnRecv); extern void PowerControlAnalysis(StructTCUSend * pPgnRecv);
extern void PowerControlAck(u8); extern void PowerControlAck(u8);
extern void InformationReporting_22_A (void); extern void InformationReporting_22_A(void);
extern void InformationReporting_22_B (void); extern void InformationReporting_22_B(void);
extern void InformationReporting_23_A (void); extern void InformationReporting_23_A(void);
extern void InformationReporting_23_B(void); extern void InformationReporting_23_B(void);
extern void measuringReporting20_A(void); extern void measuringReporting20_A(void);
extern void measuringReporting20_B(void); extern void measuringReporting20_B(void);
extern void ChgInfornQueryAck(u8); extern void ChgInfornQueryAck(u8);
extern void verification(void); extern void verification(void);
extern void verificationAck(StructTCUSend* pPgnRecv); extern void verificationAck(StructTCUSend * pPgnRecv);
extern void TcuEMMsg( u16 data); extern void TcuEMMsg(u16 data);
extern void TcuEMMsg_B(u16 data); extern void TcuEMMsg_B(u16 data);
extern void TCUParam(StructTCUSend* pPgnRecv); extern void TCUParam(StructTCUSend * pPgnRecv);
extern void TCUMeasuRecv(StructTCUSend * pPgnRecv); extern void TCUMeasuRecv(StructTCUSend * pPgnRecv);
extern StructStartMeg StartMeg_A ; extern StructStartMeg StartMeg_A;
extern StructStartMeg StartMeg_B; extern StructStartMeg StartMeg_B;
extern StructStartCompMeg AckStartCompMeg_A ; extern StructStartCompMeg AckStartCompMeg_A;
extern StructStartCompMeg AckStartCompMeg_B ; extern StructStartCompMeg AckStartCompMeg_B;
extern StructStopMeg StopMeg_A ; extern StructStopMeg StopMeg_A;
extern StructStopMeg StopMeg_B ; extern StructStopMeg StopMeg_B;
extern StructStopCompMeg AckStopCompMeg_A ; extern StructStopCompMeg AckStopCompMeg_A;
extern StructStopCompMeg AckStopCompMeg_B ; extern StructStopCompMeg AckStopCompMeg_B;
extern UnionInformainReport1 InformainReport_A; extern UnionInformainReport1 InformainReport_A;
extern UnionInformainReport1 InformainReport_B; extern UnionInformainReport1 InformainReport_B;
extern UnionInformainReport2 InformainReport2_A; extern UnionInformainReport2 InformainReport2_A;
extern UnionInformainReport2 InformainReport2_B; extern UnionInformainReport2 InformainReport2_B;
extern StructVerificationInformain VerificaInfo ; extern StructVerificationInformain VerificaInfo;
extern StructVerificationInformain VerificaInfo_B ; extern StructVerificationInformain VerificaInfo_B;
extern StructTCUEM TCUChgContralTCUEM_A; extern StructTCUEM TCUChgContralTCUEM_A;
extern StructTCUEM TCUChgContralTCUEM_B; extern StructTCUEM TCUChgContralTCUEM_B;
......
...@@ -282,6 +282,7 @@ typedef enum ...@@ -282,6 +282,7 @@ typedef enum
eChgStop_PillarReady_NoVolt= 100, eChgStop_PillarReady_NoVolt= 100,
eChgStop_Conf_BatVoltLessPillarMinVolt = 101, eChgStop_Conf_BatVoltLessPillarMinVolt = 101,
eChgStop_PillarReady_UniContactor, eChgStop_PillarReady_UniContactor,
eChgStop_BatVoltOverBatMax,
}EnumChgStopType; }EnumChgStopType;
...@@ -353,7 +354,12 @@ typedef union ...@@ -353,7 +354,12 @@ typedef union
u32 PutBack : 1; u32 PutBack : 1;
u32 OutShort : 1; u32 OutShort : 1;
u32 UniContactor1: 1;//据动,误动
u32 UniContactor2: 1;//粘连
u32 ACContactor1 : 1;//据动,误动
u32 ACContactor2 : 1;//粘连
u32 Contactor1 : 1;//据动,误动
u32 Contactor2 : 1;//粘连
}Value; }Value;
}UnionPillarError; }UnionPillarError;
...@@ -367,6 +373,15 @@ typedef union ...@@ -367,6 +373,15 @@ typedef union
u32 IsolateError : 1; u32 IsolateError : 1;
u32 VoltOutError : 1; u32 VoltOutError : 1;
u32 CurrtOutError : 1; u32 CurrtOutError : 1;
u32 TempError : 1; //桩内温度错误
u32 TempWarn : 1; //桩内温度告警
u32 GunTempError : 1; //枪/充电接口温度错误
u32 GunTempWarn : 1; //枪/充电接口温度告警
u32 DrainError :1; //泄放回路故障
u32 DCMoudleOnTimeOut :1; //充电模块开机超时
u32 Bcp : 1;//BCP 报文数据项异常
u32 Bsm : 1;//动力蓄电池状态信息(BSM)超时
}Value; }Value;
}UnionChgError; }UnionChgError;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论