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功能码表二

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Modbus是一种通信协议,用于在工业控制系统中传输数据。它最初由Modicon公司开发,现在已经成为广泛使用的标准。 Modbus协议分为两个不同的变种:Modbus RTU和Modbus ASCII。Modbus RTU使用二进制表示,每个数据位由一个高电平或低电平表示。Modbus ASCII将数据转换为可打印字符,每个字节由两个ASCII字符表示。 Modbus协议使用主从结构进行通信,主设备发送请求并接收响应,从设备响应请求并发送数据。通信是通过串口(RS232或RS485)进行的,主设备通过发送地址码和功能码来标识从设备和请求类型。 Modbus协议支持多种功能码,用于读取和写入数据。常见的功能码包括读取和写入保持寄存器、读取和写入输入寄存器、读取和写入线圈状态和读取和写入离散输入状态。 Modbus协议的帧结构包括:起始位、地址码、功能码、数据和校验。起始位是一个起始信号,标识帧的开始。地址码标识从设备的地址。功能码指示主设备请求的类型。数据是传输的实际数据。校验用于验证数据的完整性。 Modbus解析是指将收到的Modbus数据帧解析为可读的格式。解析过程包括从数据帧中提取地址码、功能码、数据等信息,并根据功能码的类型进行相应的处理。 要进行Modbus解析,我们需要了解Modbus协议的结构和各个字段的含义。然后,我们需要编写相应的解析程序,通过读取数据帧中的字段并进行适当的处理,将其转换为可读的格式。 总之,Modbus规约解析是将收到的Modbus数据帧转换为可读的格式的过程。它涉及到解析数据帧的结构和字段,并进行适当的处理和转换。这种解析是工业控制系统中常见的任务,可以帮助我们理解和处理Modbus通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值