MODBUS-RTU通讯协议简介

合集下载

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,不可修,不可修改,用户希望使用其他波特率时,请在定货时声明。

MODBUS-RTU通讯协议简介

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 协议当数据帧到达终端设备时,它通过一个简单的“端口”进入被寻址到的设备,该设备去掉数据帧的“信封”(数据头),读取数据,如果没有错误,就执行数据所请求的任务,然后,它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。

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标准协议
Modbus RTU是一种常用的串行通信协议,用于在工业领域中
的设备之间进行通信和数据交换。

该协议定义了通信帧的结构和数据格式,使设备能够以字节为单位进行通信。

Modbus RTU的通信帧由一系列连续的字节组成,包括以下几
个部分:
1. 起始标志:一个字节的值,表示帧的开始,通常为0x55。

2. 地址字段:一个字节的值,表示接收方设备的地址。

3. 功能码:一个字节的值,表示请求的功能或响应的状态。

4. 数据字段:包含用于传输数据的字节数。

数据字段的长度可以根据具体的应用需求而变化。

5. CRC校验:一个两字节的循环冗余校验码,用于验证帧的
完整性。

在Modbus RTU协议中,主设备负责发送请求命令,从设备负责响应命令并返回数据。

请求命令和响应命令的帧结构类似,只是功能码不同。

Modbus RTU支持多种功能码,包括读取寄存器、写入寄存器、读取输入寄存器、写入多个寄存器等。

这些功能码能够满足不同设备之间的数据读写需求。

总体而言,Modbus RTU是一种简单而又灵活的串行通信协议,被广泛应用于工业自动化和控制系统中。

它的结构清晰、易于实现,并且能够在不同的设备之间实现互操作性。

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协议前世今生照例简单说下这个协议的历时,Modicon公司于1979年制定了Modbus协议标准,并用在其PLC产品上。

后来Modicon公司被施耐德收购。

已成为一种事实标准协议,同时也被IEC-61158工业通信总线规范收录于type 15子集。

所谓一流的企业做标准,二流的企业做品牌,三流的企业做产品。

这些标准国人都基本是使用者,而非缔造者,所以使用一下,产品上印个标志,做做相关的测试认证都要给老外交钱。

这里只是顺带牢骚几句,与本文想说的无关。

打住!Modbus的应用除了常见的过程控制系统,在其他很多领域都有其身影,比如一些楼宇控制,消防控制等等都有大量的产品采用Modbus协议,因为这个协议实现简单,工作可靠,还是标准化的协议!Modbus分很多实现版本,总的来说是一种应用层协议。

从OSI七层模型来看,位于第七层应用层。

它定义了在不同类型的总线或网络上连接的设备之间提供”客户端/服务器“通信。

对于使用串口的版本,也定义了layer 1 和 layer 2,实现在主站和一个或多个从站之间交换MODBUS 报文。

具体有哪些版本呢?其实主要分两种:Modbus RTU(Remote Terminal Unit 远程终端单元):这种方式常采用RS-485做为物理层,一般利用芯片的串口实现数据报文的收发,报文数据采用二进制数据进行通信。

Modbus ASCII :报文使用 ASCII 字符。

ASCII 格式使用纵向冗余校验和。

Modbus ASCII 报文由冒号 (":")开始和换行符 (CR/LF)结尾构成。

当然其他还根据所使用的物理层不一样,有这么些做法:Modbus TCP/IP 或 Modbus TCP :这是一种 Modbus 变体版本,使用 TCP/IP 网络进行通信,通过 502 端口进行连接。

报文不需要校验和计算,因为以太网底层已经实现了CRC32 数据完整性校验。

ModBusRTU通讯协议

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协议

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协议可能会遇到一些常见问题,如通信超时、数据错误、地址冲突等。

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

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

ModBusRTU通讯协议

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标准协议

modbusrtu标准协议Modbus RTU(Remote Terminal Unit Communication)协议是一种串行通信协议,主要用于工业自动化系统中的设备间数据通信,广泛应用于工业控制、能源、交通等领域。

