主题
11.8 上位机命令行参考(lpplc-manager.exe)
本页是
lpplc-manager.exe命令行面的静态镜像,方便**只在网页端(不装上位机)**的客户查看它能做什么。 权威、随版本更新的来源始终是本机执行:lpplc-manager.exe --commands(机器可读 JSON,含since版本字段)。本页与之一致,但发版后请以--commands为准。
lpplc-manager.exe 既是界面程序、也是命令行工具:双击开界面,命令行里 lpplc-manager.exe dev list 又能跑批。
AI / 脚本调用必读:它是 GUI 子系统
在 PowerShell 里直接 & lpplc-manager.exe dev list 会"看似没反应"——进程不阻塞、stdout 也拿不到。 必须用下面 Run-Cli 封装(Start-Process -Wait + 重定向到临时文件)。在 cmd / .bat 里直接敲则无此限制。
powershell
$cli = Join-Path $PSScriptRoot 'lpplc-manager.exe' # 改为你的实际路径
function Run-Cli {
param([string[]]$Args_)
# GUI 子系统:必须 Start-Process -Wait 等它跑完,并把 stdout 重定向到临时文件再读回。
$tmp = Join-Path $env:TEMP ('mgr_' + [guid]::NewGuid().ToString('N') + '.txt')
$psi = @{ FilePath = $cli; ArgumentList = $Args_; Wait = $true; NoNewWindow = $true
RedirectStandardOutput = $tmp; RedirectStandardError = ($tmp + '.err') }
Start-Process @psi | Out-Null
return (Get-Content $tmp -Raw -ErrorAction SilentlyContinue)
}
# 例:列出设备
Run-Cli @('dev','list','--out','devices.json') | Out-Null设备寻址
- 目标设备统一用
--device <SN|IP|auto>。 - 绝不替您猜:哪怕只扫到一台也要显式指定;想省事写
--device auto(仅当只扫到一台时自动选,多台仍报错)。 dev list返回里连接设备要用device_ip字段,不是ip(ip是网口地址,可能不可达)。
命令面(since = 最低支持版本)
| 命令 | 作用 | 写操作 | 需设备 | since |
|---|---|---|---|---|
dev scan | 扫描并列出设备(人看,含扫描事件) | 否 | 否 | 2.0.0 |
dev list | 扫描并给出设备清单(脚本/AI 用,纯数组) | 否 | 否 | 2.0.0 |
dev info | 显示一台设备详情 | 否 | 是 | 2.0.0 |
dev restart | 重启设备(可等它回来) | 是 | 是 | 2.0.0 |
lua push | 把 Lua 程序写进设备(可校验) | 是 | 是 | 2.0.0 |
lua pull | 读回设备上的 Lua 程序 | 否 | 是 | 2.0.0 |
ladder pull | 读回设备上的梯形图(IL 文本) | 否 | 是 | 2.0.0 |
ladder push | 把梯形图写进设备(IL 文本) | 是 | 是 | 2.0.0 |
dtu get | 读取 DTU 配置 | 否 | 是 | 2.0.0 |
dtu set | 写入 DTU 配置 | 是 | 是 | 2.0.0 |
plc read | 读软元件寄存器 | 否 | 是 | 2.0.0 |
plc write | 写软元件寄存器 | 是 | 是 | 2.0.0 |
net probe | 发一帧看回什么(BACnet/Modbus 调试) | 否 | 否 | 2.0.0 |
sim prepare / sim run / sim load / sim stop / sim status / sim output / sim regs / sim write / sim restart | 内置模拟器(进程内 lp_sim)控制;用 CLI 压测 task/event 并发库见 11.7 | 否 | 否 | 2.0.0 |
self test | CLI 自检(设备段会写 D500 并覆盖 main.lua,只读用 --readonly) | 否 | 否 | 2.0.0 |
api | raw 逃生舱:直调任意 lp_api 方法(如 get_methods) | 否 | 否 | 2.0.0 |
写操作(lua push / ladder push / dtu set / plc write / dev restart)必须显式加 --yes 确认;只想演练加 --dry-run。
常用全局开关
| 开关 | 作用 |
|---|---|
--device <SN|IP|auto> | 设会话设备,之后请求不必再写 device_id |
--out <file> | 子命令里=把要的东西(Lua 程序/配置)存哪;脚本模式=JSON 落盘 |
--log <file> | 把 JSON 输出写文件(绕开控制台码页) |
--quiet | 不打印 event 行 |
--human | 人读模式(列表命令渲染成对齐表格) |
--dry-run | 只打印将要发的请求,不真动设备 |
--yes | 确认写操作 |
--retry <N> | 请求失败自动重试 N 次 |
--scan-ms <N> / --no-scan | 前置扫描时长 / 跳过扫描 |
--wait-ms <N> | 全部请求跑完后再等 N 毫秒,收尾异步事件 |
--repl / -i | 进入交互式 REPL |
--commands | 列出全部命令与参数(JSON,供 AI 自省,含 since) |
--version | 打印版本信息(JSON) |
退出码
| 码 | 含义 |
|---|---|
| 0 | 全部成功 |
| 1 | CLI 层错误(JSON 语法 / 文件 / 变量 / 未知控制命令 / 护栏拒绝 / 子命令用法错) |
| 2 | 有请求 errno != 0(含设备解析失败) |
| 3 | 有断言失败(自动化测试靠它) |
| 4 | 顶层用法错误(不认识的子命令、--help 找不到的命令) |
同时存在多种时取优先级:3 > 1 > 2(断言最要紧,其次 CLI 层错误,最后请求失败)。
输出格式
stdout 每行一个紧凑 JSON(type ∈ resp|event|cli|cli_result|dry_run),core 日志走 stderr。脚本逐行解析即可。
自省请用 --commands,别只抓 --help
--help 的人读帮助写在 stderr(stdout 要留给 JSON 事件流)。只做 -RedirectStandardOutput 会拿到空。
- AI 做能力自省 → 用
--commands:输出到 stdout,JSON,含since版本字段。 - 要看
--help→ 必须同时重定向 stderr。
相关
- 11.7 给 AI 与脚本的调用模板(批量备份、Run-Cli 完整示例)
- Lua 二次开发 API 见文档站
lua/章节(如 Lua API 速查表、第一个 Lua 脚本) - 本机执行
lpplc-manager.exe --commands获取随版本更新的机器可读命令面