您当前位置:网站主页 > 专业知识 >

MODBUS通信协议详解

一、什么是通信协议
 
        通信协议又称通信规程,是指通信双方对数据传送控制的一种约定,约定中对数据格式,同步方式,传送速度,传送步骤,检纠错误方式及控制定义等问题做出统一规定,通信双方必须共同遵守,它也叫做链路控制规程。
 
        通信协议还包括电气接口标准,但它是另外制定的,不在有关数据传送的通信协议内。
 
二、Modbus通信协议简介
 
        Modbus由MODICON公司于1979年开发,是一种工业现场总线协议标准,1996年施耐德公司推出基于以太网TCP/IP的Modbus协议,Modbus协议是一项应用层报文协议,包括ASCII、RTU、TCP三种报文类型。
 
        标准的Modbus协议物理层接口有RS232、RS422、RS485和以太网接口,采用master/slave方式通信。
 
        Modbus通信协议是一种主从式串行异步半双工通信协议,采用主从式通信结构,可使一个主站对多个从站进行双向通信,主站可单独和从站通信,也可以广播方式和所有从站通信。Modbus协议的某些特性是固定的,如信息帧结构,帧顺序,通讯错误和异常情况的处理,以及所执行的功能码等,都不能随便改动,其他特性是属于用户可选的如传输介质,波特率,字符奇偶校验,停止位个数,参数字址定义等等。
 
        Modbus协议通信格式中数据长度是固定的,校验位、停止位、波特率是可选的。
 
        由于Modbus协议是完全公开透明的,所需的软硬件又非常简单,这就使它已经成为一个通用的工业标准,几乎所有的控制设备和智能化仪表都支持Modbus通信协议。通过Modbus协议,不同厂商所生产的控制设备和智能仪表就可以连成一个工业网络,进行集中监控。
 
Modbus协议常用功能码:
 

功能码 名称 功能
H01 读线圈状态 取输出开关量状态
H02 读输入状态 取输入开关量状态
H03 读保持存储器 读一个或多个输出存储器值
H04 读取存储器 读一个或多个输入存储器值
H05 强置单线圈 强置一个输出开关量状态
H06 写保持存储器 把字写入一个输出存储器
H08 回送诊断校验 把诊断报告送从站
H0F 强置多线圈 强置一组连续输出开关量状态
H10 预置多存储器 写入一组连续输出存储器值

 三、ASCII通信方式
 
1、ASCII模式通信格式约定
 
起始位:1位
数据长度:7位,低位先送
校验位:1位(有校验),0位(无校验)
停止位:1位(有校验),2位(无校验)
波特率:可选
 
2、ASCII模式数据格式约定
 

起始码 地址码 功能码 数据区 校验码 停止码
01-1F 功能码 n个字符 LRC CR LF
 
3、ASCII模式校验码的约定
 
ASCII模式数据格式的校验码采用LRC算法所形成的校验码。
 
LRC算法详解
 
参与校验数据:从地址码到数据区的所有数据。
算法:相邻2个16进制符相加求和。
校验码:取其和的低8位的补码为校验码。
 
4、ASCII模式数据传送约定
 
        ASCII模式数据传送约定在数据格式中每个16进制字符(0-9)、(A-F)都转换成ASCII码发送,这种方式的主要优点是字符发送的时间间隔可达1秒,而不产生错误。
 
四、RTU通信方式
 
1、RTU模式通信格式约定
 
起始位:1位
数据长度:8位,低位先送
校验位:1位(有校验),0位(无校验)
停止位:1位(有校验),2位(无校验)
波特率:可选
 
3、RTU模式数据格式约定
 

起始码 地址码 功能码 数据区 校验码 停止码
3.5字符停止时间 01-1F 功能码 n个字符 CRC 3.5字符停止时间

3、RTU模式校验码约定
 
RTU模式数据格式的校验码采用CRC算法所形成的校验码。
 
4、RTU模式数据传送约定
 
        RTU模式数据传送约定按数据格式中16进制字符进行连续发送,如果在发送帧信息期间,出现大于1.5个字符的静止时间时,则信息会出现错误。该模式的主要优点是在相同波特率下其传输效率高于ASCII模式。
 
四、ASCII和RTU两种模式的应答和错误检测
 
        当主站向从站发送信息时,全部通信由两部分组成:一是主站向从站的发送,我们叫查询,又叫请求;二是从站对主站的应答,也叫回传、响应。应答的目的是告诉主站是否有错误和回答主站的相关通信请求。通信协议对查询和应答的时间,数据格式,验错方法都会给出相应的规定。
 
1、正确应答说明
 
①、常用功能码H03:读出一个或连续多个存储器值
 
查询: 

起始码 地址码 功能码 存储器首址 数据个数 校验码 停止码

正确应答: 
起始码 地址码 功能码 读取字节数 数据1 数据2 数据n 校验码 停止码

②、常用功能码06:写入一个值到存储器中
 
查询:

起始码 地址码 功能码 存储器地址 写入数据 校验码 停止码

