Skip to content

11.2 批量写 Lua 程序(电气工程师专用) ​

尊敬的电气工程师:上一节讲了怎么批量改名,这一节讲怎么把同一份 Lua 程序一次性下发给几十台设备。您只需要准备一个 .lua 文件,改几行批处理命令即可,不用一台一台打开编辑器点"下载"。

适用:给一批设备烧入相同的 Lua 逻辑(如初始化寄存器、定时翻转输出、采集上报等)。每台程序不同也行,把文件换成各自的即可。

批量下发 Lua 程序指令流:选中 → 上传(可校验) → 退出,复制几组做更多台

第一步:准备 Lua 程序文件 ​

把要下发的程序保存为 user.lua(和批处理放在同一文件夹)。示例(上电写 D0=12345):

lua
-- 示例 Lua 用户程序:上电把 D0 写成 12345
plc.d(0, 12345)
return 0

文件编码

user.lua 须以 UTF-8 保存。若程序里有中文注释,编码不对会导致下发内容乱码。

第二步:写批处理 ​

沿用 11.1 第 1 步 里那份 .bat 启动器(@@CMDS@@ 标记只出现一次,写在启动器的 exit /b 0 下面),标记之后换成:

text
@@CMDS@@
# 第 1 台
SCAN
OPT 1
LUA PUSH user.lua VERIFY
BYE
# 第 2 台
OPT 2
LUA PUSH user.lua VERIFY
BYE
  • LUA PUSH <文件>:上传该 Lua 程序(落盘为设备上的 main.lua)。
  • 末尾加 VERIFY:上传后回读比对,不一致会报错,最稳妥,建议现场必加。
  • 做更多台:复制 OPT / LUA PUSH / BYE 三行,改 OPT 序号即可。

第三步:双击运行 ​

回到文件夹,双击 .bat。工具依次对每台设备上传程序,带 VERIFY 时会自动重启并回读校验。

跑完看到什么算成功 ​

LUA PUSH 那一行下面窗口里是空白的,不会打印"写入成功"之类的直观文字——这是正常的,不代表失败。真正的结果在窗口最下面「每条指令的实际结果」那一段(见 11.1 的结果确认):

json
{"errmsg":"","errno":0,"method":"lua_program_write","result":{"bytes":80,"device_reboot":true,"filename":"main.lua","message":"Lua 程序已写入,设备正在重启","protocol_lua":3},"seq":5,"type":"resp"}
  • "errno":0 表示成功;bytes:80 是写入字节数(= 您那份 user.lua 的字节数,文件内容不同这个数就不同);filename:"main.lua" 即落盘文件名。
  • device_reboot:true:上传后设备会重启加载新程序,属正常现象,稍候即可。

上面这一段是在软 PLC 模拟器(序列号 10000001)上实测的返回。

想确认程序真的在设备上跑 ​

最省事的办法是让程序自己"说话"。本页示例那份 user.lua 会把 D0 写成 12345,所以在它的 OPT 与 BYE 之间、或下一轮脚本里加一行读回:

text
read D 0 1

窗口最下面那一段里出现 "values":[12345] 就是程序真的执行过了。实测:设备重启(甚至关掉模拟器再重新打开)之后 D0 仍是 12345,说明程序已落盘并执行。

用模拟器练习:一次一台

模拟器版本 2026.9.16 实测:下发之后模拟器进程可能自行退出,于是同一份脚本里第二台会报 未找到设备。请一台一跑,跑完重新点「🖥 启动软PLC」。详见 11.1 的注意事项。

注意事项 ​

  • user.lua 须与 .bat 同目录,否则提示找不到文件。
  • 操作是真写入:程序会覆盖设备上原有的 main.lua 并重启,执行前请确认选中的是目标设备。建议先用软 PLC 模拟器练习。
  • 若是不同设备不同程序,把 LUA PUSH 后面的文件名换成各自的文件(如 LUA PUSH line1.lua、LUA PUSH line2.lua)即可。
  • 上传失败常见原因:文件路径错(下面那一段里会有 参数展开失败: 打开文件失败: user.lua)、设备未上电 / 掉线、Lua 语法错误。命令行不做 Lua 语法检查,请先在 Lua 脚本编辑器 里用工具栏的 编译 按钮自检(它在电脑上真实 Lua 内核里查语法和危险写法,不上设备)。

进阶

除 LUA PUSH 外,设备模式还支持 LUA PULL [文件] 把设备上的程序读回本地备份。批量采集现场程序时用得上。

LPPLC 工业物联网云平台 · 软硬件与云平台全栈自研