目前,在我国骨干电网中,柔性交流输电系统[1](flexibleACtransmissionsystems,FACTS)装置,如晶闸管控制串联补偿电容器(thyristorcontrolledseriescapacitor,TCSC)、静止无功补偿器(staticvarcompensator,SVC)、可控并联电抗器(controlledshuntreactor,CSR)等已广泛使用,对电网的安全、稳定运行发挥了极其重要的作用。为实现FACTS装置与站内其他设备之间无缝接入、实现信息的高速传递和共享,FACTS装置通信软件需要进行大量的数据处理、传输,基于设计模式开发的通信软件可以很好地满足这一需求。现代电力系统的发展趋势是智能化。原有的FACTS装置通信软件[2-3]面临升级,由此带来的异构性给应用软件的互操作性、兼容性和平滑性升级能力带来了很大的挑战。采用设计模式开发的通信软件模块化程度高、扩展性强,能很好地满足这一要求。
1设计模式
设计模式[4-5](designpatterns)是在设计面向对象软件的过程中记录的知识和经验,它是对被用来在特定场景下解决一般设计问题的类和相互通信的对象的描述。设计模式的目的就是复用这些面向对象软件设计[6-7]的解决方案以及便于这些抽象解决方案的积累和交流。软件设计有2种设计方法,分别是结构化设计方法和面向对象设计方法[8]。设计模式作为面向对象软件设计过程中知识和经验的总结成果,具有很重要的作用,可以帮助设计者去分析和解决问题。本文主要关注了工厂模式,一个设计模式的描述一般包含模式名、意图、结构、参与者、协作等5个方面。本文结合这5个方面详细介绍工厂方法模式。1)模式名。工厂方法(factorymethod)模式,又称为虚构造器(virtualconstructor)模式。2)意图。定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法模式使一个类的实例化延迟到子类。3)结构。工厂方法模式的结构图如图1所示。4)参与者。产品类定义工厂方法所创建的对象的接口,实际产品类实现产品类;接口创建者类声明工厂方法,该方法返回一个产品类型的对象。创建者类也可以定义一个工厂方法的默认实现,其返回一个默认的实际创建者对象。实际创建者类重定义工厂方法返回一个实际创建者类实例。5)协作。创建者类依赖于其子类来定义工厂方法,所以返回一个适当的实际创建者实例。一般地,工厂模式适用于类创建对象延迟到子类和类创建对象未知的时候。在实际使用过程中,工厂方法模式的父类和子类分别用来定义创建对象的接口和负责生成具体的对象,实例化的过程在子类中实现。由于工厂方法模式隐藏了子类实例化不同对象的创建过程,降低了层次之间的耦合性,满足了软件扩展性的需求,从而最大程度地减少增加新子类时需要付出的代价。这个特性很好地满足了在规约转换软件中需要不断升级和开发新规约的特点。
2通信软件的开发方案
传统的FACTS装置通信软件针对具体的通信规约,每个软件只能处理单个的通信规约,造成了巨大的资源浪费并且效率低下。本软件采用通用型通信软件方案[9],如图2所示。在该方案中,变电站内FACTS装置可只有一个通信软件,该通信软件能接入系统中所有FACTS装置,并且完成与变电站监控系统的信息交换。使用这种通信软件将大大减少开发通信模块的工作,提高了代码的复用率。根据软件需求分析[10]得出通信软件应分为3部分开发。1)系统配置。此部分主要用来配置系统中FACTS装置信息、接入设备信息、通道信息和规约信息。FACTS装置信息主要包括装置地址、数据传输通道信息和装置本身具体的遥测、遥信等运行信息;接入设备信息主要包括接入设备地址、数据传输通道和接入的具体遥测、遥信等信息;通道信息主要配置数据传输通道使用的规约以及辅助的通道地址、端口号等;规约信息用来配置具体的使用的规约库。2)数据采集与处理。数据采集与处理系统是通信过程上行和下行的数据按照具体的数据格式采集和发送出去。这是通信软件实际进行数据交换的地方。3)数据转换。数据转换就是根据系统配置,FACTS装置与接入设备之间进行数据通信,完成信息的无缝传输。这是通信软件的核心处理部分。
3IEC60850-103规约向IEC61850标准接入的实现示例
3.1工厂模式在通信软件中的应用在进行通信软件的设计时,FACTS装置通信软件使用的通信规约不尽相同。因此,本软件开发了一些常用的通信规约,使得其之间能够相互转换。下面结合工厂方法模式说明IEC60850-103规约向IEC61850标准转换的过程。在进行通信软件的设计时,不同的规约采用的物理通道不同,也就是通信方式的不同,而实际的通信方式的种类远小于规约的种类,如果把具体的通信方式写在具体的规约中,当不同的规约使用相同的通信方式时,就会出现大量重复劳动的现象。此时把不同的通信方式抽象成一个基类,由具体的规约在使用时去实例化自己的通信方式。因此在抽象工厂中定义了创建通道和创建规约的接口,使得规约的创建和通道的创建分开。这样使用工厂模式可以很方便地开发新的规约,而不需要更改原来已经完成的系统,每增加一个规约只需要增加自己的工厂方法和实现类即可。工厂模式应用如图3所示。1)抽象工厂类。将抽象工厂类命名为IFactory,主要是定义了抽象的创建通道和规约的方法。分别是createProtocol()和createChannel()。2)具体工厂类。将IEC61850工厂类命名为IEC61850Factory,继承于IFactory类。实现了具体的规约和通道的创建过程。3)抽象通道类命名为IChannel,定义了通道的打开、关闭、读和写的方法以及通道状态判别的方法。4)TCP通道类命名为TCP,继承于IChannel类,实现了TCP通信的具体工作。5)抽象规约类命名为IProtocol。主要是定义了通用规约的通用数据变量和处理方法。6)103规约类命名为IEC103,继承于IProtocol类。主要工作是定义了将采集到的数据局转换为中间数据IDevData的方法,以及将ICtrlData中的数据下发的方法。7)IEC61850标准类命名为IEC61850,继承于IProtocol类。主要工作是定义了将IDevData中的数据进行解析的方法和将需要下发的命令转换为ICtrlData中间数据的方法。
3.2数据结构介绍在103规约向IEC61850转换的过程中,103规约作为设备侧使用的规约,IEC61850作为转出侧的规约。转换的实际过程要借助于中间数据来完成,数据的流向为双向,即103规约可以向IEC61850上送数据,IEC61850也可以向103规约下发命令。具体的转换过程为:103规约将自己采集到的数据转换为中间数据IDevData格式,IEC61850从IDevData中获取自己需要的数据,与此相反,IEC61850将需要下发的命令转换为中间数据ICtrlData格式,103规约从ICtrlData中获得下发的命令并下发到自己的装置上去。至此,103规约向IEC61850标准的转换工作完成。同时,由于IDevData和ICtrlData为中间数据格式,因此当别的规约需要这些数据的时候也可以获取,这样103就可以不需要针对其他的规约另行开发,直接就可以完成和其他规约转换的工作。在FACTS装置通信软件中存在2种意义上规约,分别是装置侧规约和转出侧规约,而设备侧和转出侧并不进行直接的通信,因此需要一种能够分别和两者进行数据交换的中间数据结构,就是IDevData和ICtrlData两个数据类。
3.3IEC61850数据映射IEC61850[11]是基于制造报文规范(MMS)来实现双方的通信,而IEC61850-80-1[12]中提出了可以扩充原有的数据类型,同时也给出了IEC60850-5-101和IEC60850-5-104数据向IEC61850映射的列子,结构如下所示。其中casdu、ioa和ti分别映射的是IEC61850中的逻辑设备(logicaldevice)、逻辑节点(logicalnode)、数据(data)。而传统的规约中仍是靠点索引来建模,即通过CPU号、组号和点号等来组织数据,因此传统规约向IEC61850转换时必然要进行一定的映射,这样就利用扩展的数据类型使得传统数据点和IEC61850数据一一对应起来。当系统在初始化时,将中间数据中的哈希表进行初始化。当IEC61850作为智能设备规约时,通过解析配置文件名,得到主键,按照一定的解析方法就可以得到对应传统规约的CPU号、组号和点号;而IEC61850作为控制规约时,将转出的CPU号、组号和点号按照一定的组织方法形成具体的主键,即可在哈希表中得到唯一对应的IEC61850的SCL脚本。这样使得IEC61850和传统规约就可以方便的进行规约转换工作。
4结论
本软件的开发采用了具有跨平台特性的Qt开发环境,使得开发者仅开发一次就可以将源码应用在Windows系列、Unix/Linux、嵌入式等操作系统等平台上,节约开发时间,提高开发效率。FACTS装置在现代电网中会已有很大的应用,随着计算机网络的发展,FACTS装置的运行数据也会统一纳入电网运行大数据库,所以,灵活通用的通信软件越发显得重要。本文对设计模式在FACTS装置通信软件中的设计原理和功能框架进行了分析,为通信软件提供了人机友好的配置界面,针对具体的规约提出了规约模式,并结合实际开发的IEC6080-5-103、IEC61850等综合经济期刊通信规约验证规约模式的正确性,为其他规约开发者提供了一个新的思路和方法。
作者:周亚娟 单位:中电普瑞科技有限公司
相关专题:经济增长理论 关于金融风险化解方案