MODBUS规约与保文解析详细说明Word格式文档下载.docx

上传人:b****6 文档编号:18908486 上传时间:2023-01-02 格式:DOCX 页数:25 大小:41.05KB
下载 相关 举报
MODBUS规约与保文解析详细说明Word格式文档下载.docx_第1页
第1页 / 共25页
MODBUS规约与保文解析详细说明Word格式文档下载.docx_第2页
第2页 / 共25页
MODBUS规约与保文解析详细说明Word格式文档下载.docx_第3页
第3页 / 共25页
MODBUS规约与保文解析详细说明Word格式文档下载.docx_第4页
第4页 / 共25页
MODBUS规约与保文解析详细说明Word格式文档下载.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

MODBUS规约与保文解析详细说明Word格式文档下载.docx

《MODBUS规约与保文解析详细说明Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《MODBUS规约与保文解析详细说明Word格式文档下载.docx(25页珍藏版)》请在冰豆网上搜索。

MODBUS规约与保文解析详细说明Word格式文档下载.docx

数据区

CRC16校验和

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功能码与数据分类

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

分类前缀

测点类型

读操作功能码

写操作功能码

测点地址范围

规约地址范围

0x

Q

05/15

0001~2048

0000~2047

M

0001~4096

3000~7095

1x

I

S

0001~1024

3000~4023

3x

AI

0000~1023

SOE

0001~0256

2020~4067

4x

AQ

06/16

0000~0255

R

1000~5095

Clock

10000~10004

6x

V

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

如Q0005的规约地址为0004。

2.3功能码详解

2.3.101读线圈状态

1.描述

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

2.主站请求

请求信文定义读取测点的起始地址和数量。

起始规约地址为0:

Q1~Q2048的地址为0~2047;

M1~M4096的地址为3000~7095。

【示例】在从站17读Q20~Q56

字节

含义

示例(Hex)

1

从站地址

11

2

3

起始地址高8位

00

4

起始地址低8位

13

5

数据个数高8位

6

数据个数低8位

25

CRC16

-

3.从站响应

♦从站返回状态数据遵循:

起始地址的状态用数据首字节的最低位(LSB)表示,并遵循“低位向高位,低字节向高字节”按位持续存放。

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

♦状态表示:

1=ON;

0=OFF

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

字节数

数据(Q27-20)

CD

数据(Q35-28)

6B

数据(Q43-36)

B2

7

数据(Q51-44)

0E

8

数据(Q56-52)

1B

示例中,

♦Q27-Q20的状态返回为CDH(11001101B),则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.202读输入状态

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

I1~I2048的地址为0~2047;

S1~S1024的地址为3000~4023。

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

数据(I27-20)

数据(I35-28)

数据(I43-36)

数据(I51-44)

数据(I56-52)

♦I27-I20的状态返回为CDH(11001101B),则CDH的最高位(MSB)为I27的状态,最低位(LSB)为I20的状态。

I27-I20的实际状态为ON-ON-OFF-OFF-ON-ON-OFF-ON。

♦最后1个字节1BH表示I56-I52的状态:

2.3.303读保持型寄存器

实现对从站中测点AQ、R和从站系统时间(分类前缀为4x)测值的读请求。

AQ1~AQ256的地址为0~255;

R1~R4096的地址为1000~5095;

系统时间的地址为10000~10004。

【示例】在从站17读AQ108~AQ110

“高字节在前,低字节在后”持续存放。

数据Hi(Q108)

数据Lo(Q108)

2B

数据Hi(Q109)

数据Lo(Q109)

数据Hi(Q110)

9

数据Lo(Q110)

64

♦Q108-Q110的测值返回为022BH、0000H、0064H。

4.读取系统时间

系统时间的地址为10000~10004。

【示例】在从站17读系统时间

27

10

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

0A

YearHi

07

YearLo

D2

Day

Month

09

HourHi

HourLo

0C

Second

Minute

0D

12

MsHi

MsLo

♦返回时间为:

2002(07D2H)年9(09H)月10(0AH)日12(0CH)时13(0DH)分14(0EH)秒258(0102H)毫秒。

2.3.404读输入型寄存器

实现对从站中测点AI、和SOE事件缓冲区(分类前缀为3x)测值的读请求。

AI1~AI1024的地址为0~1023;

SOE1~SOE256的地址为2020~4067。

【示例】在从站17读AI108~AI110

4.读取SOE事件

♦SOE事件缓冲区最多可存放256个SOE事件,超过256个事件时,用新事件覆盖最老的事件(如第257事件覆盖第1个事件,依此类推)。

♦SOE当前事件缓冲区空指针SOE_PTR为1个字,存放在S区中:

SOE_PTRbit0-bit15=S897-S912。

♦SOE_PTR可能取值=2021+N%256×

