Modbus RTU通讯协议
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通讯协议是一种串行通信协议,用于在工业自动化领域中实现设备之间的数据交换。
本协议规定了通信的物理层、数据帧格式、功能码及其对应的数据格式,以及通信过程中的错误处理等。
二、物理层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 协议简介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,不可修,不可修改,用户希望使用其他波特率时,请在定货时声明。
MODBUS-RTU通讯协议简介
MODBUS-RTU通讯协议简介2008-10-10 17:271.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 协议当数据帧到达终端设备时,它通过一个简单的“端口”进入被寻址到的设备,该设备去掉数据帧的“信封”(数据头),读取数据,如果没有错误,就执行数据所请求的任务,然后,它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。
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为阶码。
ModBusRTU通讯协议
ModBusRTU通讯协议协议名称:ModBusRTU通讯协议一、引言ModBusRTU通讯协议是一种基于串行通信的通讯协议,用于在工业自动化领域中实现设备之间的数据交互。
本协议旨在规范ModBusRTU通讯协议的格式、数据传输方式、命令与响应规则等,以确保通讯的稳定性和可靠性。
二、协议结构ModBusRTU通讯协议采用了一种简单的主从结构,其中包括一个主站和多个从站。
主站负责发送命令并接收从站的响应,而从站则负责接收命令并向主站发送响应。
三、数据格式1. 帧格式ModBusRTU通讯协议的数据帧由以下几个部分组成:- 起始位:一个起始位,用于标识数据帧的开始。
- 地址位:一个地址位,用于标识从站的地址。
- 功能码:一个功能码,用于标识命令的类型。
- 数据位:一个或多个数据位,用于传输命令或响应的数据。
- 校验位:一个校验位,用于验证数据的完整性。
- 结束位:一个结束位,用于标识数据帧的结束。
2. 数据类型ModBusRTU通讯协议支持多种数据类型,包括位(Coil)、输入位(Input Coil)、寄存器(Holding Register)和输入寄存器(Input Register)。
每种数据类型都有对应的读取和写入命令。
四、命令与响应规则1. 读取命令主站可以发送读取命令来获取从站的数据。
读取命令的格式如下:- 从站地址:一个字节,用于指定要读取数据的从站地址。
- 功能码:一个字节,用于指定读取命令的功能码。
- 起始地址:两个字节,用于指定要读取数据的起始地址。
- 数据长度:两个字节,用于指定要读取的数据长度。
- 校验码:两个字节,用于验证命令的有效性。
2. 写入命令主站可以发送写入命令来向从站写入数据。
写入命令的格式如下:- 从站地址:一个字节,用于指定要写入数据的从站地址。
- 功能码:一个字节,用于指定写入命令的功能码。
- 起始地址:两个字节,用于指定要写入数据的起始地址。
- 数据长度:两个字节,用于指定要写入的数据长度。
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 协议当信息帧到达终端设备时,它通过一个简单的“口”进入寻址到的设备,该设备去掉数据帧的“信封”(数据头),读取数据,如果没有错误,就执行数据所请求的任务,然后,它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。
ModBusRTU通讯协议
ModBusRTU通讯协议协议名称:ModBus RTU通讯协议1. 引言ModBus RTU通讯协议是一种用于串行通信的通讯协议,广泛应用于工业自动化领域。
本协议旨在规范ModBus RTU通讯协议的格式和规则,确保通讯的稳定性和可靠性。
2. 协议结构ModBus RTU通讯协议采用了简单而高效的二进制格式,包含以下几个部分:2.1 帧头帧头由一个地址字节和一个功能码字节组成,用于标识通讯的设备地址和功能。
2.2 数据数据部分包含了读取或写入的寄存器地址、寄存器数量以及相应的数据。
数据的长度根据具体功能码而定。
2.3 CRC校验为了保证数据的完整性和准确性,ModBus RTU通讯协议使用了循环冗余校验(CRC)进行校验。
CRC校验码位于数据帧的最后两个字节。
3. 设备地址ModBus RTU通讯协议中,每个设备都有一个唯一的地址,用于标识设备。
设备地址的范围为1到247,其中地址0为广播地址。
4. 功能码功能码用于定义通讯的具体操作类型,包括读取寄存器、写入寄存器等。
常用的功能码包括:4.1 读取寄存器(功能码03)读取寄存器功能码用于读取设备的寄存器数据。
它包含一个起始地址和一个寄存器数量,用于指定读取的寄存器范围。
4.2 写入寄存器(功能码06)写入寄存器功能码用于向设备的寄存器中写入数据。
它包含一个寄存器地址和一个写入的数据值。
4.3 强制单线圈(功能码05)强制单线圈功能码用于控制设备的输出线圈状态。
它包含一个线圈地址和一个状态值,用于指定线圈的状态。
5. 数据格式ModBus RTU通讯协议中的数据格式如下:5.1 通讯帧格式通讯帧由起始位、数据位、停止位和奇偶校验位组成。
通讯帧的总长度为11位。
5.2 数据位格式数据位采用8位无奇偶校验格式,用于传输设备地址、功能码、数据等信息。
5.3 停止位格式停止位为1位,用于表示一个数据帧的结束。
5.4 奇偶校验位奇偶校验位用于检测数据传输过程中的错误。
MODBUS_RTU 通讯协议(计数器)
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循环冗余错误校验
举例对比说明:(LED计数器)以实际通讯数据内容为准
发送:\01\03\00\00\00\10\44\06
回收:01 03 20 01 00 08 00 8F 02 00 00 00 00 00 00 00 00 00 00 E8 00 00 00 03 55
00 00 00 00 00 00 00 00 00 00 5C 55
仪表动态数据格式
编号参数名称数据格式地址备注
1 E2PROM参数修改标志单字节定点数 0000
2 仪表类型单字节定点数 0001
3 实时测量值三字节定点数 0002
4 第一报警状态(AL1)单字节定点数 0004
5 第二报警状态(AL2)单字节定点数 0005。
ModBusRTU通讯协议
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通讯协议协议名称:ModBus RTU通讯协议1. 引言ModBus RTU通讯协议是一种常用的串行通信协议,用于在工业自动化领域中实现设备之间的数据交换。
本协议旨在确保设备之间的可靠通信和数据传输,并提供一致的数据格式和通信规范。
2. 协议概述ModBus RTU通讯协议是一种基于串行通信的主从结构协议。
主设备通过串口与从设备进行通信,从设备接收主设备发送的命令并返回相应的响应数据。
该协议采用二进制编码方式传输数据,具有较高的传输效率和稳定性。
3. 协议要素3.1 物理层ModBus RTU通讯协议使用RS485或RS232串口作为物理层接口。
RS485接口支持多个从设备的连接,而RS232接口只支持一个从设备的连接。
通信速率可根据实际需求设置。
3.2 帧格式ModBus RTU通讯协议的数据帧由以下几部分组成:- 起始位:用于标识帧的开始,为一个连续的高电平信号。
- 设备地址:用于标识从设备的地址,主设备通过该地址与从设备进行通信。
- 功能码:用于标识主设备发送的命令类型,从设备根据功能码执行相应的操作。
- 数据域:包含命令的参数或数据。
- CRC校验:用于检验数据的完整性,保证数据传输的准确性。
3.3 功能码ModBus RTU通讯协议定义了一系列功能码,用于标识主设备发送的命令类型。
常用的功能码包括:- 读取线圈状态:用于读取从设备的开关状态。
- 读取输入状态:用于读取从设备的输入状态。
- 读取保持寄存器:用于读取从设备的数据寄存器。
- 读取输入寄存器:用于读取从设备的输入寄存器。
- 写单个线圈:用于写入从设备的开关状态。
- 写单个保持寄存器:用于写入从设备的数据寄存器。
- 写多个线圈:用于批量写入从设备的开关状态。
- 写多个保持寄存器:用于批量写入从设备的数据寄存器。
4. 数据传输流程4.1 主设备发送命令主设备先发送起始位,然后发送从设备的地址和功能码,接着发送相应的命令参数或数据。
modbusrtu 协议
modbusrtu 协议Modbus是一种通讯协议,最初由Modicon公司开创。
目前这个协议已经成为了全球工业自动化设备间的通讯标准之一,被广泛应用于许多领域,包括工业自动化、家庭自动化、建筑物自动化、能源管理等等。
Modbus RTU协议是其中最常见的格式之一,本文将详细介绍该协议的基本特点、通讯方式、报文结构以及应用范围等方面。
一、协议介绍1.1 基本概念Modbus RTU协议是Modbus协议的一种变体,是在串行通讯中广泛应用的一种方式。
RTU通讯的特点在于通讯速度较快,协议间数据的传输效率高。
1.2 协议特点针对它的通讯方式而言,Modbus RTU协议最明显的特点是它的速度快。
由于基于串行通讯,可以实现数据快速传输。
此外,它采取了类似于“请求—响应”的模式,能够保证通讯中数据的可靠性。
二、通讯方式Modbus RTU协议采取了一种“Master/Slave”的结构,其中,Master表示设备的控制器或CPU,而Slave则具有更低的智力,被动从属于Master,它们互相交换信息,实现整个系统的控制。
在通讯时,Master通过一个唯一的地址向Slave发送请求消息,并等待接收Slave的响应消息。
通讯过程主要包括以下两个阶段:2.1 请求消息当Master向Slave发送请求时,它会先确定拟请求的Slave的地址、功能码和数据。
其中,地址是指Slave设备在同一个网络上的唯一标识符,功能码表示所请求的操作类型,数据则是操作所需的具体数据。
请求消息的格式如下:Slave Address: 1 byte Function Code: 1 byte Data: n bytes CRC Check: 2 bytes需要注意的是,在发送请求消息时,Master应能确保请求在网络上的唯一性,否则将导致请求的冲突,影响通讯的有效性。
2.2 响应消息当Slave接受到Master的请求消息时,它会根据请求完成相应的操作,并返回响应消息。
ModBusRTU通讯协议
ModBusRTU通讯协议协议名称:ModBus RTU通讯协议1. 引言ModBus RTU通讯协议是一种用于串行通信的通讯协议,主要用于工业自动化领域中的设备间数据传输和通信。
本协议旨在确保设备之间的可靠通信,并规定了数据传输格式、通信规则和错误处理等内容。
2. 适用范围本协议适用于使用ModBus RTU通讯协议进行数据传输和通信的设备和系统。
3. 术语定义在本协议中,以下术语定义适用:3.1 主机(Master):发送请求并控制通信的设备。
3.2 从机(Slave):响应主机请求的设备。
3.3 寄存器(Register):存储设备内部数据的位置。
3.4 线圈(Coil):存储设备内部布尔类型数据的位置。
4. 数据传输格式4.1 物理层ModBus RTU通讯协议使用串行通信方式,通信速率可根据实际需求进行设置。
4.2 帧格式每个ModBus RTU帧由以下部分组成:4.2.1 地址码:用于标识从机的地址。
4.2.2 功能码:用于指示请求的类型。
4.2.3 数据域:包含请求或响应的数据。
4.2.4 CRC校验:用于检测帧的传输错误。
5. 通信规则5.1 主机发送请求5.1.1 主机向从机发送请求帧,包括地址码、功能码和数据域。
5.1.2 从机接收请求帧,并根据功能码执行相应的操作。
5.2 从机响应请求5.2.1 从机根据请求帧的功能码执行操作,并生成响应数据。
5.2.2 从机向主机发送响应帧,包括地址码、功能码和数据域。
5.3 主机接收响应5.3.1 主机接收响应帧,并进行CRC校验。
5.3.2 如果校验通过,主机处理响应数据;否则,主机请求重发或进行错误处理。
6. 功能码本协议定义了以下常用功能码:6.1 读取线圈状态(Read Coil Status):用于读取从机中的线圈状态。
6.2 读取输入状态(Read Input Status):用于读取从机中的输入状态。
6.3 读取保持寄存器(Read Holding Registers):用于读取从机中的保持寄存器。
modbus rtu 通讯参数
modbus rtu 通讯参数摘要:1.Modbus RTU 简介2.Modbus RTU 通讯协议格式3.Modbus RTU 与Modbus ASCII 的区别4.Modbus RTU 通讯参数5.实现Modbus RTU 通讯的方法正文:一、Modbus RTU 简介Modbus RTU 是一种通讯协议,由Modicon 公司最早提出,并逐渐被广泛接受。
它是一种标准的通讯规约,可用于实现不同系统之间的通讯。
Modbus RTU常用于RS232/RS485通讯过程中,尤其在工业自动化领域中具有较高的应用价值。
二、Modbus RTU 通讯协议格式Modbus RTU 通讯协议采用二进制格式,具有较高的传输效率。
其通讯帧格式包括:地址码、功能码、数据区、校验码等。
地址码用于标识通讯双方,功能码用于指示通讯目的,数据区用于传输实际数据,校验码用于检验数据传输的正确性。
三、Modbus RTU 与Modbus ASCII 的区别Modbus RTU 和Modbus ASCII 都是Modbus 通讯协议的一部分,它们有不同的应用场景。
Modbus RTU 适用于通讯数据量较大且主要是二进制数据的情况,而Modbus ASCII 适用于通讯数据量较小且主要是文本数据的情况。
因此,根据实际应用需求选择合适的Modbus 通讯方式。
四、Modbus RTU 通讯参数Modbus RTU 通讯参数主要包括:波特率、数据位、停止位、奇偶校验等。
波特率用于控制数据传输的速度,数据位用于表示数据位数,停止位用于标识数据传输的结束,奇偶校验用于检验数据传输的正确性。
在实际应用中,需要根据通讯设备的具体情况设置合适的Modbus RTU 通讯参数。
五、实现Modbus RTU 通讯的方法实现Modbus RTU 通讯的方法主要包括:硬件实现、软件实现和通信模块实现。
硬件实现是通过特定的硬件设备实现Modbus RTU 通讯,软件实现是通过计算机程序实现Modbus RTU 通讯,通信模块实现是通过通信模块实现Modbus RTU 通讯。
MODBUS-RTU通讯协议
MODBUS-RTU 通讯协议MODBUS-RTU 通讯协议采用主从应答方式(半双工),由主机发出指令寻址某一从机,被寻址的从机响应并返回应答信息。
一、通讯格式1.1 传输格式信息传输为异步方式,并以字节为单位(LSB 先),在主机和从机之间传递的通讯信息是11位的字格式。
有校验位(奇偶校验)的传输序列:1个起始位、8个数据位、1个校验位、1个停止位。
无校验位的传输序列:1个起始位、8个数据位、2个停止位。
1.2 帧格式一个新的通讯信息帧开始之前,通讯总线应存在不小于 3.5字节的间歇时间,通讯开始之后,每两个字节之间应不大于1.5字节的间歇时间。
二、通讯信息帧说明主机寻址某一从机时,与主机发送的地址码相符的从机接收通讯命令,如果CRC 校验无误,则执行相应的操作,然后把执行结果(数据)回送给主机,否则不返回任何信息。
2.1 地址码地址码是通讯信息帧的第1个字节,从0到247(0为广播地址)。
每个从机应该有总线内唯一的地址码,只有与主机发送的地址码相符的从机才能响应并回送信息。
2.2 功能码功能码是通讯信息帧的第2个字节。
主机寻址某一从机时,通过功能码告诉从机执行什么操作。
从机返回的功能码与主机发送的功能码一致表明从机已正确执行了相关操作。
从机支持以下功能码:2.3 数据区数据区的长度和内容随功能码不同而不同,用于主机和从机以读写寄存器的方式进行数据交换。
产品使用说明书中给出了具体的通讯信息表(参见“五、通讯信息表示例”)。
2.4 CRC 校验码CRC 校验码高字节是通讯信息帧的最后一个字节。
CRC 校验码由主机计算,放置于发送信息帧的尾部。
从机再重新计算接收到信息的CRC ,比较计算得到的CRC 与接收到的CRC 是否一致,如果不一致,则表明出错。
CRC 计算只用到了8个数据位,计算方法如下:① 预置1个16位的寄存器为十六进制FFFF (即全为1),称此寄存器为CRC 寄存器;② 把第一个8位二进制数据(通讯信息帧的第1个字节)与16位CRC 寄存器的低8位相异或,结果放于CRC 寄存器; ③ 把CRC 寄存器的内容右移一位(朝低位)并用0填补最高位,检查右移后的移出位;startenddataparity起始位停止位数据位校验位startenddata起始位停止位数据位④如果移出位为0:重复第③步(再次右移一位);如果移出位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或;⑤重复步骤③和④,直到右移8次,这样整个8位数据全部进行了处理;⑥重复步骤②到步骤⑤,进行通讯信息帧下一个字节的处理;⑦将该通讯信息帧所有字节(不包括CRC校验码高、低字节)按上述步骤计算完成后,CRC寄存器内容即为CRC校验码。
(完整)MODBUS_RTU通讯协议
MODBUS 通讯协议使用手册从机地址码(=001〜254) 读寄存器值岀错 见信息码表从字节1到3的CRC16校验和1.4.功能码06H:写单个寄存器值:1.RTU 方式通讯协议1.1. 硬件采用RS- 485,主从式半双工通讯,主机呼叫从机地址,从机应答方式通讯。
1.2. 数据帧10位,1个起始位,8个数据位,1个停止位,无校验。
波特率:9600;19200 384001.3. 功能码03H:读寄存器值 主机发送: 第1字节ADR 第2字节03H 第3、4字节第5、6字节 第7、8字节从机地址码(=001〜254) 读寄存器值功能码 要读的寄存器开始地址 要读FCC 下挂仪表,要读的寄存器数量从字节1到6的CRC16校验和从机回送:第1字节ADR 第2字节 03H第3字节第4到M 字节 从机地址码(=001〜254) 返回读功能码从4到M (包括4及M 的字节总数 寄存器数据第 M+ 1、 当从机接收错误时,从机回送: M+2字节 : 从字节1至U M 的CRC16校验和 第1字节ADR 第2字节 83H第3字节信息码 第4、 5字节当从机接收正确时,从机回送:当从机接收错误时,从机回送:从机地址码(=001〜254)写寄存器值岀错功能码 见信息码表从字节1到3的CRC16校验和当从机接收错误时,从机回送:从机地址码(=001〜254) 写寄存器值岀错 见信息码表从字节1到3的CRC16校验和第1字节ADR 第2字节 86H 第3字节错误数息码 第4、 5字节第1字节ADR 第2字节 90H 第3字节错误信息码 第4、 5字节0164 0166备注:E为阶码。
M 为尾数的小数点部分。
例如:浮点数 124.75 = 42F98000H,在内存中的存放格式为: 2.寄存器定义表中,读写属性有打 的寄存器为只读寄存器。
没有打"的为读写寄存器。
1.9 信息码表:1.10仪表表型字 00 XMZ5000 01 XMT/XMB5000 02 XMDI50003 XMS500004 XML6000 05 XMD5XX16 (16)06 XMA5000 07 XMH5000 08XML5000 (3)9 XMJ500010 XMD5XX08 (8) 11 XMPHT/XMPHB50012 XMD5XX32(32)13 XME5000 (3) 14 XMDO500015 XMLH5000 (4+1)16XMD5XX24 (24)17 XMAF5000 (2)18 XMC5000(24)30 XMG5000 31 XMGI5000 32 XMG7000 (2)33 XMG8000 (3) 34 XMHG500035 XMGA5000/6000 ⑷36 XMGAF5/6/7000 (4) 37 XMRA5000/6000 (5)38XMRAF5000/6000 (5)39 XMPA7000 (5)40 XMPAF7000 (5) 41 XMRA7000 (6)42 XMRAF7000 (6)43 XMPHGA5000/6000 44 XXS45 XMRH5000 46 DFD/DFQ/DFDA/DFDQ5000/DFQA700050 XMPA8000 (7)51 XMPAF8000 (7) 52 XMRA8000 (8)53 XMRAF8000 (8)545560XMLY5000 61XMLY60001.11仪表分度号00 0〜10mA 线性 014〜20mA 线性 02 0〜5V 线性03 1〜5V 线性 04 0〜100线性 050〜10mA 开方06 4〜20mA 开方 07 0〜5V 开方 08 1〜5V 开方09 0〜100开方 10 Pt100 11 Pt100.012 Pt1013 Cu100 14 Cu5015 30〜350Q 16 G53 17 BA118 BA2 19 F1 20 F221 B 22 R 23 S24 N 25 K 26 E27 J28 T 29NiCr-AuFe0.0730钨铼3-钨铼2631EA232 EU233: 0 〜60mV注:16 通讯板跳线端子说明:拨码开关拨向ON 表示零(1)值8 7 6 5 4 3 2 1 (端子 1)端子2的4 3 2 1 位为FCC 仪表地址选择,当4 3 2 1 位=0 0 0 0 ,表示不挂FCC 仪表;例如4 32仁0 0 1 0 表示FCC 仪表地址为2(注: 对于xml 型号的仪表 通道1表示XML 的瞬时值;通道 2表示XML 的温度值;通道3表示XML 的压 力值;xml 的瞬时值,温度值,压力值,支持批读; XML 的累积流量的寄存器地址从 0150h 到 0153h ; XMD,XM (多路采集器支持批读。
ModBus-RTU通讯协议与ModBus通讯协议有什么区别
modbus RTU常见问题汇总1、ModBus RTU通讯协议与ModBus通讯协议有什么区别?ModBus协议是应用层报文传输协议(OSI模型第7层),它定义了一个与通信层无关的协议数据单元(PDU),即PDU=功能码+数据域。
ModBus协议能够应用在不同类型的总线或网络。
对应不同的总线或网络,Modbus协议引入一些附加域映射成应用数据单元(ADU),即ADU=附加域+PDU。
目前,Modbus有下列三种通信方式:1.以太网,对应的通信模式是MODBUS TCP。
2.异步串行传输(各种介质如有线RS-232-/422/485/;光纤、无线等),对应的通信模式是MO DBUS RT U 或MODBUS ASCII。
3.高速令牌传递网络,对应的通信模式是Modbus PLUS。
2、关于MODBUS RTU通讯协议的提问?modbus 主要由站地址(一个字节)+功能码(一个字节)+首地址(两个字节)+访问字数(两个字节)+校验码(CRC16或LRC两个字节)总共8个字节组成。
其实VB中编程很简单从组建添加MSComm组建就行了,难的是校验,3、modbus、rtu、modbus rtu分别是什么?modbus协议是工控行业的标准协议,前身为莫迪康所写,现已被施奈德收购而modbus分为两种协议:即串口协议(modbus rtu)和网口协议(modbus tcp)协议,一般的工控机只支持rs232或者RS485的串口模式,这个时候工控机的协议栈里就只有modbusRTU协议,当他从串口接收到数据时,会直接根据报文中的数据进行控制,如果需要用modbusTCP协议进行传输,则需要使用带有网口的PLC具体的帧格式如下modbus RTU 地址域功能码数据差错校验modbus TCP 目的地址协议id 长度单元号功能码数据简单的说tcp是由RTU加工而来的而RTU则是另外一种概念,不包含在modbus协议内是工控行业对监控设备的简称。
MODBUS-RTU通讯协议
智 能 显 示 仪 表RS-485MODBUB 通讯协议(RTU)一、RTU 模式1、RTU 字节格式:每字节11位;起始位1位,数据位8位,停止位2位。
由第1位起始位,第2~9位数据位,第10~11位停止位组成,低位在前,高位在后。
2、编码系统:8位二进制。
3、波特率:9600bit/s 。
4、帧校验域:循环冗余校验(CRC),对全部报文内容执行校验。
CRC 先低位后高位,其余所发送字节时均是先高位字节后低位字节。
二、寄存器地址及定义序号寄存器地址数据含义1 0000-0002累积流量:前3个字节为累积流量16进制整数部分,后3个字节为累积流量16进制小数部分,即******.******。
2 0003-0004瞬时流量:前2个字节为瞬时流量16进制整数部分,后2个字节为瞬时流量16进制小数部分,即****.****。
三、功能代码读寄存器数据 主站请求帧: 地址 1字节功能码 1字节 0x03起始地址 2字节 0x0000~0x0005 寄存器数量 2字节 1~0x06 CRC 校验 2字节从站响应帧: 地址 1字节功能码 1字节 0x03字节数 1字节 2×N (寄存器数量) 寄存器值 2×N 字节 CRC 校验2字节四、数据格式:1、主站请求发送帧格式(上位机到仪表)。
主站发送帧为8字节。
第1字节 第2字节 第3-4字节 第5-6字节 第7-8字节仪表地址 功能码(03) 寄存器起始地址 寄存器数量2、从站响应帧格式(仪表到上位机)第1字节 第2字节 第3字节 第4-6字节 第7-9字节仪表地址 功能码(03) 发送数据字节数 累积流量(整数) 累积流量(小数) 第10-11字节 第12-13字节 第14-15字节瞬时流量(整数) 瞬时流量(小数)RS-485输出的流量数据为二进制数,累积流量的单位为m 3;瞬时流量的单位为m 3/h 。
五、示例:(假设地址为28)读寄存器数据(此例中将当前表头显示的累计流量或瞬时流量数据读出,可根据需要读出一定数量的寄存器)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
要实现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。
m. 错误代码:0=无错误2. 在CPU的V数据区中分配库指令数据区(Library Memory);3. 如有必要,使用主站软件测试。
注意:由子程序参数HoldStart和MaxHold指定的保持寄存器区,是在S7-200 CPU的V 数据存储区中分配,此数据区不能和库指令数据区有任何重叠,否则在运行时会产生错误,不能正常通信。
注意Modbus 中的保持寄存器区按“字”寻址,即MaxHold规定的是VW而不是VB的个数。
在图2的例子中,规定了Modbus 保持寄存器区从VB0 开始(HoldStart =VB0),并且保持寄存器为1000个字(MaxHold=1000),因保持寄存器以字(两个字节)为单位,实际上这个通信缓冲区占用了VB0~VB1999共2000个字节。
因此分配库指令保留数据区时至少要从VB2000开始。
当然保持区不一定要从VB0开始。
注意:你选用的CPU的V存储区大小!CPU型号不同V数据存储区大小不同。
应根据需要选择Modbus保持寄存器区域的大小。
包含Modbus RTU 从站指令库的西门子plc项目编译、下载到CPU中后,在编程计算机(PG/PC)上运行一些Modbus测试软件可以检验S7-200的Modbus RTU通信是否正常,这对查找故障点很有用。
测试软件通过计算机串口(RS-232)和PC/PPI电缆连接CPU。
如果必要,须将PC/PPI 电缆设置在自由口通信方式。
可到一些软件下载网站寻找类似软件,如ModScan32 等。
二、PC机上MScomm控件的串行通信要完成VB与PLC等设备的串行通信要用到MScomm控件,在此有必要对该控件作较详细的说明。
Mscomm是一个非标准控件,需要要手动添加许多项目,其步骤如下。
1)选择菜单的【工程】2)选择【部件】#p#分页标题#e#3)在弹出的对话框中做如图7的选择。
图7 对话框界面4)如图8所示,在部件选项卡就会出现MScomm控件。
图8 MScomm控件5)基本属性三、MODBUS ASCII (16进制码都要转换成ASCII才能发送)Modbus 分为ASCII和RTU两种,ASCII采用的格式和校验相对简单,本文采用ASCII 格式,并仅对使用的功能码进行说明,更多的信息,请参看协议的详细说明。
1)通信格式LRC算法:ADR H+CMD H+DATA H,然后取2的补码。
4.2 VB与PLC通信的实现以下举例说明现场设备与PLC通信的实现。
1)控制要求:控制PLC的起动、停止,并显示运行状态(绿色为运行,红色为停止);能够用交替型按钮控制Y0,Y1,并用指示灯显示Y0,Y1状态(绿色为运行,红色为停止);能够对D256,D512两个寄存器进行数值写入的操作。
2)实现思路:PLC起动停止的标志位为M1072,查DVP协议,知道地址为H0C30,按功能码01操作;同样Y0,Y1的地址分别为H0500,H0501。
写入FF00为ON,0000为OFF,按功能码05操作;D256,D512地址分别为H1100,H1200,按功能码06操作即可。
3)VB接口的设计如图10所示。
图10 监控程序界面用按钮控制PLC的起动停止,Y0、Y1的ON/OFF及D256、D512写完数据的发送;用Shape组件做指示灯,表示PLC的运行状态和Y的状态;用timer 组件不停的读取M1072的状态,以判断PLC的运行情况;用MScomm控件实现PC与PLC的通信。
4)编程实现的代码构成(1) LRC算法校验的实现Public Function LRC(str As String) As Stringc = 0l = Len(str)For c = c + 1 To lc_data = Mid$(str, c, 2)#p#分页标题#e#d_lrc = d_lrc + Val(“&H” + c_data)c = c + 1Next cIf d_lrc 》 &HFF Thend_lrc = d_lrc Mod &H100End Ifh_lrc = Hex(&HFF - d_lrc + 1)If Len(h_lrc)》 2 Thenh_lrc = Mid(h_lrc, Len(h_lrc) - 1, 2)End IfLRC = h_lrcEnd Function(2)运行的开始就判断PLC的状态并设置标志位‘初次运行打开串口,并显示PLC运行状态Private Sub Form_Load()Dim s1 As StringDim s2 As StringDim s22 As StringDim s3 As String#p#分页标题#e#Dim s4 As StringMSComm1.PortOpen = Trues2 = “01010C300001”s22 = LRC(s2)s1 = “:” + s2 + s22 + Chr$(13) + Chr$(10)MSComm1.Output = s1s3 = MSComm1.Inputs4 = Mid$(s3, 6, 8)If s4 = “0C30FF00” Thenplc = 1 ’PLC为运行标志Elseplc = 0 ‘PLC为停止标志End IfEnd Sub(3)下面一段为用指示灯表示PLC的运行状态Private Sub Timer5_Timer()Dim s1 As StringDim s2 As String#p#分页标题#e#Dim s22Dim s3 As StringDim s4 As Strings2 = “01010C300001”s22 = LRC(s2)s1 = “:” + s2 + s22 + Chr$(13) + Chr$(10)MSComm1.Output = s1s3 = MSComm1.Inputs4 = Mid$(s3, 8, 2)If s4 = “31” Thenplc = 1 ’PLC为运行标志Else: If s4 = “30” Then plc = 0 ‘PLC为停止标志End IfIf plc = 1 ThenLabel2.Caption = “PLC正在运行。
.。
.”Shape1.FillColor = RGB(0, 255, 0)’greenElseLabel2.Caption = “PLC已经停止”#p#分页标题#e#Shape1.FillColor = RGB(255, 0, 0)‘redEnd IfEnd Sub(4) PLC的起动与停止’起动PLCPrivate Sub start_Click()Dim strout As StringTimer5.Enabled = Falsestr = “00050C30FF00”‘M1072 为PLC起动停止标志位。
查地址表,M1072为OC30.FF00为置ON,0000为置OFF。
’以上都是固定格式,要牢记。
LRCC = LRC(str)‘计算 str的lrc校验码。
strout = “:” + str + LRCC + Chr$(13) + Chr$(10)’欲传送之数据。
13为D,10为AMSComm1.Output = stroutTimer5.Enabled = TrueEnd Sub‘停止PLC#p#分页标题#e#Private Sub stop_Click()Dim strout As StringTimer5.Enabled = Falsestr = “00050C300000”LRCC = LRC(str)strout = “:” + str + LRCC + Chr$(13) + Chr$(10)MSComm1.Output = stroutTimer5.Enabled = TrueEnd SubY0、Y1的ON/OFF与PLC起动/停止的控制方式相同,指示灯的表示方式也相同。
D256,D512数据写入的操作类似,限于篇幅其它代码就不再列出了四、Modbus RTU格式(以16进制发送和接收)Modbus RTU 从站地址与S7-200的地址对应Modbus地址总是以00001、30004之类的形式出现。
西门子S7-200内部的数据存储区与Modbus的0、1、3、4共4类地址的对应关系如下:表1. Modbus地址对应表其中T为S7-200中的缓冲区起始地址,即HoldStart。
如果已知S7-200中的V存储区地址,推算Modbus地址的公式如下:Modbus地址= 40000 + (T/2+1) ; T为偶数Modbus RTU 从站指令库支持的Modbus 功能码Modbus RTU 从站指令库支持特定的Modbus 功能。