Skip to content

7.1 软 PLC 模拟器 ​

模拟器三步启动、回环 TCP 发现机制、5551 端口冲突,以及支持与不支持的功能

没有实体设备也可以学习和调试程序。软 PLC 模拟器是一个运行在 Windows 上的独立程序,型号是 LP6666,与产品文档里的「LP6666 软 PLC」是同一个东西。它随上位机一起打包,点「🖥 启动软PLC」时才释放出来、另起一个进程运行。

上位机里有两种"在本机跑的 PLC",别混

软 PLC 模拟器(本页)内置模拟器
点哪里顶栏 🖥 启动软PLC设备列表为空时的 🖥 先启用内置模拟器(较新版本的上位机才有)
跑在哪独立进程,会弹出一个控制台窗口上位机进程内,不另起程序、没有控制台窗口
怎么被找到回环 TCP 127.0.0.1:5551点一下就直接出现在列表里,不用搜索
干什么用当一台真机用:下载 / 上载、运行、监视、连云服务、配 DTU主要给 Lua 编辑器调试运行(断点 / 单步 / 看变量)用

两台都报型号 LP6666、硬件版本 6.6.6.6,所以型号分不出是哪一种;能分开的是设备卡片右下角的连接类型——内置那台写着「内置模拟器」,本页这台写着「TCP」。本页下面讲的所有操作(启动、停止、Simulator\ 目录、5551 端口)都只针对软 PLC 模拟器。

启动 ​

点主窗口顶部的 🖥 启动软PLC。

启动后会弹出一个独立的控制台窗口(模拟器是一个独立进程),然后:

  1. 点「🔍 搜索设备」
  2. 设备列表里会出现一台 LP6666
  3. 选中它,之后的操作和真实设备完全一样

模拟器启动后的控制台窗口

控制台窗口是模拟器的运行日志

里面能看到启动的每一步:PLC 数据初始化、FlashDB 初始化、Lua 任务创建、PLC 任务创建、服务端口启动成功: 5551、云服务建立 SOCKET 等等。模拟器有问题时先看这个窗口。

Open COM1 Failed 这类串口报错属于正常现象:模拟器运行在 PC 上,没有对应的物理串口。

模拟器怎么被找到的

上位机专门用回环 TCP(127.0.0.1:5551)优先发现模拟器。因为模拟器跑在本机,UDP 广播会在每个网卡上都搜到它却判成"不同子网",用回环连接才能又快又准。

首次启动可能要等几秒

模拟器程序是压缩后打包在主程序里的(约 66MB 压到 15MB),第一次点启动时要先解压释放到主程序所在目录,之后就直接用现成的,很快。

用命令行控制模拟器 ​

上位机既是界面程序也是命令行工具(lpplc-manager.exe,命令面见 11.8 命令行参考)。除了点「🖥 启动软PLC」按钮,也可以用命令把软 PLC 拉起来、停下、查状态——适合远程桌面 / 服务器 / CI / 写批处理脚本时没法点界面的场景。

powershell
# 启动软 PLC,并阻塞等到它出现在设备表里(推荐自动化用)
lpplc-manager.exe sim start --wait

# 启动但不等(默认固定睡约 6 秒再扫一次,脚本里不如 --wait 稳)
lpplc-manager.exe sim start

# 查看模拟器当前是否开启
lpplc-manager.exe sim status

# 停止模拟器
lpplc-manager.exe sim stop

在 PowerShell 里要用 Run-Cli 封装

lpplc-manager.exe 是 GUI 子系统进程,在 PowerShell 里直接 & lpplc-manager.exe sim start 会"看似没反应"——进程不阻塞、stdout 也拿不到。必须像 11.8 那样用 Start-Process -Wait + 重定向;在 cmd / .bat 里直接敲则无此限制。

--wait 才是自动化可靠的写法

软 PLC 起来后到设备表里出现 LP6666 要几秒。sim start(不带 --wait)只固定睡约 6 秒(可用 --boot-ms <毫秒> 调)再扫一次,脚本跑太快会接着报"未找到设备"。sim start --wait 会持续轮询 get_devices,直到设备出现(默认 15 秒,可用 --wait-ms <毫秒> 调整)或超时,返回 ok:true/false。写脚本一律用 --wait。

模拟器是独立进程,不会随命令行退出

sim start 拉起的是独立进程,lpplc-manager.exe 命令跑完退出不会带走它;同理只有 sim stop 才会关掉。所以批处理脚本里「启动 → 下发 → 读回 → 停止」要显式写 sim stop 收尾,否则进程会一直留在后台。

典型批处理串联 ​

powershell
# 无人值守:拉起软 PLC → 下发 Lua(校验) → 读回 D 寄存器 → 停止收尾
lpplc-manager.exe sim start --wait
lpplc-manager.exe lua push --device auto --file ./main.lua --verify
lpplc-manager.exe plc read  --device auto --type D --start 500 --count 4
lpplc-manager.exe sim stop

