基于DLMS/COSEM协议的电能表设计
电能表的硬件组成
三相电子式电能表由电流互感器、电压采样网络、计量集成电路ATT7022B等组成电能计量单元;由微控制器(瑞萨M30624单片机)、数据存储卡、时钟芯片、LCD组成数据处理与显示单元;由RS485总线、红外(或无线)等通信接口组成通信单元。如图1所示。
电能表的软件实现
本设计电能表采用模块化方法实现软件功能,包括计量模块、显示模块、事件记录模块、分时模块、通信模块等,其中,除了通信模块,其他部分与一般电能表软件相比基本相同,因此以下重点分析电能表通信协议模块的实现。
电能表通信结构采用C/S模式,仪表端作服务器,抄表主台等作客户端。通信协议架构如图2示。DLMS/COSEM作为面向连接的协议,规定以下三个步骤来实现电能表系统的建立和通信:1.建立仪表模型和数据标识。2.将模型映射为协议数据单元APDU、对象的属性和方法可被用于定义访问。3.通过数据链路层与物理层连接,最后通过传输通道进行通信。以下主要从建立符合COSEM的仪表模型和满足DLMS的通信协议栈两方面分析电能表通信功能的实现方法。
利用面向对象思想构建仪表模型
DLMS/COSEM协议使用COSEM接口对象,采用面向对象的方法来构建仪表数据模型和功能模型,通过各个COSEM接口类对象之间的配合来完成某个特定功能。
仪表模型的构建包括两部分重要内容:协议61部分的O-BIS—对象标识系统和62部分的接口类。
OBIS—对象标识系统给计量仪表中的所有数据都提供了一个标准的标识码,该标识码唯一标识一个数据对象。OBIS码由6个数码项(6个字节A-F)组合编码。每个数据项的含义为:A组值标识被测能量的类型(包括水、电、气等);B组值标识测量通道;C组值标识被测物理量;D组值标识被测物理量处理方法;E组值标识费率;F组值标识历史数据。从第B组到第D组为厂家自定义标识码预留了空间。
接口类—IEC62056针对仪表部件和通信接口单元引进了类的概念,每个分类号都对应于一类接口对象,每个对象包括属性和方法,根据这些属性和方法,可以构成该对象的参考模型,在对象模型中不用考虑对象接口的生产制造厂家。目前,在IEC62056-62中规定了电能表中主要的接口类包括:寄存器、时钟、曲线类、特殊日类、以太网设置类等。
本电能表根据需要设计了如图3所示的仪表模型。物理设备为本电表,考虑到电能表的功能可以整合在一个功能子集中,也为了节约资源,本电能表只构建了一个逻辑设备,用逻辑设备名LDN来标识。组成该电能表的对象有:包含有功、无功电量等的寄存器对象、包含需量数据的需量寄存器对象、实现多费率功能的日历表、时间表、特殊日、时钟以及脚本对象、用于连接功能的SAP和LN/SN对象以及实现失压断相等事件记录的寄存器监视对象等。电能表就通过这一系列接口类对象的相互配合构成一个完整的电能表模型。
以下举例说明接口对象的程序实现,考虑单片机编译器只支持C语言编程,故设计用函数指针来实现类和对象。以有功电能接口对象为例,在图3所示的仪表模型中,有功电能用寄存器类封装,OBIS码就是寄存器类中的属性1:逻辑名。
通信协议栈的实现
通信协议栈包括物理层、数据链路层和应用层三层。
(1)物理层的任务比较简单,包括连接管理、数据收发和与数据链路层接口三部分。它对应于通信系统的底层驱动部分。
(2)数据链路层包括提供链路传输服务的LLC子层和负责数据传输可靠性的MAC子层。链路层采用HDLC协议,它是一种透明数据传输协议。在DLMS/COSEM协议模型中,链路层负责数据传输可靠性,应用层处理用户数据信息。链路层程序流程图如图4所示。
(3)DLMS/COSEM应用层用一种抽象语法语言来描述。这样做极大的提高了协议的抽象性和通用性,有利于程序移植。应用层规定用抽象语法记法ASN.1来描述应用层数据帧,而应用层的APDU(应用协议数据单元)用编码规则BER和A-XDR来实现ASN.1语法。应用层作为协议栈的最上层,负责向COSEM应用进程提供服务,包括建立应用连接服务和接口对象用户数据信息服务,并使用低层支撑协议提供的服务。应用层程序流程图如图5所示。
通过以上的处理,在完成信息编码后形成的报文即可通过信道进行传输了。本电能表配置的是抄表系统常用的485总线和红外口。
利用本方法设计的电能表采用DLMS UA工作组提供的专用测试工具CTT进行符合性测试,结果显示其符合DLMS/COSEM协议要求,因此获得了DLMS UA工作组的认证,这也是国内第一块获得该认证的三相电能表。基于DLMS/COSEM的电能表的实现,改变了现阶段国内计量仪表不具有互操作性的缺点,必将推动国内自动抄表系统的进一步发展。