i=1 时的寄存器地址详情 | Modbus RTU/TCP 功能码说明 | 数据格式参考
协议说明:本3相电表同时支持 Modbus RTU(串行总线)和 Modbus TCP(以太网/IP)两种协议,共用寄存器地址表,仅通讯层和部分配置不同
通用功能码(RTU/TCP 均支持):
03 - 读取保持寄存器(常用)
04 - 读取输入寄存器
0x10 - 写入多个寄存器(修改参数)
0x06 - 写入单个寄存器(ATS专用)
默认通讯配置提示:
当i=1时,地址偏移量为 121*(1-1) = 0,因此实际寄存器地址 = 基础地址 + 0 = 基础地址
注意:Modbus TCP 与 RTU 共用一套寄存器地址表(十六进制),无需额外转换
| 数据格式 | 说明 | 字节长度 | 适用协议 |
|---|---|---|---|
| Int | 16位有符号整数 | 2字节 | RTU / TCP |
| long | 32位有符号整数(高位在前) | 4字节 | RTU / TCP |
| XXXX | 16位无符号整数(用于拉合闸操作) | 2字节 | RTU / TCP |
| 对比项 | Modbus RTU | Modbus TCP | |
|---|---|---|---|
| 传输层 | 串行总线(RS485/RS232) | 以太网(TCP/IP v4) | |
| 通讯标识 | 从站地址(1-247,帧头) | Unit ID(1-247,应用层字段)+ IP地址 | |
| 端口/波特率 | 需配置波特率、校验位、停止位 | 固定端口1502,无需串口参数 | |
| 传输可靠性 | 无内置校验,依赖CRC16校验码 | 依赖TCP/IP内置的重传、校验机制,额外带MBAP头 | |
| 传输距离 | RS485 最大约1200米(需中继) | 遵循以太网传输规则,最大约100米(有线),无线无距离限制 | |
| 并发能力 | 单总线最多32个从站,无并发 | 支持多客户端同时连接,并发通讯能力强 | |
| 适用场景 | 现场设备、近距离、少节点 | 远程监控、多节点、网络化部署 |
MBAP 报文头说明:
Modbus TCP 报文包含6字节MBAP头,结构如下(无需用户手动配置,通讯库自动处理):
重要提示(含TCP补充):
| 寄存器地址(Hex) | 数据内容 | 数据格式 | 数据长度(word) | 单位 | 读写属性 | 说明 |
|---|---|---|---|---|---|---|
| 0x015C | AB线电压 | Int | 1 | 0.1V | R | Uab |
| 0x015D | BC线电压 | Int | 1 | 0.1V | R | Ubc |
| 0x015E | CA线电压 | Int | 1 | 0.1V | R | Uca |
| 0x015F | A相电压 | Int | 1 | 0.1V | R | Ua |
| 0x0160 | B相电压 | Int | 1 | 0.1V | R | Ub |
| 0x0161 | C相电压 | Int | 1 | 0.1V | R | Uc |
| 0x0162 | A相电流 | Int | 1 | 0.01A | R | Ia |
| 0x0163 | B相电流 | Int | 1 | 0.01A | R | Ib |
| 0x0164 | C相电流 | Int | 1 | 0.01A | R | Ic |
| 0x0165 | N相电流 | Int | 1 | 0.01A | R | In |
| 0x0176 | A相电压频率 | Int | 1 | 0.01Hz | R | FRa |
| 0x0177 | B相电压频率 | Int | 1 | 0.01Hz | R | FRb |
| 0x0178 | C相电压频率 | Int | 1 | 0.01Hz | R | FRc |
数据解析示例:
若A相电压寄存器(0x015F)读取值为2200,则实际电压 = 2200 × 0.1V = 220.0V
若A相电流寄存器(0x0162)读取值为150,则实际电流 = 150 × 0.01A = 1.50A
| 寄存器地址(Hex) | 数据内容 | 数据格式 | 数据长度(word) | 单位 | 读写属性 | 说明 |
|---|---|---|---|---|---|---|
| 0x0166 | 总有功功率 | Int | 1 | 0.1W | R | P |
| 0x0167 | A相有功功率 | Int | 1 | 0.1W | R | Pa |
| 0x0168 | B相有功功率 | Int | 1 | 0.1W | R | Pb |
| 0x0169 | C相有功功率 | Int | 1 | 0.1W | R | Pc |
| 0x016A | 总无功功率 | Int | 1 | 0.1VAR | R | Q |
| 0x016B | A相无功功率 | Int | 1 | 0.1VAR | R | Qa |
| 0x016C | B相无功功率 | Int | 1 | 0.1VAR | R | Qb |
| 0x016D | C相无功功率 | Int | 1 | 0.1VAR | R | Qc |
| 0x016E | 总视在功率 | Int | 1 | 0.1VA | R | S |
| 0x016F | A相视在功率 | Int | 1 | 0.1VA | R | Sa |
| 0x0170 | B相视在功率 | Int | 1 | 0.1VA | R | Sb |
| 0x0171 | C相视在功率 | Int | 1 | 0.1VA | R | Sc |
| 0x0172 | 总功率因数 | Int | 1 | % /10 | R | cosQ S |
| 0x0173 | A相功率因数 | Int | 1 | % /10 | R | cosQ A |
| 0x0174 | B相功率因数 | Int | 1 | % /10 | R | cosQ B |
| 0x0175 | C相功率因数 | Int | 1 | % /10 | R | cosQ C |
数据解析示例:
若总有功功率寄存器(0x0166)读取值为5000,则实际功率 = 5000 × 0.1W = 500.0W
若总功率因数寄存器(0x0172)读取值为95,则实际功率因数 = 95 ÷ 10 = 0.95
| 寄存器地址(Hex) | 数据内容 | 数据格式 | 数据长度(word) | 单位 | 读写属性 | 说明 |
|---|---|---|---|---|---|---|
| 0x0180 | 总有功电能 | long | 2 | 0.01Kwh | R | 占用0x0180和0x0181两个寄存器 |
| 0x0182 | A相有功电能 | long | 2 | 0.01Kwh | R | 占用0x0182和0x0183两个寄存器 |
| 0x0184 | B相有功电能 | long | 2 | 0.01Kwh | R | 占用0x0184和0x0185两个寄存器 |
| 0x0186 | C相有功电能 | long | 2 | 0.01Kwh | R | 占用0x0186和0x0187两个寄存器 |
| 0x0188 | 正向总有功电能 | long | 2 | 0.01Kwh | R | 占用0x0188和0x0189两个寄存器 |
| 0x018A | 正向A相有功电能 | long | 2 | 0.01Kwh | R | 占用0x018A和0x018B两个寄存器 |
| 0x018C | 正向B相有功电能 | long | 2 | 0.01Kwh | R | 占用0x018C和0x018D两个寄存器 |
| 0x018E | 正向C相有功电能 | long | 2 | 0.01Kwh | R | 占用0x018E和0x018F两个寄存器 |
| 0x0190 | 反向总有功电能 | long | 2 | 0.01Kwh | R | 占用0x0190和0x0191两个寄存器 |
| 0x0192 | 反向A相有功电能 | long | 2 | 0.01Kwh | R | 占用0x0192和0x0193两个寄存器 |
| 0x0194 | 反向B相有功电能 | long | 2 | 0.01Kwh | R | 占用0x0194和0x0195两个寄存器 |
| 0x0196 | 反向C相有功电能 | long | 2 | 0.01Kwh | R | 占用0x0196和0x0197两个寄存器 |
| 0x0198 | 总无功电能 | long | 2 | 0.01kVARh | R | 占用0x0198和0x0199两个寄存器 |
| 0x019A | A相无功电能 | long | 2 | 0.01kVARh | R | 占用0x019A和0x019B两个寄存器 |
| 0x019C | B相无功电能 | long | 2 | 0.01kVARh | R | 占用0x019C和0x019D两个寄存器 |
| 0x019E | C相无功电能 | long | 2 | 0.01kVARh | R | 占用0x019E和0x019F两个寄存器 |
| 0x01A0 | 总视在电能 | long | 2 | 0.01kVAh | R | 占用0x01A0和0x01A1两个寄存器 |
| 0x01A2 | A相视在电能 | long | 2 | 0.01kVAh | R | 占用0x01A2和0x01A3两个寄存器 |
| 0x01A4 | B相视在电能 | long | 2 | 0.01kVAh | R | 占用0x01A4和0x01A5两个寄存器 |
| 0x01A6 | C相视在电能 | long | 2 | 0.01kVAh | R | 占用0x01A6和0x01A7两个寄存器 |
数据解析示例:
若总有功电能寄存器(0x0180-0x0181)读取值为0x0001 0x86A0(即十进制67616),则实际电能 = 67616 × 0.01Kwh = 676.16Kwh
注意:long类型数据占用两个连续寄存器,高位寄存器在前,低位寄存器在后(RTU/TCP 一致)
| 寄存器地址(Hex) | 数据内容 | 数据格式 | 数据长度(word) | 读写属性 | 说明 |
|---|---|---|---|---|---|
| 0x0179 | 仪表通讯地址(Unit ID) | Int | 1 | R | 范围:1-247(默认值:1,RTU/TCP 共用) |
| 0x017A | 通信波特率 | Int | 1 | R | 0-600;1-1200;2-2400;3-4800;4-9600(默认值:4,对应9600,仅RTU有效) |
| 0x017B | 通信数据格式 | Int | 1 | R | 0-N.8.1;1-O.8.1;2-E.8.1(仅RTU有效,TCP无需此参数) |
| 0x017D | 设备IP地址 | long | 2 | R | 默认:192.168.1.88(仅TCP有效,按字节转换为32位整数) |
| 寄存器地址(Hex) | 数据内容 | 数据格式 | 数据长度(word) | 读写属性 | 说明 |
|---|---|---|---|---|---|
| 0x0179 | 仪表通讯地址(Unit ID) | Int | 1 | W | 范围:1-247,修改后需重启生效(默认值:1,RTU/TCP 共用) |
| 0x017A | 通信波特率 | Int | 1 | W | 0-600;1-1200;2-2400;3-4800;4-9600,修改后需重启生效(仅RTU有效) |
| 0x017B | 通信数据格式 | Int | 1 | W | 0-N.8.1;1-O.8.1;2-E.8.1(仅RTU有效,TCP无需此参数) |
| 0x017C | 拉合闸操作 | XXXX | 1 | W | 0x5555=合闸;0xAAAA=拉闸,仅支持这两个值(RTU/TCP 一致) |
| 0x017D | 设备IP地址 | long | 2 | W | 仅TCP有效,修改后需重启以太网生效,需确保与上位机同一网段 |
重要警告(含TCP补充):
ATS(自动转换开关)专用寄存器,支持多种功能码操作,适配3相电表 Modbus RTU/TCP 使用
| 输入地址(Hex) | 映射地址(Hex) | 功能码0x02(读取输入状态) | 功能码0x03(读取保持寄存器) | 功能码0x04(读取输入寄存器) | 功能码0x06(写入单个寄存器) |
|---|---|---|---|---|---|
| 0x0100 | 0x0001 | 读取A通道输入状态 | 读取设备型号 | - | - |
| 0x0101 | 0x0002 | 读取B通道输入状态 | 读取热启动值 | - | 设置热启动值AABB |
| 0x0102 | 0x0003 | 读取A-DC直流供电状态 | 读取电能清零值 | - | 清零电能 |
| 0x0103 | 0x0004 | 读取B-DC直流供电状态 | 读取A电能清零值 | - | 清零A通道电能值 |
| 0x0104 | 0x0005 | - | 读取B电能清零值 | - | 清零B通道电能值 |
| 0x0105 | 0x0006 | - | 读取优先通道设置值 | - | 设置优先通道 |
| 0x0106 | 0x0007 | - | 读取当前输出通道参数 | - | - |
| 0x0107 | 0x0010 | - | - | 读取A通道电压 | - |
| 0x0108 | 0x0011 | - | - | 读取A通道电流 | - |
| 0x0109 | 0x0012 | - | - | 读取A通道功率 | - |
| 0x010A | 0x0013 | - | - | 读取A通道频率 | - |
| 0x010B | 0x0014 | - | - | 读取A通道电能 | - |
| 0x010D | 0x0016 | - | - | 读取B通道电压 | - |
| 0x010E | 0x0017 | - | - | 读取B通道电流 | - |
| 0x010F | 0x0018 | - | - | 读取B通道功率 | - |
| 0x0110 | 0x0019 | - | - | 读取B通道频率 | - |
| 0x0111 | 0x001A | - | - | 读取B通道电能 | - |
| 0x0112 | 0x0028 | - | - | 读取A通道电压/10 | - |
| 0x0113 | 0x0029 | - | - | 读取A通道电流/10 | - |
| 0x0114 | 0x002A | - | - | 读取A通道功率/10 | - |
| 0x0115 | 0x002B | - | - | 读取A通道频率/10 | - |
| 0x0116 | 0x002C | - | - | 读取A通道功率因数/10 | - |
| 0x0117 | 0x002D | - | - | 读取A通道电能高2字节/10 | - |
| 0x0118 | 0x002E | - | - | 读取A通道电能低2字节/10 | - |
| 0x0119 | 0x002F | - | - | 读取B通道电压/10 | - |
| 0x011A | 0x0030 | - | - | 读取B通道电流/10 | - |
| 0x011B | 0x0031 | - | - | 读取B通道功率/10 | - |
| 0x011C | 0x0032 | - | - | 读取B通道频率/10 | - |
| 0x011D | 0x0033 | - | - | 读取B通道功率因数/10 | - |
| 0x011E | 0x0034 | - | - | 读取B通道电能高2字节/10 | - |
| 0x011F | 0x0035 | - | - | 读取B通道电能低2字节/10 | - |
ATS寄存器说明(含TCP补充):