ModbusRTU协议文档(中文)

合集下载

MODBUS-RTU通讯协议书范本

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为阶码。

M为尾数的小数点部分。

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]补。

ModBusRTU通讯协议

ModBusRTU通讯协议

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

本协议旨在规范ModBusRTU通讯协议的格式、数据结构和通信流程,以确保设备间的稳定、可靠的通信。

二、协议概述ModBusRTU通讯协议基于串行通信,使用二进制编码,采用主从结构进行通信。

主设备负责发起通信请求,从设备负责响应请求并返回数据。

通信数据以字节为单位进行传输,具有较高的传输效率和可靠性。

三、通信格式1. 物理层ModBusRTU通讯协议使用RS-485标准进行物理层通信,支持多主设备和多从设备的连接。

通信速率可根据实际需求设置,常见的速率包括9600bps、19200bps、38400bps等。

2. 帧格式ModBusRTU通讯协议的帧由起始符、地址字段、功能码、数据字段、校验码和结束符组成。

具体格式如下:- 起始符:占据一个字节,固定为0x3A。

- 地址字段:占据一个字节,表示从设备的地址。

- 功能码:占据一个字节,表示通信请求的功能类型。

- 数据字段:占据n个字节,根据功能码的不同而不同。

- 校验码:占据两个字节,用于校验帧的完整性。

- 结束符:占据一个字节,固定为0x0D。

四、功能码ModBusRTU通讯协议定义了一系列功能码,用于区分不同的通信请求。

以下列举了部分常用的功能码及其功能描述:1. 读取线圈状态(功能码:0x01):用于读取从设备的线圈状态,返回线圈的开关状态。

2. 读取输入状态(功能码:0x02):用于读取从设备的输入状态,返回输入信号的状态。

3. 读取保持寄存器(功能码:0x03):用于读取从设备的保持寄存器的值。

4. 读取输入寄存器(功能码:0x04):用于读取从设备的输入寄存器的值。

5. 写单个线圈(功能码:0x05):用于控制从设备的单个线圈的开关状态。

6. 写单个寄存器(功能码:0x06):用于向从设备的单个寄存器写入数据。

MODBUS-RTU协议

MODBUS-RTU协议

MODBUS-RTU协议1.数据格式说明1、1通讯模式本仪表采用MODBUS RTU格式。

协议用于主从查询模式,进行数据通讯。

通讯流程如下图。

在RTU模式下,数据格式说明如下。

1、2数据格式数据格式为n,8,1(1个起始位、8个数据位、无校验、1个停止位)波特率可选五种,1200、2400、4800、9600、19200其中:T1、T2、T3、T4为每帧之间的时间间隔,两帧之间的传输必须大于间隔时间。

1、3地址协议中规定仪表的地址为“01-99”,“0”地址用于广播,本协议不支持广播,其余地址保留。

2.命令说明命令03(HEX)读单个或多个寄存器命令06(HEX)写单个寄存器此命令包含在“命令10”中命令10(HEX)写多个寄存器此命令包含“命令6”2.2 数据格式协议中的数据包括:16进制数、整数、BCD码、浮点数寄存器地址下列表中的属性指数据的读写属性,R-只读;W-写;R/W-既可读,也可写入。

单精度浮点数SINGLE格式为IEEE754,数据由低到高。

32位浮点数共计32位,折合4字节。

由最高到最低位分别是第31、30、29、……、0位。

31 30-23 22-0S 阶码尾数31位是符号位(S),1表示该数为负,0反之;30-23位,一共8位是阶码;22-0位,一共23位是尾数。

●BCD码格式有两种:格式2: (内部应用)6字节BCD编码,表示固定小数点的数据,数据低→高,如小数点默认为第9位数的后面。

●无符号整数Uint为0-65536。

各指令的格式及示例见下面的说明。

错误响应举例3.数据项定义记录信息表4.版本5.参考Modicon-Modbus Protocol Reference Guide (PI-MBUS-300);REV J;June,1996 6.自定义RS485通讯协议通讯线路:采用RS485数据通讯线路,半双工通讯通讯协议:(1200 2400 4800 9600 19200),NONE/0DD/EVEN,8位数据,1停止位读瞬时流量、累积流量1.主机命令格式2.设备回应格式注:流量计返回数据格式定义:瞬时流量: xxxxxxx 7字节累积流量: xxxxxxxxxxx 11字节读流量数据举例(以下数据均为十六进制):指令包: 5a 包头32 34 流量计485地址返回包: 3d 包头32 34 流量计485地址31 32 33 2e 34 35 36 瞬时流量=123.456 m3/h 20 20 20 20 20 31 32 33 34 2e 35 累积流量=1234.5 m303 d3 累加和高位、累加和低位ff 结束符。

Modbus RTU通讯协议

Modbus RTU通讯协议

00方过电–
– 0-情0 –
00方遥电–
– 护-暂暂范–
00方量电–
– 0-情0 –
00方釐电–
– 0-情0 –
00方f电–
– 度00-度护0–
00暂0电–
– 0-情0 –
00暂度电–
– 护护-暂暂–
00暂必电– 00暂情电–
– 0-情0 –
-
情-暂暂范–

00暂意电– 00暂护电–

-
护– 0密护-暂密暂A–


度控 点置点
点置点
––


器0

0
情商
器检–
–– 度 点置点
A00度 度0度0–0000–0000–000度
––

情意


––




––

点置点
点置点 ––


00护0电–
节A漏––––
0-暂暂密暂暂码范–
00护度电–
节漏点––––
0-暂暂密暂暂码范–
00护必电–
节点A––––
0-暂暂密暂暂码范–
00护情电–
节0–––
0-暂暂密暂范–

00护意电–
00护护电–
00护控电–
00护操电–
00护方电–
00护暂电–
00护跳电–
00护过电–
2345H
23H
45H
PLC
CRC







度– 0 必护护–
X


度–
0必电–

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协议1. 简介modbusrtu协议是一种串行通信协议,广泛应用于工业自动化领域。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

MODBUS RTU 中文使用说明书

MODBUS RTU 中文使用说明书

