modbus通讯协议modbus通讯协议详解(ModBus通讯协议及应用)

开心常识网 1904 2023-05-27 14:22:01

关于【modbus通讯协议】,modbus 通讯协议详解,今天常识小编棒棒酱给您分享一下,如果对您有所帮助别忘了关注本站哦。

内容导航:1、modbus通讯协议:ModBus通讯协议及应用2、modbus通讯协议,modbus 通讯协议详解1、modbus通讯协议:ModBus通讯协议及应用

Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。

Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。

ModBus网络只有一个主机,所有通信都由他发出。网络可支持247个之多的远程从数控制器,但实际所支持的从机数要由所用通信设备决定。采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。

2、ModBus传输方式

modbus通讯协议,modbus 通讯协议详解(ModBus通讯协议及应用)

帧定界 :MODBUS RTU方式下,每两个字符之间发送或者接收的时间间隔不能超过1.5倍 字符传输时间。如果两个字符时间间隔超过了3.5倍的字符传输时间,规约就认为一帧数据已经接收,新的一帧数据传输开始;

modbus通讯协议,modbus 通讯协议详解(ModBus通讯协议及应用)

(1).RTU模式-消息帧举例:

×发送指令:01 03 00 00 00 02 C4 0B

① 01:ID② 03:功能码

③ 00 00 :寄存器起始地址

④ 00 02 :读取寄存器的长度

⑤ C4 0B:16 CRC校验,低位在前,高位在后;

×回复数据:01 03 04 26 8F 41 DD 30 99

① 01:ID

② 03:功能码

③ 04:数据长度

④ 26 8F 41 DD:41dd268f数据为27.64,数据类型浮点型(Floating Point)

⑤ 30 99:16 CRC校验,低位在前,高位在后

(2).ASCII模式

modbus通讯协议,modbus 通讯协议详解(ModBus通讯协议及应用)

帧定界“:”帧起始“CR LF” 帧结束,ASCII方式用两个ASCII字符表示一个8位数据,比如16进制的3A用字符“3”和字符“A”表示。

modbus通讯协议,modbus 通讯协议详解(ModBus通讯协议及应用)

ASCII模式---消息帧举例

发送指令:

3A 30 31 30 33 30 30 30 34 30 31 06 0D OA

转化成十六进制就是“:0103000401 06”,“ : ”表示起始位,01是分机地址,03是功能命令,0004寄存器起始地址;01寄存器长度,

06是LRC校验

回复数据:3A 30 31 30 33 30 32 30 31 46 34 30 35 0D 0A

转化成十六进制就是 ":01030201 F405" ," : "表示起始位,01是分机地址,03是功能命令, 02是数据字节数,01F4就是500这个数据,05是LRC校验。

(3). MODBUS TCP

Modbus数据在TCP/IP以太网上传输,支持Ethernet II和802.3两种帧格式,Modbus TCP数据帧包含报文头、功能代码和数据3部分,MBAP报文头(MBAP、Modbus Application Protocol、Modbus应用协议)分4个域,共7个字节,如图所示:

modbus通讯协议,modbus 通讯协议详解(ModBus通讯协议及应用)

由于使用以太网TCP/IP数据链路层的校验机制而保证了数据的完整性,MODBUS TCP 报文中不再带有数据校验”CHECKSUM”,原有报文中的“ADDRESS”也被“UNIT ID”替代而加在MODBUS应用协议报文头中。

MODBUS TCP-消息帧举例

发送命令:19 B2 00 00 00 06 06 03 00 27 00 02

上面是modbus客户端发出的报文内容,为modbus tcp/ip协议格式,其前面的六个字节为头字节( header handle);

19 B2 00 00 00 06

19 B2 两个字节是Client发出的检验信息,Sever端只是需要将这两个字节的内容copy以后再放到response的报文的相应位子就可以了

00 00 两个字节是表示tcp/ip 的协议的modbus的协议;

00 06 两个字节表示的是header handle后面还有多长的字节,即表示的是该字节以后的字节长度(lengch),可以看到在00 06后面还有 “06 03 00 27 00 02”六个字节,所以这两个字节表示的就是6;

PDU:“06 03 00 27 00 02”

06 一个字节表示slave address;

