Modbus 传的是数字,不是测量值。寄存器 40071 里是一个 16 位整数——它代表什么、单位是什么、缩放系数是多少,写在厂商的 PDF 里,不在协议里。
| 控制器原始标签 | 规范字段 | |
|---|---|---|
ActivePower | → | active_power_kw |
Amps_Avg | → | line_current_a |
AC_Frequency | → | grid_frequency_hz |
AC_Energy_WH | → | energy_delivered_kwh |
BatterySOC | → | battery_soc_pct |
Modbus 没有类型、没有单位、没有名称、也没有发现机制。同一厂商的两个固件版本,就是两张不同的寄存器表。
SunSpec 设备还多一层:指数存在单独的寄存器里。读了值却忘了缩放系数,结果就差一个数量级——而且看不出来。
Forge 将 Modbus TCP、Modbus RTU 和 SunSpec 模型规范化到同一套字段:自动应用缩放系数、转换单位,并在写入前校验物理边界。