Initial commit: CCU621_M firmware project with BLE debug link support.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-08 17:28:36 +08:00
commit 9ceb218f80
1597 changed files with 724159 additions and 0 deletions
+336
View File
@@ -0,0 +1,336 @@
/**
* @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 */