恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

DLMS/COSEM 蓝皮书解读(三十八):S-FSK Active initiator(class_id = 51)—— “最后注册这台表的发起方是谁”

  • 首页
  • 资讯中心
  • /
  • DLMS/COSEM 蓝皮书解读(三十八):S-FSK Active initiator(class_id = 51)—— “最后注册这台表的发起方是谁”

相关资讯

使用 React 构建静态页面:frontend-bootcamp Step 1.5 组件划分与 JSX 实战 2026/10/14 3:17:55
工地视频智能检测落地指南:从算法选型到踩坑实操 2026/10/14 3:17:55
DLMS/COSEM 蓝皮书解读(三十七):S-FSK PhyMAC set-up(class_id = 50)—— 电力线窄带载波 S-FSK 的物理层 + MAC 层参数建模 2026/10/14 3:17:55

最新资讯

千牛人工客服高效联系指南:从入口到话术技巧
基于Spring Boot的物业管理系统毕业设计:从需求拆解到部署实践
Flink重启策略深度解析:状态恢复与容错设计核心指南
Agent运行机制实战:上下文管理、检查点与任务恢复
个人开发者如何切入传统制造业AI质检:低成本视觉检测方案实战
按任务选AI助手:2026年高效组合与实战指南

今日推荐

IBM Verify Identity Access 修复 22 个漏洞:两个 9.8 严重 RCE 无需认证
小区物业管理系统
小型超市仓库管理系统

本周热门

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

DLMS/COSEM 蓝皮书解读(三十八):S-FSK Active initiator(class_id = 51)—— “最后注册这台表的发起方是谁”

