第二部分:应用层COSEM部分的详述
相对于62056该协议族中链路层HDLC部分来说,应用层更加的错综复杂,牵扯的相关标准协议文档也更多一些。典型的标准文档是-53和-61、-62三个协议。所涉及到了COSEM应用层逻辑与对象标识系统和标准接口类。
直到此项目收尾阶段,我还是始终会弄混几个重量级的关键字的真正含义。它们是,在学习和阅读关于协议族中链路层文档频繁出现的HDLC,在设计和实现过程中最为混乱和繁复的应用层相关内容频繁出现的COSEM与DLMS。
以下是官方给予的缩略字标准解释:
高级数据链路控制(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内容涉及了更多的应用层结构组织和运行逻辑。
应用层最为重要的内容应该就是APDU了。HDLC链路层就如同一辆通勤于C/S交互两端的运载工具,这辆运载工具的用途就是通过协议制订的具体数据帧格式来封装运载主题的数据信息。最初接触APDU相关内容时,看着数据帧就像完全天书一般。迷途的原因很简单,因为手中没有探险的地图。解开探索APDU这趟旅程的最佳指导手册就是BER与AXDR编码规则,还有一个前提就是了解ASN语法。它们之间的关系是,ASN.1语法是用来描述应用层数据帧的,而BER编码与AXDR编码是用来实现ASN.1语法的。
应用层这部分余下的内容我还是会用较多的实用信息,以及较少的关键解释和备注来描述和完成。
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 广播
写到这里忽然不知道该从哪里入手叙述接下来的COSEM交互模型或称为典型业务逻辑。本来是打算简单明了的写出典型帧类型的交互关系的,可悉心梳理后发现,整个典型交互模型中还包含了链路层的知识点和内容,而且是与应用层互相交织相互支撑的关系。
还有,在写这个章节上面所罗列的所谓应用层知识点时,明显意识到与详尽的描述相差很远。不是我不知道还存在其它的内容未提到,也不是我想有所保留故意不写。是其余所未阐述的内容面太过宽广,也很繁复。涉及面宽广的以至于可以在这个段落之后再附上两三本其它的参考书。包括ASN 、BER 、COSEMpdu 、AARQ/AARE等典型帧的编码格式 、XML等。
所述的这些每项单独拿出来叙述都可以不夸张的另写一篇文档。
不是DLMS/COSEM的内容复杂艰深,作为一个涵盖了众多标准和接口定义的协议族,一定是需要运用很多行业间以至于符合国际标准的定义方法与解释手段。唯有这样,这套典型的跨界协议才能更通用的真实运用到各个国家和各个行业中。所以,要真正理解和正确运用这套协议族,除了协议本身之外还需要具备和了解更多的知识点。
在文档的最后,我会附上我自己在设计和实现过程中所用到的参考资料与实用工具。
最后,还是摘抄下自己记事本中当初实现应用层时备注的一些心得体会和总结。
在DLMS中用ASN.1描述的DLMS协议,用BER编码实现。用ASN.1描述的XDLMS协议用AXDR编码。在DLMS中只有AARQ与AARE数据帧的部分内容是使用DLMS协议,其余是XDLMS协议。