03 为Fuction code ;

00 27 表示Client request的寄存器地址;

00 02 表示request 寄存器的长度;(寄存器个数)

3、Modbus协议应用

我们目前所支持的功能码非常有限,主要包括:

功能码

名称

备注

01

READ COIL STATUS

读线圈寄存器

02

READ INPUT STATUS

读状态寄存器

03

READ HOLDING REGISTERS

都保持寄存器

04

READ INPUT REGISTERS

读输入寄存器

05

FORCE SINGLE COIL

写单个线圈寄存器

06

PRESET SINGLE REGISTER

写单个保持寄存器

15

FORCE MULTIPLE COILS

写多个线圈寄存器

16

FORCE MULTIPLE REGISTERS

写多个保持寄存器

举例一:读取寄存器状态

功能码: 01

数据起始地址:00001~00008

数据长度:不大于08 (因为只有8个输出继电器)

说明:读取输出继电器的状态。

数据说明:

地址

描述

说明

00001

第1个输出继电器

=1吸合 =0断开

00002

第2个输出继电器

=1吸合 =0断开

00003

第3个输出继电器

=1吸合 =0断开

00004

第4个输出继电器

=1吸合 =0断开

00005

第5个输出继电器

=1吸合 =0断开

00006

第6个输出继电器

=1吸合 =0断开

00007

第7个输出继电器

=1吸合 =0断开

00008

第8个输出继电器

=1吸合 =0断开

Modbus请求:01 01 00 00 00 08 3D CC

Modbus响应:01 01 08 00 00 00 00 00 00 00 00 34 1D

4、ModBus使用工具

1.Modscan—主要用来模拟主设备发送指令

2.Modsim----模拟从设备回复数据

3.串口调试工具

2、modbus通讯协议,modbus 通讯协议详解

Modbus通信协议是什么?

关于Mod,因为这种协议最早被用在PLC控制器中,准确的说是Modicon公司的PLC控制器,这也是Mod-Bus名称的由来。后来Modicon被施耐德(Schneider)收购,Modbus协议广泛应用在工业控制器、HMI和传感器上,逐渐被其他厂商所接受,成为了一种主流的通讯协议,用于和外围设备进行通讯。

Modbus协议作为当今工业控制领域的通用通讯协议,在无数物联网产品中得到应用,工业、农业等物联网解决方案中都有其身影。ModBus网络是一个工业通信系统,由智能终端的可编程序控制器和计算机,通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件,应用于各种数据采集和过程监控。

modbus通讯协议,modbus 通讯协议详解(ModBus通讯协议及应用)

Modbus网络体系

通过Modbus协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信。Modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备。一般将主控设备方所使用的协议称为Modbus Master,从设备方使用的协议称为Modbus Slave。典型的主设备包括工控机和工业控制器等;典型的从设备如PLC可编程控制器等。Modbus通讯物理接口可以选用串口(包括RS232和RS485),也可以选择以太网口。

Modbus在7层OSI参考模型中属于第七层应用层,数据链路层有两种:基于标准串口协议和TCP协议,物理层可使用3线232、2线485、4线422,或光纤、网线、无线等多种传输介质。

modbus通讯协议,modbus 通讯协议详解(ModBus通讯协议及应用)

ModBus网络只有一个主机,发出通讯信号,多个从机,网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。采用这个系统,各PC可以和中心主机交换信息而不影响各PC执行本身的控制任务。

Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。

modbus通讯协议,modbus 通讯协议详解(ModBus通讯协议及应用)

Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。

大多数Modbus设备通信通过串口EIA-485物理层进行。

对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。

三种传输模式

1979年,Modicon 首先推出了串行Modbus标准,后来由于网络的普及,需要更高的传输速度,1997年制定了基于TCP网络的Modbus标准。

所以总的可分为两个传输模式:基于串行链路的和基于以太网TCP/IP的。但是我个人还是习惯分为3种传输模式:

modbus通讯协议,modbus 通讯协议详解(ModBus通讯协议及应用)

基于串口的Modbus-RTU数据按照标准串口协议进行编码,是使用最广泛的一种Modbus协议,采用CRC-16_Modbus校验算法。

