MODBUS-RTU通讯协议简介

合集下载

MODBUS-RTU通讯协议简介

MODBUS-RTU通讯协议简介

Modbus通讯协议Modbus协议Modbus协议最初由Modicon公司开发出来,在1979年末该公司成为施耐德自动化(Schneider Aut omation)部门的一部分,现在Modbus已经是工业领域全球最流行的协议。

此协议支持传统的RS-232、R S-422、RS-485和以太网设备。

许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。

有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。

当在网络上通信时,Modbus协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。

如果需要回应,控制器将生成应答并使用Modbus协议发送给询问方。

Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。

此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。

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

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网络协议发送出去即可。

ModBusRTU通讯协议

ModBusRTU通讯协议

ModBusRTU通讯协议协议名称:ModBusRTU通讯协议1. 引言ModBusRTU通讯协议是一种常用于工业自动化领域的通信协议,用于在不同设备之间进行数据交换和通信。

本协议旨在确保设备之间的稳定通信,并规定了数据帧的格式、通信规范和错误处理机制,以实现可靠的数据传输。

2. 协议范围本协议适用于使用ModBusRTU通信协议的设备之间的数据交换和通信。

3. 术语和定义3.1. 主站:指发送请求的设备。

3.2. 从站:指接收请求并响应的设备。

3.3. 数据帧:指在ModBusRTU通信协议中传输的数据单元。

4. 数据帧格式4.1. 传输模式ModBusRTU通信协议使用串行通信模式,每个数据帧由一系列连续的位组成。

4.2. 起始位每个数据帧以一个起始位(逻辑“0”)开始。

4.3. 设备地址设备地址用于标识从站设备,占用8位,取值范围为1-247。

功能码用于指示请求的类型,占用8位,取值范围为1-255。

4.5. 数据数据字段用于传输具体的数据信息,占用8位或16位,具体长度由功能码决定。

4.6. 校验位校验位用于验证数据的完整性和准确性,采用CRC校验算法。

4.7. 结束位每个数据帧以一个结束位(逻辑“1”)结束。

5. 通信规范5.1. 请求帧主站发送请求帧给从站,请求帧包括设备地址、功能码、数据和校验位。

5.2. 响应帧从站接收到请求帧后,根据功能码进行相应的处理,并返回响应帧给主站,响应帧包括设备地址、功能码、数据和校验位。

5.3. 帧间间隔每个数据帧之间应有适当的时间间隔,以确保设备能够正确接收和处理数据。

5.4. 重试机制如果主站未收到从站的响应帧或者接收到的响应帧出现错误,主站可以根据需要进行重试。

6.1. 异常响应如果从站无法正确处理主站的请求,从站应发送一个异常响应帧给主站,异常响应帧包括设备地址、功能码和错误码。

6.2. 错误码错误码用于指示出现的错误类型,常见的错误码包括非法功能码、非法数据地址、非法数据值等。

ModBusRTU通讯协议

ModBusRTU通讯协议

ModBusRTU通讯协议协议名称:ModBusRTU通讯协议一、协议概述ModBusRTU通讯协议是一种串行通信协议,用于在工业自动化领域中实现设备之间的数据交换。

本协议规定了通信的物理层、数据帧格式、功能码及其对应的数据格式,以及通信过程中的错误处理等。

二、物理层1. 通信接口:本协议使用RS485接口进行通信,支持多主机和多从机的通信方式。

2. 通信波特率:支持的通信波特率范围为9600bps至115200bps,可根据实际需求进行设置。

3. 数据位:通信数据位为8位。

4. 停止位:通信停止位为1位。

5. 校验位:通信校验位可选择为无校验、奇校验或偶校验。

三、数据帧格式1. 帧起始符:每个数据帧以一个起始符开始,起始符为一个字节,固定为0xFF。

2. 从机地址:紧随起始符之后的一个字节为从机地址,用于标识通信中的从机设备。

3. 功能码:从机地址之后的一个字节为功能码,用于指示从机设备执行的操作类型。

4. 数据域:功能码之后的数据域长度可变,根据功能码的不同而不同。

5. CRC校验码:数据域之后为两个字节的CRC校验码,用于检测数据传输过程中是否出现错误。

