MODBUS通信协议机制简述

——

参考自 《机电控制系统》 李勇

MODBUS通信协议

MODBUS通信协议是一种串行通信协议,从功能上看就是一种现场总线。其主从通信机理(相当于互联网的客户机/服务器通信机理)支持同时连接一个主设备和247个以内任意数量的从设备(实际所支持的从机数要由所用通信设备决定)。MODBUS支持多种电气接口,如RS-232、RS-485、TCP/IP等,且可在多种介质上传输,如双绞线、光纤、红外、无线等。
MODBUS拥有三种传输模式:ASCII模式、RTU模式和TCP模式,不允许混合使用。

在实际的应用过程中,设计者可自行修改,设计专用的通信协议。

通信协议特点

MODBUS为应用层报文传输协议,仅定义了通信的消息结构。
MODBUS定义了消息帧格局和内容的公共格式,描述了控制器访问另一设备的过程、被访问者如何做出应答响应,以及怎样侦测差错和提交差错信息。MODBUS是主从访问的单主控制网络,每个从站都有自己的地址编号,范围0~255.

查询-回应周期

MODBUS通信协议机制简述
MODBUS使用主从技术,只有主机能启动数据传输周期,称为查询;其它从设备处理查询所要求的动作,并返送对查询做出的回应。主设备可以与从设备单独通信或通过广播方式同时与所有从设备进行通信,后者所有从设备不用作任何回应。

消息帧格式

主设备查询和从设备回应的消息帧格式类似。
一个消息帧包含4类信息,按发送的先后顺序排列,其通用格式为:

地址域 功能域 数据域 错误检测域

地址域

表中地址域内容为从设备地址(一个字节)。当从设备发送回应消息时,需把自己的地址放入回应的地址域中,一边主设备知道时哪一个设备作出的回应。
地址0用作广播地址,此时所有的从设备都能够识别并接收。

功能域

功能域中包含功能码,从设备将据此执行对应的功能(一个字节);当从设备回应时,使用功能代码与来指示正常回应还是异常回应:正常回应时回应同样的功能代码;对异常回应,从设备还需在其最高位置置1,此外还需将一个专用代码放到回应罅隙的数据域以通知主设备。
功能码可参照下图:
MODBUS通信协议机制简述
一些功能码是通用的,一些适用于特定设备,一些保留备用。

数据域

数据域中存放需要被功能码操作的具体数据(n个字节,可以为0),包括了开关量或寄存器地址、待处理项的数目、域中实际数据字节数。数据可由ASCII字符或RTU字符组成。正常执行,从设备返回主设备请求信息;出现异常,返回异常代码,供主设备判断下一步行动。主设备应用程序得到异常的回应后,典型处理过程时重发消息,或诊断发给从设备的消息并报告给操作员。

错误检测域

在错误检测域中(ASCII模式为一个字节,RTU模式为两个字节),MODBUS采用两种错误检测方法:奇偶校验和帧检测,后者包含LRC(Longitudinal Redundancy Check,纵向冗余校验)和CRC(Cyclic Redundancy Check,循环冗余校验)。