尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

DLMS/COSEM 蓝皮书解读(二十一):IEC twisted pair (1) setup(class_id = 24)—— 载波双绞线介质(IEC 62056-3-1)的通信通道建模

DLMS/COSEM 蓝皮书解读(二十一):IEC twisted pair (1) setup(class_id = 24)—— 载波双绞线介质(IEC 62056-3-1)的通信通道建模 DLMS/COSEM 蓝皮书解读二十一IEC twisted pair (1) setupclass_id 24—— 载波双绞线介质IEC 62056-3-1的通信通道建模系列说明本系列基于 DLMS UA《Blue Book蓝皮书第 16 版 · 第 2 部分》一个接口类一篇。第 20 篇讲了IEC HDLC setupclass_id 23它管内的是 HDLC 帧层的链路参数波特率、收发窗口、信息字段长度等但没回答底层介质到底是什么、设备怎么被主站寻址。本篇的IEC twisted pair (1) setupclass_id 24解决的就是载波双绞线twisted pair with carrier signalling即 IEC 62056-3-1 介质上的通信通道如何配置——它是蓝皮书里通信介质建模类的第一块后面还会依次遇到 M-Bus、PLC 等介质类。上篇回顾第 20 篇我们把通信链路参数收敛到了 HDLC 帧层但如果底层用的是 IEC 62056-3-1 的载波双绞线常见于欧洲水/气表以及和 M-Bus 物理层类似的场景光有 HDLC 还不够——还要告诉设备用哪种载波 profile、跑多少波特、主站地址列表是什么、忘记地址时回哪个 TAB。这正是本篇IEC twisted pair (1) setup的职责。0. 为什么需要这个类先把介质讲清楚。所谓twisted pair with carrier signalling带载波信令的双绞线是 IEC 62056-3-1 定义的一种计量通信介质在普通双绞线上叠加载波信令来传数据。蓝皮书写得很直白——它的两大优点是安装方便和因载波信令带来的通信可靠性。这种介质有三种典型布点方式在LNAPLocal Network Access Point本地网络接入点和计量终端设备M interface之间在 LNAP 和NNAPNeighbourhood Network Access Point邻域网络接入点之间以及HHU手持单元与计量终端设备之间的直接连接。IEC 62056-3-1 规定了三种通信 profilewithout DLMS—— 纯载波协议不带 DLMSwith DLMS—— 载波上跑 DLMSwith DLMS/COSEM—— 载波上跑完整的 DLMS/COSEM最新、能力最强。蓝皮书原文IEC twisted pair (1) setup, General“The communication medium twisted pair with carrier signalling is widely used in metering. The main advantages of using this medium are the ease of installation and the reliability of communications due to carrier signalling.”关键点在版本差异上蓝皮书原文IEC twisted pair (1) setup, General“The IC ‘IEC Twisted pair (1) set up’ (class_id 24, version 0) supports the first two communication profiles specified in . The new version 1 supports the DLMS/COSEM profile. With its introduction, the use of version 0 is deprecated.”也就是说version 0 只支持前两种 profileversion 1 才支持 DLMS/COSEM profile且 version 0 已被弃用。为什么 DLMS/COSEM profile 值得专门出一个 version因为它引入了一个Support Manager Layer支持管理层实体负责总线的初始化initialisation of the bus发现管理discovery management告警管理alarm management通信速率协商communication speed negotiation并且 Transport Layer 支持分段与重组segmentation and reassembly最高可到9 600 Bd。所以为什么需要这个类的答案是当你要在载波双绞线介质上把设备接进 DLMS/COSEM 网络时必须有一个对象来描述这条载波通道怎么配置——用哪个 profile、开多大波特、主站地址有哪些、丢失地址时回哪个 TAB否则设备连我是谁、我听谁的都说不清。1. 类蓝图这个类没有方法Specific methods 一栏为空两版皆如此全部是static属性靠 GET/SET 配置。版本 1version 1推荐支持 DLMS/COSEM profile蓝皮书原文IEC twisted pair (1) setup, Overview“Instances of this IC allow setting up data exchange over the medium twisted pair with carrier signalling as specified in . Several communication channels can be configured.”IEC twisted pair (1) setup 0...n class_id 24, version 1属性静态/动态数据类型MinMaxDefShort namelogical_namestaticoctet-stringxmodestaticenum01x 0x08comm_speedstaticenum(2)(7)(2)x 0x10primary_address_liststaticprimary_address_list_typex 0x18tabi_liststatictabi_list_typex 0x20版本 0version 0已弃用仅支持前两种 profileIEC twisted pair (1) setup 0...n class_id 24, version 0属性静态/动态数据类型MinMaxDefShort namelogical_namestaticoctet-stringxsecondary_addressstaticoctet-stringx 0x08primary_address_liststaticprimary_address_list_typex 0x10tabi_liststatictabi_list_typex 0x18fatal_errordyn.enumx 0x20两版差异一句话v1 用modecomm_speed取代/补充了配置能力去掉了 v0 的secondary_address和fatal_error属性v1 下从站地址ADS改由独立的MAC addressclass_id 43, version 0对象承载致命错误改由设备提供的独立fatal error registerData 对象承载。蓝皮书原文IEC twisted pair (1) setup, General“The following COSEM interface objects are necessary to set up data exchange over the medium Twisted pair with carrier signalling: ‘IEC Twisted pair (1) setup’: class_id 24, version 1; ‘MAC address’: class_id 43, version 0; ‘Data’: class_id 1, version 0.”2. 属性逐条解读2.1 logical_name两版相同标识本IEC twisted pair (1) setup对象实例。蓝皮书原文IEC twisted pair (1) setup, Attribute description“Identifies the ‘IEC twisted pair setup’ object instance.”6 字节 OBISstaticShort name 基址x。2.2 mode仅 version 1接口的工作模式。蓝皮书原文IEC twisted pair (1) setup, mode“This attribute specifies the working mode of this interface”enum 值含义(0)inactive —— 接口忽略所有收到的帧(1)always active —— 始终激活(2) – (127)reserved —— 保留(128) – (250)manufacturer specific —— 厂商自定义注属性表里mode的 Min/Max 标为 0/1而 enum 定义本身允许到 250含厂商自定义段。按原文忠实呈现实现上标准模式只有 0、1其余为保留/厂商段。2.3 comm_speed仅 version 1端口支持的通信速率。staticShort namex 0x10缺省值 (2) 1200 baud。enum 值波特率(2)1200 baud(3)2400 baud(4)4800 baud(5)9600 baud(6)19200 baud(7)38400 baud蓝皮书原文IEC twisted pair (1) setup, comm_speed“Holds the communication speed supported by the port.”且原文 NOTE“IEC 62056-3-1:2021 supports baud rates from 1 200 to 9 600.”踩坑预警comm_speed表里允许到 38400但 IEC 62056-3-1:2021 规范本身只支持 1200–9600。19200/38400 属于类允许、标准介质不支持的值配了主站也不一定认——别盲目拉满速率。2.4 primary_address_list两版都有类型不同保存本真实设备作为从站 / secondary station为每个逻辑设备所编程的**主站地址ADPPrimary Station Address**列表。v1primary_address_list_type :: array unsigned元素是 unsigned见 IEC 62056-3-1:2021, 5.2.4v0primary_address_list_type :: array primary_address_element其中primary_address_element :: octet-string长度1 字节。蓝皮书原文v1, primary_address_list“Holds the list of Primary Station Addresses (ADP) for which each logical device of the real equipment (the secondary station) has been programmed.”2.5 tabi_list两版都有忘记站呼叫forgotten station call场景下从站被编程的TAB(i)列表。类型均为tabi_list_type :: array tabi_elementtabi_element :: integer。蓝皮书原文v1, tabi_list“When using IEC 62056-3-1 profile with DLMS/COSEM, the tabi_list attribute is made of only one element of value 0, the value used for the discovery process.”也就是说在 DLMS/COSEM profile 下tabi_list固定只有一个元素、值为 0专门用于发现过程。2.6 secondary_address仅 version 0保存从站地址 ADS6 字节 octet-string。v1 把它移到了MAC addressclass_id 43对象里。蓝皮书原文v0, secondary_address“Secondary_address memorizes the ADS of the secondary station that corresponds to the real equipment.”—“octet-string (SIZE(6))”2.7 fatal_error仅 version 0dyn.最近一次致命错误的代码初始值0x00enum值含义(0) No-error无错误(1) t-EP-1F(2) t-EP-2F(3) t-EL-4F(4) t-EL-5F(5) eT-1F(6) eT-2F(7) e-EP-3F(8) e-EP-4F(9) e-EP-5F(10) e-EL-2F注v1 下不再有此属性改为由设备提供独立的fatal error register见下。3. 没有方法靠对象协作完成建模本类Specific methods 一栏为空没有 ACTION 方法。它纯粹是配置容器所有设置通过 SET 属性完成。但 DLMS/COSEM profilev1要真正跑起来需要三个对象协同不是本类单打独斗IEC twisted pair (1) setupclass_id 24, version 1—— 本类描述通道参数MAC addressclass_id 43, version 0—— 承载 6 字节 ADS 从站地址Dataclass_id 1, version 0—— 承载fatal error register致命错误寄存器。蓝皮书原文IEC twisted pair (1) setup, Fatal error register“Each device implementing the DLMS/COSEM communication profile specified in shall provide an error register holding the result of the last communication with the primary station.”fatal error register 是一个bit-string位串逐位含义如下Bit名称描述0EP-3F传输错误TOE 超时仍未发出字节导致帧剩余部分无法发送1EP-4F接收错误收到字节数超过期望最大值2EP-5F接收 RSO 帧时 TARSO 唤醒超时仅主站相关3EL-1F关联期间收到告警指示仅主站相关4EL-2F从站对 MaxRetry 次重复请求响应均不正确5EA-1F从站返回不正确的 TAB仅主站相关6EA-2F对从站数据鉴权错误仅主站相关7EA-3F从站检测到的鉴权错误注意Bit 2/3/5/6 标了Not relevant for secondary station (server)即作为电表服务器/从站时这些位基本不会置位它们描述的是主站客户端视角。排错时别看到这几个位是 0 就以为是异常。附MAC address 的 ADS 结构class_id 43version 0从站地址 ADS 固定6 字节组成如下元素说明长度(字节)类型范围manufacturer_id由 Euridis 协会分配给厂商1BCD0–99year_of_manufacture制造年份仅末两位10–99equipment_id设备类型由 Euridis 分配10–99device_serial_number厂商分配的设备序列号3000001–999999000000 保留蓝皮书原文EXAMPLE031267123456→03: ITRON International12: 制造年份 201267: 单相智能电表 LINKY123456: 当年起始序列号。4. 【实战举例】示例 1一块载波双绞线水表的标准对象配置DLMS/COSEM profilev1假设一个水表通过载波双绞线接入逻辑设备地址 1。我们用三个对象建模以下 OBIS/取值为示例非蓝皮书原文实际以设备对象列表为准对象class_id / versionlogical_nameOBIS 示例关键属性IEC twisted pair (1) setup24 / v10-0:23.0.0.255mode1, comm_speed5(9600), primary_address_list[1], tabi_list[0]MAC address43 / v00-0:23.1.0.255buffer ADS 6 字节Datafatal error register1 / v00-0:23.2.0.255buffer bit-string(1字节)logical_name的 A-XDR 编码0-0:23.0.0.255→ 6 字节00 00 17 00 00 FFoctet-string 标签0B0B 06 00 00 17 00 00 FFcomm_speed 59600 baud作为 enum 的 GET 响应示意enum 标签16长度 1值 516 01 05 示例A-XDR 编码示意enum 标签以 0x16/22 为例示例 2ADS / MAC 地址拆解上面MAC address的 buffer 若取示例031267123456逐字节展开03→ manufacturer_id 03ITRON12→ year_of_manufacture 122012 年67→ equipment_id 67LINKY 单相表123456→ device_serial_numberBCD3 字节这串 6 字节就是 ADS世界唯一、出厂固化、终身有效“shall be worldwide unique and assigned by the manufacturer … valid through the lifetime”。示例 3SN 短名读取通道参数以 v1 为例base name 为x由 logical_name 派生的 13 位短名。想读comm_speed直接 GET 短名x 0x10读primary_address_list用x 0x18读tabi_list用x 0x20。注意attribute_index 的短名偏移是类内固定的不能跨类套用——比如IEC HDLC setupclass_id 23的comm_speed偏移是x 0x10本类恰好同名同偏移纯属巧合换类必须重新查表。示例 4从 version 0 升级到 version 1 的迁移清单若旧设备用 v0迁移到 v1 要做三件事删掉secondary_address属性——它的 ADS 改存到新建的MAC addressclass_id 43对象删掉fatal_error属性——改由独立Data对象承载 fatal error registerbit-string补上mode通常设 1 always active和comm_speed建议 5 9600贴合 IEC 62056-3-1:2021 上限。蓝皮书原文明确“With its introduction, the use of version 0 is deprecated.”新项目直接用 v1。示例 5DLMS/COSEM profile 的发现过程v1 特有v1 之所以要引入 Support Manager Layer正是因为发现不再是简单的地址轮询。一个典型上电入网流程流程为工程示意非蓝皮书原文的步骤清单从站IEC twisted pair (1) setup设mode 1always activetabi_list [0]主站发起发现discovery此时tabi_list的[0]就是发现过程用的 TAB主站通过MAC addressclass_id 43读到从站 6 字节ADS确认世界上这台设备是谁Support Manager Layer 完成总线初始化 速率协商最高到 9600 BdTransport Layer 开启分段/重组此后正常 xDLMS 交互GET/SET异常时看Data对象里的fatal error registerbit-string。这里能看到 v1 相比 v0 的本质跃迁v0 靠 secondary_address fatal_error 属性就地解决v1 把它们拆成 MAC address(43) Data(1) 两个协作对象并多了发现/协商/分段能力。5. 工程上容易踩的坑波特率超规范comm_speed允许到 38400但 IEC 62056-3-1:2021 只认 1200–9600。配 19200/38400 类上合法、介质上不自洽主站可能直接不通信。v0 与 v1 地址承载方式不同v0 把 ADS 放在secondary_addressv1 放在独立MAC addressclass_id 43。主站发现逻辑要按版本分支不能假设地址一定在某属性里。fatal_error 的位语义要看角色Bit 2/3/5/6 只对主站客户端有意义作为电表服务器/从站时这些位不会置位排错别误判。tabi_list 在 DLMS/COSEM profile 下固定为 [0]这是发现过程专用值别当成可自由填的 TAB 列表去配业务 TAB。primary_address_list 元素类型两版不一致v0 是octet-string(1 字节)v1 是unsigned。解析对象列表时按 version 选择元素类型否则长度对不上。三个对象缺一不可v1 下twisted pair setup MAC address Data(fatal error register)是成组出现的。只建 setup 对象、忘建 MAC address从站身份就缺失发现过程会失败。profile 与类版本要匹配version 0 不支持 DLMS/COSEM profile没有 Support Manager Layer、不能到 9600 以上、没有分段重组。要用 DLMS/COSEM 能力就必须 v1。注册服务依赖 Euridis 协会原文指出使用 IEC 62056-3-1 规定的通信 profile 需要 Euridis 协会提供的注册服务registration services。涉及厂商 ID、设备 ID 的分配要走 Euridis 渠道别自己编 manufacturer_id / equipment_id否则 ADS 不合规、跨厂商互通会出问题。6. 小结 下期预告本篇要点IEC twisted pair (1) setupclass_id 24建模 IEC 62056-3-1 载波双绞线介质上的通信通道无方法全 static 属性v1 支持 DLMS/COSEM profilev0 已弃用v1 新增mode/comm_speed把 ADS 和 fatal error 移到MAC address(43) 与Data(1) 对象comm_speed最高 38400但介质规范只到 9600primary_address_list/tabi_list两版类型略不同fatal error register 是 bit-string部分位仅对主站有意义。下一篇第 22 篇M-Bus slave port setupclass_id 25—— 有线 M-Bus从站侧端口配置。本篇讲的是载波双绞线这种偏 Euridis 体系的介质下一篇转到更常见的有线 M-Bus它要建模的是从站端口支持哪些波特率、总线地址怎么分配、上电后有没有被分配到地址——和本篇的载波通道互为不同物理介质的对照也都服务于设备怎么被主站找到并通信这个同一主题。参考资料DLMS UA《Blue Book Ed.16 Part 2 – COSEM interface classes》IEC twisted pair (1) setup(class_id 24, version 0/1) 章节。文中属性名、数据类型、Short name 偏移、enum 取值、fatal error register 位定义、ADS 结构、引文均与原文一致示例中的 OBIS、配置取值、A-XDR 字节为帮助理解而构造实际以设备对象列表为准。
返回列表