CatST SystemDesign:内部安全逻辑配置语言整体设计¶
CatST 不是 PLC 平台,也不追求完整 IEC 61131-3 生态。CatST 是公司内部设备的安全逻辑配置语言,通过上位机生成 C 代码并复用 STM32 固件 Runtime,让现场人员在不使用 J-Link、不修改底层固件的情况下,通过串口完成调试、下载、监控和快速迭代。
1. 核心定位¶
CatST 的最终定位:
不做:
核心价值不是替代 CODESYS/OpenPLC,而是让公司自有 STM32 控制器具备受控、可验证、可下载、可现场维护的逻辑配置能力。
2. 端到端架构¶
规范硬件
├── STM32 主控
├── 固定 IO
├── 固定串口维护口
├── 固定扩展外设
└── 出厂固化 Bootloader
↓ 串口
CatST Studio
├── 工程和 Profile
├── CatST 编辑
├── 语法/语义/安全检查
├── AST 仿真
├── 生成 UserLogic.c
├── ARM GCC 编译 app.bin
├── 串口下载
└── 在线监控
↓
STM32 Application
├── 固定 Runtime
├── 固定安全层
├── 固定通信任务
└── UserLogic_Scan()
STM32 端永远不知道 CatST 源码。设备只运行编译后的固件。
3. 现场无 J-Link 策略¶
“不需要 J-Link”指现场维护和迭代不需要 J-Link。
空白芯片首次生产仍必须有一种 Bootloader 固化方式:
| 阶段 | 推荐方式 | 是否需要现场人员参与 |
|---|---|---|
| 首次样机调试 | SWD/J-Link、ST-Link 或 STM32 ROM Bootloader | 研发 |
| 小批量/量产 | 工装烧录固定 Bootloader 和基础参数 | 生产 |
| 现场维护 | 串口维护协议下载 App | 现场人员 |
| 故障恢复 | Bootloader 串口恢复下载 | 现场人员 |
现场设备必须保留稳定维护入口:
4. 固定 Bootloader 设计边界¶
Bootloader 是硬件平台的一部分,现场不修改。
Bootloader 职责:
- 接收串口维护协议。
- 写入 App 分区。
- 校验分包 CRC 和完整 App CRC。
- 标记 App 有效。
- 提供设备和分区信息。
- 下载失败时保持旧 App 可运行。
- 下载完成后复位进入 App,App 默认 STOP。
Bootloader 不做:
5. CatST Studio 工作流¶
标准现场流程:
连接设备
↓
读取硬件 Profile、Bootloader、App 信息
↓
编辑 logic.catst
↓
语法/语义/安全/资源预算检查
↓
PC 仿真
↓
生成 UserLogic.c
↓
ARM GCC 编译 app.bin
↓
发送 STOP 并确认输出关闭
↓
进入 Bootloader 下载
↓
CRC 校验并复位
↓
设备进入 STOP
↓
在线监控确认
↓
人工切换 RUN
现场人员不直接接触:
6. 固定硬件和 Profile¶
硬件设计采用“固定母版 + Profile 剪裁”:
| Profile | 目标 |
|---|---|
| F103_LITE | 低成本控制器,资源剪裁,单 App 或简化分区 |
| F407_STANDARD | 标准平台,完整 IO、在线监控、A/B App 可选 |
| EXT_COMM | 增强通信平台,增加 EtherCAT/CANopen/以太网过程映像 |
Profile 必须声明:
MCU 型号
Flash/RAM
Bootloader 分区
App 分区
可用 IO 点位
可用串口和维护口
M/D/T/C 数量
是否启用通信扩展
最大 UserLogic 代码大小
最大资源预算
CatST 编译器、补全、仿真、下载和监控都必须使用同一个 Profile。
7. 语言阶段路线¶
第一阶段 Core:
IF / ELSIF / ELSE
CASE
BOOL / INT / DINT / TIME
X/Y/R/M/D/T/C/S/E
TON / TOF / TP
CTU / CTD
R_TRIG / F_TRIG
VAR_ALIAS
生成 C
仿真
下载
在线监控
第二阶段 Safe:
永远禁止或长期不做:
受限 FOR 不是通用循环。它必须可静态计算次数、可做越界检查、可按 Profile 预算,必要时可由编译器展开。
8. 通信扩展原则¶
EtherCAT、CANopen、以太网属于 Runtime 和通信任务,不属于 CatST 直接执行语句。
正确模型:
CatST 不提供:
CatST 提供的是受控别名:
VAR_ALIAS
DriveReady AT CANOPEN.Node1.StatusWord.Bit0 : BOOL;
TargetSpeed AT CANOPEN.Node1.TargetVelocity : DINT;
END_VAR
9. 安全边界¶
安全边界固定在 Runtime 和硬件层:
- 上电默认 STOP。
- STOP、ERROR、DOWNLOAD 输出关闭。
- 急停输入有效时输出关闭。
- App CRC 错误禁止 RUN。
- 参数严重错误禁止 RUN。
- 下载成功后不自动 RUN。
- RUN 必须人工确认或受控命令确认。
- CatST 只能写输出映像,不能绕过安全层。
- 在线写 Y/R 默认只允许 STOP/FACTORY 测试。
10. 成功标准¶
第一版完成标准:
- 一块固定硬件可出厂固化 Bootloader。
- 不使用 J-Link,现场可通过串口连接设备。
- 上位机可读取设备 Profile 和状态。
- CatST 程序可检查、仿真、生成 C、编译为 app.bin。
- app.bin 可通过串口下载。
- 下载失败不会破坏旧 App。
- 下载后设备进入 STOP。
- 在线监控可查看 X/Y/R/M/D/T/C/S/E。
- 安全场景下物理输出关闭。
- 现场人员可在不接触 C/HAL/SWD 的情况下完成逻辑迭代。