电压读取
能读取什么
电压是瞬时量,按相别分为 A、B、C 三相。属性 2 是数值组:
- 索引 0:整个数组(三相全部,一次读完)
- 索引 1/2/3:分别是 A/B/C 相
电压没有"总"这一项,三相电压的合成没有业务含义,所以不存在"总电压"。
电压相关的另外两个对象:
数据地址表
数组长度 = wiring == three_phase ? 3 : 1。单相表只有 1 项,对应 A 相位置。
单位是 V,倍率 -1 已经得到伏特,线上 2413 是 241.3 V,不是 24130 V。
最小完整示例
常用变体
读单相
用 phase_oad 构造相别点位:
单相表用 Wiring::single_phase,此时读 B/C 相会被 phase_oad 直接拒绝:
电压偏差判断
配合 4104 额定电压判断偏差率:
额定电压是 VisibleString(如 "220V"),不是数值,比较前要先解析字符串。
请求与响应报文
以下示例固定:SA 六个 00 字节、逻辑地址 0、CA=0、PIID=0、控制域请求 43/响应 C3。
读取 A 相电压
请求(2000/2/1):
响应(UInt16 2413,即 241.3 V):
09 6D = 2413,乘以 10^-1 得 241.3 V。
读取三相电压数组
请求(2000/2/0):
响应(三项 UInt16):
解析:01(Data)→ 01(数组)→ 03(3 项)→ 3 个 12(UInt16):
读取额定电压
请求(4104/2/0):
响应(VisibleString "220V"):
0A 是 VisibleString,04 是字节数,后面 32 32 30 56 是 ASCII "220V"。