目前,火电厂中电气系统正开始纳入分散控制系统(DCS)。电气系统与热工自动化系统联合仿真的需求开始显现。电气系统与热工系统相比在控制要求及运行过程中有着很多不同点,电气的主要特点,如电气设备保护自动装置要求可靠性高,动作速度快;电气设备操作机构复杂,操作频率低等,都要求机组的电气系统纳入DCS控制后,控制系统具有很高的可靠性,除了能实现正常起停和运行操作外,尤其要求能够实现实时显示异常运行和事故状态下的各种数据和状态,并提供相应的操作指导和应急处理措施,保证电气系统自动控制在最安全合理的工况下工作。电气系统的特点使多年来电力系统的仿真研究采用专门的软件,与电厂热控系统的仿真是分别进行的。随着计算机开放性技术的发展完善,采用通用仿真软件实现各种不同类型过程仿真分析已成为可能,如MATLAB应用于电力系统的仿真早已受到了重视[1]。参考文献[1]在1997年就介绍了将电力系统实时数字仿真的电磁暂态分析软件包PSCAD/ EMTDC向MATLAB的转换,实现了通用开放可视的技术。
MATLAB凭借其强大的矩阵运算能力、简便的绘图功能,可视化的仿真以及丰富的算法工具箱,已成为科研和工程技术人员的有力开发工具[2],如已广泛应用于各种不同类型的电厂热工控制系统。参考文献[3]介绍了将MATLAB用于工业过程实现可视化仿真的技术。然而,对于电力系统工程技术人员来说,如何按照工程需求,准确而快速地对电路以及更复杂的电气系统进行自定义的仿真研究,常规的仿真工具显得力不从心,因为如果各环节用简化传递函数来表示,则很多重要细节会被忽略;若用MATLAB中的Simulink提供的基本模块(如开关和触发器)来构造模型,则相当费时费力,虽然可以使用PSPICE来实现电子电路的仿真,但PSPICE主要适用于微电子领域,难于与电力系统设计所需要的复杂算法和先进控制理论相结合。至今大量的电气系统的仿真分析仍然采用专用软件包[4]。本文将结合MATLAB中的电气系统模块库(Power SystemBlockset),探讨采用MATLAB实现电力系统仿真分析与设计的方法。利用MATLAB与FOR-TRAN等高级语言的接口,还可以继承多年来电力系统仿真分析的经验。
1 电气系统模块库介绍
MATLAB版本5.2以上提供了电气系统模块库Powerlib。电气系统模块库以Simulink为运行环境,涵盖了电路、电力电子、电气传动和电力系统等电工学科中常用的基本元件和系统的仿真模型,不仅可以实现电力系统时域与频域的计算仿真,如计算电力系统遭受扰动或参数变化时电参数随时间变化的规律,而且可以广泛应用于高压直流输电、FACTS控制器设计、电力系统谐波分析及电力电子领域的仿真分析计算等。
运行Simulink以后,打开Blocksets&Tool-boxes,就能调出电气系统模块库。也可以在MATLAB的命令窗口,直接键入Powerlib调出。电气系统模块库Powerlib由如图1所示的6个子模块库组成。
(1)电源模块库:包括直流电压源、交流电压源、交流电流源、可控电压源和可控电流源等。
(2)基本元件模块库:包括串联RCL负载/支路、并联RCL负载/支路、线性变压器、饱和变压器、互感器、断路器、N相分布参数线路、单相Ⅱ型集中参数传输线路和浪涌放电器等。
(3)电力电子模块库:包括二级管、晶闸管、GTO、MOSFET和理想开关等。为满足不同目的的仿真要求并提高仿真速度,还有晶闸管简化模型,如图2所示。
(4)电机模块库:包括励磁装置、水轮机及其调节器、异步电动机、同步电动机及其简化模型和永磁同步电动机等,图3所示为简化的同步电机模型。
(5)连接模块库:包括地、中性点和母线(公共点)。
(6)测量模块库:包括电流和电压测量。
在6个基本子模块库的基础上,按需要可组合封装出常用的更为复杂的模块,添加到所需模块库中去。如图4所示附加模块库(PowerlibEx-tras)中的三相电气系统就是用6个基本子库中的各模块构造并封装起来的。可以用“LookUnderMasy”命令打开其中的各模块,查看其内部结构以了解构造方法和规律。附加模块库中还包括:均方根测算、有功与无功功率测算、傅立叶分析、可编程定时器和同步触发脉冲发生器等。
2 基本运行原理与使用
电气系统模块库中的Powerlib模块与常规的Simulink模块两者有一些区别,所以,在Simulink内部,进行仿真前有一个初始化的过程,把包含Powerlib模块的系统转化为Simulink能够仿真的等效系数,具体操作如下:
(1)调用Power2sys函数,把所有的模块划分为常规模块和Powerlib模块,其中的Powerlib模块又分为线性模块和非线性模块。
(2)调用Power2sys函数求出模块的网络拓扑结构,得到其参数,并对每个电气结点都赋予一个结点号。
(3)调用Circ2sys函数求出线性模块的状态空间模型(状态变量为电感电流和电容电压)。
(4)调用Power2sys函数,根据Simulink的内部预定义的模型求出非线性模块的Simulink模型。
初始化完成后,Simulink开始对此系统仿真。
Power2sys和Circ2sys函数都能以命令行的形式在MATLAB命令窗口直接调用,而且使用上更为灵活,可以构造出Powerlib中所没有的模块(如具有3个以上绕组的互感器),此处不再赘述。
当然,上述复杂的预处理过程对用户来说都是屏蔽的。电气系统模块库中的模块在使用上,与常规的Simulink模块类似,将其拷贝到自己的模型中并设置合适的参数即可。但是,Powerlib模块与常规的Simulink模块毕竟是两类不同的模块。所以,对于同时使用两类模块的仿真模型,必然会有两类模块之间的信号流动,这就需要中间接口模块。具体地说,当Simulink模块的信号送Powerlib模块时,应根据其性质,采用可控电压源或可控电流源模块作为中间环节;反之,当Powerlib模块中的信号反馈给Simulink模块构造的控制系统时,应采用电流或电压测量模块。
由于在仿真初始化过程中,Power2sys函数将逐个检查模型中的各个模块是否为电气系统模块,所以,对于大规模的系统,在一定程度上会降低仿真的速度。为避免这种负面影响,可以人为地迫使Power2sys不去检查那些常规模块,方法是在常规模块以及包含常规模块的子系统的模块名前加1个“$”符号,如“$PID”,但必须确保子系统内的模块皆为常规模块。
Powergui是电气系统模块库提供的1个有力的工具。通过它,能以图形用户界面(GUI)的方式来方便地计算和显示出系统中各状态变量和测量变量的稳态值;可以修改系统的初始状态来实现从任一初始条件开始仿真,能避免较长的过渡过程;还可以实现对包含电机的三相电网潮流的计算和初始化。使用Powergui只需将其拷贝到模型中,打开即可进行查看和设置。
3 基于MATLAB的电力电子仿真举例
从DEMO中可以了解到许多电气系统的仿真实例。如电力滤波器、HVDC、分布参数线路、变压器、暂态分析、三相二极管整流等。本文采用电气系统模块库建立的晶闸管(Thyristor)整流电路如图5。系统通过单项单脉冲晶闸管整流电路供电给RL负载。晶闸管门极触发脉冲由定时器Timer l提供。仿真时的设定参数为:整流器负载R=0.5Ω,L=6.5 mH。晶闸管模块导通电阻R=0.001Ω,电感L=le-5H,正向电压U=0.8V,旁路电阻R=20Ω,电容C=4e-6F。线路负载也可以采用电抗形式表示。将Powerlib中晶闸管模块的信号反馈给Simulink的滤波显示模块(Ufilter)时,采用了电流及电压测量模块。图6为示波器Ufilter显示的电压和电流仿真波形。该曲线与理论分析实验波形完全一致。
参考文献
[1]A.M.Gole,A.Daneshpooy.Towards Open Systems:A PSCAD/EMTDC to MATLABInterface.Submitted toIPST’97.
[2]柳承茂.MATLAB5.X入门与应用.北京:科学出版社,1999.
[3]李平康.一种可视化的工业过程CAI软件开发技术.1999年中国电机工程学会电力自动化学术会议论文集.1999,10.
[4]周孝信.面向21世纪的电力系统技术.1999年中国电机工程学会电力自动化学术会议论文集.1999,10.