Modbus RTU协议基于RS-485物理层,具有传输速度快、传输距离远、抗干扰能力强等特点。

Modbus RTU协议的主要特点如下:1. 主从通信:Modbus协议支持点对点或多点主从通信。

在一个网络中,有一个主设备(Master),负责发送命令给从设备(Slave),而从设备则需要按照主设备的要求进行相应的操作。

2. 两种数据帧格式:Modbus协议定义了两种数据帧格式:ASCII(基于文本)和RTU(基于二进制),RTU具有更高的传输速率和更好的抗干扰性能。

3. 四种地址类型:Modbus协议支持四种类型的设备地址,即:- 01:主站设备- 02:可读/可写从站设备- 03:只写从站设备- 04:广播地址4. 功能码:Modbus协议定义了丰富的功能码,用于请求从设备执行不同的操作。

常用的功能码有:- 01:读线圈(Read Coils)- 02:读离散输入(Read Discrete Inputs)- 03:读保持寄存器(Read Holding Registers)- 04:读输入寄存器(Read Input Registers)- 05:写单个线圈(Write Single Coil)- 06:写单个离散输入(Write Single Discrete Input)- 07:写单个寄存器(Write Single Register)- 08:写多个线圈(Write Multiple Coils)- 09:写多个离散输入(Write Multiple Discrete Inputs)- 10:写多个寄存器(Write Multiple Registers)5. 错误处理:Modbus协议定义了丰富的错误处理机制,包括校验错误、地址冲突、功能码错误等。

modbusrtu协议

modbusrtu协议

modbusrtu协议1. 简介modbusrtu协议是一种串行通信协议,广泛应用于工业自动化领域。

它定义了一种主从设备之间进行通信的规则和数据帧格式,能够实现可靠的数据交换。

本文将介绍modbusrtu协议的基本原理、数据帧结构、功能码以及在实际应用中的常见用途。

2. 基本原理modbusrtu协议采用了简单的主从架构,其中一个设备作为主站,控制多个从站进行数据交换。

主站负责发起请求并解析从站的响应数据。

通信采用全双工的方式进行,主站和从站通过共享的数据线交换信息。

3. 数据帧结构modbusrtu协议的数据帧由起始符、从站地址、功能码、数据、校验码和结束符组成。

具体结构如下:起始符 | 地址 | 功能码 | 数据 | 校验码 | 结束符•起始符:用于同步通信的起始标识符,通常为一个字节。

•地址:标识从站的地址,通常为一个字节。

地址0为广播地址,用于向多个从站发送指令。

•功能码:指定从站执行的操作,可以是读取数据、写入数据或其他特定功能。

•数据:用于传输的数据,长度可变。

•校验码:用于检测数据传输过程中的错误,通常采用循环冗余校验(CRC)算法计算得出。

•结束符:标志数据帧的结束,通常为一个或多个字节。

4. 功能码modbusrtu协议定义了一套常用的功能码,用于指示从站执行不同的操作。

常见的功能码及其功能如下:•读取线圈状态(01H):用于读取从站的开关量输出状态。

•读取输入状态(02H):用于读取从站的开关量输入状态。

•读取保持寄存器(03H):用于读取从站的模拟量输入状态。

•读取输入寄存器(04H):用于读取从站的模拟量输出状态。

•强制单线圈(05H):用于强制从站的开关量输出状态。

•预置多个寄存器(06H):用于设置从站的模拟量输出状态。

•执行多个操作(0FH):用于执行多个操作,如同时读取多个寄存器或写入多个寄存器的值。

5. 实际应用modbusrtu协议在实际应用中广泛用于工业自动化和远程监控系统。

ModBusRTU通讯协议

ModBusRTU通讯协议

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

本协议旨在定义ModBus RTU通讯协议的标准格式和规范,以确保各设备之间的互操作性和数据传输的可靠性。

2. 术语和定义在本协议中,以下术语和定义适用:- 主站:指发起通信请求的设备。

