完整版MODBUS协议功能码及报文解析Word格式.docx

上传人:b****4 文档编号:17802126 上传时间:2022-12-10 格式:DOCX 页数:17 大小:22KB
下载 相关 举报
完整版MODBUS协议功能码及报文解析Word格式.docx_第1页
第1页 / 共17页
完整版MODBUS协议功能码及报文解析Word格式.docx_第2页
第2页 / 共17页
完整版MODBUS协议功能码及报文解析Word格式.docx_第3页
第3页 / 共17页
完整版MODBUS协议功能码及报文解析Word格式.docx_第4页
第4页 / 共17页
完整版MODBUS协议功能码及报文解析Word格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

完整版MODBUS协议功能码及报文解析Word格式.docx

《完整版MODBUS协议功能码及报文解析Word格式.docx》由会员分享,可在线阅读,更多相关《完整版MODBUS协议功能码及报文解析Word格式.docx(17页珍藏版)》请在冰豆网上搜索。

完整版MODBUS协议功能码及报文解析Word格式.docx

它的寄存器的某个值,控制或者读取一个I/O端口,以及指挥设备回送一个或者多个其寄存器中的数据。

有许多modems和网关支持Modbus协议,因为Modbus协议很简单而且容易复制。

它们当中一些为这个协议特别设计的。

有使用有线、无线通信甚至短消息和GPRS的不同实现。

不过设计者需要克服一些包括高延迟和时序的问题。

MODBU通S信过程如下图

MODBUSRT报U文格式

起始位

设备地

功能代

数据

CRC校验

结束符

T1-T2-T3-T4

8Bit

n个8Bit

16Bit

MODBUSASCII报文格式

起始位设备址地功能代码数据LR验C校结束符

2个字2个字

1个字符2个符字2个字符n个字符2个符字2个字符

MODBUSTC报P文

交互标识

协议标识报文长度设备标识功能代码数据

2字节一般为0

2字节2字节1字节

一般为0高字节在也就是设1个字符n个字符前备地址

实际上MODBUSRT与UASCII的内容是完全相同的,不同的的ASCII方式用“:

”标识帧起始,用“CRLF”标识帧结束。

校验采用LRC,把RTU帧中一个字节的内容换成了2个ASCII字符。

比如在RTU方式下设备地址01只有一个字节,在ASCII方式下转换成字符串“01”(16进制的3031)。

MODBUSTC中P的设备标识,功能码等与MODBUSRT相U同,可以认为是在MODBUSRT报U文的前边加了一个头,去掉了CRC校验这个尾。

MODBU协S议定义了4种基本数据类型:

可读写位数据,只读位数据,只读16位数据,可读写16位数据。

这些数据分别被称为线圈状态,输入状态,输入寄存器,保持寄存器。

MODBU协S议中定义的这些数据都是一个从地址1开始的数组,访问时需要指明从哪个地址开始访问,访问多少个数据。

下表是MODBUS的功能码。

ModBus功能码

功能码

名称

作用

01

读取线圈状态

取得一组逻辑线圈的当前状态(ON/OFF)

02

读取输入状态

取得一组开关输入的当前状态(ON/OFF)

03

读取保持寄存器

在一个或多个保持寄存器中取得当前的二进制值

04

读取输入寄存器

在一个或多个输入寄存器中取得当前的二进制值

05

强置单线圈

强置一个逻辑线圈的通断状态

06

预置单寄存器

把具体二进值装入一个保持寄存器

取得8个内部线圈的通断状态,这8个线圈的

07

读取异常状态

地址由控制器决定,用户逻辑可以将这些线圈

定义,以说明从机状态,短报文适宜于迅速读

取状态

08

回送诊断校验

把诊断校验报文送从机,以对通信处理进行评鉴

09

编程(只用于484)

使主机模拟编程器作用,修改PC从机逻辑可使主机与一台正在执行长程序任务从机通

10

控询(只用于484)

信,探询该从机是否已完成其操作任务,仅在

含有功能码9的报文发送后,本功能码才发送

11

读取事件计数

可使主机发出单询问,并随即判定操作是否成

功,尤其是该命令或其他应答产生通信错误时

可是主机检索每台从机的ModBus事务处理通

12

读取通信事件记录

信事件记录。

