Modbus 基本命令
0x03
– 查询从设备寄存器内容
主设备发送报文 | 从设备地址范围 | 功能码 | 起始寄存器地址 | 寄存器个数 | CRC校验码 |
---|---|---|---|---|---|
/ | 0x01 - 0xFF (1 字节) | 0x03 (1 字节) | (2 字节) | (2 字节) | (2 字节) |
主设备接受报文 | 从设备地址范围 | 功能码 | 数据区字节数 | 数据区 | CRC校验码 |
---|---|---|---|---|---|
/ | 0x01 - 0xFF (1 字节) | 0x03 (1 字节) | 2 * 寄存器个数 (1 字节) | 寄存器内容 (2 * 寄存器个数字节) | (2 字节) |
例子: 读所有数据发送命令举例
主设备发送报文 | 从设备地址范围 | 功能码 | 起始寄存器地址 | 寄存器个数 | CRC校验码 |
---|---|---|---|---|---|
/ | 01 | 03 | 00 00 | 00 47 | xx xx |
说明: 从寄存器 0
开始,连续读 72
(0x47
) 个寄存器数据,每一路数据占用一路寄存器。
主设备接受报文 | 从设备地址范围 | 功能码 | 数据区字节数 | 数据区 | CRC校验码 |
---|---|---|---|---|---|
/ | 01 | 03 | 8E | 12 56 27 01 11 EC ….. (16 进制 2 个字节为一个参数,返回 142 个字节数据 72 个参数) | XX XX |
说明: 数据区总共有 16
组数据,32
个字节,每组数据为 2
个字节,高字节在前低字节在后;CRC 校验码要根据实际数据得出;如下为举例,其它所有参数依此类推。
其中: 数据区 1256H
代表数据 4694
;如电压量程为 30V
,即实际电压 = 4694 / 10000 * 30 = 4694 * 0.003 = 14.082V
;
2701H
代表数据 10001
;如电压量程为 30V
,即实际电压 = 10001 / 10000 * 30 = 10001 * 0.003 = 30.003V
。
0x06
– 对从设备单个寄存器置数
主设备发送报文 | 从设备地址范围 | 功能码 | 起始寄存器地址 | 寄存器个数 | CRC校验码 |
---|---|---|---|---|---|
/ | 0x01 - 0xFF (1 字节) | 0x06 (1 字节) | (2 字节) | (2 字节) | (2 字节) |
主设备接受报文 | 从设备地址范围 | 功能码 | 数据区字节数 | 数据区 | CRC校验码 |
---|---|---|---|---|---|
/ | 0x01 - 0xFF (1 字节) | 0x06 (1 字节) | (2 字节) | (2 字节) | (2 字节) |
例子: 修改采样率命令举例
主设备发送报文 | 从设备地址范围 | 功能码 | 寄存器地址 | 写入的数据 | CRC校验码 |
---|---|---|---|---|---|
/ | 01 | 06 | 00 EF | 00 09 | xx xx |
说明: 00EFH
地址对应的寄存器内容为采样率,0009
是 50ksps
采样率对应的代码值。
主设备接受报文 | 从设备地址范围 | 功能码 | 寄存器地址 | 写入的数据 | CRC校验码 |
---|---|---|---|---|---|
/ | 01 | 06 | 00 EF | 00 09 | xx xx |
说明: 返回值与主设备发送报文相同。
采样率指标
采样率 | 采样点 | 采样方式 | 采样率代码 |
---|---|---|---|
100sps | 512 | 同步采样 | 0000 |
500sps | 512 | 同步采样 | 0001 |
1ksps | 1024 | 同步采样 | 0002 |
2ksps | 1024 | 同步采样 | 0003 |
4ksps | 1024 | 同步采样 | 0004 |
5ksps | 1024 | 同步采样 | 0005 |
10ksps | 2048 | 同步采样 | 0006 |
20ksps | 4096 | 同步采样 | 0007 |
40ksps | 4096 | 同步采样 | 0008 |
50ksps | 4096 | 同步采样 | 0009 |
100ksps | 16384 | 轮询采样 | 0010 |
150ksps | 16384 | 轮询采样 | 0011 |
寄存器参数说明
寄存器地址 (括号内为十进制) | 寄存器内容 | 数据类型 | 数据长度 | 数据说明 (DATA 为从模块读出的数据) |
---|---|---|---|---|
0000 -0007H (0 -7 ) | 1-8 路有效值 | 只读 | 16 位 | 无符号,值 = DATA * 量程 / 10000 |
0018 -001FH (24 -31 ) | 1-8 路频率 | 只读 | 16 位 | 无符号整数,分辨率单位由 00EBH (235 ) 寄存器设置;最大值 65535 表示数据超范围溢出。注意 00EFH (239 ) 采样率设置寄存器要大于输入频率才能准确测量:值= DATA / 100 (分辨率 0.01Hz)值= DATA / 10 (分辨率 0.1Hz,出厂默认)值= DATA (分辨率 1Hz)值= DATA * 10 (分辨率 10Hz) |
0040 -0047H (64 -71 ) | 1-8 路占空比 | 只读 | 16 位 | 无符号,值 = DATA / 100 (单位 %,频率大于 15kHz 误差超过 1%,频率越高误差越大不保证精度) |
0048 -0057H (72 -87 ) | 1-8 路脉宽最大值 | 只读 | 32 位 | 无符号,值 = DATA / 10 (分辨率 0.1μs)(具有最大值记录功能,读取后清零) |
00FEH (254 ) | 采样点数 | 只读 | 16 位 | 总采样点数,不同采样率采样点数不同,参见 采样率指标表 |
00E5H (229 ) | 网口地址 | 1 | 读/写 | 1 -250 (默认 1 ,255 为广播地址) |
00E6H (230 ) | 网口波特率 | 1 | 读/写 | 默认 115200bps (可改为 230400 / 256000 / 460800 / 921600 bps) |
00E9H (233 ) | 更新时间设置 | 1 | 读/写 | 0 : 正常时间(缺省采样点)1 : 时间减半(采样点减半)2 : 四分之一时间(采样点减至四分之一) |
00EBH (235 ) | 频率分辨率设置 | 1 | 读/写 | 0 : 0.01Hz1 : 0.1Hz(缺省)2 : 1Hz3 : 10Hz(针对 0018H -001FH 频率数据寄存器) |
00EFH (239 ) | 采样率 | 1 | 读/写 | 0 : 100sps1 : 500sps2 : 1ksps3 : 2ksps4 : 4ksps5 : 5ksps6 : 10ksps7 : 20ksps(缺省)8 : 40ksps9 : 50ksps10 : 100ksps(波形触发记录功能无效)11 : 150ksps(波形触发记录功能无效)(过采样原理:采样率根据实际输入的频率范围来选择,采样率越高,采到的干扰信号越多) |