主题
3.1 下发与设备端运行
这一节说明程序从画布到设备之后是怎么运行的:存哪里、什么时候跑、和梯形图 / Lua 脚本是什么关系、改程序后会发生什么。
3.1.1 下发的完整过程
- 点 「生成 JSON」:编辑器先做一遍校验(数量限制、连线缺失、地址范围等),有问题的条目显示在右侧「问题」列表里,点击可定位到画布上的方块。
- 点 「下发设备」:弹确认框,告知本次只写入设备的逻辑程序文件,不会改动用户的 main.lua,写入成功后设备自动重启。
- 确认后程序写入设备并重启,成功后底部日志提示「已写入设备(N 字节),设备重启中」。
- 设备起来后程序即自动开始运行,不需要任何启动操作。
「下发设备」已经带着重启,所以正常情况下用不到 「启动生效」 按钮。它是留给这两种情况的:下发时重启那一步失败(日志会单独提示),或者 ddc.json 是用别的方式(设备文件通道)放进设备的——按「启动生效」= 重启设备,程序立刻开始跑。
失败时日志栏会给出红色中文提示(网络不通、JSON 不合法等),按提示处理后重试即可。
3.1.2 读回与备份
- 点 「从设备读」 可以把设备上正在运行的程序读回画布——接手别人配的设备、或换电脑后想改程序,都从这里开始。
- 设备上没有程序时会提示「设备上未找到 ddc.json(可能尚未下发过)」。
- 留本地备份用 「导出」(写成
程序名.ddc.json,见 1.1.4 程序保存到哪里)。「从设备读」只回画布,不落地文件。
3.1.3 程序在设备上怎么跑
- 设备每次启动时检查逻辑程序:有就按程序里设定的扫描周期开始运行;没有就什么都不做,一切照旧。
- 主循环按设定的周期(默认 200 毫秒)一轮一轮执行;定时循环按它自己设定的秒数并行运行,与主循环互不等待;显示主循环没有周期参数,屏固定 1 秒刷新一次。
- 某一轮执行中个别行出错时,只丢掉这一轮,下一轮继续,不影响设备其他功能。
3.1.4 与梯形图、Lua 脚本的关系
| 问题 | 答案 |
|---|---|
| 逻辑程序和梯形图能同时用吗 | 能。逻辑程序通过 D/M/X/Y/T/C 等软元件与梯形图交换数据,两边读写的是同一批寄存器 |
| 逻辑程序和 main.lua 脚本冲突吗 | 不冲突。下发逻辑程序不会改写或覆盖 main.lua,两者同时运行 |
| 谁先谁后 | 互不等待。设计时避免两边写同一个寄存器「打架」:一般约定梯形图 / Lua 负责采集和执行,逻辑程序负责判断和输出 |
3.1.5 修改与状态复位
- 改程序:改画布 → 生成 JSON → 重新下发,设备重启后新程序生效。也可以先用「从设备读」把设备上的程序取回来再改。
- 状态复位:重新下发程序或设备重新上电后,定时器、启停控制、PI 调节这些有状态功能块全部回到初始状态,相当于重新开机。需要断电不丢的累计值(如运行小时)用累计时间块的保持寄存器(见 2.4 计算类功能块)。
- 删除程序:想彻底停用逻辑功能,把画布「清空」(只剩一个空的主循环)后重新下发,程序虽在设备上但什么都不做;设备重启后行为与未使用逻辑编程完全相同。
3.1.6 在线监视:不接组态也能看值
点工具栏 「监视」(要先连着设备)打开在线监视面板,两个页签:
- 监视表:列出软元件的地址与实时值,双击「当前值」可以直接改——改的是设备里的真实寄存器,用它验证「这一轮程序有没有把它算成新值」最直观。
- 强制:位元件(X / Y / M)可强制 ON / OFF,试验完成后请解除强制。
面板上的 「提取程序中的地址」 会把当前画布里用到的地址一次性灌进监视表,不用手抄。
改值不是仿真
在线监视写的是设备寄存器。如果这个地址每轮都被程序算一遍,您改完的值下一轮就被程序的计算结果覆盖——这是正常现象,说明该由程序负责写它,不是接线接错了。