抱歉,你的浏览器不支持 JavaScript!
登录

IAMMETER 新增 SunSpec Modbus/TCP 支持:型号映射与集成指南

IAMMETER 固件 i.91.065.18 为现有的 Modbus/TCP 服务新增了只读的 SunSpec 整数型电表模型映射。它让能够识别 SunSpec 模型的软件拥有了一种标准方式,可在本地网络中发现在线 IAMMETER 电表并读取选定的电气量。

这是接口层面的新增能力,并非替换原有的计量体系。电表仍以相同方式采集数据。现有的 IAMMETER Modbus 寄存器、HTTP API、MQTT 报文和 NEM 设置均保持不变。

SunSpec 定义了可映射到 Modbus 保持寄存器的标准设备信息模型。它的映射以 SunS 标记开头,随后是 Common(通用)模型和设备专属模型,客户端可依次读取每个模型的 ID 与长度来发现它们。SunSpec Modbus 规范包 记录了模型发现的方式,包括基于 0 的 Modbus 映射地址和未实现值的处理规则。SunSpec Modbus 广泛应用于分布式能源集成场景,涵盖电表、逆变器和储能设备。

IAMMETER 实现的是面向电表数据的一个聚焦且只读的子集。本固件尚未提交 SunSpec 认证。请勿把该功能当作认证、完整的 SunSpec 一致性,或保证任何第三方 SunSpec 客户端无需配置即可工作。

支持的 IAMMETER 型号与电表映射

IAMMETER 电表 SunSpec 整数型电表模型 电气解读
WEM3080 201 单相
WEM2067 202 分相
WEM3050T 203 三相星形(wye)
WEM3080T 203 三相星形(wye)
WEM3046T 203 三相星形(wye)
WEM3063T 203 三相星形(wye)

对于 WEM2067,模型 202 表示的是真正的分相接线方式。它不会把两条互不相关的单相回路描述为同一种电气结构。

模型 204 的代码已有主机端测试覆盖,但固件尚未为 WEM3080TD 自动检测并选择该模型。因此本文不宣称模型 204 已可用。WEM3046TE 也尚未完成专门的型号识别验证。首个版本仅提供整数型模型:浮点型模型 211 至 214 不可用。

客户端可以读取的内容

整数型电表模型对外提供相电压、相电流、相有功功率、总有功功率、频率、相功率因数,以及各相和总计的输入/输出有功电能累积量。Common(通用)模型提供设备识别信息,例如型号、固件版本和序列号。

在 SunSpec 映射中,电能以 Wh 表示;功率因数以百分比表示。总电能数据点复用该电表已有的总量字段和 NEM 语义。在此映射中,IAMMETER 不会通过把各相累积量相加来重新计算三相总量。由于 NEM 设置会影响这些累积量的含义,客户端不得假定总电能始终等于各相电能之和。

部分字段在首个版本中被有意省略:无功功率与无功电能、视在功率与视在电能、多相总功率因数以及事件标志。它们的标准位置仍保留在模型中,并返回相应的不可用标记。SunSpec 客户端必须能识别不可用值,而不能把它解读为测量值。

电压解读很重要

相值来自电表本身。部分线电压数据点是为模型映射而推导出来的:

  • 模型 202 的线电压为 UA + UB。
  • 模型 203 的线电压是相电压乘以 √3 的近似值,并非直接测量的线间电压。系统不平衡或相角偏差都会带来误差。

对于需要直接测量线间电压的应用,这一区别很重要。在把推导值用于控制或合规性判断之前,请先核对模型数据点定义和实际接线方式。

通过 Modbus/TCP 连接

先启用电表已有的 Modbus/TCP 服务,然后连接到它的局域网地址:

项目 设置
主机 电表的局域网 IP 地址
TCP 端口 502
读取功能码 03 — 读取保持寄存器
SunSpec 起始地址 40000
写访问 IAMMETER SunSpec 映射不支持

本指南中的地址均为基于 0 的 Modbus 请求地址。部分应用显示的是基于 1 的寄存器编号,因此配置读取前请确认其编号约定;地址偏移 1 会导致无法返回预期的标记。

请按以下顺序进行发现:

  1. 从地址 40000 读取两个寄存器。预期字为 0x5375 和 0x6E53,即 ASCII 标记 SunS。
  2. 从 40002 开始读取 Common 模型 1。
  3. 从 40070 开始读取电表模型。读取 107 个寄存器可获得其模型 ID、长度和完整数据区。
  4. 读取 40177 处的结束标记。

一次 Modbus 请求最多只能读取 125 个寄存器,因此请分别读取 Common 模型和电表模型。客户端应通过发现来获知模型 ID 和长度,而不是对未来的所有模型顺序硬编码一种假设。

整数值与比例因子

SunSpec 整数型数据点使用比例因子。原始整数的换算方式为:

实际值 = 寄存器整数值 × 10^比例因子

例如:

W = 12345
W_SF = 1
实际有功功率 = 123450 W

比例因子会随量程变化。请在每个轮询周期都读取完整的电表模型,使数值与其比例因子来自同一次响应。不要无限期缓存比例因子。

验证情况与当前限制

主机端测试覆盖了模型布局、数值换算、溢出、只读行为,以及针对现有寄存器的回归检查。一台 WEM3080T 测试电表已确认模型 203 的发现和连续读取,并将电压和功率与现有的 HTTP 和 Modbus 接口进行了比对。

其他电表型号以及各个第三方客户端仍需进一步的实机测试。固件 i.91.065.18 已构建、上传并重新下载以做文件校验;本次验证周期并未将该发布文件刷写进设备。

该固件不包含尚在开发中的 TCP 分帧改进。它目前期望在一次接收操作中获得一个完整请求。被拆分或合并的 TCP 请求可能导致连接关闭。请发送一个请求并等待其响应后再发送下一个请求,同时要认识到这并不能消除所有 TCP 分片风险。

在 IAMMETER 部署中的定位

当本地客户端是为了发现和读取 SunSpec 电表模型而构建时,请使用 SunSpec 映射。当应用需要 IAMMETER 专有寄存器时,请使用现有的 IAMMETER Modbus/TCP 寄存器表。现有的本地 Modbus 路径对 Home Assistant 电能表集成 仍然有用,而 HTTP、MQTT 和 IAMMETER Cloud 仍是相互独立的可选方案。

下载固件:i.91.065.18.bin。

升级前,请先确认您的电表型号、连接方式和本地网络访问条件。这是一个只读数据接口;它不提供逆变器控制、写操作,也不宣称具备完整的第三方 SunSpec 互操作性。

顶部