8

其中:

N为当前SOE事件个数;

2021为SOE事件缓冲区虚拟偏址首址,规约地址为2020;

8为SOE事件缓冲区中,相邻事件的地址间隔。

即为8个字。

【示例】从站17中,上次SOE_PTR值为2029(1个SOE事件),本次取值为2037(2个SOE事件),表明新产生1个SOE事件。

此时需读取第2个SOE事件,地址为2028,读取长度为8,信文如下:

EC

08

SOE性质

(1:

OFF→ON;

0:

ON→OFF)

SOE事件标识

Year(与2000的差)

Hour

0B

Day

MsHi(单位:

0.1ms)

MsLo(单位:

14

SOE测点号Hi

SOE测点号Lo

预留数据

17

18

19

♦SOE事件为:

2002年9月12日11时13分14秒25.8毫秒SOE2动作(OFF→ON)。

2.3.505强制单个线圈

实现对从站中单个测点Q或M(分类前缀为0x)强制为ON或OFF状态的写请求。

♦请求信文定义强制测点的地址和状态。

♦强制数据:

FF00H强制为ON;

0000H强制为OFF。

【示例】在从站17强制Q173为ON

AC

强制数据高8位

FF

强制数据低8位

正确时,从站将请求信文原信返回。

2.3.606写单个寄存器

实现对从站中单个测点AQ或R(分类前缀为4x)测值的写请求。

请求信文定义写测点的地址和值。

R1~R4096的地址为1000~5095。

【示例】在从站17强制R2=0003(R2地址为1001H)

E9

写值高8位

写值低8位

2.3.715强制多个线圈

实现同时对从站中多个测点Q或M(分类前缀为0x)强制ON或OFF的写请求。

♦请求信文定义强制测点的起始地址、数量、强制状态。

♦强制状态按位表示,遵循:

♦强制状态表示:

【示例】在从站17强制Q29~Q20为

OFF-ON-ON-ON-OFF-OFF-ON-ON-OFF-ON,则数据为CDH、01H

Bit:

1100110100000001

Q:

2726252423222120------2928

0F

强制个数高8位

强制个数低8位

强制数据字节数

强制数据字节1

强制数据字节2

正确,从站返回强制测点的起始地址、数量。

2.3.816写多个寄存器

实现对从站中多个测点AQ或R(分类前缀为4x)的写请求,设置从站系统时间。

请求信文定义请求写操作测点的起始地址、数量和值。

【示例】在从站17写R2~R3为000AH、0102H

写寄存器个数高8位

写寄存器个数低8位

写数据字节数

寄存器1数据高8位

寄存器1数据低8位

寄存器2数据高8位

寄存器2数据低8位

正确,从站返回写测点的起始地址、数量。

4.设置系统时间

【示例】设置从站17系统时间为:

2002(07D2H)年9(09H)月10(0AH)日12(0CH)时13(0DH)分14(0EH)秒0(0000H)毫秒。

14030FA0005445C6

1401000000B77EB9

1401000000B77EB9

ymxkll15

MODBUS报文解析(高字节在前低字节在后)

主站下发报文

1403400000205317代表从4000寄存器开始查询32个遥测(03)17是结束字符53是校验码0020是查询个数

1401000000203F17代表从0000寄存器开始查询32个遥信(01)从站地址是20(14H)

遥信返回报文140105CD6BB20E1BXX(校验)14是地址01是遥信(线圈状态)05是回的YX报文组数(每组报文十六进制转换成2进制每位表示一个线圈状态)。

第一个数据字节的LSB为查询中的寻址地址,

其他的线圈按顺序在该字节中由低位向高位排列,直至8个为止,

下一个字节也是从低位向高位排例

线圈27-20的状态用CDH表示,二进制值为11001101,该字

节的MCB为线圈27,LSB为20。

线圈从左(27)向右(20)状态分

别为ON-ON-OFF-OFF-ON-ON-OFF-ON,因此第一个字节中的线

圈从左到右应是27-20。

下一个字节的线圈应为35至28。

位数据

串行转输从低位到高位,即20…27,28…35。

最后一个数据字节中,56-52线圈的状态为1BH(或二进制

00011011),线圈56是左数第4位,线圈52是该字节的最低位,

所线圈56至52的状态分别为ON-ON-OFF-ON-ON注意3个剩余

位(至最高位的数)全部填0

5208报文实例

上行通道1☆↓↓1403400000205317

上行通道1★↓↓1403400000205317

上行通道1★↑↑1403400031002F002E002F000F07090709070C00000021002200250024002300210022000A0703070306FB06690093009600960415040C041300990025003B067C07083E2C(3100是第一个YC的值。

一共32个YC,最后一位是校验码。

两个字节一个量,高在前低在后)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1