7 Modbus RTU的冗余型 ·····························································································15
8 连接状态和故障信号··································································································16
3 技术数据及功能···········································································································7
3.1 带Modbus RTU总线接口的SIPOS 5 Flash电动执行机构··························································7 3.2 带Modbus 总线接口的SIPOS 5 Flash电动执行机构 – 基本功能···············································8 3.3 带Modbus总线接口的SIPOS 5 Flash电动执行机构 – 附加的功能 ··········································10 3.4 电气连接(铜缆或光纤) ········································································································11
4 设置Modbus RTU的通讯参数···················································································13

ModBusRTU通讯协议

ModBusRTU通讯协议

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协议中文版【完整版】

Modbus协议中文版【完整版】

127 110 100
公共功能码
用户定义功能码 公共功能码
72 65
用户定义功能码 公共功能码
1
图 9:MODBUS 功能码分类
9
GB/T ××××—××××
在操作中检测的差错 启动差错
接收响应 差错码 异常码
图 5 MODBUS 事务处理(异常响应) F 注释:需要管理超时,以便明确地等待可能不会出现的应答。 串行链路上第一个 MODBUS 执行的长度约束限制了 MODBUS PDU 大小 (最大 RS485ADU=256 字节) 。 因此,对串行链路通信来说,MODBUS PDU=256-服务器地址(1 字节)-CRC(2 字节)=253 字节。 从而: RS232 / RS485 ADU = 253 字节+服务器地址(1 byte) + CRC (2 字节) = 256 字节。 TCP MODBUS ADU = 249 字节+ MBAP (7 字节) = 256 字节。 MODBUS 协议定义了三种 PDU。它们是: l MODBUS 请求 PDU,mb_req_pdu l MODBUS 响应 PDU,mb_rsp_pdu l MODBUS 异常响应 PDU,mb_excep_rsp_pdu 定义 mb_req_pdu 为: mb_req_pdu = { function_code, request_data} ,其中 function_code - [1 个字节] MODBUS 功能码 request_data - [n 个字节],这个域与功能码有关,并且通常包括诸如可变参考、变量、数据偏移 量、子功能码等信息。 定义 mb_rsp_pdu 为: mb_rsp_pdu = { function_code, response_ data} ,其中 function_code - [1 个字节] MODBUS 功能码 response_data - [n 个字节],这个域与功能码有关,并且通常包括诸如可变参考、变量、数据偏 移量、子功能码等信息。 定义 mb_excep_rsp_pdu 为: mb_excep_rsp_pdu = { function_code, request_data} ,其中 function_code - [1 个字节] MODBUS 功能码 + 0x80 exception_code - [1 个字节],在下表中定义了 MODBUS 异常码。 4.2 数据编码 MODBUS 使用一个‘big-Endian’ 表示地址和数据项。这意味着当发射多个字节时,首先发 送最高有效位。例如: 寄存器大小 值

MODBUS-RTU 协议说明

MODBUS-RTU 协议说明