前置健康检查 ​

powershell
# 跑其它命令前先确认软 PLC 在不在,不在就先 sim start --wait 再继续
lpplc-manager.exe sim status

启动失败怎么办 ​

提示原因与处理
提示「本程序未内嵌模拟器资源」这一版安装包没带上软 PLC 模拟器那个独立程序。去 www.lpplc.cn 下载模拟器,放到上位机所在目录
找不到文件大概率被杀软拦了。把上位机所在目录加入杀软白名单,再重试
权限不足以管理员身份运行上位机
端口被占用5551 被远程编程或远程透传占了,先把那两个关掉

5551 端口三家共用

模拟器、远程编程、远程透传都用 5551,同一时间只能开一个。

模拟器支持什么 ​

功能支持
梯形图程序(下载 / 上载 / 运行 / 在线监视)✅
Lua 脚本(含 socket、MQTT、FlashDB、定时器、线程)✅
云服务接入✅
软元件寄存器读写✅
设备日志✅
DTU 功能配置✅
固件升级(OTA)❌ 模拟器本身就是 PC 程序,不需要也不支持
网口 / WiFi / 4G / LoRa 参数❌ 没有对应硬件
串口参数❌ 没有物理串口
远程透传 / 远程编程❌
电机❌

所以选中模拟器时,右侧只会显示基本信息、云服务、寄存器操作、DTU 功能、日志这几个标签,少了很多页是正常的。

数据存在哪 ​

模拟器的运行数据放在上位机目录下的 Simulator\ 文件夹:

文件内容
lp_plc.bin下载进去的梯形图程序
lp_pvd.bin掉电保持数据(D / M 保持区)
main.jsonLua 工程清单
lua\*.lua下载进去的 Lua 脚本
kv.fdb.*FlashDB 键值数据库(fdb.kv_set / kv_get 存的东西)
ts.fdb.*FlashDB 时序数据库(fdb.ts_set 存的历史数据)

想让模拟器"恢复出厂"

关掉模拟器,把 Simulator\ 目录下的 lp_plc.bin、lp_pvd.bin、lua\、*.fdb.* 删掉再启动,就是干净状态。

最适合用模拟器的场合 ​

  • 学习和培训:没有设备也能跟着教程练梯形图和 Lua
  • 写 Lua 脚本:改完直接在电脑上运行,不用下载、不用重启设备,也不影响现场设备
  • 验证逻辑:上现场之前先在模拟器上把程序跑通
  • 调云服务和 MQTT:模拟器能连云服务、能跑 MQTT,端到端链路在电脑上即可测通

模拟器不能替代实机验证

时序、真实 I/O 响应、串口设备通讯、4G 网络抖动这些只能在真机上验。模拟器用来把逻辑和脚本调对,最终还是要上机测。

用模拟器测 BACnet 要用另一台电脑 / 虚拟机

模拟器的 BACnet/IP 端点监听标准端口 47808(BACnet 设备固定端口)。如果同一台电脑上同时打开 BACnet 扫描工具(YABE / VTS / bacpypes3 等),这些工具默认也监听 47808 来接收设备的 I-Am 回应——两个进程争用同一个 47808,Windows 只会把报文投给其中一个 socket,扫描工具就收不到模拟器的回应,表现为"扫不到设备"。模拟器本身是正常的、会正确回 I-Am,只是 I-Am 被端口冲突分走了。

因此本机用模拟器验证 BACnet 时:

  • 推荐:用另一台电脑 / 虚拟机跑扫描工具,去扫描本机模拟器的 IP(模拟器 BACnet 走真实网卡 IP,不是 127.0.0.1)。
  • 若坚持同机:把扫描工具的本地监听端口改成 47808 以外(如 47809),模拟器仍用 47808,两者不抢端口即可正常收发。

做过设备读写 / 下发之后,模拟器可能自己退出

实测(模拟器版本 2026.9.16):读或写寄存器、下发 Lua / 梯形图 / DDC / DTU 配置之后,模拟器进程有时会自行结束,上位机所在目录出现 crash_dump_日期_时间.dmp,再「搜索设备」就搜不到它了。 写进去的东西不会丢 —— 重新点一次「🖥 启动软PLC」之后,设备名、寄存器值、Lua 程序、DTU 配置、DDC 程序都还在(已逐条读回核对)。 所以拿模拟器练命令行批量操作多台 PLC 时请一次只测一台,跑完重启模拟器再测下一台。

停止 ​

再点一次「🖥 启动软PLC」旁的停止(或直接关掉模拟器的控制台窗口)。上位机会确保进程被彻底结束,不留残留。

模拟器状态不会被保存进配置

「模拟器开着」不是一个配置项。保存设置不会启停模拟器,重启上位机后模拟器也不会自动启动,需要手动开启。

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