DLMS/COSEM协议—(Green-Book)Gateway protocol
DLMS/COSEM协议 — Gateway protocol
- 10.10 Gateway protocol (网关协议)
- 10.10.1 概述
- 10.10.2 网关协议 (The gateway protocol)
- 10.10.3 HES在WAN/NN中作为发起者(拉取操作)
- 10.10.4 LAN中的终端设备作为发起者(推送操作)
- 10.10.4.1 General(一般情况)
- 10.10.4.2 End device with WAN/NN knowledge(了解WAN/NN的终端设备)
- 10.10.4.3 End devices without WAN/NN knowledge(不了解WAN/NN的终端设备)
- 10.10.5 安全性
10.10 Gateway protocol (网关协议)
10.10节描述了DLMS/COSEM(数据语言管理规范/公用服务元素模型)的网关协议,这是一种在不同网络之间传输数据的方法,特别是当网关连接到广域网(WAN)或邻近网(NN)的一侧,而另一侧连接到局域网(LAN),并且DLMS服务器连接到这个局域网时。
以下是对10.10节内容的详细翻译和解释:
10.10.1 概述
-
网关协议的作用:本小节规定了一种方法,用于在通过网关连接的DLMS客户端和服务器之间交换数据。这种网关可以连接到广域网(WAN)或邻近网(NN)的一侧,以及连接到局域网(LAN)的另一侧,并且有DLMS服务器连接到这个LAN。
-
双向通信:网关是双向的,也就是说,LAN中的服务器也能够通过网关向WAN/NN中的客户端发送消息(推送应用)。
-
网关的实现:网关功能可以集成在DLMS/COSEM设备中,也可以是独立的设备。
-
DLMS/COSEM规范的通信模型:DLMS/COSEM规范的设备数据交换基于客户端/服务器模型,其中头端系统(HES)作为客户端请求服务,而终端设备(例如电表)作为服务器提供服务。在许多情况下,客户端可以直接使用单播、多播或广播消息到达每个设备。
-
网关的使用场景:然而,在某些情况下,将多个终端设备连接到LAN并通过网关访问这些设备是实际的。LAN上使用的协议栈可能与WAN/NN上使用的相同,也可能不同。

图199 General architecture with gateway
-
网关的透明性:如果配置正确,网关可以透明地在HES或NNAP和COSEM服务器(终端设备)之间传递COSEM应用协议数据单元(APDU)。
-
推送应用:网关还可以支持LAN中的服务器(终端设备)向WAN/NN中的客户端(HES)发送消息,而无需事先接收到请求服务(推送应用)。
在这一节中,概述了网关协议的基本概念,包括其在DLMS/COSEM通信模型中的作用、双向通信能力、实现方式,以及在不同网络环境中的应用场景。此外,还强调了网关在数据交换过程中的透明性,以及它支持的推送应用能力。
10.10.2 网关协议 (The gateway protocol)
10.10.2 节的标题为 “The gateway protocol”,即 “网关协议”。以下是对该节内容的详细翻译和解释:
网关协议
-
应用层结构:DLMS/COSEM通信配置文件的最顶层是DLMS/COSEM应用层(AL)。为了不影响较低层的协议栈和DLMS/COSEM应用层,通过在COSEM应用协议数据单元(APDU)前添加一些字节来指定使用的网络和LAN上设备的地址,从而解决将每个消息从客户端路由到LAN上的终端设备的问题。
-
消息前缀:为了路由消息,COSEM APDUs会被前缀几个字节,这些字节指定了要使用的网络和LAN上设备的地址。这样,无论客户端和服务器使用的是相同的通信协议还是不同的协议,网关都能够正确地将消息路由到目的地。
-
前缀字段结构:前缀字段由四个字段组成,包括头部、网络ID、地址长度和物理设备地址。这些字段的结构如图200所示。

