Files
CCU621M/app/plat_comm/ieszt/IES积成平台功能说明.md
T

10 KiB
Raw Blame History

IES 积成平台功能说明(CCU601E_D / plat_comm/ieszt

本文档描述 积成智通 IESZT 二进制协议在 E 工程中的落地方案、与 PlatComm 联网任务 的挂接关系,以及 S_BS_IES_CTRL_DATA 各字段含义。
上层任务状态机、双平台槽位、FTP 分时等见 《平台联网任务功能说明.md》


1. 模块定位

项目 说明
目录 app/plat_comm/ieszt/
编译宏 BS_IES_ENpublic_define.h
PlatComm 槽位 MasterFuncArray 名称 "ieszt"plat_comm_task.c);与 OCPP 并存时通常为槽位 0OCPP 为槽位 1(以 PLAT_EN 配置为准)
全局数据 s_bs_task_ctrl.s_ies_dataplat_comm_task.h,类型 S_BS_IES_CTRL_DATA
传输层 与 OCPP 共用 bs_connect_implu8_tcp_connect / v_bs_send / u16_bs_recv明文 TCP,无 WebSocket
当前阶段 登录/心跳 + 校时 + 费率 + 二维码 0x08/0x0A

2. 源文件与功能分区

BS_ocpp_ctrl.c 相同,.c 内用 #if 1 //公共 / #if 1 //发送 / #if 1 //接收 / #if 1 //外部控制使用 折叠分区(便于 Keil 大纲跳转与整段屏蔽调试)。

文件 #if 1 分区 内容
bs_ies_ctrl.c 公共 v_ies_timer_addu8_ies_timer_ctrl、定时器初值、v_ies_reset_ctxv_ies_on_login_ok
发送 v_ies_logo_onv_ies_send_ctrl
接收 v_ies_recv_datav_ies_recv_unpack
外部控制使用 v_ies_init_datav_ies_tcp_connectv_ies_private_logic
impl/bs_public_impl.c u8_get_str_data / u8_set_str_datau32_bs_get_sys_data / u8_set_sys_data(含 E_STR_QR_DISPLAYE_BS_GET_SYS_DATA_UNIX_TIMESTAMP
bs_ies_interface.c 公共 组帧头、CRC、v_ies_finish_frame_and_send
发送 v_ies_register_reqv_ies_heart_reqv_ies_fee_requ8_ies_send_ack
接收 登录/心跳/校时/费率/二维码;v_ies_unpack_handle(经 bs_public_impl 读写系统)
bs_ies_ctrl.h 协议常量、IES_SEND_TIMERS_BS_IES_CTRL_DATA、对外 API
bs_ies_interface.h 报文层对外声明

移植路线图(阶段 3+)见 ../IES积成平台移植方案.md


3. 与 PlatComm 的挂接(对照联网任务文档 §4)

3.1 七回调映射

PlatComm 回调 IES 实现 说明
v_bs_data_init v_ies_init_data 清零 s_ies_data,写入 u8_bs_flag
v_bs_tcp_connect v_ies_tcp_connect 建链前清 u8_register_flag;内部 u8_tcp_connect(id)
v_bs_logon_connect v_ies_logo_on 周期发 0x01u8_register_flag==1 时返回 1,置槽位 u8_log_on_flag
v_bs_recv_data v_ies_recv_data u16_bs_recvv_ies_unpack_handle
v_bs_recv_unpack v_ies_recv_unpack 空实现(4G 外部分包预留)
v_bs_send_ctrl v_ies_send_ctrl 已登录后周期发 0x030x05(未获费率时)
v_bs_private_logic v_ies_private_logic u8_heart_outTime_cnt 超限 → v_set_bs_renew

调度顺序与 v_plat_comm_network_round 一致,见 平台联网任务功能说明.md §4.3

3.2 与 S_BS_CTRL_DATA 的分工

数据 位置 用途
TCP/登录标志 s_bs_ctrl[i].u8_TCP_connect_flag / u8_log_on_flag PlatComm 通用状态机
IES 协议态 s_ies_data 登录应答、心跳计数、s_timerCnt[] 周期定时、序列号等
槽位号 s_ies_data.u8_bs_flag iE_STR_PILE_NO 第三参数、v_bs_send(id) 一致

4. 运行态结构 S_BS_IES_CTRL_DATA

所有 IES 私有计时与计数集中在 s_bs_task_ctrl.s_ies_datav_ies_reset_ctx / memset 时一并清零)。