6. 帧结束符:每个数据帧以一个结束符结束,结束符为一个字节,固定为0x00。

四、功能码及数据格式1. 读取线圈状态(功能码:0x01)请求帧格式:[起始符][从机地址][功能码][起始地址高字节][起始地址低字节][读取数量高字节][读取数量低字节][CRC校验码][结束符]响应帧格式:[起始符][从机地址][功能码][字节数][线圈状态][CRC校验码][结束符]数据格式:线圈状态为一个字节,每个位表示一个线圈的状态(0表示OFF,1表示ON)。

2. 读取离散输入状态(功能码:0x02)请求帧格式:[起始符][从机地址][功能码][起始地址高字节][起始地址低字节][读取数量高字节][读取数量低字节][CRC校验码][结束符]响应帧格式:[起始符][从机地址][功能码][字节数][离散输入状态][CRC校验码][结束符]数据格式:离散输入状态为一个字节,每个位表示一个输入的状态(0表示OFF,1表示ON)。

Modbus-RTU通信协议

Modbus-RTU通信协议

维博Modbus-RTU 通信协议一、Modbus 协议简介ModBus 协议定义了一个控制器能认识使用的消息结构协议定义了一个控制器能认识使用的消息结构,,而不管它们是通过何种网络进行通信的,它制定了消息域的格局和内容的公共格式,描述了一个控制器请求访问其它设备的过程,回应来自其它设备的请求,以及如何侦测并记录错误信息。

错误信息。

通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以完成信息和数据的交换与传送,使各种不同的公司和厂家的可编程顺序控制器(PLC )、RTU 、SCADA 系统、DCS 或与兼容ModBus 协议的第三方设备之间可以连成工业网络,构建各种复杂的监控系统,并利于系统的维护和扩展,这个通讯协议已广泛被国内外电力行业及工控行业作为系统集成的一种通用工业标准协议。

工业标准协议。

WB 系列智能传感器采用ModBus-RTU 通讯规约,支持组态王、Intouch 、FIX 、synall 等流行软件,能与AB 、西门子、施耐德、GE 等多个国际著名品牌的设备及系统之间实现数据通信,特别适用于电力系统综合自动化,智能电力电子设备,智能楼宇,工业自动化等领域,是构建、扩建DCS 系统或制造智能电力电子设备的理想功能部件。

二、维博Modbus-RTU 协议WB 系列智能传感器实现Modbus 通信协议时,遵循Modbust 通信过程,采用了MODBUS-RTU 协议的命令子集,使用读寄存器命令(协议的命令子集,使用读寄存器命令(030303)。

)。

)。

①数据传输方式: 异步10位——位——11位起始位,位起始位,88位数据位,位数据位,22位停止位,无校验位。

位停止位,无校验位。

②数据传输速率: 19200BPS 19200BPS,,9600BPS 9600BPS,,4800BPS 4800BPS,,2400BPS 2400BPS。

