版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第8章 定 制 模 块,8.1 定制非线性模块 8.2 S函数的编写及应用,8.1 定制非线性模块 8.1.1 非线性电感模块 【例8.1】定制一个非线性电感元件,当电压在0120 V时,电感恒定为2 H;当电压超过120 V时,电感元件饱和,电感降低到0.5 H。图8-1所示为该非线性电感对应的磁通电流特性曲线,单位为p.u.。其中VB = 120/sqrt(2) V,fB = 50 Hz。,图8-1 例8.1的磁通电流特性曲线,解:(1) 理论分析。显然电感元件上电压v和电流i具有如下关系: 其中,为电感元件上的自感磁链。 由式(8-1)可以得到磁链为 因此电感上的电流i为,(8-3),(
2、8-2),(8-1),可见,可以用受控电流源表示该非线性电感元件,该电流源受控于电流源两端的电压。 (2) 按图8-2搭建非线性电感模型。该模型包括一个电压表模块、一个可控电流源模块(电流源的电流方向为箭头所示方向)、一个积分模块和一个用于描述磁通电流饱和特性的查表模块。选用的各模块的名称及提取路径见表8-1。图中有一个信号输出口m,输出非线性电感模块上的磁通和该模块两端的电压值。,图8-2 非线性电感模型,表8-1 例8.1非线性电感模型中包含的模块,图8-3 例8.1的查表模块参数设置,打开查表模块参数对话框,按图8-3设置参数。该图中的参数实际上就是图8-1的磁通电流特性。其余模块的参数
3、采用默认设置。,(3) 将搭建好的非线性电感模型组合为一个子系统并命名为Nonlinear Inductance后,按图8-4所示搭建仿真系统。选用的各模块的名称及提取路径见表8-2。,图8-4 例8.1的仿真系统图,表8-2 例8.1仿真电路模块的名称及提取路径,该系统中含有两个电压源,一个峰值为120 V、50 Hz、相角为90的交流电压源Vs和一个幅值为0的直流电压源VDC。串联RLC支路为纯电阻电路,其中电阻元件R = 5 W。 在仿真参数对话框中设置变步长ode23tb算法,仿真结束时间为1.5 s。 (4) 开始仿真。设置直流电压源幅值为0,开始仿真。图8-5所示为仿真最后5个周期
4、的波形,图中波形从上到下依次为非线性电感元件上的磁通、电流和电压。此时,电压未超过极限值120 V,电感为2 H。对应的电流幅值Im为,(8-4),磁链为 与观测到的波形一致。,(8-5),图8-5 仿真波形图(VDC = 0 V),将直流电压源的幅值改为1 V,再次仿真。按理论分析,直流电压源单独作用时,电路中的电感相当于短路,因此观测的仿真电流中应该含有一个直流电流,该电流值为1 V/5 = 0.2 A。 观察仿真最后5个周期的波形如图8-6所示,图中波形从上到下依次为非线性电感元件上的磁通、电流和电压。由于对1 V直流电压源分量进行了积分运算,导致磁通饱和,因此电流波形发生畸变。由图可见
5、,此时电流增大到0.575 A。,图8-6 仿真波形图(VDC = 1 V),通过FFT模块提取电流信号中的基频和直流分量,如图8-7所示,图中波形为非线性电感元件电流的基频分量和直流分量。可见,基频电流增大到0.27 A,直流电流分量为0.2 A,与理论分析值一致。,图8-7 基频和直流电流分量,尽管在例8.1中已经建立了一个非线性电感模块,但是该模块外观并不完美。下面将对该非线性电感模块进行封装,创建对话框、图标和说明文档,并通过对话框来设定非线性电感的磁通电流特性,使它看起来和SIMULINK库提供的其它模块一样完整。 单击图8-4中“非线性电感元件”图标,打开菜单Edit Mask s
6、ubsystem,弹出封装子系统编辑窗口如图8-8所示。选择“文档”(Documentation)标签页,在“封装类型” (Mask type)文本框中输入文字“非线性电感”,在“封装说明” (Mask description)多行文本框中输入该模块的简单说明和注意事项,在“封装帮助”(Mask help)多行文本框中输入该模块的帮助文件。,图8-8 封装子系统编辑窗口(文档标签页),选择“参数”(Parameters)标签页如图8-9所示,通过点击 按键添加、删除、移动项目。按图8-9分别添加额定电压、额定频率、线性电感和饱和特性。其中,在“变量说明” (Prompt)列中输入各变量的简单说
7、明,在“变量名”(Variable)列中输入各变量的名称。注意这些变量是可以被封装的子系统作为已知参数调用的,因此,这些变量名应该是容易记忆的,同时SIMULINK不区分大小写。在“类型”(Type)列中选择参数的类型,可选的类型有“文本框”(edit)、“列表框” (checkbox)和“下拉框”(popup)。“可计算”(Evaluate)和“可调用”(Tunable)列为可选项。,选中“可计算”(Evaluate)列后,SIMULINK首先对用户输入的表达式进行计算,然后再将计算结果赋值给变量,否则SIMULINK直接把用户输入的表达式作为一个字符串赋值给变量。选中“可调用”(Tunab
8、le)列将允许该参数在仿真过程中被修改。,图8-9 封装子系统编辑窗口(参数标签页),选择“初始化”(Initialization)标签如图8-10所示,在“初始化命令”(Initialization commands)窗口中输入如下命令并提取电流变量Current_vect和磁通变量Flux_vect。,图8-10 封装子系统编辑窗口(初始化标签页),单击“确定”(OK)按键,关闭封装子系统编辑窗口。接下来,将定义的电流变量Current_vect和磁通变量Flux_vect传递到非线性电感元件的查表模块中。通过菜单 Editlook under Mask进入图8-2所示的“非线性电感元件”
9、窗口,打开查表模块对话框,设置输入、输出参数如图8-11所示。 确认后退出“非线性电感元件”子系统,回到主窗口中,双击“非线性电感元件”图标,出现图8-12所示的参数对话框,输入额定电压、额定频率、线性电感值和磁通电流饱和特性。 现在可以开始仿真了,仿真波形和图8-6完全相同。,图8-11 查表模块中参数的设置,图8-12 非线性电感元件参数的设置,回到仿真主窗口,继续为该模块定制一个图标,使得该模块像SIMULINK的任何一个模块一样漂亮。 选中非线性电感模块,通过菜单EditEdit Mask打开封装子系统编辑窗口,选择“图标”(Icon)标签如图8-13所示。,图8-13 封装子系统编辑
10、窗口(图标标签页),在“画图命令”(Drawing commands)窗口中输入命令 plot(Current_vect,Flux_vect); 在“透明度”(Transparency)下拉框中选择“透明” (Transparent)。单击“确定”(OK)按键或者“应用”(Apply)按键后退出子系统编辑窗口,可以看见磁通电流饱和特性曲线出现在非线性电感模块上,由于选择透明处理,输入、输出端口的名称也一并显示在该模块上。封装后的非线性电感模块图标如图8-14所示。当然,也可以选择“不透明”(Opaque),这样,输入、输出端口的名称被图形覆盖了。,图8-14 非线性电感模块图标,8.1.2 定
11、制非线性电阻元件 非线性电阻元件的建模方法和非线性电感元件的建模方法类似。本节不再利用查表方式建立电压电流关系,而是直接由电压电流的数学关系建立表达式。 【例8.2】定制一个非线性MOV电阻元件,搭建电路,观测效果。 解:(1) 理论分析。金属氧化物压敏电阻MOV的电压电流具有以下关系:,(8-6),其中,v、i为瞬时电压和电流;V0为钳制电压;I0为钳制电压对应的参考电流; 用来定义非线性特性,通常在10,50间取值。 因此,本例可以用受控电流源来表示该非线性电阻元件,受控电流源受控于该电源两端的电压。 (2) 按图8-15搭建非线性MOV电阻模型。该模型包括一个电压表模块、一个可控电流源模
12、块(电流源的电流方向为箭头所示方向)、一个传递函数模块和一个自定义的函数模块。选用的各模块的名称及提取路径见表8-3。图中有一个信号输出口m,输出非线性电阻模块的电压值。,图8-15 非线性电阻模型,表8-3 例8.2非线性电阻模型中包含的模块的名称及提取路径,本例利用数学函数模块直接建立非线性MOV的电压电流特性。由于纯电阻模块不含状态变量,这样在SIMULINK内部运算时将产生一个代数循环,导致运算速度降低。为了解开代数环,在电压测量模块输出口加入了一个1阶滞后传递函数。 按图8-16封装该非线性电阻模块,设置钳位电压为2倍的额定电压,即2120e3sqrt(2)/sqrt(3)=195.
13、96 kV。参考电流为500 A,为25。,图8-16 封装非线性电阻模块,继续给该非线性电阻加一个图标。打开封装子系统编辑窗口,选择“初始化”标签,在“初始化命令”(Initialization commands)窗口中输入如下命令: t=0:0.0001:0.04; x=sin(100*pi*t); y=500*x.25; 选择“图标”(Icon)标签,在“画图命令”(Drawing commands)窗口中输入命令: plot(y,x); 确定后退出该编辑窗口。非线性电阻模块图标如图8-17所示。,图8-17 非线性电阻模块图标,图8-18 例8.2的仿真系统图,(3) 将定制的非线性电
14、阻模块用于保护线电压为120 kV的、按图8-18所示搭建的仿真系统。选用的各模块的名称及提取路径见表8-4。,表8-4 例8.2仿真电路模块的名称及提取路径,将交流电压源峰值设为2.3120sqrt(2)/sqrt(3) kV、频率为50 Hz、相角为0。串联RLC支路RL中,电阻元件R=1.92 ,电感元件L = 26 mH。串联RLC负荷额定电压为120/sqrt(3) kV,频率为50 Hz,有功功率为10 MW,感性和容性无功功率为0。 在仿真参数对话框中设置变步长ode23tb算法,仿真结束时间为0.1 s。 开始仿真。图8-19所示为仿真波形图,图中波形为非线性电阻元件上的电流和
15、电压。,图8-19 仿真波形图,由波形图可见,在正常电压条件下,MOV相当于一个阻值极大的线性电阻。当电压大于200 kV时,MOV内阻急剧下降并迅速导通,其上电流增加几个数量级,而电压被钳位在200 kV,从而有效地保护了电路中的其它元器件不至于过压而损坏。对应的电压电流特性如图8-20所示。,图8-20 实测的V-I特性,8.1.3 定制模块库 为了方便地对定制的模块进行管理,用户还可以像SIMULINK一样创建自己的模块库,在自己的库中可以添加、删除模块,或者在这个库中建立子库。当对库中某模块进行修改时,所有模型文件中的该模块都被自动修改,这样,就不需要一个个打开模型文件去进行模块修改了
16、。 在SIMULINK浏览器窗口中,点击菜单FileNew Library,将出现一个新的名为Library:untitled的窗口。将定制的非线性电阻模块和非线性电感模块复制到新窗口中,保存新窗口,例如取名为mypsb_library。新的模块库窗口如图8-21。,图8-21 定制的模块库,8.2 S函数的编写及应用 S函数是System Function的简称,即系统函数,它是扩展SIMULINK功能的强有力的工具,在很多情况下非常有用。用户可以利用MATLAB、C、C+以及FORTRAN等语言来编制程序,构成S函数模块,并像标准SIMULINK模块一样直接调用。 S函数使用一种特殊的调用
17、规则,使得用户可以与SIMULINK的内部算法进行交互。这种交互和SIMULINK内部算法与内置模块之间的交互非常相似,而且可以适用于不同性质的系统。,图8-22 S函数模块图标,本节主要介绍利用MATLAB语言设计S函数,并通过例子介绍S函数的应用技巧。 8.2.1 S函数模块 S函数模块在Simulink/User-Defined Functions库中,用此模块可以创建包含S函数的SIMULINK模块。S函数模块的图标如图8-22所示。,S函数模块只有一个信号输入口和一个信号输出口,分别对应输入变量和输出变量。S函数模块输入端口只能接受一维的向量信号。如果S函数模块含有多个输入变量和输出
18、变量,需要使用“信号合成”(Mux)模块和“信号分离”(Demux)模块,同时需要指定sizes结构的适当区域的值。注意输入变量的个数和输出变量的个数必须和S函数内部定义的输入变量和输出变量的个数相同。S函数模块自动将输入列向量的第一个值和S函数内部的第一个输入变量对应,第二个值和S函数内部的第二个输入变量对应,等等。输出变量也存在同样关系。,双击S函数模块,弹出该模块的参数对话框,如图8-23所示。该对话框中包含如下参数: (1) “S函数文件名”(S-Function Name)文本框:填写S函数的文件名,确定后图标上将显示该文件名。注意,不需要扩展名,但该文本框不能为空。 (2) “S函
19、数参数”(S-Function Parameters)文本框:填写S函数需要的外部参数。S函数模块允许使用外部参数。函数的参数可以是MATLAB表达式,也可以是变量。参数并列给出,各参数间以逗号分隔,但参数列不需要用小括号括住表示。若无外部变量,该文本框为空。,图8-23 S函数模块参数对话框,(3) “编辑”(Edit)按键:点击该按键将打开指定文件名的S函数文件编辑窗口,在该窗口中可以进行编辑工作。 【例8.3】假设S函数需要的外部参数有三种,分别为2、矩阵1,2;3,4和字符串miles。试将这三种参数输入“S函数参数”参数文本框。 解:在“S函数参数”参数文本框中输入 2,1,2;3,
20、4;, miles 即可。,8.2.2 S函数的编写 S函数模块的M文件具有一套固定的调用变量规则。可以通过创建一个新的M文件并在其中按规则编写S函数,或者直接用SIMULINK提供的模板文件sfuntmpl.m,并从这个模板出发构建需要的S函数。 这类M文件中第一行程序是一个函数语句: function sys,x0,str,ts = f (t,x,u,flag,p1,p2,pn) 其中,f为S函数的函数名,例如S函数以函数名sfun.m保存,则f应为sfun。输入变量和输出变量的说明分别见表8-5和表8-6。,表8-5 S函数输入变量表,表8-6 S函数输出变量表,S函数的M文件在运行过程
21、中不断检测输入变量flag的值,并按照表8-7所示的规则调用不同的内部函数。,表8-7 S函数flag参数表,由表8-7可知,变量flag共有六种可能值,下面将分别讨论这六种值所对应的操作。 1. 初始化设置 flag=0时,调用函数mdlInitializeSizes进行初始化设置。在mdlInitializeSizes函数中,需要对四种参数进行初始值的设置。 1) sizes 首先通过语句 sizes = simsizes 获得默认的系统参数变量sizes。该变量是一个没有初始化的结构体变量,共包含有六个字段,各字段说明如表8-8所示。,表8-8 结构体变量sizes的字段,对sizes结
22、构体变量中的每个元素赋值。sizes中的每个元素都必须有值,即使这个值为0。设置好后,通过语句 sys=simsizes(sizes) 将变量sizes赋值给输出变量sys。 【例8.4】某S函数不含连续状态变量和离散状态变量,只有一个输入变量和一个输出变量,且输入变量直接控制输出变量,采样周期唯一。试对该S函数的结构体变量sizes进行初始化设置。 解:输入如下语句进行初始化设置:,2) x0 设置状态变量的初始值。 【例8.5】某S函数含有两个连续状态变量和两个离散状态变量。连续状态变量的初始值为1.0,离散状态变量的初始值为0.0。试对该S函数的状态变量初始值进行设置。 解: x0=1.
23、0,1.0,0.0,0.0; 3) str 变量str总为空: str= ;,4) ts 通过设置采样时间和采样延迟时间矩阵ts来定义SIMULINK调用函数的时间。SIMULINK提供了多种设置ts的方式,如表8-9所示。,表8-9 采样时间设置,若系统含有多个采样周期,可以用同样的方法进行设置。 【例8.6】某S函数含有两个离散的采样周期,第一个采样周期为0.25 s,无延迟;第二个采样周期为1.0 s,采样延迟0.1 s。试对该S函数的ts进行初始化设置。 解: ts=0.25, 0; 1.0, 0.1;,2. 连续状态变量微分计算 flag=1时,调用函数mdlDerivatives将
24、连续状态变量的微分值赋给sys。 【例8.7】已知非线性系统 当flag=1时,试设置sys属性。 解: sys(1)=x(2); sys(2)=x(1)-3*x(2)2+u(1);,3. 离散状态变量更新 flag=2时,调用函数mdlUpdates将离散状态变量更新后的值赋给sys。 【例8.8】已知一个一阶单变量离散子系统 当flag=2时,试设置sys属性。 解: sys=x(1)+u(1); 4. 输出变量计算 flag=3时,调用函数mdlOutputs对输出变量进行计算,并把输出变量赋值给sys。,5. 下次采样时间计算 flag=4时,调用函数mdlGetTimeOfNextV
25、arHit对下一次的采样时间进行计算,并把下一次的采样时间赋值给sys。只有在初始值设置中已将采样时间设置为可变后,该函数才会被调用。 6. 仿真结束 当仿真以某种原因结束时,flag=9,调用函数mdlTerminate执行必要的任务终止仿真,不对sys赋值。,【例8.9】按文献14定制一个非线性电弧炉元件以反映电弧炉的电压电流特性,搭建电路,观测效果。 解:(1) 理论分析。文献14所述模型的电弧电压v和电流i的关系为 其中,g为电弧电导,定义为,(8-8),(8-7),r为电弧半径,定义为 其中,C对应电弧半径的初值;Im为电流幅值;k1、k2、k3是常数,分别为3000、1、12.5。 考虑414 Hz频率范围的白噪声后,电弧半径为,(8-9),(8-10),(2) 按图8-24搭建电弧炉电气特性模型。该模型中,电弧炉电气特性用一个可控电压源等效替代,可控电压源的大小主要由电弧炉的电弧半径决定,而电弧半径由电流幅值决定,同时电弧半径上还叠加了一个噪声。该模型中选用的各模块的名称
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 粮食库存远程在线巡查监控管理办法
- 运动营养管理中国专家共识(2026版)
- 2026年二级Office考试真题(完整版)
- 吉林白山市一级建造师考试(通信与广电工程管理与实务)真题及答案
- 幼儿园护理工作与儿童发展
- FTO-IN-15-生命科学试剂-MCE
- 2025年无人机管制通信协议优化
- 2026net面试题大全及答案
- 2026linux c面试题目及答案
- 左心衰患者心力衰竭急性发作护理
- 国内信用证买卖合同范本
- 江苏省连云港市2023-2024学年七年级下学期期末数学试卷(含答案解析)
- 2024年全国新高考1卷(新课标Ⅰ)数学试卷(含答案详解)
- 历年甘肃省三支一扶考试真题题库(含答案详解)
- 六年级语文下册期中复习 课件
- 病理性骨折的护理
- 护士在疼痛管理和控制中的角色和责任
- 防汛知识培训内容
- 【心灵读物】人生海海,劈浪前行-读麦家《人生海海》有感
- 预防医学毕业实习 教学大纲
- GB/Z 40893.4-2021中医技术操作规范儿科第4部分:小儿推拿疗法
评论
0/150
提交评论