Modbus规约简介
ModBus通讯协议
Modbus是一种串行通信协议,通过此协议,控制器相互之间、控制器经由网路(如以太网)和其它设备之间可以通信。他已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
协议采用主从通信模式,典型的主设备包括现场仪表和显示面板,典型的从设备为可编程逻辑控制器(PLC)。
主要优点:内容公开、无版权要求、不用支付额外的费用、硬件简单、容易部署。
一、传输方式
1、协议数据单元
Protocol Data Unit,PDU,协议数据单元由功能码+数据结构构成,如下图:
协议数据单元
功能码长度——1字节,表示要执行的功能;
数据长度——0~252个字节,表示要读取的地址或要写入的值,不同的功能码对应的数据有所不同。
协议数据单元有三种类型:
请求型协议数据单元(Request PDU)
应答型协议数据单元(Response PDU)
异常应答型协议数据单元(Exception Response PDU)
协议数据单元是Modbus协议通用数据结构,它与底层物理结构无关。但通信时,需要依赖与物理网络。因此要把协议数据单元映射到物理网络上,这就形成了应用数据单元(Application Data Unit,ADU)。由于底层网络的不同,ASCII与RTU应用数据单元结构与TCP应用数据单元的结构不同。
ASCII与RTU应用数据单元结构
TCP应用数据单元结构如下:
TCP应用数据单元结构
TCP应用数据单元在协议数据单元的基础上,添加了一个叫“MBAP”头的结构,即“ModBus Application”应用数据单元。
MBAP头结构
其中:
传输标识符:用于标识应用数据单元,即请求和应答之间的配对;客户端对该部分进行初始化,服务端将其拷贝到自己的ADU中;
协议标识符:系统间的协议标识,0==Modbus;
长度:接下来要发送的数据长度,即:单元标识符+PDU的总长度,以字节位单位;
单元标识符:用于系统间的站寻址,比如在以太网+串行链路中,远程站的地址;
2、协议类型
Modbus协议包括ASCII、RTU、TCP,并没有规定物理层。此协议定义了控制器能够识别和使用的消息结构,而不管它是经过何种网络进行通信的。
Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和应答的方式,数据通讯采用Master/Slave模式,Master端发出数据请求消息,Slave端接收到正确消息后发送数据到Master端以响应请求;Master端可以直接发送消息修改Slave端的数据,实现双向读写。
Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是面向连接的可靠协议。
Modbus采用主从方式收发数据,在实际使用中如果某个Slave站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动连接。因此,Modbus协议的可靠性较好。
TCP和RTU协议非常类似,只要把RTU协议的两个字节的校验码去掉,然后再RTU协议的开始加上五个0和一个6并通过TCP/IP网络协议发送储区即可。
3、ASCII
异步串行通信,主要基于RS485串口通信媒介,消息中的每个8bit字节都作为两个ASCII码发送,可以做到字符发生的时间间隔长达1秒而不产生错误。
使用ASCII模式,消息以冒号(:)字符(ASCII码 3AH)开始,以回车换行符结束(ASCII码 0DH,0AH)。
其它域可以使用的传输字符是十六进制的0…9,A…F。网络上的设备不断侦测“:”字符,当有一个冒号接收到时,每个设备都解码下个域(地址域)来判断是否发给自己的。
在该模式下,每个8位的字节被拆分成两个ASCII字符进行发送,比如发送0xAF(10101111),会分解成“A”(0x41,01000001)和“F”(0x46,01000110)两个字符,其发送量是RTU的一倍。
ASCII码对照表一
ASCII码对照表二
LRC校验
LRC域是一个包含一个8位的二进制字节。LRC由传输端计数并置于消息帧中,接收端在接收数据中计算LRC,并将结果与消息帧中的LRC进行校验,若出现差异,这说明有误。
LRC计算方式
将消息帧中开始处的“冒号”和结尾的“回车”、“换行”移除,其余的字符按字节叠加后取反加一。
4、RTU
Modbus-RTU是一种主从通信模式,
ASCII协议与RTU协议进行比较
二、数据模型
数据模型是对可访问数据的一种抽象,Modbus协议的数据模型定义了四种可访问的数据,分别是:
离散量输入(Discrete Input)
线圈(Coils)
输入寄存器(Input registers)
保持寄存器(Holding registers)
Modbus协议数据模型
Modebus协议允许设备将四种数据分别映射到不同的存储区中,各个区块之间相互独立,使用不同的功能码可以读取到相应的数值,如下图:
Modbus数据模型映射到不同的存储区块
协议也允许设备将四种数据映射到用以存储区块中,这样通过不同的功能码读取数据可能会得到相同的数据(比如:输入寄存器和保持寄存器位同一物理区块),如下图:
Modbus数据模型映射到同一区块
数据模型中的数据最大允许有65596个元素,编号从1开始:165536,元素地址从0开始:065535。
需要说明的是:65536只是协议允许的最大元素范围,但并不要求全部实现。Modbus协议允许设备根据自己的实际情况实现部分元素,甚至不要求实现模型中全部四种数据。
三、地址模式
为了简化数据模型与设备存储区的对应关系,引入了一种地址模型,该模型通过编号的方式对不同类型数据进行区分呢个,各数据的地址编号如下:
Modbus地址模型
Modbus地址模型的编号从1开始,由于每种数据都最大支持65536个元素,因此理论上,
线圈型数据,其地址范围为:000001~065536;
离散型输入,其地址范围为:100001~165536;
输入寄存器,其地址范围为:300001~365536;
存储寄存器,其地址范围为:400001~465536;
由于65536是比较大的数值,实际应用一般不需要过大的存储区,因此PLC厂家普遍采用的是10000以内的地址范围,即:
线圈型数据,其地址范围为:00001~09999;
离散型输入,其地址范围为:10001~19999;
输入寄存器,其地址范围为:30001~39999;
存储寄存器,其地址范围为:40001~49999;
各PLC厂家根据PLC的实际情况,将Modbus的地址模型映射到实际的存储区。一般来说:
线圈——过程输出印象区(Q)
离散量输入——过程输入印象区(I)
输入寄存器——模拟量输入(AI)
保持寄存器——数据块或V存储区或M存储区。
以西门子S7-200 SMART为例:
Modbus地址模型对于RUT、ASCII和TCP都适用。
四、功能码表
Modbus功能码表一
Modbus功能码表二
Modbus规约简介相关推荐
- Modbus 协议简介
一.Modbus 协议简介 Modbus 协议是应用于电子控制器上的一种通用语言.通过此协议,控制器相互之间.控制器经由网络(例如以太网)和其它设备之间可以通信.它已经成为一通用工业标准.有了它 ...
- Modbus协议简介
Modbus协议简介 由于最近要参加一个通信相关的项目,涉及到Modbus协议,因此在这里做以下整理和总结. Modbus是一种串行通信协议,是Modicon公司(现为施耐德电气公司的一个品牌)于19 ...
- java modbus 规约_Modbus RTU的规约详细资料详解
Modbus可编程控制器之间可相互通讯,也可与不同网络上的其他设备进行通讯,支撑网络有Modicon的Modbus和Modbus+工业网络.网络信息存取可由控制器内置的端口,网络适配器以及Modico ...
- Modbus RTU简介(上)
1 前言 1.1 什麽是Modbus Modbus是一种用于工业控制的标准通信协议,它定义了装置之间在应用层的消息封装模式.沟通方法.沟通顺序. Modbus的优势 : Modbus协议是开源免费的 ...
- 电力-RTU终端ModBus规约(C程序)
目录: 一.Modbus slave和Modbus poll使用说明 二.Modbus协议C程序样例 ------------------------------------------------- ...
- modbus的c语言程序,电力-RTU终端MODBUS规约(C程序)
目录: 一.Modbus slave和Modbus poll使用说明 二.Modbus协议C程序样例 ------------------------------------------------- ...
- Modbus通讯协议简介
Modbus协议简介 Modbus协议最初由Modicon公司开发出来,此协议支持传统的RS-232.RS-422.RS-485和以太网设备,许多工业设备,包括PLC,DCS,智能仪表等都在使用Mod ...
- 【Modbus 】Modbus 协议
Modbus 协议简介 Modbus协议是一项应用层报文传输协议,包括ASCII.RTU.TCP三种报文类型. 标准的Modbus协议物理层接口有RS232.RS422.RS485和以太网接口,采用m ...
- MODBUS-RTU通讯协议简介
MODBUS-RTU通讯协议简介 什么是MODBUS? MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司 的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规约进 ...
最新文章
- RabbitMQ的Work模式
- Objective-C 注释规范心得
- oracle控制文件全备失败,Oracle数据库案例整理-恢复数据库失败-主备机控制文件所在目录不同...
- iOS 关于NSString的一些方法
- css 列表属性详细总结
- 普元BPS:唯一零错误的流程平台
- 常用排序算法(三)直接插入排序
- 还在纠结报表工具选型吗
- 【模板一】计算机XXXX系统-毕业设计
- 农历日期用html怎么显示,怎么显示阴历(农历)日期的js代码?
- 公司财务分析——收益性分析
- 卫星影像去雾与色彩复原
- 数据结构之不相交集类
- 无人机航测技术的优势有哪些?
- 什么是XSL,它有什么用途
- 动作捕捉系统用于苹果采摘机器人
- html怎么设置黄色背景,怎么添加黄色底纹
- 鸿蒙电视投屏软件,鸿蒙打造 未来电视就这样!荣耀智慧屏 PRO 深度评测
- python打不开xls文件,wps下用vba实现合并文件夹中所有excel文件
- 安徽宿松2021高考成绩查询,2021安庆高考成绩查询入口