1、12022-11-256.3 连续系统的数字仿真n6.3.1 利用Simulink菜单命令进行仿真n6.3.2 利用MATLAB的指令操作方式进行仿真n6.3.3 模块参数的动态交换22022-11-256.3.1 仿真运行n非常方便,直观;可以以示波器的方式进行仿真结果的输出与显示n也可以将仿真结果保存到MATLAB工作空间的变量中,以待进一步处理。n对框图模型本身和数值算法及参数的选择都可以很方便地进行修改和操作。n启动仿真:按工具栏的启动图标n仿真的终止或中断:按工具栏的终止图标,按暂停图标32022-11-25仿真参数的配置nSimulationconfiguration parame
2、tersn仿真起始和终止时刻的设定;n仿真步长的选择;n仿真算法的选择;n是否从外界获得数据;n是否向外界输出数据Scope1sIntegrator2In21In142022-11-251 解算器solverInsimulationconfiguration parametersn仿真时间设置(simulation time):start time缺省为0,stop time:缺省10sn解算器(solver options):type:变步长和定步长,缺省是变步长的ode45解算器仿真算法;solver选项:仿真算法n变步长连续解算器:max step size:设置最大仿真步长,min s
3、tep size:设置最小仿真步长,initial step size:设置初始仿真步长,zero crossing control:进行系统状态变量不连续点的零穿越检查,relative tolerance 设置相对误差容许限,absolute tolerance:设置绝对误差容许限52022-11-25解算器solverII-变步长离散解算器n解算器variable-step,解算器仿真算法:discrete62022-11-25解算器solverIII-定步长(fixed-step)解算器nperiodic sample time constraint:规定由仿真模型定义的采样时间约束n
4、fixed-step size:设置定仿真步长的数值ntasking mode for periodic sample time:设置任务模式:单任务适用于具有相同采样速率的情况,多任务模式用于模型具有不同采样速率的情况;auto模式表示系统可根据模型中的采样速率是否相同,自动选择单或多任务模式。72022-11-25解算器算法及选择I-变步长算法node45-基于龙格库塔法的四、五阶单步变步长算法,单步法,对大多数系统有效,最常用;node23-基于龙格库塔法的二、三阶单步变步长算法,对宽误差限和存在轻微刚性的系统比oed45更有效一些;node113-可变阶次的Adams-Bashfort
5、h-Moulton PECE多步算法,比ode45更适合于误差要求更严格的情况,适用于光滑、非线性、时间常数变化范围不大的系统;node15s-可变阶次的数值微分公式多步算法,可以解算刚性问题或在用ode45时仿真失败或不够有效时采用;82022-11-25node23s-基于修正的Rosenbrock公式单步算法,适用于误差容许范围较宽的情况,对于一些用ode15s不是很有效的刚性系统,可以有效解决;node23t-基于梯形规则的一种自由插补实现算法,可以解算适度刚性且需要没有数字阻尼的结果问题;node23tb-使用TR-BDF2来实现的,基于二阶隐式龙格库塔公式;ndiscrete-不含
6、积分运算的变步长算法,适用于纯离散系统,此时系统会自动选择该算法 92022-11-25解算器算法及选择II-定步长算法node5-定步长ode45算法;node4-四阶龙格库塔法;node3-定步长ode23算法;node2-Henu方法,即改进欧拉法;node1-即欧拉法,是一种最简单的算法,精度最低,仅用来验证结果;ndiscrete(fixed-step)-不含积分运算的定步长算法,适用于纯离散系统,此时系统会自动选择该算法102022-11-25仿真数据输入/输出Inload from workspace:Input:从工作空间导入数据到输入模块(In)中,数据类型包括:数组、时间表
7、达式、结构体和时间串如果simulink模型中使用了“输入模块”,就必须选中该模块并填写所导入数据的变量名;缺省变量名为t,u,t为时间,u为时间对应的数值;112022-11-25仿真数据输入/输出Iinitial state:用于设置由input选项导入simulink模型输入模块In变量的初始值;选中此选项,无论建立该模型的积分模块设置过什么样的初始值,都可将MATLAB工作空间已存在的变量强制作为simulink模型“输入模块”变量的初始值;缺省名为xinitial122022-11-25例:从MATLAB工作空间导入数据应用实例e6_3.mdlnt1=0:0.01:10;nu1=si
8、n(t1),cos(t1);nx0=2,2;n然后设置load from workspacer(t)c(t)5s(s+1)Zero-Pole0.456s+10.114s+1Transfer Fcn0.5Gain132022-11-25仿真数据输入/输出IInSave to workspace:将仿真结果数据保存至MATLAB工作空间中;time:用于设置保存仿真运行时间的变量名;states:用于设置保存仿真运行的状态变量名;output:用于设置保存仿真运行的输出数据变量名;若使用了输出模块(out),则必须选中该选项,并填写变量名final state:用于设置保存仿真运行的最终状态变量名
9、;142022-11-25仿真数据输入/输出IInsave option:数据保存选项limit data points to last:decimation:用于设置解点保存频度,每隔n-1个点保存一个点format:用于设置数据保存格式,数组array、结构体structure和时间结构体structure with timeoutput option:用于设置产生附加输出信号数据,只适用于变步长解算器。nrefine output:平滑输出;nproduce additional output:修改时间步长平滑输出;nproduce specified output only:在给定时间
10、内产生输出152022-11-25FormatnArray:将输出结果分别存储在save to workspace域中各编辑框命名的矩阵中,默认值分别为tout,xout,yout,xFinal,矩阵的每一列与模型的一个输出或状态对应,第一行与初始时间相对应。nStructure with time:保存模型的结果到一个结构中,其名字由Save to workspace域中各编辑框命名的,有两个顶层字段:时间和信号。时间字段包含仿真时间向量,信号字段包含子结构数组,nStructure:不保存仿真时间162022-11-25nRefine output:这个选项可以理解成精细输出,其可以在re
11、fine factor设置仿真时间步间插入的输出点数。精细输出只能在变步长模式中才能使用,并且在ode45效果最好nProduce additional output:它允许用户直接指定产生输出的时间点。一旦选择了该项,则在它的右边出现一个output times编辑框,在这里用户指定额外的仿真输出点nProduce specified output only:simulink只在指定的时间点上产生输出。为此解法器要调整仿真步长以使之和指定的时间点重合。这个选项在比较不同的仿真时可以确保它们在相同的时间输出172022-11-25例:P145,例6-6n负反馈n阶跃输入模块的起始时间改为0;n
12、终止仿真时间改为20n输出时间变量为t,输出变量为y,选择保存选项为矩阵的形式Arraynplot(t,y)ne6_17.mdl182022-11-25例:P145,例6-7nTo Workspace是由接受模块库复制的,变量名分别改为y和t,并选择保存类型为列矩阵的形式Arrayn负反馈n阶跃输入模块的起始时间改为0;n终止仿真时间改为20nplot(t,y)ne6_17_1.mdl192022-11-25例:P146,例6-8n利用Simulink对以下系统进行仿真。当输入为正弦信号时,观测输出信号的变化。ne6_5.mdl NoImage202022-11-256.3.2 利用MATLA
13、B的指令操作方式进行仿真nt,x,y=sim(model,tf,options,ut)nt,x,y1,y2,yn=sim(model,tf,options,ut)Model模型文件名,必须指定,其余参数可默认;Tf仿真时区,0,tf或t0,tfOptions可选仿真参数,用simset命令指定Ut外部输入函数T取积分值的时间点序列向量X系统的状态序列矩阵Y系统输出序列矩阵,每一列表示一个输出的时间序列212022-11-256.3.3 模块参数的动态互换n在MATLAB工作空间中定义变量例 6-11 P148e6_6.mdl在工作空间中运行以下内容:nA=-0.3 0 0;2.9-0.62-2
14、.3;0 2.3 0;nb=1;0;0;C=1 1 0;1-3 1;d=0;1;x0=1;1;1;222022-11-25使用set_param()指令传递数据nSet_param(Name,Parameter1,Value1,Parameter2,Value2,)其中,Name是系统模块名,Parameter是待修改的参数名,Value是新指定值。n例6-12,P150,e6_7.mdl,e6_8.mclearopen(e:computer simulationch6e6_7.mdl);set_param(e6_7/Gain,Gain,2);t,x,y=sim(e6_7,10);plot(t
15、,y(:,1),:b,t,y(:,2),-r);legend(y1,y2)232022-11-25几个例子n结构图数学模型n例:三阶控制系统结构图如图所示,建立系统的simulink模型,并运行模型5/(s(s+1)(0.456s+1)/(0.114s+1)0.5-r(t)c(t)242022-11-25n建立模型e6_2.mdln参数设置n运行n保存数据应用e6_2m.mx 252022-11-25微分方程数学模型:例n考虑如图所示的强制阻尼二阶系统。图中,小车受外力为F,小车位移为x。设小车质量m=5,弹簧弹性系数k=2,阻尼系数f=1。并设系统的初始状态为静止在平衡点处,即 (0)=x(
16、0)=0,外力函数为幅值等于1的阶跃量。仿真此小车系统的运动。x mkxx f F mFkfx262022-11-25列写微分方程n根据牛顿第二定律xxxF 52xxtuxxFx4.02.0)(4.02.02.0 xu(t)x_tTo WorkspaceScope1sIntegrator11sIntegrator0.4Gain10.2GainClockAddxx272022-11-25利用积分模块构建Simulink模型e6_4.mdl,e6_4m.mr(t)c(t)MATLABFunctionMATLAB Fcn10.2s+1G2(s)50.1s +s2G1(s)282022-11-25非线
17、性连续时间系统I典型非线性模块的应用n具有饱和非线性特性的控制系统如图所示,通过仿真研究K=15和K=5时系统的运动ne6_satur.mdlK/s(0.1s+1)(0.2s+1)1k=2292022-11-25非线性连续时间系统II任意函数模块及其应用nFcn模块nMATLAB Fcn模块nLook-up table模块302022-11-25Fcn模块n位于 User Define Function模块组中;nExpression必须填写函数表达式,遵循以下规则:n模块的输入可以是标量或向量,但输出必须是标量,标量输入用u作为变量名,向量输入用u(1),u(2)等向量作为元素名n表达式符合
18、C语言格式,执行的是标量运算,计算结果就是模块的输出n表达式中引用的其它标量形式的参量必须存在于MATLAB工作空间中P157,例6-16,e6_18.mdl312022-11-25MATLAB Fcn模块n位于 User Define Function模块组中;nMATLAB Fcn填写函数表达式或函数文件名,遵循以下规则:n模块的输入输出都可以是标量或向量;n表达式的书写规则与Fcn模块相同,函数编写符合M函数文件基本结构及规则n表达式或函数的输出必须与该模块的输出维数匹配,否则就会出现错误。322022-11-25lookup table模块n位于查表模块组中;n有1维,2维,n维之分;
19、n可根据所给表格对输入进行插补或外推运算332022-11-25例:将上一个例子的饱和非线性用MATLAB Fcn函数模块实现n编写bh.m文件并存放在与e6_9.mdl相同目录下,将该目录设置为当前路径NoImage342022-11-25例:汽车速度控制系统的设计与仿真n汽车在斜坡上行驶,要求设计一个简单的比例控制器,使汽车能以设定的速度运动。xFeFwFhNoImage352022-11-25建立汽车运动的数学模型n根据牛顿第二定律:nm为汽车质量,m=100;nx是汽车的位移;nFe是引擎动力,最大分别为1000,-2000nFw是空气阻力,与轿车速度的平方成正比,第二项考虑阵风的影响nFh是汽车重力分量NoImage362022-11-25汽车行驶模型e6_11.mdlNoImage372022-11-25比例控制器e6_11_2.mdlNoImage382022-11-25整体模型e6_11_3.mdlNoImage
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。