Modbus RTU通信协议因免费授权而得到众多厂商支持,目前市场上绝大多数PLC与组态软件均内置支持该协议,基于RS-485串口的智能设备也多以Modbus RTU实现数据交换。由于各PLC、组态软件及智能设备厂商在寄存器地址等定义上不尽一致,实际配置中仍会遇到一些问题。本文结合组态王软件,介绍与一款Modbus RTU设备通信的完整配置过程。
组态王(KingView)是北京亚控科技发展有限公司面向中低端自动化市场开发的一款组态软件,因其设备驱动程序丰富、组态方式灵活、数据链接功能完善而得到广泛应用。本例采用的智能设备为深圳市鼎信鸿达科技有限公司MD-108型模拟量输入模块,支持八通道0~20 mA电流信号输入、十二位分辨率,内置Modbus RTU通信协议。
具体配置步骤如下。
1. 建立设备。打开或新建工程,进入工程浏览器,选择“设备”,点击右侧“新建”。在“设备驱动”中选择“PLC”→“莫迪康”→“Modbus RTU”→“COM”,点击“下一步”。按默认名称“新IO设备”命名,选择使用的串口(本例为COM1),并按模块地址设置地址码,MD-108默认地址为01,此处设为1,继续“下一步”直至完成。

2. 串口参数设置。双击“设备”→“COM1”,按模块的串口通信参数进行设置。组态王中COM1默认校验方式为偶校验,而多数串口设备采用无校验,此处必须改为与模块一致,否则无法通信;通信模式选择RS-485。

3. 定义数据变量。进入“数据库”→“数据词典”,点击“新建”,按图示填写参数。变量名与描述可按需自定义。由于采集的是模拟量信号,数值占一个寄存器、两个字节,变量类型设为“I/O实数”,灵敏度按模块设定(本例为0.001)。此处需特别注意:最大值原始值应为实际数值的1000倍,例如最大电流20 mA对应最大原始值须设为20 000;否则将始终读到最大值(若初设20,则读值恒为20)。变量关联设备“新IO设备”,寄存器“40002”:采用功能码03,对应“4”开头并标识只读;“0002”表示寄存器地址。MD-108第一通道寄存器地址为0001,因其自0000起编址,而组态王寄存器默认自0001起编址,故寄存器地址需加1。因无不带符号的数据,数据类型设为ushort。

4. 画面显示。打开开发系统新建画面并关联相应变量,本例选用“模拟值输出”元件,随后进入组态王运行系统(view)打开画面,即可看到从MD-108采集到的实时模拟量数值。
