月冻结查询
能读取什么
月冻结是每月某个时刻把计量数据固化下来的记录,用于电费结算和账单核对。
查询方式、报文骨架、Result 结构与日冻结完全相同 —— 库为两者提供的模板列一致,行选择方式也一致。本页只讲月冻结特有的部分。
库定义了 5006,不代表设备一定提供。部分表只支持日冻结(5004),此时读 5006 会得到 DAR=4(对象不存在)。设备支持哪些冻结对象,以设备点表为准。
数据地址表
属性 2 是记录型(record = true),普通 GET 会返回 unsupported_service。
库的月冻结模板固定两列,与日冻结相同:
在此基础上可加任意普通点位作为数据列。
最小完整示例
按序号区间取三个月的正向有功总电能:
常用变体
结算常用列组合
对账场景通常要"序号 + 冻结时间 + 正向有功电能",跨费率时再加各费率:
0010/2/0 是总电能(一个值),0010/2/1 是费率 1 的电能。结算需要"总量 + 分费率"时两者都要查,不能用费率 1 代替总量。详见电能。
按时间区间查询
区间是前闭后开:[2026-01-01, 2026-04-01) 返回 1、2、3 三个月。
跨年区间
DateTimeS 的年是 2 字节大端(07 EA = 2026),库按公历严格校验月日,闰年 2 月 29 日也正确处理:
record_at / record_between 要求完整合法时间,不能有通配字段(月份不能是 13,也不能是 FF)。非法时间在构造查询时就返回 invalid_value,不会发到设备。
翻页拉取全部历史
序号区间不知道上界时,从小到大分页:
不要假设序号连续。设备可能因换表、格式化而重置或跳号,以上一次响应里的最大序号为准。
请求与响应报文
以下示例固定:SA 六个 00 字节、逻辑地址 0、CA=0、PIID=0、控制域请求 43/响应 C3。
响应的字节骨架见日冻结的骨架说明:85 03 | PIID-ACD | OAD | 列数 | 列 OAD | 结果选择子 | 行数 | 行数据。
按序号区间查询三列
请求(序号 [1, 3),列 = 序号、冻结时间、正向有功电能费率 1):
注意 06 是 UInt32 的类型标签,00 00 00 01 才是数值 1。
响应(两行):
DateTimeS 的 1C 之后是 7 个字节:年(2 字节大端)月 日 时 分 秒 毫秒。07 EA = 2026。