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 通讯协议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双路控制仪为例)MODBUS_RTU 通讯协议(十进制格式)以实际通讯数据内容为准发送:1, 3, 0, 0, 0, 16, 68, 6,回收:1, 3, 32, 1, 0, 8, 0, 128, 12, 0, 0, 128, 12, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 255, 0, 255, 1, 85, 0, 0, 15, 0, 0, 15, 220, 139,仪表动态数据格式编号参数名称地址备注1 保留 00002 内部修改标志 00013 仪表类型 00024 第一通道实时值 00035 第二通道实时值 0005第一报警(AL1) 00076第二报警(AL2) 00087第三报警(AL3) 00098第四报警(AL4) 000A9该表的负数使用的是补码方式解析举例:-117的解析表示如下+117可表示为 0000 0000 0111 0101按位求反后为 1111 1111 1000 1010末位加1后为 1111 1111 1000 1011用十六进制数表示为 F F 8 B=FF8BH即 [-117]补。

modbus rtu 通讯参数

modbus rtu 通讯参数

modbus rtu 通讯参数摘要:1.modbus rtu通讯参数简介2.modbus rtu通讯参数的详细说明2.1 数据帧格式2.2 数据传输速率2.3 通讯距离2.4 通讯线缆类型2.5 流量控制和错误检测3.modbus rtu通讯参数的应用3.1 工业自动化3.2 智能建筑3.3 交通运输4.modbus rtu通讯参数的发展趋势4.1 高速通信4.2 远程控制4.3 物联网应用正文:Modbus RTU通讯参数是在modbus通讯协议的基础上,针对串行通信的一种具体实现。

它广泛应用于工业自动化、智能建筑和交通运输等领域,为设备之间的通讯提供了标准和规范。

Modbus RTU(Remote Terminal Unit)通讯参数是modbus协议在串行通信中的实施,它规定了数据帧格式、数据传输速率、通讯距离、通讯线缆类型以及流量控制和错误检测等方面的参数。

这些参数为不同厂商生产的设备之间的通讯提供了基础,使得设备可以方便地进行连接和通信。

2.Modbus RTU通讯参数的详细说明2.1 数据帧格式Modbus RTU通讯参数规定,数据帧由一个起始符、一个长度域、一个地址域、一个命令域、数据域、一个校验域和一个结束符组成。

这种格式可以确保数据在传输过程中的完整性和准确性。

2.2 数据传输速率Modbus RTU通讯参数支持多种数据传输速率,如9600bps、19200bps、38400bps等。

用户可以根据实际需求选择合适的传输速率。

2.3 通讯距离Modbus RTU通讯参数支持长距离通讯,通讯距离可达1200米。

在实际应用中,可以通过选择合适的通讯线缆和设备来达到更远的通讯距离。

2.4 通讯线缆类型Modbus RTU通讯参数支持多种通讯线缆类型,如双绞线、同轴电缆和光纤等。

用户可以根据实际环境和需求选择合适的线缆类型。

2.5 流量控制和错误检测Modbus RTU通讯参数支持硬件和软件流量控制,以及奇偶校验和CRC 校验等错误检测机制,以确保数据在传输过程中的可靠性和稳定性。

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

modbus-rtu标准

modbus-rtu标准

modbus-rtu标准Modbus是一种通信协议,常用于工业自动化领域中的数据通信。

Modbus RTU是Modbus的一种通信方式,它使用二进制形式传输数据。

本文将一步一步地回答有关Modbus RTU标准的问题,深入探讨其原理、特点以及应用。

一、Modbus RTU标准是什么?Modbus RTU标准是Modbus协议的一种实现方式,它采用二进制方式传输数据。

Modbus是一种开放的通信协议,最初由Modicon(现为施耐德电气)于1979年开发,并在2004年成为Modbus-IDA组织的推荐标准。

Modbus聚焦于串行通信,即通过串行接口传输数据。

Modbus RTU是Modbus协议中的一种最常见的串行形式。

二、Modbus RTU协议的工作原理是什么?Modbus RTU协议采用了主从结构,通常由一个主机和多个从机组成。

主机是负责发起通信请求的设备,而从机则负责接收和响应主机的请求。

协议中定义了一系列功能码,用于定义不同的操作类型,如读取数据、写入数据、读取设备状态等。

1. 数据格式:Modbus RTU协议通过串行通信传输数据,数据帧包括起始位、数据位(8位)、奇偶校验位(可选)和停止位。

数据包的最大长度为256个字节。

2. 通信速率:Modbus RTU支持多种通信速率,包括1200、2400、4800、9600、19200、38400、57600和115200等。

3. Modbus RTU消息格式:每个Modbus RTU消息包括从机地址、功能码、数据(可选)和校验和。

从机地址用于标识通信中的从机设备,功能码用于执行不同的操作。

