/** * @file bs_ies_interface.h * @brief 积成 IES 平台协议报文层 * * 帧格式、帧类型码定义及组包/解包函数声明。 * 帧头 0x68,设备地址 16 字节 ASCII 桩编号。 */ #ifndef BS_IES_INTERFACE_H #define BS_IES_INTERFACE_H #ifdef __cplusplus /*C++编译环境下兼容C语言*/ extern "C" { #endif /*------ Exported includes(头文件) ----------------------*/ #include "main.h" #if (BS_IES_EN) /*------ Exported macro(宏定义) -------------------------*/ /************积成通信协议帧结构********************* * 帧起始域 1字节 0x68 * 帧长度域 2字节 从序列号域到帧数据域,高字节在前,低字节在后 * 序列号域 1字节 数据包发送顺序号,从0开始,应答帧则同询问包 * 设备地址 16字节 ASCII * 加密方式 1字节 0不加密,1AES加密,登录帧和确认帧加密方式为0 * 数据对象 1字节 高2位:0直流1交流2交直流;低6位标识枪号,0代表充电机本体 * 帧类型码 1字节 * 帧数据域 N字节 * 校验和 1字节 序列号域到帧数据域 **************************************************/ #define NT_PTL_VERSION 37 //通信协议版本V3.5 #define NT_HEADER 0x68 //帧头 //数据对象 #if BS_TYPE_JIMO_EN //即墨平台使能,则桩类型为液冷充电桩。否则为直流桩 #define NT_DC_PILE 3 //直流桩 //#define NT_AC_PILE 1 //交流桩 //直流桩 0积成平台 3即墨平台 #else #define NT_DC_PILE 0 //直流桩 //#define NT_AC_PILE 1 //交流桩 //直流桩 0积成平台 3即墨平台 #endif #define NT_0B_MASK_H 0xC0 //高2位掩码 #define NT_0B_MASK_L 0x3F //低6位掩码 #define NT_ID_PILE 0 //充电桩本体 #define NT_ID_GUN1 1 //1号充电枪 #define NT_ID_GUN2 2 //2号充电枪 /************帧类型码宏定义************/ //登录心跳帧类型码数据定义 #define NT_LOGIN_REQ 0x01 //登录请求 #define NT_LOGIN_ACK 0x02 //登录应答 #define NT_TICK_REQ 0x03 //心跳请求 #define NT_TICK_ACK 0x04 //心跳应答 #define NT_FEE_MODULE_REQ 0x05 //计费模型请求 #define NT_FEE_MODULE_ACK 0x06 //计费模型应答 #define NT_QR_REQ_DIS_ACK 0x07 //二维码下发应答 #define NT_QR_REQ_DIS 0x08 //二维码下发 #define NT_QR_REQ_CALL_ACK 0x09 //二维码召唤应答 #define NT_QR_REQ_CALL 0x0A //二维码召唤帧 //实时数据帧类型码数据定义 #define NT_GUN_DATA_CHGING 0x11 //直流充电枪充电中实时数据 #define NT_GUN_DATA_FREE 0x13 //直流充电枪非充电中实时数据 #define NT_FAULT_DATA 0x15 //直流充电桩故障告警数据上传 #define NT_MDU_DATA_REQ 0x16 //运营平台整流模块数据读取 rectifier module整流模块 #define NT_MDU_DATA_ACK 0x17 //充电桩整流模块数据应答 //表底值上送 #define NET_METER_DATA 0x31 //表底值上送 //运营交互帧类型码数据定义 #define NT_START_CHG_REQ 0x41 //充电桩主动申请启动充电 #define NT_START_CHG_ACK 0x42 //平台确认启动充电 #define NT_REMOTE_START_ACK 0x43 //充电桩回复远程启机 #define NT_REMOTE_START_REQ 0x44 //平台远程控制启机 #define NT_REMOTE_STOP_ACK 0x45 //充电桩远程停机命令回复 #define NT_REMOTE_STOP_REQ 0x46 //平台远程停机 #define NT_BILL_UPLOAD 0x47 //充电结算帐单上传 #define NT_BILL_UPLOAD_ACK 0x48 //平台结算账单确认 #define NT_USERACNTINFO_REQ 0x49 //充电桩主动申请查询用户账户信息(未用) #define NT_USERACNTINFO_ACK 0x4A //平台回复查询用户账单信息(未用) #define NT_CARD_BILL_UPLOAD 0x4B //充电桩刷卡结算订单上传 #define NT_CARD_BILL_UPLOAD_ACK 0x4C //平台刷卡结算订单应答 //运营平台设置帧类型码数据定义 #define NT_WORK_PARA_CFG_ACK 0x71 //充电桩应答工作参数设置 #define NT_WORK_PARA_CFG_REQ 0x72 //平台设置工作参数 #define NT_WORK_PARA_QUERY_ACK 0x73 //充电桩应答工作参数查询 #define NT_WORK_PARA_QUERY_REQ 0x74 //平台查询工作参数 #define NT_CLK_SYNC_ACK 0x75 //充电桩应答平台对时 #define NT_CLK_SYNC_REQ 0x76 //平台对时 #define NT_REMOTE_OPRT_ACK 0x77 //充电桩应答平台远程操作 #define NT_REMOTE_OPRT_REQ 0x78 //平台远程操作 #define NT_LCD_SHOW_ACK 0x79 //充电桩应答平台触发液晶屏显示(用户电话) #define NT_LCD_SHOW_REQ 0x7A //平台触发液晶屏显示内容 #define NT_UNLOCK_CARD_REQ 0x7B //充电桩请求解锁卡 #define NT_UNLOCK_CARD_ACK 0x7C //平台应答解锁卡请求 #define NT_FEE_CFG_REQ 0x7D //平台设置计费模型 #define NT_FEE_CFG_ACK 0x7E //充电桩应答模型设置 //远程升级数据定义 #define NT_UPGRADE_RQ 0x80 //平台发送远程升级指令 #define NT_UPGRADE_DATA_REQ 0x81 //桩向平台请求文件内容(多次执行,直至文件传输完毕) #define NT_UPGRADE_DATA_ACK 0x82 //平台应答文件内容请求 #define NT_UPDATE_AUTO 0x90 //平台FTP升级请求 #define NT_UPDATE_AUTO_ACK 0x93 //充电桩主动上传FTP文件传输结果 /*------ Exported struct(结构体定义) --------------------*/ /*------ Exported variables(变量定义) -------------------*/ typedef enum /* 积成智通后台通信协议-订单上送-启机失败/停机原因 */ { IESZT_NORMAL=0, //0正常 IESZT_STARTING_FAULT, //1启动中有报警 IESZT_INSU_FAIL, //2绝缘检测失败 IESZT_DY_SWCH_FAIL, //3控制辅源电压检测切换失败 IESZT_DY_FAIL, //4投辅源失败 IESZT_STARTING_BATVOLT_FAIL = 6, //6启动中,检测电池电压失败 IESZT_KM_ON_FAIL, //7合直流输出开关失败 IESZT_MDU_STAT_FAIL, //8模块启动失败 IESZT_CHGING_FAULT, //9充电中有报警 IESZT_CHGING_GUN_UNCNCT, //10充电中,检测到枪未连接到车上 IESZT_CHGING_DY_OFF, //11充电中未检测到辅源 IESZT_CHGING_BATVOLT_FAIL, //12充电中未检测到电池电压 IESZT_CARD, //13刷卡停机 IESZT_NO_BALANCE, //14余额不足 IESZT_BMS_ABNMAL, //15充电中BMS异常停机 IESZT_BMS_FULL, //16充电中BMS充满停机 IESZT_STARTING_UNDERPOWER, //17启动中,辅助桩功率不足 IESZT_BMS_DMD_VOLT_OVER, //18充电中,BMS需求电压越限 IESZT_CURR_OVER, //19充电中,过流 IESZT_GUN_TEMP_OVER, //20充电中,枪温过温 IESZT_BMS_TO, //21 BMS通信超时 IESZT_BMS_COMM_INTRPUT= 24, //24 BMS通信中断 IESZT_LH_KM_OFF, //25 充电中,联合开关未合 IESZT_LL_KM_ON, //26 充电中,边界联络开关未分 IESZT_APP_STOP, //27 APP停止充电 IESZT_K1K2_OFF, //28 K1/K2闭合失败 IESZT_LOCK_GUN_FAIL = 30, //30 锁枪失败 IESZT_OUT_VOLT_LOW = 33, //33 启机时,输出电压不达标 IESZT_INSU_TO, //34 绝缘检测超时 IESZT_BSM_STOP, //35 bsm终止 IESZT_TO= 37, //37 超时重试 IESZT_RELIEF_ON = 42, //42 启机过程中泄放继电器非法合 IESZT_MONEY_OK, //43 达到设定金额 IESZT_TIME_OK, //44 达到设定时长 IESZT_POWER_OK, //45 达到设定电量 IESZT_URGENCY = 50, //50 急停 IESZT_ACS, //51 门禁 IESZT_WATER, //52 水浸 IESZT_FS, //53 防雷 IESZT_OVER_TEMP, //54 环温过温 IESZT_UNDER_TEMP, //55 环温过低 IESZT_CARdREADER_COMM, //56 读卡器通信故障 IESZT_LCD_COMM, //57 LCD通信故障 IESZT_KM_ERRACT, //58 母联直流接触器拒动/误动 IESZT_KM_ADHESION, //59 母联直流接触器粘连 IESZT_WHM_COMM, //60 电表通信故障 IESZT_FUSE, //61 直流熔断器故障 IESZT_GUN_KM_ADHESION, //62 #号枪对应直流输出接触器黏连故障 - 空闲,应断开,但检测到为闭合 IESZT_MDU_COMM_DOWN, //63 所有模块通信中断 IESZT_PRE_CHGOT, //64 充电机预充超时 IESZT_bms_BHM_OT, //65 BHM报文接收超时 IESZT_BMS_BRM_OT, //66 BRM报文接收超时 IESZT_BMS_BRM_ERR, //67 BRM报文数据异常 - 报文数据长度错误,版本协议错误 IESZT_BMS_BCP_OT, //68 BCP报文接收超时 IESZT_BMS_BCP_ERR, //69 BCP报文数据异常 - 报文数据长度错误,电池当前电压越限 IESZT_BMS_BRO_00_OT, //70 BRO报文(0x00)接收超时 IESZT_BMS_BRO_AA_OT, //71 BRO报文(0xAA)接收超时 IESZT_BMS_BCS_OT, //72 BCS报文接收超时 IESZT_BMS_VOLTPARA_MISMTCH, //73 电池最高允许充电电压小于充电机最小输出电压 IESZT_BATV_OVER10, //74 绝缘检测前直流输出接触器外侧电压>=10V IESZT_BATV_BMSV_OVER5, //75 启动充电前直流输出接触器外侧电压与通信报文电池电压相差》=-5% IESZT_OUTV_BATV_1TO10, //76 预充电时输出电压不在电池电压-(1V~10V)范围内 IESZT_VIN_ERR, //77 vin清单使能,当前车vin不在清单内 IESZT_CHGCABINET_COMM_DOWN, //78 充电柜通信中断 IESZT_BMS_BCL_OT, //79 电池充电需求报文BCL接收超时 IESZT_BMS_BAT_BCS_OT, //80 电池充电总状态报文BCS接收超时 IESZT_BMS_BSM_OT, //81 动力蓄电池状态信息BSM接收超时 IESZT_BMS_BSM_OVERU, //82 BSM - 单体动力蓄电池电压过高 IESZT_BMS_BSM_BELOWU, //83 BSM - 单体动力蓄电池电压过低 IESZT_BMS_BSM_OVERSOC, //84 BSM - 整车动力蓄电池荷电状态SOC过高 IESZT_BMS_BSM_BELOWSOC, //85 BSM - 整车动力蓄电池荷电状态SOC过低 IESZT_BMS_BSM_OVERI, //86 BSM - 动力蓄电池充电过电流 IESZT_BMS_BSM_OVERT, //87 BSM - 动力蓄电池温度过高 IESZT_BMS_BSM_INSUERR, //88 BSM - 动力蓄电池绝缘状态异常 IESZT_BMS_BSM_CONNERR, //89 BSM - 动力蓄电池组输出连接器连接状态异常 IESZT_BMS_BSM_FORBIT, //90 BSM - 禁止充电 IESZT_BMS_BST_OT, //91 BST报文接收超时 IESZT_BMS_BST_U_OK, //92 BST - 达到总电压设定值 IESZT_BMS_BST_SNGUOK, //93 BST - 达到单体电压设定值 IESZT_BMS_BST_INSUERR, //94 BST - 绝缘故障 IESZT_BMS_BST_CONN_OVERT, //95 BST - 输出连接器过温 IESZT_BMS_BST_CELL_OVERT, //96 BST - BMS元件过温/输出连接器过温 IESZT_BMS_BST_CONN_ERR, //97 BST - 充电连接器故障 IESZT_BMS_BST_BAT_OVERT, //98 BST - 电池组温度过高 IESZT_BMS_BST_HVRELAY_ERR, //99 BST - 高压继电器故障 IESZT_BMS_BST_2U_ERR, //100 BST - 检测点2电压检测故障 IESZT_BMS_BST_ELSE, //101 BST - 其他故障 IESZT_BMS_BST_OVERI, //102 BST - 电流超过需求值 IESZT_BMS_BST_U_ABNORML, //103 BST - 电压异常 IESZT_BMS_BEM, //104 BEM - 错误报文 IESZT_OUTPUT_VOLT_OVER, //105 直流输出过压 IESZT_OUTPUT_VOLT_LOW, //106 直流输出不达标 IESZT_GUNLOCK_ERR, //107 枪锁状态错误 IESZT_SMOKE_ERR, //108 烟感告警 } IESZT_REASON_E; typedef enum //星星充电-订单上送-启机失败/停机原因 { STAR_PILE_STOP = 0, //0 桩主动停止 STAR_URGENCY, //1 急停按键被按下 STAR_WHM_COMM, //2 电表通信故障 STAR_CARdREADER_COMM, //3 读卡器通信故障 STAR_PE_FAULT, //4 接地故障 STAR_MDU_COMM_DOWN, //5 电源模块通信故障 STAR_ALL_MDU_COMM_DOWN, //6 电源模块全部通信故障 STAR_OVER_TEMP, //7 过温故障 STAR_ELE_LEAKAGE, //8 漏电故障 STAR_METER_DATA_ABNOEMAL, //9 电表数据异常停止充电 SATR_ACS, //10 舱门打开停止充电 STAR_URGENCY_PRESS, //11 急停按键被按下(直流专用) STAR_FCI = 17, //17 FCI故障-部分模块通讯故障(用作开关模块故障) STAR_INVALID_CURR, //18 无有效电流停止(交流充满,车载故障等) STAR_LOW_BLANCE, //19 余额不足停止 STAR_GUNLINK_INTERUPTED, //20 充电连接器断开停止 STAR_CARD_STOP, //21 刷卡停止 STAR_BMS_STOP, //22 BMS正常停止(直流充满) STAR_APP_STOP, //23 手机APP或者微信停止 STAR_SCREEN_STOP, //24 触控屏手动停止 STAR_BMS_CONN_ERR, //25 BMS通信故障 STAR_DC_ELECT_SHORT, //26 充电机输出短路 STAR_MDU_HARD_ERR, //27 模块硬件故障 STAR_OUTPUT_OVER_CURR, //28 充电机输出过流 STAR_PILE_OVER_TEMP, //29 充电机过温保护 STAR_OUTPUT_OVER_VOL, //30 充电机输出过压 STAR_INPUT_OVER_VOL, //31 充电机输入过压 STAR_INPUT_LOW_VOL, //32 充电机输入欠压 STAR_BLEED_ERR, //33 泄放电阻放电故障(未能在规定时间电压降至60V以下) STAR_BEM_ALARM, //34 BEM报警 STAR_INSUAL_ERR, //35 充电机绝缘检测故障 STAR_GUNLINK_ERR, //36 充电枪未正确连接 STAR_BATT_REVERSE, //37 电池反接故障 STAR_BATT_ABNORMAL, //38 电池异常 STAR_BSD_OVERTIME, //39 BSD超时 STAR_BST_OVERTIME, //40 BST超时 STAR_BCL_OVERTIME, //41 BCL超时 STAR_BRO_OVERTIME, //42 BRO超时 STAR_BCP_OVERTIME, //43 BCP超时 STAR_BRM_OVERTIME, //44 BRM超时 STAR_BMS_OTHER_ERR, //45 BMS其他故障 STAR_BMS_VOL_ABNORMAL, //46 BMS检测电压异常 STAR_BMS_CURR_OVER, //47 BMS检测电流过大 STAR_BMS_BATT_OVER_TEMP, //48 BMS电池组过温 STAR_BMS_COMPOENT_OVER_TEMP,//49 BMS元件过温 STAR_BMS_CONNECTOR_OVER_TEMP,//50 BMS输出连接器过温故障 STAR_BMS_INSUAL_ERR, //51 Bms绝缘故障 STAR_CAR_STOP, //52 车载停止 STAR_SWITCH_CHARGE_WAIT, //53 切换充等待中(用作避雷器故障) STAR_PLAT_CONN_ERR, //54 与后台通信故障 STAR_PLAT_STOP, //55 后台停止 STAR_TIME_OK, //56 达到设置充电时长停机 STAR_POWER_OK, //57 达到设置充电电量停机 STAR_MONEY_OK, //58 达到设置充电金额停止 STAR_PILE_TERMAL_CONN_ERR, //59 主副板通信故障 STAR_POWER_OUTAGE_STOP, //60 掉电停止 STAR_K3K4_STICK, //61 辅助电源粘连 STAR_K1K2_STICK, //62 输出继电器粘连 STAR_BATTV_OVER10, //63 (启动前)继电器外侧电压大于10v停止充电 STAR_PILE_BHM_MISMATCH, //64 桩输出能力不匹配(BHM)停止充电 STAR_NEED_OVER_MAXVOL=66, //66 需求电压或充电电压大于最高允许充电电压停止充电 STAR_BRO_MAJOR_FAILURE, //67 BRO重大故障停止充电 STAR_PERCHARGE_VOL_MISMATCH,//68 预充电压不匹配停止充电 STAR_SMOKE_ERR, //69 烟雾报警(停止用) STAR_CAR_MATCH_FAILED, //70 车辆匹配失败 STAR_SOC_REACH_THRESHOLD, //71 SOC达到阀值 STAR_CARD_UNREGISTERED, //100 卡号未注册 STAR_TIME_FORMAT_ABNORMAL, //101 时间格式异常 }STAR_REASON_E; /*------ Exported function prototypes (函数声明) -------*/ void v_ies_register_req(void); void v_ies_heart(void); void v_ies_fee_req(void); void v_ies_rtd_free(U8_T gunNo); //空闲实时数据 0x13, 变位上送,120s void v_ies_rtd_chging(U8_T gunNo); //充电中实时数据 0x11 变化加间隔上送,30s void v_ies_meter_data(U8_T u8_gunNo); //表底值 0x31,30分钟上送一次 void v_ies_fault_V35(U8_T u8_gunNo); //故障告警数据 0x15, V3.5协议故障不分枪 void v_ies_bill_pack(U8_T u8_gunNo); //组上送账单 void v_ies_start_req(U8_T u8_gunNo); //主动启动充电请求 0x41 void v_ies_set_clk_sync_ack(void); void v_ies_set_fee_ack(void); void v_ies_upgrade_data_auto_ack(void); void v_ies_rmt_start_ack(U8_T u8_gunNo, U8_T serialNum ,U8_T flag); //远程启动应答 0x43, 应答帧序号跟询问帧需保持一致 void v_ies_rmt_stop_ack(U8_T u8_gunNo, U8_T serialNum); //远程停机应答 0x45 void v_ies_rmt_oprt_ack(U8_T *u8_opr_cmd, U8_T opr_result); //远程操作应答 0x77 void v_ies_heart_ack(void); void v_ies_register_ack(U8_T *u8_recvBuf); //登陆帧应答 void v_ies_fee_ack(U8_T *u8_recvBuf); //计费模型应答帧 void v_ies_set_clk_sync(U8_T *u8_recvBuf); //对时 void v_ies_set_fee(U8_T *u8_recvBuf); //计费模型设置 void v_ies_upgrade_data_auto(U8_T *u8_recvBuf); //平台应答文件内容请求 void v_ies_start_req(U8_T gunNo); //主动启动充电请求 0x41 void v_ies_rx_start(U8_T *u8_recvBuf); //运营确认启动 0x42 void v_ies_bill_upload_ack(U8_T *u8_recvBuf); //结算账单应答 void v_ies_rmt_start(U8_T *u8_recvBuf); //远程启动 void v_ies_rmt_stop(U8_T *u8_recvBuf); //远程停机 void v_ies_rmt_oprt(U8_T *u8_recvBuf) ; //远程操作 void v_ies_qr_call(U8_T *u8_recvBuf) ; //二维码召唤 void v_ies_qr_dis(U8_T *u8_recvBuf) ; //二维码下发 U8_T u8_ies_get_gunLink_state(U8_T u8_gunNo); U8_T u8_ies_get_gun_state(U8_T u8_gunNo); #endif #ifdef __cplusplus } #endif #endif /* BS_IES_INTERFACE_H */