王印松,贾思宇,刘佳微
(华北电力大学控制与计算机工程学院,河北 保定 071003 )
建模仿真是研究解决电力系统问题的重要方法,所以选用何种软件进行建模和仿真是面临的主要问题。
近几年国内外主流的电力系统仿真平台有电磁暂态仿真软件PSCAD 以及MATLAB 中所包含的可视化仿真平台Simulink 等。在众多仿真软件中,MATLAB/Simulink 是当前高校和科研机构使用较多的仿真软件,但存在以下不足:MATLAB 使用成本高,作为一款商业软件,大部分高校和实验室没有财力购买正版的MATLAB;MATLAB 源码封闭,Simulink 模块库中元件模型的内部代码是严格保密的,用户只能通过固定界面来定义模型内部参数,查阅和改变元件内部代码是禁止的,所以完善和维护模型的后期工作是比较困难的[1]。
开源软件Scilab 越来越受到国内科研人员的关注。陈京元、甘光勇等人利用Scilab 开发出自适应光学建模和仿真所需要的工具箱,并介绍了基本结构及可用功能模块,同时给出几个简单应用实例[2];董兴华团队利用Scilab 开发出Scicom 通信仿真的工具箱[3];李勇波等人在Linux 环境下利用开源软件Scilab 建立数学仿真模型,进行了某型探空火箭的半实物仿真试验[4]。
本文介绍一种在开源软件Scilab/Xcos 进行电力元件开发的新方法,可以避免上述MATLAB 使用的不足。在Xcos 框图编辑器中进行电力系统元件的开发,建立网侧变流器及其控制系统的模型,并且验证仿真结果的合理性。
Scilab(Science Laboratory)是由INRIA 开发的一款开源科学计算软件,在21 世纪初期发布了Scilab的第一个版本,后面INRIA 成立了专门的协会来对软件进行后续的开发和维护,Scilab发展到现在已经相当成熟[5]。Scilab 的功能与用法跟MATLAB 相似,但它是免费的开源科学计算软件,Scilab已经可以满足大部分高校师生和科研人员的使用,能够实现信号的分析与处理、矩阵的运算、图像显示与处理,数学建模、深度学习等功能。
Xcos是一个可用于创建动态系统模型的框图编辑器,其提供了一个可用于建模的模块库。Scicos 提供三种用户自定义模块:超级模块功能、Scifunc 模块、使用C或Scilab程序动态链接加载到Scilab,分别对应Simulink 中的subsystem、MATLAB function 以及S function 模块,但在Xcos 还支持面向物理模型的非因果建模语言Modelica,可以轻松地描述不同类型的工作组件(例如弹簧、电阻、离合器等)工作特性。
Scilab/Xcos 使用方便,是目前可以替代MATLAB/Simulink 等对电力系统和控制系统建模仿真商业软件的开源软件。
直流侧电源通过背靠背结构的全功率变流器并网[6-9],网侧变流器拓扑结构如图1所示。
图1 网侧变流器拓扑结构
dq坐标系下网侧变流器数学模型方程如式(1)所示。
式中:ed、eq、id、iq分别为电网侧电压和电流的d、q轴分量;ud、uq分别为变流器侧的电压d、q轴分量;ω为电网同步角频率。
网侧变流器承担着电能并网的任务[10],为了使并网电流相位与电网电压相位相关,引入锁相环来获取电网电压的相位[11-13]。由式(1)分析得知d、q轴电流的大小与电压ud、uq和耦合项ωLid、ωLiq都有关系,想要同时消除耦合项的影响,网侧变流器的控制策略采用的是锁相环结合前馈解耦双闭环控制的方法[14-16]。如式(2)所示。
即将PI 调节器引入id和iq的控制之中就可以得到,同时为了得到控制电压量ud和uq,将式(1)中的两个耦合项ωLid和ωLiq加入中,再进行dq到αβ(两项静止)坐标系变换,之后采用SVPWM 调制方法来控制逆变器完成直流到交流操作。网侧变流器控制系统,如图2所示。
图2 网侧变流器控制系统
空间矢量脉宽调制方式(Space Vector Pulse Width Modulation,SVPWM)主要有电压利用率高、动态响应快等优点[17]。在空间和时间上的正弦性是SVPWM 的一个显著特点,其经常应用在整流器和逆变器的控制系统中。SVPWM 调制方式主要有四个步骤:电压矢量扇区的确定、电压矢量作用时间的计算、比较时间的确定、PWM 波形的产生。搭建好的SVPWM模型如图3所示。
图3 SVPWM仿真模型
Xcos 以模块库的形式提供了一些常用模块,但其种类并不像Simulink 模块库那么全面。Xcos 中的模块对于简单的控制系统设计、信号处理分析是够用的,但是面对一些复杂的控制系统搭建或者电力、热力其他领域的建模时就需要开发某些特定功能的元件。
在Scilab/Xcos 中,每一个元件都是由接口函数(Interface_function)和计算函数(Computational_function)组成。元件的外观、颜色、接口的类型和输入输出接口的个数、变量的初始值等信息都是由接口函数确定的。元件里面输入和输出变量之间的逻辑关系是由计算函数决定的。常用元件开发模块及其功能介绍见表1。
表1 元件开发模块
Xcos 中的元件开发过程,可以根据模型应用的场合和复杂程度,采取不同的实现方法,Xcos中有三种元件开发的方法。
方法一通过从模块库中复制和粘贴模块到超级模块编辑器窗口,再相互连接即可,设置好输入输出,然后使用超级模块(Super block)封装,在一个超级模块内部也可以嵌套多个超级模块。
方法二是利用模块库自定义函数页面里的C block或者Modelica block 模块来开发新的元件,模块的参数设置页面相当于实现了新元件的接口函数功能,确定好参数后进入模块的计算函数编写窗口,根据元件功能使用C 语言或者Modelica 语言编写函数。
方法三从接口函数到计算函数完全由用户自己开发定义。使用Scilab 语言编写接口函数,计算函数根据元件功能需求选择合适的语言编写。
控制系统中的元件一般使用C 语言模块来开发,控制系统的元件有明确的输入与输出接口,在Scilab中这样的接口定义为显式接口,而电力系统元件的接口大多为隐式接口(两侧的端口没有明确的输入输出标志,端口之间满足基尔霍夫电流电压定律这样的约束条件),带有隐式接口元件的开发就需要用到Modelica block模块,Modelica语言是一种非因果(通常用于创建面向原理的物理模型设计)建模语言,非常适合电力、机械、流体、热学等系统的建模。
下面以电力系统中的可控电压源和IGBT 为例进行新元件的开发。
接口函数的定义。明确所建立元件的接口,可控电压源的接口,两个隐式接口和一个显式接口,两个隐式接口就是电压源的两端,显式接口用来接收电压的数字信号,输入输出端口的类型中“E”代表显式接口,“I”代表隐式接口,由于电压信号从外部给定,所以不需要定义其他模块参数,具体端口设置如图4所示,确定即可进入计算函数编辑界面。
图4 Modelica block参数设置
定义好了新元件的接口函数,可控电压源元件的计算函数示例如下。
还建立了可控电流源、三相变压器等元件,具体过程不再描述,建立好的元件可以直接添加进Xcos的模块库中,以便下次使用。
在Scilab/Xcos 平台上搭建的网侧变流器及其控制模块仿真模型如图5 所示,其中网侧变流器的参数见表2。
图5 网侧变流器仿真模型
表2 网侧变流器主要参数
根据建立的模型可得变流器在逆变状态下仿真结果。为了便于观察,下面图像中的变量都经过了标幺化处理,图6 为并网电流与电网电压相位图,图7为并网电流仿真波形。
图6 并网电流与电网电压相位
图7 并网电流仿真波形
从仿真结果可以看出网侧变流器实现将直流电逆变成交流电的功能,同时实现了并网电流与电网电压同频反相功能,验证了所开发元件和建立锁相环模型的正确性。
可控电压源给定一个变化的扰动信号来模拟机侧的扰动,机侧的串联电阻值为0.1 Ω,扰动信号在0.07 s 由570 V 跃升到800 V,再经过0.04 s 回到570 V。仿真结果如图8所示。
图8 扰动时的直流侧电压
从图8 中的仿真结果可以看出,在三相平衡对称电网电压下机侧电压发生变化时,直流侧电压U可以很好跟踪系统给定及抵抗外界的干扰。验证了控制系统模型搭建的正确性。
本文提出在Scilab/Xcos 平台上将建模语言Modelica引用到网侧变流器的元件开发中,扩展了模块库中电力系统元件种类,完成了网侧变流器及其控制系统元件级模型的搭建,并验证了在开源软件平台上所开发元件以及所搭建模型的正确性。
在建模过程中也注意到Scilab 仿真软件的不足之处,Modelica 语言开发模块的界面不能更改;仿真速度与Simulink 比也要慢一些;操作界面比较粗糙还需要进一步的优化提升;最新版本6.1中还存在一些bug 需要修复。但是由于软件的开源性,其扩展性很强,一些问题可以通过努力解决。从功能性的角度来看,Scilab 软件可以胜任大学、研究所等机构在电力系统方向的教学科研任务的,Scilab软件不失为一条在电力系统领域建模仿真的新途径。