- 从站:指响应通信请求的设备。

- 寄存器:指用于存储和传输数据的内存单元。

- 线圈:指用于控制设备状态的开关。

3. 协议结构ModBus RTU通讯协议采用二进制格式进行数据传输,每个通信帧包含以下几个字段:- 地址:指定从站的地址,用于识别通信的目标设备。

- 功能码:指定通信的功能类型,如读取寄存器、写入线圈等。

- 数据:包含具体的通信数据,如读取的寄存器值或写入的线圈状态。

- CRC校验:用于检测通信数据的完整性。

4. 通信过程ModBus RTU通讯协议的通信过程如下:4.1 主站发送请求主站向从站发送请求,请求包含地址、功能码和相关数据。

4.2 从站响应请求从站接收到请求后,根据功能码进行相应的处理,并生成响应数据。

4.3 主站接收响应主站接收从站的响应数据,并进行解析和处理。

5. 功能码ModBus RTU通讯协议定义了一系列功能码,用于实现不同的通信功能。

以下是常用的功能码及其描述:- 读取线圈状态(功能码01):主站向从站请求读取线圈的状态,从站响应包含线圈的当前状态。

- 读取输入状态(功能码02):主站向从站请求读取输入的状态,从站响应包含输入的当前状态。

- 读取保持寄存器(功能码03):主站向从站请求读取保持寄存器的值,从站响应包含寄存器的当前值。

- 读取输入寄存器(功能码04):主站向从站请求读取输入寄存器的值,从站响应包含寄存器的当前值。

- 写入单个线圈(功能码05):主站向从站请求写入单个线圈的状态,从站响应确认写入结果。

modbusrtu 协议

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通讯协议

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 通讯参数

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 通讯协议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校验码。

ModBusRTU通讯协议

ModBusRTU通讯协议

ModBusRTU通讯协议协议名称:ModBus RTU通讯协议1. 引言ModBus RTU通讯协议是一种常用的串行通信协议,广泛应用于工业自动化领域。

本协议旨在规定ModBus RTU通讯协议的标准格式,以确保设备之间的可靠通信和数据交换。

2. 协议结构ModBus RTU通讯协议采用基于串行通信的方式,使用二进制编码进行数据传输。

协议结构如下:2.1 帧格式每个ModBus RTU通讯帧由以下几个部分组成:- 起始位:一个起始位用于标识通讯帧的开始。

- 设备地址:一个字节,用于指定通讯的设备地址。

- 功能码:一个字节,用于指定所要执行的功能。

- 数据域:包含数据和指令的部分,长度可变。

- CRC校验:用于校验数据的完整性。

2.2 设备地址设备地址用于标识通讯的设备,取值范围为1-247。

其中1-247为设备地址,0为广播地址。

2.3 功能码功能码用于指定所要执行的功能,常用的功能码如下:- 读取线圈状态(0x01):用于读取线圈的开关状态。

- 读取输入状态(0x02):用于读取输入信号的状态。

- 读取保持寄存器(0x03):用于读取设备的保持寄存器。

- 读取输入寄存器(0x04):用于读取设备的输入寄存器。

- 写单个线圈(0x05):用于控制单个线圈的开关状态。

- 写单个保持寄存器(0x06):用于写入单个保持寄存器的值。

- 写多个线圈(0x0F):用于控制多个线圈的开关状态。

- 写多个保持寄存器(0x10):用于写入多个保持寄存器的值。

3. 数据传输ModBus RTU通讯协议使用串行通信进行数据传输。

通讯帧以连续的方式传输,每个字节由8个位组成,使用LSB(Least Significant Bit)优先的方式传输。

3.1 数据格式数据格式如下:- 起始位:一个起始位,标识通讯帧的开始,取值为0。

- 设备地址:一个字节,用于指定通讯的设备地址。

- 功能码:一个字节,用于指定所要执行的功能。

modbus rtu标准协议

modbus rtu标准协议

modbus rtu标准协议Modbus RTU标准协议。

