Modbus RTU相关常识和通信示例

更新时间:2024-04-21 11:04:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Modbus RTU – 基本功能

1 关于ModBus

ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。 1.1 报文结构

以串行数据传输为基础,通过一位接着一位进行传送。 1.2协议数据单元(PDU)

1.2.1 Modbus PDU(协议数据单元)由功能码和实际数据两部分组成。

1.2.2 Modbus 串行通讯的消息帧

站号(站地址)

站号字段为1字节长,可能选择0~247站点。

选择0 地址表示选择所有的子机站,代表广播消息的意思。 FC(RTU功能代码)

FC字段为1字节长,用以下所示的0~255的值进行定义。带有网格部分表示使用的FC。请不要使用未使用的FC。否则会成为异常应答。常用ModBus的功能码FC定义如下: 01 READ COIL STATUS

01 读取线圈状态

02 READ INPUT STATUS 02 读取离散量输入。 03 READ HOLDING REGISTER 04 READ INPUT REGISTER 05 WRITE SINGLE COIL

03 读取保持寄存器。

04 读取输入寄存器。 05 强置单线圈。

06 预置单寄存器 15 强置多线圈。

16 预置多寄存器

06 WRITE SINGLE REGISTER 15 WRITE MULTIPLE COIL 07

16 WRITE MULTIPLE REGISTER

数据区

数据字段包含所有的信息(功能代码(地址)、字节计数、数据数、数据等)。有关各消息类型(广播、查询、正常应答、异常应答) 的信息字段的详细情况; CRC校验 CRC-16 检查方式的2字节长数据。由于信息字段的长度为可变,由FC和字节计数数据计算出在CRC-16代码的计算中所必要的帧长。 CRC-16计算的详情和算法请参照「CRC-16」?

1.2.3 PDU消息类型 – 通讯过程

一般工业设备中,消息类型有查询、正常应答、异常应答、广播4种。 查询(Query)

主机对于单一的现场设备进行消息的发送。 正常应答(Normal Response)

接收到来自主机的查询后,进行针对请求的处理,并返回所相应的正常应答。 异常应答(Error Response)

现场设备接收到查询,但由于是指定了无效的功能代码等不能执行所请求的功能,则返回异常应答。

在异常应答中,附有说明不能执行请求的理由的消息。

另外,在CRC出错和物理性传送出错(奇偶校验出错、成帧出错、超程出错)时,不能返回应答。 广播(Broadcast)

主机使用地址0对所有子机进行消息发送。接收到广播消息的所有子机按请求的功能执行。这个处理在主机超时时结束。 2 消息种类

在RTU的消息种类中,有功能读出、单一功能写入、连续功能写入、维护代码、线圈读出、线圈写入、连续线圈写入、异常应答共8种。 下面为常用的三种消息及应答。

2.1 功能读出

查询(Query)

1 字节 站号 1 字节 03H

2 字节 2 字节 2 字节 功能代码 读出数据数 出错检查 HiHi Lo Lo 正常应答(Normal response)

1 字节 站号 1 字节 1 字节 2~100 字节 2 字节 字节计数 读出数据数 出错检查 03H Hi Lo (数据 0) Hi Lo (数据 1)…… 2.2单一功能写入

查询(Query)

1 字节

1 字节 06H 2 字节 2 字节

Lo 2 字节 写入数据 出错检查 站号

功能代码 Hi Lo Hi 正常应答(Normal response)

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

站号 06H 功能代码 写入数据 出错检查 2 字节

2.3 连续功能写入

查询(Query)

1 字节 1 字节 字节

2 字节 2 字节

写入数据数 1 字节 字节计数 2~100 字节

写入数据 2

出错检查 站号 10H 功能代码

正常应答(Normal response)

1 字节 1 字节

2 字节 2 字节 2 字节 功能代码 写入数据数 出错检查 站号 10H

3 常用指令及应答示例: 如:

此处第一行为主机发出查询现场从站变频器的查询信息,即我们所说的发送请求;其中05是要查询的从站地址;03是读取保持寄存器;0806是要求查询的数据地址(或者某一设备的功能代码);0001是查询的数据长度;67EF是CRC16校验结果;

第二行为从站返回的正常应答:其中0503同上,01为数据长度;2710为返回的实际数据,即0806寄存器中存储的数据位16进制2710(10进制10000);A3B8为CRC校验结果。

本文来源:https://www.bwwdw.com/article/4jxp.html

Top