校验和用于验证数据的完整性。

4. 响应处理:主机发送请求后,从机收到请求并进行处理。

从机在执行完请求之后发送响应消息给主机,响应消息中包含请求的响应数据。

三、Modbus RTU的特点是什么?Modbus RTU具有以下特点,这些特点使其在工业自动化领域广为应用:1. 简单易用:Modbus RTU协议的数据格式简单,易于实现和理解。

图文详解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 奇偶校验位奇偶校验位用于检测数据传输过程中的错误。

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协议定义了丰富的错误处理机制,包括校验错误、地址冲突、功能码错误等。

Modbus-RTU通信协议

Modbus-RTU通信协议

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

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

二、维博Modbus-RTU 协议该电源模块实现Modbus通信协议时,遵循Modbust通信过程,采用了MODBUS-RTU协议的命令子集,使用读寄存器命令(03)。

1.数据传输方式:异步10位——1位起始位,8位数据位,2位停止位,无校验位。

2.数据传输速率:波特率为9600BPS,不可修改.3.地址设置:1~40,用户可通过电源模块上的拨码开关随时进行设置。

4.主机请求数据报文格式:对应数据:地址功能码开始地址数据长度CRC5.电源模块响应要数命令报文格式:(N=6)地址范围:1-40 DAT1—输出电压DAT2—输出电流DAT3—0001过流0002过压,0000正常6.CRC校验●CRC码的计算方法是:1.预置1个16位的寄存器为十六进制FFFF(即全为1);称此寄存器为CRC寄存器;2.把第一个8位二进制数据(既通讯信息帧的第一个字节)与16位的CRC寄存器的低8位相异或,把结果放于CRC寄存器;3.把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检查右移后的移出位;4.如果移出位为0:重复第3步(再次右移一位);如果移出位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或;5.重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;6.重复步骤2到步骤5,进行通讯信息帧下一个字节的处理;7.将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低字节进行交换;8.最后得到的CRC寄存器内容即为:CRC码。

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):用于读取从机中的保持寄存器。

modbusrtu标准

modbusrtu标准

modbus-rtu标准Modbus-RTU(Remote Terminal Unit)是一种基于串行通信的工业通信协议,用于在自动化系统中传输数据。

以下是关于Modbus-RTU标准的详细说明:1. 物理层:- 通信接口:Modbus-RTU使用串行通信接口,常见的接口包括RS-232、RS-485等。

- 传输速率:通信速率可以根据具体需求设置,常见的速率包括9600、19200、38400等。

- 数据位:通常为8位。

- 停止位:通常为1位。

- 奇偶校验:通常为无校验。

2. 数据帧格式:- 起始位:一个起始位,用于标识数据帧的开始。

- 地址:一个8位的地址字段,用于指定从站设备的地址。

- 功能码:一个8位的功能码字段,用于指定从站设备执行的功能。

- 数据:可变长度的数据字段,用于传输具体的数据。

- CRC校验:一个16位的循环冗余校验字段,用于检测数据的完整性。

3. 功能码:- 读取线圈状态:功能码为01,用于读取从站设备的线圈状态。

- 读取输入状态:功能码为02,用于读取从站设备的输入状态。

- 读取保持寄存器:功能码为03,用于读取从站设备的保持寄存器。

- 读取输入寄存器:功能码为04,用于读取从站设备的输入寄存器。

- 写单个线圈:功能码为05,用于写入从站设备的单个线圈状态。

- 写单个寄存器:功能码为06,用于写入从站设备的单个保持寄存器。

- 写多个线圈:功能码为15,用于写入从站设备的多个线圈状态。

- 写多个寄存器:功能码为16,用于写入从站设备的多个保持寄存器。

4. 数据格式:- 线圈状态和输入状态:以位为单位,每个位代表一个线圈或输入的状态(0或1)。

- 保持寄存器和输入寄存器:以字为单位,每个字包含16位数据。

5. 通信流程:- 主站发送请求:主站向从站发送请求数据帧,包括从站地址、功能码和相关参数。

- 从站响应请求:从站接收到请求后,执行相应的功能,并将结果以响应数据帧的形式返回给主站。

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

通讯协议MODBUS—RTU ~~经典

通讯协议MODBUS—RTU ~~经典
<4>CRC 校验同上。
5、写单个保持寄存器:
上位机计算机发送命令:
需下置的寄
设备地址 功能码 存器地址高
8位
11H
06H
00H
需下置的寄 存器地址低
8位 01H
下置的数 据高 8 位
00H
下置的数 CRC 校验 CRC 校验 据低 8 位 的低 8 位 的高 8 位
03H
CRC 低 CRC 高
意义如下: <1>设备地址和上面的相同。 <2>功能码:写寄存器的功能码固定为 06。 <3>需下置的寄存器地址高 8 位,低 8 位:表明了需要下置的寄存器的
例子中为 3 个寄存器。注意,在返回的信息中一个寄存器需要返回两个字节。
设备响应:
设备地址 功能码
11H
03H
返回的 字节个