Modbus RTU是一种串行通信协议,常用于工业自动化领域的设备间通讯。

它是Modicon公司于1979年推出的一种通信协议,后来成为了工业自动化领域的通用标准之一。

Modbus RTU协议采用二进制编码,使用串行通信方式,可以在RS-232、RS-422、RS-485等串行通信接口上进行数据传输。

Modbus RTU协议的数据帧包括地址域、功能码、数据域和CRC校验。

地址域用于指定从站地址,功能码用于定义数据传输的类型,数据域用于存储传输的数据,CRC校验用于检测数据传输的准确性。

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

所以在这里我仅介绍一下Modbus的ASCII和RTU协议。

下表是ASCII协议和RTU协议进行的比较:通过比较可以看到,ASCII协议和RTU协议相比拥有开始和结束标记,因此在进行程序处理时能更加方便,而且由于传输的都是可见的ASCII字符,所以进行调试时就更加的直观,另外它的LRC校验也比较容易。

但是因为它传输的都是可见的ASCII字符,RTU传输的数据每一个字节ASCII都要用两个字节来传输,比如RTU传输一个十六进制数0xF9,ASCII就需要传输’F’’9’的ASCII码0x39和0x46两个字节,这样它的传输的效率就比较低。

所以一般来说,如果所需要传输的数据量较小可以考虑使用ASCII协议,如果所需传输的数据量比较大,最好能使用RTU协议。

下面对两种协议的校验进行一下介绍。

1、LRC校验LRC域是一个包含一个8位二进制值的字节。

LRC值由传输设备来计算并放到消息帧中,接收设备在接收消息的过程中计算LRC,并将它和接收到消息中LRC域中的值比较,如果两值不等,说明有错误。

LRC校验比较简单,它在ASCII协议中使用,检测了消息域中除开始的冒号及结束的回车换行号外的内容。

它仅仅是把每一个需要传输的数据按字节叠加后取反加1即可。

下面是它的VC代码:BYTE GetCheckCode(const char * pSendBuf, int nEnd)//获得校验码{BYTE byLrc = 0;char pBuf[4];int nData = 0;for(i=1; i<end; i+=2) //i初始为1,避开“开始标记”冒号{//每两个需要发送的ASCII码转化为一个十六进制数pBuf [0] = pSendBuf [i];pBuf [1] = pSendBuf [i+1];pBuf [2] = '"0';sscanf(pBuf,"%x",& nData);byLrc += nData;}byLrc = ~ byLrc;byLrc ++;return byLrc;}2、CRC校验CRC域是两个字节,包含一16位的二进制值。

它由传输设备计算后加入到消息中。

接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误。

CRC是先调入一值是全“1”的16位寄存器,然后调用一过程将消息中连续的8位字节各当前寄存器中的值进行处理。

仅每个字符中的8Bit数据对CRC有效,起始位和停止位以及奇偶校验位均无效。

CRC产生过程中,每个8位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移动,最高有效位以0填充。

LSB被提取出来检测,如果LSB为1,寄存器单独和预置的值或一下,如果LSB为0,则不进行。

整个过程要重复8次。

在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相或。

最终寄存器中的值,是消息中所有的字节都执行之后的CRC值。

CRC添加到消息中时,低字节先加入,然后高字节。

下面是它的VC代码:WORD GetCheckCode(const char * pSendBuf, int nEnd)//获得校验码{WORD wCrc = WORD(0xFFFF);for(int i=0; i<nEnd; i++){wCrc ^= WORD(BYTE(pSendBuf[i]));for(int j=0; j<8; j++){if(wCrc & 1){wCrc >>= 1;wCrc ^= 0xA001;}else{wCrc >>= 1;}}}return wCrc;}对于一条RTU协议的命令可以简单的通过以下的步骤转化为ASCII协议的命令:1、把命令的CRC校验去掉,并且计算出LRC校验取代。

2、把生成的命令串的每一个字节转化成对应的两个字节的ASCII码,比如0x03转化成0x30,0x33(0的ASCII码和3的ASCII码)。

