Modbus PLC
LECPServer 集合了针对Modbus的PLC通讯,包括施耐德等PLC,均使用Modbus进行通讯; 目前LECPServer开放以下Modbus的PLC通讯协议
- Modbus TCP
- Modbus UDP
- Modbus RTU Over Serial
- Modbus ASCII Over Serial
Modbus 简要说明
这里首先对Modbus做一个初步的说明
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。
因此,现在所有施耐德的PLC均使用Modbus协议进行通讯。
Modbus支持以太网链路(TCP/IP、UDP),也支持串口链路,而串口使用的Modbus规范有RTU或者ASCII两种。
Modbus里面主要有四大寄存器组成。
Coil = 线圈寄存器;用来存放Bool值,可读写 Discrete = 离散寄存器;用来存放Bool值,只读 Holding Register = 保持寄存器;用来存放Word值,可读写 Input Register = 输入寄存器;用来存放Word值,只读
而施耐德PLC的点位地址对应寄存器的关系是
Coil 对应 M区 Holding Register 对应 MW区
如 %M093 那我们选取的寄存器应该是 Coil-093,%MW077 那我们选取的寄存器应该是 HoldingRegister-077
这里以施耐德的 M2xx 系列PLC为例子,展示下如何在 LECPServer 里配置施耐德的PLC
配置基础
LECPServer里对Modbus地址进行配置的时候,使用了寄存器区分原则。地址可以用三种表达方式。
- 寄存器+地址
- 寄存器简写+地址
- 地址
当使用直接地址的时候,需要注意,当地址类型是Bool的时候,会默认使用Coil线圈寄存器,当是其他类型的时候,会默认使用Holding Register保持寄存器。
例如,当我们配置Coil线圈寄存器093的时候,可以用以下三种方式表达
- coil093 (或COIL093)
- c093 (或C093)
- 093
当我们需要配置 Holding Register保持寄存器077的时候,可以用以下三种表达方式
- holding077 (或HOLDING077)
- h077 (或H077)
- 077
当我们需要配置 Input Register 输入寄存器0837的时候,可以用以下两种表达方式
- input0837 (或INPUT0837)
- i0837 (或I0837)
当我们需要配置 Discrete 离散寄存器5534的时候,可以用以下两种表达方式
- discrete5534 (或DISCRETE5534)
- d5534 (或D5534)
如何配置
现在我们以施耐德 TM2xx 系列的PLC为样例,首先我们需要给 PLC 配置固定的IP地址

其次,将需要使用的%MW和%M点位给配置上

好了,现在我们可以开始配置LECPServer了。
- 点击 "新加设备" ,填写设备名称,例如 "MODBUS"
- 在 "设备配置" 栏的 PLC_DEVICE 里面选中 "SchneiderModbusNet" (使用Modbus TCP协议)
- 点击 "设备配置" 栏的 "应用" 按键,这时候 "xxxx设定值保存成功" 的提示,证明节点被成功添加到 LECPServer 里面了
- 点击 "+" 号,添加一个节点
- 输入节点名称,如 "coil0"
- 地址也填写 "coil0",读取PLC %M0地址位
- 选择该节点的类型,这里我们选择 "Bool"
- 节点长度,用来设置该节点的数组长度,这里我们设置为 "4",则代表该节点是一个由4个元素构成的Bool数组
- 再添加一个节点,名称为 "holding0",地址也填写 "holding0",读取PLC %MW0地址位
- 选择给节点的类型,这里我们选择 "Float",长度设置为 "4"
- 点击"应用"按键,该节点就已经生效,你会看到节点 "值" 栏目有对应的值出现
