第8章定制模块第8章定制模块8.1定制非线性模块8.2S函数的编写及应用第8章定制模块8.1定制非线性模块8.1.1非线性电感模块【例8.1】定制一个非线性电感元件,当电压在0~120V时,电感恒定为2H;当电压超过120V时,电感元件饱和,电感降低到0.5H。图8-1所示为该非线性电感对应的磁通—电流特性曲线,单位为p.u.。其中VB = 120/sqrt(2)V,fB = 50Hz。第8章定制模块图8-1例8.1的磁通—电流特性曲线第8章定制模块解:(1)理论分析。显然电感元件上电压v和电流i具有如下关系:其中,Ψ为电感元件上的自感磁链。由式(8-1)可以得到磁链Ψ为因此电感上的电流i为tΨtiLvddddtvΨdLtvLΨid(8-3)(8-2)(8-1)第8章定制模块可见,可以用受控电流源表示该非线性电感元件,该电流源受控于电流源两端的电压。(2)按图8-2搭建非线性电感模型。该模型包括一个电压表模块、一个可控电流源模块(电流源的电流方向为箭头所示方向)、一个积分模块和一个用于描述磁通—电流饱和特性的查表模块。选用的各模块的名称及提取路径见表8-1。图中有一个信号输出口m,输出非线性电感模块上的磁通和该模块两端的电压值。第8章定制模块图8-2非线性电感模型第8章定制模块模块名提取路径受控电流源模块CCSSimPowerSystems/ElectricalSources电压表模块VSimPowerSystems/Measurements电气接口In、OutSimPowerSystems/Elements积分模块IntegratorSimulink/Continuous一维查表模块Look-UpTableSimulink/LookupTables信号合成模块MuxSimulink/SignalRouting信号输出端口mSimulink/Sinks表8-1例8.1非线性电感模型中包含的模块第8章定制模块图8-3例8.1的查表模块参数设置打开查表模块参数对话框,按图8-3设置参数。该图中的参数实际上就是图8-1的磁通—电流特性。其余模块的参数采用默认设置。第8章定制模块(3)将搭建好的非线性电感模型组合为一个子系统并命名为NonlinearInductance后,按图8-4所示搭建仿真系统。选用的各模块的名称及提取路径见表8-2。第8章定制模块图8-4例8.1的仿真系统图第8章定制模块模块名提取路径交流电压源VsSimPowerSystems/ElectricalSources直流电压源DCSimPowerSystems/ElectricalSources串联RLC支路RSimPowerSystems/Elements电流表模块IRSimPowerSystems/MeasurementsFFT模块50、DCSimPowerSystems/ExtraLibrary/Measurements信号分离模块DemuxSimulink/SignalRouting示波器Simulink/Sinks表8-2例8.1仿真电路模块的名称及提取路径第8章定制模块该系统中含有两个电压源,一个峰值为120V、50Hz、相角为90°的交流电压源Vs和一个幅值为0的直流电压源VDC。串联RLC支路为纯电阻电路,其中电阻元件R = 5W。在仿真参数对话框中设置变步长ode23tb算法,仿真结束时间为1.5s。(4)开始仿真。设置直流电压源幅值为0,开始仿真。图8-5所示为仿真最后5个周期的波形,图中波形从上到下依次为非线性电感元件上的磁通、电流和电压。此时,电压未超过极限值120V,电感为2H。对应的电流幅值Im为A191.0)π2(22smRfLVI(8-4)第8章定制模块磁链Ψ为与观测到的波形一致。(8-5)sV382.0mLIΨ第8章定制模块图8-5仿真波形图(VDC = 0V)第8章定制模块将直流电压源的幅值改为1V,再次仿真。按理论分析,直流电压源单独作用时,电路中的电感相当于短路,因此观测的仿真电流中应该含有一个直流电流,该电流值为1V/5Ω = 0.2A。观察仿真最后5个周期的波形如图8-6所示,图中波形从上到下依次为非线性电感元件上的磁通、电流和电压。由于对1V直流电压源分量进行了积分运算,导致磁通饱和,因此电流波形发生畸变。由图可见,此时电流增大到0.575A。第8章定制模块图8-6仿真波形图(VDC = 1V)第8章定制模块通过FFT模块提取电流信号中的基频和直流分量,如图8-7所示,图中波形为非线性电感元件电流的基频分量和直流分量。可见,基频电流增大到0.27A,直流电流分量为0.2A,与理论分析值一致。第8章定制模块图8-7基频和直流电流分量第8章定制模块尽管在例8.1中已经建立了一个非线性电感模块,但是该模块外观并不完美。下面将对该非线性电感模块进行封装,创建对话框、图标和说明文档,并通过对话框来设定非线性电感的磁通—电流特性,使它看起来和SIMULINK库提供的其它模块一样完整。单击图8-4中“非线性电感元件”图标,打开菜单[EditMasksubsystem],弹出封装子系统编辑窗口如图8-8所示。选择“文档”(Documentation)标签页,在“封装类型”(Masktype)文本框中输入文字“非线性电感”,在“封装说明”(Maskdescription)多行文本框中输入该模块的简单说明和注意事项,在“封装帮助”(Maskhelp)多行文本框中输入该模块的帮助文件。第8章定制模块图8-8封装子系统编辑窗口(文档标签页)第8章定制模块选择“参数”(Parameters)标签页如图8-9所示,通过点击按键添加、删除、移动项目。按图8-9分别添加额定电压、额定频率、线性电感和饱和特性。其中,在“变量说明”(Prompt)列中输入各变量的简单说明,在“变量名”(Variable)列中输入各变量的名称。注意这些变量是可以被封装的子系统作为已知参数调用的,因此,这些变量名应该是容易记忆的,同时SIMULINK不区分大小写。在“类型”(Type)列中选择参数的类型,可选的类型有“文本框”(edit)、“列表框”(checkbox)和“下拉框”(popup)。“可计算”(Evaluate)和“可调用”(Tunable)列为可选项。第8章定制模块选中“可计算”(Evaluate)列后,SIMULINK首先对用户输入的表达式进行计算,然后再将计算结果赋值给变量,否则SIMULINK直接把用户输入的表达式作为一个字符串赋值给变量。选中“可调用”(Tunable)列将允许该参数在仿真过程中被修改。第8章定制模块图8-9封装子系统编辑窗口(参数标签页)第8章定制模块选择“初始化”(Initialization)标签如图8-10所示,在“初始化命令”(Initializationcommands)窗口中输入如下命令并提取电流变量Current_vect和磁通变量Flux_vect。第8章定制模块图8-10封装子系统编辑窗口(初始化标签页)第8章定制模块%定义电流和磁通的基准值。I_base=Vnom*sqrt(2)/(L*2*pi*fnom);Phi_base=Vnom*sqrt(2)/(2*pi*fnom);%验证饱和特性曲线是否属于第1象限,其中第1个点和第2个点应该是[0,0]和[1,1]。若不是,弹出出错提示,并等待直到该文本框中内容输入正确。if~all(all(sat(1:2,:)==[00;11])),h=errordlg('Thefirsttwopointsofthecharacteristicmustbe[00;11]','Error');uiwait(h);end第8章定制模块%添加代码,使磁通—电流饱和特性曲线完整。[npoints,ncol]=size(sat);sat1=[sat;-sat(2:npoints,:)];sat1=sort(sat1);%提取电流变量(A)和磁通变量(V.s)。Current_vect=sat1(:,1)*I_base;Flux_vect=sat1(:,2)*Phi_base;第8章定制模块单击“确定”(OK)按键,关闭封装子系统编辑窗口。接下来,将定义的电流变量Current_vect和磁通变量Flux_vect传递到非线性电感元件的查表模块中。通过菜单[EditlookunderMask]进入图8-2所示的“非线性电感元件”窗口,打开查表模块对话框,设置输入、输出参数如图8-11所示。确认后退出“非线性电感元件”子系统,回到主窗口中,双击“非线性电感元件”图标,出现图8-12所示的参数对话框,输入额定电压、额定频率、线性电感值和磁通—电流饱和特性。现在可以开始仿真了,仿真波形和图8-6完全相同。第8章定制模块图8-11查表模块中参数的设置第8章定制模块图8-12非线性电感元件参数的设置第8章定制模块回到仿真主窗口,继续为该模块定制一个图标,使得该模块像SIMULINK的任何一个模块一样漂亮。选中非线性电感模块,通过菜单[EditEditMask]打开封装子系统编辑窗口,选择“图标”(Icon)标签如图8-13所示。第8章定制模块图8-13封装子系统编辑窗口(图标标签页)第8章定制模块在“画图命令”(Drawingcommands)窗口中输入命令plot(Current_vect,Flux_vect);在“透明度”(Transparency)下拉框中选择“透明”(Transparent)。单击“确定”(OK)按键或者“应用”(Apply)按键后退出子系统编辑窗口,可以看见磁通—电流饱和特性曲线出现在非线性电感模块上,由于选择透明处理,输入、输出端口的名称也一并显示在该模块上。封装后的非线性电感模块图标如图8-14所示。当然,也可以选择“不透明”(Opaque),这样,输入、输出端口的名称被图形覆盖了。第8章定制模块图8-14非线性电感模块图标第8章定制模块8.1.2定制非线性电阻元件非线性电阻元件的建模方法和非线性电感元件的建模方法类似。本节不再利用查表方式建立电压电流关系,而是直接由电压电流的数学关系建立表达式。【例8.2】定制一个非线性MOV电阻元件,搭建电路,观测效果。解:(1)理论分析。金属氧化物压敏电阻MOV的电压电流具有以下关系:00VvIi(8-6)第8章定制模块其中,v、i为瞬时电压和电流;V0为钳制电压;I0为钳制电压对应的参考电流;α 用来定义非线性特性,通常在[10,50]间取值。因此,本例可以用受控电流源来表示该非线性电阻元件,受控电流源受控于该电源两端的电压。(2)按图8-15搭建非线性MOV电阻模型。该模型包括一个电压表模块、一个可控电流源模块(电流源的电流方向为箭头所示方向)、一个传递函数模块和一个自定义的函数模块。选用的各模块的名称及提取路径见表8-3。图中有一个信号输出口m,输出非线性电阻模块的电压值。第8章定制模块图8-15非线性电阻模型第8章定制模块模块名提取路径受控电流源模块CCSSimPowerSystems/ElectricalSources电压测量模块VSimPowerSystems/Measurements电气接口+、-SimPowerSystems/Elements传递函数模块TransferFcnSimulink/Continuous自定义函数模块FcnSimulink/User-DefinedFunctions信号输出端口Simulink/Sinks表8-3例8.2非线性电阻模型中包含的模块的名称及提取路径第8章定制模块本例利用数学函数模块直接建立非线性MOV的电压电流特性。由于纯电阻模块不含状态变量,这样在SIMULINK内部运算时将产生一个代数循环,导致运算速度降低。为了解开代数环,在电压测量模块输出口加入了一个1阶滞后传递函数。按图8-16封装该非线性电阻模块,设置钳位电压为2倍的额定电压,即2×120e3×sqrt(2)/sqrt(3)=195.96kV。参考电流