Skip to content

1) 电表地址

驱动要求:

  • address12 位数字字符串(例如 123456789012

协议层会将其转换为 6-byte BCD 地址(并处理低/高位顺序)。

实践建议

  • 以现场“抄表软件/主站工具”显示的地址为准,并在第一次采集中验证能否正确响应。

2) DI

DI 是数据标识,用于指定“读哪个数据项”。

2.1 版本差异

  • DL/T 645-1997:DI 长度为 2 字节
  • DL/T 645-2007:DI 长度为 4 字节

字节序与填写建议

UI 要求 DI 为 hex 字符串:

  • 2007:8 位 hex(示例 02010100

建议以厂家手册/主站工具为准;如果读不到值:

  • 先确认 DI 是否需要“低字节在前”(部分资料会用小端写法展示)
  • 用抓包/主站工具对比请求帧中的 DI 字节序

3) decimals 与 scale 的关系

解码流程(高层):

  1. 协议 payload(BCD) → 按 decimals 解码为浮点值 v
  2. v → 按 Point 的 data_type 强制转换(Int/Float/UInt)
  3. 若设置了 scale,会进一步应用比例因子

建议

  • 如果设备手册明确给出“BCD 小数位”,优先用 decimals 表达
  • scale 更适合表达“工程换算”(例如 0.01)

注意:core 的 min/max 校验不会自动应用 scale;请确保你配置的 min/max 与对外写入值处于同一尺度。

基于 MIT 许可发布.