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 闭环:
第一版推荐:
后续 EtherCAT/CANopen/以太网不替代 CatST 下载协议;它们作为 Runtime 通信能力,通过过程映像与 CatST 交互。
2. 串口参数建议¶
默认:
下载阶段可支持 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/参数 |
限制:
- RUN 模式默认禁止直接写 Y/R。
- STOP/FACTORY 模式可受控测试输出。
- M/D 是否允许 RUN 在线写入由权限配置决定。
- S/E/T/C 状态默认只读。
4. 维护协议帧¶
建议帧格式:
| 字段 | 长度 | 说明 |
|---|---|---|
| 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:
| 值 | 区域 |
|---|---|
| 0x01 | X |
| 0x02 | Y |
| 0x03 | R |
| 0x04 | M |
| 0x05 | D |
| 0x06 | T |
| 0x07 | C |
| 0x08 | S |
| 0x09 | E |
写变量规则:
- X/S/E/T/C 状态只读。
- RUN 下默认只允许 M/D,且可由权限关闭。
- Y/R 只允许 STOP/FACTORY 测试输出。
- 所有写入必须做范围和类型检查。
7. 下载协议¶
进入下载:
DL_BEGIN:
DL_DATA:
DL_END 后 Bootloader 必须:
- 计算完整 CRC32。
- 对比
AppCrc32。 - 校验成功后标记 App 有效。
- 校验失败保持旧 App 有效。
- 复位进入 App。
- 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. 超时与重试¶
建议:
RS485 半双工必须等待发送完成后释放 DE,避免尾字节丢失。