电能表通信规约一致性自动检测系统∗
2019-01-09宫游刘惠颖殷鑫梁言贺吴琼
宫游,刘惠颖,殷鑫,梁言贺,吴琼
(1.国网黑龙江省电力科学研究院,哈尔滨150000;2.哈尔滨电工仪表研究所有限公司,哈尔滨150028)
0 引 言
针对现行用于电能采集的通信协议已经因各种厂家理解不同而非常不统一,这导致电能采集通信过程中增加了大量不必要的规约转换工作[1-2]。需要对不同厂家生产的电能表进行规约一致性自动检测。并且当前用于电能采集的通信协议主要是面向过程的数据型协议,其在拓展性、复用性和灵活性方面显现出一些不足。
基于面向对象互操作性的数据交换协议既能进行系统主站与采集终端的通信,又可以实现采集终端与电能表的通信,规范并统一了电能采集系统的通信规约[3-4]。 DL/T 698.45 通信协议是根据《国家电网公司关于下达2017年度公司第一批技术标准制修订计划的通知》的要求而制订的面向对象的用电信息数据交换协议[5]。 DL/T 698.45 协议的提出弥补了国内无面向对象互操作性的数据交换协议,既兼顾了目前的硬件设备更新缓慢的问题,又解决了设备互操作性的问题,增强了通信协议的统一性和规范性。但由于DL/T 698.45协议的发布时间不长,对于开发有关DL/T 698.45协议的软件程序、硬件设备以及协议的检测方法和检测设备都处于起步状态。
从以上所述方面考虑,文章在微软的Visual Studio 2010平台上开发了一套基于C++语言的DL/T 698.45通信规约一致性自动检测系统。该系统采用主流的可视化界面开发工具,使用面向对象的方法。
1 系统检测依据与检测项目
1.1 通信规约简述
面向对象互操作性的数据交换协议信息交换模型如图1所示。客户机与服务器不存在于同一设备,两者间需要通过通信协议来进行信息交互[6]。只有应用层中包含服务器组件,数据链路层用于传输应用层协议数据单元数据[7]。
图1 信息交换模型Fig.1 Information exchange model
电能表与后台服务器进行通信时,传输帧的链路用户数据需要满足所用DL/T698.45通信规约的帧格式,如表1所示。
表 1 DL/T 698.45 通信规约帧格式Tab.1 DL/T 698.45 communication protocol frame format
在对报文进行解析之前,要对帧头、帧尾及密匙进行校验,校验不合格的数据帧直接被舍弃[8]。每一条上行数据或者下行命令都会收到对应的应答帧。若是未得到与此相对应的应答帧,会间隔1 s再次发送一次命令,共计6次,若仍无应答,那么再次进行通信时再发送命令。规约中,可根据链路用户数据生成对应的模型解析数据域内容。
1.2 检测项目
检测项目分为3个级别:第1级别是“物理通道”的检测。检测各通道是否畅通,预连接是否建立好,并保证预连接通道处于活动状态。第2级别是对帧进行检测,保证帧的格式符合表一。第3级别是对应用层数据进行检测。将应用层协议数据单元数据按照规则解析成相应指令,看电能表有无应答反应[9-10]。
因项目需求,主要针对第2级别和第3级别进行检测,其中针对电能量类对象、最大需量类对象、变量类对象、事件类对象、参变量类对象、冻结类对象进行设计,通过软件测试,显示出成功或失败来分辨出电能表是否符合DL/T 698.45规约通信。也间接地保证了电能表计费的准确。另外,该自动检测系统可以向各省公司推广,可以向各生产厂商推广,其经济和社会价值巨大。
2 检测系统设计方案
2.1 系统工作原理
电能表通信规约检测系统原理框图如图2所示。图中,计算机通过RS-485转换器、载波通信转换器、红外或光通信转换器与被测试电能表相连,模拟三种形式的通信情况。
图2 电能表通信规约检测系统原理图Fig.2 Schematic diagram of communication protocol detection system for electric energy meter
当计算机与待测电能表通过某种通信方式连接后,测试人员就可以组帧向待测电能表发送帧报文。待测电能表在收到报文后会做出应答,返回应答报文,电能表通信规约检测软件可以对返回的报文进行解析并得到检测结果。
2.2 检测软件设计
此规约检测软件主要通过串口方式实现与DL/T 698.45电能表的通信,使用开发平台为VS2010,此平台功能强大,方便实用,支持和集成很多开发工具和技术,使用面向对象的编程C++语言,主要由于其语言非常灵活,功能非常强大,此项目主要围绕类层次结构进行设计。这种设计思路主要优势在于易维护、效率高、易扩展,后续软件更新容易,方便增加相似类检测相关的项目,也可通过此软件思路编写类似的其他协议软件,软件设计思路如图3所示。此软件主要由四部分组成:
(1)发送帧部分主要针对GetRquest数据类型进行组帧,其中包括数据链路层DataLink类,地址域AddressDomain类,控制域ControlDomain类,以及重要的OITail对象标识类,由此四类灵活组成完整的普通型发送帧和记录型发送帧;
(2)解析帧部分主要针对收到的帧各个部分进行读取,其Scissors解析类是去掉了DataLink链路层类之后进行的编程,通过DecodeContext类进行分流,特指把解析帧分成读取响应帧,读取设置帧等,由于不同种类的帧都具有不同的帧格式,所以特分成不同的帧类别进行读取解析,由于本项目目前只需要进行读取响应帧,而不需要进行设置、上报和代理等功能,所以例如DecordSet等类均是为了后续项目进行扩展而预留的类。在DecordGet类里,根据协议标准又可以分成Parameter参变量类、ElectricEnergy电能量类、Vatiables变量类等接口类,这些类帧的读取解析主要都通过定义的BaseData基本方法。此方法是根据标记数据的基本数据类型进行编写;
(3)为了实现发送和接收帧,在整个系统的设计中有两个基本类,一个是所有发送和接收类都需要继承的父类BaseClass,父类主要定义了一些共用方法,另一个是定义了公共数据的PublicData类;
(4)在系统的设计中,界面才是使用者直观能见到的成果,界面的设计也就成了重要的一部分,在系统的设计中,追求简洁、准确、直观的给予使用者,让其能一目了然的知道按钮功能和使用顺序是设计初衷,所以有一个单独Form类进行界面编程。
图3 检测软件设计思路Fig.3 Design ideas of testing software
3 系统实现
根据系统设计方案,配置了基本功能按钮,用按钮与显示框等组成了系统界面,界面中设置了双通道,可以同时检测两块电能表;设置串口开闭按钮,控制串口的连接状态;因为有些电能表出厂时设有自己的加密帧格式,所以设计进厂与出厂模式,增加按钮是考虑检测工作的便利性;开始检测和停止检测就是最基本的控制检测按钮;记录型作为特殊的帧格式类型单独检测按钮。检测的每个数据标识在右侧表格均有体现并可以导出到本地留档。左侧上方显示框则实时显示现检测项的具体解析帧结构,下方则可以统计成功项与失败项的个数。检测系统的主界面图如图4所示。
正常通信是电能表大量投入市场的前提,只有帧结构检测通过,电能表可以与系统正常通信,才可以正常投入使用。
图4 电能表规约检测系统主界面Fig.4 Main interface of electric energy meter protocol detection system
电能表规约检测系统通过RS-485转换器与被测电能表连接,分别取三个厂家的5只电能表各进行DL/T 698.45通信规约一致性自动测试,检测顺序依次为电能量类对象、最大需量类对象、变量类对象、事件类对象、参变量类对象、冻结类对象,若返回数据是正确的帧格式判断为成功,否则为失败,测试结果如表2所示。
表2 系统测试结果Tab.2 Test result of the system
通过测试结果可以看出有1只电能表通信失败。同时来自同一个厂家的电能表,测试出不同结果,表明检测系统可以有效地检测出不符合DL/T 698.45协议的电能表,具备了通信规约一致性自动检测的功能。此通信规约一致性检测系统仍有很大的升级空间,还可以增加加密解密、密匙修改、错误帧检测等项目内容。
4 结束语
根据项目实际要求针对面向对象互操作性数据交换协议的通信规约设计出电能表的检测系统。该检测系统能够有效甄别出不符合通信规约的电能表,并且满足对后续通信规约兼容升级、避免因通信规约导致的实际使用问题[11],为今后符合 DL/T 698.45 通信规约电能表批量应用提供良好的基础。