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(波形触发记录功能无效)(过采样原理:采样率根据实际输入的频率范围来选择,采样率越高,采到的干扰信号越多) |