标题 | 基于代理模式的分层规约转换模块的设计与实现 |
范文 | 许晓飞 摘要:该文针对目前电力系统关口电力计量装置数据采集系统中存在的通信规约不统一、重复开发、维护困难的问题设计完成了一种通用性的通信规约转换模块,该模块基于代理模式,采用分层设计思想,可以适用于现行的大多数规约,规约接口的维护相对简单,提高了电力系统的工作效率。使用该设计模块的关口电力计量装置数据采集系统已经在山西、四川等地运行。 关键词:数据采集;规约转换;代理模式;分层设计 中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)30-0253-02 自2011年以来,“全国一张网”工程的实施、巩固,中国国家电网提出坚强智能电网概念[1-2]。智能电网要求“电力流、信息流、业务流”的高度一体化融合即数据的集成,但是由于之前国家电网已建成的变电站采用的电能表厂商不一,各个厂商使用的电能表协议规范也不统一,使得在数据采集系统为不同终端设备解析其通信规约相当复杂[3-4],坚强智能电网计划的数据集成面临着严峻的问题。 目前看来,规约转换在解决数据集成问题中是不可或缺的。为了解决规约转换系统开发问题,文献[5]采用基于模板的通信规约设计思想,实现了使用103这一标准规约模板的不同厂家的设备接入了变电站自动化系统;文献[6]将基于CORBA技术的软件平台和分布式硬件平台相结合,应用在了IEC61850的规约转换装置中,解决了在采用IEC61850通讯体系变电站自动化系统中接入非IEC61850协议的智能设备的问题;文献[7]通过使用XML技术对协议映射建模,利用以太网通信来设计规约转换模块,以此传统的104通信协议与IEC61850协议的转换。从实际开发看,基于模板的思想仅适用如部分规约解析,基于CORBA技术的规约转换装置虽然使其变得灵活方便,互操作性良好,但是并没有给出通用的规约转换方法和具体的转换过程,而且CORBA没有和开发工具紧密耦合,给CORBA应用带来了问题;同时基于XML技术和以太网通信技术的规约转换器虽然符合工业以太网的发展方向,但是也只能完成104规约与IEC61850协议的无缝转换。为此,本文提出一种采用分层结构的设计思想,基于代理模式的规约转换模块,该模块组件可以与大多数现行规约通信,添加新的通信规约仅需要少量代码,并且在系统更新或者软件升级时也可以保持组件接口不变,不会影响到相邻层实现,维护相对简单。 1 分层设计的软件结构 为了与现行规约进行转换通信,实现数据的集成,本模块采用分层的设计思想将软件分为三层。业务处理层主要完成业务转发功能,完成数据采集系统获取的主站任务或者获取关口电力计量装置上传的数据信息后进行综合处理,将之上传给主站系统。规约层主要通过两层间接口接收关口电力计量装置等硬件介质的信息数据,按照规约的处理流程分析数据包,之后将数据与业务处理层通过接口完成交互。硬件抽象层覆盖在关口电力计量装置等硬件介质上,通过通道号选择不同的关口电力计量装置,在此基础上负责各个通道关口电力计量数据的收发。分层设计的软件结构如图1所示。 三層软件结构中的规约层是规约转换的核心。系统配置主要配置系统中的设备信息、规约信息和转发信息。数据采集与处理负责数据的交互,将上行和下行的数据按照一定的格式发送出去。中间数据处理组件是专门的用来进行规约解析的,按照系统配置完成不同设备间的通信。持久化组件将处理过的数据作持久化处理,以便随时保存和读取采集到的数据。配置脚本保存的是规约的一些定义信息。 图1 分层设计的软件结构 2 设计模式的运用 设计模式从本质上讲,描述了在某一背景下某个问题的解决方案的核心,是解决面向对象中反复出现问题的最佳方案,它使我们不必去一次又一次地使用该方案,而是将其总结归纳成为一种模式,形成可复用的面向对象软件。可复用的面向对象软件与不使用设计模式的软件系统相比,可以降低软件系统设计的复杂度,并且可以提高代码复用率,使对象建模更合理。 在数据采集系统中,不论是在线监测任务还是在线校验业务,都需要跟电能表进行信息、数据的交换,规约转换模块是需要频繁调用的,这种情况下,使用设计模式设计规约转换模块就很有必要了。 如图2所示,本文使用的设计模式主要是继承式代理模式。现实的采集系统中,种类繁多的规约远远多于通信的方式,在本系统中,将不同的规约抽象成为一个统一的接口ICommonProtocol,在其中定义了初始化方法和请求数据方法,分别是init()和requestData();通信的通道参数写在协议接口的实现类AbstractProtocolTargetImpl中,数据采集系统接收到具体的在线抄表或者二次回路检测任务时,通过具体的电能表号获取相应的协议和通道参数。协议接口的实现类的子类则是具体的协议,当需要添加新的规约时,也是在实现类的子类添加的。从OCP原则来讲,协议类定义成了一个统一的接口。如果遇到需求变化,需要新增规约时,只需要增加该类型对应的子类,而不必去修改原来的代码,这样代理的设计就可以扩展了,符合了对扩展开放,对修改封闭的原则。 3 规约转换实现示例 规约转换是数据采集系统中的一个重要的组成部分,而数据采集系统中的基础功能是在线监测功能,包括在线抄表和二次回路检测。在线监测可能面临着不同厂家的电能表,这些电能表使用着标准不一的规约,只有将不同厂家的电能表数据采集上报给主战系统,才能说明规约转换模块设计是成功的,图3显示的是97表在线抄表时获取交流模拟量数据的时序图。 当主站系统开启了交流模拟量任务即在线抄表任务时,大体可以归结为以下三个步骤: 1) 首先要获取电能表标识号sn和电能表的资源信息MeterResource。在此之前需要判断标识号是否属于电能表MeterManage,从MeterResourceCache中获取Map 2) 从电能表的资源信息MeterResource获取该电能表的协议信息,通过协议值可以从枚举中取得协议name,然后从spring初始化中的protocolMap中取得交流模拟量对应的ICommonProtocol,同时通过协议类型数值可以在CommConfCache中获取对应的通信通道参数,由此就可以采用具体的通信接口发送请求数据指令。 3) SerialCommChanelMessageMonitor类接收到通道消息,然后在本类中的doBeforeNotify()方法中将接收到的消息添加到messageQueue队列中,接着在doBeforeWait()方法中进行消息消费,然后调用MessageCommonUtil中的reflectParser()方法反射出相应的具体协议解析者,然后调用parserData()方法,实现报文的解析,最后由具体的规约类调用buildMessage()构建报文,发送报文。至此,完成了97表的交流模拟量数据的采集。 4 总结 采用三层设计结构的规约转换模块,将之分割成了相对独立的功能模块,当需要更新硬件或者平台移植时,需要改动的仅仅是硬件抽象层,规约层仅需要较小的改动或者保持不变,实现了软件的模块化,继承性强。同时,代理模式完成了多种不同规约的通信问题,弥补了以前添加新规约、代码改动量大的问题,保证实用性、重用性的同时,也符合了开闭原则。采用该设计的数据采集系统已在四川、山西等地的变电站运行,验证了方案的通用性和有效性。 参考文献: [1] IEA.Smart grid roadmap[R/OL].2011.www.iea.org/ publications/.../smartgrids_roadmap.pdf. [2] 张东霞, 姚良忠, 马文媛. 中外智能电网发展战略[J]. 中国电机工程学报, 2013, 33(31):1-14. [3] 蒋湘涛, 贺建飚, 李楠. 电力信息采集的通用型通信规约解析系统研究与设计[J]. 电力系统保护与控制, 2012, 40(9):118-122. [4] 王瑞雪, 林其友. 以太网103规约在黑龙江省保信主站和齐齐哈尔热电厂子站之间通信的工程应用[J]. 电力系统保护与控制, 2010, 38(19):195-198. [5] 张艳林, 李绍滋. 基于模板的电力保护系统通信规约研究[J]. 电力系统保护与控制, 2007, 35(22):23-26. [6] 李強, 朱永利, 董志敏. 104规约向IEC61850信息模型转换的研究与实现[J]. 华北电力大学学报:自然科学版, 2008, 35(2):98-102. [7] 王文龙, 徐广辉, 朱中华. 基于CORBA技术的IEC61850规约转换装置[J]. 电力系统保护与控制, 2009, 37(7):63-66. |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。