发布时间:2026/10/14 3:17:55
DLMS/COSEM 蓝皮书解读(三十八):S-FSK Active initiator(class_id = 51)—— “最后注册这台表的发起方是谁” DLMS/COSEM 蓝皮书解读三十八S-FSK Active initiatorclass_id 51—— “最后注册这台表的发起方是谁”active_initiator 三元组与重置方法系列说明本系列基于 DLMS UA《Blue Book蓝皮书第 16 版 · 第 2 部分》一个接口类一篇。第 37 篇讲了S-FSK PhyMAC set-upclass_id 50里面反复出现发起方initiator“active-initiator”“mac_address被置 NEW”。本篇就把发起方这个概念彻底讲清到底是哪个客户端系统最后用 Register 请求注册了这台服务器。上篇回顾第 37 篇的S-FSK PhyMAC setup用initiator_mac_address/synchronization_locked描述本设备当前锁定到哪个发起方本篇的S-FSK Active initiator则记录谁system title MAC L-SAP最后注册了它并提供把设备打回未配置态的reset_NEW_not_synchronized方法——两者是同一同步状态机的两端。0. 为什么需要这个类 —— PLC 网络里主站会换得记住现在归谁管在 S-FSK PLC 网络里集中器DCUinitiator/客户端系统会去注册电表服务器。一台表可能被多个 DCU 覆盖或者 DCU 换了、DCU 重启了。表必须记住最后一个用 Register 请求把我注册起来的那个发起方是谁——否则重新同步时不知道该锁谁。这就是S-FSK Active initiator的用途。蓝皮书原文S-FSK Active initiator, Overview“An instance of the ‘S-FSK Active initiator’ IC stores the data of the active initiator. The active initiator is the client system, which has last registered the server system with a CIASE Register request.”一句话它是当前归属于哪个主站的登记簿且只记最后一个。1. 类蓝图S-FSK Active initiator 0…n class_id 51, version 0属性静态/动态数据类型MinMaxDefShort namelogical_namestaticoctet-string———xactive_initiatordyn.initiator_descriptor———x 0x08Specific methodsm/o方法必选/可选(m/o)Short namereset_NEW_not_synchronized (data)—x 0x10注原文 Specific methods 表只列了reset_NEW_not_synchronized (data)未标 m/o 列Short name x 0x10。该类仅 1 个属性 1 个方法。2. 属性逐条解读2.1 logical_name蓝皮书原文Identifies the ‘S-FSK Active initiator’ object instance.即该对象的 OBIS6 字节。示例0.0.26.1.0.255非蓝皮书原文实际以设备对象列表为准。2.2 active_initiatordyn, initiator_descriptor蓝皮书原文Holds the MIB variable active-initiator (variable 15)... Contains the identifiers of the active initiator, which has last registered the system with a Register request.initiator_descriptor :: structure { system_title: octet-string, MAC_address: long-unsigned, L_SAP_selector: unsigned }蓝皮书原文三个字段的角色“The Initiator system is identified with its System Title, MAC address and L-SAP selector”蓝皮书原文system_title 约束“The size and the structure of the system title may be specified in system specifications. When the system title is used as part of the initialisation vector of cryptographic algorithms, then the size shall meet the requirements applicable for the initialisation vector.”蓝皮书原文MAC_address 的作用“The MAC_address element is used to update the initiator-mac-address MAC management variable when the system is configured in the synchronization-locked state.”—— 这正是第 37 篇initiator_mac_address的来源。蓝皮书原文未注册时的默认“As long as the server is not registered by an active initiator, the L_SAP_selector field is set to 0 and the system_title field is equal to an octet string of 0s.”/“The default value of the initiator-descriptor is: system_title octet-string of 0s, MAC_address NO-BODY and L_SAP_selector 0.”蓝皮书原文更新来源“The value of this attribute can be updated by the invocation of the reset_NEW_not_synchronized method or by the CIASE Register service.”要点MAC_address是 12 位 S-FSK MAC同第 37 篇未注册时为 NO-BODY000system_title是客户端系统的标识用于认证/加密 IV长度由系统规格定L_SAP_selector是 LLC 的源服务访问点选择器未注册时为 0这个属性是 dynamic由Register服务或reset_NEW_not_synchronized方法写入不是主站随便SET就能改的。3. 方法reset_NEW_not_synchronized (data)蓝皮书原文Allows a client system to ‘reset’ the server system. The submitted value corresponds to a client MAC address.data :: (原文未单列结构名语义为) client MAC address即一个 long-unsigned12 位 MAC注原文方法描述直接说提交的值对应一个 client MAC address未给data :: structure形式按 MIB 变量reset-NEW-not-synchronized (variable 17)的语义参数为 MAC 地址。蓝皮书原文拒绝条件“The writing is refused if: the value does not correspond to a valid client MAC address or the predefined NO-BODY address; the submitted value is different from the NO-BODY address and the synchronization_locked attribute is not equal to TRUE.”即两条拒绝规则提交的值既不是合法 client MAC、也不是保留的 NO-BODY → 拒绝提交的值 ≠ NO-BODY且第 37 篇synchronization_locked ≠ TRUE→ 拒绝未锁定时不能指定具体 MAC 去重置。蓝皮书原文调用后的动作“When this method is invoked, the following actions are performed: the system returns to the unconfigured state (UNC: MAC-address equals NEW-address)… the system changes the value of the active_initiator attribute: the MAC_address is set to the submitted value, the L_SAP_selector is set to the value 0 and the system_title is set to an octet-string of 0s; all AAs that can be released are released.”三件事服务器回到未配置态UNC其mac_address被置 NEW联动第 37 篇active_initiator改写MAC_address 提交值、L_SAP_selector 0、system_title 全 0 串释放所有可释放的 AA已建应用关联断开。4. 【实战举例】示例 1active_initiator 的 A-XDR 编码示例值假设某 DCU 最后注册了这台表其 system_title 41 42 43 44“ABCD”、MAC C00发起方首地址、L_SAP 0structure { system_title: octet-string 04 41 42 43 44, // 长度4 ABCD MAC_address: long-unsigned 0C 00, // C00 L_SAP_selector: unsigned 00 // L_SAP 0 }说明字节为示意非蓝皮书原文按 COSEM 结构编码习惯写出system_title 实际长度以设备规格为准。示例 2调用 reset_NEW_not_synchronized 让一台失联表重新入网场景某表synchronization_locked TRUE但主站想把它重新分配给另一个 DCU。主站调ACTION reset_NEW_not_synchronized (data long-unsigned 0x0C01) // 新 DCU 的 MAC C01若synchronization_locked TRUE且 C01 是合法 client MAC → 成功表mac_address置 NEW丢同步、active_initiator.MAC_address改为 C01、其余两字段清零、释放 AA若synchronization_locked FALSE且提交 C01≠ NO-BODY→拒绝规则 2。要无条件打回未配置应提交NO-BODY0x0000此时不受规则 2 限制。示例 3active_initiator 的默认值意味着还没人管新出厂/被 timeout 回收的表active_initiator (system_title 全0串, MAC_address NO-BODY000, L_SAP_selector 0)。主站读到这里就知道——这台表当前未归属于任何发起方可以走智能搜索/注册流程去认领它。示例 4CIASE Register 服务如何写 active_initiator当 DCU 用Register请求CIASE即 COSEM 的带认证注册服务成功注册这台表时MAC 子层/管理实体把 DCU 的 system_title、MAC、L_SAP 写进active_initiator同时把第 37 篇的mac_address从 NEW 改成分配到的本地 MAC。这是认领动作不是普通SET。示例 5reset 与第 37 篇 mac_address 的连锁回顾reset_NEW_not_synchronized(0x0C01) └─ S-FSK PhyMAC setup.mac_address 写 FFE(NEW) ├─ 失同步 ├─ mac_group_addresses 清空 └─ 释放所有可释放 AA和第 37 篇示例 6 是同一个状态机本篇是触发入口PhyMAC setup 是被影响的一方。示例 6system_title 用作加密 IV 的长度约束如果设备用system_title作为密码学算法的初始化向量IV则它长度须满足该 IV 的要求如 AES 的 16 字节 IV。工程上部署时统一 system_title 长度为 16 字节避免某些加密模式因 IV 长度不符而失败——这是原文明确提示的工程约束不是自由字段。示例 7多 DCU 覆盖场景下的归属漂移某表被 DCU-A(C00) 和 DCU-B(C01) 同时覆盖。运行记录结合第 40 篇synchronization_register显示synchronization_register [ { macC00, count120 }, // 多数时间锁在 A { macC01, count8 } // 偶尔漂到 B ]说明这台表主要归 A、偶尔被 B 抢走。若count(C01)持续攀升可能是 A 的 PLC 路径劣化需要去查 A 这侧的增益/噪声联动第 37 篇。示例 8从失联到重新认领的完整时序工程示意1. 表因 time_out_not_addressed 到期第 39 篇→ 回未配置态 2. active_initiator 重置为默认MACNO-BODY, L_SAP0, system_title全0 3. 进入 Search Initiator PhaseDCU-B 信号最强 4. 表锁定 DCU-BMAC 子层把 B 的标识写进 active_initiator 5. mac_address 从 NEW 改为分配到的本地地址 6. 此后 synchronization_register 中 C01 计数 1这是第 37/38/39/40 四篇串起来的自愈链路——理解一台表怎么在 PLC 网里自动找主。示例 9用 active_initiator 做主站身份核对主站想确认这台表现在到底认我DCU-A还是认别的 DCU只需GET active_initiator返回MAC_address C00→ 认的是 A正常返回MAC_address NO-BODY→ 表未配置/刚被 reset需要重新 Register返回MAC_address C01→ 表被 B 抢走要排查 A 侧链路。说明以上判定逻辑为工程示意非蓝皮书原文基于原文未注册时 MACNO-BODY、注册后注册者 MAC的语义。示例 10system_title 与认证/加密的关联system_title不仅是发起方标识在很多 DLMS 实现里它还参与应用层认证与挑战应答如Association LN(15) 的高安全认证。当system_title用作密码学 IV 时长度须满足 IV 要求原文已提示。部署时建议全网统一 system_title 长度不同 DCU 用不同且可路由的 system_title便于审计谁注册了哪台表。示例 11active_initiator 与第 37 篇字段的双向绑定本篇字段第 37 篇对应关系active_initiator.MAC_addressinitiator_mac_address同步锁定态时两者相等本篇记录谁注册synchronization_locked锁定TRUE 才接受非 NO-BODY 的 resetsystem_title无直接对应参与认证用于 Association LN(15) 高安全认证说明对照表为工程归纳非蓝皮书原文逐字句帮助主站把两篇对象当一套读。示例 12CIASE Register 在 S-FSK 里的特殊含义普通 LN 通信里 Register 是寄存器但在 S-FSK 的 CIASECOSEM 带认证注册实体语境下Register request是把服务器注册到发起方的动作原文 Overview 明确“has last registered the server system with a CIASE Register request”。别和Register(3) 类混淆——这里是协议动词不是数据类。5. 工程上容易踩的坑active_initiator是 dynamic普通SET改不了它由Register服务或reset方法写主站别尝试直接 SET 这个属性。reset有两条拒绝规则提交非 NO-BODY 且未锁定时会被拒——想强制重置就用 NO-BODY(000)。system_title长度有约束用作加密 IV 时须满足 IV 长度要求别随意短填。未注册时L_SAP_selector 0、system_title 全0串、MAC_address NO-BODY读到这三者默认态表示未认领。reset会释放所有可释放 AA调用前评估会不会把正在通信的会话踢掉——集中器批量 reset 会瞬间断网。MAC_address是 12 位 S-FSK MAC同第 37 篇范围是 000–FFF别写成 48 位 Ethernet MAC。与S-FSK PhyMAC setup强耦合本篇active_initiator.MAC_address同步锁定态时直接喂给第 37 篇的initiator_mac_address读同步状态要两篇一起看。reset参数语义是client MAC address原文方法 data 直接是 MAC 地址没有再套 structure与某些类data :: structure不同别多加一层包装。最后一个覆盖语义多 DC 场景下active_initiator只保留最后一个注册者历史归属不留存——审计要靠第 40 篇S-FSK MAC counters的synchronization_register。reset不区分温柔/强制传具体 MAC且已锁定是改归属传 NO-BODY 是打回未配置——两种语义靠参数值区分调用前想清楚要哪种。CIASE Register ≠ Register 类这里的 Register 是注册到发起方的协议动作不是Register(3) 数据对象别混。6. 小结 下期预告本篇要点S-FSK Active initiator(51) 是当前表归哪个发起方管的登记簿只记最后一个 Register 注册者active_initiator是structure{system_title, MAC_address, L_SAP_selector}全 dynamic缺省为全 0 / NO-BODY / 0reset_NEW_not_synchronized(dataclient MAC)把表打回未配置态但有两条拒绝规则它是第 37 篇mac_address重置与同步状态机的触发入口。下一篇第 39 篇S-FSK MAC synchronization timeoutsclass_id 52—— 本篇和第 37 篇提到的同步“搜索发起方”timeout-not-addressed到底各对应多长超时下一篇就是那张超时参数表搜索发起方超时、同步确认超时、未寻址超时分钟、帧错误超时。参考资料DLMS UA《Blue Book Ed.16 Part 2 – COSEM interface classes》S-FSK Active initiator(class_id 51, version 0) 章节文中属性、数据类型、Short name 偏移、方法与引文均与原文一致示例中的 system_title/字节/调用参数为帮助理解而构造标注示例/非蓝皮书原文实际以设备对象列表及项目配套规范为准。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号