单相电源 MODBUS 通讯协议
本协议采用 Modbus 规约RTU 模式,可以方便地与多种形式的组态软件连接。
一、接口定义

接口定义:标准 RS232/485 口定义 (如图所示)
波特率:9600bps (默认)
注:SG 为公共地。
字节格式:一位起始位,八位数据位,一位停止位
设备地址:1- 127 可设 (更改设备地址详细操作见说明书) ,本协议以地址 100 为例。
二、帧格式
2. 1 读取设备寄存器内容 (功能码 0x03)
2. 1. 1 上位机发送的帧格式
|
顺序 |
代码 |
示例 |
说明 |
|
1 |
设备地址 |
0x64 |
0x64 即设备地址 100 |
|
2 |
0x03 |
0x03 |
读寄存器功能码 |
|
3 |
起始寄存器地址高字节 |
0x00 |
寄存器起始地址 |
|
4 |
起始寄存器地址低字节 |
0x00 |
|
|
5 |
寄存器个数高字节 |
0x00 |
寄存器个数 |
|
6 |
寄存器个数低字节 |
0x01 |
|
|
7 |
CRC16 校验低字节 |
0x8D |
CRC 校验数据 |
|
8 |
CRC16 校验高字节 |
0xFF |
2. 1.2 设备回送的帧格式
|
顺序 |
代码 |
说明 |
|
1 |
设备地址 |
设备地址 100 即 0x64 |
|
2 |
0x03 |
功能码 |
|
3 |
回送数据域字节数 (M) |
|
|
4 |
第一个寄存器数据 |
|
… … |
...... |
|
|
第 N 个寄存器数据 |
||
|
M+4 |
CRC16 校验低字节 |
CRC 校验数据 |
|
M+5 |
CRC16 校验高字节 |
2. 1.3 如果起始寄存器地址错误或者寄存器数量错误,仪表回送:
|
顺序 |
代码 |
示例 |
说明 |
|
1 |
设备地址 |
0x64 |
0x64 即设备地址 100 |
|
2 |
0x83 |
0x83 |
功能码 最高位置 1 |
|
3 |
0x02 |
0x02 |
错误代码 |
|
4 |
CRC16 校验低字节 |
0xD0 |
CRC 校验数据 |
|
5 |
CRC16 校验高字节 |
0xEE |
2.2 设置设备寄存器内容 (功能码 0x06)
2. 1. 1 将数据写入单个设备寄存器中,上位机发送的帧格式:
|
顺序 |
代码 |
示例 |
说明 |
|
1 |
设备地址 |
0x64 |
0x64 即设备地址 100 |
|
2 |
0x06 |
0x06 |
写寄存器功能码 |
|
3 |
寄存器地址高字节 |
0x00 |
寄存器起始地址 |
|
4 |
寄存器地址低字节 |
0x0D |
|
|
5 |
写入数据高字节 |
0x04 |
数据 |
|
6 |
写入数据低字节 |
0x4C |
|
|
7 |
CRC16 校验低字节 |
0x12 |
CRC 校验数据 |
|
8 |
CRC16 校验高字节 |
0xC9 |
2. 1.2 设备回送 (写入成功):
如果写入正确,则设备回送相同的数据即原命令返回,设备接受执行.
2. 1.3 设备回送 (地址错误):
|
顺序 |
代码 |
示例 |
说明 |
|
1 |
设备地址 |
0x64 |
0x64 即设备地址 100 |
|
2 |
0x86 |
0x86 |
功能码 最高位置 1 |
|
3 |
0x02 |
0x02 |
错误代码 |
|
4 |
CRC16 校验低字节 |
0xD3 |
CRC 校验数据 |
|
5 |
CRC16 校验高字节 |
0xBE |
2. 1.4 设备回送 (写入的数据超出设备执行范围):
|
顺序 |
代码 |
示例 |
说明 |
|
1 |
设备地址 |
0x64 |
0x64 即设备地址 100 |
|
2 |
0x86 |
0x86 |
功能码 最高位置 1 |
|
3 |
0x03 |
0x03 |
错误代码 |
|
4 |
CRC16 校验低字节 |
0x12 |
CRC 校验数据 |
|
5 |
CRC16 校验高字节 |
0x7E |
三、 设备数据寄存器地址
3. 1 数据寄存器地址
|
序 号 |
参数名称 |
数据 类型 |
单位 |
访 问 规则 |
寄 存 器 地址 |
说明 |
|
1 |
电源工作状态 |
UINT |
R |
0x0000 |
电源工作状态查询 |
|
|
2 |
输出频率 Hz |
UINT |
0. 1Hz |
R |
0x0001 |
电源输出参数查询 |
|
3 |
输出电压 |
UINT |
0. 1V |
R |
0x0002 |
|
|
4 |
输出电流 |
UINT |
R |
0x0003 |
||
|
5 |
输出有功功率 |
UINT |
R |
0x0004 |
||
|
6 |
输出功率因数 |
UINT |
R |
0x0005 |
||
|
7 |
高低档状态 |
UINT |
R |
0x0006 |
||
|
8 |
设置频率 |
UINT |
0. 1Hz |
R/W |
0x0007 |
电源设置参数 |
|
9 |
设置电压 |
UINT |
0. 1V |
R/W |
0x0008 |
|
|
10 |
控制命令 |
UINT |
W |
0x0009 |
电源控制命令 |
|
说明: 所有参数均为无符号双字节组成的字,数据放置为:高位高字节,低位低字节
访问规则中R:表示只可读取、W:表示只可写入、R/W:表示可读可写。
3.2 参数说明
3.2. 1 电源工作状态数据说明:
|
状态数据 |
状态说明 |
状态数据 |
状态说明 |
|
0x0000 |
待机态 |
0x0004 |
过热报警 |
|
0x0001 |
启动态 |
0x0005 |
过载报警 |
|
0x0002 |
设置态 |
其他保留 |
|
|
0x0003 |
短路报警 |
3.2.2 输出频率
读取的参数值表示当前设备输出的频率值,单位为 0. 1Hz
例如:读取的数据为 0x0258 即十进制 600 ,表示当前输出频率为 60.0Hz
3.2.3 输出电压
读取的参数值表示当前设备输出的电压值,单位为 0. 1V
例如:读取的数据为 0x044C 即十进制 1100 ,表示当前输出电压为 110.0V 3.2.4 输出电流
读取的参数值表示当前设备输出的电流值。单位为 0.01A,
例如:读取的数据为 0x00D0 即十进制 208 ,表示当前输出电流为 2.08A; 3.2.5 输出有功功率
读取的参数值表示当前设备输出的有功功率值,单位为 1W
例如:读取的数据为 0x00E4 即十进制 228 ,表示当前输出有功功率为 228W 3.2.6 高低档状态
当前设备输出档位状态:0x00 为低档 0x01 为高档
3.2.7 设置频率
设置频率单位为 0. 1Hz ,设置频率参数为可读可写类型,即可以更改设置频率 也可以读出当前设备的设置频率
例如:欲设置频率 62Hz ,在寄存器地址 0x0C 中写入 0x026c 即可。
3.2.8 设置电压
设置电压单位为 0. 1V ,设置电压参数为可读可写类型,即可以更改设置电压也 可以读出当前设备的设置电压
例如:欲设置电压 120V ,在寄存器地址 0x0D 中写入 0x04B0 即可。
3.2.9 控制命令
|
控制命令数据 |
控制命令说明 |
|
0x0000 |
控制设备停止输出 |
|
0x0001 |
控制设备启动输出 |
|
0x0002 |
保留 |
|
0x0003 |
设备切换至低档 (此条无效) |
|
0x0004 |
设备切换至高档 (此条无效) |
|
其他 |
保留 |
说明:设备在任何状况下都可执行 0x0000 命令即设备停止输出命令
设备只有在待机状态下才可以执行 0x0001 命令即设备启动输出命令
注:设备启动状态时均不可跨档设置电压
举例说明: 电源通讯地址设置为 1 ,波特率固定 9600 ,指令如下:
1 、设置 110V ,01 06 00 08 04 4C 0B 3D
2 、设置 220V ,01 06 00 08 08 98 0E 62
3 、启动,01 06 00 09 00 01 98 08
4 、停止,01 06 00 09 00 00 59 C8