80年代初,第一套大型火电机组仿真机在我国研制成功。1988年能源部发出“关于发展火电机组模拟培训装置的通知”,此后电力系统仿真技术得到了迅猛发展,出现了大量的仿真公司和研究中心。1990年清华大学电机系完成了国内第一套电网仿真系统即东北电网仿真系统,1993年清华大学电机系厂站仿真室完成了国内第一台水电厂仿真器即吉林省丰满水电厂仿真器。到1999年,大多数省网已使用了变电站仿真器、火电仿真器和电网调度仿真器。
2 采用分布交互式仿真技术的优越性
分布交互式仿真(Distributed Interactive Simu-lation,DIS)是从美国SIMNET项目中发展起来的一种仿真技术,它连接不同地理位置上的仿真应用来创建一个逼真而复杂的虚拟世界,以进行具有强交互作用的仿真,并允许各仿真应用之间的互操作。DIS系统在设计时应遵循以下原则:
(1)对象/事件结构 对象之间通过一系列的事件产生交互作用。
(2)仿真接点的自治性 所有事件通过仿真网络进行广播式传播,自治原则使仿真接点可以动态地加入和脱离仿真运行,而不会影响其他接点的交互。
(3)传递真实信息 各仿真对象即时状态的如实传播。
(4)仅传递状态变化信息 以减少不必要的数据传输和通信处理任务。
(5)采用预估算法和仿真时间约束 以降低网络传输的负荷。
近几年来,随着计算机技术的飞速发展,仿真技术越来越广泛地应用于各个领域,使传统意义上的PC能够完成以前工作站才能完成的工作。由于PC的价格比工作站低很多,因此,如何充分利用PC的资源来完成传统上由工作站完成的工作,从而达到更好的性能价格比,是仿真技术面临的一个新问题。分布交互式仿真技术能充分利用计算机资源,从而使问题得到解决,仿真技术也从单机仿真发展到多机仿真。
变电站仿真器主要由教员台、学员台、计算台和下位机组成。
基于单机的变电站仿真器以一高性能的工作站为主,运行一种操作系统,例如VMS或UNIX。工作站主机运行教员台和计算台,并负责和下位机的网络通信任务,因此其计算和网络通信负荷很重,而学员台运行在工作站主机的Xterm上,因此可以认为整个仿真器都运行在单机上,如图1所示。
基于多机的分布交互式变电站仿真器一般是在一高性能的微机上运行教员台,在另一微机上运行计算台,其余的微机运行学员台,具体的体系如图2所示。
在多机运行模式中,教员台和计算台运行在不同的微机上,计算台负责计算每个仿真周期里的电压、有功、无功等的变化量和保护动作量,并把计算出的各量通过网络广播的方式发送给下位机、教员台和学员台,而不管它们是否需要这些数据。
由图2可以看到,整个仿真器之间的网络通信是通过广播的方式实现的,这种方式下的计算台、学员台、教员台和下位机都向网络发送数据,而接受端只好被动地接受数据并判断其所感兴趣的内容。因此整个仿真器运行时在网络上充斥着大量冗余数据,网络通信是无序的,而且负荷比较重。
3 基于高层体系结构(HLA)的分布式变电站仿真器
3.1 传统DIS仿真模式的不足
(1)基于广播的通信方式,传播的信息有大量的冗余
DIS的网络通信采用广播方式,这种通信机制不能保证通信数据的无误传输,而广播方式的通讯是面向整个网络的,每个节点都向网络上的其它节点广播自身的状态信息,而其它节点则不加区分地接收这些信息。随着仿真应用的扩大,仿真节点的增多,必然要在网络上传递大量的信息,然而各个仿真节点必须接受的信息却不多。
(2)仿真支撑功能的不可重用
DIS中仿真应用和仿真支撑功能(网络通信)是集成在一起的,开发人员必须花费大量的时间和精力去开发仿真支撑功能,而不同的仿真应用的网络通信功能是不可重用的,这就意味着网络通信功能的重复开发。因此如何开发一个通用的仿真支撑功能,提高仿真效率,便成为迫切需要解决的问题。
(3)不能满足仿真应用的实时性
在采用动态数学模型的变电站仿真器中,仿真的步长已缩短至0.02s,随着仿真应用范围的扩大(如果用户要求同时仿真地区电网),则传统的DIS仿真模式难以满足仿真的实时性。
3.2 高层体系结构
1996年8月美国国防建模与仿真办公室制定了HLA技术框架,HLA主要由3部分组成[1-3]:
(1)联邦规则(RULES)
(2)对象模型样板(Object Model Template,OMT)
(3)运行支撑系统(Run Time Infrastructure,RTI)
在HLA体系中,实现特定仿真目的的分布式 系统叫做联邦,联邦由仿真应用、RTI、联邦对象模型构成,而RTI则起到支撑各种不同仿真应用的作用。在HLA中对象模型是描述客观事物的一组对象的集合,在对象模型中描述了这些对象的属性、联系、交互。对象模型在HLA中包括2类:联邦对象模型(Federation Object Model,FOM),用于描述联邦执行过程中成员共享的信息;成员对象模型(Simu-lation Object Model,SOM),用于说明成员在参与联邦时提供的能力。在HLA中规定了统一的表格OMT来规范对象模型的描述。OMT提供了一个可共同理解的机制来描述成员数据的交换。
联邦规则有10条:
(1)必须有一个联邦对象模型(FOM),用于记载运行时成员交换数据的协议和条件;
(2)FOM中所有对象属于各个成员,而不在RTI中,使仿真应用和通用的支撑服务分离;
(3)所有数据的交换必须通过RTI,保持联邦数据交换的一致性;
(4)成员与RTI的交互遵循RTI接口规范,标准化的接口使得开发仿真应用无需考虑RTI的实现;
(5)对象的属性在任一时刻只能为1个成员所有,保证联邦成员数据的一致性。HLA提供了将属性动态地从1个成员到另1个成员的机制;
(6)必须有成员对象模型SOM,SOM充分描述了成员能向外提供的基本能力;
(7)必须能更新和使用内部对象的属性以及发送和接受对象的交互;
(8)必须能按SOM的规定迁移和接受属性的使用权;
(9)必须能改变属性公布的条件;
(10)必须能管理局部时间,从而保证它能协调与联邦中其它成员交换数据。
HLA的RTI提供了各种服务来处理联邦运行时成员间的互操作和管理联邦的运行:
(1)联邦管理服务(FM) 提供创建,删除,加入,退出联邦运行等服务;
(2)声明管理服务(DM) 成员可订购它所需要的属性值和公布它能提供给其它成员使用的属性值;
(3)对象管理服务(OM) 提供成员在联邦运行时创建和删除对象以及属性值的传送;
(4)所有权管理服务(OWM) 提供属性所有权在成员间迁移和接受的服务;
(5)时间管理服务(TM) 用于控制联邦仿真时间的推进;
(6)数据管理服务(DDM) 提供对数据空间的管理,提供数据分发的服务。
相对于DIS模式,HLA模式通过引入RTI运行支撑系统,把仿真应用和运行支撑系统环境分离开来。比较好地解决了运行支撑在仿真中的可重用性并有效地减少了网络上大量冗余的数据量。其原理如图3所示。
在HLA中各个仿真应用之间的交互通过HLA提供的接口来进行。每个仿真应用向RTI声明其能“发布”和“订购”的数据,在仿真器运行时由RTI运行支撑系统来确定网络的连接和数据的收发,各个仿真应用并不关心网络数据的传输,而只关心其感兴趣的数据。而且RTI中可以实现有连接和无连接的通信方式,有连接的方式是一种可靠的通信方式,在必须保证通信正确的要求下采用它,而无连接的方式相对于有连接的方式耗时要少。在HLA中可以实现点对点、多播、广播的通信方式,整个网络的传输是有序的。
然而HLA的标准是美国军方针对军事领域的仿真应用而提出、制定的,对于其它领域的仿真应用显得比较复杂和臃肿,因此吸收HLA标准,采用其接口的标准性、仿真支撑重用性、应用和支撑的分离性来重新设计了分布式变电站仿真器的体系结构,以期达到如下效果:
(1)每个仿真节点能“发布”和“订购”数据;
(2)每个仿真节点能动态地“加入”和“退出”仿真运行;
(3)对网络数据进行过滤,减少通信量;
(4)利用多线程来处理网络数据的收发;
(5)采用面向对象的方法来实现提高模块的可重用性。
3.3 基于HLA/RTI的RtiServ
RTI的运行支撑程序RtiServ运行在服务器(NT Server)上,并采用集中式的RTI。
在RtiServ程序中采用了一对一(单播)和一对多(多播)的传输方式。单播和广播是编址方案的2个极端(一对一或全网),多播的目的在于提供一种折衷方案,多播数据仅由对该数据感兴趣的接口接收,也就是说,由运行希望参加多播会话应用系统的主机上的接口接收。广播一般局限于局域网,而多播既可用于局域网,也可跨越广域网。
FedM是运行的主线程,负责管理整个联邦运行,其它对象的实现由各个子线程来完成。FedM对象负责管理总的联邦运行:创建、控制、加入、删除联邦执行。在一个成员加入到联邦执行前,联邦执行必须存在。成员加入联邦执行的顺序是不定的,但删除联邦执行必须在所有成员都退出联邦执行以后。联邦执行的创建和删除的示意图见图4。
RtiServ由不同的对象构成RtiM,PubM,SubM,RtiR。
RtiR对象负责联邦成员和RtiM的交互,包括属性的更新和调度等。
PubM对象负责管理发布数据对象状态的变化,并将这些变化传递给其他的对象。
SubM对象则把各个对象的定购区域和更新区域作比较,对满足条件的对象发出定购信息。
RtiM对象由DM、OM、TM和OWM等不同对象构成,它完成对象管理、声明管理、所有权管理、时间管理,以保持一致性。RtiM还可声明能发出的信息和希望接受的交互,给加入联邦执行的每个对象唯一的ID,对象的ID由RTI动态地产生,当对象被删时RtiM应该通知对该对象感兴趣的各个成员,该对象已经脱离联邦运行。所有权管理服务则提供了成员间属性所有权的迁移和接受。在得到授权以后,一个成员有权力将另一个成员从联邦运行中删除。TM对象负责计算时间量(Time Stamp,TS),使仿真世界中的事件发生的顺序与真实世界中的事件发生的顺序相一致,维护内部的一致性和成员的相关信息。成员可以请求联邦时间,当前的(LowBound on The Time Stamp,LBTS)值和时间推进量以满足成员之间的交互。DM对象的主要功能是限制一个大规模范围的数据分发和接受,减少网络上的传输数据和成员处理的数据量。在HLA中数据分发的基本概念是路径空间(Routing Space,RS),路径空间是一个多维的关联空间,成员可以用它来描述其希望接受和发送的数据,它有3个要素:坐标系统的维数、路径变量(对应于坐标系统的每一维)和路径变量在每维上的定义。成员指定一定购区域,意味着只有落入该区域的数据才被发送,而指定一更新区域并将该区域与一对象相联系,成员将保证当对象更新时,如对象的属性落入了更新域,则将发出更新值。联邦成员先向RtiM对象说明其想定购或发送的数据,由RtiM对象进行匹配,选择路由空间,并建立连接,最后发送数据。
如图5所示,当定购对象S1和发布对象P1重叠时,与P1对象相关的属性将由RitM对象传递给S1对象。对象P2的发布区域与其他定购区域不相交,因此将禁止发送对象P2的数据。通过对发
布和定购区域的计算,可以确定发布方是否可以发布,以及定购方是否应该接受,故称区域的匹配为过滤计算。过滤信息的处理建立了数据源与一组目的地的对应关系,数据只需1次多播即可,从而减少了网络的流量。因此RtiServ实现了仿真应用和仿真支撑功能的分离,并大幅度地减少了网络的通信量。公共对象请求代理结构(Corba)是一基于分布式面向对象的计算体系结构,可以隐藏底层通信协议和硬件的细节,因此RTI的原型一般基于Corba来实现[4-5]。当对象在另一机器上时,客户端和服务端必须分别通过一特殊层来管理网络通信,在客户端是存根(stub),在服务端是骨架(skeleton),对象请求代理(ORB)负责屏蔽网络通信,而Stub类和Skeleton类则是在编译Idl文件时生成的。Idl语言提供了一种类似于C++的语法[6],供Corba应用的开发者描述服务对象的界面。
在具体实现中,采用了可视化编程工具C++Builder 4。在C++Builder 4中已经方便地提供了可视化的Corba Server、Corba Client、Corba IDLFile、Corba Object Implementation对象和大量基于Corba的应用例程,可以很方便地实现分布式计算。C++Builder 4还提供服务代理(smart agent)来实现动态,分布的目录服务。在运行时,ORB通过广播来建立和SmartAgent的联系。一旦建立联系,则采用基于UDP点对点的通信方式来传递数据。
3.4 分布式数据过滤机制的实现
在HLA下,数据过滤的实现是通过路径空间(RS)来实现的,通过发布和定购区域的匹配计算,确定发布方是否可以发送数据和定购方是否可以接受数据,并建立了数据源与一组目的地的对应关系,在此基础上通过底层网络的多播功能,数据只需1次发送即可。如基于网格(grid-based)过滤机制把路径空间划分为粒度相等的网格,并为每个单元分配1个地址,发送者向与其公布区域相交的网格对应的地址发送数据。但是这种方式的地址数量太大,网络资源浪费严重。因此必须寻找一种更好的过滤方法,如在RS的基础上采用基于数据发送源的过滤机制(Send Based Filter,SBF)。
在分布式仿真中的数据过滤机制应该是高效的,并不影响仿真器的实现效率。在各个仿真节点上,计算机CPU的开销主要由3部分组成,即仿真模型计算、接受数据和过滤机制开销。在每个仿真节点上由仿真主进程派生一个过滤子进程,该子进程负责过滤由RtiServ发送的信息(定购信息,发布信息),定购区域信息和其它发布区域信息进行匹配,根据匹配的结果指导相应的节点开始或停止发送数据,从而有效地减少了网络数据的冗余量。
4 HLA/RTI实现中要注意的问题
4.1 多线程数据共享
多线程应用程序与单线程应用程序相比,有很大的差异。在单线程应用程序中,进程中的所有系统资源均由1个线程来使用,而在多线程中,进程中的多个线程共存于进程的虚拟空间,它们共享进程所有资源。如果发生多个线程同时访问或操作进程中的某个变量时,将会使应用程序产生意想不到的错误。因此对数据的读、写操作必须采用“数据锁”来处理,当某一线程对数据进行读写操作时,应首先调用Lock方法将数据锁定以阻止其它线程对它的访问,操作结束再调用UnLock方法,释放对数据的控制权。
4.2 异步传输的采用
在缺省状态下,套口是阻塞方式的。当一个套口调用不能立即完成,进程进入睡眠状态,等待操作的完成。为了提高网络的传输速度,应该采用非阻塞I/O套口。
5 结语
分布交互式仿真技术在不断发展。本文把HLA规范应用到变电站仿真中,是一个有益的尝试。随着CORBA技术的进步,分布式仿真技术也日趋完善,这必然会推动仿真技术在电力工业中的应用。
参考文献
[1] 华东电力试验研究所.华东500kV电网谐波联合测试报告[R].1994
[2] 冯宝忆.华东500kV电网谐波问题初探[J].华东电力,1992,(4)
[3] GB/T 14549-93.电能质量公用电网谐波[S].
[4] 姚国灿,等.电力系统谐波程序(简称CHP程序)使用说明[R].电力部电力科学研究院技术报告,1991.