MODBUS_RTU 协议说明 02 10 00 00 00 10 20 3F FD 3F FD 3F FD 3F FD 3F FD 3F FD 3F FD 3F FD 3F FD 3F FD 3F FD 00 00 24 4C 02 63 9B 5F 4D 58 34 E1上面是一帧数据 其中3F FD 代表传感器的值 16381 传感器数量为12个3F FD 结束后的 00 00是预留的命令 暂时不用管00 00后面的24 4C =9292 实际是日期 对应于自 1990-01-01 以来的天数粗略的算9292/365=25年 +1990年=2015年 今年 精确的算 能算出日期 日期后面的 02 63 9B 5F 存储从当天 0:00 h 开始的毫秒数(16#02 63 9B 5F = 40082271 )/1000)/3600=11小时 代表11点左右 精确的算可以算出具体时间然后4D 58 是本组数据的采集总时间 19800ms 这个值基本没变化 但计算还是保留 关于时间计算我的意见是 收到的时间 只作为一种数据更新的标志 服务器计算 还是按自己实际的时间周期来计算有了时间更新标志 好处是 当出现下位机发送的数据中断一段时间 服务器可以做一些判断16j# 02 10 0000001020 ......CRC 10# 16 40001 1632 32个字节 含义地址模式强写起始目标地址 目标地址LEN字节长度写入内容校验周期 删除周期 数据长度 程序判断标志实时流量20s 每周 周二删 凌晨 4320*7 week=1 h=0 min=0 小时流量 h每月 二号删 凌晨24*30 day=1 h=0 min=0 日均流量day 每年 元月二号删1*365Month=1 day=1 h=0 min=0。

ModbusRTU协议文档

ModbusRTU协议文档

Modbus Message FormattingThe MODBUS protocol describes an industrial communications and distributed control system developed by Gould-Modicon to integrate PLC’s, computers, terminals, and other monitoring, sensing, and control devices. MODBUS is a Master/Slave communications protocol, whereby one device, (the Master), controls all serial activity by selectively polling one or more slave devices. The protocol provides for one master device and up to 247 slave devices on a common line. Each device is assigned an address to distinguish it from all other connected devices.Only the master initiates a transaction. Transactions are either a query/response type, (only a single slave is address), or a broadcast/no response type, (all slaves are addressed). A transaction comprises a single query and single response frame or a single broadcast frame.Certain characteristics of the MODBUS protocol are fixed, such as the frame format, frame sequences, handling of communications errors and exception conditions, and the functions performed.Other characteristics are user selectable. These include a choice of transmission media, baud rate, character parity, number of stop bits, and the transmission modes, (RTU or ASCII). The user selected parameters are set, (hardwired or programmed), at each station. These parameters cannot be changed while the system is running.Modes of TransmissionThe mode of transmission is the structure of the individual units of information within a message, and the numbering system used to transmit the data. Two modes of transmission are available for use in a MODBUS system. Both modes provide the same capabilities for communicating with PLC slaves; the mode is selected depending on the equipment used as a MODBUS Master. One mode must be used per MODBUS system; mixing of modes is not allowed. The modes are ASCII (American Standard Code for Information Interchange), and RTU, (Remote Terminal Unit.) The characteristics of the two transmission modes are defined below:Characteristic ASCII (7-bit) RTU (8-bit)Coding System hexadecimal (uses ASCIIprintable characters (0-9, A-F)8-bit binaryNumber of bits per character:start bits 1 1data bits (least significant first) 7 8parity (optional) 1 1(1-bit sent for even or odd parity, no bits for no parity) (1-bit sent for even or odd parity, no bits for no parity)stop bits 1 or 2 1 or 2Error Checking LRC (Longitudinal RedundancyCheck) CRC (Cyclical Redundancy Check)ASCII printable characters are easy to view when troubleshooting and this mode is suited to computer masters programmed in a high level language, such as FORTRAN, as well as PLC masters. RTU is suited to computer masters programmed in a machine language, as well as PLC masters.In the RTU mode, data is sent in 8-bit binary characters. In the ASCII mode, each RTU character is first divided into two 4-bit parts, (high order and low order), and then represented by the hexadecimal equivalent. The ASCII characters representing the hexadecimal characters are used to construct themessage. The ASCII mode uses twice as many characters as the RTU mode, but decoding handling the ASCII data is easier. Additionally, in the RTU mode, message characters must be transmitted in a continuous stream. In the ASCII mode, breaks of up to one second can occur between characters to allow for a relatively slower master.Error DetectionThere are two types of errors which may occur in a communications system: transmission errors and programming errors. The MODBUS system has specific methods for dealing with either type of error.Communications errors usually consist of a changed bit or bits within a message. The most frequent cause of communications errors is noise: unwanted electrical signals in a communications channel. These signals occur because of electrical interference from machinery, damage to the communications channel, impulse noise, (spikes), etc. Communications errors are detected by character framing, a parity check, and a redundancy check.When the character framing, parity, or redundancy checks detect a communications error, processing of the message stops. A PLC slave will not act on or respond to the message. (The same occurs if a non-existent slave address is used.)When a communications error occurs, the message is unreliable. The PLC slave cannot know for sure if this message was intended for it. So the CPU might be answering a message which was not its message to begin with. It is essential to program the MODBUS Master to assume a communications error has occurred if there is no response in a reasonable time. The length of this time depends upon the baud rate, type of message, and scan time of the PLC slave. Once this time is determined, the master may be programmed to automatically retransmit the message.The MODBUS system provides several levels of error checking to assure the quality of the data transmission. To detect multibit errors where the parity has not changed, the system uses redundancy checks: Cyclical Redundancy Check, (CRC), for the RTU mode and Longitudinal Redundancy Check, (LRC), for the ASCII mode.CRC-16 Cyclic Redundancy CheckThe CRC-16 error check sequence is implemented as described in the following paragraphs.The message, (data bits only, disregarding start/stop and parity bits), is considered as one continuous binary number whose most significant bit, (MSB), is transmitted first. The message is pre-multiplied byX**16, (shifted left 16 bits), then divided by X**16 + X**15 + X**2 + 1 expressed as a binary number (11000000000000101). The integer quotient digits are ignored and the 16-bit remainder (initialized to all ones at the start to avoid the case where all zeroes being an accepted message), is appended to the message, (MSB first), as the two CRC check bytes. The resulting message including the CRC, when divided by the same polynomial (X**16 + X**15 + X**2 + 1), at the receiver will give a zero remainder if no errors have occurred. (The receiving unit recalculates the CRC and compares it to the transmitted CRC). All arithmetic is performed modulo two, (no carries). An example of the CRC-16 error check for message HEX 0207, (address 2, function 7 or a status request to slave number 2) follows:The device used to serialize the data for transmission will send the conventional LSB or right-most bit of each character first. In generating the CRC, the first bit transmitted is defined as the MSB of the dividend. For convenience then, and since there are no carries used in arithmetic, let’s assume while computing the CRC that the MSB is on the right. To be consistent, the bit order of the generating polynomial must be reversed. The MSB of the polynomial is dropped since it affects only the quotient and not the remainder. This yields 1010 0000 0000 0001, (HEX A001).. Note that this reversal of the bit order will have no effect whatever on the interpretation or the bit order of characters external to the CRC calculations.The step by step procedure to form the CRC-16 is as follows:1. Load a 16-bit register with all 1’s.2. Exclusive OR the first 8-bit byte with the high order byte of the 16-bit register, putting the resultin the 16-bit register.3. Shift the 16-bit register one bit to the right.4a. If the bit shifted out to the right is one, exclusive OR the generating polynomial 1010 0000 00000001 with the 16-bit register.4b. If the bit shifted out to the right is zero; return to step 3.5. Repeat steps 3 and 4 until 8 shifts have been performed.6. Exclusive OR the next 8-bit byte with the 16-bit register.7. Repeat step 3 through 6 until all bytes of the message have been exclusive OR’rd with the 16-bitregister and shifted 8 times.8. The contents of the 16-bit register are the 2 byte CRC error check and is added to the messagemost significant bits first.FlagMSBREGISTER16-BITOR) 1111 1111 1111 1111(Exclusive00000010021111 1111 1111 11011 0111 1111 1111 1110 1ShiftPolynomial 1010 0000 0000 00011101 1111 1111 11112 0110 1111 1111 1111 1ShiftPolynomial 1010 0000 0000 00011100 1111 1111 11103 0110 0111 1111 1111 0Shift4 0011 0011 1111 1111 1ShiftPolynomial 1010 0000 0000 00011001 0011 1111 11105 0100 1001 1111 1111 0Shift6 0010 0100 1111 1111 1ShiftPolynomial 1010 0000 0000 00011000 0100 1111 11107 0100 0010 0111 1111 0Shift8 0010 0001 0011 1111 1ShiftPolynomial 1010 0000 0000 00011000 0001 0011 111001110700001000 0001 0011 1001Shift1 0100 0000 1001 1100 1Polynomial 1010 0000 0000 00011110 0000 1001 1101 Shift2 0111 0000 0100 1110 1Polynomial 1010 0000 0000 00011101 0000 0010 1111 Shift3 0110 1000 0010 0111 1Polynommial 1010 0000 0000 00011100 1000 0010 0110 Shift4 0110 0100 0001 0011 05 0011 0010 0000 1001 1ShiftPolynomial 1010 0000 0000 00011001 0010 0000 10006 0100 1001 0000 0100 0Shift7 0010 0100 1000 0010 0Shift8 0001 0010 0100 0001 0ShiftHEX 12 HEX 41TRANSMITTED MESSAGE WITH CRC-16(MESSAGE SHIFTED TO RIGHT TO TRANSMIT)12 41 07 020001 0010 0100 0001 0000 0111 0000 0010LRC (Longitudinal Redundancy Check)The error check sequence for the ASCII mode is LRC. The error check is an 8-bit binary numberrepresented and transmitted as two ASCII hexadecimal (hex) characters. The error check is produced byconverting the hex characters to binary, adding the binary characters without wraparound carry, and two’s complementing the result. At the received end the LRC is recalculated and compared to the sent LRC.The colon, CR, LF, and any imbedded non-ASCII hex characters are ignored in calculating the LRC.Address 02 000000100001 Function 01 0000Start Add H.O. 00 0000 0000Start Add L.O. 00 0000 0000Quantity of Pts 00 0000 000008 0000100010110000Sum010011111’scomplement0001 +1 0000 Error Check F5 2’s complement 1111 0101MODBUS Message TypesASCII FramingFraming in ASCII Transmission mode is accomplished by the use of the unique colon, (:), character to indicate the beginning of frame and carriage return/line feed, (CRLF), to delineate end of frame. The line feed character also serves as a synchronizing character which indicates that the transmitting station is ready to receive an immediate reply.BEGIN FRAME ADDRESS FUNCTION DATA ERROR CHECK EOF READY TORECEIVE: 2-CHAR 16-BIT 2-CHAR 16-BITSN X 4-CHAR N X 16-BITS 2-CHAR 16-BITS CR LFRTU FramingFrame synchronization can be maintained in RTU transmission mode only by simulating a synchronous message. The receiving device monitors the elapsed time between receipt of characters. If three and one-half character times elapse without a new character or completion of the frame, then the device flushes the frame and assumes that the next byte received will be an address.T1,T2,T3 ADDRESS FUNCTION DATA CHECK T1,T2,T38-BITS 8-BITS N X 8-BITS 16-BITSAddress FieldThe address field immediately follows the beginning of frame and consists of 8-bits, (RTU), or 2 characters, (ASCII). These bits indicate the user assigned address of the slave device that is to receive the message sent by the attached master.Each slave must be assigned a unique address and only the addressed slave will respond to a query that contains its address. When the slave sends a response, the slave address informs the master which slave is communicating. In a broadcast message, an address of 0 is used. All slaves interpret this as an instruction to read and take action on the message, but not to issue a response message.Function FieldThe Function Code field tells the addressed slave what function to perform. MODBUS function codes are specifically designed for interacting with a PLC on the MODBUS industrial communications system. The high order bit in this field is set by the slave device to indicate an exception condition in the response message. If no exceptions exist, the high-order bit is maintained as zero in the response message.The following table lists those functions supported by various WinTECH Software Applications: CODE MEANING ACTION01 READ COIL STATUS Obtains current status, (ON/OFF), of agroup of logic coils.02 READ INPUT STATUS Obtains current status, (ON/OFF), of agroup of discrete inputs.03 READ HOLDING REGISTER Obtains current binary value in one ormore holding registers.04 READ INPUT REGISTER Obtains current binary value in one ormore input registers.05 FORCE SINGLE COIL Force logic coil to a state of ON orOFF.06 PRESET SINGLE REGISTER Place a specific binary value into aholding register.15 WRITE MULTIPLE COILS Force a group of logic coils to adefined state.16 PRESET MULTIPLE REGISTERS Place specific binary values into agroup of holding registers.Data FieldThe data field contains information needed by the slave to perform the specific function or it contains data collected by the slave in response to a query. This information may be values, address references, or limits. For example, the function code tells the slave to read a holding register, and the data field is needed to indicate which register to start at and how many to read. The imbedded address and data information varies with the type and capacity of the PLC associated with the slave.Error Check FieldThis field allows the master and slave devices to check a message for errors in transmission. Sometimes, because of electrical noise or other interference, a message may be changed slightly while its on its way from one device to another. The error checking assures hat the slave or master does not react to messages that have changed during transmission. This increases the safety and the efficiency of the MODBUS system.The error check field uses a Longitudinal Redundancy Check, (LRC), in the ASCII mode of transmission, and a CRC-16 check in the RTU mode.Exception ResponsesProgramming or operation errors are those involving illegal data in a message, no response from the PLC to its interface unit, or difficulty in communicating with a slave. These errors result in an exception response from either the master computer software or the PLC slave, depending on the type of error. The exception response codes are listed below. When a PLC slave detects one of these errors, it sends a response message to the master consisting of the slave address, function code, error code, and error check fields. To indicate that the response is a notification of an error, the high-order bit of the function code is set to one.CODE NAME MEANING01 ILLEGAL FUNCTION The message function received is not an allowableaction for the addressed slave.02 ILLEGAL DATA ADDRESS The address referenced in the data field is not anallowable address for the addressed slave device.03 ILLEGAL DATA VALUE The value referenced in the data field is not allowablein the addressed slave location.04 FAILURE IN ASSOCIATEDDEVICE The slave’s PC has failed to respond to a message or an abortive error occurred.05 ACKNOWLEDGE The slave PLC has accepted and is processing the longduration program command.06 BUSY,REJECTED MESSAGE The message was received without error, but the PLC is engaged in processing a long duration program command.07 NAK-NEGATIVEACKNOWLEDGMENT The PROGRAM function just requested could not be performed.This function allows the user to obtain the ON/OFF status of logic coils used to control discrete outputs from the addressed slave only. Broadcast mode is not supported with this function code. In addition to the slave address and function fields, the message requires that the information field contain the initial coil address to be read, (Starting Address), and the number of locations that will be interrogated to obtain status data.The addressing allows up to 2000 coils to be obtained at each request; however, the specific slave device may have restrictions that lower the maximum quantity. The coils are numbered from zero; (coil number 1 is address 0000, coil number 2 is address 0001, etc.)The following is an example of a message to Read Output Status Coils 20-56 from slave device number 17.ADDR FUNC DATASTARTPT HO DATASTARTPT LODATA #OF PTSHODATA #OF PTSLOERRORCHECKFIELD11 01 00 13 00 25 B6An example response to Read Output Status is shown below. The data is packed one bit for each coil. The response includes the slave address, function code, quantity of data characters, and error checking. Data will be packed with one bit with one bit for each coil, (1 = ON, 0 = OFF). The low order bit of the first character contains the addressed coil, and the remainder follow. For coil quantities that are not even multiples of eight, the last characters will be filled in with zeroes at the high end. The quantity of data characters is always specified as the quantity of RTU characters, i.e., the number is the same whether RTU or ASCII is used.ADDR FUNC BYTECOUNT DATACOILSTATUS20-27DATACOILSTATUS28-35DATACOILSTATUS36-43DATACOILSTATUS44-51DATACOILSTATUS52-56ERRORCHECKFIELD11 01 05 CD 6B B2 0E 1B D6 The status of coils 20-27 is shown as CD(HEX) = 1100 1101(Binary). Reading left to right, this showsthat coils 27,26,23,22, and 20 are all on. The other coil data bytes are decoded similarly.This function allows the user to obtain the ON/OFF status of discrete inputs in the addressed slave. Broadcast mode is not supported. In addition to the slave address and function code fields, this message requires that the information field contain the initial input address to be read, (Starting Address) and the number of locations that will be interrogated to obtain the status data.The following is an example of a message to Read Input Status Coils 10197-10218 from slave device number 17.ADDR FUNC DATASTARTPT HO DATASTARTPT LODATA #OF PTSHODATA #OF PTSLOERRORCHECKFIELD11 02 00 C4 00 16 13An example response to Read Input Status is shown below. The data is packed one bit for each coil. The response includes the slave address, function code, quantity of data characters, and error checking. Data will be packed with one bit with one bit for each coil, (1 = ON, 0 = OFF). The low order bit of the first character contains the addressed coil, and the remainder follow. For coil quantities that are not even multiples of eight, the last characters will be filled in with zeroes at the high end. The quantity of data characters is always specified as the quantity of RTU characters, i.e., the number is the same whether RTU or ASCII is used.ADDR FUNC BYTECOUNT DATADISCRETEINPUT10197-10204DATADISCRETEINPUT10205-10212DATADISCRETEINPUT10213-10218ERRORCHECKFIELD11 02 03 AC DB 35 2E LRC The status of inputs 10197-10204 is shown as AC (HEX) = 1010 1100 (Binary). Reading left to right, this shows that inputs 10204, 10202, 10200 and 10099 are all on. The other input data bytes are decodedsimilarly.Read Output Registers allows the user to obtain the binary contents of holding registers in the addressed slave.These registers can store the numerical values of associated timers and counters which can be driven to external devices.The addressing allows up to 125 registers to be obtained at each request; however, the specified slave device may have restrictions that lower this maximum quantity. The registers are numbered from zero, broadcast mode is not allowed.The following example reads registers 40108 through 40110 from slave number 17.ADDR FUNC DATASTARTPT HO DATASTARTPT LODATA #OF REGSHODATA #OF REGSLOERRORCHECKFIELD11 03 00 6B 00 03 7EThe addresses slave responds with its address and the function code, followed by the information field. The information field contains 2 bytes describing the quantity of data bytes to be returned. The contents of the registers requested (DATA), are two bytes each, with the binary content right justified within each pair of characters. The first byte includes the high order bits and the second, low order bits.In the example below, the registers 40108-40110 have the decimal contents 555, 0, and 100 respectively.ADDR FUNC BYTECOUNT DATAOUTPUTREGH.O.40108DATAOUTPUTREGL.O.40108DATAOUTPUTREGH.O.40109DATAOUTPUTREGL.O.40109DATAOUTPUTREGH.O.40110DATAOUTPUTREGL.O.40110ERRORCHECKFIELD11 03 06 02 2B 00 00 00 64 55Function Code 04 obtains the contents of the controllers input registers. These locations receive their vales from devices connected to the I/O structure and can only be referenced, not altered from within the controller nor via MODBUS.The example below requests the contents of register 30009 in slave number 17.ADDR FUNC DATASTARTPT HO DATASTARTPT LODATA #OF REGSHODATA #OF REGSLOERRORCHECKFIELD11 04 00 08 00 01 E2 In the response message, the contents of register 30009 is decimal value 0.ADDR FUNC BYTECOUNT DATAINPUTREG HO30009DATAINPUTREG LO30009ERRORCHECKFIELD11 04 02 00 00 E9FORCE SINGLE COIL (FUNCTION CODE 05)This message forces a single coil either On of OFF. Any coil that exists within the controller can be forced to either state, (ON or OFF). Coils are numbered from zero (i.e. coil 1 is address 0000, coil 2 is address 0001, etc.). The data value 65,280, (FF00 HEX) will set the coil ON and the value zero will turn it off. All other values are illegal and will not effect the coil. The use of slave address 00, (Broadcast mode), will force all attached slaves to modify the desired coil.The example below requests slave number 17 to turn coil number 0173 ON.ADDR FUNC DATACOILHO DATACOILLODATA #ON/OFFDATA ERRORCHECKFIELD11 05 00 AC FF 00 3F The normal response to the command request is to retransmit the message as received, after the coil state has been altered.ADDR FUNC DATACOILHO DATACOILLODATA #ON/OFFDATA ERRORCHECKFIELD11 05 00 AC FF 00 3FFunction 06 allows the user to modify the contents of a holding register. Any holding register that exists within the controller can have its contents changed by this message. The values are provided in binary up to the maximum capacity of the controller. Unused high-order bits must be set to zero. When used with slave address 00, all slave controllers will load the specified register with the contents specified.ADDR FUNC DATAREGHO DATAREGLODATAVALUEHODATAVALUELOERRORCHECKFIELD11 06 00 87 03 9E C1The normal response to a preset single register request is to retransmit the query message after the register has been altered.ADDR FUNC DATAREGHO DATAREGLODATAVALUEHODATAVALUELOERRORCHECKFIELD11 06 00 87 03 9E C1Function 15 allows the user to modify the contents of a group of consecutively addressed coils. The following example forces 10 coils starting at address 20, (13 HEX). The two data fields, CD = 1100 1101 and 00 = 0000 0000, indicate that coils 27, 26, 23, 22 and 20 are to be forced on.ADDR FUNC H.O.ADDRL.O.ADDRQUANTITY BYTECNTDATACOILSTATUSDATACOILSTATUSERRORCHECKFIELD11 0F 00 13 00 0A 02 CD 00 F4 The normal response to a FORCE MULTIPLE COILS request is to echo the slave address, function code, starting address, and quantity of coils set.ADDR FUNC H.O.ADDR L.O.ADDRQUANTITY ERRORCHECKFIELD11 0F 00 13 00 0A C3PRESET MULTIPLE REGISTERS (FUNCTION CODE 16)Holding registers existing within the controller can have their contents changed via function code 16. Sixteen bits of data for each register is contained within the message.ADDR FUNC H.O.ADDRL.O.ADDRQUANTITY BYTECNTH.O.DATAL.O.DATAetc. ERRORCHECKFIELD11 10 00 87 00 02 04 00 0A ?? The normal response to a PRESET MULTIPLE REGISTERS request is to echo the slave address, function code, starting address, and quantity of registers set.ADDR FUNC H.O.ADDR L.O.ADDRQUANTITY ERRORCHECKFIELD11 10 00 87 00 02 56。

485ModbusRTU通讯协议

485ModbusRTU通讯协议

485 Modbus RTU通讯协议(本协议采用主从问答方式)济源市华宇矿业电器有限责任公司通讯数据的类型及格式:数据长度:8,停止位:1,传输速率:9600,校验:偶★注:1、1个字节由8位二进制数组成(既8 bit)。

2、ModBus是Modicon公司的注册商标。

3、“从机”在本文件中既为GZB-H8高压配电保护器。

4、“N”为偶数。

通讯信息传输过程:当通讯命令由发送设备(主机)发送至接收设备(从机)时,在CRC校验无误情况下,从机地址与地址码相符的从机接收通讯命令,并根据功能码及相关要求处理信息,执行相应的任务,然后把执行结果(数据)返送给主机。

返回的信息中包括地址码、功能码、执行后的数据以及CRC校验码。

如果CRC校验出错就不返回任何信息。

地址码:地址码是每次通讯信息帧的第一字节(8位),从01H到FFH。

每个从机都必须有唯一的地址码。

所有地址的从机都将接收由主机发送来的信息,只有符合地址码的从机才响应要求,回送信息。

当从机回送信息时,回送数据均以各自的地址码开始。

主机发送的地址码表明将发送到的从机地址,而从机返回的地址码表明回送的从机地址。

功能码:是每次通讯信息帧传送的第二个字节。

ModBus通讯规约可定义的功能码为0到127。

PLC仅用到其中的一部分功能码。

作为主机请求发送,通过功能码告诉从机应执行什么动作。

作为响应,从机返回的功能码与从主机发送来的功能码一样,并表明从机已响应主机并且已进行相关的操作。

数据区:数据区包括需要由主机发送、从机回送何种信息或执行什么动作。

这些信息可以是数据(如:开关量、模拟量、地址等等)等。

传输时采用先传送高字节,再传送低字节。

例如:2345H,就先传送23H,然后传送45H。

PLC响应的命令格式是从机地址、功能码、数据区及CRC码。

数据区的数据为多字节开关量数据或模拟量数据。

一、遥信命令请求消息帧:注1:遥信数据按位传输,每一位表示一路开关量状态或者一个故障信息,遥信数据传输的位数为两个字节、16位,每个字节中的位含义定义如表1。

完整word版MODBUS通讯协议 RTU

完整word版MODBUS通讯协议 RTU

Modbus 通讯协议(传输模式)RTU本说明仅做内部参考,详细请参阅英文版本。

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

MODBUS_RTU 通讯协议(SSR64路巡检仪)

MODBUS_RTU 通讯协议(SSR64路巡检仪)

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循环冗余错误校验举例对比说明:(以SSR64路巡检仪为例)1、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, 255, 255, 255, 0, 0, 0, 0, 198, 111,仪表动态数据格式(MODBUS_RTU协议)编号参数名称数据格式类型备注1 保留双字节定点数 00002 EEPROM内部修改标志双字节定点数 00013 仪表类型双字节定点数 00024 第1路实时测量值四字节浮点数 00035 第2路实时测量值四字节浮点数 00056 第3路实时测量值四字节浮点数 00077 第4路实时测量值四字节浮点数 00098 第5路实时测量值四字节浮点数 000B9 第6路实时测量值四字节浮点数 000D10 第7路实时测量值四字节浮点数 000F11 第8路实时测量值四字节浮点数 001112 第9路实时测量值四字节浮点数 001313 第10路实时测量值四字节浮点数 001514 第11路实时测量值四字节浮点数 001715 第12路实时测量值四字节浮点数 001916 第13路实时测量值四字节浮点数 001B17 第14路实时测量值四字节浮点数 001D18 第15路实时测量值四字节浮点数 001F19 第16路实时测量值四字节浮点数 002120 第17路实时测量值四字节浮点数 002321 第18路实时测量值四字节浮点数 002522 第19路实时测量值四字节浮点数 002723 第20路实时测量值四字节浮点数 002924 第21路实时测量值四字节浮点数 002B25 第22路实时测量值四字节浮点数 002D26 第23路实时测量值四字节浮点数 002F27 第24路实时测量值四字节浮点数 003128 第25路实时测量值四字节浮点数 003329 第26路实时测量值四字节浮点数 003530 第27路实时测量值四字节浮点数 003731 第28路实时测量值四字节浮点数 003932 第29路实时测量值四字节浮点数 003B33 第30路实时测量值四字节浮点数 003D34 第31路实时测量值四字节浮点数 003F35 第32路实时测量值四字节浮点数 004136 第33路实时测量值四字节浮点数 004337 第34路实时测量值四字节浮点数 004538 第35路实时测量值四字节浮点数 004739 第36路实时测量值四字节浮点数 004940 第37路实时测量值四字节浮点数 004B41 第38路实时测量值四字节浮点数 004D42 第39路实时测量值四字节浮点数 004F43 第40路实时测量值四字节浮点数 005144 第41路实时测量值四字节浮点数 005345 第42路实时测量值四字节浮点数 005546 第43路实时测量值四字节浮点数 005747 第44路实时测量值四字节浮点数 005948 第45路实时测量值四字节浮点数 005B49 第46路实时测量值四字节浮点数 005D50 第47路实时测量值四字节浮点数 005F51 第48路实时测量值四字节浮点数 006152 第49路实时测量值四字节浮点数 006353 第50路实时测量值四字节浮点数 006554 第51路实时测量值四字节浮点数 006755 第52路实时测量值四字节浮点数 006956 第53路实时测量值四字节浮点数 006B57 第54路实时测量值四字节浮点数 006D58 第55路实时测量值四字节浮点数 006F59 第56路实时测量值四字节浮点数 007160 第57路实时测量值四字节浮点数 007361 第58路实时测量值四字节浮点数 007562 第59路实时测量值四字节浮点数 007763 第60路实时测量值四字节浮点数 007964 第61路实时测量值四字节浮点数 007B65 第62路实时测量值四字节浮点数 007D66 第63路实时测量值四字节浮点数 007F67 第64路实时测量值四字节浮点数 008168 ERR1为第1个采集板通讯错误次数双字节定点数 008369 ERR1为第2个采集板通讯错误次数双字节定点数 008470 ERR1为第3个采集板通讯错误次数双字节定点数 008571 ERR1为第4个采集板通讯错误次数双字节定点数 008672 ERR1为第1个输出板通讯错误次数双字节定点数 008773 ERR1为第2个输出板通讯错误次数双字节定点数 008874 ERR1为第3个输出板通讯错误次数双字节定点数 008975 ERR1为第4个输出板通讯错误次数双字节定点数 008A76 ERR1为第5个输出板通讯错误次数双字节定点数 008B77 ERR1为第6个输出板通讯错误次数双字节定点数 008C78 ERR1为第7个输出板通讯错误次数双字节定点数 008D79 ERR1为第8个输出板通讯错误次数双字节定点数 008E80 保留双字节定点数 008F81 保留双字节定点数 009082 保留双字节定点数 009183 保留双字节定点数 009284 AL1为第01~08路第一报警标志双字节定点数 009385 AL2为第09~16路第一报警标志双字节定点数 009486 AL3为第17~24路第一报警标志双字节定点数 009587 AL4为第25~32路第一报警标志双字节定点数 009688 AL5为第33~40路第一报警标志双字节定点数 009789 AL6为第41~48路第一报警标志双字节定点数 009890 AL7为第49~56路第一报警标志双字节定点数 009991 AL8为第57~64路第一报警标志双字节定点数 009A92 AH1为第01~08路第二报警标志双字节定点数 009B93 AH2为第09~16路第二报警标志双字节定点数 009C94 AH3为第17~24路第二报警标志双字节定点数 009D95 AH4为第25~32路第二报警标志双字节定点数 009E96 AH5为第33~40路第二报警标志双字节定点数 009F97 AH6为第41~48路第二报警标志双字节定点数 010098 AH7为第49~56路第二报警标志双字节定点数 010199 AH8为第57~64路第二报警标志双字节定点数 0102 注:报警标志中D0开始为序依次对应。

ModBus协议RTU协议

ModBus协议RTU协议
8001
备注
来自从机 01 写多路寄存器
起始地址为 002C 保存 2 个字长度的数 据
由从机计算得到 CRC 码
10
通讯错误信息及数据的处理: 当 PDM 表检测到除了 CRC 码出错以外的错误时,必须向主机回送信息,功能码的最高
位置为 1,即从机返送给主机的功能码是在主机发送的功能码的基础上加 128 。以下的这些 代码表明有意外的错误发生。
DI 寄存器数据(16 进制) 0B
备注
DI1/DI2/DI4 状态为“1”,DI3 状态为“0”
主机发送的报文格式:
主机发送
字节数
从机地址
1
功能码
1
起始 BIT 位
2
读数据长度
2
CRC 码
2
发送的信息 01
02 0000
0004
79C9
备注
发送至地址为 01 的从 机
读开关量输入状态
起始 BIT 位地址为 0000
写多路寄存器
要写入的寄存器的起 始地址
保存数据的字长度 (共 2 字)
保存数据的字节长度 (共 4 字节) 数据地址 002C 数据地址 002D 由主机计算得到 CRC 码
从机(PDM)响应返回的报文格式:
从机响应 从机地址 功能码 起始地址 保存数据字长度
CRC 码
字节数 1 1 2 2
2
返回的信息 01 10 002C 0002
读取 4 路继电器输入 状态位
由主机计算得到 CRC 码
从机(PDM)响应返回的报文格式:
从机响应 从机地址 功能码 数据长度
DI 状态数据 CRC 码
字节数 1 1 1
1 2

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)。
LSB
图 2 – 3 读 DO1~DO6 状态的响应数据帧
2.2 读数字输入状态(功能码 02)
查询数据帧
此功能允许用户获得 DI 的状态 ON / OFF(1 = ON , 0 = OFF),除了从机地址和功能 域,数据帧还需要在数据域中包含将被读取 DI 的初始地址和要读取的 DI 数量。SRTU510 中 DI 的地址从 0000H 开始(DI1=0000H,DI2=0001H 依此类推)。具体地址请查看第三章。
以便通过协议正确地建立与它们通讯的特定应用程序。
本章所述协议将尽可能的使用如图 2 – 1 所示的格式,(数字为 16 进制)。
Addr 06H
Fun
Data
Data Data #of Data #of CRC16
CRC16
start
start regs hi regs lo
Hi
Lo
reg hi reg lo
行为 获得数字(继电器)输出的当前状态(ON/OFF) 获得数字输入的当前状态(ON/OFF) 获得一个或多个寄存器的当前二进制值 控制数字(继电器)输出状态(ON/OFF) 设定二进制值到一系列多寄存器中
1.2.4 数据(Data)域
数据域包含了终端执行特定功能所需要的数据或者终端响应查询时采集到的数据。这 些数据的内容可能是数值、参考地址或者设置值。例如:功能域码告诉终端读取一个寄存器, 数据域则需要指明从哪个寄存器开始及读取多少个数据,内嵌的地址和数据依照类型和从机 之间的不同内容而有所不同。
图 2 – 4 的例子是从地址为 17 的从机读取 DI1 到 DI16 的状态。 (例如:SRTU510 有 16 个 DI,DI 的数量为 1~16)
Addr 11H
Fun
DI start DI start DI num DI num CRC16 CRC16
addr hi addr lo
hi
lo
CRC 运算时,首先将一个 16 位的寄存器预置为全 1,然后连续把数据帧中的每个字节中 的 8 位与该寄存器的当前值进行运算,仅仅每个字节的 8 个数据位参与生成 CRC,起始位和 终止位以及可能使用的奇偶位都不影响 CRC。
在生成 CRC 时,每个字节的 8 位与寄存器中的内容进行异或,然后将结果向低位移位, 高位则用“0”补充,最低位(LSB)移出并检测,如果是 1,该寄存器就与一个预设的固定 值(0A001H)进行一次异或运算,如果最低位为 0,不作任何处理。
1.2.3 功能(Function)域
功能域代码告诉了被寻址到的终端执行何种功能。表 1 – 1 列出了瑞士 DAE 网络电力 仪表用到的功能码,以及它们的意义和功能。
代码 01 02 03 05 16
意义 读 DO 状态 读 DI 状态 读数据寄存器 控制 DO 预置多寄存器
表 1 – 1 功能码
寄存器。 3、 将 CRC 寄存器向右移一位。 4、 如果最低位为 0:重复第三步(下一次移位)。
如果最低位为 1:将 CRC 寄存器与一个预设的固定值(1010 0000 0000 0001)进行异 或运算。 5、 重复第三步和第四步直到 8 次移位。这样处理完了一个完整的八位。 6、 重复第 2 步到第 5 步来处理下一个八位,直到所有的字节处理结束。 7、 最终 CRC 寄存器得值就是 CRC 的值。 8、 CRC 寄存器发送时将高位、低位互换。
1.2.5 错误校验(Check)域
该域允许主机和终端检查传输过程中的错误。有时,由于电噪声和其它干扰,一组数 据在从一个设备传输到另一个设备时在线路上可能会发生一些改变,出错校验能够保证主机 或者终端不去响应那些传输过程中发生了改变的数据,这就提高了系统的安全性和效率,出 错校验使用了 16 位循环冗余的方法(CRC16)。
hi
lo
02H
00H
00H
00H
10H
7BH
56H
图 2 – 4 读 DI1 到 DI16 的查询
响应据数帧
响应包含从机地址、功能码、数据的数量和 CRC 错误校验,数据帧中每个 DI 占用一位 (1 = ON , 0 = off),第一个字节的最低位为寻址到的 DI 值,其余的在后面。
图 2-5 所示为读数字输出状态( DI1=on, DI2=on, DI3=off, DI4=off , DI5=on, DI6=on, DI7=off, DI8=off , DI9=off, DI10=off, DI11=on, DI12=on, DI13=off, DI14=off, DI15=on, DI16=on)响应的实例。
0
0
1
1
0
0
LSB
图 2 – 5 读 DI1 到 DI16 状态的响应
2.3 读数据(功能码 03)
查询数据帧
此功能允许用户获得设备采集与记录的数据及系统参数。 图 2 – 6 的例子是从 17 号从机(EPM420)读 3 个采集到的基本数据(数据帧中每个 地址占用 2 个字节)U1,U2,U3, EPM420 中 U1 的地址为 0000H, U2 的地址为 0001H, U3 的地 址为 0002H,
第一章 MODBUS 协议简介
MODBUS 协议详细定义了校验码、数据序列等,这些都是特定数据交换的必要内容。 MODBUS 协议在一根通讯线上使用主从应答式连接(半双工),这意味着在一根单独的通 讯线上信号沿着相反的两个方向传输。首先,主计算机的信号寻址到一台唯一的终端设备(从 机),然后,终端设备发出的应答信号以相反的方向传输给主机。 MODBUS 协议只允许在主计算机和终端设备之间通讯,而不允许独立的设备之间的数据 交换,这样各终端设备不会在它们初始化时占据通讯线路,而仅限于响应到达本机的查询信 号。
Addr 11H
Fun Byte count
02H
02H
Data1 33H
Data2 CRC16 hi CRC16 lo
CCH
6CH
DEH
Data 1
DI8 DI7 DI6 DI5 DI4 DI3 DI2 DI1
0
0
1
1
0
0
1
1
MSB
LSB
Data 2
DI16 DI15
1
1
MSB
DI14 DI13 DI12 DI11 DI10 DI9
Addr 11H
Fun 03H
Data Data startData #of
start
addr lo regs h
addr hi
00H
00H
00H
Data #ofCRC16 CRC16 regs lo hi lo
03H 07H 5BH
图 2 – 6 读 U1、U2、U3 的查询数据帧
停止位
1位
u Error checking 错误检测
CRC(循环冗余校验)
[注]瑞士 DAE 公司的网络电力仪表响应查询的时间为 0.1 ~ 1.0 秒(典型值为 0.4 秒) 响应查询的时间指主机命令发出到收到回复的时间。
1.2 协议
当数据帧到达终端设备时,它通过一个简单的“端口”进入被寻址到的设备,该设备去 掉数据帧的“信封”(数据头),读取数据,如果没有错误,就执行数据所请求的任务, 然后,它将自己生成的数据加入到取得的“信封”中,把数据帧返回给发送者。返回的 响应数据中包含了以下内容:终端从机地址(Address)、被执行了的命令(Function)、 执行命令生成的被请求数据(Data)和一个校验码(Check)。发生任何错误都不会有成功 的响应。
[注] 发送序列总是相同的 – 地址、功能码、数据和与方向相关的出错校验。
1.3 错误检测
循环冗余校验(CRC)域占用两个字节,包含了一个 16 位的二进制值。CRC 值由传 送设备计算出来,然后附加到数据帧上,接收设备在接收数据时重新计算 CRC 值,然后与接 收到的 CRC 域中的值进行比较,如果这两个值不相等,就发生了错误。
03H
00H
00H
00H
21H
84H
65H
注:
Addr:从机地址
Fun:功能码
Data start reg hi:数据起始地址 寄存器高位
Data start reg lo:数据起始地址 寄存器低位
Data #of reg hi:数据读取个数 寄存器高位
Data #of reg lo:数据读取个数 寄存器低位
Addr 11H
Fun DO start DO start DO #of DO #of CRC16
reg hi reg lo regs hi regs lo
Hi
01H
00H
00H
00H
06H
BEH
CRC16 Lo 98H
图 2 – 2 读 DO1~DO6 的查询数据帧
响应数据帧
响应包含从机地址、功能码、数据的数量和 CRC 错误校验,数据包中每个 DO 占用一位 (1 = ON , 0 = OFF),第一个字节的最低位为寻址到的 DO 值,其余的在后面。
图 2 – 3 所示为读数字输出状态响应的实例。 (DO1 = OFF , DO2=ON,DO3=OFF,DO4=ON,DO5=OFF,DO6 = ON)
Addr 11H
Fun
Byte count
01H
01H
Data 2AH
CRC16 hi D4H
CRC16 lo 97H
DO 状态 0 0
MSB
0 DO6 DO5 DO4 DO3 DO2 DO1 0101010
1.1 传输方式
传输方式是一个数据帧内一系列独立的数据结构以及用于传输数据的有限规则,下面定
义了与 MODBUS 协议– RTU 方式相兼容的传输方式。
相关文档
最新文档