正确应答: 
起始码 地址码 功能码 存储器地址 写入数据 校验码 停止码

③、常用功能码H10:写入多个值到连续存储器中
 
查询: 

起始码 地址码 功能码 存储器首址 写入数据个数 写入数据字节数 写入数据1 写入数据2 写入数据n 校验码 停止码

正确应答: 
起始码 地址码 功能码 存储器首址 写入数据个数 校验码 停止码

2、错误检测
 
        Modbus规定,当主站查询后,从站回应时,使用功能码的变化来指示是否有错误发生,无错误正常应答,从站仅回应相同的功能码,对有错误或异常的应答,从站应答时,将其功能码最高位b7置1,同时从站还应将错误代码放入数据区告诉主站发生了什么错误。
 
3、错误应答说明:
 
查询:
起始码 地址码 功能码 数据区 校验码 停止码
3.5字符 01 03 21 02 00 02 CRC 3.5字符

错误应答:
起始码 地址码 功能码 数据区 校验码 停止码
3.5字符 01 83 错误代码 CRC 3.5字符

五、Modbus TCP通信方式
 
1、Modbus TCP概述
 
        Modbus/TCP是简单的、公开的用于管理和控制自动化设备的Modbus系列通讯协议的派生产品。
 
        Modbus/TCP 使Modbus RTU协议运行于以太网,Modbus TCP使用TCP/IP和以太网在站点间传送Modbus报文,Modbus TCP结合了以太网物理网络和网络标准TCP/IP以及以Modbus作为应用协议标准的数据表示方法。与Modbus另外两种模式不同,Modbus TCP插入一个标准的Modbus报文到TCP报文中,不再带有数据校验和地址。
 
2、通讯所使用的以太网参考模型
 
Modbus TCP传输过程中使用了TCP/IP以太网参考模型的5层:
 
第一层:物理层,提供设备物理接口,与市售介质/网络适配器相兼容。
 
第二层:数据链路层,帧编码和误差纠正,保证数据传输的正确性。
 
第三层:网络层,生成带有32位IP地址的IP报文包。
 
第四层:传输层,实现可靠性连接、传输、查错、重发、端口服务、传输调度。
 
第五层:应用层,Modbus协议报文。
 
 
3、Modbus TCP数据帧
 
        Modbus数据在TCP/IP以太网上传输,支持Ethernet II和802.3两种帧格式,Modbus TCP数据帧包含报文头、功能代码和数据3部分。MBAP报文头(MBAP、Modbus Application Protocol、Modbus应用协议)分4个域,共7个字节。
 
        由于使用以太网TCP/IP数据链路层的校验机制而保证了数据的完整性,Modbus TCP 报文中不再带有CRC校验,原有报文中的“地址码”也被“单元标识符”替代而加在Modbus应用协议报文头中,即Modbus TCP的数据帧是Modbus RTU的数据帧去掉CRC校验和功能码,并在前面加上MBAP报文头而成。
 
Modbus TCP数据帧
 

MBAP报文头(7字节) 功能码(1字节) 数据(不固定)

MBAP报文头(MBAP:Modbus Application Protocol、Modbus应用协议)
 

长度(B) 客户端 服务器端
事物处理标识 2 由客户端生成 应答时复制该值
协议标识符 2 由客户端生成 应答时复制该值
长度 2 由客户端生成 应答时由服务器端重新生成
单元标识符 1 由客户端生成 应答时复制该值
 
①、事物处理标识/传输标志(2个字节)
 
        用于事物处理配对,在响应中,Modbus服务器复制请求的事物处理标识符。在以太网传输中存在一个问题,就是先发后至,我们可以利用这个事物处理标识符做一个TCP序列号,来防止这种情况所造成的数据收发错乱,可以理解为报文的序列号,一般每次通信之后就要加1以区别不同的通信数据报文。
 
②协议标识符
 
        00 00表示Modbus TCP协议。
 
③长度
 
        表示接下来的数据长度,包括单元标识符和数据域,单位为字节。
 
④单元标识符
 
        设备编号也可以理解为设备地址(可以使用PLC的IP地址标识),Modbus从站设备地址为1-247(10进制),地址0作为广播地址。对TCP/IP来说,利用IP地址寻址Modbus服务器,此时Modbus单元标识符是无用的,必须使用无效的从站地址(建议采用“HFF”)。
 
4、Modbus TCP使用的通讯资源端口号
 
        在Modbus服务器中按缺省协议使用Port 502 通信端口,在Modbus客户端程序中设置任意通信端口,为避免与其他通讯协议的冲突一般建议从2000开始。
 
5、使用Modbus TCP原因
 
        TCP/IP已成为信息行业的事实标准,世界上93%的网络都使用TCP/IP,只要在应用层使用Modbus TCP,就可以实现工业以太网数据交换;易于与各种系统互连,可用于管理网、实时监控网及现场设备通信;网络实施价格低廉,可全部使用通用网络部件。
 


点击下载附件
上一篇:通信基础
下一篇:三菱FR-D700系列变频器使用方法

相关推荐