MODBUS协议功能码及报文解析.docx

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

MODBUS协议功能码及报文解析.docx

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

MODBUS协议功能码及报文解析.docx

MODBUS协议功能码及报文解析

MODBUS协议

Modbus是一种串行通信协议,是Modicon于1979年,为使用可编程逻辑控制器(PLC)而发表的。

事实上,它已经成为工业领域通信协议标准,并且现在是工业电子设备之间相当常用的连接方式。

Modbus比其他通信协议使用的更广泛的主要原因有:

公开发表并且无版税要求

相对容易的工业网络部署

对供应商来说,修改移动原生的位或字节没有很多限制

Modbus允许多个设备连接在同一个网络上进行通信,举个例子,一个由测量温度和湿度的装置,并且将结果发送给计算机。

在数据采集与监视控制系统(SCADA)中,Modbus通常用来连接监控计算机和remoteterminalunit(RTU)。

Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。

大多数Modbus设备通信通过串口EIA-485物理层进行[1]。

对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。

ModbusRTU是一种紧凑的,采用二进制表示数据的方式,ModbusASCII是一种人类可读的,冗长的表示方式。

这两个变种都使用串行通讯(serialcommunication)方式。

RTU格式后续的命令/数据带有循环冗余校验的校验和,而ASCII格式采用纵向冗余校验的校验和。

被配置为RTU变种的节点不会和设置为ASCII变种的节点通信,反之亦然。

对于通过TCP/IP(例如以太网)的连接,存在多个Modbus/TCP变种,这种方式不需要校验和的计算。

对于所有的这三种通信协议在数据模型和功能调用上都是相同

的,只有封装方式是不同的。

Modbus有一个扩展版本ModbusPlus(Modbus+或者MB+),不过此协定是Modicon专有的,和Modbus不同。

它需要一个专门的协处理器来处理类似HDLC的高速令牌旋转。

它使用1Mbit/s的双绞线,并且每个节点都有转换隔离装置,是一种采用转换/边缘触发而不是电压/水平触发的装置。

连接ModbusPlus到计算机需要特别的接口,通常是支持ISA(SA85),PCI或者PCMCIA总线的板卡。

Modbus协议是一个master/slave架构的协议。

有一个节点是master节点,其他使用Modbus协议参与通信的节点是slave节点。

每一个slave设备都有一个唯一的地址。

在串行和MB+网络中,只有被指定为主节点的节点可以启动一个命令(在以太网上,任何一

个设备都能发送一个Modbus命令,但是通常也只有一个主节点设备启动指令)。

一个ModBus命令包含了打算执行的设备的Modbus地址。

所有设备都会收到命令,但只有指定位置的设备会执行及回应指令(地

址0例外,指定地址0的指令是广播指令,所有收到指令的设备都会执行,不过不回应指令)。

所有的Modbus命令包含了检查码,以确定到达的命令没有被破坏。

基本的ModBus命令能指令一个RTU

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

有许多modems和网关支持Modbus协议,因为Modbus协议

很简单而且容易复制。

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

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

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

MODBUS通信过程如下图

MODBUSRTU报文格式

设备地

功能代

CRC校

起始位

数据

结束符

T1-T2-T3-T4

8Bit

8Bit

n个8Bit

16Bit

T1-T2-T3-T4

MODBUSTCP中的设备标识,功能码等与MODBUSRTU相

同,可以认为是在MODBUSRTU报文的前边加了一个头,去掉了

CRC校验这个尾。

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

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

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

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

下表是MODBUS的功能码。

ModBus功能码

功能

作用

名称

 

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

03读取保持寄存器

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

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

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

取状态

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

09编程(只用于484)使主机模拟编程器作用,修改PC从机逻辑

可使主机与一台正在执行长程序任务从机通

10控询(只用于484)信,探询该从机是否已完成其操作任务,仅在

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

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

11读取事件计数

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

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

12读取通信事件记录信事件记录。

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

给出有关错误

编程(184/384484

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

584)

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

探询(184/384484

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

584)

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