基于串口的Modbus-ASCII所有数据都是ASCII格式,一个字节的原始数据需要两个字符来表示,效率低,采用LRC校验算法。

基于网口的Modbus-TCPModbus-TCP基于TCP/IP协议,占用502端口,数据帧主要包括两部分:MBAP(报文头) PDU(帧结构),数据块与串行链路是一致的。

所以当我们提及Modbus协议时,要确定是哪种模式:RTU、ASCII或TCP,3种模式区别还是很大的。

有些设备支持多种Modbus模式,有些设备只支持其中一种,实际使用要根据设备使用手册来选择采用哪种模式。

对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的。

modbus通讯协议,modbus 通讯协议详解(ModBus通讯协议及应用)

Modbus有一个扩展版本Modbus Plus(Modbus 或者MB ),不过此协议是Modicon专有的,和Modbus不同。它需要一个专门的协处理器来处理类似HDLC的高速令牌旋转。它使用1Mbit/s的双绞线,并且每个节点都有转换隔离装置,是一种采用转换/边缘触发而不是电压/水平触发的装置。连接Modbus Plus到计算机需要特别的接口,通常是支持ISA(SA85),PCI或者PMCIA总线的板卡。

标准的Modicon控制器使用RS232C实现串行的Modbus。

Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式,数据通讯采用Maser/Slave方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;

Master端也可以直接发消息修改Slave端的数据,实现双向读写。

Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。

另外,Modbus采用主从方式定时收发数据,在实际使用中如果某Slave站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动接通,Modbus协议的可靠性较好。

对于Modbus的ASCII、RTU和TCP协议来说,其中TCP和RTU协议非常类似,只要把RTU协议的两个字节的校验码去掉,然后在RTU协议的开始加上5个0和一个6并通过TCP/IP网络协议发送出去即可。

Modbus RTU 协议

Modbus在7层OSI参考模型中属于第七层应用层,数据链路层有两种:基于标准串口协议和TCP协议,物理层可使用3线232、2线485、4线422,或光纤、网线、无线等多种传输介质。

Modbus RTU 协议是一种开放的串行协议,广泛应用于当今的工业监控设备中。该协议使用 RS-232 或 RS-485 串行接口进行通信,并得到市场上几乎所有商业 SCADA、HMI、OPC 服务器和数据采集软件程序的支持。

Modbus RTU 协议使用主/从技术在设备之间进行通信。这意味着,任何使用 Modbus RTU 协议的应用程序都将有一个 Modbus 主站和至少一个 Modbus 从站。Modbus Master 通常是一台运行软件的主机监控计算机,它将与一个或多个 Modbus Slave 设备进行通信。

Modbus 从设备是执行系统参数测量和控制系统中的开/关设备的设备。为了执行这些任务,主站向 Modbus 从站发送消息,请求执行特定任务。

Modbus RTU 协议使用格式化的消息在主机和从机之间进行通信。消息由系统 Master 发起并发送到 Slave 设备。然后,从站以请求的数据进行响应,或者确认它执行了请求的功能。所有进出主站的消息都包含一个两字节(16 位)CRC(循环冗余校验)校验和值,用于错误检查。如果将无效请求传输到 Modbus 从站,则会返回一个字节(8 位)错误代码值,说明请求错误的原因。

Modbus 主站消息包含几个重要的信息。每条消息都以接受消息的设备的从地址开始。接下来是要执行的功能编号(或命令)。后面是指定函数正确执行所需的任何数据。从地址是一个单字节(8 位)值,可用值范围在 0-247 之间。Modbus 功能号也是一个字节值,并且在协议中定义了许多标准化功能号。支持所请求功能所需的任何数据值的长度将是一个或多个字节。Modbus 从站响应消息将包含响应的从站地址、功能编号和主站请求的任何必要数据。

Modbus 通信协议特点

(1)标准、开放,用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。

(2)Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。  

(3)Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。

Modbus4种数据类型

Modbus协议规定,进行读写操作的数据类型,按照读写属性和类型可分为以下4种:

离散量输入(Discretes Input ):1位,只读

2.线圈(Coils):1位,读写

3.输入寄存器(Input Registers ):16位,只读

4.保持寄存器(Holding Registers):16位,读写