图200 The fields used for pre-fixing the COSEM APDUs
-
头部:第一个字节是头部,其值为0xE6或0xE7,指示后续字节不仅包含COSEM APDU,还包含带有前缀的COSEM APDU。0xE6表示从DLMS客户端到服务器的请求消息或从服务器到客户端的请求消息(数据通知);0xE7表示从DLMS服务器到客户端的响应消息。
-
网络ID:第二个字节携带目标网络的标识符,该网络是消息被传输到的地方。这个网络ID允许通过同一个网关使用相同或不同的通信协议访问多个网络。网络ID与通信协议无关,可以设置为任何值。如果只存在一个网络,则应使用0x00。
-
地址长度:第三个字节定义了接下来的L个字节中给出的物理设备地址的长度。它取决于所使用的通信协议。
-
物理设备地址:第四个字节到第4+(L-1)个字节携带终端设备或HES的物理设备地址,如通信协议所请求。
-
前缀字段的处理:当带有前缀字段的报文到达一个不是网关或不支持前缀字段的设备时,该报文应被简单地丢弃。当客户端直接与主设备交换数据时,不出现前缀字段。
-
通信流程:客户端通过WAN或NNAP发送请求,这些请求由支持DLMS/COSEM AL的协议层承载。网关接收到这些请求后,根据前缀字段中的网络ID和物理设备地址将COSEM APDU转发到适当的网络。客户端和服务器的应用进程(AP)地址从WAN/NNAP的协议层中提取出来,并插入到LAN的DLMS/COSEM AL的协议层中。
-
响应处理:当LAN中的设备响应请求时,它就像直接连接到客户端一样处理请求并提供答案。当网关在LAN上接收到携带.response服务原语的COSEM APDU时,它会提取客户端和服务器AP的地址,并将它们插入到WAN/NNAP的DLMS/COSEM AL的协议层中,然后将带有前缀字段的消息发送回客户端。
这一节详细描述了网关如何在DLMS/COSEM通信中工作,包括如何使用前缀字段来路由消息,以及如何处理请求和响应。通过这种方式,网关能够确保即使在复杂的网络环境中,客户端和服务器之间的通信也能正确地进行。
10.10.3 HES在WAN/NN中作为发起者(拉取操作)
10.10.3 节的标题为 “HES in the WAN/NN acting as Initiator (Pull operation)”,即 “广域网/邻近网中的HES作为发起者(拉取操作)”。以下是对该节内容的详细翻译和解释:

图 201 – Pull message sequence chart
广域网/邻近网中的HES作为发起者(拉取操作)
-
前提条件:在WAN或NN中的客户端(HES)需要知道它想要联系的LAN上服务器的网络ID、协议和物理设备地址。
-
请求过程:DLMS客户端(HES)发送的每个请求都是通过一个COSEM APDU承载的,并使用WAN/NN支持的DLMS/COSEM AL协议层,以图200中显示的带有四个字段的前缀形式发送。
-
网关的转发:网关将每个携带.request服务原语的COSEM APDU转发到适当的网络,使用前缀字段中包含的网络ID和物理设备地址。客户端和服务器的应用进程(SAP)地址从WAN/NN的协议层中提取出来,并插入到LAN上DLMS/COSEM AL的协议层中。
-
终端设备处理请求:到达LAN上终端设备的APDUs在到达时没有前缀。每个终端设备处理请求并提供答案,就像它直接连接到客户端一样。
-
响应过程:当设备对请求做出响应时,它就像直接连接到客户端一样:APDU不需要前缀。当网关在LAN上接收到携带.response服务原语的COSEM APDU时,它从LAN上DLMS/COSEM AL的协议层中提取客户端和服务器SAP,然后将其插入到WAN/NN上DLMS/COSEM AL的协议层中,并使用WAN/NN协议将带有前缀字段的消息发送给客户端。
-
消息序列图:图201展示了DLMS客户端和服务器通过网关进行传统拉取数据交换的消息序列图。
-
安全性:DLMS/COSEM AL的安全机制确保了通过网关的端到端安全性。
这一节详细描述了在DLMS/COSEM通信模型中,当HES作为发起者时,如何通过网关从LAN上的服务器拉取数据。它强调了请求和响应过程中的地址提取和插入,以及网关在消息路由中的关键作用。此外,还提到了安全性,确保了数据交换的安全性。
10.10.4 LAN中的终端设备作为发起者(推送操作)
10.10.4 节的标题为 “End devices in the LAN acting as Initiators (Push operation)”,即 “局域网中的终端设备作为发起者(推送操作)”。这一节分为三个子部分,以下是对这三个子部分的详细翻译和解释:
10.10.4.1 General(一般情况)
-
推送操作的定义:在DLMS/COSEM架构中,LAN中的终端设备(服务器)不仅可以响应来自WAN/NN中客户端(HES)的请求,还可以主动向客户端发送消息,这种操作称为推送操作。
-
网关的作用:推送操作允许终端设备在没有收到客户端请求的情况下,通过网关向客户端发送消息。这可以用于实现如数据通知等主动通信。
-
操作的灵活性:根据终端设备对WAN/NN网络的知识,推送操作有两种不同的情况:一种是终端设备知道WAN/NN的网络信息,另一种是终端设备不知道这些信息。
10.10.4.2 End device with WAN/NN knowledge(了解WAN/NN的终端设备)
-
前提条件:LAN中的服务器必须知道它想要联系的WAN/NN中客户端的网络ID、协议和地址。
-
推送流程:了解WAN/NN网络信息的终端设备会向网关发送带有前缀字段的请求,这些字段包括网络ID、协议和客户端地址。这些信息允许网关正确地将请求转发到WAN/NN中的客户端。
-
消息序列图:图202提供了一个推送操作的消息序列图,展示了从LAN中的终端设备到WAN/NN中客户端的消息传递流程。

