LECPServerEN ↗免费下载

Modbus PLC

本页内容
  1. Modbus 简要说明
  2. 配置基础
  3. 如何配置

LECPServer 集合了针对Modbus的PLC通讯,包括施耐德等PLC,均使用Modbus进行通讯; 目前LECPServer开放以下Modbus的PLC通讯协议

  1. Modbus TCP
  2. Modbus UDP
  3. Modbus RTU Over Serial
  4. 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地址

schn_01

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

schn_02

好了,现在我们可以开始配置LECPServer了。

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

schn_03 schn_04