CatST MemoryMap:变量区、资源包络与剪裁规则¶
本文档定义 CatST 编译器、仿真器、生成 C、在线监控和通信映像共同使用的变量区与资源包络。正式产品可按实际硬件剪裁,但剪裁不得改变已保留变量的语义。
1. 设计原则¶
CatST 变量区采用 PLC 过程映像模型:
资源包络原则:
- 先定义足够覆盖 F103、F407 和后续通信扩展的统一变量模型。
- CatST 编译器按目标 Profile 做范围检查和资源预算。
- 被硬件剪裁掉的资源在编译期报错,不允许运行期静默忽略。
- 同一变量名在不同硬件上语义一致,例如
X0总是输入映像,不允许在某个产品上变成输出。 - 通信资源通过过程映像或别名暴露给 CatST,不允许 CatST 直接阻塞读写总线。
2. 基础变量区¶
默认最大包络:
| 区域 | 默认范围 | 权限 | 类型 | 说明 |
|---|---|---|---|---|
| X | X0~X15 | 只读 | BOOL | 数字输入映像 |
| Y | Y0~Y7 | 可写 | BOOL | 晶体管输出映像 |
| R | R0~R3 | 可写 | BOOL | 继电器输出映像 |
| M | M0~M127 | 可读写 | BOOL | 内部辅助位 |
| D | D0~D127 | 可读写 | DINT | 数据寄存器 |
| T | T0~T31 | 功能块访问 | Timer | 定时器实例 |
| C | C0~C31 | 功能块访问 | Counter | 计数器实例 |
| S | S0~S63 | 只读 | BOOL/WORD | 系统状态 |
| E | E0~E63 | 只读 | BOOL/WORD | 故障码 |
F103_LITE 可以减少 Y/R、M/D、T/C、诊断和历史记录数量。F407_STANDARD 应优先完整支持上述包络。
3. 权限规则¶
| 区域 | CatST 读 | CatST 写 | 上位机 RUN 写 | STOP/FACTORY 写 | 说明 |
|---|---|---|---|---|---|
| X | 是 | 否 | 否 | 否 | 固件采样更新 |
| Y | 是 | 是 | 默认否 | 受控测试 | 安全层可覆盖 |
| R | 是 | 是 | 默认否 | 受控测试 | 安全层可覆盖 |
| M | 是 | 是 | 可配置 | 可配置 | 调试和状态保持 |
| D | 是 | 是 | 可配置 | 可配置 | 参数、阈值、计数值 |
| T | 字段只读 | 仅功能块 | 否 | 复位接口 | Tn.Q、Tn.ET 只读 |
| C | 字段只读 | 仅功能块 | 否 | 复位接口 | Cn.Q、Cn.CV 只读 |
| S | 是 | 否 | 否 | 否 | Runtime 设置 |
| E | 是 | 否 | 否 | 受控清除 | 诊断模块设置 |
禁止示例:
4. 变量区语义¶
4.1 X 输入区¶
X0~X15 表示输入映像。默认对应 16 路 24V 数字输入,具体硬件通道由目标 Profile 映射。
规则:
- 输入先经过固件采样和滤波,再进入 X 区。
- CatST 在一个扫描周期内看到的 X 值必须稳定。
- 低配硬件没有的 X 点位必须在编译期报错。
4.2 Y/R 输出区¶
Y0~Y7 为晶体管输出映像,R0~R3 为继电器输出映像。
规则:
- CatST 写的是输出映像,不是直接写物理 IO。
- STOP、ERROR、DOWNLOAD、急停、CRC 错误等安全状态下,物理输出必须由安全层关闭。
- RUN 模式下外部协议默认禁止直接写 Y/R,避免和 CatST 逻辑竞争。
4.3 M 内部辅助位¶
M0~M127 用于中间状态、联锁、步进状态、调试标志和简单保持。
规则:
- 默认由 CatST 读写。
- 上位机是否允许在线写入由权限配置决定。
- 下载新程序、RUN/STOP 切换、复位后是否清零由 Runtime 策略决定,编译器不得假设 M 区永久保持。
4.4 D 数据寄存器¶
D0~D127 默认按 DINT 处理。
用途:
- 工艺参数。
- 计数和阈值。
- 状态机步骤号。
- 调试和通信数据缓存。
通过 Modbus 16 位寄存器访问时,一个 D 占两个连续 Holding Register。
4.5 T/C 资源¶
定时器:
计数器:
typedef struct
{
bool CU;
bool CD;
bool R;
bool Q;
int32_t PV;
int32_t CV;
bool LastInput;
} Counter_t;
CatST 只允许通过 TON/TOF/TP、CTU/CTD 更新实例。
5. 系统状态与故障包络¶
5.1 S 系统状态¶
| 状态 | 含义 |
|---|---|
| S0 | RUN |
| S1 | STOP |
| S2 | ERROR |
| S3 | DOWNLOAD |
| S4 | FACTORY |
| S5 | 急停输入有效 |
| S6 | App CRC 有效 |
| S7 | 参数 CRC 有效 |
| S8 | 通信在线 |
| S9 | RTC 有效 |
| S10 | 看门狗曾复位 |
| S11 | 输出总使能有效 |
| S12~S31 | 通用系统状态预留 |
| S32~S63 | 通信扩展状态预留 |
5.2 E 故障码¶
| 故障 | 含义 |
|---|---|
| E0 | 参数 CRC 错误 |
| E1 | App CRC 错误 |
| E2 | 通信超时 |
| E3 | 看门狗复位 |
| E4 | RTC 异常 |
| E5 | 存储器异常 |
| E6 | 电源异常 |
| E7 | 急停触发 |
| E8 | 下载失败 |
| E9 | 输出过流,可选 |
| E10 | Flash 写入失败 |
| E11~E31 | 通用故障预留 |
| E32~E63 | 通信扩展故障预留 |
6. 中断事件资源¶
中断事件资源由 Runtime 更新,CatST 默认只读。
| 区域 | 默认范围 | 权限 | 类型 | 说明 |
|---|---|---|---|---|
| L | L0~L63 | 只读/专用清除 | BOOL | 事件锁存位 |
| HSC | HSC0~HSC7 | 字段只读 | Counter32 | 高速计数器 |
| CAP | CAP0~CAP7 | 字段只读 | Capture | 输入捕获或脉宽测量 |
HSC 可读字段:
| 字段 | 类型 | 说明 |
|---|---|---|
HSCn.CV |
DINT | 计数值快照 |
HSCn.OV |
BOOL | 溢出标志 |
HSCn.EN |
BOOL | 使能状态 |
CAP 可读字段:
| 字段 | 类型 | 说明 |
|---|---|---|
CAPn.VALUE |
DINT | 捕获值快照 |
CAPn.VALID |
BOOL | 捕获值有效 |
CAPn.OV |
BOOL | 溢出或丢样 |
这些资源的更新来自 Runtime ISR 或 DMA 任务。CatST 不直接访问中断标志位。
7. 在线访问地址建议¶
6.1 位变量¶
| 地址范围 | 对应区域 | 访问 |
|---|---|---|
| 00001~00008 | Y0~Y7 | 读,STOP/FACTORY 可写 |
| 00021~00024 | R0~R3 | 读,STOP/FACTORY 可写 |
| 00101~00228 | M0~M127 | 读写 |
| 10001~10016 | X0~X15 | 只读 |
| 10101~10164 | S0~S63 | 只读 |
| 10201~10264 | E0~E63 | 只读 |
6.2 寄存器¶
| 地址范围 | 对应区域 | 说明 |
|---|---|---|
| 40001~40256 | D0~D127 | 每个 D 占两个 16 位寄存器 |
| 41001~41064 | 参数区 | 通信、滤波、安全策略 |
| 42001~42064 | 系统状态寄存器 | 扫描周期、模式、版本 |
| 43001~43128 | T 状态 | 定时器只读状态 |
| 44001~44128 | C 状态 | 计数器只读状态 |
UI 和编译器内部必须统一 0 基/1 基封装,现场界面不暴露二义性。
8. 通信扩展映像¶
EtherCAT、CANopen、以太网等扩展不直接改变基础 X/Y/R/M/D 语义。推荐通过工程配置生成通信过程映像,并用 VAR_ALIAS 暴露给 CatST。
建议逻辑对象:
VAR_ALIAS
DriveReady AT CANOPEN.Node1.StatusWord.Bit0 : BOOL;
DriveFault AT CANOPEN.Node1.StatusWord.Bit3 : BOOL;
TargetSpeed AT CANOPEN.Node1.TargetVelocity : DINT;
END_VAR
规则:
- 映像对象必须由通信配置生成,现场 CatST 不允许任意拼地址。
- CatST 读取的是扫描边界快照。
- CatST 写入的是输出过程映像,发送和状态机处理由通信任务完成。
- 通信断线、超时、状态异常必须反映到 S/E 或扩展只读状态。
9. Profile 剪裁规则¶
目标 Profile 必须声明:
可用 X/Y/R 数量
M/D/T/C 数量
是否支持 S/E 全量状态
是否支持 Modbus 映射
是否支持自定义维护协议
是否支持 A/B App 分区
是否支持通信扩展映像
L/HSC/CAP 数量
最大 UserLogic 代码大小
最大扫描周期预算
剪裁要求:
- 剪裁只能减少范围,不能改变类型和权限。
- 编译器必须根据 Profile 做越界检查。
- 上位机补全列表必须来自 Profile,不得固定写死。
- 文档中的最大包络不代表所有硬件必须完整实现。