通讯协议001——Modbus报文协议分析

        Modbus协议存在用于串口、以太网、专用网络的版本。各版本的Modbus通信协议在数据模型和功能调用上都是相同的,只有封装方式和一些细节有所不同的。本文对Modbus RTU报文协议进行分析。

        Modbus数据帧格式如下:

通讯协议001——Modbus报文协议分析_第1张图片

        1)从站地址:地址范围1-247,响应报文中的从站地址保持与请求报文的从站地址一致。

        2)功能代码:表示不同的功能。正常响应报文中的功能代码保持与请求报文的功能代码一致,异常响应报文的功能代码=请求报文的功能代码 + 80H。常见功能代码如下:

通讯协议001——Modbus报文协议分析_第2张图片

        3)数据:请求报文中的数据格式根据功能代码而定,响应报文中的数据为返回的数据或错误码。

        4)校验码:2个字节,用于校验数据,RTU采用CRC校验码。

        下文采用Modbus Poll、Modbus Slave软件(登录网信智汇wangxinzhihui.com下载)对常见功能的报文进行分析。

        1)功能码01H:读读线圈(01寄存器)。

         ModbusPoll读取01从站地址为00的线圈开始10个线圈状态。

通讯协议001——Modbus报文协议分析_第3张图片

         报文分析如下:

通讯协议001——Modbus报文协议分析_第4张图片

         其中响应报文返回的数据字节1、字节2组成的0201H,对应的二进制为1000000001。

        2)功能码05H:写单个线圈(01寄存器)

        ModbusPoll设置01从站地址为01的线圈为ON。

通讯协议001——Modbus报文协议分析_第5张图片

        报文分析如下:

通讯协议001——Modbus报文协议分析_第6张图片

         其中:

                 线圈地址:01,高低字节分别为00、01

                 通断标志:ON对应高低位FF00,OFF对应0000

                 正常响应报文与请求报文一致。

3)功能码0FH:写多个线圈(01寄存器)

ModbusPoll设置01从站地址为00的线圈开始10个线圈的状态。

通讯协议001——Modbus报文协议分析_第7张图片

报文分析如下:

通讯协议001——Modbus报文协议分析_第8张图片

其中线圈通断为多个线圈通断状态按Bit组合而成的数据。如0D  02 组合成020DH,对应二进制为1000001101,每个bit对应线圈的状态。

4)功能码02H:读输入线圈(02寄存器)

ModbusPoll读取01从站地址为00的输入线圈开始10个线圈状态。

通讯协议001——Modbus报文协议分析_第9张图片

报文分析如下:

通讯协议001——Modbus报文协议分析_第10张图片

其中响应报文返回的数据字节1、字节2组成的0004H,对应的二进制为0000000100。

4)功能码03H:读保持寄存器(03寄存器)

以下为ModbusPoll读取01从站地址为02的保持寄存器,开始2个字,组成1个浮点数。

通讯协议001——Modbus报文协议分析_第11张图片

报文分析如下:

通讯协议001——Modbus报文协议分析_第12张图片

5)功能码06H:写单个保持寄存器(03寄存器)

以下为ModbusPoll写01从站地址为02的保持寄存器,写入数据为23。

通讯协议001——Modbus报文协议分析_第13张图片

报文分析如下:

通讯协议001——Modbus报文协议分析_第14张图片

其中

写入数据0017H,为数据23

响应报文同请求报文

6)功能码10H:写多个保持寄存器(03寄存器)

以下为ModbusPoll往01从站保持寄存器02地址写入数据120.34,34.768。

通讯协议001——Modbus报文协议分析_第15张图片

报文分析如下:

7)功能码04H:读输入寄存器(04寄存器)

以下为ModbusPoll读取01从站输入寄存器00开始4个字,组成2个浮点数。

通讯协议001——Modbus报文协议分析_第16张图片

报文分析如下:

通讯协议001——Modbus报文协议分析_第17张图片

你可能感兴趣的:(通讯协议,网络,编辑器)