Skip to content

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 testCLI 自检(设备段会写 D500 并覆盖 main.lua,只读用 --readonly)否否2.0.0
apiraw 逃生舱:直调任意 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全部成功
1CLI 层错误(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。

相关 ​

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