(缺省波特率为。

(缺省波特率为9600BPS 9600BPS,不可修,不可修改,用户希望使用其他波特率时,请在定货时声明。

modbusrtu标准协议

modbusrtu标准协议

modbusrtu标准协议摘要:1.Modbus RTU 简介2.Modbus RTU 的基本组成部分3.Modbus RTU 的通信原理4.Modbus RTU 的优点和应用正文:【1.Modbus RTU 简介】Modbus RTU 是一种串行通信协议,主要用于工业自动化领域中的数据传输。

它是Modbus 协议的一种实现方式,其中RTU 是Remote Terminal Unit 的缩写,表示远程终端单元。

Modbus RTU 通过在设备和控制系统之间建立通信链路,实现了对设备状态和数据的监控、控制和管理。

【2.Modbus RTU 的基本组成部分】Modbus RTU 协议的基本组成部分包括:a.消息结构:Modbus RTU协议采用客户端/服务器模型。

客户端发送请求消息,服务器端发送响应消息。

消息结构包括:地址、功能代码、数据长度、数据、校验和、结束符。

b.功能代码:Modbus RTU 协议定义了一系列功能代码,用于表示客户端请求的服务类型。

常见的功能代码有:读取保持寄存器、写入保持寄存器、读取输入寄存器、写入输入寄存器等。

c.数据表示:Modbus RTU 协议采用补码表示法,可以表示有符号整数和无符号整数。

d.校验和:Modbus RTU 协议使用CRC 校验和,用于检测数据传输中的错误。

【3.Modbus RTU 的通信原理】Modbus RTU 协议采用串行通信方式,数据位采用8 位二进制表示。

通信过程中,数据按位发送,每个数据位之间有1 位的停止位。

Modbus RTU 协议的数据传输速率较慢,但稳定性较高,适用于工业现场的恶劣环境。

【4.Modbus RTU 的优点和应用】Modbus RTU 协议具有以下优点:a.通用性强:Modbus RTU 协议广泛应用于各种工业自动化设备和控制系统中,具有较强的通用性。

b.稳定性高:Modbus RTU 协议采用串行通信方式,数据传输速率较慢,但稳定性较高,适用于工业现场的恶劣环境。

ModBusRTU通讯协议

ModBusRTU通讯协议

ModBusRTU通讯协议协议名称:ModBusRTU通讯协议一、引言ModBusRTU通讯协议是一种基于串行通信的通讯协议,用于在工业自动化领域中实现设备之间的数据交互。

本协议旨在规范ModBusRTU通讯协议的格式、数据传输方式、命令与响应规则等,以确保通讯的稳定性和可靠性。

二、协议结构ModBusRTU通讯协议采用了一种简单的主从结构,其中包括一个主站和多个从站。

主站负责发送命令并接收从站的响应,而从站则负责接收命令并向主站发送响应。

三、数据格式1. 帧格式ModBusRTU通讯协议的数据帧由以下几个部分组成:- 起始位:一个起始位,用于标识数据帧的开始。

- 地址位:一个地址位,用于标识从站的地址。

- 功能码:一个功能码,用于标识命令的类型。

- 数据位:一个或多个数据位,用于传输命令或响应的数据。

- 校验位:一个校验位,用于验证数据的完整性。

- 结束位:一个结束位,用于标识数据帧的结束。

2. 数据类型ModBusRTU通讯协议支持多种数据类型,包括位(Coil)、输入位(Input Coil)、寄存器(Holding Register)和输入寄存器(Input Register)。

每种数据类型都有对应的读取和写入命令。

四、命令与响应规则1. 读取命令主站可以发送读取命令来获取从站的数据。

读取命令的格式如下:- 从站地址:一个字节,用于指定要读取数据的从站地址。

- 功能码:一个字节,用于指定读取命令的功能码。

- 起始地址:两个字节,用于指定要读取数据的起始地址。

- 数据长度:两个字节,用于指定要读取的数据长度。

- 校验码:两个字节,用于验证命令的有效性。

2. 写入命令主站可以发送写入命令来向从站写入数据。

写入命令的格式如下:- 从站地址:一个字节,用于指定要写入数据的从站地址。

- 功能码:一个字节,用于指定写入命令的功能码。

- 起始地址:两个字节,用于指定要写入数据的起始地址。

- 数据长度:两个字节,用于指定要写入的数据长度。

MODBUS通讯协议-RTU

MODBUS通讯协议-RTU

Modbus 通讯协议(RTU传输模式) 本说明仅做内部参考,详细请参阅英文版本.第一章Modbus协议简介Modbus 协议是应用于电子控制器上的一种通用语言。

通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信.它已经成为一通用工业标准。

有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。

此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。

它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。

它制定了消息域格局和内容的公共格式.当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。

如果需要回应,控制器将生成反馈信息并用Modbus协议发出.在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构.这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。

协议在一根通讯线上使用应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输.首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,在相反的方向上终端设备发出的应答信号传输给主机。

协议只允许在主计算机和终端设备之间,而不允许独立的设备之间的数据交换,这就不会在使它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。

1.1 传输方式传输方式是一个信息帧内一系列独立的数据结构以及用于传输数据的有限规则,以RTU 模式在Modbus总线上进行通讯时,信息中的每8位字节分成2个4位16进制的字符,每个信息必须连续传输下面定义了与Modebus 协议– RTU方式相兼容的传输方式。

代码系统•8位二进制,十六进制数0。

.9,A。

.。

F•消息中的每个8位域都是一个两个十六进制字符组成每个字节的位•1个起始位•8个数据位,最小的有效位先发送•1个奇偶校验位,无校验则无•1个停止位(有校验时),2个Bit(无校验时)错误检测域•CRC(循环冗长检测)121.2 协议当信息帧到达终端设备时,它通过一个简单的“口”进入寻址到的设备,该设备去掉数据帧的“信封”(数据头),读取数据,如果没有错误,就执行数据所请求的任务,然后,它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。

modbus rtu协议

modbus rtu协议

modbus rtu协议Modbus RTU协议。

Modbus RTU协议是一种串行通信协议,广泛应用于工业自动化领域。

它是一种简单、可靠的通信协议,适用于各种工业设备之间的通信。

本文将介绍Modbus RTU协议的基本原理、通信格式、应用范围以及常见问题解决方法。

Modbus RTU协议的基本原理。

Modbus RTU协议是一种基于串行通信的主从式通信协议,它采用了简单的二进制编码方式来进行数据传输。

在Modbus RTU通信中,通信的发起方为主站,而被动响应的设备为从站。

主站通过发送请求帧来获取从站的数据,从站在接收到请求后进行响应,并将数据发送回主站。

这种通信方式使得Modbus RTU协议在工业控制领域得到了广泛的应用。

Modbus RTU协议的通信格式。

Modbus RTU协议的通信格式非常简洁明了,它采用了一种固定长度的数据帧格式来进行通信。

数据帧由地址字段、功能码字段、数据字段和校验字段组成。

其中地址字段用于标识从站设备的地址,功能码字段用于指示主站要执行的操作,数据字段用于传输实际的数据信息,校验字段用于对数据帧进行校验,以确保数据的完整性和准确性。

Modbus RTU协议的应用范围。

Modbus RTU协议广泛应用于各种工业领域,包括工业自动化、能源管理、楼宇自动化等。

在工业自动化领域,Modbus RTU协议常用于PLC、传感器、执行器等设备之间的通信。

在能源管理领域,Modbus RTU协议常用于电能仪表、变频器等设备之间的通信。

在楼宇自动化领域,Modbus RTU协议常用于空调控制、照明控制等设备之间的通信。

由于Modbus RTU协议的简单可靠,它能够满足各种工业设备之间的通信需求。

常见问题解决方法。

在实际应用中,Modbus RTU协议可能会遇到一些常见问题,如通信超时、数据错误、地址冲突等。

针对这些问题,我们可以采取一些常见的解决方法来解决。

例如,对于通信超时问题,可以调整通信超时时间或者优化通信线路来解决;对于数据错误问题,可以增加数据校验机制或者重新设计数据传输方案来解决;对于地址冲突问题,可以重新分配设备地址或者采取其他地址冲突解决方案来解决。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MODBUS-RTU通讯协议简介
2008-10-10 17:27
1.1 Modbus协议简述
ACRXXXE系列仪表使用的是Modbus-RTU通讯协议,MODBUS协议详细定义了校验码、数据序列等,这些都是特定数据交换的必要内容。

MODBUS协议在一根通讯线上使用主从应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。

首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,终端设备发出的应答信号以相反的方向传输给主机。

Modbus协议只允许在主机(PC,PLC等)和终端设备之间通讯,而不允许独立的终端设备之间的数据交换,这样各终端设备不会在它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。

1.2 查询—回应周期
1.2.1 查询
查询消息中的功能代码告之被选中的从设备要执行何种功能。

数据段包含了从设备要执行功能的任何附加信息。

例如功能代码03是要求从设备读保持寄存器并返回它们的内容。

数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。

错误检测域为从设备提供了一种验证消息内容是否正确的方法。

1.2.2 回应
如果从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。

数据段包括了从设备收集的数据:如寄存器值或状态。

如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。

错误检测域允许主设备确认消息内容是否可用。

1.3 传输方式
传输方式是指一个数据帧内一系列独立的数据结构以及用于传输数据的有限规则,下面定义了与Modbus 协议– RTU方式相兼容的传输方式。

每个字节的位:
· 1个起始位
· 8个数据位,最小的有效位先发送
·无奇偶校验位
· 1个停止位
错误检测(Error checking):CRC(循环冗余校验)
1.4 协议
当数据帧到达终端设备时,它通过一个简单的“端口”进入被寻址到的设备,该设备去掉数据帧的“信封”(数据头),读取数据,如果没有错误,就执行数据所请求的任务,然后,它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。

返回的响应数据中包含了以下内容:终端从机地址(Address)、被执行了的命令(Function)、执行命令生成的被请求数据(Data)和一个校验码(Check)。

发生任何错误都不会有成功的响应,或者返回一个错误指示帧。

1.4.1 数据帧格式
Address Function Data Check
8-Bits 8-Bits N x 8-Bits 16-Bits
1.4.2 地址(Address)域
地址域在帧的开始部分,由一个字节(8位二进制码)组成,十进制为0~255,在我们的系统中只使用1~247,其它地址保留。

这些位标明了用户指定的终端设备的地址,该设备将接收来自与之相连的主机数据。

每个终端设备的地址必须是唯一的,仅仅被寻址到的终端会响应包含了该地址的查询。

当终端发送回一个响应,响应中的从机地址数据便告诉了主机哪台终端正与之进行通信。

1.4.3 功能(Function)域
功能域代码告诉了被寻址到的终端执行何种功能。

下表列出了该系列仪表用到的功能码,以及它们的意义和功能。

代码意义行为
03 读数据寄存器获得一个或多个寄存器的当前二进制值
16 预置多寄存器设定二进制值到一系列多寄存器中(不对ACRXXXE开放)
1.4.4 数据(Data)域
数据域包含了终端执行特定功能所需要的数据或者终端响应查询时采集到的数据。

这些数据的内容可能是数值、参考地址或者设置值。

例如:功能域码告诉终端读取一个寄存器,数据域则需要指明从哪个寄存器开始及读取多少个数据,内嵌的地址和数据依照类型和从机之间的不同内容而有所不同。

1.4.5 错误校验(Check)域
该域允许主机和终端检查传输过程中的错误。

有时,由于电噪声和其它干扰,一组数据在从一个设备传输到另一个设备时在线路上可能会发生一些改变,出错校验能够保证主机或者终端不去响应那些传输过程中发生了改变的数据,这就提高了系统的安全性和效率,错误校验使用了16位循环冗余的方法(CRC16)。

1.5 错误检测的方法
错误校验(CRC)域占用两个字节,包含了一个16位的二进制值。

CRC值由传输设备计算出来,然后附加到数据帧上,接收设备在接收数据时重新计算CRC值,然后与接收到的CRC域中的值进行比较,如果这两个值不相等,就发生了错误。

CRC运算时,首先将一个16位的寄存器预置为全1,然后连续把数据帧中的每个字节中的8位与该寄存器的当前值进行运算,仅仅每个字节的8个数据位参与生成CRC,起始位和终止位以及可能使用的奇偶位都不影响CRC。

在生成CRC时,每个字节的8位与寄存器中的内容进行异或,然后将结果向低位移位,高位则用“0”补充,最低位(LSB)移出并检测,如果是1,该寄存器就与一个预设的固定值(0A001H)进行一次异或运算,如果最低位为0,不作任何处理。

上述处理重复进行,直到执行完了8次移位操作,当最后一位(第8位)移完以后,下一个8位字节与寄存器的当前值进行异或运算,同样进行上述的另一个8次移位异或操作,当数据帧中的所有字节都作了处理,生成的最终值就是CRC 值。

生成一个CRC的流程为:
1 预置一个16位寄存器为0FFFFH(全1),称之为CRC寄存器。

2 把数据帧中的第一个字节的8位与CRC寄存器中的低字节进行异或运算,结果存回CRC寄存器。

3 将CRC寄存器向右移一位,最高位填以0,最低位移出并检测。

4 如果最低位为0:重复第三步(下一次移位);如果最低位为1:将CRC 寄存器与一个预设的固定值(0A001H)进行异或运算。

5 重复第三步和第四步直到8次移位。

这样处理完了一个完整的八位。

6 重复第2步到第5步来处理下一个八位,直到所有的字节处理结束。

7 最终CRC寄存器的值就是CRC的值。

相关文档
最新文档