摘 要
传统电力通信软件基于结构化软件设计方法,具有扩展性差和难理解的特点,为此提出了基于设计模式的软件设计方法。文中介绍了设计模式的基本概念和使用方法,通过对不同的电力通信软件的研究,找到了一种适合快速开发电力通信软件的设计模式,并在实际开发中进行了验证。软件运行结果表明设计模式在面向对象的软件设计和开发中可以有效的提高直观性和扩展性。
【关键词】变电站通信 设计模式 IEC 61850 面向对象
1 设计模式
软件设计有两种设计方法,分别是结构化设计方法和面向对象设计方法。设计模式作为面向对象软件设计过程中知识和经验的总结成果,具有很重要的作用,可以帮助设计者去分析和解决的问题。
本文主要关注了工厂模式,一个设计模式的描述一般包含模式名、意图、结构、参与者和协作等五个方面。下面结合这五个方面详细介绍工厂方法模式。
1.1 模式名
工厂方法(Factory Method) 模式,又称为虚构造器(Virtual Constructor)模式。
1.2 意图
定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法模式使一个类的实例化延迟到子类。
1.3 结构
工厂方法模式的结构。
1.4 参与者
产品类定义工厂方法所创建的对象的接口,实际产品类实现产品类;接口创建者类声明工厂方法,该方法返回一个产品类型的对象。创建者类也可以定义一个工厂方法的默认实现,它返回一个默认的实际创建者对象。实际创建者类重定义工厂方法返回一个实际创建者类实例。
协作:创建者类依赖于它的子类来定义工程方法,所以它返回一个适当的实际创建者实例
2 电力通信软件的设计方案
传统的电力通讯软件针对具体的通信规约,每个软件只能处理单个的通信规约,造成了巨大的资源浪费并且效率低下。本软件采用通用型规约转换软件方案,在该方案中,变电站内可只有一个通讯软件,该通讯软件负责接入系统中所有智能设备和后台管理系统的信息交换。使用这种通讯软件将大大减少开发规约的工作量,提高了代码的复用率。
根据软件需求分析得出的通信软件应具备3方面的功能。
2.1 系统配置
此功能主要用来配置系统中设备信息、转发信息、通道信息和规约信息。
2.2 数据采集与处理
数据采集与处理系统是通讯换软件实际进行数据交换的地方,但并不进行解析和转发处理。
2.3 数据转换
数据转换就是使得按照系统配置进行配置的不同设备之间能够进行通信,这是通讯软件的核心处理部分。
根据需求分析的结果,该软件的系统结构图如图1所示。
本软件主要有系统配置程序、数据采集系统与处理组件、通讯规约库和中间数据处理组件。其工作思想如下:首先运行系统配置程序,在配置界面进行智能设备和监控系统的信息配置、物理通道配置和规约配置,进行规约配置时需要该规约库实际存在,否则无效,配置完成后运行数据采集处理系统则可以根据系统配置的结果进行数据采集,而智能设备和监控系统数据的交换需要经过中间数据处理组件的转换后才可以进行,而中间数据和具体的规约处理过程在各自的规约中处理。
3 传统设备规约和新型智能设备规约(IEC61850)相互转换的实现示例
3.1 中间数据结构介绍
在103规约向IEC61850转换的过程中,103规约作为设备侧使用的规约,IEC61850作为控制转发测的规约。规约转换的实际过程要借助于中间数据来完成,数据的流向为双向,即103规约可以向IEC61850上送数据,IEC61850也可以向103下发命令。具体的转换过程为103规约将自己采集到的数据转换为中间数据IDevData格式,IEC61850从IDevData中获取自己需要的数据,与此相反,IEC61850将需要下发的命令转换为中间数据ICtrlData格式,103规约从ICtrlData中获得下发的命令并下发到自己的装置上去。至此,103规约向IEC61850规约的转换工作完成。
同时,由于IDevData和ICtrlData为中间数据格式,因此当别的规约需要这些数据的时候也可以获取,这样103就可以不需要针对其他的规约另行开发,直接就可以完成和其他规约转换的工作。
在电力通信软件中存在两种意义上规约,分别是设备侧规约和转发侧规约,而设备侧和转发侧并不进行直接的通信,因此需要一种能够分别和两者进行数据交换的中间数据结构,就是IDevData和ICtrlData两个数据类。
3.1.1 设备数据类
class IDevData
{ quint32 cpuCount;/*设备包含CPU数量*/
cpu *Cpus;/*保存设备包含的CPU数组*/
QQueue *cmdAnsQueue;/*命令应答队列,队列达到最大限制时,丢弃最久的数据*/
QQueue *ycChangeQueue;/*变化遥测队列,队列达到最大限制时,丢弃最久的数据*/
QQueue *yxChangeQueue;/*变化遥信队列,队列达到最大限制时,丢弃最久的数据*/
QQueue *soeQueue;/*事件队列,队列达到最大限制时,丢弃最久的数据*/
QHash mIEC61850
…};
3.1.2 控制数据类
class ICtrlData
{ quint32 cpuCount;/*控制系统包含CPU数量*/
cpu *Cpus;/*保存控制系统包含的CPU数组*/
QQueue *cmdQueue;/*命令队列,队列达到最大限制时,丢弃最久的数据*/
QQueue *ycChangeQueue;/*变化遥测队列,队列达到最大限制时,丢弃最久的数据*/
QQueue *yxChangeQueue;/*变化遥信队列,队列达到最大限制时,丢弃最久的数据*/
QQueue *soeQueue;/*事件队列,队列达到最大限制时,丢弃最久的数据*/
QHash mIEC61850
…};
3.2 IEC61850数据映射实现
IEC61850[3]是基于ISO/IEC9506制造报文规范(MMS)实现双方的通信,而IEC61850-80-1[4]中提出了可以扩充原有的数据类型,同时也给出了IEC60850-5-101和IEC60850-5-104数据向IEC61850映射的列子,结构如下所示。其中casdu、ioa和ti分别映射的是IEC61850中的逻辑设备(Logical Device)、逻辑节点(Logical Node)、数据(Data)。而传统的规约中仍是靠点索引来建模,即通过CPU号、组号和点号等来组织数据,因此传统规约向IEC61850转换时必然要进行一定的映射,这样就利用扩展的数据类型使得传统数据点和IEC61850数据一一对应起来。
数据结构:
当系统在初始化时,将中间数据中的哈希表进行初始化。当IEC61850作为智能设备规约时,通过解析配置文件名,得到主键,按照一定的解析方法就可以得到对应传统规约的CPU号、组号和点号;而IEC61850作为控制规约时,将转出的CPU号、组号和点号按照一定的组织方法形成具体的主键,即可在哈希表中得到唯一对应的IEC61850的SCL脚本。这样使得IEC61850和传统规约就可以方便的进行规约转换工作。
4 结语
本软件的开发采用了具有跨平台特性的Qt开发环境,使得开发者仅开发一次就可以将源码应用在Windows系列、Unix/Linux、嵌入式等操作系統等平台上,节约开发时间,提高开发效率。
本文对设计模式在电力通信软件中的设计原理和功能框架进行了分析,为通讯软件提供了人机友好的配置界面,并结合实际开发的IEC6080-5-103、IEC61850等通信规约验证规约模式的正确性,为其他的规约开发者提供了一个新的思路和方法。
经验表明,使用工厂模式进行新的电力通讯软件开发不仅可以大大提高开发速度,而且可以在一定程度上避免不必要的错误。
参考文献
[1]李一峰,柏瑞,卢毅等.电力设备检测软件中设计模式思想的运用[J].电力系统及其自动化学报,2002(06):5-12.
[2]高志勇,宋廉,陈勇等.一种通用的基于“观察者模式”的规约转换器设计方案[J].电力自动化设备,2011(09):108-110.
[3]李永亮,李刚.IEC61850第二版简介及其在智能电网中的应用展望[J].电网技术,2010(04):11-16.
[4]IEC.IEC61850-80-1 Exchanging information from a CDC-based data model using IEC60850 or IEC60850-5-104[S].Ed 1.0.2008-12.
作者单位
1.中电普瑞科技有限公司 北京市 102200
2.国网四川检修公司 四川省成都市 610041