Files

373 lines
23 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef FAULT_INTERFACE_H
#define FAULT_INTERFACE_H
#ifdef __cplusplus /*C++编译环境下兼容C语言*/
extern "C" {
#endif
/*------ Exported includes(头文件) ----------------------*/
#include "main.h"
#include "publicdata/publicdata.h"
/*------ Exported macro(宏定义) -------------------------*/
#define FAULT_ACTION_CACHE_SIZE 16 //故障动作缓存大小
/*------ Exported struct(结构体定义) --------------------*/
typedef enum
{
E_FAULT_NULL = 0,
//常规停止代码
E_NORMAL_1000 = 1000, //1 1000 充满停止
E_NORMAL_1001, //1 1001 本地停止充电
E_NORMAL_1002, //1 1002 后台停止充电
E_NORMAL_1003, //1 1003 达到设置充电时长停止
E_NORMAL_1004, //1 1004 达到设置充电电量停止
E_NORMAL_1005, //1 1005 达到设置充电金额停止
E_NORMAL_1006, //1 1006 达到离线停机条件
E_NORMAL_1007, //1 1007 达到SOC终止条件停止
E_NORMAL_1008, //1008 用户拔枪停止
E_NORMAL_1009, //1 1009 APP停止充电
E_NORMAL_1010, //1010 车端S2主动断开
E_NORMAL_1011, //1 1011 BMS停止充电
E_NORMAL_1012, //1 1012 账户余额不足
E_NORMAL_1013, //1 1013 预付金额不足
E_NORMAL_1014, //1014 车辆S2闭合超时
E_NORMAL_1015, //1015 充电中车辆S2断开超时
E_NORMAL_1016, //1016 达到涓流充电停机条件
//直流充电设备异常代码
E_FAULT_13000 = 13000, //1 13000 交流输入断路器故障
E_FAULT_13001, //1 13001 避雷器故障
E_FAULT_13002, //1 13002 交流输入接触器粘连故障
E_FAULT_13003, //1 13003 交流输入接触器拒动/误动故障
E_FAULT_13004, //1 13004 直流输出接触器粘连故障
E_FAULT_13005, //1 13005 直流输出接触器拒动/误动故障
E_FAULT_13006, //1 13006 直流输出熔断器故障
E_FAULT_13007, //1 13007 辅助电源故障
E_FAULT_13008, //13008 泄放继电器拒动/误动故障
E_FAULT_13009, //13009 泄放继电器粘连
E_FAULT_13010, //1 13010 充电枪电子锁上锁故障
E_FAULT_13011, //1 13011 充电枪电子锁解锁故障
E_FAULT_13012, //13012 PE 断线故障
E_FAULT_13013, //1 13013 充电接口过温故障
E_FAULT_13014, //1 13014 充电接口过温告警
E_FAULT_13015, //1 13015 控制导引电压异常
E_FAULT_13016, //1 13016 充电中车辆控制导引故障
E_FAULT_13017, //1 13017 急停按钮动作故障
E_FAULT_13018, //1 13018 充电桩门禁故障
E_FAULT_13019, //1 13019 充电机柜门禁故障
E_FAULT_13020, //13020 功率控制模块故障
E_FAULT_13021, //13021 功率控制模块告警
E_FAULT_13022, //1 13022 功率控制模块通信故障
E_FAULT_13023, //13023 桥接接触器拒动/误动故障
E_FAULT_13024, //13024 桥接接触器粘连故障
E_FAULT_13025, //13025 ESAM 故障
E_FAULT_13026, //13026 预留( 充电机柜加热部件故障)
E_FAULT_13027, //13027 充电桩过温故障( 可选)
E_FAULT_13028, //13028 充电桩过温告警( 可选)
E_FAULT_13029, //13029 充电机柜过温告警
E_FAULT_13030, //1 13030 充电机柜过温故障
E_FAULT_13031, //1 13031 预留( 散热系统故障)
E_FAULT_13032, //1 13032 烟感报警
E_FAULT_13033, //1 13033 充电桩水浸故障
E_FAULT_13034, //1 13034 充电机柜水浸故障
E_FAULT_13035, //13035 充电机环境湿度告警
E_FAULT_13036, //13036 数据合法性校验失败(“ 充电启动帧” 中“ 负荷控制开关” 等数据项合法性校验失败)
E_FAULT_13037, //13037 充电控制器“ 版本校验” 未完成
E_FAULT_13038, //13038 充电控制器“ 下发充电参数” 未完成
E_FAULT_13039, //1 13039 充电桩暂停服务, 拒绝启动
E_FAULT_13040, //1 13040 充电桩处于“工作” 状态, 拒绝启动
E_FAULT_13041, //1 13041 充电桩与车辆处于未连接状态,拒绝启动
E_FAULT_13042, //1 13042 绝缘监测故障
E_FAULT_13043, //1 13043 绝缘监测告警
E_FAULT_13044, //13044 充电桩执行功率分配策略失败故障( TBD)
E_FAULT_13045, //13045 预留( 输入电压过压故障) 改主机液冷故障
E_FAULT_13046, //13046 预留( 输入电压欠压故障) 改为主机柜急停
E_FAULT_13047, //1 13047 泄放回路故障
E_FAULT_13048, //1 13048 直流输出电压过压故障
E_FAULT_13049, //1 13049 直流输出电流过流故障
E_FAULT_13050, //1 13050 直流输出电压欠压故障
E_FAULT_13051, //13051 无空闲模块可用( 限智能分配功率) ( TBD)
E_FAULT_13052, //13052 电池反接故障( TBD)
E_FAULT_13053, //1 13053 预充阶段调压失败
E_FAULT_13054, //1 13054 输出电流大于车辆需求电流
E_FAULT_13055, //1 13055 充电过程中功率控制器为非工作状态
E_FAULT_13056, //1 13056 电能计量异常
E_FAULT_13057, //1 13057 车辆鉴权码不一致
E_FAULT_13058, //13058 未上送交易记录已满
E_FAULT_13059, //13059 交易记录存储失败
E_FAULT_13060, //13060 CAN 通讯版本校验异常
E_FAULT_13061, //13061 进程运行异常
E_FAULT_13062, //13062 程序文件校验失败
E_FAULT_13063, //13063 程序文件损坏
E_FAULT_13064, //1 13064 非法 VIN
E_FAULT_13065, //13065 非即插即充设备
E_FAULT_13066, //13066 充电桩处于“暂停” 状态( 27930中的暂停状态)
E_FAULT_13067, //1 13067 即插即充鉴权失败
E_FAULT_13068, //1 13068 充电桩充电中暂停超时( 27930中的暂停充电)
E_FAULT_13069, //13069 充电控制器通讯超时
E_FAULT_13070, //13070 读卡器通讯超时
E_FAULT_13071, //1 13071 电表通讯超时
E_FAULT_13072, //13072 两枪同充一车模式下充电控制器间通信超时
E_FAULT_13073, //1 13073 异常掉电
E_FAULT_13074, //1 13074 预留 液冷通讯超时
E_FAULT_13075, //13075 功率控制器间通讯超时( 功率并
E_FAULT_13076, //13076 功率控制器接收遥控、 遥信报文超时故障
E_FAULT_13077, //1 13077 功率控制器与环境信息采集模块通讯超时
E_FAULT_13078, //1 13078 车辆识别数据帧接收超时
E_FAULT_13079, //13079 充电启动命令应答超时
E_FAULT_13080, //13080 等待充电启动完成状态超时
E_FAULT_13081, //13081 充电停止命令应答超时
E_FAULT_13082, //13082 等待充电停止完成状态超时
E_FAULT_13083, //13083 充电启动完成状态确认超时
E_FAULT_13084, //13084 功率调节指令应答超时
E_FAULT_13085, //13085 充电停止完成状态确认超时
E_FAULT_13086, //13086 充电控制器间并枪时通信异常(充电控制器与充电控制器通讯超时)
E_FAULT_13087, //13087 功率控制器地址冲突(并柜时)
E_FAULT_13088, //13088 充电控制器地址冲突
E_FAULT_13089, //13089 人机通信异常
E_FAULT_13090, //1 13090 设备自检超时故障
E_FAULT_13091, //13091 内部通讯故障
E_FAULT_13092, //13092 车位锁故障
E_FAULT_13093, //13093 车位锁电池耗尽故障
E_FAULT_13094, //13094 车位锁落锁失败故障
E_FAULT_13095, //13095 终止订单号异常
E_FAULT_13096, //13096 开出盒通讯故障
E_FAULT_13097, //13097 开入盒通讯故障
E_FAULT_13098, //13098 绝缘采样盒通讯故障
E_FAULT_13099, //1 13099 直流采样盒通讯故障(AB板通讯故障)
E_FAULT_13100, //13100 导引板通讯故障
E_FAULT_13101, //13101 灯板通讯告警 //改为主机液冷通信超时
E_FAULT_13102, //13102 充电控制器未知停止原因
E_FAULT_13103, //13103 辅助电源电压切换回路故障
E_FAULT_13104, //1 13104 输出电流超过车辆最高允许电流
E_FAULT_13105, //13105 系统时钟异常
E_FAULT_13106, //13106 计费模型请求超时故障
E_FAULT_13107, //13107 计费模型不合法故障
E_FAULT_13108, //13108 对时超时故障
E_FAULT_13109, //13109 对时时间不合法故障
//直流充电电源异常代码
E_FAULT_14000 = 14000, //14000 开关模块故障
E_FAULT_14001, //1 14001 开关模块告警
E_FAULT_14002, //1 14002 开关模块通信故障
E_FAULT_14003, //14003 开关模块拒动/误动故障
E_FAULT_14004, //14004 开关模块粘连故障
E_FAULT_14005, //14005 预留(开关模块拒动/误动告警)
E_FAULT_14006, //14006 预留(开关模块粘连告警)
E_FAULT_14007, //1 14007 充电模块故障
E_FAULT_14008, //14008 充电模块过温故障
E_FAULT_14009, //1 14009 充电模块过温告警
E_FAULT_14010, //1 14010 充电模块输出短路故障
E_FAULT_14011, //1 14011 充电模块输出过流告警
E_FAULT_14012, //1 14012 充电模块输出过压告警
E_FAULT_14013, //1 14013 充电模块输出欠压告警
E_FAULT_14014, //1 14014 充电模块交流输入告警
E_FAULT_14015, //1 14015 充电模块输入过压告警
E_FAULT_14016, //1 14016 充电模块输入欠压告警
E_FAULT_14017, //1 14017 充电模块输入缺相告警
E_FAULT_14018, //14018 充电模块输入不平衡告警
E_FAULT_14019, //1 14019 充电模块通信故障
E_FAULT_14020, //1 14020 充电模块启动失败
E_FAULT_14021, //1 14021 充电模块关机失败
E_FAULT_14022, //1 14022 充电模块风扇故障
E_FAULT_14023, //1 14023 充电模块泄放故障
E_FAULT_14024, //14024 充电模块地址异常
E_FAULT_14025, //14025 PFC 电路过温故障
E_FAULT_14026, //14026 主变压器过温故障
E_FAULT_14027, //14027 DC/DC 电路过温故障
E_FAULT_14028, //14028 输出隔离二极管故障
E_FAULT_14029, //14029 模块启动故障(非保护动作造成的模块启动失败)
E_FAULT_14030, //14030 PFC 电路总故障
E_FAULT_14031, //14031 PFC 电路过压故障
E_FAULT_14032, //14032 PFC 电路偏压故障
E_FAULT_14033, //14033 DC/DC 电路总故障
E_FAULT_14034, //14034 高低压切换电路故障
E_FAULT_14035, //14035 输出电路不平衡故障
E_FAULT_14036, //1 14036 充电模块不输出告警
E_FAULT_14037, //1 14037 启动充电前直流输出接触器外侧电压大于充电机最大输出电压
E_FAULT_14038, //1 14038 启动充电前直流输出接触器外侧电压小于充电机最小输出电压
//直流充电车辆异常代码
E_FAULT_15000 = 15000, //1 15000 BMS 通讯故障
E_FAULT_15001, //1 15001 直流充电控制模块判断BMS故障
E_FAULT_15002, //1 15002 BMS 发送故障信息
E_FAULT_15003, //1 15003 BCP 充电参数配置报文超时
E_FAULT_15004, //1 15004 BRO 充电准备就绪报文超时
E_FAULT_15005, //1 15005 BCS 电池充电状态报文超时
E_FAULT_15006, //1 15006 BCL 电池充电需求报文超时
E_FAULT_15007, //1 15007 BST 中止充电报文超时
E_FAULT_15008, //1 15008 BSM 动力蓄电池状态报文超时
E_FAULT_15009, //1 15009 BRO 报文(0x00 接收超时
E_FAULT_15010, //1 15010 BRO 报文(0xAA 接收超时
E_FAULT_15011, //1 15011 BRM 车辆辨识报文超时
E_FAULT_15012, //1 15012 BSM 报文中单体动力蓄电池电压过高
E_FAULT_15013, //1 15013 BSM 报文中单体动力蓄电池电压过低
E_FAULT_15014, //1 15014 BSM 报文中 SOC 过高
E_FAULT_15015, //1 15015 BSM 报文中 SOC 过低
E_FAULT_15016, //1 15016 BSM 报文中充电过流
E_FAULT_15017, //1 15017 BSM 报文中动力蓄电池温度过高
E_FAULT_15018, //1 15018 BSM 报文中动力蓄电池绝缘状态异常
E_FAULT_15019, //1 15019 BSM 报文中连接器连接状态异
E_FAULT_15020, //1 15020 BRO 准备就绪后取消
E_FAULT_15021, //1 15021 BST 停止未知故障
E_FAULT_15022, //1 15022 BST 绝缘故障
E_FAULT_15023, //1 15023 BST 连接器过温
E_FAULT_15024, //1 15024 BST 元件、 输出连接器过温
E_FAULT_15025, //1 15025 BST 连接器故障
E_FAULT_15026, //1 15026 BST 电池组过温
E_FAULT_15027, //1 15027 BST 其他故障
E_FAULT_15028, //1 15028 BST 检测点 2 电压检测故障
E_FAULT_15029, //1 15029 BST 高压继电器故障
E_FAULT_15030, //1 15030 BST 电流过大
E_FAULT_15031, //1 15031 BST 电压异常
E_FAULT_15032, //1 15032 BRM 报文数据项异常(报文数据长度错误, BMS 通信协议版本号错误, 其他数据错误)
E_FAULT_15033, //1 15033 BCP 报文数据项异常(报文数据长度错误, 电池当前电压越限,其他数据项错误)
E_FAULT_15034, //1 15034 绝缘监测前直流输出接触器外侧电压越限(60V)
E_FAULT_15035, //1 15035 启动充电前直流输出接触器外侧电压与通信报文电池电压相差>±5%
E_FAULT_15036, //1 15036 电池最高允许充电电压小于充电机最小输出电压
E_FAULT_15037, //1 15037 输出电压大于车辆最高允许充电电压
E_FAULT_15038, //1 15038 需求电流超过车辆最高允许充电电流
E_FAULT_15039, //1 15039 需求电压超过车辆最高允许充电电压
E_FAULT_15040, //1 15040 BCS 中最高单体电池电压超过BCP 中最高允许单体电池电压
E_FAULT_15041, //1 15041 BSM 中最高动力蓄电池温度超过BCP 中单体动力蓄电池最高允许温度
E_FAULT_15042, //1 15042 SOC 达到上限值
E_FAULT_15043, //1 15043 BMS 通信协议版本不匹配
E_FAULT_15044, //1 15044 输出电流大于最高允许充电电流
E_FAULT_15045, //1 15045 电池端电压大于电池最高允许充电电压
E_FAULT_15046, //1 15046 SOC 达到 100 持续请求大电流(可选)
E_FAULT_16000 = 16000, //1 16000 液冷高压力故障
E_FAULT_16001, //1 16001 液冷低压力故障
E_FAULT_16002, //1 16002 液冷低液位故障
E_FAULT_16003, //1 16003 液冷循环泵过流故障
E_FAULT_16004, //1 16004 循环泵欠压报警
E_FAULT_16005, //1 16005 循环泵过压报警
E_FAULT_16006, //1 16006 循环泵过温报警
E_FAULT_16007, //1 16007 循环泵堵转报警
E_FAULT_16008, //1 16008 循环泵通信故障报警
E_FAULT_16009, //1 16009 低流量报警报警
E_FAULT_16010, //1 16010 高流量报警报警
E_FAULT_16011, //1 16011 风机过流报警
//主机故障
E_FAULT_17000 = 17000, //主机急停故障
E_FAULT_17001, //主机门禁
E_FAULT_17002, //主机水浸
E_FAULT_17003, //主机防雷
E_FAULT_17004, //主机烟感
E_FAULT_17005, //主机充电枪通信超时
E_FAULT_17006, //主机风扇调速通信超时
E_FAULT_17007, //主机计量计费 电表跳变故障
E_FAULT_17008, //主机计量计费 长时间未更新故障
E_FAULT_17009, //主机计量计费 费率异常故障
E_FAULT_17010, //主机
E_FAULT_17999, //主机故障范围
}E_FAULT_INFO;
//故障位置
typedef enum
{
E_WHOLE_PILE = 0, //整桩-终端
E_WHOLE_HOST = 500, //整桩-主机-功率分配
E_GUN = 1000, //枪地址
E_CHAR_MDU = 2000, //充电模块地址
E_SWH_MDU = 3000, //开关模块地址
E_OTHER = 4000, //其他位置
}E_FAULT_SITE;
//故障类型
typedef enum
{
E_RES = 0, //恢复
E_FAULT, //故障
E_WARN, //警告
}E_FAULT_TYPE;
typedef struct
{
U8_T u8_type; //拔枪恢复使能 0拔枪不恢复 1拔枪恢复
E_FAULT_SITE e_ingun; //归属枪号 0无 1一枪 2二枪
E_FAULT_INFO e_mag; //当前故障结构体数组
Comm_Time time; //动作时间
}Fault_data;
//实时故障告警数据
typedef struct
{
U8_T u8_fault_cnt; //故障数量
U8_T u8_warn_cnt; //告警数量
Fault_data fault_data[CURR_FAULT_MAX_CNT];
Fault_data warn_data[CURR_ALARM_MAX_CNT];
}REAL_FAULT_DATA_T;
typedef enum
{
E_FAULT_GET_DATA_EMERGENCY = 0, //急停
E_FAULT_GET_DATA_DOOR, //门禁
E_FAULT_GET_DATA_WARTER, //水浸
E_FAULT_GET_DATA_SPD, //防雷状态
E_FAULT_GET_DATA_SMOKE, //烟感
E_FAULT_GET_DATA_GUN_DC_FUSE, //直流熔断器状态
E_FAULT_GET_DATA_GUN_TEMP_THRESHOLD, //枪温阈值 精度 0.1度
E_FAULT_GET_DATA_GUN_TEMP, //枪温 精度 0.1度 参数值 0正极枪温 1负极枪温
E_FAULT_GET_DATA_GUN_CNT, //枪数量
E_FAULT_GET_DATA_DOOR_EN, //门禁使能
E_FAULT_GET_DATA_AC_CONTACT_EN, //交流接触器使能(与 sharedata bit_AcContactEna 一致)
E_FAULT_GET_DATA_GUN_LINK, //枪连接标志 0未连接 1已连接
E_FAULT_GET_DATA_GUN_CHAR_FLAG, //充电充电标志 0未充电 1充电中
E_FAULT_GET_DATA_AC_KM, //交流输入接触器反馈 0断开 1闭合(YX_PILE_KM
E_FAULT_GET_DATA_BUS_KM, //母联直流接触器反馈 0断开 1闭合(YX_PILE_BUS_KM
E_FAULT_GET_DATA_BUS_KM_EN, //母联继电器使能标识
E_FAULT_GET_DATA_FLOW_STATE, //枪 u8_gunNo 充电流程状态,与 flow 中 E_FLOW_STATE 一致
E_FAULT_GET_DATA_CHAR_TIME, //枪充电持续时间 秒(故障模块统一取数,内部转调 flow)
E_FAULT_GET_DATA_GUN_DC_KM_POS, //枪正母线直流输出接触器遥信 0断 1合
E_FAULT_GET_DATA_GUN_DC_KM_NEG, //枪负母线直流输出接触器遥信 0断 1合
}E_FAULT_GET_DATA_TYPE;
//故障动作缓存项
typedef struct
{
E_FAULT_SITE f_site; //故障位置
E_FAULT_TYPE type; //动作类型
E_FAULT_INFO e_info; //故障信息
U8_T action_type; //拔枪恢复使能
S16_T data1; //测量值1
S16_T data2; //测量值2
}FAULT_ACTION_CACHE_ITEM_T;
//故障动作缓存队列
typedef struct
{
FAULT_ACTION_CACHE_ITEM_T items[FAULT_ACTION_CACHE_SIZE];
U8_T front; //队列头
U8_T rear; //队列尾
U8_T count; //队列中元素数量
}FAULT_ACTION_CACHE_T;
/*------ Exported variables(变量定义) -------------------*/
extern const char fault_site_mag[3][20];
/*------ Exported function prototypes (函数声明) -------*/
void v_get_fault_info(E_FAULT_INFO e_info , char *mag ,U16_T u16_len);
void v_set_fault_data(E_FAULT_SITE f_site ,E_FAULT_TYPE type , E_FAULT_INFO e_info, U8_T action_type, S16_T data1 , S16_T data2);
U8_T u8_get_fault_sum(U8_T u8_seat, U8_T u8_flag);
void v_get_fault_data(REAL_FAULT_DATA_T *rl_data);
U8_T u8_cheak_fault_flag(E_FAULT_INFO e_info , E_FAULT_SITE f_site);
void v_fault_get_site_mag(E_FAULT_SITE e_site , char *mag , U8_T u8_len);
//故障动作缓存相关函数
void v_fault_cache_init(void);
U8_T u8_fault_cache_add(E_FAULT_SITE f_site ,E_FAULT_TYPE type , E_FAULT_INFO e_info, U8_T action_type, S16_T data1 , S16_T data2);
void v_fault_cache_process(void);
//对内使用函数接口
U16_T u16_fault_get_sys_data(U8_T u8_gunNo,E_FAULT_GET_DATA_TYPE e_dataType,U16_T u16_dataPara);
#ifdef __cplusplus
}
#endif
#endif /* FAULT_INTERFACE_H */