matlabsimulink仿真环境.ppt_第1页
matlabsimulink仿真环境.ppt_第2页
matlabsimulink仿真环境.ppt_第3页
matlabsimulink仿真环境.ppt_第4页
matlabsimulink仿真环境.ppt_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章simulink仿真环境,4.1simulink概述4.2simulink基本使用4.3复杂系统的综合仿真4.4电力系统模块(PSB),4.1simulink概述,simulink是MATLAB的重要组成部分,它具有相对独立的功能和使用方法。simulink的主要功能是实现动态系统建模仿真与分析。Mathworks从matlab4.0版开始应用simulink,当时把它放在matlab执行文件中。在matlab4.2及以后的版本中,simulink则以matlab里的工具包形式单独出现,即需要单独安装。在matlab5.0版中,Simulink已升级为2.0版,在matlab5.3版中,Simulink已升级为3.0版。目前,simulink比从前的版本有了很大的改进。Simulink的文件类型为.mdl。Simulink支持连续与离散系统,也支持线性与非线性系统。Simulink里包括一些控制工具箱,例如控制系统工具箱,模糊逻辑工具箱,非线性控制设计模块等等。用户还可以创建与定制自己的功能模块,而不一定只使用simulink系统软件提供的标准模块。这样,用户就可以自行扩充软件的使用范围。,4.1simulink概述,Simulink为用户提供了用方框图进行系统建模的图形窗口,根据实际工程中控制系统的具体构成,用户只需要用鼠标的点击拖拽功能,将模块库中提供的各种标准环节拷贝到图形窗口中,再用Simulink的连线方式连接成一个完整的simulink动态结构图,各个环节可按simulink特定的方法改变或设定其参数以与实际控制系统相对应。在对于较大的系统建立模型时,simulink提供了系统分层排列的功能。Simulink可将系统分为从高级到低级的好几层,每层又可以分为好几个小部分;每层系统模型创建完成后,再将其连接起来就是一个完整的系统了。,4.2simulink基本使用,4.2.1Simulink的启动1.命令窗口中键入simulink2.file菜单中选择new命令的model3.工具栏中,按按钮4.模型窗口file菜单选择new命令的model,4.2simulink基本使用,4.2.2Simulink的常用模块库简介1、Sources信号源模块组:输入端口模块(In):用来反映整个系统的输入端子,这样的设置在模型线性化与命令行仿真时是必需的。信号发生器(Signalgenerator):能够生成若干种常用信号,如方波信号、正弦波信号、锯齿波信号等,用户可调整其幅值和相位。带宽限幅白噪声(band-limitedwhitenoise):一般用于连续或混杂系统的白噪声信号输入。除了白噪声信号外,还有一般随机数发生模块,如正态随机数模块(randomnumber)和均匀分布随机数模块(uniformrandomnumber)等,注意,这两个模块不能直接用于仿真连续系统。读文件模块(Fromfile)和读工作空间模块(Fromworkspace):两个模块允许从文件或matlab工作空间中读取信号作为输入信号。,4.2simulink基本使用,4.2.2Simulink的常用模块库简介1、Sources信号源模块组:时间信号模块(clock):生成当前仿真时钟,在与时间有关的指标求取中是很有意义的。常数输入模块(constant):此模块以常数作为输入。接地线模块(grand):一般用于表示零输入模块,如果一个模块的输入端没有接其他任何模块,simulink经常会给出错误信号。各种其他类型的信号输入,如阶跃输入(step)、斜坡输入(ramp)、脉冲信号(pulsegenerator)、正弦信号(sinewave)等,还允许由repeatingsequence模块构造可重复的输入信号。,4.2simulink基本使用,4.2.2Simulink的常用模块库简介2、Continous连续系统模块积分环节(Integrator):该模块将输入端信号经过数值积分,在输出端直接反映出来。微分环节(Derivative):该模块将输入端信号经过一阶数值微分在输出端输出出来。线性系统的状态方程(state-space)、传递函数(Transferfcn)、零-极点模型(Zeropole):都可以用来描述线性系统。时间延迟(Transportdelay或variabletransportdelay):把输入信号按给定的时间作延迟。记忆环节(memory):输出本模块上一步的输入值。,4.2simulink基本使用,4.2.2Simulink的常用模块库简介3、Discrete离散系统模块零阶保持器(zero-orderhold)和一阶保持器(first-orderhold):前者在一个计算步长内将输出的值保持在同一个值上,后者依照一阶插值的方法计算步长下的输出值。离散系统的传递函数(discreteTransferfcn)、状态方程(discretestate-space)、零-极点模型(discreteZeropole):可以建立一个离散系统模型。Unitdelay:对采样信号保持,延迟一个采样周期。Discretefilter:建立离散滤波器。,4.2simulink基本使用,4.2.2Simulink的常用模块库简介4、Math数学运算模块Abs:求绝对值或求模(复数);AlgebraicConstraint:强制输入信号为零;ComplextoMagnitude-Angle:求复数的幅值与相角;ComplextoReal-Imag:求复数的实部和虚部;DotProduct:求点积(内积);Gain:对输入信号乘上一个常数增益;,4.2simulink基本使用,4.2.2Simulink的常用模块库简介4、Math数学运算模块LogicalOperator:逻辑操作符;Magnitude-AngletoComplex:由幅值与相角求复数;MathFunction:数学运算函数;Product:对输入信号求积或商;RelationalOperator:比较操作符;RoundingFunction:取整函数;Sign:符号函数SliderGain:以滑动形式改变增益;Sum:对输入信号求代数和;TrigonometricFunction:三角函数BitwiseLogicalOperator:位逻辑操作符,对无符号整形输入信号进行逻辑运算。,4.2simulink基本使用,4.2.2Simulink的常用模块库简介5、signalrouting模块Busselector:从输入总线上选择信号.Demux:将向量分为标量或小向量;Mux:将标量或小向量组合为大向量;Selector:选择输入的元素;Switch:当第二个输入端信号大于临界值时,输出第一个输入端的信号,否则输出第三个输入端的信号;,4.2simulink基本使用,4.2.2Simulink的常用模块库简介6、nonlinear非线性系统模块Ratelimiter:限制信号的变化速率不超过规定的限制值;Saturation:对输出信号进行限幅的饱和特性;Quantizer:对输入进行阶梯状量化;Backlash:在输出不变区中输出不随输入变化而改变,在输出不变区外输出随输入成正比变化;Coulombelseifx=-1y=-4;elsey=0;end,4.3复杂系统的综合仿真,4.3.3与M函数的组合仿真打开MATLABFcn模块对话框,在MATLABFUNCTION栏下输入函数名deadzone,其余值皆用系统默认。系统输入sin函数幅值设为2。系统运行的结果为,4.3复杂系统的综合仿真,4.3.4模块化与封装1、模块化当模型规模很大、很复杂时,可以通过把一些模块组合成一个子系统,来简化模型。在simulink里创建子系统的途径有两种:通过子系统模块来建立子系统这种方法首先将subsystem模块复制到模型窗口,其位置在simulink模块库的portsevaluate选中表示模块参数对话框里输入的值在被赋给变量之前,先由MATLAB进行估值,不选则表示输入的值不经过估值,直接作为字符串传给变量。Turnable选择该项允许用户在仿真正在进行时改变该参数的值。,4.3复杂系统的综合仿真,4.3.4模块化与封装2、封装子系统initialization页如图所示。在initializationcommands提示下的编辑框中可以输入任何命令,用来计算参数的值。,4.3复杂系统的综合仿真,4.3.4模块化与封装2、封装子系统documentation页设置模块的描述信息和帮助文档。页面如右图所示。按照图中的输入设置该页后,双击被封装的子模块,则不再显示模块的内部结构,而是打开下图所示的参数设置对话框。,4.3复杂系统的综合仿真,4.3.4模块化与封装3、定义自己的模型库如果用户想将封装好的模块放置在自己建立的模型库中可以采用如下的方法:打开simulink模型库,用右键在simulink上弹出“open”命令,如图所示。,4.3复杂系统的综合仿真,4.3.4模块化与封装3、定义自己的模型库点击“open”命令打开simulink库,选择edit菜单下的unlockLibrary命令去处锁定。拷贝一个空白Subsystem模块至simulink库中,将其名称改为“我的库”,如下图所示。,4.3复杂系统的综合仿真,4.3.4模块化与封装3、定义自己的模型库双击打开“我的库”模块,将封装好的PID模块拷贝至“我的库”模块,保存后重新打开simulink模型库,就会出现如图所示的用户自己建立的模型库。,4.3复杂系统的综合仿真,4.3.5S函数及其应用1、简单的直接描述形式MATLAB可以利用函数直接给出动态系统的导数描述,函数调用的格式:T,Y=solver(odefun,tspan,y0)这里solver是ode45,ode23,ode113,ode15s,ode23s,ode23t,或ode23tb中任意一种。Odefun是一个函数,描述的是形如微分方程y=f(t,y)表示的系统。该函数是对由微分方程y=f(t,y)描述的系统在时间间隔tspan=t0tf在初始条件y0下进行积分.函数f=odefun(t,y)输入变量t是标量,y是列向量,返回的f必须是与y=f(t,y)相对应的列向量。数组Y的每一行对应于列向量T返回的一个时间,获得设定每一个时间点t0,t1,tf的解。时间由函数自动划分。函数还可以带有一些相关的选项,可参阅MATLAB相关帮助。,4.3复杂系统的综合仿真,4.3.5S函数及其应用1、简单的直接描述形式下面的例子有两个目的:一是掌握如何利用方块图对微分方程描述的系统进行仿真,二是了解利用函数对微分方程描述的系统进行仿真。例:下面给出vanderpol方程选择状态变量可得如下状态方程:左图是该方程的仿真结构图。,4.3复杂系统的综合仿真,4.3.5S函数及其应用1、简单的直接描述形式设置好初始条件:x1(0)=x2(0)=0.25,仿真时间t=20s,步长可变。在命令窗口键入:subplot(121),plot(t,x1,t,x2,r)subplot(122),plot(x1,x2)回车可得时间响应和相平面图:,4.3复杂系统的综合仿真,4.3.5S函数及其应用1、简单的直接描述形式上述的系统也可以用一个导数形式的M函数,名为vd.m来描述:%venderpolequationfunctiondy=vd(t,y)dy=zeros(2,1);dy(1)=y(1)*(1-y(2)2)-y(2);dy(2)=y(1);在命令窗口键入:ts=020;x0=0.250.25;t,x=ode45(vd,ts,x0);subplot(121),plot(t,x)subplot(122),plot(x(:,1),x(:,2)回车可得左图。可见利用M函数可以不建立方块图而得到仿真结果。,4.3复杂系统的综合仿真,4.3.5S函数及其应用2、S函数simulink提供了S函数功能,可以接入方块图进行仿真。与M函数在方块图中引入一个代数运算环节不同,S函数在方块图中引入了一个函数描述的动态环节。在MATLAB里,用户可以选择用MATLAB语言还是C或者C+语言来编写S函数,一般称前者为M文件S函数,称后者为C-MEX文件S函数。这里我们只讲解M文件S函数,因此以后不加以区分,只是简单称为S函数。,4.3复杂系统的综合仿真,4.3.5S函数及其应用2、S函数在simulink里调用S函数,要使用user-definedfunctions子库中的S-function模块。在MATLAB安装目录下的toolboxsimulinkblocks目录里有一个简单的S函数例程timestwo文件,它可以实现把一个输入信号乘以2输出。将S-function模块放置模型窗口,双击该模块,打开S-function对话框,如图所示进行设置。给该模块连接上输入输出模块后,即可运行。打开timestwo文件,在源代码中,S函数的说明语句为functionsys,x0,str,ts=timestwo(t,x,u,flag),输入参数t,x,u,flag是编写S函数所必须的输入参量,用户不用从对话框输入,它由simulink解法器自动传给S函数。除它们之外的任何参数,都需要用户从对话框传值给S函数。,4.3复杂系统的综合仿真,4.3.5S函数及其应用2、S函数MATLAB提供了一个S函数的模板程序sfuntmpl.m,其位于MATLAB安装目录下的toolboxsimulinkblocks目录里。在建立实际的S函数时,可在该模板上做必要的修改即可。S函数的引导语句为functionsys,x0,str,ts=f(t,x,u,flag,p1,p2,),其中f为S函数的函数名,t,x,u分别为时间、状态向量和输入向量,flag为标志位,表示S函数执行何种操作的阶段。其意义和相关信息如教材168页表46所示,该函数还允许使用任意数量的附加参数p1,p2,。函数返回的参数值也有4个:sys是S函数根据flag的值运算得出的解;x0为初始状态值;str参数对m文件形成的S函数设置为空矩阵(可省略);ts为两列向量,定义为取样时间及偏移量(可省略)。,4.3复杂系统的综合仿真,4.3.5S函数及其应用2、S函数当flag=0时,表示S函数执行初始化操作,在S函数模板程序中可以看到初始化操作是定义在mdlInitializeSizes子函数中实现的。在该段子函数程序中首先出现的语句是sizes=simsizes;,该语句返回一个未经初始化的sizes结构,sizes结构是S函数的信息载体,其内部字段可以在命令窗口查询:在命令窗口键入sizes=simsizes回车可得sizes=NumContStates:0即sizes是一个具有6个字段的结构,NumDiscStates:0字段的值开始都被置为零,用户可以为NumOutputs:0sizes的每一个字段重新赋值,每一个字NumInputs:0段的含义在下页说明。DirFeedthrough:0NumSampleTimes:0,4.3复杂系统的综合仿真,4.3.5S函数及其应用2、S函数sizes的每一个字段的含义如下:NumContStates连续状态的个数;NumDiscStates离散状态的个数;NumOutputs输出的数目个数,赋1表示动态宽度的输出;NumInputs输入的数目个数,赋1表示动态宽度的输入;DirFeedthrough有无直接馈入,判断直接馈入要看输出函数或者采样时间的下一个采样点的计算是否包含输入变量;NumSampleTimes系统中有无代数循环的标志,一般设定为1。在S函数模板程序中,对sizes的每一个字段赋值后,紧跟着的命令是sys=simsizes(sizes),该命令是将一个结构再转换为向量,因此sys返回的是一个向量,包含用户设定的sizes的每一个字段赋值。即在该阶段用户给出了S函数的说明信息,包括状态变量的个数,输入输出的个数等,返回给S函数的输出变量sys。,4.3复杂系统的综合仿真,4.3.5S函数及其应用2、S函数当flag1时,S函数输出sys为状态变量的微分。当flag2时,输出值sys为状态值在下一个时刻的更新值。当flag3时,输出值Sys为系统输出的表达式。当flag4时,输出值sys为下一次被触发的时间。当flag9时,仿真任务结束。flag4和9的情况很少使用,离散状态的描述会用到flag2的情况,一般情况下多用的是Flag1和3的情况,当然,flag0的初始化操作任何情况下都不能少。根据以上的说明,编写S函数也可以不用MATLAB提供的模板,自己编写更为简捷的S函数。,4.3复杂系统的综合仿真,4.3.5S函数及其应用2、S函数例:vanderpol方程,选择状态变量可得如下状态方程:分析:该系统有两个状态变量,将系统的输出就设定为等于状态变量,因此可以编写如下的文件名为new_vdp的S函数functionsys,x0=new_vdp(t,x,u,flag)ifflag=0sys=2,0,2,0,0,0;x0=0.25,0.25;elseifflag=1sys(1)=x(1)*(1-x(2)2)-x(2);sys(2)=x(1);elseifflag=3sys=x;Elsesys=;End(model模型mysfcn.model)也可以用S函数模板编写,见文件名为new_vd的S函数。,4.3复杂系统的综合仿真,4.3.5S函数及其应用2、S函数在simulink模型窗口建立名为mysfcn的方块图模型,如下:在S函数模块对话框分别输入new_vdp和new_vd文件名,将存入工作空间的数据类型改为array,运行程序后,在命令窗口键入subplot(121),plot(t,x1,t,x2)subplot(122),plot(x1,x2)回车可得:,4.4电力系统模块,电力系统模块(powersystemblockset,PSB)功能非常强大,可以用于电路、电力电子系统、电机系统、电力传输等过程的仿真,它提供了一种类似电路建模的方式进行模型绘制,在仿真前将自动将其变化成状态方程描述的系统形式,然后才能在simulink下进行仿真分析。在MATLAB命令窗口中键入powerlib,将得出下图所示的模块集。也可以从Simulink模块浏览窗口中选中Simpowersystem子库启动。该模块集中还有很多子模块集,双击每一个图标都将打开一个下级子模块集。,4.4电力系统模块,4.4.1电力系统元件库简介1、电源元件电源元件库包含产生电信号的各种元件。如右图所示。包括直流电压源、交流电压源、交流电流源、受控电压源、受控电流源、三相电源、三相可编程电压源。受控源是由激励信号控制的电源,激励源在simulink模型库中选择合适的信号源,受控源的输出信号复现信号源的信号,只是将信号转换为PSB信号,因此受控源可实现simulink信号向PSB信号转换。三相电源模块中包含的参数有相电压、A相相角、频率、内部连接方式(Y中性点不接地;Yn中性点经消弧线圈或电阻接地;Yg中性点直接接地)、短路阻抗、三相电源电阻和三相电源电抗。可编程电压源可以对三相电源的幅值、相位和电源基频分量进行时变性编程。该电源还提供两个谐波分量,施加于基频信号,可以用来控制受控源。,4.4电力系统模块,4.4.1电力系统元件库简介2、线路元件(element)库包含各种线性网络电路元件和非线性网络电路元件。线路元件库中包含4类线路元件,分别是支路元件(实现各种串并联支路或者负载元件)、输配电线路元件(可以实现集中或者分布参数输电线)、断路器元件(模拟电路中的断路器)和变压器元件(模拟各种变压器)。该库中没有单独的电阻、电感和电容模型,可以通过串连RLC和并联RLC支路模型来实现。在串连分支中要删除电容,不能将其数值填写为0,而需要写成inf。单个电阻电感电容参数设置见下页。,4.4电力系统模块,4.4.1电力系统元件库简介2、线路元件(element)库单个电阻、电感、电容参数设置方法如下:串联RLC分支:电阻数值电感数值电容数值单个电阻R0inf单个电感0Linf单个电容00C并联RLC分支:电阻数值电感数值电容数值单个电阻Rinf0单个电感infL0单个电容infinfC,4.4电力系统模块,4.4.1电力系统元件库简介3、电力电子元件库:包含了各种电力电子设备元件。4、电机元件库:包含了各种电机模型元件。5、连接器元件库:包含了在不同条件下用于互相连接的元件。6、电路测量元件库:包含了各种电流测量元件和电压测量元件。7、附加元件库:包括

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论