DLMS/COSEM协议的理解体会 转

DLMS/COSEM协议的理解体会 转它们是完全不同的标准

大家好,欢迎来到IT知识分享网。

DLMS协议模型

DLMS是通信协议,COSEM是电表建模规范

DLMS协议帧

HDLC帧基

   

0x7e 帧类型与帧长 目的地址 源地址 控制域 帧校验 0x7e 0x7e 帧类型与帧长 目的地址 源地址 控制域 帧首校验 LLC 数据信息 帧校验 0x7e 
帧首校验:帧类型与帧长+目的地址+源地址+控制域(CRC16) 1. 帧类型与帧长:2个字节 (MSB) 1010 S LLLLLLLLLLL (LSB) 帧类型 帧长 DLMS使用Frame Type为3, 恒为0x0A(1010 B)。 S bit 用于说明数据帧是否被分割。(置0为不分割) 帧长 字节为单位,不包括首尾两个0x7e特殊字。 2. 地址域:某一地址字节的最低位为0,则表示该地址域没有结束;如最低位为1,表示地址域结束。 Client端的地址永远是一个字节,且最低位为1。所以该地址只能有128个。 Server端 Upper address总是有的,表示逻辑地址。 Lower address在确定不需要的时候可以不出现,用于表示物理地址。 S端的地址结构: 一字节,只出现HDLC高位一字节地址。(Upper address 1)LSB 两字节,HDLC高位一字节地址,HDLC低位一字节地址。(Upper 0 Lower 1) 四字节,只出现HDLC高位两字节地址,和HDLC低位两字节地址。 (Upper.high 0 Upper.low 0 Lower.high 0 Lower.low 1)LSB 3. 控制域: 负责通讯中的帧链路计数,以及特殊数据帧的标识。 I RRR P/F SSS 0 RR RRR P/F 000 1 SNRM 100 P 001 1 DISC 010 P 001 1 UA 011 F 001 1 DM 000 F 111 1 FRMR 100 F 011 1 RNR RRR P/F 010 1 UI 000 P/F 001 1 RRR 接收帧计数器 SSS 发送帧计数器 P/F Poll bit 由client发送,置 1 时表示server端回应,置 0 时表示不允许回应。 Final bit 由server发送,置 1 时表示一次数据帧的发送结束,置 0 表示还未发送完。 Final bit 只有在通讯窗口window size大于 1 时才有意义。 在window size = 1时,由server端返回的数据帧的这一位始终置 1。 帧类型对应如下: Commands Responses I I RR RR RNR RNR SNRM UA DISC DM UI UI Excption FRMR 4. 帧校验: 标准协议文档中给予的16位CRC校验公式为(-46 附录A) X0 + X5 + X12 + X16 

关于长数据帧的传输:

在数据帧被分割传输时,帧类型与帧长字段中的S位,将被置1。

Client 通过发送RR数据帧来请求被分割的数据帧的其余部分。

UA数据帧所包含的链路参数:

Window_size 通讯的双方一次发送数据帧的数目。(默认值为1) Maximun_infomation_field_length 链路数据帧中用户数据的最大长度。(默认值为128) Transmit_maximum_infomation_field_length Receive_ maximum_infomation_field_length Transmit_window_size Receive_ window_size 
The following LLC parameters are defined: Destination_LSAP: 0xE6; Source_LSAP: 0xE6 for command frames and 0xE7 for response frames; LLC_Quality: it is reserbed for future use and its value must always be 0x00. Client端发送DISC帧,Server端响应UA帧或DM帧。 UA 表示接收到DISC帧后断开链接。 DM 表示在接收到DISC帧之前就已经处于链路断开状态。 HDLC是透明数据传输的链路协议,用户数据信息与链路层没有任何直接关系。 

相对于62056该协议族中链路层HDLC部分来说,应用层更加的错综复杂,牵扯的相关标准协议文档也更多一些。

应用层COSEM

高级数据链路控制(High-Level Data Link Control或简称HDLC), 是一个在同步网上传输数据、面向比特的数据链路层协议。 计量仪表配套技术规范( COmpanion Specification for Energy Metering简称COSEM )。 配电线报文规范(Distribution Line Message Specification简称DLMS) [IEC 62056-53] 是应用层规范,独立于应用层以下的各个低层。 

从上面的缩略字展开看的出,只有HDLC是和链路层有关,其余两个均是应用层的名词。DLMS与COSEM的区别在于,DLMS的概念更抽象更广泛。而COSEM内容涉及了更多的应用层结构组织和运行逻辑。