图 202 – Push message sequence chart
10.10.4.3 End devices without WAN/NN knowledge(不了解WAN/NN的终端设备)
-
操作限制:如果LAN中的终端设备不了解WAN/NN网络,或者不知道它是否连接到网关,它不能像了解网络信息的设备那样发送带有前缀字段的请求。
-
网关的职责:在这种情况下,终端设备可以向网关发送标准的数据通知请求,不使用特定的前缀。然后,网关有责任处理这些消息,可能需要根据其配置或网络策略来转发这些请求。
-
使用场景:这种操作模式适用于那些不需要终端设备了解复杂网络细节的场景,简化了终端设备的通信需求,但增加了网关的复杂性。
这三个子部分共同描述了LAN中的终端设备如何作为发起者进行推送操作,无论是它们是否了解WAN/NN的网络信息。这提供了一种灵活的通信机制,允许终端设备根据其能力和网络环境,主动向客户端发送信息。
10.10.4 节的标题为 “End devices in the LAN acting as Initiators (Push operation)”,即 “局域网中的终端设备作为发起者(推送操作)”。以下是对该节内容的详细翻译和解释:
局域网中的终端设备作为发起者(推送操作)
-
一般情况:在某些情况下,局域网(LAN)中的服务器(终端设备)也可以在没有先前接收到来自广域网(WAN)或邻近网(NN)的客户端(HES)的请求服务的情况下,通过网关向客户端发送消息。这种情况被称为推送操作。
-
两种场景:根据网关的能力,支持两种不同的场景:
- 终端设备具有WAN/NN知识:如果LAN中的服务器知道它想要联系的WAN/NN中客户端的网络ID、协议和地址,它可以主动发送请求。
- 终端设备没有WAN/NN知识:如果终端设备对WAN/NN网络没有了解,或者不知道它是否连接到网关,它可以向网关发送标准的数据通知请求,而不使用特定的前缀。
-
推送消息序列图:图202展示了推送操作的消息序列图,详细说明了当LAN中的服务器作为发起者时,消息是如何通过网关发送到WAN/NN中的客户端的。
-
终端设备作为发起者:在推送操作中,LAN中的终端设备(服务器)使用DLMS/COSEM AL协议层支持的协议层,向网关发送每个请求(例如数据通知请求)。这些请求由COSEM APDU承载,并使用前缀字段,就像在拉取操作中一样。
-
网关的角色:网关接收到来自LAN中终端设备的请求后,根据前缀字段中包含的网络ID、协议和客户端地址(例如WAN/NN MAC地址),将COSEM APDU转发到适当的网络。客户端和服务器的应用进程(SAP)地址从LAN的协议层中提取出来,并插入到WAN/NN的DLMS/COSEM AL的协议层中。
-
安全性:DLMS/COSEM AL的安全机制确保了即使在推送操作中,数据交换也是安全的,并且通过网关保持了端到端的安全性。
这一节详细描述了在DLMS/COSEM通信模型中,LAN中的终端设备如何作为发起者进行推送操作,以及网关在这一过程中的作用。推送操作允许终端设备在没有收到客户端请求的情况下,主动向客户端发送消息,这在某些应用场景中非常有用,例如实时数据通知或事件报告。
10.10.5 安全性
- 端到端安全:DLMS/COSEM应用层的安全机制确保了通过网关的端到端安全性。
10.10.5 节的标题为 “Security”,即 “安全性”。以下是对该节内容的详细翻译:
安全性
-
端到端安全:DLMS/COSEM 应用层的安全机制确保了通过网关的数据交换是端到端安全的。这意味着从客户端到服务器,以及通过网关的整个通信过程中,数据的安全性得到了保障。
-
安全特性:DLMS/COSEM 规范提供了一系列的安全特性,包括但不限于数据加密、认证和完整性保护。这些安全特性可以在不同的通信场景中使用,以防止未授权访问和确保数据的保密性。
-
网关的角色:在安全性方面,网关充当了数据传输的中介,但它并不参与到数据的解密和加密过程中。因此,即使数据经过网关,网关也不会对数据的安全性造成威胁。
-
通信协议的支持:DLMS/COSEM 应用层的安全机制与底层通信协议栈是解耦的。这意味着无论底层使用的是哪种通信协议,只要它们支持必要的安全特性,就可以与DLMS/COSEM 应用层安全机制一起使用。
-
安全性配置:安全性的配置和实施是根据具体的项目需求和安全策略来决定的。不同的项目可能会选择不同的安全机制和策略,以满足特定的安全要求。
-
安全性的灵活性:DLMS/COSEM 应用层提供了灵活性,允许在不同的通信配置文件中实施不同的安全措施。例如,某些配置文件可能需要更强的加密和认证机制,而其他配置文件可能由于性能或成本考虑而采用较轻量级的安全措施。
-
安全性的实现:安全性的具体实现,包括密钥管理、加密算法的选择和安全策略的制定,通常是由实施DLMS/COSEM 系统的组织或个人根据具体的安全需求来完成的。
这一节强调了DLMS/COSEM 应用层在设计时就考虑了安全性,提供了一套完整的安全机制来保护数据交换过程,并通过网关在不同的网络环境中安全地传输数据。
相关文章:
DLMS/COSEM协议—(Green-Book)Gateway protocol
DLMS/COSEM协议 — Gateway protocol 10.10 Gateway protocol (网关协议)10.10.1 概述10.10.2 网关协议 (The gateway protocol)10.10.3 HES在WAN/NN中作为发起者(拉取操作)10.10.4 LAN中的终端设备作为发起…...
Android高级面试_12_项目经验梳理
Android 高级面试-1:Handler 相关 问题:Handler 实现机制(很多细节需要关注:如线程如何建立和退出消息循环等等) 问题:关于 Handler,在任何地方 new Handler 都是什么线程下? 问题:…...
【项目实训】解决前后端跨域问题
由于前端框架使用vue,后端使用flask,因此需要解决前后端通信问题 在vue.config.js中修改 module.exports defineConfig({transpileDependencies: true,lintOnSave:false, }) // 跨域配置 module.exports {devServer: { //记住&#x…...
Java反射API详解与应用场景
一、Java反射API简介: 一、什么是反射: 反射是一种强大的工具,它允许我们在运行时检查类、方法和字段的信息,甚至允许我们动态的调用特定类的方法或改变字段的值。编程语言中的反射机制通常用于从类、对象或方法中检索元数据,或者更特别的说,从代码本身中获取信息。这就…...
【例子】webpack 开发一个可以加载 markdown 文件的加载器 loader 案例
Loader 作为 Webpack 的核心机制,内部的工作原理却非常简单。接下来我们一起来开发一个自己的 Loader,通过这个开发过程再来深入了解 Loader 的工作原理。 这里我的需求是开发一个可以加载 markdown 文件的加载器,以便可以在代码中直接导入 m…...
揭秘!这款电路设计工具让学校师生都爱不释手——SmartEDA的魔力何在?
随着科技的飞速发展,电子设计已成为学校师生们不可或缺的技能之一。而在众多的电路设计工具中,有一款名为SmartEDA的工具,凭借其强大的功能和友好的用户体验,迅速赢得了广大师生的青睐。今天,就让我们一起探索SmartEDA…...
onlyoffice实现打开文档的功能
后端代码 import api from api import middlewareasync def doc_callback(request):data await api.req.get_json(request)print("callback ", data)# status 2 文档准备好被保存# status 6 文档编辑会话关闭return api.resp.success()app api.Api(routes[api.…...
基于 SpringBoot + Vue 的图书购物商城项目
本项目是一个基于 SpringBoot 和 Vue 的图书购物商城系统。系统主要实现了用户注册、登录,图书浏览、查询、加购,购物车管理,订单结算,会员折扣,下单,个人订单管理,书籍及分类管理,用…...
如何使用kimi智能助手:您的智能生活小助手
Kimi智能助手是一款功能强大的AI工具,旨在帮助用户提高工作效率和生活品质。下面小编将详细介绍如何使用Kimi智能助手,涵盖其主要功能以及一些实用技巧。 一、Kimi智能助手的主要功能 多语言对话能力:Kimi擅长中文和英文的对话,可…...
sql操作
1. 按条件将表A的数据更新到表B中: update B b set b.col1 (select col1 from A a where b. id a.code), b.col2 (select col2 from A a where b. id a.code), ………… 2. 将表A的全量数据插入到表B中 insert into B (col1, col2, col3, col4,……&am…...
开关电源调试记录-基于DK112(DK1203也一样)作为开关主控芯片的开关电源
调试了一款DK112(datasheet)开关电源控制芯片。 1、原理图如下: 2、测试波形 a.输出波形,图中标识“5V”的位置 b.芯片VCC引脚,图中标识“4”的位置 c.芯片FB引脚,图中标识“3”的位置 对于FB引脚&…...
【自然语言处理】GPT-5技术突破预测:引领自然语言处理革新的里程碑
摘要 随着科技的飞速发展,人工智能(AI)领域正迎来一场前所未有的革命。近日,OpenAI首席技术官米拉穆拉蒂在采访中透露,新一代大语言模型GPT-5将在一年半后发布,这一消息无疑在科技界掀起了巨大的波澜。GPT-…...
qt基本窗口类(QWidget,QDialog,QMainWindow)
1.三个基本窗口类 1.1QWidget 所有窗口的基类 可以内嵌到其他窗口的内部,无边框 也可以作为独立窗口显示,有边框 1.2QDialog 继承于QWidget 对话框窗口类 不可以内嵌到其他窗口 有模态和非模态两种显示方式 1.3QMainWind 继承于QWidget 主窗口类 不可以…...
最新收录历年地震数据,含时间、位置、类型、震级等信息
基本信息. 数据名称: 历年地震数据 数据格式: Shp 数据时间: 2023年 数据几何类型: 点 数据坐标系: WGS84坐标系 数据来源:网络公开数据 数据字段: 序号字段名称字段说明1dzlx地震类型2zj震级3zysd震源深度(米)4jtwz…...
C++ 串口读写
这段代码演示了如何使用 Windows API 中的串口通信功能进行简单的数据发送和接收。它使用了串口的基本操作和设置,并通过 sendSizeCategory 函数实现了一个简单的串口通信示例,发送一个十六进制数据,并读取串口返回的数据。 _CRT_SECURE_NO_WARNINGS:这是针对使用 strcpy …...
WebRTC系列实战-自定义RTP中的extension
文章目录 1. 新增extensionsId;1.1 新增自定义extension1.2 准备添加到sdp相关操作1.3 对header长度返回的修改:2. 自定义extesion的写入及注册到extensionMap中2.1 添加到RTPheader中2.2. 大小限制2.3. 是否注册限制2.4. 自定义extension注册需要修改的位置3.接收端解析及注…...
std::function和std::bind函数
std::function和std::bind是C11引入的功能强大的库组件,用于处理函数对象和函数调用的高级操作。它们极大地增强了C处理回调、函数指针和函数对象的能力。 std::function std::function是一个通用的、多态的函数封装器,可以容纳任何可调用的目标——包…...
补码的理解,想明白了觉得还挺有趣的
原因: 之前会一直好奇补码为什么是这么设计的,刚刚发呆的时候突然就明白了。 设计目的: 要理解,补码的设计初衷是为了计算机的计算问题。计算机的加法计算是非常简单的,但是对于减法,因为要借位…...
FuTalk设计周刊-Vol.027
🔥🔥交互体验 创意运营🔥🔥 1、「AIGC实战」城市消费券项目经验 随着AI图像生成技术的高速发展,以Midjourney、Stable diffusion为例的AI工具引起了大家广泛的研究和应用浪潮,也印证了早期流传在AIGC圈的…...
抖音外卖服务商有哪些,盘点这几家正规服务商!
当前,抖音外卖的关注度不断上涨,抖音外卖服务商也逐渐成为了众多创业者心中的理想创业赛道。在此背景下,抖音外卖服务商的入局途径多次引发创业者热议,以抖音外卖服务商有哪些公司为代表的相关话题更是长期位居创业者问题榜单的前…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