06H
数据 1
02H
数据 2
2BH
数据
数据 数据 CRC 校验 CRC 校验
数据 4
3
5 6 的低 8 位 的高 8 位
00H 00H 00H 64H CRC 低 CRC 高
中为把该开关闭合。注意,此处只可以是 [FF][00]表示输出闭合 ;[00][00]
表示输出断开,其他数值非法。
<5>注意此命令一条只能下置一个开关量的状态。
设备响应:
设备地址
功能码
需下置的寄 需下置的寄
存器地址高 存器地址低
8位
8位
下置的数 据高 8 位
11H
05H
00H
ACH
FFH
下置的数 CRC 校验 CRC 校验 据低 8 位 的低 8 位 的高 8 位

ModBusRTU通讯协议

ModBusRTU通讯协议

ModBusRTU通讯协议协议名称:ModBusRTU通讯协议一、引言ModBusRTU通讯协议是一种用于串行通信的通信协议,常用于工业自动化领域。

本协议旨在规定ModBusRTU通讯协议的标准格式,以确保设备之间的通信能够准确、高效地进行。

二、协议结构ModBusRTU通讯协议采用了简单的主从结构,其中包括主站(Master)和从站(Slave)。

主站负责发起通信请求,而从站则负责响应主站的请求。

三、协议帧格式ModBusRTU通讯协议的帧格式如下:1. 起始位(Start Bit):占据一个字节的最低位,用于标识一个帧的开始。

2. 地址位(Address):占据一个字节,用于标识从站的地址。

3. 功能码(Function Code):占据一个字节,用于标识主站请求的功能。

4. 数据域(Data Field):占据可变长度的字节,用于传输数据。

5. 校验位(Checksum):占据两个字节,用于校验帧的完整性。

6. 停止位(Stop Bit):占据一个字节,用于标识一个帧的结束。

四、功能码ModBusRTU通讯协议定义了一系列功能码,用于标识主站请求的功能。

以下为常用的功能码:1. 读取线圈状态(Read Coil Status):用于读取从站的线圈状态。

2. 读取输入状态(Read Input Status):用于读取从站的输入状态。

3. 读取保持寄存器(Read Holding Registers):用于读取从站的保持寄存器。

4. 读取输入寄存器(Read Input Registers):用于读取从站的输入寄存器。

5. 强制单线圈(Force Single Coil):用于强制从站的单线圈状态。

6. 预置多个寄存器(Preset Multiple Registers):用于预置从站的多个寄存器。

五、通信流程ModBusRTU通讯协议的通信流程如下:1. 主站向从站发送请求帧,包括从站地址、功能码和数据域。

MODBUS-RTU通讯协议

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

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

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

发生任何错误都不会有成功的响应。

1.2.1信息帧特注:Modbus信息帧所允许的最大长度为256个字节,即N的范围是大于等于零且小于等于252(N{0,252})。

即,所有的数据一共256个,数据剩下253个。

1.2.2地址(Address)域信息帧地址域(信息地址)在帧的开始部分,由8位组成,有效的从机设备地址范围0-247(十进制),各从机设备的寻址范围为1-247。

主机把从机地址放入信息帧的地址区,并向从机寻址。

从机响应时,把自己的地址放入响应信息的地址区,让主机识别已作出响应的从机地址。

地址0为广播地址,所有从机均能识别。

当Modbus协议用于高级网络时,则不允许广播或其它方式替代。

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

有效码范围1-225(十进制) ,有些代码是适用于所有控制器,有些适应于某种控制器,还有些保留以备后用。

有关功能代替码的全部内容见附录A。

当主机向从句发送信息时,功能代码向从机说明应执行的动作。

如读一组离散式线圈或输入信号的ON/OFF状态,读一组寄存器的数据,读从机的诊断状态,写线圈(或寄存器),允许下截、记录、确认从机内的程序等。

当从机响应主机时,功能代码可说明从机正常响应或出现错误(即不正常响应),正常响应时,从句简单返回原始功能代码;不正常响应时,从机返回与原始代码相等效的一个码,并把最高有效位设定为“1”。

如,主机要求从机读一组保持寄存器时,则发送信息的功能码为:0000 0011 (十六进制03)若从机正确接收请求的动作信息后,则返回相同的代码值作为正常响应。

发现错时,则返回一个不正常响信息:1000 0011(十六进制83)从机对功能代码作为了修改,此外,还把一个特殊码放入响应信息的数据区中,告诉主机出现的错误类型和不正常响应的原因,不正常响应见附录B。

