摘要:
工业控制已进入网络时代,在如今工控技术和工控产品百家争鸣的时代,各种不同设备之间的通讯已成为一个系统的关键所在。Modbus工业网络协议就是解决这一问题的一种利器。本文简单阐述了Modbus协议的基本原理,并结合涩宁兰输气管线SCADA系统中Modbus协议的实际应用,介绍了Modbus应用的一般方法和注意事项。
主题词:
Modbus 帧 ASCII模式 RTU模式 SCADA RS-485
Modbus 协议是Modicon 公司开发的一种数据通讯协议,通过这个协议,各种不同的设备和网络可相互进行通讯,由于其具有高度的可操作性和开放性,Modbus 协议已经成为一种通用性很强的工业控制网络通讯协议。许多不同品牌、不同厂家的设备之间都可通过该协议交换数据。涩宁兰输气管线SCADA系统应用了多种通讯和网络协议,使各种设备有机的结合在一起,成为一个完整的三级集散控制系统,Modbus 协议是其中一种重要的协议。
Modbus 协议简介
一、 Modbus的通讯过程
Modbus协议定义了一种信息结构,这种信息结构可以被所有支持该协议的各种设备在通讯时认可和使用。它描述了控制器向其他设备发出查询的过程以及其他设备如何进行应答,以及错误的检测和报告。
Modbus协议采用master-slave(主-从)的技术。在一个Modbus总线上,只能有一个master,而slave最多可有247个,地址为1——247。进行通讯时,只有master才可以发起一个“查询”,充当slave的设备不断的检测,当检测到有自己地址的“查询”时,就会向master发出一个“回应”,或者根据master的命令采取相应的动作。当master发出的“查询”是一个“广播”(地址码为0)时,所有的slave都执行master的命令,但不向master发出回应信息。
二、 Modbus的帧
在网络通信中,数据都是以“包”(Packet)或 “帧”(Frame)的形式进行传输,“包”和“帧”含义基本相同,均指通信中的一个数据块。对于某种具体通信网络,一般使用术语“帧”。在Modbus协议中,引用了“帧”(Frame)作为通讯过程中的数据单位,Modbus中的“帧”由以下几部分组成:
1、标志位:表示一个“帧”的开始。
2、地址位:表示该“帧”的信息是发给哪一个slave的,或是由哪个slave发出的信息。
3、功能代码:表示指令,在Modbus协议中,有一系列代码表示不同的指令,例如:代码“3”表示读数据。
4、数据位:是对功能代码的进一步补充与说明,说明指令的具体内容。
5、校验位:CRC或LRC校验。
6、停止位:表示该“帧”的结束。
每部分的位数和表示方法依采取的模式不同而略有区别,下文将详细论述。
三、 Modbus的两种通讯模式
在Modbus协议中,依数据在传输的过程中的具体形式不同,分为两种模式:ASCII 和 RTU,采用哪种模式由用户自己根据需要进行选择。在选择时,同一Modbus网络中的所有设备的模式选择必须一致。
1、 ASCII模式
ASCII(American Standard Code for Information Interchange),即美国信息交换标准代码。在这种模式中,每个8比特的字节被转换两个ASCII字符进行传送。这种模式的主要优点是传送的每相邻的两字节之间允许最大的时间间隔是1秒。