Modbus协议

阅读数:107 评论数:0

跳转到新版页面

分类

硬件/嵌入式

正文

一、概述

1、总线技术

目前有Profibus总线、基金会现场总线FF、ControlNet总线、Interbus总线和P-NET总线等主流总,还有一些具备特色的总线,如CAN总线、Modbus协议总线、Lonworks总线、DeviceNet总线、CC-Link总线以及HART总线。

因为以太网技术能解决工业中的上层应用问题,因此各总线组织也先后推出支持以太网和TCP/IP的工业以太网协议。

Modbus串行链路协议和Modbus/TCP协议已经公开,并且无版税要求、有相对容易的工业网络部署,以及对供应商来说,修改裁剪原生的位或字节没有很多限制,因些,Modbus协议获得了广泛的使用。

2、Modbus协议的发展

Modbus协议是施耐德电气公司的发布的一个总线协议,此协议支持传统的RS-232、RS-422/485和以太网设备。该协议定义了一种任何设备可以识别并执行的消息结构,不用关心这些设备是经过何种网络进行通信的。

二、Modbus通信协议规范

modbus协议使用串口传输时可以选择RTU或者ASCII模式,ASCII模式采用LRC校验,RTU模式采用16位CRC校验。通过以太网传输时使用TCP,这种模式下不使用检验,因为TCP协议是一个面向连接的可靠协议。TCP和RTU协议非常类似,只要把RTU协议两个字节的校验码去掉,然后在RTU协议的开始加上000006并通过TCP/IP网络协议发送出去即可。

1、Modbus串行链路

(1)Modbus通信单元

Modbus协议定义了一种与通信层无关的协议数据单元(Protocol Data Unit,PDU),并在PDU的基础上,根据总线和网络的不同,选择添加特定的附加域,构成应用数据单元(Application Data Unit, ADU)。系统通过ADU来实现数据的正确传输。

(2)Modbus通信原理

Modbus协议使用主从模式,这是一种应答的通信方式,意思是处于同一个网络中的所有设备,有且仅有一个作为主机,其余设备均为从机,只有主机能够做出数据请求命令,从机负责接收请求,并根据主机的请求内容做出相应的应答,若从机没有接收到主机请求,则不会主动传输数据,也不会与其他从机通信。

当在Modbus网络上传输数据时,首先由主机来构造PDU,PDU中通过功能码指示当前操作类型,数据域表示执行功能的必要参数。以此来启动Modbus事务处理任务,然后主机在PDU上添加相磁的附加域,形成ADU。其中包括地址域,用来指示从机地址信息,便于主机对从机进行寻址操作。尾部包含检验码用来对报文内容进行冗余检验,确保数据正确传输。最后,从机收到主机请求后,对数据进行处理,并返回相应帧。响应帧的ADU和PDU单元与发送帧格式相同,数据域包括从机的处理结果。若从机响应请求过程中发生错误,会生成异常报文。其包含一个异常功能码和一部分异常码,异常码用来供主机识别及完成后续操作。

(3)Modbus串行链路协议

Modbus串行链路协议位于OSI模型的第2层,也就是数据链路层,采用异步串口通信。在物理层,Modbus串行链路协议可以采用TIA/EIA-485或TIA/EIA-232等物理接口,但一般采用TIA/EIA-485物理接口,也就是RS485。

设备使用Modbus协议在串行口上传输时,可以使用ASCII和RTU两种模式:

相比ASCII传输模式,当同样发送一条数据帧时,RTU模式可以携带更多的位数。

RTU

从站地址(1 byte)+功能码(1 byte)+数据区(N bytes)+校验码(2 bytes)

2、Modbus/TCP链路

串行链路上的主/从模式演变为客户机/服务器通信模式,串行链路上的一主多从的结构模式演变为多客户机/多服务哭喊通信模式,Modbus TCP注册了502端口。

(1)Modbus/TCP 客户机/服务器模型

包含四个状态类型,分别是:请求、指示、证实和响应。

(2)Modbus/TCP 网络结构

借助Modbus/TCP网关,网络总线上的所有设备均可以连入以太网中,实现整个控制系统的通信。

(3)Modbus/TCP通信原理

Modbus/TCP协议采用了一种面向连接的通信方法,连接过程中需要经过“建立连接”、进行通信、释放连接。Modbus/TCP协议以位于数据链接层的Modbus RTU串行链路协议为基础,物理层采用以太网接口,网络层采用IP协议,传输层采用TCP协议,无会话层和表示层,在应用层将特定的报文添加到标准的Modbus RTU协议报文,然后插入到TCP协议报文中,实现Modbus/TCP协议报文借助TCP/IP协议在以太网中进行传输。

为了报文能通过TCP/IP协议进行传输,Modbus/TCP协议需要在Modbus RTU串行链路基础上添加一种被称为MBAP的报文头。该报文头携带长度信息,使得Modbus数据帧在TCP上传输时,即使被分割成多个数据包,接收端依然能够识别并响应请求。

整个MBAP报文头共7个字节:事务元标识符用于客户端和服务器间建立请求和响应的联系,当建立完成,该标识符在网络中便是唯一的。单元标识符表示从站的地址或编号,用于指示从机的身份。TCP/IP连接是通过目的IP地址识别对方,同理,Modbus/TCP连接是通过单元标识符找到指定从机。如果从机自身含IP地址,则不南石山村 单元标识符。Modbus/TCP通信中无需CRC检验,由TCP/IP的校验和机制即可保证传输的准确性。




相关推荐