资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,1,SIMULINK,基础,1,2,概述,在工程实际中,控制系统的结构往往很复杂,如果不借助专用的系统建模软件,很难准确地把一个控制系统的复杂模型输入计算机,对其进行进一步的分析与仿真。,1990,年,,Math Works,软件公司为,MATLAB,提供了新的控制系统模型图输入与仿真工具,并命名为,SIMULAB,,该工具很快就在控制工程界获得了广泛的认可,使得,仿真软件进入了模型化图形组态阶段,。但因其名字与当时比较著名的软件,SIMULA,类似,所以,1992,年正式将该软件更名为,SIMULINK,。,SIMULINK,的出现,给控制系统分析与设计带来了福音。该软件的名称表明了该系统的两个主要功能:,Simu(,仿真,),和,Link(,连接,),,即该软件可以利用鼠标在模型窗口上绘制出所需要的控制系统模型,然后利用,SIMULINK,提供的功能来对系统进行仿真和分析。,2,3,SIMULINK,简介,一、什么是,SIMULINK,SIMULINK,是,MATLAB,软件的扩展,它是,实现动态系统建模和仿真的一个软件包,,它与,MATLAB,语言的主要区别在于,其与用户交互接口是,基于,Windows,的模型化图形输入,,其结果是使得用户可以把更多的精力投入到系统模型的构建,而非语言的编程上。,所谓模型化图形输入是指,SIMULINK,提供了一些,按功能分类的基本的系统模块,,用户只需要知道这些模块的,输入输出,及模块的,功能,,而不必考察模块内部是如何实现的,通过对这些基本模块的调用,再将它们,连接,起来就可以构成所需要的系统模型(以,.mdl,文件进行存取),进而进行仿真与分析。,3,4,主要内容,Simulink,建模的基础知识,Simulink,建模与仿真,线性,/,非线性系统分析与仿真,子系统与模块封装技术,4,5,SIMULINK,简介,二、,SIMULINK,的启动,1.,在,MATLAB,的命令窗口直接键入“,Simulink”,并回车;,2.,单击,MATLAB,工具条上的,Simulink,图标;,3.,在,MATLAB,菜单上选,FileNewModel,。,三、,SIMULINK,的模块库介绍,常用的,SIMILINK,模块库按功能可分为以下几类:,Continuous,(连续模块),Discrete,(离散模块),User-defined Function,(函数模块),Lookup Tables(,查表模块,),Discontinuities,(非线性模块),Ports&Subsystem(,端口,&,子系统模块,),Signal routing,(信号路由模块),Math,(数学模块),Sinks,(接收器模块),Sources,(输入源模块),Logic and Bit operations,(逻辑,&,位操作),5,6,1,、连续模块(,Continuous,),Integrator,:输入信号积分,Derivative,:输入信号微分,State-Space,:线性状态空间系统模型,Transfer-Fcn,:线性传递函数模型,Zero-Pole,:以零极点表示的传递函数模型,Transport Delay,:输入信号延时一个固定时间再输出,Variable Transport Delay,:输入信号延时一个可变时间再输出,Memory:,一个积分步骤的延迟,6,7,2,、离散模块(,Discrete,),Discrete-time Integrator,:离散时间积分器,Discrete Filter,:离散滤波器,Discrete State-Space,:离散状态空间系统模型,Discrete Transfer-Fcn,:离散传递函数模型,Discrete Zero-Pole,:以零极点表示的离散传递函数模型,First-Order Hold,:一阶采样和保持器,Zero-Order Hold,:零阶采样和保持器,Unit Delay,:一个采样周期的延时,7,8,3,、,User-defined Function,(函数模块),Fcn,:用自定义的函数(表达式)进行运算,MATLAB Fcn,:利用,matlab,的现有函数进行运算,S-Function,:调用自编的,S,函数的程序进行运算,8,9,4,、,Lookup Tables,(查表模块),Look-Up Table,:建立输入信号的查询表,Look-Up Table(2-D),:建立两个输入信号的查询表,9,10,5,、,Discontinuities,(非线性模块),Saturation,:饱和输出,让输出超过某一值时能够饱和。,Relay,:滞环比较器,限制输出值在某一范围内变化。,Dead Zone,:死区,在某一范围内的输入其输出值为,0,Backlash:,磁滞回环模块,Rate limiter:,变化率限幅模块,10,11,6,、,Signal routing,(信号路由模块),Mux,:将多个单一输入转化为一个复合输出,Demux,:将一个复合输入转化为多个单一输出,Switch,:开关选择,当第二个输入端大于临界值时,输出由第一个输入端而来,否则输出由第三个输入端而来,Manual Switch,:手动选择开关,11,12,7,、,Math,(数学模块),Sum,:加减运算,Gain,:比例运算,Dot Product,:点乘运算,MinMax,:最值运算,Abs,:取绝对值,Sign,:符号函数,Product,:乘运算,Math Function,:包括指数、对数、求平方、开根号等常用数学函数,Trigonometric Function,:三角函数,包括正弦、余弦、正切等,Complex to Magnitude-Angle,:由复数输入转为幅值和相角输出,Magnitude-Angle to Complex,:由幅值和相角输入合成复数输出,Complex to Real-Imag,:由复数输入转为实部和虚部输出,Real-Imag to Complex,:由实部和虚部输入合成复数输出,12,13,8,、,Sinks,(接收器模块),Scope,:示波器,XY Graph,:显示二维图形,To Workspace,:将输出写入,MATLAB,的工作空间,To File(.mat),:将输出写入数据文件,Terminator,:连接到没有连接的输出端,13,14,9,、,Sources,(输入源模块),Constant,:常数信号,Clock,:时钟信号,From Workspace,:来自,MATLAB,的工作空间,From File(.mat),:来自数据文件,Pulse Generator,:脉冲发生器,Repeating Sequence,:重复信号,Signal Generator,:信号发生器,可以产生正弦、方波、锯齿波及随意波,Sine Wave,:正弦波信号,Step,:阶跃波信号,14,15,10,、,Ports,&,Subsystem(,端口,&,子系统模块,),In1,:输入端,Out1,:输出端,SubSystem,:建立新的封装(,Mask,)功能模块,15,16,11,、,Logic and Bit operations,(逻辑,&,位操作),Compare to constant:,与常数比较,Compare to zero,:与零比较,logical operator,:逻辑操作算子,detect change:,监测变化,detect decrease:,监测减少,16,17,SIMULINK,仿真的运行,启动仿真,设置仿真参数和选择解法器之后,就可以启动仿真而运行。,选择,Simulink,菜单下的,start,选项来启动仿真,如果模型中有些参数没有定义,则会出现错误信息提示框。如果一切设置无误,则开始仿真运行。,除了直接在,SIMULINK,环境下启动仿真外,还可以在,MATLAB,命令窗口中通过函数进行,格式如下,t,x,y=sim(,模型文件名,to tf,simset(,参数,1,参数值,1,参数,2,参数值,2,),其中,to,为仿真起始时间,,tf,为仿真终止时间。,t,x,y,为返回值,,t,为返回的时间向量值,,x,为返回的状态值,,y,为返回的输出向量值。,simset,定义了仿真参数,包括以下一些主要参数:,17,18,AbsTol,:默认值为,1e-6,设定绝对误差范围。,Decimation,:默认值为,1,,决定隔多少个点返回状态和输出值。,Solver,:解法器的选择,MaxRows,:默认值为,0,,表示不限制。若为大于零的值,则表示限制输出和,状态的规模,使其最大行数等于该数值。,InitialState,:一个向量值,用于设定初始状态。,FixedStep,:用一个正数表示步阶的大小,仅用于固定步长模式。,MaxStep,:默认值为,auto,。用于变步长模式,表示最大的步阶大小。,如果知道模型文件名称,可以用以下命令得到该模型的仿真参数:,simget(,模型文件名),18,19,Simulink,建模方法简介,考虑图中给出的典型非线性反馈系统框图,其中控制器为,PI,控制器,其模型为,:,19,20,Simulink,是解决这样问题的最有效的方法,可以用下面的步骤搭建此系统的仿真模型:,打开模型编辑窗口,;,首先打开一个模型编辑窗口,这可以单击,Simulink,工具栏中新模型的图标或选择菜单项实现。,复制相关模块,;,将相关的模块组中的模块拖动到此窗口中,修改模块参数,;,模块连接,;,系统仿真研究,;,c5mblk3.mdl,20,21,5.2.2,仿真算法与控制参数选择,选中,Simulink,模型窗口的,Simulation,菜单项,其中的,Configuration Parameters,菜单项允许用户设置 仿真控制参数。,21,22,仿真算法与控制参数选择,1,、,Solver,页,此页可以进行的设置有:选择仿真开始和结束的时间;选择,解法器,,并设定它的参数;,仿真时间:注意这里的时间概念与真实的时间并不一样,只是计算机仿真中对时间的一种表示,比如,10,秒的仿真时间,如果采样步长定为,0.1,,则需要执行,100,步,若把步长减小,则采样点数增加,那么实际的执行时间就会增加。一般仿真开始时间设为,0,,而结束时间视不同的因素而选择。总的说来,执行一次仿真要耗费的时间依赖于很多因素,包括模型的复杂程度、解法器及其步长的选择、计算机时钟的速度等等。,仿真精度控制有,Relative Tolerance,选项、,Absolute Tolerance,等,,其中相对误差限的默认值设置为,1e-3,,该值在实际仿真中显得偏大,建议选择,1e-6,和,1e-7,。值得指出的是,由于采用的变步长仿真算法,所以将误差限设置到这样小的值也不会增加太大的运算量。,22,23,仿真算法与控制参数选择,1,、,Solver,页,仿真步长模式:,用户在,Type,后面的第一个下拉选项框中指定仿真的步长选取方式,可供选择的有,Variable-step,(变步长)和,Fixed-step,(固定步长)方式。变步长模式可以在仿真的过程中改变步长,提供,误差控制,和,过零检测,。固定步长模式在仿真过程中提供固定的步长,不提供误差控制和过零检测。,在仿真时还可以选定最大允许的步长和最小允许的步长,这可以通过填写,Max step size,栏目和,Min step size,的值来实现,如果变步长选择的步长超过这个限制则将弹出警告对话框。,用户还可以在,solver,下拉选项框中选择对应模式下仿真所采用的算法。,23,24,(1)ode45,:缺省值,四,/,五阶龙格库塔法,,适用于大多数连续或离散系统,,,但不适用于刚性(,stiff,)系统,。,它是单步解法器,,也就是,在计算,y(tn),时,它仅需要最近处理时刻的结果,y(tn-1),。一般来说,面对一个仿真问题最好是首先试试,ode45,。,(2)ode23,:二,/,三阶龙格库塔法,,它在误差限要求不高和求解的问题不太难,的情况下,可能会比,ode45,更有效。也,是一个单步解法器,。,(3)ode113,:是一种阶数可变的解法器,它在误差容许要求严格的情况下通常比,ode45,有效。,ode113,是一种多步解法器,,也就是在计算当前时刻输出时,它需要以前多个时刻的解。,(4)ode15s,:是一种基于数字微分公式的解法器(,NDFs,)。也是,一种多步解法器,。,适用于刚性系统,,当用户估计要解决的问题是比较困难的,或者不能使用,ode45,,或者即使使用效果也不好,就可以用,ode15s,。,变步长模式,解法器有:,ode45,,,ode23,,,ode113,,,ode15s,,,ode23s,,,ode23t,,,ode23tb,discrete,。,24,25,(5)ode23s,:它,是一种单步解法器,,,专门应用于刚性系统,,,在弱误差允许下的效果好于,ode15s,。它能解决某些,ode15s,所不能有效解决的,stiff,问题。,(6)ode23t,:是梯形规则的一种自由插值实现。这种解法器适用于求解,适度,stiff,的问题,而用户又需要一个无数字振荡的解法器的情况。,(7)ode23tb,:是,TR-BDF2,的一种实现,,TR-BDF2,是具有两个阶段的隐式龙格库塔公式。,(8)discrete,:当,Simulink,检查到模型没有连续状态时使用它。,25,26,(1)ode5,:,缺省值,,,是,ode45,的固定步长版本,,,适用于大多数连续或离散系统,,,不适用于刚性系统,。,(2)ode4,:四阶龙格库塔法,具有一定的计算精度。,(3)ode3,:固定步长的二,/,三阶龙格库塔法。,(4)ode2,:改进的欧拉法。,(5)ode1,:欧拉法。,固定步长模式解法器有:,ode5,,,ode4,,,ode3,,,ode2,,,ode1,26,27,2,、,Data import/export,页,主要用来,设置,SIMULINK,与,MATLAB,工作空间交换数值,的有关选项。,Load from workspace,:选中前面的复选框即可从,MATLAB,工作空间获取时间和输入变量,一般时间变量定义为,t,,输入变量定义为,u,。,Initial state,用来定义从,MATLAB,工作空间获得的状态初始值的变量名。,Save to workspace,:用来设置存往,MATLAB,工作空间的变量类型和变量名,选中变量类型前的复选框使相应的变量有效。一般存往工作空间的变量包括输出时间向量(,Time,)、状态向量(,States,)和输出变量(,Output,)。,Final state,用来定义将,系统稳态值,存往工作空间所使用的变量名。,Save option,:用来设置存往工作空间的有关选项。,Limit rows to last,用来设定,SIMULINK,仿真结果最终可存往,MATLAB,工作空间的,变量的规模,,对于向量而言即其维数,对于矩阵而言即其秩;,Decimation,设定了一个亚采样因子,它的缺省值为,1,,也就是对,每一个,仿真时间点产生值都保存,而若为,2,,则是,每隔一个,仿真时刻才保存一个值。,Format,用来说明返回数据的格式,包括矩阵,array,、结构,struct,及带时间的结构,struct with time,。,27,28,3,、,Diagnostics,页,此页主要列举了一些常见的事件类型,以及当,SIMULINK,检查到这些事件时给予的处理。,28,29,非线性微分方程的框图求解 方程,其数学表达式为,:,29,30,31,这样的,微分方程,在,Simulink,下也可以搭建相应的仿真模型,从而进行仿真。如下图所示,:,simTest1,31,32,这样用下面的语句就可以绘制出各个状态变量的时间响应曲线,如图,32,33,comet3(yout(:,1),yout(:,2),yout(:,3),若以,x1(t),x2(t),x3(t),分别为三个坐标轴,,则可以绘制出三维状态空间曲线,33,34,直流电机拖动系统,34,35,终止仿真时间为,3,35,36,stairs(tout,yout),simTest2,36,37,Simulink,的,logic and bit operations,中提供了“逻辑算子”,Logic operator,模块,可以搭建数字逻辑电路,subplot(311),plot(tout,yout(:,1),axis(0,10,-2,2);,subplot(312),plot(tout,yout(:,2),axis(0,10,-2,2);,subplot(313),plot(tout,yout(:,3),axis(0,10,-2,2);,simTest3?,37,38,功能模块的基本操作,模块库中的模块可以直接用鼠标进行拖曳(选中模块,按住鼠标左键不放)而放到模型窗口中进行处理。,在模型窗口中,选中模块,则其,4,个角会出现黑色标记。此时可以对模块进行以下的基本操作。,移动:,选中模块,按住鼠标左键将其拖曳到所需的位置即可。若要脱离线而移动,可按住,shift,键,再进行拖曳,复制:,选中模块,然后按住鼠标右键进行拖曳即可复制同样的一个功能模块。,38,39,删除:,选中模块,按,Delete,键即可。若要删除多个模块,可以同时按住,Shift,键,再用鼠标选中多个模块,按,Delete,键即可。也可以用鼠标选取某区域,再按,Delete,键就可以把该区域中的所有模块和线等全部删除。,转向:,为了能够顺序连接功能模块的输入和输出端,功能模块有时需要转向。在菜单,Format,中选择,Flip Block,旋转,180,度,选择,Rotate Block,顺时针或逆时针旋转,90,度。,改变大小:,选中模块,对模块出现的,4,个黑色标记进行拖曳即可。,模块命名:,先用鼠标在需要更改的名称上单击一下,然后直接更改。名称在功能模块上的位置也可以变换,180,度,可以用,Format,菜单中的,Flip Name,来实现,也可以直接通过鼠标进行拖曳。,Hide Name,可以隐藏模块名称。,颜色设定,:,Format,菜单中的,Foreground Color,可以改变模块的前景颜色,Background Color,可以改变模块的背景颜色;而模型窗口的颜色可以通过,Screen Color,来改变。,39,40,参数设定:,用鼠标双击模块,就可以进入模块的参数设定窗口,从而对模块进行参数设定。参数设定窗口包含了该模块的基本功能帮助,为获得更详尽的帮助,可以点击其上的,help,按钮。通过对模块的参数设定,就可以获得需要的功能模块。,属性设定:,选中模块,打开,Edit,菜单的,Block Properties,可以对模块进行属性设定。包括,Description,属性、,Priority,优先级属性、,Tag,属性。,模块的输入输出信号:,模块处理的信号包括,标量信号,和,向量信号,;标量信号是一种单一信号,而向量信号为复合信号,是多个信号的集合,它对应着系统中几条连线的合成。,缺省情况下,大多数模块的输出都为标量信号,,对于输入信号,模块都具有一种“智能”的识别功能,能自动进行匹配。某些模块通过对参数的设定,可以使模块输出向量信号。,40,例,exp6_2.mdl,通过对参数的设定,可以使模块,输出向量信号,。,41,42,42,向量化输入的简便之处,a=0.2,b=0.2,c=5.7,Fn1:b+(u1-c)*u3,Fn2:u1+a*u2,Fn3:-u2-u3,simTest420.mdl,Fn,模块,中输入信号记,u,,如果为向量,,记,ui,。这样建模不易出错,便于维护,.,plot(tout,yout(:,1),*r,tout,yout(:,2),:b,tout,yout(:,3),g),comet3(yout(:,1),yout(:,2),yout(:,3),test4.m,simTest421.mdl,43,44,向量化输入的简便之处,避免报错,:,在,Diagnostics,标签中将,Unconnected block outport,的,Action,设置成,None,。或者连接信号终结环节,(,Terminator,),simTest5.mdl,simTest50.mdl,44,PI,调节器是一种线性控制器,45,46,c5mtimv.mdl,作业,4,47,Kp=200;Ki=10;%,设置控制器参数,plot(tout,yout)%,仿真并绘图,48,49,非线性环节与查表环节,在正弦信号激励下,经过几个常用非线性模块,磁滞回环、死区、饱和等观察信号的曲线形状,c1=0.5,subplot(221),plot(tout,yout(:,1),subplot(222),plot(tout,yout(:,2),subplot(223),plot(tout,yout(:,3),subplot(224),plot(tout,yout(:,4),simTest6,49,饱和非线性:,当输入信号超出其线性范围后,输出信号不再随输入信号变化而保持恒定。,死区非线性:,当输入信号在零位附近变化时,系统没有输出。当输入信号大于某一数值时才有输出,且与输入呈线性。,磁滞回环非线性,50,51,多种非线性组合情况,-4-3-1 1 3 4,-2,-2,0,0,2,2,Look up Table,模块,如图知转折点坐标:,(-4,-2),(-3,-2),(-1,0),(1,0),(3,2),(4,2),51,52,前已构造,任何单值非线性函数均可以采用这种方法来建立或者近似,figure(1),plot(tout,yout(:,1);,figure(2),plot(tout,yout(:,2);,figure(3),plot(tout,yout(:,3),simTest8,52,53,二维、多维表格查询,二维函数,构造较稀疏的,X-Y,平面上的网格点,并可以计算出这些点上的高度值,xx=linspace(-3,3,15);yy=linspace(-2,2,15);,x,y=meshgrid(xx,yy);,z=(x.2-2*x).*exp(-x.2-y.2-x.*y);,mesh(xx,yy,z);,axis(-3,3,-2,2,-0.6,1.2),simTest9,Test9,plot3(yout(:,1),yout(:,2),yout(:,3),.),53,54,输出模块库,示波器输出:,无需附加命令得到仿真结果,在默认情况下结果不返回工作空间,无法利用,MATLAB,强大的绘图功能。,直接数据显示,:,Display,,以数字显示的形式连到其上的信号。,输出端子,:在仿真结束后在工作空间自动生成两个变量,tout,yout,返回工作空间,:,To workspace,模块直接连到要观测的信号上就可将该信号返回工作空间进行后处理,用户可以自由选择想显示的,Matlab,变量名,自动生成时间变量仍为,tout.,文件输出,:将结果直接存到数据文件中,54,55,每路信号允许,连接多个输出模块,plot(tout,simout.signals.values),),simout.signals.values,55,56,输出模块应用举例,1,与时间有关的变量输出显示方法,在控制系统分析中,经常需要获得某个信号的某些时域指标,如,ITAE,指标,ISE,指标,例如:给定系统,求系统的,ITAE,指标与,ISE,指标,56,57,plot(tout,yout(:,2),plot(tout,yout(:,3),plot(tout,yout(:,1),设置仿真时间为,30,57,58,输出模块应用举例,2,STOP,模块在仿真过程控制中的应用,:,在输入信号非,0,时自动终止仿真过程。,plot(tout,yout(:,2),plot(tout,yout(:,3),plot(tout,yout(:,1),进入误差带,0.02,的时间大于,10,秒则终止,subplot(311);plot(tout,yout(:,1);,subplot(312);plot(tout,yout(:,2);,subplot(313);plot(tout,yout(:,3);,58,22 十一月 2024,Simulink,仿真实例,例题,8,建立一个积分器,输入为,1,,初始条件为,-50,,如果输出超过,20,,则重置为,-100,。,simtestN3.m,59,60,61,62,Simulink,仿真实例,例题,9,,重置弹力球。一个弹力球以,15m/s,的速度从距水平设置,10m,的高度抛向空中,球的弹力为,0.8,,当球到达球面时,重新设置其初始速度为,0.8x,,,x,是重置时刻球的速度,即积分器的状态。,球的抛物线运动满足下列公式,63,64,Simulink,仿真实例,其中,,V,为球的速度,,V0,为球的初始速度,,g,为重力加速度,,h,为球从起始位置开始的高度,,h0,为球的初始高度,即球距地面的高度,因此球距地面的实际高度为,h+h0,。,65,66,67,68,子系统的封装,自定义功能模块有两种方法,一种方法是采用,Ports&subsystems,功能模块,利用其编辑区设计组合新的功能模块;另一种方法是将现有的多个功能模块组合起来,形成新的功能模块。对于很大的,SIMULINK,模型,通过自定义功能模块可以简化图形,减少功能模块的个数,有利于模型的分层构建。,一、方法,1 exp6_5.mdl,将,Ports&subsystems,模块库中的,Subsystem,功能模块复制到打开的模型窗口中,双击,Subsystem,功能模块,进入自定义功能模块窗口,从而可以利用已有的基本功能模块设计出新的功能模块。,二、方法,2,在模型窗口中建立所定义功能模块的子模块。,用鼠标将这些需要组合的功能模块框住,然后选择,Edit,菜单下的,Create Subsystem,即可。,68,69,模块的封装技术,上面提到的两种方法都只是创建一个功能模块而已,如果要命名该自定义功能模块、对功能模块进行说明、选定模块外观、设定输入数据窗口,则需要对其进行封装处理。,封装模块(,masking,):将其对应的子系统内部结构隐藏起来以便访问该模块时,只出现一个参数设置对话框,将模块中所需要的参数用这个对话框来输入,其实,Simulink,中大多数的模块都是由更底层的模块封装起来的,例如传递函数模块等等,69,70,模块的封装技术,三、自定义功能模块的封装,举例:,c5msub2.mdl,对于新建,Subsystem,功能模块,打开,Edit,菜单中的,Mask Subsystem,选中,Subsystem,功能模块,再打开,Edit,菜单中的,Edit Mask,进入,mask,的编辑窗口,可以看出有,4,个标签页。,Icon,:设定功能模块的外观,Parameters:,参数页,设定输入数据窗口,Initialization,:编辑程序来执行特定的操作,Documentation,:设计该功能模块的文字说明。,70,71,SIMULINK,自定义功能模块,1,、,Icon,标签页,此页最重要的部分是,Drawing Commands,,在该区域内可以用,disp,指令设定功能模块的文字名称,用,plot,指令画线,用,dpoly,指令写传递函数。,注意,尽管这些命令在名字上和以前讲的,MATLAB,函数相同,但它们在功能上却不完全相同,因此不能随便套用以前所讲的格式。,disp(text),可以在功能模块上显示设定的文字内容。,disp(text1ntext2),分行显示文字,text1,和,text2,plot(x1 x2 xn,y1 y2 yn),指令会在功能模块上画出由,x1 y1,经,x2 y2,经,x3 y3,直到,xn,yn,为止的直线。功能模块的左下角会根据目前的坐标刻度被正规化为,0,0,,右上角则会依据目前的坐标刻度被正规化为,1,1,。,dpoly(num,den),:按,s,次数的降幂排序,在功能模块上显示连续的传递函数。,dpoly(num,den,z),:按,z,次数的降幂排序,在功能模块上显示离散的传递函数。,71,72,SIMULINK,自定义功能模块,1,、,Icon,标签页,plot(cos(0:0.1:2*pi),sin(0:.1:2*pi)%,绘图,disp(PIDnController)%,文字标注,image(imread(b747.jpg),%,读入图片,72,73,SIMULINK,自定义功能模块,用户还可以设置一些参数来控制图标的属性,,Icon frame,:,Visible,显示外框线;,Invisible,:隐藏外框线。,Icon Transparency,:,Opaque,隐藏输入输出的标签;,Transparent,:显示输入输出的标签。,Icon units:,选择像素点,图标大小不随模块大小变化,选择自动定标,图标充满整个模块,选择归一化,绘图比例设置在,0,和,1,之间。,Icon Rotation,:,fixed,图标不随模块一起旋转或翻转。,Rotated,,图标随模块一起旋转或翻转,2.Parameters,此页主要用来设计输入提示,(prompt),以及对应的变量名称,(variable),。在,prompt,栏上输入变量的含义,其内容会显示在输入提示中。而,variable,是仿真要用到的变量,如果要增加新的项目,可以点击左边的导航栏。,73,参数提示信息,参数名称,用于仿真,添加参数类型,74,参数类型为,popup,编辑,popup,的参数选项,75,76,SIMULINK,自定义功能模块,3.Initialization,标签页,如果配合在,initialization commands,内编辑程序,可以发挥功能模块的功能来执行特定的操作。,4,、,Documentation,标签页,此页主要用来针对完成的功能模块来编写相应的说明文字和,Help,。,在,mask description,中输入的文字,会出现在参数窗口的说明部分。,在,mask help,中输入的文字则会显示在单击参数窗口中的,help,按钮后浏览器所加载的,HTML,文件中。,Mask type,:在此处输入的文字作为封装模块的标注性说明,76,5.4.1,子系统概念及构成方法,77,78,79,模块经过封装后:,(,b,)封装后模块,C5mpidm.mdl,80,S-,函数的基本结构,81,S-,函数的基本结构,82,83,84,85,86,87,88,89,用,MATLAB,编写,S-,函数举例,90,91,92,93,94,95,96,在对话框中,输入,r=30,,,h=0.01,,,T=0.001,,并令输入信号为正弦信号,仿真算法为定步长,步长为,0.001,,可以对系统进行仿真。,97,如果输入信号分别为,sint,和,cost,加时钟信号,A=-2.25-5-1.25-0.5;2.25-4.25-1.25-0.25;0.25-0.5-1.25-1;1.25-1.75-0.25-0.75;,B=4 6;2 4;2 2;0 2;,C=0 0 0 1;0 2 0 2;,D=zeros(2,2);,输出曲线:,plot(tout,yout(:,1:2),状态曲线,:plot(tout,yout(:,3:6),前,2,列为输出,后,4,列为状态,用,S-,函数实现,98,User-defined functions,库中的模块,S-Function Examples,选中,M-file S-functions,选中,Level-1 M-file,选中,M-file S-function,编写模板,99,M-file S-function,编写模板,用模板定义,S-,函数文件,mystate.m,100,附加参数,A,B,C,D,S-,函数文件,mystate.m,101,定义连续、离散状态,输入输出个数、输出是否与输入有关、采样周期个数,初始状态、,采样周期矩阵,102,连续状态更新,计算输出,103,选用,s-function,模块,输入,S-,函数文件名,附加参数,Mystateexp.mdl,A=-2.25-5-1.25-0.5;2.25-4.25-1.25-0.25;0.25-0.5-1.25-1;1.25-1.75-0.25-0.75;,B=4 6;2 4;2 2;0 2;,C=0 0 0 1;0 2 0 2;,D=zeros(2,2);,输出曲线:,plot(tout,yout(:,1:2),状态曲线,:plot(tout,yout(:,3:6),104,本章要点小结,105,
展开阅读全文