ModbusRTU通信协议解析测试

文章目录

  • 概念
  • 一、工具准备
  • 二、协议分析
    • 1.报文格式
    • 2.寄存器
    • 3.功能码
  • 三、协议测试
    • 1.读取保持寄存器
    • 2.读取输出线圈


概念

Modbus是工控行业广泛应用的一种通讯协议,与物理层无关,其支持多种电气接口,包括RS232、RS485、TCP/IP。Modbus协议为应用层报文传输协议,定义了一个控制器能够认识使用的消息结构,,包括ASCII、RTU、TCP三种报文类型。其中 Modbus-RTU 最常用,本章主要分析ModbusRTU协议。

一、工具准备

为了更加直观的分析ModbusRTU通信协议报文格式,本章采用了如下调试工具。

VSPD(全称Configure Virtual Serial Port Driver):在没有物理串口的情形下,用来给电脑创建虚拟串口使用。
ModbusRTU通信协议解析测试_第1张图片

ModbusPoll软件:主要用于仿真Modbus主站或Modbus客户端,选择虚拟串口软件配对的串口之一,并设置好参数,便可连接。
ModbusRTU通信协议解析测试_第2张图片
ModbusSlave软件:主要用于仿真Modbus从站或Modbus服务器,选择虚拟串口软件配对的另一个串口,并设置好参数,便可连接。
ModbusRTU通信协议解析测试_第3张图片

二、协议分析

1.报文格式

Modbus协议在串行链路上的报文格式如下所示:
在这里插入图片描述

2.寄存器

Modbus协议规定了4个寄存器,如下表所示:
ModbusRTU通信协议解析测试_第4张图片

3.功能码

Modbus协议采用功能码,用于针对上述寄存器的读写,如下表所示:
ModbusRTU通信协议解析测试_第5张图片

三、协议测试

1.读取保持寄存器

ModbusRTU通信协议解析测试_第6张图片
ModbusRTU通信协议解析测试_第7张图片
如上图所示:主站发送报文:01 03 00 00 00 0A C5 CD.
从站回复报文:01 03 14 00 11 00 16 00 21 00 2C 04 83 12 34 33 FF EE FF 11 23 EE 36 DC 4B.
主站发送报文含义:0x01:从站地址,0x03:功能码, 00 :地址起始(高),0x00:地址起始(低),0x00:数量(高),0A:数量(低),2C 04 :校验。即读取1号从站保持寄存器,起始地址为0,数量为0x0A=10,共10个保持寄存器的值。(注:报文表示的地址都为相对地址)
从站回复报文含义:01:从站地址,03:功能码,0x14:字节计数, 00 11 00 16 00 21 00 2C 04 83 12 34 33 FF EE FF 11 23 EE 36 :每两个字节分别对应每个保持寄存器的值的高低位。 DC 4B:校验。

2.读取输出线圈

ModbusRTU通信协议解析测试_第8张图片
如上图所示:主站发送报文:01 01 00 00 00 0A BC 0D.
从站回复报文:01 01 02 A2 00 C0 9C
主站发送报文含义:0x01:从站地址,0x01:功能码,读取输出线圈的状态值, 00 :地址起始(高),00:地址起始(低),00:数量(高),0A:数量(低),2C 04 :校验。即读取1号从站保持寄存器,起始地址为0,数量为0x0A=10,共10个保持寄存器的状态值。
从站回复报文含义:0x01:从站地址,0x01:功能码,读取输出线圈的状态值 ,0x02: 字节计数,0xA2 = 1010 0010 地址0-7线圈分别对应的状态值。0x00 = 0000 0000 地址8-9线圈对应的状态值。

你可能感兴趣的:(通信,网络,网络通信,modbus,串口通信)