主机设备的应用程序负责处理不正常响应,典型处理过程是主机把对信息的测试和诊断送给从机,并通知操作者。

表1 – 1列出了所有设备常用的功能码、它们的意义及它们的初始功能。

表1 – 1 常用功能码1.2.4数据域数据域包含了终端执行特定功能所需要的数据或者终端响应查询时采集到的数据。

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

他由数据区有2个16进制的数据位(2的8次方256),数据范围为00-FF(16进制)。

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

若无错误出现,从机向主机的响应信息中包含了请求数据,若有错误出现,则数据中有一个不正常代码,使主机能判断并作出下一步的动作。

数据区的长度可为“零”以表示某类信息。

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

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

错误检测域包含一16Bits值(用两个8位的字符来实现)。

错误检测域的内容是通过对消息内容进行循环冗长检测方法得出的。

CRC域附加在消息的最后,添加时先是低字节然后是高字节。

故CRC的高位字节是发送消息的最后一个字节。

1.2.6字符的连续传输当消息在标准的Modbus系列网络传输时,每个字符或字节按由左到右的次序方式发送:最低有效位(LSB)...最高有效位(MSB)。

位的序列是:有奇偶校验无奇偶校验图1 –2 . 位顺序(RTU)1.3错误检测1、奇偶校验用户可以配置控制器是奇或偶校验,或无校验。

这将决定了每个字符中的奇偶校验位是如何设置的。

如果指定了奇或偶校验,“1”的位数将算到每个字符的位数中(ASCII模式7个数据位,RTU中8个数据位)。

例如RTU字符帧中包含以下8个数据位:1 1 0 0 0 1 0 1 整个“1”的数目是4个。

如果便用了偶校验,帧的奇偶校验位将是0,便得整个“1”的个数仍是4个。

如果便用了奇校验,帧的奇偶校验位将是1,便得整个“1”的个数是5个。

如果没有指定奇偶校验位,传输时就没有校验位,也不进行校验检测。

代替一附加的停止位填充至要传输的字符帧中。

2、CRC检测RTU方式时,采用CRC方法计算错误校验码,CRC校验传送的全部数据。

它忽略信息中单个字符数据的奇偶校验方法。

循环冗余校验(CRC)域占用两个字节,包含了一个16位的二进制值。

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

CRC开始时先把寄存器的16位全部置成“1”,然后把相邻2个8位字节的数据放入当前寄存器中,只有每个字符的8位数据用作产生CRC,起始位,停止位和奇偶校验位不加到CRC中。

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

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

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

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

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

4、如果最低位为0:重复第3步(下一次移位)。

如果最低位为1:将CRC寄存器与一个预设的固定值(0A001H)进行异或运算。

5、重复第3步和第4步直到8次移位。

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

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

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

CRC值附加到信息时,低位在先,高位在后。

查阅附录C中的一个实例,它详细说明了CRC的校验。

第二章Modbus数据和控制功能详解Modbus 信息中的所有数据地址以零作为基准,各项数据的第一个数据地址的编号为0。

若无特殊说明在此节文中用+进制值表示,图中的数据区则用十六进制表示。

图2--1为一个例子,说明了Modbus的查询信息,图2--2为正常响应的例子,这两例子中的数据均是16进制的,也表示了以RTU方式构成数据帧的方法。

主机查询是读保持寄存器,被请求的从机地址是06,读取的数据来自地址40108保持寄有器。

注意,该信息规定了寄存器的起始地址为0107 (006BH)。

从机响应返回该功能代码,说明是正常响应,字节数“Byle count”中说明有多少个8位字节被返回。

它表明了附在数据区中8位字节的数量,当在缓冲区组织响应信息时,“字节数”区域中的值应与该信息中数据区的字节数相等。

如RTU方式时,63H 用一个字节(01100011)发送。

8个位为一个单位计算“字节数”,它忽略了信息帧用组成的方法。

2.1读取线圈状态(功能码01)读取从机离散量输出口(DO,0X类型)的ON/OFF 状态,不支持广播。

查询查询信息规定了要读的起始线圈和线圈量,线圈的起始地址为0000H,1-16个线圈的寻址地址分为0000H –0015H(DO1=0000H,DO2=0001H,依此类推)。

图2 – 3 的例子是从地址为17的从机读取DO1至DO6的状态。

响应响应信息中的各线圈的状态与数据区的每一位的值相对应,即每个DO占用一位(1 = ON, 0 = OFF),第一个数据字节的LSB为查询中的寻址地址,其他的线圈按顺序在该字节中由低位向高位排列,直至8个为止,下一个字节也是从低位向高位排例。

若返回的线圈数不是8的倍数,则在最后的数据字节中的剩余位至字节的最高位全部填0,字节数区说明全部数据的字节数。

相关文档
最新文档