SIMULINK仿真连续系统建模

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

SIMULINK仿真——连续系统建模simulink模块操作•1、向量化模块和标量扩展1)向量化模块在SIMULINK库中的几乎所有模块都是所谓的向量化模块。向量化模块输入量和输出量之间的关系是符合数学规则的向量关系,式中x1,x2,…,xn可以是标量或向量,但所有向量必须长度相同。),...,,(21nxxxFy•2)标量扩展标量扩展是向量化模块执行符合规则运算所必需具备的自适应能力。所谓标量扩展,是指将一个标量值转换为一个适当长度的向量,该向量的各元素值等于原来的标量值。标量扩展包含:输入的标量扩展及参数标量扩展。•例:演示“求和”模块的向量处理能力:输入扩展。•本例假设“求和”模块有2个输入端:一个输入三元向量[123],另一个输入标量4,该模块执行功能的数学表达式为:[123]+4=[567]。在此,“求和”模块的第2个输入被扩展。相应的SIMULINK方块图如下图:•例:演示“增益”模块的向量处理能力:参数扩展。•本例假设“增益”模块有一个输入三元向量[123]。该模块执行功能的数学表达为:[123]*0.5=[0.511.5]。相应的SIMULINK方块图见图:信号线操作•1、产生连线•2、信号线的分支和折曲1)分支的产生在实际模型中,一个信号往往需要分送到不同模块的多个输入端,此时就需要绘制分支线(Branchline)。比如反馈控制系统中反馈线的绘制就要使用分支操作产生。分支线的绘制步骤如下:将光标指向分支线的起点(即一已存在信号线上的某点);按住[ctrl]键,再按下鼠标左键;拖动鼠标,直至分支线的终点处,释放鼠标按钮。•2)信号线的折曲在构作方块图模型时,有时需要使两模块间的连线转向,以让出空白,绘制其他东西。产生“折曲”的过程是:选中已存在的信号线,将光标指向待折处,按住shift键,再按下鼠标左键,拖动鼠标,至适合处,释放鼠标。3)折点的移动移动折点的方法是:选中折线,将光标指向待移的折点处,当光标变为一个小圆圈时,按下鼠标左键并拖动鼠标至希望处,释放鼠标。•3、插入模块如果一个模块只有一个输入口和一个输出口,那么该模块可以直接被插入到一条信号线中间去。4、信号线标识(label)添加标识:双击需要添加标识的信号线,弹出一个空白的文字填写框。在其中输入文本,作为对该信号线的标识。输入结束后,只需将光标移出该编辑框,点击鼠标左键即可。修改标识:点击需要修改的标识,原标识四周出现一个编辑框,此时即可修改标识。移动标识:点击标识,待编辑框出现后,将光标指向编辑框,按下鼠标后拖动至新位置。•复制标识:类似于移动标识,只是要求同时按下ctrl键,或者改用鼠标右键操作。•删除标识:点击标识,待编辑框出现后,双击标识使得整个标识被全部选中,按“delete”键。常用的Source库信源名称模块形状功能说明Clock仿真时钟输出每个仿真步点的时刻Constant恒值输出数值可设置FromFile从文件读数据从MAT文件获取信号矩阵。注意:信号以行方式存放。第一行是时间,其余每行存放一个信号序列。名称模块形状功能说明Fromworkspace从工作内存读矩阵数据以列方式存放信号的信号矩阵[TU]必须存在于MATLAB工作空间。T为单调递增的时间列向量;U是与T“行数”相等的矩阵,每列存放一个信号序列。SignalGenerator信号发生器可产生正弦、方波、锯齿波、随机波Sine正弦波输出可设置幅值、相位、频率Step阶跃输出可设置阶跃时刻,阶跃前后的幅值。常用的Sink库信宿名称模块形状功能说明Display数值显示Format栏设置显示数值格式;Decimation栏设置显示数据的抽选频度。Scope示波器显示实时信号Stop终止仿真可接受向量输入,任何向量非零时,终止整个仿真。常与关系模块配用。名称模块形状功能说明ToFile把数据保存为文件以行方式保存时间或信号序列;Filename栏可指定信号矩阵名;Decimation设置记录额度。n为每隔(n-1)点记录;缺省为每点记录。常与时钟Clock配用,以获得仿真时间序列。Toworkspace把数据写成矩阵以列方式保存时间或信号序列;Maximumnumberofrows栏限定存储的最大数据点数。若送入数据过多,则自动清除老数据。若设inf,则可保存全部数据。XYGraph显示X-Y图形利用MATLAB图形窗显示X-Y曲线。纵横坐标范围都可设置。连续系统建模•所谓连续时间系统,是指可以用微分方程来描述的系统。现实世界中的多数物理系统都是连续时间的。连续系统可以分为两类:线性的和非线性的。•用来建模连续系统的模块大多位于SIMULINK模块组队Continuous、Math以及Nonlinear模块库中。积分模块直接构造微分方程求解模型•例:假设从实际自然界(力学、电学、生态等)或社会中,抽象出有初始状态为0的二阶微分方程,u(t)是单位阶跃函数。•本例演示如何用积分器直接构搭求解该微分方程的模型。•步骤:•1)改写微分方程:•把原方程改写为:)(2.04.02.0xtuxxxxtux4.02.0)(2.0•利用积分模块构造微分方程求解模型的核心思想是:经积分作用得,再经积分模块作用得到x。而和x经代数运算又产生xxxxx•按上图构造仿真模型。对各模块进行如下配置:•u(t)输入模块:它的steptime设置为0。模块名称由原来的Step改为St。•Gs增益模块:增益参数Gain设置为0.2。•求和模块:其图形形状Iconshape选择rectangular,使模块呈矩形。符号列表Listofsigns设置为+--。•积分模块:只是把他们的名称分别改为Int1,Int2。•G1和G2增益模块:它们的方向旋转可以借助菜单[Format:RotateBlock]实现。•Scope示波器:先双击该模块,出现示波窗;点击工具图标,引出参数设置页;在Datahistory页中,勾选Savedatatoworkspace。这将送入示波器的数据同时被保存在MATLAB基本空间的缺省名为ScopeData的构架数组中。•Clock模块:产生仿真时间数据,仅供Toworkspace模块用。•Mux模块:模型中的位移数据x与时间数据t组合成向量。•Toworkspace模块:专为演示而设置。位移数据x与时间数据t将以Variablename中的变量名称保存在MATLAB工作空间。•在模型窗口中选中菜单[simulation:Parameters],打开仿真参数设置窗;在Solver页中,把仿真的停止时间Stoptime设置为20。又为演示需要,在WorkspaceI/O页上,勾选Time和States栏,使模型仿真中产生的时间数据以tout,状态以xout名称保存在MATLAB工作空间。•进行仿真,在示波器窗口可以看见x的变化曲线。•注意:用户在实际使用时,可据具体环境,采用以上任何一种方式保存仿真数据。换句话说,以上三组数据中的任何一组都可独立地供用户作进一步分析时使用。下面就演示如何利用示波器数据ScopeData绘制出所需的图形。•clf•tt=ScopeData.time•xx=ScopeData.signals.values•[xm,km]=max(xx)•plot(tt,xx,'LineWidth',4),holdon•plot(tt(km),xm,'b.','MarkerSize',36),holdoff•利用存放在MATLAB工作空间中的仿真数据所绘制的曲线如下:非线性系统•在实际中,严格意义上的线性系统很少存在,大量的系统或器件都是非线性的。为了提高仿真能力,SIMULINK库中包含了很多典型的非线性模块,如间歇性线性模块Backlash、继电器非线性模块Relay,死区非线性模块Deadzone等。下面以算例形式介绍非线性系统仿真模型的创建和使用。•例:物理背景:如图所示喷射动力车的定位控制问题。要求设计一个控制器,其目标是:当车辆的位移和速度为正时,控制器点燃右发动机;当车辆的位移和速度为负时,控制器点燃左发动机,直至车辆停止在坐标原点。xFm装置左右喷射发动机的车辆示意图•1)根据车辆的动态方程,构作基本仿真模型在阻力忽略不计的假设下,据牛顿定理可写出。又设喷射力F=1,车质量m=5,初始条件是,Fxm0)0(x1)0(x•图中各模块的设置为:•Sum1求和模块:设置符号列表为--。•Sign符号模块:它是参数固定的模块。当输入为正(或负)时,输出是+1(或-1);当输入为0时,输出也为0。•G1增益模块:据F/m=0.2,所以取增益为0.2。•Int1积分模块:它的输入是加速度,输出是速度。初始值为0。•Int2积分模块:它的输入是速度,输出是位移。初始值为1。•XYGragh绘图器:它的上、下端口分别作为图形坐标的横、纵坐标变量。•2)为观察仿真时间进程,引入仿真时钟显示。这部分功能的实现相对简单,且与基本仿真模型没有信号线连接。它由时钟Clock和数值显示器Display构成。•3)为模仿“车辆速度与位移小于某阈值时被认为控制目标达到”,引入仿真终止环节。就本例而言,假设时,认为控制目标达到,于是终止仿真。执行这部分功能的模型如图,01.0xx具体的模块设置如下:Abs1和Abs2模块:这种模块无须设置,输出总等于输入的绝对值。Sum2模块:符号全用+。CC常数模块:它代表阈值0.01。RO运算模块:本例设置该模块的关系运算为=。这样当(上端口值=下端口值)成立时,该模块输出为1。•Stop模块:它被固定设置为——当输入非零时,终止整个模型的仿真。•4)为模仿“符号切换的非瞬时性”,本例采用“定步长”Solver解算器•考虑到“符号变化时,喷射力F不可能瞬时产生的物理实际”,引入定步长Solver。如果切换时间设为0.05时间单位,那么操作步骤为:选中模型窗菜单[Simulation:Parameters];在仿真参数设置窗的Solver页中,选择SolverType为Fixedstep,具体解算器时ode5;再在Fixedstepsize栏中填写0.05;(在不加其他干预情况下)解算器的可能最长工作时间Stoptime为200。•5)为便于分析接近原点时的颤振现象,通过模型窗I/O设置保存仿真数据•选中模型窗菜单[Simulation:Parameters],在仿真参数设置窗的WorkspaceI/O页中,勾选Time栏State栏。•6)仿真操作和仿真结果观察•可以看到位移和速度都慢慢地趋近于0。•7)保存数据的利用和分析•为看清接近原点时的振颤现象,利用保存数据tout和xout画出相轨迹的指令如下:•plot(xout(:,1),xout(:,2))•gridon,axis([-0.2,1,-1,0.2]),axissquare•xout(:,1)•xlabel('\fontsize{14}位移')•ylabel('\fontsize{14}速度')任意非线性模块及其应用•在SIMULINK库中,除一些固定形式的模块外,还有若干函数形式可以由用户根据需要定义的“任意函数”模块,它们的模块形状见下图:•Fcn函数模块:该模块的输入可以是标量或向量,但输出一定是标量。对话窗只有一个填写栏。该栏中书写的表达式必须遵循三个规则:1)表达式符合C语言格式,执行的是标量运算,计算结果就是模块的输出。2)模块输入是标量时,必须用u变量名;输入是向量时,必须用u[1],u[2]等向量元素名。3)表达式中引用的其他标量形式参量必须存在于MATLAB基本空间中。•MATLABAfcn函数模块:该模块的输入输出都可以是标量或向量。对话框只有两个填写栏。第一栏填写符合MATLAB规则的表达式。第二栏填写输出量的维数(outputdimensions)。该模块可以进行的运算比Fcn模块复杂,但速度较慢。•Look-UpTable函数模块:一维查表函数模块。在其对话框中,给定“表格函数

1 / 53
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功