MODBUSRTU通讯协议
- 格式:docx
- 大小:28.66 KB
- 文档页数:26
modbusrtu报文结构1. 什么是modbusrtu协议?modbusrtu(Modbus Remote Terminal Unit)是一种通信协议,用于在串行通信网络中传输数据。
它是由Modicon(现在是施耐德电气)公司在1979年开发的,用于在工业自动化领域中的设备之间进行通信。
2. modbusrtu报文结构概述modbusrtu报文结构定义了在串行通信网络中传输数据的方式。
它包含了从发送方到接收方的数据帧结构,以及用于标识和校验数据的字段。
modbusrtu报文结构包括以下几个部分: - 起始位:用于标识数据帧的开始。
- 地址位:指定从站的地址,用于标识接收方。
- 功能码:指定要执行的功能,如读取寄存器、写入寄存器等。
- 数据位:包含实际的数据,根据功能码的不同而有所不同。
- CRC校验位:用于校验数据的完整性。
3. modbusrtu报文结构详解3.1 起始位modbusrtu报文的起始位是一个固定的时间间隔,用于标识数据帧的开始。
起始位的时长通常为3.5个字符时间,即3.5个波特率周期。
它的作用是让接收方能够正确地同步数据的开始。
3.2 地址位地址位用于指定从站的地址,从站是接收方的身份标识。
modbusrtu协议支持从1到247个从站地址。
发送方在发送数据时,需要指定要发送给哪个从站。
3.3 功能码功能码用于指定要执行的功能,它告诉接收方应该如何处理接收到的数据。
modbusrtu协议定义了一系列的功能码,如读取线圈状态、读取输入状态、读取保持寄存器、写单个寄存器等。
3.4 数据位数据位包含了实际的数据,根据功能码的不同而有所不同。
例如,如果功能码是读取保持寄存器,数据位将包含要读取的寄存器地址和读取的寄存器数量。
3.5 CRC校验位CRC(Cyclic Redundancy Check)校验位用于校验数据的完整性。
发送方在发送数据时,会计算数据的CRC校验值,并将其添加到数据帧中。
Modbus 通讯协议(RTU传输模式)目录1.Modbus协议简介 (3)1.1.传输方式 (3)1.2.协议 (3)1.2.1.信息帧 (4)1.2.2.地址(Address)域 (4)1.2.3.功能(Function)域 (4)1.2.4.数据域 (5)1.2.5.错误校验域 (5)1.2.6.字符的连续传输 (5)1.3.错误检测 (5)1.3.1.奇偶校验 (5)1.3.2.CRC检测 (6)2.Modbus数据和控制功能详解 (7)2.1.读取线圈状态(功能码01) (7)2.2.读取输入状态(功能码02) (8)2.3.读取保持寄存器(功能码03) (8)2.4.读取输入寄存器(功能码04) (9)2.5.强置单线圈(功能码05) (9)2.6.预置单寄存器(功能码06) (10)2.7.读取异常状态(功能码7) (10)2.8.强置多线圈(功能码15) (11)2.9.预置多寄存器(功能码16) (12)2.10.报告从机标识(功能码17) (12)3.附录 (13)3.1.附录A:MODBUS全部功能码 (13)3.2.附录B:不正常响应 (14)3.3.附录C:CRC校验生成程序 (15)1.Modbus协议简介Modbus 协议是应用于电子控制器上的一种通用语言。
通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。
它已经成为一通用工业标准。
有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。
此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。
它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。
它制定了消息域格局和内容的公共格式。
当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。
如果需要回应,控制器将生成反馈信息并用Modbus协议发出。
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通讯协议是一种串行通信协议,用于在工业自动化领域中实现设备之间的数据交换。
本协议规定了通信的物理层、数据帧格式、功能码及其对应的数据格式,以及通信过程中的错误处理等。
二、物理层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通信,一、需要STEP 7-Micro/WIN32 V3.2以上版本的编程软件,而且须安装STEP 7-Micro/WIN32 V3.2 Instruction Library(指令库)。
Modbus RTU功能是通过指令库中预先编好的程序功能块实现的。
Modbus RTU从站指令库只支持CPU上的通信0口(Port0)基本步骤:1. 检查Micro/WIN的软件版本,应当是STEP 7-Micro/WIN V3.2以上版本。
2. 检查Micro/WIN的指令树中是否存在Modbus RTU从站指令库(图1),库中应当包括MBUS_INIT和MBUS_SLAVE两个子程序。
如果没有,须安装Micro/WIN32 V3.2的Instruction Library(指令库)软件包;1. 西门子编程时使用SM0.1调用子程序MBUS_INIT进行初始化,使用SM0.0调用MBUS_SLAVE,并指定相应参数。
关于参数的详细说明,可在子程序的局部变量表中找到;调用Modbus RTU通信指令库图中参数意义如下:a. 模式选择:启动/停止Modbus,1=启动;0=停止b. 从站地址:Modbus从站地址,取值1~247c. 波特率:可选1200,2400,4800,9600,19200,38400,57600,115200d. 奇偶校验:0=无校验;1=奇校验;2=偶校验e. 延时:附加字符间延时,缺省值为0f. 最大I/Q位:参与通信的最大I/O点数,S7-200的I/O映像区为128/128,缺省值为128g. 最大AI字数:参与通信的最大AI通道数,可为16或32h. 最大保持寄存器区:参与通信的V存储区字(VW)i. 保持寄存器区起始地址:以&VBx指定(间接寻址方式)j. 初始化完成标志:成功初始化后置1k. 初始化错误代码l. Modbus执行:通信中时置1,无Modbus 通信活动时为0。
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 协议采用串行通信方式,数据传输速率较慢,但稳定性较高,适用于工业现场的恶劣环境。
百特工控福州福光百特自动化设备有限公司MODBUS通讯协议使用手册1. RTU 方式通讯协议1.1. 硬件采用RS -485,主从式半双工通讯,主机呼叫从机地址,从机应答方式通讯。
1.2. 数据帧10位,1个起始位,8个数据位,1个停止位,无校验。
波特率:9600;19200 38400 1.3. 功能码03H : 读寄存器值主机发送:第1字节 ADR : 从机地址码(=001~254)第2字节 03H : 读寄存器值功能码 第3、4字节 : 要读的寄存器开始地址 要读FCC 下挂仪表,第5、6字节 : 要读的寄存器数量 第7、8字节 : 从字节1到6的CRC16校验和 从机回送:第1字节 ADR : 从机地址码(=001~254)第2字节 03H : 返回读功能码第3字节 :从4到M (包括4及M )的字节总数 第4到M 字节 : 寄存器数据 第M +1、M+2字节 : 从字节1到M 的CRC16校验和 当从机接收错误时,从机回送:第1字节 ADR : 从机地址码(=001~254)第2字节 83H : 读寄存器值出错第3字节 信息码 : 见信息码表 第4、5字节 : 从字节1到3的CRC16校验和 1.4. 功能码06H : 写单个寄存器值主机发送:当从机接收正确时,从机回送:当从机接收错误时,从机回送:第1字节 ADR:从机地址码(=001~254)第2字节 86H :写寄存器值出错功能码 第3字节 错误数息码 : 见信息码表第4、5字节: 从字节1到3的CRC16校验和1.5. 功能码10H : 连续写多个寄存器值当从机接收正确时,从机回送:当从机接收错误时,从机回送:第1字节 ADR: 从机地址码(=001~254)第2字节 90H : 写寄存器值出错 第3字节 错误信息码 : 见信息码表第4、5字节: 从字节1到3的CRC16校验和1.8 寄存器定义表:(注:寄存器地址编码为16进制)备注:E为阶码。
MODBUS_RTU 通讯协议
1、数据传输格式:1位起始位、8位数据位、1位停止位、无奇偶校验位。
2、仪表数据格式:2字节寄存器值=寄存器数高8位二进制数+寄存器低8位二进制数
3、仪表通讯帧格式:
读寄存器命令格式:
1 2 3 4 5 6 7~8 DE 3 起始寄存器高位起始寄存器低位寄存器数高位寄存器数低位CRC 应答:
1 2 3 4~5 6~7 …M*2+2~M*2+3 M*2+4~M*2+5 DE 3 字节计数M*2 寄存器数据1 寄存器数据2…寄存器数据M CRC DE: 设备地址 (1~200)单字节
CRC: 校验字节 采用CRC-16循环冗余错误校验
举例对比说明:(以LCD小无纸记录仪为例)
MODBUS_RTU 通讯协议(十进制格式)
发送:1, 3, 0, 0, 0, 16, 68, 6,
回收:1, 3, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255,
仪表动态数据格式(MODBUS_RTU协议)
编号参数名称数据格式类型备注
1 保留单字节定点数只读
2 E2PROM参数修改标志单字节定点数只读
3 仪表类型四字节浮点数只读
4 第一路采样四字节浮点数只读
5 第二路采样四字节浮点数只读
6 第三路采样四字节浮点数只读
7 第一报警状态单字节定点数只读
8 第二报警状态单字节定点数只读
9 第三报警状态单字节定点数只读。
ModBusRTU通讯协议协议名称:ModBus RTU通讯协议一、引言ModBus RTU通讯协议是一种用于串行通信的协议,广泛应用于工业自动化领域。
本协议旨在规范ModBus RTU通讯协议的格式和规则,以确保设备之间能够正常、高效地进行通信。
二、协议结构ModBus RTU通讯协议采用了简单、轻量级的结构,由三个主要部分组成:帧头、数据区和帧尾。
1. 帧头帧头由两个字节组成,分别为设备地址(1字节)和功能码(1字节)。
设备地址用于标识通信的目标设备,功能码用于指示通信的具体操作类型。
2. 数据区数据区包含了具体的通信数据,其长度根据不同的功能码而不同。
数据区的内容可以是读取的寄存器值、写入的寄存器值等。
3. 帧尾帧尾由两个字节组成,分别为CRC校验码(2字节)。
CRC校验码用于验证数据的完整性和准确性。
三、通信规则ModBus RTU通讯协议遵循以下通信规则:1. 设备地址通信的目标设备由设备地址进行标识,设备地址范围为0-247。
其中,0为广播地址,用于向所有设备发送命令。
2. 功能码功能码用于指示通信的具体操作类型,范围为1-255。
常用的功能码包括读取保持寄存器(03H)、写入单个保持寄存器(06H)等。
3. 数据格式ModBus RTU通讯协议使用二进制格式进行数据传输。
数据区的内容根据不同的功能码而不同,可以是16位的寄存器值、8位的开关状态等。
4. 帧格式帧格式包括帧头、数据区和帧尾。
帧头由设备地址和功能码组成,数据区包含具体的通信数据,帧尾包含CRC校验码。
5. CRC校验CRC校验码用于验证数据的完整性和准确性。
接收方在接收到数据后,通过计算CRC校验码与接收到的校验码进行比较,以判断数据是否正确。
四、通信流程ModBus RTU通讯协议的通信流程如下:1. 主设备发送请求主设备向从设备发送请求,请求包括设备地址、功能码和相关参数。
2. 从设备响应请求从设备接收到请求后,根据功能码执行相应的操作,并将执行结果返回给主设备。
ModBusRTU通讯协议协议名称:ModBusRTU通讯协议一、引言ModBusRTU通讯协议是一种常用的串行通信协议,用于在工业自动化领域中实现设备之间的数据交换。
该协议基于RTU(Remote Terminal Unit)模式,通过串行通信接口传输数据。
本协议旨在规范ModBusRTU通讯协议的格式、数据类型、通信方式等方面的内容,以确保设备之间的数据交换的准确性和可靠性。
二、协议格式1. 物理层ModBusRTU通讯协议使用RS485串行通信接口,支持全双工通信。
通信速率可根据实际需求设置,常见的速率有9600、19200、38400、57600和115200等。
2. 数据帧格式ModBusRTU通讯协议使用二进制方式传输数据,每个数据帧包含以下几个部分:- 起始位:由一个高电平信号表示,用于同步通信双方的时钟。
- 地址位:一个字节,用于标识通信的从站地址。
范围为1-247,其中1为广播地址。
- 功能码:一个字节,用于标识通信的功能类型。
常见的功能码有读取线圈状态、读取输入状态、读取保持寄存器、读取输入寄存器、写单个线圈、写单个寄存器等。
- 数据域:根据功能码的不同,数据域的长度也不同。
数据域包含要读取或写入的数据。
- CRC校验:用于校验数据的完整性。
3. 数据类型ModBusRTU通讯协议支持多种数据类型,包括线圈状态(Coil Status)、输入状态(Input Status)、保持寄存器(Holding Register)和输入寄存器(Input Register)等。
每种数据类型都有对应的读取和写入功能码。
4. 通信方式ModBusRTU通讯协议支持主从模式的通信方式。
主站负责发起通信请求,从站负责响应请求并返回数据。
主站可以向多个从站发送请求,每个从站根据地址进行识别并响应相应的请求。
三、通信流程1. 主站发送请求主站发送请求的数据帧包含从站地址、功能码、数据域和CRC校验。
MODBUS通讯协议使用手册
1. RTU方式通讯协议
1.1.硬件采用RS-485,主从式半双工通讯,主机呼叫从机地址,从机应答方式通讯。
1.2.数据帧10位,1个起始位,8个数据位,1个停止位,无校验。
波特率:9600;19200 38400
1.3.功能码03H:读寄存器值
主机发送:
第1字节ADR :从机地址码(=001~254)
第2字节 03H :读寄存器值功能码
第3、4字节:要读的寄存器开始地址
要读FCC下挂仪表,
第5、6字节:要读的寄存器数量
第7、8字节:从字节1到6的CRC16校验和
从机回送:
第1字节 ADR
: 从机地址码(=001~254)
第2字节 03H
: 返回读功能码
第3字节 : 从4到M (包括4及M )的字节总数 第4到M 字节
: 寄存器数据
第
M +1、M+2字节
: 从字节1到M 的CRC16校验和
当从机接收错误时,从机回送:
第1字节 ADR
: 从机地址码(=001~254)
第2字节 83H
: 读寄存器值出错
第3字节 信息码 : 见信息码表
第4、5字节
: 从字节1到3的CRC16校验和
1.4. 功能码06H : 写单个寄存器值 主机发送:
当从机接收正确时,从机回送:
当从机接收错误时,从机回送:
第1字节ADR :从机地址码(=001~254)
第2字节86H :写寄存器值出错功能码
第3字节错误数息码:见信息码表
第4、5字节:从字节1到3的CRC16校验和
1.5.功能码10H:连续写多个寄存器值
当从机接收正确时,从机回送:
当从机接收错误时,从机回送:
第1字节ADR :从机地址码(=001~254)
第2字节90H :写寄存器值出错
第3字节错误信息码:见信息码表
第4、5字节:从字节1到3的CRC16校验和寄存器定义表:(注:寄存器地址编码为16进制)
备注:
1.4字节浮点数:符合IEEE-754标准的单精度浮点数。
S符号位,“1”表示负,“0”表示正。
E为阶码。
M为尾数的小数点部分。
例如:浮点数=42F98000H,在内存中的存放格式为:
2. 寄存器定义表中,读写属性有打√的寄存器为只读寄存器。
没有打√的为读写寄存器。
信息码表:
仪表表型字
00:XMZ5000 01:XMT/XMB5000 02:XMDI5000
03:XMS5000 04:XML6000 05:XMD5XX16 (16)
06:XMA5000 07:XMH5000 08:XML5000 (3)
09:XMJ5000 10:XMD5XX08 (8) 11:XMPHT/XMPHB5000 12:XMD5XX32(32) 13:XME5000 (3) 14:XMDO5000 15:XMLH5000 (4+1) 16:XMD5XX24 (24) 17:XMAF5000 (2) 18:XMC5000(24)
30:XMG5000 31:XMGI5000 32:XMG7000 (2)
33:XMG8000 (3) 34:XMHG5000 35:XMGA5000/6000 (4)
36:XMGAF5/6/7000 (4) 37:XMRA5000/6000 (5) 38:XMRAF5000/6000 (5)
39:XMPA7000 (5) 40:XMPAF7000 (5) 41:XMRA7000 (6)
42:XMRAF7000 (6) 43:XMPHGA5000/6000 44:XXS
45:XMRH5000 46:DFD/DFQ/DFDA/DFDQ5000/DFQA7000
50:XMPA8000 (7) 51:XMPAF8000 (7) 52:XMRA8000 (8)
53:XMRAF8000 (8) 54:55:
60:XMLY5000 61:XMLY6000
仪表分度号
00:0~10mA线性01:4~20mA线性02:0~5V线性
03:1~5V线性04:0~100线性05:0~10mA开方
06:4~20mA开方07:0~5V开方08:1~5V开方
09:0~100开方10:Pt100 11:
12:Pt10 13:Cu100 14:Cu50
15:30~350Ω16:G53 17:BA1
18:BA2 19:F1 20:F2
21:B 22:R 23:S
24:N 25:K 26:E
27:J 28:T 29:
30:钨铼3-钨铼26 31:EA2 32:EU2
33:0~60mV
注:
. 通讯板跳线端子说明: 拨码开关拨向ON表示零(1)值
(端子1)
端子(1)
端子(2)
晶振
端子1为仪表的地址的八进制编码(如有FCC仪表则表示为FCC仪表下挂仪表的地址) 例如25=0001 1001
(端子2)
端子2的 8 7 6 5 为4位上位机波特率编码
8 7 6 5
1 0 1 0为9600 波特率
0 1 1 0为19200 波特率
1 1 1 0为38400波特率
端子2的 4 3 2 1 位为FCC仪表地址选择,当4 3 2 1位= 0 0 0 0,表示不挂FCC仪表;例如4 3 2 1=0 0 1 0
表示FCC仪表地址为2
(注:对于xml型号的仪表通道1表示XML的瞬时值;通道2表示XML的温度值 ;通道3表示XML的压
力值;xml的瞬时值,温度值,压力值,支持批读; XML的累积流量的寄存器地址从0150h到
0153h;XMD,XMC多路采集器支持批读。
)
特别说明:
设置完波特率或地址,在进行通讯前,请重新给仪表上电
上电初始化6秒后,方可通讯
MODBUS_RTU通讯例子:
读寄存器值:
主机发送: 寄存器值为16进制数
设读地址0010(通道1)的瞬时值; 瞬时值=130
从机回送:
浮点数: 表示整数130写寄存器值:
主机发送: 寄存器值为16进制数
设写地址作0110(PID P)的参数=13h
从机回送:。