预置多寄存器

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

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

报告从机标识

示灯的状态

16

17

18

19

20

21

22〜

64

65〜

72

73〜

119

120〜

127

128〜

 

(884和MICRO

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

84)

 

重置通信链路

发生非可修改错误后,是从机复位于已知状态,

可重置顺序子节

 

读取通用参数

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

(584L)

 

写入通用参数

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

(584L)

保留作扩展功能备

保留以备用户功能

留作用户功能的扩展编码

所用

非法功能

保留

留作内部作用

保留

用于异常应答

255

 

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

功能

数据类型

01

02

03

16位整型

04

16位整型

05

06

整16位整型

15

16

整16位整型

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

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

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

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

MODBUS请求

功能码

1BYTE

0X01

起始地址

2BYTE

0X0000TO0XFFFF

读取数量

2BYTE

1TO2000(0X7D0)

 

MODBUS响应

功能码

1BYTE

0X01

字节计数

1BYTE

N

线圈状态

nBYTE

n=NorN+1

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

错误响应

功能码

1BYTE

0X01+0X80

错误代码

1BYTE

0x1or0x2or0x3or0x4

 

举例

请求

响应

域名称

数据(hex)

域名称

数据(hex)

功能码

01

功能码

01

起始地址咼(字节)

00

字节计数

03

起始地址低(字节)

13

27(h)〜20状态

CD

读取数量高(字节)

00

35(h)〜28状态

6B

读取数量低(字节)

13

38(h)〜36状态

05

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

MODBUS请求

功能码

1BYTE

0X02

起始地址

2BYTE

0X0000TOOXFFFF

读取数量

2BYTE

1TO2000(0X7D0)

MODBUS响应

功能码

1BYTE

0X02

字节计数

1BYTE

N

输入状态

nBYTE

n=NorN+1

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

错误响应

功能码

1BYTE

0X02+0X80

错误代码

1BYTE

0x1or0x2or0x3or0x4

 

举例

请求

响应

域名称

数据(hex)

域名称

数据(hex)

功能码

02

功能码

02

起始地址咼(字节)

00

字节计数

03

起始地址低(字节)

C4

204(h)〜197状态

AC

读取数量高(字节)

00

212(h)〜205状态

DB

读取数量低(字节)

16

218(h)〜213状态

35

03读保持寄存器MODBUS地址40001

MODBUS请求

功能码

1BYTE

0X03

起始地址

2BYTE

0X0000TOOXFFFF

读取数量

2BYTE

1TO125(0X7D)

 

MODBUS响应

功能码

1BYTE

0X03

字节计数

1BYTE

N*2

输入状态

N*2BYTE

 

错误响应

功能码

1BYTE

0X03+0X80

错误代码

1BYTE

0x1or0x2or0x3or0x4

 

举例

请求

响应

域名称

数据(hex)

域名称

数据(hex)

功能码

03

功能码

03

起始地址咼(字节)

00

字节计数

06

起始地址低(字节)

6B

寄存器高(108)

02

读取数量高(字节)

00

寄存器低(108)

2B

读取数量低(字节)

03

寄存器高(109)

00

寄存器低(109)

00

寄存器高(110)

00

寄存器低(110)

64

 

04输入寄存器MODBUS地址30001

MODBUS请求

功能码

1BYTE

0X04

起始地址

2BYTE

0X0000TO0XFFFF

读取数量

2BYTE

1TO125(0X7D)

 

MODBUS响应

功能码

1BYTE

0X04

字节计数

1BYTE

N*2

输入状态

N*2BYTE

 

错误响应

功能码

1BYTE

0X04+0X80

错误代码

1BYTE

0x1or0x2or0x3or0x4

举例

请求

响应

域名称

数据(hex)

域名称

数据(hex)

功能码

04

功能码

04

起始地址咼(字节)

00

字节计数

02

起始地址低(字节)

08

输入寄存器高(9)

00

读取数量高(字节)

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

当前位置:首页 > 工程科技 > 交通运输

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

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