如果某项事务处理完成,记录会

给出有关错误

13

编程(184/384484

584)

可使主机模拟编程器功能修改PC从机逻辑

探询(184/384484

可使主机与正在执行任务的从机通信,定期控

14

询该从机是否已完成其程序操作,仅在含有功

能13的报文发送后,本功能码才得发送

15

强置多线圈

强置一串连续逻辑线圈的通断

16

预置多寄存器

把具体的二进制值装入一串连续的保持寄存器

17

报告从机标识

可使主机判断编址从机的类型及该从机运行指

示灯的状态

18

(884和MICRO84)

可使主机模拟编程功能,修改PC状态逻辑

19

重置通信链路

发生非可修改错误后,是从机复位于已知状态,可重置顺序字节

20

读取通用参数

(584L)

显示扩展存储器文件中的数据信息

21

写入通用参数

把通用参数写入扩展存储文件,或修改之

22~

保留作扩展功能备

64

65~

72

保留以备用户功能

所用

留作用户功能的扩展编码

73~

非法功能

119

120~

127

保留

留作内部作用

128~

用于异常应答

255

各个功能码对应的数据类型

功能

数据类型

16位整型

整16位整型

 

MODBU协S议相当复杂,但是常用的命令也就简单的几个,01,0

2,03,04,05,06,15,16号命令。

各个命令的功能和报文如下:

01命令读取线圈状态MODBUS地址00001

MODBUS请求

功能码

1BYTE

0X01

起始地址

2BYTE

0X0000TO0XFFFF

读取数量

1TO2000(0X7D0)

MODBUS响应

字节计数

N

线圈状态

nBYTE

n=NorN+1

N=读取数量/8如果余数不为0则N=N+1错误响应

0X01+0X80

错误代码

0x1or0x2or0x3or0x4

举例

请求

响应

域名称

数据(hex)

起始地址高(字节)

00

起始地址低(字节)

27(h)~20状态

CD

读取数量高(字节)

35(h)~28状态

6B

读取数量低(字节)

38(h)~36状态

02命令读取输入状态MODBUS地址10001

0X02

输入状态

0X02+0X80

C4

204(h)~197状态

AC

212(h)~205状态

DB

218(h)~213状态

35

03读保持寄存器MODBUS地址40001

0X03

1TO125(0X7D)

N*2

N*2BYTE

错误响应

0X03+0X80

寄存器高(108)

寄存器低(108)

2B

寄存器高(109)

寄存器低(109)

寄存器高(110)

寄存器低(110)

04输入寄存器MODBUS地址30001

0X04

0X04+0X80

输入寄存器高(9)

输入寄存器低(9)

0A

05设置单个继电器状态

0X05

设置地址

设置内容

0x0000OR0XFF00

0x0000释放继电器

0xff00吸合继电器

0X05+0X80

举例(吸合6号继电器)

设置地址高(字节)

设置地址低(字节)

设置内容高(字节)

FF

设置内容低(字节)

06设置单个保持寄存器

0X06

0x0000to0XFF00

0X06+0X80

设置9号保持寄存器内容为25

15设置多个继电器状态

0X0F

设置起始地址

设置长度

0X0000TO0X7B0

NBYTE

0X0F+0X80

举例设置继电器

0F

设置数量高(字节)

设置数量低(字节)

16设置多个保持寄存器

0X10

0X10+0X80

设置多个保持寄存器

MODBU协S议在智能设备中的应用

上面讲述了MODBU协S议的报文以及命令,那么在智能设备中如何使用这个协议呢?

如果智能设备有开关量输入输出,模拟量输入输出,有计数器等。

很明显开关量输入可以映射到10001地址,第一路开关量输入为10

001,第二路为10002,⋯⋯⋯

开关量输出映射到00001地址,第一路为00001,第二路为000

02,⋯⋯.

模拟量输入映射到30001地址,第一路为30001,第二路为30

002,⋯⋯

模拟量输出和计数器输入映射到40001地址,第一路为40001,第二路为40002,⋯⋯

当然也可以把所有的数据都放在保持寄存器中,这样对于MODBUS主设备访问时要简单,访问效率能提高,但是处理起来略显繁琐。

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

当前位置:首页 > 成人教育 > 专升本

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

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