Modbus软件开发实战指南
上QQ阅读APP看书,第一时间看更新

1.5 事务处理

Modbus协议允许在各种网络体系结构内进行简单通信,每种设备(包括PLC、HMI、控制面板、驱动程序、动作控制、输入/输出设备)都能使用Modbus协议来启动远程操作。在基于串行链路和以太网(TCP/IP)的Modbus上可以进行相同通信。

Modbus是一个请求/应答协议,并且提供统一的功能码用于数据传输服务。Modbus功能码是Modbus请求/应答PDU(即PROTOCOL DATA UNIT,协议数据单元)的元素之一,所谓的PDU是Modbus协议定义的一个与基础通信层无关的简单协议数据单元。而在特定总线或网络上,Modbus协议则通过ADU(即APPLICATION DATA UNIT,应用数据单元)引入一些附加域,以实现完整而准确的数据传输。

为了寻求一种简洁的通信格式,Modbus协议定义了PDU模型,即功能码+数据的格式;而为了适应多种传输模式,在PDU的基础上增加了必要的前缀(如地址域)和后缀(如差错校验),形成了ADU模型。

ADU与PDU之间的关系如图1-4所示。

图1-4 通用Modbus帧结构

Modbus事务处理的过程如下:

主机设备(或客户端)创建Modbus应用数据单元形成查询报文,其中功能码标识了向从机设备(或服务器端)指示将执行哪种操作。功能码占用一个字节,有效的码字范围是十进制1~255(其中128~255为异常响应保留)。查询报文创建完毕,主机设备(或客户端)向从机设备(或服务器端)发送报文,从机设备(或服务器端)接收报文后,根据功能码做出相应的动作,并将响应报文返回给主机设备(或客户端),如图1-5所示。

图1-5 Modbus事务处理(正常)的过程

如果在一个正确接收的Modbus ADU中,不出现与请求Modbus功能有关的差错,那么从机设备(或服务器端)将返回正常的响应报文。如果出现与请求Modbus功能有关的差错,那么响应报文的功能码域将包括一个异常码,主机设备(或客户端)能够根据异常码确定下一个执行的操作。

如图1-6所示,对于异常响应,从机设备(或服务器端)将返回一个与原始功能码等同的码值,但设置该原始功能码的最高有效位为逻辑1,用于通知主机设备(或客户端)。

图1-6 Modbus事务处理(异常)的过程