基于三菱FX PLC的MODBUS-RTU通信协议的应用

2019-01-09 08:48肖万彪董培培
锻压装备与制造技术 2018年6期
关键词:数据位通信协议主站

肖万彪,董培培,郭 星,唐 坚

(江苏扬力集团股份有限公司,江苏 扬州 225127)

现代工业自动化控制系统向智能化、网络化和开放式结构的方向发展。利用现场总线技术,可以将符合统一标准的各种设备统一起来,进行分布式集中控制。Modbus协议作为一种标准通信协议,其重要性不言而喻[2]。

Modbus通信协议是全球第一个真正用于工业现场的总线协议,共有Modbus-RTU、Modbus-ASII和Modbus-TCP三种通信方式。其中Mod

bus-RTU通信方式物理层采用RSS32、RS485等异步串口接口标准,且具有良好的兼容性和开放性,因而被工业控制器生产厂商大量采用。本文以应用较为广泛的三菱FX3G系列PLC为例,详细描述如何运用三菱微型可编程控制器与带有MODBUS-RTU通信协议的其他设备之间进行数据交换。以广播方式和所有从站设备进行通信,但从站不响应广播信息[3]。

三菱FX系列PLC支持的Modbus-RTU通信协议的信息帧规格如表1所示,其详细内容介绍如下。

表1 三菱FX系列PLC Modbus-RTU数据帧规格[1]

1 MODBUS-RTU通信协议

三菱FX系列PLC可以扩展具有标准Modbus-RTU通信协议的通信适配器,其通信方式为主从通信。该通信协议将进行数据交换的双方定义为“主站”(MASTER)和“从站”(SLAVE),一方面主站可以单独与指定地址的从站进行通信,如主站发出查询或写入从站数据的请求信息,从站接收到正确信息后根据消息种类进行反馈应答;另一方面,主站也能

(1)地址字段。三菱PLC支持的Modbus-RTU的地址字段是指从站的地址信息,这个地址是从站唯一的通信地址,可设定值为1-247,0为主站向全部从站进行广播,从站不响应。需要注意的是,247是MODBUS最大的地址编号,FX MODBUS主站可指定的地址范围为:1-32。

(2)功能代码。功能代码能够以1字节长(8位)在1-255范围内进行设定,主站对从站指定要求的功能,从站根据要求执行相关动作。表2为三菱FX系列PLC所对应的部分常用的功能代码,当从站向主站发生响应信息,正常结束时,被请求的功能代码会被存储;异常结束时,最高位会被置ON。

(3)数据。数据信息在主站向从站发生请求文本时,指存储用于执行通过功能码所指定功能的信息,其格式根据功能代码的不同产生相应的变化,数据中含有字节计数器、字节数和进行读取/写入的内容等。当从站向主站发生响应文本时,通过功能代码所指定功能的执行结果会被存储;异常结束时,异常响应代码会被存储。

(4)错误效验。为保证主从之间的通信信息准确性,主站和从站会给全部发送的文本自动添加检查代码,并重新计算接收文本的检查代码,文本异常时,取消文本。Modbus-RTU协议在信息帧中自动加入的效验码为CRC码。CRC是“Cyclical Redundancy Check”(循环冗余效验码)的英文简称,CRC码为2个字节,16位的二进制值,故又称为CRC-16,由发生设备计算CRC值,并把它附加在信息帧的后面,接收设备在接收信息的过程中也执行类似的算法,再次计算CRC值,将计算的CRC值与接收到的CRC值进行比较,若二者不一致,即认为信息帧出错。

2 PLC程序设计

三菱FX系列PLC运用Modbus-RTU通信协议进行数据交换时,硬件设置非常简单,只需要扩展一套通信适配器和功能扩展板即可,其他通信方面的设置需要通过程序设定。需要注意的是三菱FX系列PLC在Modbus-RTU的通信设定中,必须使用特殊辅助继电器M8411,运用将LD M8411作为接点的MOV指令,在特殊数据寄存器中设定通信参数,以通道1为例,其主站参数如表3所示。

其中,最为重要的两个特殊数据寄存器为D 8400和D 8401,D8400为通信格式,可进行数据长度、奇偶性、波特率等参数设定,其16位定义如表4所示。

需要注意的是在RTU模式的情况下,数据长度最好设定成8位,如设成7位,有可能会破坏数据。D8401中的数据关系到选用什么通信协议,主/从站的设定等,其各数据位具体含义如表5所示。

如果运用通道2做Modbus通信,其相应的参数设定为D8420,D8421,D8429,D8430,D8431,D8432,D8435,D8436,各数据位的含义与其对应的通道1参数一样,这里不再赘述。三菱FX系列PLC为其Modbus-RTU通信,主站读取/写入相应从站数据准备了一个专用指令ADPRW。ADPRW共有五个操作数,理解五个操作数的含义,按照实际需要填入相应的数据,可以非常便捷的进行数据交换。

表2 三菱FX系列PLC Modbus-RTU协议常用功能代码[1]

表3 Modbus-RTU协议通道1主站参数[1]

表4 特殊寄存器D8400各数据位定义[1]

其中,五个操作数的含义如表6所示。

表5 特殊寄存器D8401各数据位定义[1]

表6 ADPRW操作数设定[1]

3 通信实例

根据上述设定,本文编写了一段通信程序,与具有标准Modbus-RTU协议的智能设备进行数据交换,其中部分代码如下:

将上述程序下载到FX3GA型号PLC中,通过现场测试,可以通过Modbus-RTU通信协议进行主站和从站之间的数据交换,需要注意的是主站与从站的波特率、数据位、停止位、效验等参数设定必须一致才能成功进行通信。

4 结论

本文以三菱FX系列PLC为例,对底层工业控制中运用十分广泛的Modbus通信协议进行了分析。详细描述三菱PLC所支持的标准Modbus-RTU通信协议的参数设定、通信格式等方面各特殊寄存器的数据位的详细含义,以及在程序编写方面所需要注意的事项,最后给出了一段可行的基于FX3GA型号PLC的通信程序,为三菱PLC和其他智能设备通过Modbus-RTU通信协议进行数据交换提供了进一步支持。

猜你喜欢
数据位通信协议主站
A320飞机大气数据的采集和计算在排故中的应用
基于Z-Stack通信协议栈的红外地温采集电路设计
微弱GPS信号避开比特跳变的捕获算法
EtherCAT主站与主站通信协议的研究与实现*
多表远程集抄主站系统
一种适用于FPGA系统中的变速箱电路设计
基于DMX512通信协议的多路转发器设计与研究
基于NS-3的PLC多频通信协议仿真平台设计与实现
减少调度自动化设备通讯串口丢包率的措施
基于改进经济压差算法的主站AVC的研究