Skip to content

通信功能 ​

LPPLC提供丰富的通信能力,支持串口和网口两种通信方式。

兼容主流生态与多协议支持

通讯端口和功能一览

串口通信 ​

串口支持的协议和模式

这张截图只画到模式号 K7

上位机「设备参数 → 串口」的模式下拉框实际有 12 项(还含 8 串口 MC 协议、9 N:N 协议、10 信号板、11 BACnet MS/TP), 并且每个模式下哪些参数被协议固定住也各不相同。逐条对照表见 串口工作模式一览,以那张表为准。

模式说明
编程口模式默认模式,支持GX Works2连接
专用协议专用协议通信
N:N网络PLC间N:N网络通信
无协议自由口通信
Modbus RTUModbus RTU主站/从站

BACnet MS/TP

ESP32-S3 机型(LP3232 / LP3288)还可以用 Lua 把 485 口配成 BACnet MS/TP 主站, 去读写暖通、空调机组等楼宇设备,见 Lua · BACnet 楼宇自控。

网口通信 ​

网口支持的协议和模式

协议功能
Modbus TCP支持Server和Client模式
MC协议三菱MC协议
MQTT物联网通信
HTTPWeb服务
WebSocket实时通信
TCP/UDP套接字通信
BACnet/IPUDP 47808,从站与主站双角色(仅 ESP32-S3 机型)
OPC UA端口 4840,服务端与客户端(仅 ESP32-S3 机型)

BACnet / OPC UA 的限制

两者都需要与上位系统在同一网段,不支持 BBMD 跨子网;OPC UA 当前只提供 SecurityPolicy None (可配用户名 / 密码),暂不支持证书加密。对外暴露的 BACnet 对象最多 64 个。

以太网默认配置 ​

接口默认协议
网口 7Modbus TCP Server
网口 8Modbus TCP Server
网口 9FX3U-ENET-ADP MELSOUT 协议(编程口)

网口协议可在上位机里改,见 网口与 WiFi 参数。

Modbus 地址映射 ​

对接 Modbus 主站(组态王 / MCGS / 触摸屏 / SCADA)时,用下面的表查 PLC 软元件对应的 Modbus 地址。

Modbus TCP / RTU / ASCII 共用同一张表,共 16 段已开放地址。 对接前先弄清两个编号口径:「Modbus 地址」是组态软件里填的五位寄存器编号,帧里实际发的是「通讯地址」,两者相差 1(例如 40001 对应报文里的 0)。

0 区 · 线圈(读写 · 功能码 01 / 05 / 15)

软元件Modbus 地址通讯地址(十进制)通讯地址(十六进制)点数数据类型
Y0-Y37700001-002560000-02550X0000-0X00FF256位
T0-T25500257-005120256-05110X0100-0X01FF256位
C0-C25500513-007680512-07670X0200-0X02FF256位
M0-M307101001-040721000-40710X03E8-0X0FE73072位
M8000-M825504073-043284072-43270X0FE8-0X10E7256位
S0-S99905001-060005000-59990X1388-0X176F1000位
X0-X37708001-082568000-82550X1F40-0X203F256位
T256-T511未开放未开放未开放—位
M3072-M7679未开放未开放未开放—位
M8256-M8511未开放未开放未开放—位
S1000-S4095未开放未开放未开放—位

1 区 · 输入状态(只读 · 功能码 02)

软元件Modbus 地址通讯地址(十进制)通讯地址(十六进制)点数数据类型
X0-X37710001-102560000-02550X0000-0X00FF256位

3 区 · 输入寄存器(只读 · 功能码 04)

软元件Modbus 地址通讯地址(十进制)通讯地址(十六进制)点数数据类型
AI0-AI25530001-302560000-02550X0000-0X00FF256有符号 16 位整数

4 区 · 保持寄存器(读写 · 功能码 03 / 06 / 16 / 23)

软元件Modbus 地址通讯地址(十进制)通讯地址(十六进制)点数数据类型
D0-D799940001-480000000-79990X0000-0X1F3F8000有符号 16 位整数
D8000-D825548001-482568000-82550X1F40-0X203F256有符号 16 位整数
T0-T25548257-485128256-85110X2040-0X213F256有符号 16 位整数
C0-C19948513-487128512-87110X2140-0X2207200有符号 16 位整数
C200-C25548713-488248712-88230X2208-0X227756有符号 32 位整数(占 2 个地址)
AO0-AO9949001-491009000-90990X2328-0X238B100有符号 16 位整数
AI0-AI9149101-491929100-91910X238C-0X23E792有符号 16 位整数
D8256-D8511未开放未开放未开放—有符号 16 位整数
T256-T511未开放未开放未开放—有符号 16 位整数
AO100-AO127未开放未开放未开放—有符号 16 位整数
R0-R32767未开放未开放未开放—有符号 16 位整数

模拟量地址窗比实际路数宽

AI0-AI255、AI0-AI91 的地址窗比固件支持的宽:最多 85 路模拟量,实际装了几路看机型与硬件配置。读超出实际路数的地址不会报错,拿到的是无效值。

表外的地址不会报非法,只会静默换个软元件

每个区都留了兜底:0 区越界读写 M8255、1 区回绕到 X0、 3 区回绕到 AI0、4 区落到 D8031。 所以「读到的值莫名其妙」通常是地址填错而不是通信坏了 —— 先对照上表确认这一路功能码的区间。

「未开放」那一类

这些软元件在 PLC 里真实存在、程序里能用,只是没有接进 Modbus 地址表,主站读写不到它们。 需要把这部分数据送出去时,用 Lua 脚本先搬到已开放的 D 区,见 Lua · Modbus RTU。 整族都不在表上的是扩展寄存器 R(R0-R32767 那一行):它和 D 区不是一片连续内存,按编号逐个存放, 所以没有任何一段 Modbus 地址对应它 —— 要对外给值就别只放 R,同步写一份到 D 区。

读 32 位计数器(C200 以上)时的字序

一个计数器占连续两个地址:低地址那一格是低 16 位,高地址那一格是高 16 位,每个寄存器内部仍是 Modbus 标准的高字节在前。 组态软件里对应「32 位 / DWORD,字序低字在前」(各家叫法不同,常见写作 CDAB)。选错字序的表现是数值巨大或忽正忽负。

更多通信详情


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