BER: Tag + Length + Value 数据标识与数据长度为16bit Datatype classes(bit15.14) Data type(bit13) Data length(bit12~0) Datatype classes: Universal(00) Application(01) Context-specific(10) Private(11) Data type: Primitive(0) 简单类型 Constructed(1) 复合类型 Data length: 数据内容的长度 (字节为单位) 被保留的客户端地址: 0x00 无站 0x01 客户管理过程 0x10 公开客户(最低级加密) 0x7F 广播 被保留的服务器地址: Upper: 一字节 两字节 0x00 0x0000 无站 0x01 0x0001 逻辑设备管理 0x02~0x0F 0x0002~0x000F 保留 0x7F 0x3FFF 广播 Lower: 0x00 0x0000 无站 0x01~0x0F 0x0000~0x000F 保留 0x7E 0x2FFF 物理设备地址 0x7F 0x3FFF 广播 

整个典型交互模型中还包含了链路层的知识点和内容,而且是与应用层互相交织相互支撑的关系。

不是DLMS/COSEM的内容复杂艰深,作为一个涵盖了众多标准和接口定义的协议族,一定是需要运用很多行业间以至于符合国际标准的定义方法与解释手段。唯有这样,这套典型的跨界协议才能更通用的真实运用到各个国家和各个行业中。所以,要真正理解和正确运用这套协议族,除了协议本身之外还需要具备和了解更多的知识点。

在DLMS中用ASN.1描述的DLMS协议,用BER编码实现。用ASN.1描述的XDLMS协议用AXDR编码。在DLMS中只有AARQ与AARE数据帧的部分内容是使用DLMS协议,其余是XDLMS协议。

COSEM典型交互模型: 链路层 —> 应用层 —> 各种应用机制和实现模组(Interface Class)—> 链路层 SNRM(c) UA(s) I.AARQ(c) I.AARE(s) I.download_object_list(c) RR(s) RR…(c) RR…(s) I.request(c) I.response(s) DISC(c) DM(s) 链路层建立链接请求SNRM帧由客户端发送给服务器端,服务器端正常回应UA帧。 客户端发送信息帧的典型应用类型AARQ请求相关通讯参数,服务器端给予AARE回应。 下载对象列表这个应用层的典型特殊查询请求,在整个通讯交互中影响了下半段所有查询请求的内容与时序。 在COSEM典型模型中,如果对象列表中的链表内容不改变的话,此项步骤仅需执行一次。 且客户端持有服务器端的对象列表内容后,顺序向服务器端提交各对象的详细查询请求。 在长或超长APDU的情况下,链路层给予了最安全以及最贴心的分桢传输形式RR帧类型。 信息帧类型可以承载典型众多的请求与响应服务,并按照与链路层相对独立的APDU标准编码格式提供了 众多简单或复杂的数据结构、以及多种数据格式来描绘请求与响应的内容。 典型COSEM交互模型的连接模式中,每一次C/S交互都需要借助链路层的建立和拆除服务。 

链路层部分实现时,个人觉得抓住几种典型帧类型的定义与特性去设计协议栈中的链路层是最为有效的途径和方法。在一些典型帧类型的细节实现中,我个人记忆最深的就是帧格式的解析与各个字段所包含的意义。还有就是在超长APDU情况下的分帧细节处理,要留意的是发送与接收计数器的理解。

应用层部分实现时,只用记住本次的应用层“历险”中,唯一可以指导我们逃出升天的地图就是COSEM Apdu的标准定义与内容繁复的数据结构定义。当然,我在前面章节也提到,看懂这个地图是需要前提的,那就是相关的那几套标准编码规则。

客户端———————————————————————帧类型———————————————————————服务器 建立链路连接—————————————————>SNRM————————————————————————> <———————————————————UA<———————————————————————建立链路连接 建立应用连接—————————————————>AARQ————————————————————————> <—————————————————AARE<———————————————————————建立应用连接 <—————————————————读取和写入———————————————————> 断开连接—————————————————————>DISC————————————————————————> <———————————————————DM<—————————————————————————断开连接 

