版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章Simulink介绍
6.1Simulink工作平台的启动
6.2Simulink仿真原理6.3Simulink模块库6.4仿真模型的建立和模块参数及属性的设置6.5
Simulink子系统的创建及封装6.6其他应用模块集及Simulink扩展库6.1Simulink工作平台启动Simulink,通常有两种方法:(1)在MATLAB命令窗口中直接输入Simulink命令;(2)在MATLAB工具栏上单击Simulink按钮,如图6.1所示。图6.1启动Simulink这样就可打开了Simulink的SimulinkLibraryBrowser(库模块浏览器),如图6.2所示。在菜单栏中执行File/New/Model命令,就建立了一个名为untitled的模型窗口,如图6.3所示。在建立了空的模块窗口后,用户可以在此窗口中创建自己需要的Simulink模型。图6.2库模块浏览器图6.3新建的空白模块窗口6.2.2Simulink仿真过程1.初始化阶段①对模型的参数进行估计,得到它们实际计算的值。②展开模型的各个层次;③按照更新的次序对模型进行排序;④确定那些显式化的信号属性,并检查每个模块是否能够接受连接它们输入端的信号;⑤确定所有非显式的信号采样时间模块的采样时间;⑥分配和初始化存储空间,以便存储每个模块的状态和当前值的输出。2.模型执行阶段模型仿真是通过数值积分来进行完成的,计算数值积分可以采用以下两步来进行:①按照秩序计算每个模块的积分;②根据当前输入和状态来决定状态的微分,得到微分矢量,然后把它返回给解法器,以计算下一个采样点的状态矢量。在每一个时间步中,Simulink依次解决下列问题:·按照秩序更新模块的输出;·按照秩序更新模块的状态;·检查模块连续状态的不连续点;·计算下一个仿真时间步的时间。Simulink的模块库提供了大量模块。单击模块库浏览器中Simulink前面的“+”号,将看到Simulink模块库中包含的子模块库,单击所需要的子模块库,在右边的窗口中将看到相应的基本模块,选择所需基本模块,可用鼠标将其拖到模型编辑窗口。在模块库浏览器左侧的Simulink栏上单击鼠标右键,在弹出的快捷菜单中单击Openthe‘Simulink’Libray
命令,将打开Simulink基本模块库窗口。单击其中的子模块库图标,打开子模块库,找到仿真所需要的基本模块。6.3Simulink模块库Matlab程序设计模块库和工具箱说明栏子模块库6.3.1连续模块库(Continuous)在连续模块(Continuous)库中包括了常见的连续模块,这些模块如图所示。1.积分模块(Integrator):功能:对输入变量进行积分。说明:模块的输入可以是标量,也可以是矢量;输入信号的维数必须与输入信号保持一致。2.微分模块(Derivative)功能:通过计算差分∆u/∆t近似计算输入变量的微分。3.存储器模块(Memory)功能:保持输出前一步的输入值。4.传输延迟模块(TransportDelay)功能:用于将输入端的信号延迟指定的时间后再传输给输出信号。5.可变传输延迟模块(VariableTransportDelay)功能:用于将输入端的信号进行可变时间的延迟。7.传递函数模块(TransferFcn)功能:用执行一个线性传递函数。8.线性状态空间模块(State-Space)功能:用于实现以下数学方程描述的系统:6.3.2离散模块库(Discrete)离散模块库(Discrete)主要用于建立离散采样的系统模型,包括的主要模块,如图所示。1.零阶保持器模块(Zero-Order-Hold)功能:在一个步长内将输出的值保持在同一个值上。2.单位延迟模块(UnitDelay)功能:将输入信号作单位延迟,并且保持一个采样周期相当于时间算子z-1。3.离散时间积分模块(DiscreteTimeIntegrator)功能:在构造完全离散的系统时,代替连续积分的功能。使用的积分方法有:向前欧拉法、向后欧拉法、梯形法。4.离散状态空间模块(DiscreteStateSpace)功能:用于实现如下数学方程描述的系统:5.离散滤波器模块(DiscreteFilter)功能:用于实现无限脉冲响应(IIR)和有限脉冲响应(FIR)的数字滤波器。6.离散传递函数模块(DiscreteTransferFcn)功能:用于执行一个离散传递函数。7.离散零极点传递函数模块(DiscreteZero-Pole)功能:用于建立一个预先指定的零点、极点,并用延迟算子z-1表示的离散系统。8.一阶保持器模块(FirstOrderHold)功能:在一定时间间隔内保持一阶采样。6.3.3Discontinuous(非线性模块)非线性模块(Discontinuous)中包括一些常用的非线性模块,如图6.9所示。1.比率限幅模块(RateLimiter)功能:用于限制输入信号的一阶导数,使得信号的变化率不超过规定的限制值。2.饱和度模块(Saturation)功能:用于设置输入信号的上下饱和度,即上下限的值,来约束输出值。3.量化模块(Quantizer)功能:用于把输入信号由平滑状态变成台阶状态。4.死区输出模块(DeadZone)功能:在规定的区内没有输出值。5.继电模块(Relay)功能:继电模块(Relay)用于实现在两个不同常数值之间进行切换。6.选择开关模块(Switch)功能:根据设置的门限来确定系统的输出。7.Coulomb&ViscousFriction:库仑和粘滞摩擦6.3.4
Look-up
Table(查表模块)
User-definedfunction(用户定义函数模块)Look-UpTable:建立输入信号的查询表(线性峰值匹配)Look-UpTable(2-D):建立两个输入信号的查询表(线性峰值匹配)Fcn:用自定义的函数(表达式)MATLABFcn:利用MATLAB的现有函数S-Function:调用自编的S函数的程序主要用于查表运算及用户自定义功能执行Sum:加减运算Product:模块输入的乘除运算DotProduct:点乘运算Gain:比例运算MathFunction:包括指数函数、对数函数、求平方等常用数学函数TrigonometricFunction:三角函数包括正弦、余弦、正切等MinMax:最小值或最大值运算6.3.5Mathoperations(数学模块)主要用于对输入信号进行数学操作Abs:取绝对值Sign:给出符号函数RoundingFunction圆整函数CombinatorialLogic:建立真值表LogicalOperator:逻辑运算RelationalOperator:关系运算ComplextoMagnitude-Angle:由复数输入转为幅值和相角输出ComplextoReal-Imag:由复数输入转为实部和虚部输出Magnitude-AngletoComplex:由幅值和相角输入合成复数输出Real-ImagtoComplex:由实部和虚部输入合成复数输出Mux:将多个单一输入转化为一个复合输出。Demux:将一个复合输入转化为多个单一输出。Bus信号选择模块(BusSelector):用于得到从Mux模块或其它模块引入的Bus信号。信号合成模块(Merge):把多路信号进行合成一个单一的信号。接收/传输信号模块(From/Goto):接收/传输信号模块(From/Goto)常常配合使用,From模块用于从一个Goto模块中接收一个输入信号,Goto模块用于把输入信号传递给From模块。6.3.6SignalRouting(信号通路模块)该模块库中存放了大量的对信号传输路径问题进行处理的模块初始值设定模块(IC):初始值设定模块(IC)用于设定与输出端口连接的模块的初始值。6.3.7信号输出模块(Sinks)信号输出模块(Sinks)包括的主要模块如图6.12所示。图6.12输出显示模块库1.示波器模块(Scope)功能:显示在仿真过程中产生的输出信号,用于在示波器中显示输入信号与仿真时间的关系曲线,仿真时间为x轴。2.二维信号显示模块(XYGraph)功能:在MATLAB的图形窗口中显示一个二维信号图,并将两路信号分别作为示波器坐标的x轴与y轴,同时把它们之间的关系图形显示出来。3.显示模块(Display)功能:按照一定的格式显示输入信号的值。可供选择的输出格式包括:short、long、short_e、long_e、bank等。4.输出到文件模块(ToFile)功能:按照矩阵的形式把输入信号保存到一个指定的MAT文件。第一行为仿真时间,余下的行则是输入数据,一个数据点是输入矢量的一个分量。5.输出到工作空间模块(ToWorkspace)功能:把信号保存到MATLAB的当前工作空间,是另一种输出方式。6.终止信号模块(Terminator)功能:中断一个未连接的信号输出端口。7.结束仿真模块(Stopsimulation)功能:停止仿真过程。当输入为非零时,停止系统仿真。Scope:示波器可以接受多个输入信号,每个端口的输入信号都将在一个坐标轴中显示出来,并以不同的颜色加以区分。若为离散信号,则显示信号的阶梯图。
示波器工具栏介绍坐标轴的范围调整:在坐标框内单击鼠标右键-Axesproperties
示波器参数设置GeneralNumberofaxes:用于设定轴的个数,可以实现多个输入信号的显示Timerange:用于设定X轴(时间轴)的显示范围Sampling下拉列表:Decimation-可设置显示频度,若设为n,则每隔n-1个数据点都给予显示Sampletime-若为0,显示连续信号,-1显示方式取决于输入信号,任何大于0的数据表示显示离散信号的时间间隔Floatingscope:游离示波器Datahistory[注]工作在游离状态的示波器能够对模型中一条或多条信号线上的信号进行观察,而不用将示波器与信号线相连。由于游离示波器对数据部进行缓存,工作在游离状态下的示波器不能进行窗口的缩放操作。Scope:示波器6.3.8信号源模块库(Sources)信号源模块库(Sources)包括的主要模块如图6.13所示。图6.13信号源模块库1.输入常数模块(Constant)功能:产生一个常数。该常数可以是实数,也可以是复数。2.信号源发生器模块(SignalGenerator)功能:产生不同的信号,其中包括:正弦波、方波、锯齿波信号。3.从文件读取信号模块(FromFile)功能:从一个MAT文件中读取信号,读取的信号为一个矩阵,其矩阵的格式与ToFile模块中介绍的矩阵格式相同。如果矩阵在同一采样时间有两个或者更多的列,则数据点的输出应该是首次出现的列。4.从工作空间读取信号模块(FromWorkspace)功能:从MATLAB工作空间读取信号作为当前的输入信号。5.随机数模块(RandomNumber)功能:产生正态分布的随机数,默认的随机数是期望为0,方差为1的标准正态分布量。6.带宽限制白噪声模块(BandLimitedWhiteNoise)功能:实现对连续或者混杂系统的白噪声输入。7.其它模块除以上介绍的常用模块外,还包括其模块。各模块功能可通过以下方法查看:先进入Simulink工作窗口,在菜单中执行Help/SimulinkHelp命令,这时就会弹出Help界面。然后用鼠标展开UsingSimulink\BlockReference\SimulinkBlockLibraries就可以看到Simulink的所有模块。查看相应的模块的使用方法和说明信息即可。可以根据用户设定的参数来直接生成正弦信号。信号生成方式有两种:
Timebased方式:需要用户设定的参数有:Amplitude(幅度)、Bias(偏移)、Frequency(频率)、Phase(初相)、Sampletime(采样时间)。
Samplebased方式:需要用户设定的参数有:Amplitude(幅度)、Bias(偏移)、Samplesperperiod(每周期采样数)、Numberofoffsetsamples(偏移采样数)、Sampletime(采样时间)。[注]采样时间设置为0表示以连续方式工作,当设置为大于0的数时则以所设采样时间工作。
Samplebased模式的模块是不能以连续的方式工作的。SineWave模块可以从工作空间中读取数据作为输入信号。Data:填写从工作空间的哪个变量读取数据。Sampletime:设置采样时间。“Data”文本框中填写的变量必须包含信号的时间信息,比如该变量可以是一个n*2的矩阵,第一列给除了n个时刻值,第二列给出了对应这些时刻的信号值。若选中Interpolatedata,则时刻值之间的值通过插值获得。若不选中Interpolatedata,则输出信号将保持前一个给出了信号值的时刻的值。第10秒后的输出信号由Formoutputafterfinaldatavalueby选项决定:extrapolate-外推插值
Settingtozero-设置为0
CyclicRepetition-信号循环出现FromWorkspace模块FromWorkspace模块functionSin_signal=Sin_signal(A,Bias,W,Phase,t0,te,N)t=linspace(t0,te,N);Data=A*sin(W*t+Phase)+Bias;Sin_signal=[t'Data'];>>simin=Sin_signal(1,0,0.5*pi,0,0,8,100);建立如下函数文件:在命令窗口中键入:可以从mat文件中的第一个矩阵中读取数据作为输入信号,该矩阵的第一行被认为给出了一组时刻值,其余行给出了相应的信号值。在使用此模块时需要设置mat文件名和采样时间。FromFile模块>>save_data=simin';>>savemydatasave_data6.4仿真模型的建立与模块参数与属性的设置1.仿真模块的建立首先启动Simulink命令,建立一个空的模块窗口“untitled”,然后利用Simulink提供的模块库,在此窗口中创建自己需要的Simulink模型。具体方法:在模块库浏览器中找到所需模块,选中该模块后右击鼠标,把它加入到一个模型窗口中即可完成模块的建立。图6.14添加模块
2.模块参数与属性的设置
方法:在所建立的模型窗口中,选中相应的模块,单击右击鼠标,在弹出的快捷菜单中单击“Blockparameters”选项(如图6.15所示),即可打开该模块的参数设置对话框,如图6.16(a)所示。右击鼠标,在弹出的快捷菜单中单击“BlockProperties”选项,即可打开该模块的属性设置对话框,如图6.16(b)所示。图6.15Blockparamenters选项
3.模块的连接
一般情况下,每个模块都有一个或者多个输入口或者输出口。输入口通常是模块的左边的“>”符号;输出口是右边的“>”符号。
模块的连接方法:把鼠标指针放到模块的输出口,这时,鼠标指针将变为“+”十字形;然后,拖运鼠标至其它模块的输入口,这时信号线就变成了带有方向箭头的线段。此时,说明这两个模块的连接成功,否则需要重新进行连接。4.运行仿真在运行仿真之前,首先保存已设置和连接的模型,然后就可以运行仿真。1.Simulink仿真注意(1)Simulink的数据类型由于Simulink在仿真过程中,始终都要检查模型的类型安全性。模型的类型安全性是指从该模型产生的代码不出现上溢或者下溢现象,当产生溢出现象时,系统将出错误。查看模块的数据类型的方法是:在模型窗口的菜单中执行Format/PortDataTypes命令,这样每个模块支持的数据类型就显示出来了。要取消数据类型的查看方式,单击PortDataTypes去掉其前面的勾号即可。6.4.3Simulink仿真注意与技巧图6.23查看模块支持的数据类型(2)数据的传输在仿真过程中,Simulink首先查看有没有特别设置的信号的数据类型,以及检验信号的输入和输出端口的数据类型是否产生冲突。如果有冲突,Simulink将停止仿真,并给出一个出错提示对话框,在此对话框中将显示出错的信号以及端口,并把信号的路径以高亮显示。遇到该情形,必须改变数据类型以适应模块的需要。(3)提高仿真速度Simulink仿真过程,仿真的性能受诸多因素的影响,包括模型的设计和仿真参数的选择等。对于大多数问题,使用Simulink系统默认的解法和仿真参数值就能够比较好地解决。因素及解决方法:(1)仿真的时间步长太小。针对这种情况可以把最大仿真步长参数设置为默认值auto。(2)仿真的时间过长。可酌情减小仿真的时间。(3)选择了错误的解法。针对这种情况可以通过改变解法器来解决。(4)仿真的精度要求过高。仿真时,如果绝对误差限度太小,则会使仿真在接近零的状态附近耗费过多时间。通常,相对误差限为0.1%就已经足够了。(5)模型包含一个外部存储块。尽量使用内置存储模块。(4)改善仿真精度检验仿真精度的方法是:通过修改仿真的相对误差限和绝对误差限,并在一个合适的时间跨度反复运行仿真,对比仿真结果有无大的变化,如果变化不大,表示解是收敛的。说明仿真的精度是有效的,结果是稳定的。如果仿真结果不稳定,其原因可参是系统本身不稳定或仿真解法不适合。如果仿真的结果不精确,其原因很可能是:(1)模型有取值接近零的状态。如果绝对误差过大,会使仿真在接近零区域运行的仿真时间太小。解决的办法是修改绝对误差参数或者修改初始的状态。(2)如果改变绝对误差限还不能达到预期的误差限,则修改相对误差限,使可接受的误差降低,并减小仿真的步长。2.Simulink仿真技巧■连接分支信号线先连接好单根信号线,然后将鼠标指针放在已经连接好的信号线上,同时按住“Ctrl”键,拖动鼠标,连接到另一个模块。这样就可以根据需由一个信号源模块,引出多条信号线。如图6.28所示。图6.28引出多条信号线示例
■模块的编辑技巧(1)调整模块大小(2)在同一窗口复制模块(3)删除模块(4)编辑模块标签例、建立simulink框图 1)、选择模块 2)、模块连接 3)、信号组合与分支4)、运行仿真6.5其它应用模块集和Simulink扩展库1.通信模块集(CommunicationsBlockset)图6.31通信模块集中的模块库2.数字信号处理模块集(DSPBlockset)3.电力系统模块集(PowerSystemBlockset)4.Simulink扩展库
•扩展信号输出模块库(AdditionalSinks)图6.35扩展信号输出模块库•扩展离散库(AdditionalDiscrete)•扩展线性库(AdditionalLinear)图6.36扩展离散库图6.37扩展线性库•转换库(Transformations)图6.38转换模块库•触发模块库(FlipFlops)图6.39触发模块库•线性化库(Linearization)图6.40线性化库•宇航模块库(AirspaceBlocks)图6.41宇航模块库Solver(选项卡解算器设置)页,它允许用户设置仿真的开始和结束时间,选择解法器,说明解法器参数及选择一些输出选项。DataI/O(工作空间I/O设置)页,作用是管理模型从MATLAB工作空间的输入和对它的输出。Diagnostics(诊断)页,允许用户选择Simulink在仿真中显示的警告信息的等级。Advanced(高级参数设置)页,用户可以设置一系列优化参数问题的提出:如前所述,SIMULINK默认的仿真时间为10s,但是在进行实际的仿真时可能需要更长的时间,应该如何调整?3、仿真方法与仿真参数的选择解决方法:选择Simulation菜单下的SimulationParameters命令,就会弹出一个仿真参数对话框,它主要用三个页面来管理仿真的参数。Solver页Simulationtime仿真时间:注意这里的时间是计算机仿真中对时间的一种表示,比如10秒的仿真时间,如果采样步长定为0.1,则需要执行100步,若把步长减小,则采样点数增加,那么实际的执行时间就会增加。一般仿真开始时间设为0,而结束时间视不同的因素而选择。Solveroption解法选项:Type后面的第一个选项中指定仿真的步长类型,分Variable-step(变步长)和Fixed-step(固定步长)两种。1.采用变步长模式解法器时,Simulink会在保证仿真精度的前提下,从尽可能节约仿真时间的目的出发对仿真步长进行相应改变。有:ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb和discrete。ode45:缺省值,四/五阶龙格-库塔法,适用于大多数连续或离散系统,但不适用于刚性(stiff)系统。它是单步解法器,也就是,在计算y(tn)时,它仅需要最近处理时刻的结果y(tn-1)。一般来说,面对一个仿真问题最好是首先试试ode45。ode23:二/三阶龙格-库塔法,它在误差限要求不高和求解的问题不太难的情况下,可能会比ode45更有效。也是一个单步解法器。ode113:是一种阶数可变的解法器,它在误差容许要求严格的情况下通常比ode45有效。ode113是一种多步解法器,也就是在计算当前时刻输出时,它需要以前多个时刻的解。ode15s:是一种基于数字微分公式的解法器(NDFs)。也是一种多步解法器。适用于刚性系统,当用户估计要解决的问题是比较困难的,或者不能使用ode45,或者即使使用效果也不好,就可以用ode15s。ode23s:它是一种单步解法器,专门应用于刚性系统,在弱误差允许下的效果好于ode15s。它能解决某些ode15s所不能有效解决的stiff问题。ode23t:是梯形规则的一种自由插值实现。这种解法器适用于求解适度stiff的问题而用户又需要一个无数字振荡的解法器的情况。ode23tb:是TR-BDF2的一种实现,TR-BDF2是具有两个阶段的隐式龙格-库塔公式。discrtet:当Simulink检查到模型没有连续状态时使用它。固定步长模式解法器有:ode5,ode4,ode3,ode2,ode1和discrete。ode5:缺省值,是ode45的固定步长版本,适用于大多数连续或离散系统,不适用于刚性系统。ode4:四阶龙格-库塔法,具有一定的计算精度。ode3:固定步长的二/三阶龙格-库塔法。ode2:改进的欧拉法。ode1:欧拉法。discrete:是一个实现积分的固定步长解法器,它适合于离散无连续状态的系统。Fixedstepsize固定步参数:缺省情况下,步长自动地确定,它由值auto表示Mode(固定步长模式选择)Multi-tasking:多任务模式,当simulink检测到模块间非法的采样速率转换,它会给出错误提示。所谓的非法采样速率转换指两个工作在不同采样速率的模块之间的直接连接。在实时多任务系统中,如果任务之间存在非法采样速率转换,那么就有可能出现一个模块的输出在另一个模块需要时却无法利用的情况。通过检查这种转换,Multitasking将有助于用户建立一个符合现实的多任务系统的有效模型。使用速率转换模块可以减少模型中的非法速率转换。Simulink提供了两个这样的模块:unitdelay模块和zero-orderhold模块。对于从慢速率到快速率的非法转换,可以在慢输出端口和快输入端口插入一个单位延时unitdelay模块。而对于快速率到慢速率的转换,则可以插入一个零阶采样保持器zero-orderhold。Singletasking:单任务模式,不检查模块间的速率转换,它在建立单任务系统模型时非常有用,在这种系统就不存在任务同步问题。Auto:自动模式,simulink会根据模型中模块的采样速率是否一致,自动决定切换到multitasking和singletasking。Stepsize步长参数:对于变步长模式,用户可以设置最大的和推荐的初始步长参数,缺省情况下,步长自动地确定,它由值auto表示。Maximumstepsize(最大步长参数):它决定了解法器能够使用的最大时间步长,它的缺省值为“仿真时间/50”,即整个仿真过程中至少取50个取样点,但这样的取法对于仿真时间较长的系统则可能带来取样点过于稀疏,而使仿真结果失真。一般建议对于仿真时间不超过15s的采用默认值即可,对于超过15s的每秒至少保证5个采样点,对于超过100s的,每秒至少保证3个采样点。Initialstepsize(初始步长参数):一般建议使用“auto”默认值即可。Relativetolerance(相对误差):它是指误差相对于状态的值,是一个百分比,缺省值为1e-3,表示状态的计算值要精确到0.1%。Absolutetolerance(绝对误差):表示误差值的门限,或者是说在状态值为零的情况下,可以接受的误差。如果它被设成了auto,那么simulink为每一个状态设置初始绝对误差为1e-6。Outputoptions输出选项(在变步长模式下有效)Refineoutput:精细输出,其意义是在仿真输出太稀松时,simulink会产生额外的精细输出,这一点就像插值处理一样。用户可以在refinefactor设置仿真时间步间插入的输出点数。产生更光滑的输出曲线,改变精细因子比减小仿真步长更有效,并且在ode45效果最好。Produceadditionaloutput:它允许用户直接指定产生输出的时间点。一旦选择了该项,则在它的右边出现一个outputtimes编辑框,在这里用户指定额外的仿真输出点,它既可以是一个时间向量,也可以是表达式。与精细因子相比,这个选项会改变仿真的步长。Producespecifiedoutputonly:它的意思是让simulink只在指定的时间点上产生输出。为此解法器要调整仿真步长以使之和指定的时间点重合。这个选项在比较不同的仿真时可以确保它们在相同的时间输出。DataI/O页此页主要用来设置与MATLAB工作空间交换数值的有关选项。Loadfromworkspace:从MATLAB工作空间获取时间和输入变量,一般时间变量定义为t,输入变量定义为u。Initialstate用来定义从MATLAB工作空间获得的状态初始值的变量名。DataI/O页
Loadfromworkspace:若选中Input复选框,Simulink可以从工作空间中为模型的顶层输入端口获取输入信号,但需要在其后的文本框中填入变量名。外部输入一般是二维的数组,即为矩阵。该矩阵第一列必须是升序排列的时间值,后续各列指定输入值,各输入口按端口号由低到高的顺序,一次逐列取值。>>t=0:0.1:10;>>t=t';>>u=[exp(t),sin(t),cos(t)];设定In1端口宽度为1,In2端口宽度为2,则输入信号矩阵第一列为时间值,第2列为In1输入信号,第3、4列为In2输入信号。
Savetoworkspace:设置保存到MATLAB工作空间的变量类型和变量名,包括:输出时间向量(Time)、状态向量(States)、输出变量(Output)。最终状态(Finalstate)用来定义将系统稳态值存往工作空间所使用的变量名。Saveoption:用来设置存往工作空间的有关选项。Limitdatatolast-仿真结果最终可存往工作空间的数据的长度,默认值为1000;Decimation-亚采样因子,用于设置抽取频率,缺省值为1,也就是对每一个仿真时间点产生值都保存,而若为2,则是每隔一个仿真时刻才保存一个值。Format-返回数据的格式,包括数组array、结构struct及带时间的结构structwithtime。Diagnostics页此页分成两个部分:仿真选项和配置选项。配置选项下的列表框主要列举了一些常见的事件类型,以及当SIMULINK检查到这些事件时给予的处理。仿真选项options主要包括是否进行连续性检验(实现对Simulink常微分方程解法进行假设检验的调试工具)、是否进行边界检测(检验仿真运行中模块是否对已分配给它之外的存储空间进行操作)。除了上述3个主要的页外,仿真参数设置窗口还包括Advanced(高级参数设置)以及real-timeworkshop(实时仿真)页,主要用于仿真的参数优化和设置实时系统和单机仿真参数。二、启动仿真设置仿真参数和选择解法器之后,就可以启动仿真而运行。选择Simulink菜单下的start选项来启动仿真,如果模型中有些参数没有定义,则会出现错误信息提示框。如果一切设置无误,则开始仿真运行,结束时系统会发出一鸣叫声。除了直接在SIMULINK环境下启动仿真外,还可以在MATLAB命令窗口中通过函数进行,格式如下:
[t,x,y]=sim(‘模型文件名’,[totf],simset(‘参数1’,参数值1,‘参数2’,参数值2,…))其中to为仿真起始时间,tf为仿真终止时间。[t,x,y]为返回值,t为返回的时间向量值,x为返回的状态值,y为返回的输出向量值。simset定义了仿真参数,包括以下一些主要参数:AbsTol:默认值为1e-6设定绝对误差范围。Decimation:默认值为1,决定隔多少个点返回状态和输出值。Solver:解法器的选择。MaxRows:默认值为0,表示不限制。若为大于零的值,则表示限制输出和状态的规模,使其最大行数等于该数值。InitialState:一个向量值,用于设定初始状态。FixedStep:用一个正数表示步阶的大小,仅用于固定步长模式。MaxStep:默认值为auto。用于变步长模式,表示最大的步阶大小。如果知道模型文件名称,可以用以下命令得到该模型的仿真参数:simget(‘模型文件名’)Matlab程序设计4、框图的视图调整视图调整的方法如下所述:(1)使用View菜单控制模型在视图区的显示,用户可以对模型视图进行任意缩放。(2)使用系统热键R(放大)或V(缩小)。(3)按空格键可以使系统模型充满整个视图窗口。Matlab程序设计5、模块的名称操作
在使用Simulink中的系统模块构建系统模型时,Simulink会自动给系统模型中的模块命名,对于系统模型中相同的模块,Simulink会自动对其进行编号。一般对于简单的系统,可以采用Simulink的自动命名;但对于复杂系统,给每个模块取一个具有明显意义的名称非常有利于系统模型的理解与维护。Matlab程序设计(1)模块命名:使用鼠标左键单击模块名称,进入编辑状态,然后键入新的名称。(2)名称移动:使用鼠标左键单击模块名称并拖动到模块的另一侧,或选择Format菜单中的FlipName翻转模块名称。(3)名称隐藏:选择Format菜单中的HideName隐藏系统模块名称。注意:系统模型中模块的名称应当是唯一的,否则Simulink会给出警告并自动改变名称。Matlab程序设计6、系统框图注释在系统模型编辑器的背景上双击鼠标左键以确定添加注释文本的位置,并打开一个文本编辑框,用户便可以在此输入相应的注释文本。输入完毕后,使用鼠标左键单击以退出编辑并移动文本位置(编辑框未被选中情况下)到合适的地方。在文本对象上单击鼠标右键,可以改变文本的属性如大小、字体和对齐方式等。在任何时候都可以双击注释文本进行编辑。Matlab程序设计7、信号标签生成信号标签(1)使用鼠标左键双击需要加入标签的信号(即系统模型中与信号相对应的模块连线),这时便会出现标签编辑框,在其中键入标签文本即可。当一个信号定义了标签后,从这条信号线引出的分支线会继承这个标签(2)用鼠标左键单击信号连线,然后使用Edit菜单下的SignalProperties项,在打开的界面中编辑信号的名称,而且还可以使用这个界面对信号作简单的描述并建立HTML文档链接。6.5Simulink子系统的创建及封装随着所需建立模型的规模和复杂性的增加,再采用平面的结构来建立一个模型将是一件麻烦的事情。此时,就象C语言、Matlab语言提供了函数的概念一样,Simulink中也提供了子系统的概念,可以采用模块化方式在模型中构造子系统,使搭建的模型具有层次性的结构。进一步还可以对该子系统进行封装,使其对外只提供接口而屏蔽掉内部的具体实现,以使用户可以创建一个对话框来设置或修改子系统的关键参数。所谓的子系统可以理解为一种“容器”,此容器能够将一组相关的模块封装到一个单独的模块中,并且与原来系统模块组的功能一致。
一、方法1:在已有的系统模型中建立子系统:
在已搭建好的模型中选中需要包含到一个子系统中的模块。用鼠标将这些需要组合的模块框住,然后选择Edit菜单下的CreateSubsystem即可。6.5.1如何建立子系统1、 在已有的系统模型中建立子系统二、方法2:建立空的子系统1)将Portsandsubsystems模块库中的Subsystem功能模块复制到打开的模型窗口中。2)双击Subsystem功能模块,进入自定义功能模块窗口,从而可以利用已有的基本功能模块设计出新的功能模块。6.5.1如何建立子系统 2、先建立空的子系统Matlab程序设计【例】系统模块参数设置Matlab程序设计系统仿真及结果输出子系统建立:选择模块生成子系统Matlab程序设计6.5.2子系统操作在生成子系统之后,子系统相当于具有一定功能的系统模块,用户可以对子系统进行各种与系统模块相类似的操作。子系统命名:命名方法与模块命名类似。子系统编辑:用鼠标左键双击子系统模块图标,打开子系统以对其进行编辑。子系统的输入:使用Sources模块库中的Inport输入模块(即In1模块)作为子系统的输入端口。子系统的输出:使用Sinks模块库中的Outport输出模块(即Out1模块)作为子系统的输出端口。
Matlab程序设计6.5.3子系统基本类型(1)使能子系统:是指当控制信号的值为正时,子系统开始执行。(2)触发子系统:是指当控制信号的符号发生改变时(也就是控制信号发生过零时),子系统开始执行。触发子系统的触发执行有三种形式:①控制信号上升沿触发:控制信号具有上升沿形式。②控制信号下降沿触发:控制信号具有下降沿形式。③控制信号的双边沿触发:控制信号在上升沿或下降沿时触发子系统。(3)控制流程子系统1、条件子系统的建立方法 在enabledsubsystem、triggeredsubsystem、enabledandtriggeredsubsystem中。1)早期simulink版本中,enable和triggered信号需要从signal&system中调用。2)simulink后期版本中,在上述模块中含这两个信号。3)一个系统中不能含多个enable和triggered信号。4)其它子系统可看成某种形式的条件执行子系统。1、触发子系统法1(加分路器)法2(示波器分三支路)2、使能子系统Reset:执行时,系统中的状态被重新设置为初始参Held:执行时,系统的状态保持不变3、触发+使能子系统4、触发使能子系统Matlab程序设计5、原子子系统虚子系统:对通用子系统与使能子系统1)子系统只是系统模型中某些模块组的图形表示2)子系统中的模块在执行时与其上一级模块统一被排序,不受子系统限制。3)在一个仿真时间步长内,simulink可以多次进出一个子系统。原子子系统:1)子系统作为一个“实际”的模块,需顺序连续执行。2)子系统作为整体进行仿真。3)子系统中的模块在子系统中被排序执行。建立原子子系统: 1)先建立一空的原子子系统。 2)先建立子系统,再强制转换成原子子系统。Edit/blockparameters5、其它子系统可配置子系统,代表用户定义库中的任意模块,只能在用户定义库中使用。函数调用子系统。for循环while循环选择表达式执行子系统6.5.4自定义功能模块的封装上面提到的两种方法都只是创建一个功能模块而已,如果要命名该自定义功能模块、对功能模块进行说明、选定模块外观、设定输入数据窗口,则需要对其进行封装处理。对一个子系统进行封装,可以使这个子系统外在表现得同一个模块完全一样,它拥有以下优点:1)将用户与模块内容的复杂性隔绝开来。2)提供一个描述性的、友好的用户接口:给该封
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 9、2025年度绿色建筑模板单项劳务分包合同3篇
- 个人宅基及房屋销售协议版B版
- 2025版门面租赁合同签订流程及注意事项4篇
- 游戏化教学增强小学生注意力的教育模式
- 2025版化妆品销售代理合同范本6篇
- 美容院与互联网平台2025年度线上推广服务合同4篇
- 智能化学习环境下的学生思维升级
- 二零二五年度汽车美容服务合同范本4篇
- 科技产品的动态视觉设计实践分享
- 时间管理对学习态度的积极影响
- 教师招聘(教育理论基础)考试题库(含答案)
- 2024年秋季学期学校办公室工作总结
- 铺大棚膜合同模板
- 长亭送别完整版本
- 智能养老院视频监控技术方案
- 你比我猜题库课件
- 无人驾驶航空器安全操作理论复习测试附答案
- 建筑工地春节留守人员安全技术交底
- 默纳克-NICE1000技术交流-V1.0
- 蝴蝶兰的简介
- 老年人心理健康量表(含评分)
评论
0/150
提交评论