MODBUS规约报文解析
2018-03-27 08:59
701 查看
MODBUS规约报文解析报文格式,报文全部为16进制,遥信状态需要转换为二进制:
[align=center]
[/align][align=center]
[/align] MODBUS-RTU报文模型
一个报文就是一帧数据,一个数据帧就一个报文: 指的是一串完整的指令数据,就像上面的一串数据。主机对从机读数据操作
从机对主机返回内容
这样MODBUS主机就完成了一次对从机数据的读操作,实现了通讯。MODBUS-RTU常用功能码
寄存器起始地址(起始数据地址)
报文实例
遥控点号:开关操作=0300H 合操作
TX: 01 06 03 0000 02 08 4F //06表示遥控功能码,02表示分操作;
RX: 01 06 03 0000 02 08 4F //06表示遥控功能码,02表示分操作;
遥控点号:开关操作=0300H 分操作
TX: 01 06 03 0000 01 48 4E //06表示遥控功能码,01表示分操作;
RX: 01 06 03 0000 01 48 4E //06表示遥控功能码,01表示分操作;
遥测报文:每个遥测值占用2个字节,即1个寄存器,最大值为:0x0000H~0xFFFFH,即:0~65535。
发送数据:01 03 02 00 00 0D 85 B7 //16时27分02秒
接收数据:01 03 1A 00 00 00 00 00 00 1E AE 00 00 1EAD 1E AD 00 00 00 00 00 00 00 00 00 00 6A 96 77 67
总召换的电度
共有4个电度:
正向有功积分电度=0301H 10000.000(0x00989680),
正向无功积分电度=0302H 0.000 (0x0),
反向有功积分电度=0303H 0.000(0x0),
反向无功积分电度=0304H 0.000(0x0)。
TX:01 03 81 02 00 08 CD F0 //8102为总召唤,00 08 为数据长度
RX: 01 03 10 0098 96 80 00 00 00 00 00 00 00 00 00 00 00 00 15 64 //10为报文数据长度。
[align=center]
[/align]
[align=center]
主站发送报文 | 地址 | 功能码 | 寄存器起始地址 | 读取数据长度 | CRC校验码 | ||
01 | 03 | 01 | 00 | 00 | 02 | C5 | F7 |
说明 (读取01地址设备03功能码遥信状态) | 设备地址 | 设备的规约或点表查看 (遥信、遥测、遥控) | 从设备的:0x0100H 寄存器读取遥信状态,可以在规约或寄存器点表中查看。 0100说明:其中00为低位(1-8个遥信),01为高位(9-16个遥信) | 读取:0x0100H、0x0101H 两个寄存器数据,一共读取32个遥信位置。 | 可通过串口软件自动计算出 |
主站接受报文 | 地址 | 功能码 | 数据长度 | 寄存器1状态0100H | 寄存器2状态0101H | CRC校验码 | ||
01 | 03 | 04 | 03 | 43 | 00 | 00 | 0B | A3 |
说明 (读取01地址设备03功能码遥信状态) | 设备地址 | 设备的规约或点表查看 (遥信、遥测、遥控) | 表示收到4个数据 (03、03、00、00) | 高位状态 (9~16号遥信状态,需转换成二进制) 00000011 第9、10个遥信为合位 | 低位状态 (1~8号遥信状态,需转换成二进制) 01000011 第1、2、7个遥信为合位 | 高位 (17~24号遥信状态,需转换成二进制) | 低位 (25~32号遥信状态,需转换成二进制) | 设备自动计算出 |
设备地址 | 功能代码 | 数据格式 | CRC校验L | CRC校验H |
8bit | 8bit | N*8bit | 8bit | 8bit |
0x01 | 03 | 00 01 | 00 01 | D5 CA |
从机地址 | 功能号 | 数据地址 | 读取数据个数 | CRC校验 |
0x01 | 03 | 02 | 00 17 | F8 4A |
从机地址 | 功能号 | 数据字节个数 | 两个字节数据 | CRC校验 |
数据类型 | 读功能码 | 写功能码 | 对象类型 |
离散量输入 | 02 | | 单个位 |
线圈状态 | 01 | 05,15 | 单个位 |
输入寄存器 | 04 | | 16位字 |
保持寄存器 | 03 | 06,16 | 16位字 |
数据类型 | 参数地址,寄存器编号 |
离散量输入 | 00001~0FFFF |
线圈状态 | 10001~1FFFF |
输入寄存器 | 30001~3FFFF |
保持寄存器 | 40001~4FFFF |
遥控点号:开关操作=0300H 合操作
TX: 01 06 03 0000 02 08 4F //06表示遥控功能码,02表示分操作;
RX: 01 06 03 0000 02 08 4F //06表示遥控功能码,02表示分操作;
遥控点号:开关操作=0300H 分操作
TX: 01 06 03 0000 01 48 4E //06表示遥控功能码,01表示分操作;
RX: 01 06 03 0000 01 48 4E //06表示遥控功能码,01表示分操作;
遥测报文:每个遥测值占用2个字节,即1个寄存器,最大值为:0x0000H~0xFFFFH,即:0~65535。
发送数据:01 03 02 00 00 0D 85 B7 //16时27分02秒
接收数据:01 03 1A 00 00 00 00 00 00 1E AE 00 00 1EAD 1E AD 00 00 00 00 00 00 00 00 00 00 6A 96 77 67
总召换的电度
共有4个电度:
正向有功积分电度=0301H 10000.000(0x00989680),
正向无功积分电度=0302H 0.000 (0x0),
反向有功积分电度=0303H 0.000(0x0),
反向无功积分电度=0304H 0.000(0x0)。
TX:01 03 81 02 00 08 CD F0 //8102为总召唤,00 08 为数据长度
RX: 01 03 10 0098 96 80 00 00 00 00 00 00 00 00 00 00 00 00 15 64 //10为报文数据长度。
[align=center]
电度:( 03命令码) | 寄存器号 | 遥测报文值 | 转换 10进制值 |
正向有功积分电度 | 0301H | 00 98 96 80 | 10000000 |
正向无功积分电度 | 0302H | 00 00 00 00 | 0 |
反向有功积分电度 | 0303H | 00 00 00 00 | 0 |
反向无功积分电度 | 0304H | 00 00 00 00 | 0 |
相关文章推荐
- Java实现的串口通信功能示例
- 深入分析Visual C++进行串口通信编程的详解
- 基于Java编写串口通信工具
- C#串口通信程序实例详解
- java 串口通信实现流程示例
- Android USB转串口通信开发实例详解
- java 串口通信详细及简单实例
- 使用Java实现串口通信
- Android 串口通信编程及串口协议分析
- 最近在研究 PLC机器 的 MODBUS RTU 通讯协议与C# 交互
- modbus rtu协议
- vspd
- Modbus网口设备接入多比物联网云平台教程
- modbus协议库
- modbus 功能码
- Modbus网口设备接入多比物联网云平台教程
- Modbus串口设备接入多比物联网云平台
- Modbus网口设备接入多比物联网云平台教程
- java RXTXcomm串口通信配置
- stm32串口通信(一)