MODBUS规约与报文解析详细说明

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

MODBUS协议

一般说明

1.1.1交换特点

MODBUS是一种主/从规约,它允许读或写一个或多个字(16位)操作,但任何情况下都不支持字节的读/写。

信息交换是以主站采取主动实现的,即由主站启动交换。除广播命令外,所有的一个完整交换由下行和上行两个报文组成:

·下行报文:主站发出的一个请求

·上行报文:从站发回的一个回答

图1.1 一般信息交换图

图1.2 广播方式信息交换图

自主站发出的请求,一般情况下,只可发送到某一指定的从站(由请求帧第一个字节中规定的从站号码来辨认),如图1.1所示。在广播方式下(从站号码为0),此请求则发送到全部从站,当然,规约规定广播命令必须是写命令,并且从站也不发送回答,如图1.2所示。

1.1.2报文格式

所有交换的RTU类型报文(帧),无论上/下行,具有相同的结构:

从站号功能码数据区CRC16校验和

1字节1字节n字节2字节

每帧报文包含4种类型的信息:

1.1.

2.1 从站号

从站号为1字节,取值范围为0~FFH.例外的,如果此值为0,则作为主站的广播信文标识.因此,物理上使用的从站号只能在01H~FFH之间(即1~255之间)。

1.1.

2.2 功能码

功能码为1字节,它被用来选择一个命令(读、写或回答校验是否正确等),有效功能码范围为1~255之间,本手册支持的功能码将在第2章中加以详述。

1.1.

2.3 数据区

数据区为n字节,它包含与功能码相关的一串十六进制数据。

2.1 功能码概述

在本手册中,MODBUS使用如下的功能码:

功能码(十进制)含义

01 读线圈状态

02 读输入状态

03 读保持型寄存器

04 读输入型寄存器

05 强制单个线圈

06 写单个寄存器

15 强制多个线圈

16 写多个寄存器

20 读变量

21 写变量

2.2 功能码与数据分类

在本手册中,功能码与相应的数据的对应关系如下所示:

在MODBUS 规约中,地址的起始编号为0。如Q0005的规约地址为0004。

2.3 功能码详解

2.3.1 01读线圈状态

1.描述

实现对从站中测点Q 和M (分类前缀为0x )ON/OFF 状态的读请求。 2.主站请求

请求信文定义读取测点的起始地址和数量。起始规约地址为0:Q1~Q2048的地址为0~2047;M1~M4096的地址为3000~7095。 【示例】在从站17读Q20~Q56

字节

含义 示例(Hex ) 1 从站地址 11 2 功能码

01 3 起始地址高8位 00 4 起始地址低8位 13 5 数据个数高8位 00 6 数据个数低8位 25 CRC16

-

-

3.从站响应

从站返回状态数据遵循:起始地址的状态用数据首字节的最低位

分类前缀 测点类型

读操作功能码

写操作功能码

测点地址范围 规约地址范围 0x

Q 01 05 / 15 0001~2048 0000~2047 M

01 05 / 15 0001~4096 3000~7095 1x I 02 0001~2048 0000~2047 S

02 0001~1024 3000~4023 3x AI 04 0001~1024 0000~1023 SOE

04 0001~0256 2020~4067 4x AQ 03 06 / 16 0001~0256 0000~0255 R 03 06 / 16 0001~4096 1000~5095 Clock

03 16 10000~10004 6x V

20

21

(LSB)表示,并遵循“低位向高位,低字节向高字节”按位持续存

放。

返回的状态个数不是8的整数倍,则在最高字节的多余位补“0”。

状态表示:1=ON;0=OFF

【示例】上例的从站响应信文如下:

字节含义示例(Hex)

1 从站地址11

2 功能码01

3 字节数05

4 数据(Q27-20)CD

5 数据(Q35-28)6B

6 数据(Q43-36)B2

7 数据(Q51-44)0E

8 数据(Q56-52)1B

CRC16 - -

示例中,

Q27-Q20的状态返回为CDH(1100 1101 B),则CDH的最高位(MSB)为Q27的状态,最低位(LSB)为Q20的状态。Q27-Q20的实际状态为

ON-ON-OFF-OFF-ON-ON-OFF-ON。

最后1个字节1BH表示Q56-Q52的状态:ON-ON-OFF-ON-ON。该字节的最高3位补“0”。

2.3.2 02读输入状态

1.描述

实现对从站中测点I和S(分类前缀为1x)ON/OFF状态的读请求。

2.主站请求

请求信文定义读取测点的起始地址和数量。起始规约地址为0:I1~I2048的地址为0~2047;S1~S1024的地址为3000~4023。

【示例】在从站17读I20~I56

字节含义示例(Hex)

1 从站地址11

2 功能码02

3 起始地址高8位00

4 起始地址低8位13

5 数据个数高8位00

6 数据个数低8位25

CRC16 - -

相关文档
最新文档