跳转至

CatST Protocol:下载、监控与在线变量协议

本文档定义 CatST 工具链与设备 Runtime 交互所需的协议能力。协议实现可以随硬件剪裁,但 CatST 下载、RUN/STOP、在线变量和诊断读取的语义必须保持一致。现场调试和下载以串口维护协议为主,不依赖 J-Link。


1. 通信定位

CatST 协议能力分三类:

类别 用途
在线变量访问 读取 X/Y/R/M/D/T/C/S/E,受控写 M/D 和测试输出
运行控制 GET_STATUS、STOP、RUN、CLEAR_FAULT
程序下载 ENTER_DOWNLOAD、DL_BEGIN、DL_DATA、DL_END、DL_ABORT

协议必须支持现场无 J-Link 闭环:

读取设备信息
匹配 Profile
STOP
确认输出关闭
进入 Bootloader
下载 App
校验并复位到 STOP

第一版推荐:

Modbus RTU:普通变量读写、参数和状态
自定义维护协议:RUN/STOP、设备信息、在线变量、下载和 Bootloader

后续 EtherCAT/CANopen/以太网不替代 CatST 下载协议;它们作为 Runtime 通信能力,通过过程映像与 CatST 交互。


2. 串口参数建议

默认:

波特率:115200
数据位:8
校验:None
停止位:1
流控:None
站号:1~247

下载阶段可支持 115200 或 230400。低成本硬件优先 115200,减少兼容风险。


3. Modbus RTU 能力

建议支持功能码:

功能码 名称 用途
01 Read Coils 读 Y/R/M
02 Read Discrete Inputs 读 X
03 Read Holding Registers 读 D/参数/状态
04 Read Input Registers 读只读状态
05 Write Single Coil 写 M 或测试输出
06 Write Single Register 写 D 或参数
15 Write Multiple Coils 批量写 M
16 Write Multiple Registers 批量写 D/参数

限制:

  1. RUN 模式默认禁止直接写 Y/R。
  2. STOP/FACTORY 模式可受控测试输出。
  3. M/D 是否允许 RUN 在线写入由权限配置决定。
  4. S/E/T/C 状态默认只读。

4. 维护协议帧

建议帧格式:

SOF1 SOF2 VER ADDR CMD SEQ LEN DATA CRC16
字段 长度 说明
SOF1 1 0xA5
SOF2 1 0x5A
VER 1 协议版本
ADDR 1 设备站号
CMD 1 命令
SEQ 2 序号,小端
LEN 2 DATA 长度,小端
DATA N 载荷
CRC16 2 从 VER 到 DATA 的 CRC16

建议 DATA 最大长度:

类型 长度
普通命令 256 字节
下载包 512 或 1024 字节

5. 命令包络

CMD 名称 方向 用途
0x01 GET_DEVICE_INFO PC→DEV 读取设备和 App 信息
0x02 GET_STATUS PC→DEV 读取模式、故障、扫描周期
0x03 SET_MODE_STOP PC→DEV 切换 STOP
0x04 SET_MODE_RUN PC→DEV 切换 RUN
0x05 CLEAR_FAULT PC→DEV 清除允许清除的故障
0x06 READ_VARIABLES PC→DEV 读取变量区
0x07 WRITE_VARIABLES PC→DEV 写 M/D 或测试变量
0x08 READ_PARAMS PC→DEV 读取参数
0x09 WRITE_PARAMS PC→DEV 写参数
0x0A SET_RTC PC→DEV 设置 RTC
0x0B ENTER_DOWNLOAD PC→DEV 进入下载
0x20 DL_BEGIN PC→BOOT 下载开始
0x21 DL_DATA PC→BOOT 下载数据
0x22 DL_END PC→BOOT 下载结束
0x23 DL_ABORT PC→BOOT 终止下载
0x24 BOOT_GET_INFO PC→BOOT 读取 Bootloader 信息
0x25 BOOT_GET_PROFILE PC→BOOT 读取硬件 Profile 摘要,可选

Profile 可剪裁部分参数和 RTC 命令,但 RUN/STOP、状态读取、变量读取和下载命令是 CatST 工具链的核心能力。


6. 变量访问

READ_VARIABLES 请求:

Area
StartIndex
Count

Area:

区域
0x01 X
0x02 Y
0x03 R
0x04 M
0x05 D
0x06 T
0x07 C
0x08 S
0x09 E

写变量规则:

  1. X/S/E/T/C 状态只读。
  2. RUN 下默认只允许 M/D,且可由权限关闭。
  3. Y/R 只允许 STOP/FACTORY 测试输出。
  4. 所有写入必须做范围和类型检查。

7. 下载协议

进入下载:

SET_MODE_STOP
确认 STOP 和输出关闭
ENTER_DOWNLOAD
设备复位进入 Bootloader
BOOT_GET_INFO

DL_BEGIN

AppSize      uint32
AppCrc32     uint32
TargetSlot   uint8
VersionLen   uint8
VersionText  bytes

DL_DATA

Offset       uint32
ChunkLen     uint16
ChunkCrc16   uint16
ChunkData    bytes

DL_END 后 Bootloader 必须:

  1. 计算完整 CRC32。
  2. 对比 AppCrc32
  3. 校验成功后标记 App 有效。
  4. 校验失败保持旧 App 有效。
  5. 复位进入 App。
  6. App 默认 STOP。

Bootloader 下载失败时必须返回明确错误,并保持旧 App 有效状态。第一版不设计 Bootloader 自升级命令,避免现场破坏恢复链路。


8. 状态和错误

应答状态:

含义
0x00 OK
0x01 通用错误
0x02 CRC 错误
0x03 参数错误
0x04 状态不允许
0x05 权限不足
0x06 设备忙
0x07 超时
0x08 Flash 写入失败
0x09 App CRC 失败
0x0A 文件大小错误
0x0B 地址或索引错误
0x0C 只读区域不可写

工具链必须将协议错误映射为用户可理解的诊断,不只显示十六进制错误码。


9. 超时与重试

建议:

普通命令超时:500ms
下载命令超时:1000ms
单包最大重试:3 次
连续失败阈值:5 次
通信空闲超时:默认 5s,可配置

RS485 半双工必须等待发送完成后释放 DE,避免尾字节丢失。