IEC62056协议栈的浅析与实现(连载/第二章节)

第二部分:应用层COSEM部分的详述

 

 

       相对于62056该协议族中链路层HDLC部分来说,应用层更加的错综复杂,牵扯的相关标准协议文档也更多一些。典型的标准文档是-53-61-62三个协议。所涉及到了COSEM应用层逻辑与对象标识系统和标准接口类。

       直到此项目收尾阶段,我还是始终会弄混几个重量级的关键字的真正含义。它们是,在学习和阅读关于协议族中链路层文档频繁出现的HDLC,在设计和实现过程中最为混乱和繁复的应用层相关内容频繁出现的COSEMDLMS

 

以下是官方给予的缩略字标准解释:

       高级数据链路控制High-Level Data Link Control或简称HDLC),是一个在同步网上传输数据、面向比特的数据链路层协议。

       计量仪表配套技术规范( COmpanion Specification for Energy Metering简称COSEM )

       配电线报文规范(Distribution Line Message Specification简称DLMS) [IEC 62056-53]应用层规范,独立于应用层以下的各个低层。

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

 

应用层最为重要的内容应该就是APDU了。HDLC链路层就如同一辆通勤于C/S交互两端的运载工具,这辆运载工具的用途就是通过协议制订的具体数据帧格式来封装运载主题的数据信息。最初接触APDU相关内容时,看着数据帧就像完全天书一般。迷途的原因很简单,因为手中没有探险的地图。解开探索APDU这趟旅程的最佳指导手册就是BERAXDR编码规则,还有一个前提就是了解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中只有AARQAARE数据帧的部分内容是使用DLMS协议其余是XDLMS协议。

 

 

IEC 104是一种用于远程监控和控制的通信协议,常用于电力系统和工业自动化领域。IEC 104协议栈代码是指实现这个协议的软件代码。 IEC 104协议栈代码通常由多个模块组成,其中包括物理层、链路层、传输层、应用层等不同的模块。这些模块通过相互通信和交互来实现IEC 104协议的功能。 在物理层,IEC 104协议栈代码需要实现与硬件设备的通信接口,例如串口通信、以太网通信等。这些代码常常使用标准的通信库或者驱动程序来实现。 在链路层,IEC 104协议栈代码需要实现数据的帧格式化和解析,包括添加和检查校验码、拆分和组合数据帧等操作。 在传输层,IEC 104协议栈代码需要实现可靠的数据传输,包括数据的分段和组装、数据的确认和重传、流量控制等功能。 在应用层,IEC 104协议栈代码需要实现具体的应用逻辑,例如遥测数据的获取和解析、遥控和遥调的命令发送和处理等。 实现IEC 104协议栈代码时,开发人员需要仔细阅读IEC 104协议的规范,理解协议的各个层次和功能,并根据实际需求进行设计和编码。同时,还需要进行测试和调试,确保代码的正确性和稳定性。 总之,IEC 104协议栈代码是实现IEC 104协议功能的软件代码,涉及到物理层、链路层、传输层和应用层等多个模块,开发人员需要根据协议规范进行设计、编码和调试工作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Capricorn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值