字段 类型 含义
u8_bs_flag U8 PlatComm 槽位 0/1;对应 E_BS_GET_SYS_DATA_PLAT_EN 与桩编号 E_STR_PILE_NOu8_dataPara
u8_register_out_cnt U8 已发 0x01、仍未收到 0x02 的累计次数;超过 BS_IES_LOGIN_RETRY_MAX 触发 v_set_bs_renew
u8_heart_outTime_cnt U8 已发 0x03、仍未收到 0x04 的连续次数;由 v_ies_heart_req 递增、v_ies_heart_ack 清零
u8_register_flag U8 1 = 平台登录成功(0x02 且结果字节为 0);为 1 时 v_ies_logo_on 返回 1
u8_syn_time_flag U8 1 = 已完成平台校时(登录成功或收到 0x76
u8_ask_fee_flag U8 1 = 已获取/下发费率,不再周期发 0x05
u16_msgSerialNumber U16 自发帧序列号(组帧头时 s16_serialNum<=0 自增)
ulong_restart_timer ULONG 最近一次 TCP 建链成功时刻(get_current_seconds
s_timerCnt[] 数组 与 OCPP OCPP_DATA_CTRL.s_timerCnt 同结构:u16_timerCnt 每秒 +1u16_timeNUM 为周期(秒)
ack_ctrl[] 指针数组 平台下行需应答帧的异步队列(IES_DATA_RECV_ACK,同 OCPP ack_ctrl);v_ies_send_ctrl 每轮上送一条

4.1 IES_SEND_TIMER 与默认周期(v_ies_init_timer_period

枚举 默认 u16_timeNUM(秒) 说明
IES_TIMER_LOGIN BS_IES_LOGIN_INTERVAL_S20 v_ies_logo_on 发 0x01
IES_TIMER_HEART BS_IES_HEART_INTERVAL_S20 v_ies_send_ctrl 发 0x03
IES_TIMER_FEE_MODULE 30 登录后周期发 0x05 直至 0x060x7D 写入费率
IES_TIMER_FREE_DATA_GUN1/2 180 空闲实时 0x13
IES_TIMER_CHG_DATA_GUN1/2 30 充电实时 0x15
IES_TIMER_METER_GUN1/2 3600 电表
IES_TIMER_TRADE_GUN1 10 账单

内部接口(bs_ies_ctrl.c,与 OCPP 同名语义):v_ies_timer_add() 每秒递增;u8_ies_timer_ctrl(cmd, GET_FLAG/CLEAR_FALG) 查询到时或清零。


5. 登录与心跳流程

[TCP 未连接]
  v_ies_tcp_connect → u8_tcp_connect
      (清 u8_register_flagCLEAR_FALG LOGIN/HEART 定时器)

[TCP 已连接,未登录]
  v_ies_logo_on → v_ies_timer_add
      IES_TIMER_LOGIN 到时 → v_ies_register_req
      收到 0x02 且 [BODY]==0 → v_ies_on_login_ok(含首包心跳定时到点)
      超时次数 > BS_IES_LOGIN_RETRY_MAX → v_set_bs_renew + v_ies_reset_ctx

[已登录,u8_log_on_flag==1]
  v_ies_send_ctrl → v_ies_timer_add
      IES_TIMER_HEART 到时 → v_ies_heart_req
      u8_ask_fee_flag==0 且 IES_TIMER_FEE_MODULE 到时 → v_ies_fee_req
  v_ies_recv_data → 0x04 → v_ies_heart_ack
                  → 0x76 → v_ies_set_clk_syncv_bs_set_timeack 挂入 ack_ctrl
                  → 0x7D → 解析费率 → v_bs_save_fee_data0x7E 挂入 ack_ctrl

  v_ies_send_ctrl → ack_ctrl 非空 → u8_ies_send_ack → v_ies_free_ack_data

  v_ies_private_logic → v_ies_timer_add
      u8_heart_outTime_cnt > BS_IES_HEART_MISS_MAX → v_set_bs_renew

6. 0x68 帧与已实现命令

帧域下标见 bs_ies_ctrl.hIES_FRM_OFF_*(与 A 工程 u8_recvBuf[21/22/23] 一致)。

类型码 方向 函数
0x01 上行 v_ies_register_req
0x02 下行 v_ies_register_ack
0x03 上行 v_ies_heart_req
0x04 下行 v_ies_heart_ack
0x05 上行 v_ies_fee_req
0x06 下行 v_ies_fee_module_ackv_bs_save_fee_data
0x07 上行 u8_ies_send_ack 二维码下发应答
0x08 下行 v_ies_qr_disQRDisplay[] + Flash
0x09 上行 u8_ies_send_ack 二维码召唤应答
0x0A 下行 v_ies_qr_call
0x75 上行 v_ies_clk_sync_ack
0x76 下行 v_ies_set_clk_syncv_bs_set_time
0x7D 下行 v_ies_fee_cfg_req
0x7E 上行 v_ies_fee_cfg_ack
其它 v_ies_rx_cmd_handle 打日志占位

7. 配置与联调要点

配置项 接口 说明
平台使能 E_BS_GET_SYS_DATA_PLAT_EN 槽位 0/1 与 MasterFuncArray 下标一致
联网方式 E_BS_GET_SYS_DATA_NET_TYPE 0=4G1=网口;IES 与 OCPP 共用同一套 connect
桩编号 E_STR_PILE_NO + u8_bs_flag 双平台时平台 A/B 各一套桩号
枪数 / 故障 E_BS_GET_SYS_DATA_GUN_NUMNOW_FAULT_ALARM_NUM 登录帧、心跳帧组帧

双平台 + 单 4G TCP:产品与 PLAT_EN 需约定主平台;详见移植方案「风险」章节。

FTP 升级中v_ies_recv_datau8_updata_flag!=0 且 4G 时跳过收包(与 OCPP 策略一致,见联网任务文档 §4.4)。


8. 日志

定义位置 说明
IES_PRINT_FLAG plat_comm_task.h 0xFE,与 OCPP_PRINT_FLAG(0xFF) 同类:不受 u8_task_log_flag 门控时默认输出
IES_PRINTF_LOG bs_ies_ctrl.h MYLOG_MSG(IES_PRINT_FLAG, …)ieszt 目录内请用此宏,勿用 Plat_Comm_LOG
日志 含义
IES: init slot= v_ies_init_data
IES: login req pile= 发出 0x01
IES: login ok / login fail 0x02 解析结果
IES: heartbeat tx cnt= 发出 0x03(含未应答计数)
IES: heartbeat ack 收到 0x04
IES: clk sync / clk sync ack 0x76 校时 / 0x75 应答
IES: fee module req / fee model saved 0x05 请求 / 0x06·0x7D 落盘
IES: login timeout, renew / heartbeat miss, renew 触发 v_set_bs_renew

9. 关联文档

文档 内容
平台联网任务功能说明.md PlatComm 任务、双槽状态机、FTP 分时、v_set_bs_renew
IES积成平台移植方案.md A→E 分阶段移植清单
4g_module/4G模块AT指令配置功能说明.md 4G TCP/FTP 与 PlatComm 分时
impl/bs_public_impl.h E_STR_* / E_BS_GET_SYS_DATA_* 枚举

文档版本:与 plat_comm/ieszt 源码同步;结构体字段变更时请同步更新 §4。