DLMS通信链路帧基本采用HDLC帧格式。

 1.标志 2.帧格式 3.目的地址 4.源地址 5.控制 6.HCS 7.信息 8.FCS 标志 1.标志头:7E 一次数据传输,若是单帧,则一次请求的请求头和请求尾都为7E (7E...7E) 若是多帧,7E为第一帧请求头,也标志着下一帧的开始。 多帧传输的等待时间一般由服务端设定,且多帧传输不能超过 此等待时间。 2.帧格式域:分别由三个域组成:Frame_type子域(4 bit) 分段位(S,1 bit) 帧长度子域(11 bit) 分段位:表示是否有后续帧 服务端给客户端的数据能够在一帧内传输完,S=0;有后续帧则S=1。 帧长度子域:长度子域的值是除两个 7E 标志位之外的8位位组数。 一般帧长度不会超过 256 因此帧格式域第一个字节为A0/A8,第二个 字节表示该帧的长度。 3&4.地址域:该帧有两个地址域,一个是目的HDLC地址,另一个是源HDLC地址。 根据传输方向,CA和SA都可以是目的/源地址。 CA 用一字节表示。扩展地址的使用把CA的范围限制在128. 服务器端为了能够在一个物理设备上寻址一个以上的逻辑装置并支持多站配置, 可以将HDLC地址分为两部分: 一部分为“高端HDLC地址”—— 逻辑设备地址。(总存在) 一部分为“低端HDLC地址”—— 物理设备地址。(不需要可以不用) HDLC地址扩展机制应用于以上两种地址域。 一个完整的HDLC地址域的长度被限制为一字节、两字节或四字节 其中1字节——只有高端地址; 2字节——1字节高端地址,1字节低端地址; 4字节——2字节高端地址,2字节地段地址。 5.控制域帧格式:控制域为一字节; RRR是接收序列号N(R),SSS是发送序列号N(S)。 P/F是查询/结束 6.头校验序列域(HCS):HCS长度为两字节。 HCS计算除了开始标志和HCS本身外的头的字节数。 7.信息域:可以是任意字节序列。 8.帧检验序列域(FCS):FCS域长度为2个字节。 计算除开始标志和FCS本身外的完整帧长度。 

面向对象的构建电表模型:

实现电能表系统的建立和通信:

1、建立仪表模型和数据标识;

2、将模型映射为协议数据单元APDU,对象的属性和方法可被用于定义访问;

3、通过链路层和物理层连接,最后通过传输通道进行通信。

仪表模型:OBIS对象标识系统 和 接口类

OBIS对象标识系统:OBIS给计量表中的所有数据都提供了一个标准的标识码,该标识码唯一标识一个数据对象。

OBIS分为 ABCDEF 6组 其中 A —— 代表电相关; B —— 为通道,一般是0不指定。(0-无指定通道、1-通道1、2-通道2); C —— 具体物理量。 eg:正向有功功率、电流、电压等; D —— 物理量统计方法。 eg:瞬时值、最大值等; E —— 0为总量,1为费率1,2为费率2,类推; F —— 一般为 255 (不用) 则区分各个物理量的是CDE三组数据 eg:CDE编码为21.7.0 则完整ABCDEF所表示的为1.0.21.7.0.255 

逻辑名LN:使用Class_id 和 OBIS 编码表示,同一个物理量此编码相同。

短名SN:一个二字节数,代表了一个地址,同一物理量在不同设备上有可能有不同的地址。

COSEM应用协议

GPRS通信时,APDU按照通讯双方定义的标志,协议等封装Wrapper节点,采用PPP(Point to Point Protocol,点到点协议)协议,将封装的数据经链路层传输,接收端通过GPRS接收数据,完成一次传输任务。

接收端收到数据后再按照包装的逆顺序层层解包,解析得到PPP协议的APDU数据帧,然后将该数据转交给COSEM应用程序进行下一步处理,完成COSEM协议通信过程。

上行通信 (集中器与管理中心通信)

下行通信 (集中器与电表通信)

下行通信采用本地数据采集模式预先在DCU与电能表间定义数据帧格式和交互命令模式,实现数据通信需要经过DCU和电表的相互身份验证、模式选择和数据读写请求应答三个步骤。

集中器中的组件包括: 1、电流传感器; 2、计数器(ADC/DAC); 3、晶体; 4、处理器(MCU); 5、存储系统; 6、显示屏; 7、电源组件 

一些术语简称:

Heart beat 用于维持TCP连接,默认心跳传递周期是2min。

LN引用:属性和方法通过它们所属的COSEM对象实例的标识符进行引用。

DLMS模型分为三层:物理层、链路层、应用层

DLMS体系架构图:

链路层:负责数据传输的可靠性,包括地址校验、帧长校验、数据的CRC校验。长数据帧的拆包组包,同时向应用层提供链路传输的服务。

链路层的MAC子层:负责数据传输的可靠性,包括地址检查、数据CRC校验、长数据帧的组包拆包等。这些工作对于数据通讯都是必不可少的。

应用层:链路层连接建立后,DLMS中还需要建立应用层连接,才可以进行数据通讯。这个应用层连接建立过程被称为Negotiation,该过程为数据通讯提供一些配置参数,应用层连接请求由Client端发起,Client端发AARQ帧,Server端响应AARE帧。

通讯结束,释放链路,解除连接。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/120955.html

(0)
上一篇 2025-10-26 14:26
下一篇 2025-10-26 14:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信