常用的MODBUS通讯方式

有两种,一种是MODBUS ASCII,一种是MODBUS RTU。每个设备必须都有相同的传输模式。所有设备都支持RTU模式,ASCII传输模式是选项。  

+ASCII传输方式

Modbus串行链路的设备被配置为使用ASCII模式通信时,报文中的每8位字节以两个ASCII字符发送。例:字节0X5B会被编码为两个字符:0x35和0x42进行传送(ASCII编码0x35="5",0x42="B"),这样传输效率会降低。

在ASCII模式,报文用特殊的字符区分帧起始和帧结束。一个报文必须以一个‘冒号’(:)(ASCII十六进制3A)起始,以‘回车-换行’(CRLF)对(ASCII十六进制0D和0A)结束。设备连续的监视总线上的‘冒号’字符。当收到这个字符后,每个设备解码后续的字符一直到帧结束。报文中字符间的时间间隔可以达一秒。如果有更大的间隔,则接受设备认为发生了错误。  

+RTU传输方式

当设备使用RTU(RemoteTerminalUnit)模式在Modbus串行链路通信,报文中每个8位字节含有两个4位十六进制字符。这种模式的主要优点是较高的数据密度,在相同的波特率下比ASCII模式有更高的传输效率。每个报文必须以连续的字符流传送。

Modbus RS485接线方法

RS485的应用挺广泛,可以支持ModBus协议,因为简单、便宜、可靠、成熟,所以在工业控制、智能仪表和电力通信领域应用很多。

1、我们来看看RS485的一个典型组网结构:

modbus通讯协议,modbus 通讯协议详解(ModBus通讯协议及应用)

理论上,一条RS485总线的传输距离可以达到1200米。但是在实际应用受通信芯片、波特率和线材、干扰等影响,实际上是远远达不到这个数值的。

理论上,一条RS485总线可以挂254台设备,实际上也远远达不到,通常的应用中,也就是30台左右。

RS485总线要采用上图手拉手式的总线结构,坚决杜绝星型连接和分叉连接,如下图:

modbus通讯协议,modbus 通讯协议详解(ModBus通讯协议及应用)

+关于线材的选用

通信线缆要选择两芯屏蔽双绞线,线径不低于0.5平方。双绞是因为485通讯采用差模通讯原理,双绞的抗干扰性最好。有些野路子的做法用非屏蔽非双绞线甚至是网线来敷设485通讯线,是极端错误的。

+关于保障通信质量的几种手段

1、共地法:用1条线或者屏蔽线将所有485设备的GND地连接起来,这样可以避免所有设备之间存在影响通讯的电势差。

2、终端电阻法:在最后一台485设备的485 和485-上并联连接120欧姆的终端电阻来改善通讯质量。

3、如果通讯距离过长,建议如果超过500米就采用中继器或者485HUB来解决问题。如果负载数过多,建议如果一条总线上超过30台就采用485HUB来解决问题。

+场景应用-Modbus物联网云平台

Modbus物联网云平台在设备和用户之间建立开箱即用的云平台和云应用,实现数据采集、实时控制、数据可视化、开放 API,构建灵活强大的物联网应用。Modbus云平台支持市场上99%以上Modbus设备接入,比如工业仪器仪表,工业传感器,Modbus PLC设备等。用户可以在任何地方远程访问任何地方的Modbus设备,并对远程设备的数据进行实时采集监控、远程控制、智能音响小度、天猫精灵、小爱同学语音控制、诊断、通讯及调试等。

Modbus物联网云平台是一个开放的物联网云平台,用户只需按步骤完成注册即可免费使用Modbus物联网云平台 。支持PC、Android、iOS多平台终端。用户可以在任何地方远程访问任何地方的串口设备,并对远程设备的数据进行实时采集监控、远程控制、诊断、通讯及调试等。Modbus物联网云平台支持微信关联,用户可以借助手机端的微信公众号进行远程查看设备的运行状态,通讯数据和报警信息等,实现随时随地轻松掌控,方便快捷。

总 结

上一篇:好玩的真人密室逃脱主题(真人密室排行榜)
下一篇:wmf品牌logo(w&f是什么牌子)
相关文章
返回顶部小火箭