周期过程数据
新手知识
进了周期交换之后,控制器和设备按固定节拍互送过程数据。写 Q、读 I:Q 发给控制器,I 来自控制器。应用只改值、只读值,不要自己发周期帧。
方向
I / Q 是视角:Q 永远是本侧输出。本产品是 IO 模块:
| 区 | 对本模块 | |
|---|---|---|
| Q | 模块输出 | 写,发给主站 |
| I | 模块输入 | 读,来自主站 |
过程区长度由配置工具 / GSDML 决定(样例常见 Q 20 字节、I 32 字节,不是唯一尺寸),落在槽 1 / 子槽 1。
和 GSDML 的 Input / Output 对上号
GSDML 里那 20 字节的 Input(设备 → 控制器)就是 SDK 的 Q(Out / ProcessData.Out[i],写的方向),GSDML 里那 32 字节的 Output(控制器 → 设备)就是 SDK 的 I(In / ProcessData.In[i],读的方向,只读)。
周期
| 项 | 值 |
|---|---|
| 在哪设 | 配置工具 / 控制器组态 |
| 下限 | 1 ms |
| 谁发周期帧 | 协议按组态发,应用不推帧 |
周期改完要重新导出,两边组态一致。已进入周期交换时不要改组态,见 发现与连接。
应用做什么
先确认已连上(见 发现与连接),再:
- 按工艺 写 Q(发给控制器)
- 按工艺 读 I(控制器送来的)
- 看 IOPS 与 IOCS 判断这一拍能不能用
未连上时,写下的 Q 还在设备本地;连上后才随周期送出。不要把「本地改了」当成「控制器已经收到」。
不要做的事
- 不要写 I。I 只来自控制器
- 不要把 I 抄到 Q。两边不是镜像
- 不要在还在周期交换时停设备,见 发现与连接