本文将用最简单易懂的方式,带您了解Modbus RTU在电能表中的应用,即使您是完全没有技术背景的小白,也能轻松掌握这一重要工业通信协议的核心要点。

为什么叫"RTU"?RTU是英文"Remote Terminal Unit"(远程终端设备)的缩写,表明这种协议主要用于远程设备间的通信。它就像电力设备间的"短信系统",通过简单的请求和回复机制实现数据交换。
■主站(Master) :相当于"老师",通常是电脑、PLC或集中器,负责发起问题和指令 。
■从站(Slave) :相当于"学生",如电能表、传感器等设备,只能回答老师的提问,不能主动发言 在电能表应用中。

Modbus RTU的通信报文就像一条精心设计的短信,有固定的格式要求。
一条完整的Modbus RTU报文包含以下几个部分:
地址码 | 功能码 | 数据域 | 校验码 |
8-Bits | 8-Bits | N×8-Bits | 16-Bits |
地址码 (1字节):相当于"收件人电话",标识目标电能表的地址(1-247),0为广播地址。
功能码 (1字节):相当于"短信类型",告诉电能表要做什么操作(如读数据、写数据等) 。
数据域 (N字节):具体要传输的信息内容,如寄存器地址、数据值等 。
CRC校验码 (2字节):相当于"防伪码",用于检查信息在传输过程中是否出错 。
以读取瑞银电能表总正向有功电能数据的典型报文为例:
[地址00][功能码03][起始地址00 0C][读取长度00 02][CRC校验05 D9]
这相当于说:"所有电表,请从000C号寄存器开始,读取1个寄存器的数据"。

1号电能表收到后会回复:
[地址01][功能码03][数据长度04][数据00 00 00 00][CRC校验FA 33]
表示:"1号电表回复:读到的总正向有功电能数据值是00 00 00 00(十六进制)"(注意:该1号表为未经使用的新表)。下图为测试演示图:

Modbus RTU协议中,电能表的各种数据都存储在"电子表格"——寄存器中。寄存器主要分为四种类型:
在电能表应用中,最常见的寄存器是:

(04H功能码):存储实时测量的电压、电流、功率等数据.

(03H功能码):存储累计电量、设备参数等
寄存器 | 变量名称 | 属性 | 数据 类型 | 个数 | 备 注 | ||
十六进制 | 单位 | 读写 | |||||
0x0000 | 直流电压 | V | RO | S16 | 1 | -9999~9999
| 读数=有效值×10(小数点-3)例:读到数据为 5000,小数点为 2,即实际数据为:5000*10(2-3) =500.0 |
0x0001 | 电压小数点 | 无 | RO | U16 | 1 | 值固定为:0 | |
0x0002 | 直流电流值 | A | RO | S16 | 1 | -9999~ 9999 | |
0x0003 | 电流小数点 | 无 | RO | U16 | 1 | 值固定为:1 | |
0x0008 | 功率值 | kW | RO | S16 | 1 | -9999~ 9999 | |
0x0009 | 功率小数点 | 无 | RO | U16 | 1 | 值固定为:1 | |
0x000C | 总正向有功电能 | 0.001kWh | RO | U32 | 2 | 高字节在前,低字节在后; | |
0x203C | 1 路电压 |
0.0001V | RO | I32 | 2 | 高字节在前,低字节在后; | |
0x203E | 2 路电压 |
0.0001V | RO | I32 | 2 | 恒为0; | |
0x2040 | 1 路电流 | 0.0001A | RO | I32 | 2 | 高字节在前,低字节在后; | |
0x2042 | 2 路电流 | 0.0001A | RO | I32 | 2 | 恒为0; | |
0x2044 | 1路功率 | 0.0001kW | RO | I32 | 2 | 高字节在前,低字节在后; | |
0x2046 | 2路功率 | 0.0001kW | RO | I32 | 2 | 恒为0; | |
0x9A00
| 正向有功总电能
| kWh | RO | float | 2 | ||
0xA001/0x8900 | 本机地址 | 无 | RW | U16 | 1 | 0~247 | |
U16 | 无符号16 位整形 |
无符号32位整形 | |
通过瑞银电能表上位机软件,读取DJZ1226直流智能电能表的:总正向有功电能、电压、电流、功率以及表地址。

如上图演示,上位机发送与接收的详细报文内容:
13:25:30.229 Total positive active energy(000C0002) ...
13:25:30.256 ▼Send:00 03 00 0C 00 02 05 D9
13:25:30.344 ▲Receive:01 03 04 00 00 00 00 FA 33
13:25:30.359 DC voltage(00000002) ...
13:25:30.424 ▼Send:00 03 00 00 00 02 C5 DA
13:25:30.428 ▲Receive:01 03 04 00 17 00 03 0A 36
13:25:30.494 DC current(00020002) ...
13:25:30.522 ▼Send:00 03 00 02 00 02 64 1A
13:25:30.610 ▲Receive:01 03 04 00 30 00 02 7B FD
13:25:30.621 Power(00080002) ...
13:25:30.682 ▼Send:00 03 00 08 00 02 44 18
13:25:30.690 ▲Receive:01 03 04 00 01 00 02 2A 32
13:25:30.702 Communication Address 2(A0010001) ...
13:25:30.779 ▼Send:00 03 A0 01 00 01 F6 1B
13:25:30.783 ▲Receive:01 03 02 00 01 79 84
13:25:30.795 End of reading data.
7

右击以管理员身份运行AMS软件,点击菜单栏“Function”中的“Meter-Setting”。
勾选“Communication Address1[8900]”前方的方框。
如演示图,双击“Value”下方,并输入数值:1
点击“Write”按钮,发送指令。
返回报文“01 06 89 00 00 01 62 56”,则表示设置成功。其中01即成功修改后的电能表地址。
8
即使Modbus RTU协议相对简单,在实际应用中仍可能遇到各种问题。以下是电能表通信中常见的故障及解决方法:
●检查物理连接 :
▪RS-485接线是否正确(A/B线是否接反)。
▪ 终端电阻是否匹配(一般在总线两端各接120Ω电阻)。
▪ 通信距离是否超出限制(RS-485理论可达1200米,但实际受环境影响) 。
●验证参数设置 :
▪波特率、数据位、停止位、校验方式是否与电能表一致 。
▪设备地址是否设置正确(无重复地址)。
●检查线路干扰:
▪使用双绞屏蔽线,并确保屏蔽层单端接地 。
▪避免与强电线缆平行走线。
●测试单个设备 :
▪逐个接入电能表,排查故障设备。
▪使用瑞银电子专用上位机软件(如AMS)直接与电能表通信,确认问题所在。
●验证CRC校验:
▪检查发送和接收的CRC码是否一致 。
▪确认数据字节顺序(Modbus RTU通常为小端模式)。
● 检查寄存器映射 :
▪确认使用的寄存器地址与电能表说明书一致 。
▪注意寄存器地址的偏移量。
如您需要使用本文中的瑞银上位机软件(Modbus RTU协议),请联系您购买瑞银电能表的订单负责人,以及获得更多售后技术支持。