3、在命令的开头加上起始标记“:”,它的ASCII码为0x3A。

4、在命令的尾部加上结束标记CR,LF(0xD,0xA),此处的CR,LF表示回车和换行的ASCII码。

所以以下我们仅介绍RTU协议即可,对应的ASCII协议可以使用以上的步骤来生成。

下表是Modbus支持的功能码:在这些功能码中较长使用的是1、2、3、4、5、6号功能码,使用它们即可实现对下位机的数字量和模拟量的读写操作。

1、读可读写数字量寄存器(线圈状态):计算机发送命令:[设备地址] [命令号01] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位]例:[11][01][00][13][00][25][CRC低][CRC高]意义如下:<1>设备地址:在一个485总线上可以挂接多个设备,此处的设备地址表示想和哪一个设备通讯。

例子中为想和17号(十进制的17是十六进制的11)通讯。

<2>命令号01:读取数字量的命令号固定为01。

<3>起始地址高8位、低8位:表示想读取的开关量的起始地址(起始地址为0)。

比如例子中的起始地址为19。

<4>寄存器数高8位、低8位:表示从起始地址开始读多少个开关量。

例子中为37个开关量。

<5>CRC校验:是从开头一直校验到此之前。

在此协议的最后再作介绍。

此处需要注意,CRC校验在命令中的高低字节的顺序和其他的相反。

设备响应:[设备地址] [命令号01] [返回的字节个数][数据1][数据2]...[数据n][CRC校验的低8位] [CRC校验的高8位]例:[11][01][05][CD][6B][B2][0E][1B][CRC低][CRC高]意义如下:<1>设备地址和命令号和上面的相同。

<2>返回的字节个数:表示数据的字节个数,也就是数据1,2...n中的n的值。

<3>数据1...n:由于每一个数据是一个8位的数,所以每一个数据表示8个开关量的值,每一位为0表示对应的开关断开,为1表示闭合。

比如例子中,表示20号(索引号为19)开关闭合,21号断开,22闭合,23闭合,24断开,25断开,26闭合,27闭合...如果询问的开关量不是8的整倍数,那么最后一个字节的高位部分无意义,置为0。

<4>CRC校验同上。

2、读只可读数字量寄存器(输入状态):和读取线圈状态类似,只是第二个字节的命令号不再是1而是2。

3、写数字量(线圈状态):计算机发送命令:[设备地址] [命令号05] [需下置的寄存器地址高8位] [低8位] [下置的数据高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位]例:[11][05][00][AC][FF][00][CRC低][CRC高]意义如下:<1>设备地址和上面的相同。

<2>命令号:写数字量的命令号固定为05。

<3>需下置的寄存器地址高8位,低8位:表明了需要下置的开关的地址。

<4>下置的数据高8位,低8位:表明需要下置的开关量的状态。

例子中为把该开关闭合。

注意,此处只可以是[FF][00]表示闭合[00][00]表示断开,其他数值非法。

<5>注意此命令一条只能下置一个开关量的状态。

设备响应:如果成功把计算机发送的命令原样返回,否则不响应。

4、读可读写模拟量寄存器(保持寄存器):计算机发送命令:[设备地址] [命令号03] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位]例:[11][03][00][6B][00][03][CRC低][CRC高]意义如下:<1>设备地址和上面的相同。

<2>命令号:读模拟量的命令号固定为03。

<3>起始地址高8位、低8位:表示想读取的模拟量的起始地址(起始地址为0)。

比如例子中的起始地址为107。

<4>寄存器数高8位、低8位:表示从起始地址开始读多少个模拟量。

例子中为3个模拟量。

注意,在返回的信息中一个模拟量需要返回两个字节。

设备响应:[设备地址] [命令号03] [返回的字节个数][数据1][数据2]...[数据n][CRC校验的低8位] [CRC校验的高8位]例:[11][03][06][02][2B][00][00][00][64][CRC低][CRC高]意义如下:<1>设备地址和命令号和上面的相同。

相关文档
最新文档