1、计算机仿真技术第五讲第五讲 基于基于MATLAB/Simulink的建模与仿真的建模与仿真u MATLAB软件简介u MATLAB仿真实例u 什么是Simulink?u Simulink模块库简介u Simulink模型的建立方法u Simulink建模与仿真举例u 小结小结u MATLAB软件简介软件简介?MATLAB是一门计算机编程语言,是一种科学计算软是一门计算机编程语言,是一种科学计算软件,件,取名来源于取名来源于Matrix Laboratory,本意是专门以矩阵本意是专门以矩阵的方式来处理计算机数据的方式来处理计算机数据.MATLAB将高性能的数值计算将高性能的数值计算和可视化集成
2、在一起,并提供了大量的内置函数,被广泛和可视化集成在一起,并提供了大量的内置函数,被广泛应用在科学计算,信息处理,控制系统等领域的分析,仿应用在科学计算,信息处理,控制系统等领域的分析,仿真和设计工作。真和设计工作。MATLAB的功能包括:数值分析,数值和符号计算,的功能包括:数值分析,数值和符号计算,工程和科学绘图,通讯和控制系统的设计与仿真,数字图工程和科学绘图,通讯和控制系统的设计与仿真,数字图像与信号处理,财务与金融工程等。像与信号处理,财务与金融工程等。u MATLAB软件简介软件简介?MATLAB软件的典型应用领域:软件的典型应用领域:v科学研究;科学研究;v工程技术应用研究工程技
3、术应用研究vCAI(Computer Aided Instruct)v数学实验数学实验(Mathematical Experiment)v数学建模数学建模(Mathematical Modeling)clear删除工作空间中的所有变量!系统不会要求你确认这删除工作空间中的所有变量!系统不会要求你确认这个命令。所有变量都被清除且不能个命令。所有变量都被清除且不能再恢复再恢复。对于简单的问题,在对于简单的问题,在MATLAB提示符下输入命令是快速有提示符下输入命令是快速有效的。然而当命令数增加或希望改变一个或几个变量的值,效的。然而当命令数增加或希望改变一个或几个变量的值,然后重新执行一系列命令时
4、,在然后重新执行一系列命令时,在MATLAB提示符处键入命令提示符处键入命令就非常麻烦了。对这个问题就非常麻烦了。对这个问题MATLAB提供了一种逻辑解决方提供了一种逻辑解决方案。案。它允许用户把它允许用户把MATLAB命令放在一个简单的文本文件中,命令放在一个简单的文本文件中,然后告诉然后告诉MATLAB打开文件并执行命令,如同在打开文件并执行命令,如同在MATLAB提提示符处键入命令一样。这些文件被称为示符处键入命令一样。这些文件被称为脚本文件脚本文件或简单地称或简单地称为为M文件文件。M文件是指脚本文件以扩展名文件是指脚本文件以扩展名.m结尾结尾。u MATLAB软件简介软件简介?MAT
5、LAB提供三种控制流结构的语句:For-end循环While-end循环If-Else-End结构u MATLAB软件简介软件简介?For-end循环的基本作用是以固定的和预定的次数重复一组特定的命令。一般形式是:for n=循环控制量的范围commandsendu MATLAB软件简介软件简介?说明:在for和end语句之间的命令串commands按矩阵(array)中的每一列执行一次。在每一次迭代中,n被指定为循环控制量的范围内的下一列。例如:for n=1:10 x(n)=sin(n*pi/10);end这个循环体的作用是:对n等于1到10,求所有语句的值,直到下一个end语句。第1次通
6、过For循环n=1,第2次,n=2,如此继续,直到n=10。在n=10以后,For循环结束,然后求end语句后面的任何命令值qFor循环不能用For循环内重新赋值循环变量n来终止。q在For循环中循环控制量的范围可以是任何有效的MATLAB矩阵。比如data=11 9 45 6;7 16-1 5;for n=data x=n(1)-n(2)end这时程序的输出有四个数值,分别是矩阵data的两列相减的结果x=4 x=-7x=46 x=1For循环可按需要嵌套,即For循环体内的命令组中可以出现另一个For循环体,这体现了For循环体也是命令组。比如for n=1:5 for m=5:-1:1
7、A(n,m)=n2+m2;Endend While-end循环以不定的次数求一组语句的值。Whil-end 循环的一般形式是:while expression(控制表达式)commandsend只要在控制表达式(expression)里的所有元素为真,就执行While和end语句之间的命令串(commands)。u MATLAB软件简介软件简介?说明:控制表达式的值未必是一个标量值,说明:控制表达式的值未必是一个标量值,矩阵值也同样有效。在矩阵情况下,所得到矩阵值也同样有效。在矩阵情况下,所得到矩阵的所有元素必须都为真。具体示例:矩阵的所有元素必须都为真。具体示例:num=0;EPS=1;wh
8、ile(1+EPS)1EPS=EPS/2;num=num+1;end这段这段MATLAB代码最后在代码最后在num=53时停止。时停止。IF-ELSE-END结构提供有条件地执行一些特定的命令序列的方式。最简单的IF-ELSE-END结构是:if expression(条件控制表达式)commandsend如果在条件控制表达式(expression)中的所有元素为真(非零),那么就执行if和end语句之间的命令串(commands)。在表达式包含有几个逻辑表达式时,即使前一个表达式决定了表达式的最后逻辑状态,仍要计算所有的子表达式。u MATLAB软件简介软件简介?一般的有两个选择的IF-EL
9、SE-END结构是:if expression(条件控制表达式)commands evaluated if Trueelsecommands evaluated if Trueend在这里,如果条件控制表达式(expression)为真,则执行第1组命令;如果表达式是假,则执行第2组命令。有三个或更多选择时的IF-ELSE-END结构的形式:if expression1commands evaluated-if expression1 is Trueelseif expression2commands evaluated-if expression2 is Trueelseif express
10、ion3commands evaluated-if expression3 is Trueelseif elsecommands evaluatedif on other expression is Trueend最后这种有三个以上选择的IF-ELSE-END形式,依次检查各表达式,只执行第一个表达式为真的命令串,接下来的关系表达式不检验,跳过其余的IF-ELSE-END结构。最后的else命令可有可无。break是一种特殊的控制结构,基本作用是无条件跳出临近的循环体,即结束For循环和While循环的执行。u MATLAB软件简介软件简介?学习和使用常用软件MATLAB的一些基本语句和功能来
11、验证或观察函数的变化,实现函数的可视化计算01000200030004000500060007000135791113151719StockQuantitySellQuantityu MATLAB软件简介软件简介?u MATLAB仿真举例仿真举例设系统方程设系统方程02yy,y(0)=1试用试用Euler法求其数值解(取步长法求其数值解(取步长h=0.1,0t1)试编写试编写matlab程序求其数值解。程序求其数值解。设系统方程设系统方程02yy,y(0)=1试用试用Euler法求其数值解(取步长法求其数值解(取步长h=0.1,0t1)试编写试编写matlab程序求其数值解。程序求其数值解。E
12、uler迭代公式:迭代公式:yn+1=yn-0.1yn2u MATLAB仿真举例仿真举例Euler迭代公式:迭代公式:yn+1=yn-0.1yn2,y(0)=1(取步长(取步长h=0.1,0t1)u MATLAB仿真举例仿真举例Euler迭代公式:迭代公式:yn+1=yn-0.1yn2,y(0)=1t=0:0.1:1;length=size(t,1);y=zeros(size(t);y(1)=1;for n=1:1:length-1y(n+1)=y(n)-0.1*y(n)2endplot(t,y)(取步长(取步长h=0.1,0t1)u MATLAB仿真举例仿真举例运行结果:运行结果:y=1.0
13、000 0.9000 0.8190 0.7519 0.6954 0.6470 0.6052 0.5685 0.5362 0.5075 0.4817u MATLAB仿真举例仿真举例u 作业作业设系统方程设系统方程02yy,y(0)=1试用二阶龙格库塔法求其数值解(取步长试用二阶龙格库塔法求其数值解(取步长h=0.1,0t1)试编写试编写matlab程序求其数值解。程序求其数值解。二阶龙格库塔法迭代公式:二阶龙格库塔法迭代公式:),(),()(2121211hKyhtfKytfKKKhyymmmmmm请在第二次实验时请在第二次实验时上机验证结果。上机验证结果。Simulink是是MATLAB提供的
14、实现动态系统建模和仿真的提供的实现动态系统建模和仿真的一个软件包,它让用户把精力从编程转向模型的构造一个软件包,它让用户把精力从编程转向模型的构造。Simulink一个很大的优点是为用户省去了许多重复的代码一个很大的优点是为用户省去了许多重复的代码编写工作。编写工作。Simulink 支持线性,非线性系统,连续系统,离支持线性,非线性系统,连续系统,离散系统,或者混合系统的建模与仿真。同时它也支持具有不同散系统,或者混合系统的建模与仿真。同时它也支持具有不同部分拥有不同采样率的多种采样速度的系统仿真。部分拥有不同采样率的多种采样速度的系统仿真。Simulink的启动方式有两种:的启动方式有两种
15、:(1)在工具栏点击在工具栏点击Simulink图标;图标;(2)在在Command Window中输入:中输入:Simulinku 什么是什么是Simulink?u Simulink模块库简介模块库简介 SIMILINK模块库按功能进行分类:连续模块库按功能进行分类:连续模块、离散模块、查表模块、数学模块、非线模块、离散模块、查表模块、数学模块、非线性模块、信号通路模块、接收器模块、输入源性模块、信号通路模块、接收器模块、输入源模块、其他常用方块组及工具箱、特别模块。模块、其他常用方块组及工具箱、特别模块。u Simulink模块库简介模块库简介Derivative:输入信号微分输入信号微分
16、Integrator:积分器积分器State-Space:线性状态空间系统线性状态空间系统 模型模型Transfer-Fcn:线性传递函数模型线性传递函数模型Zero-Pole:以零极点表示的传递以零极点表示的传递 函数模型函数模型Memory:存储上一时刻的状态值存储上一时刻的状态值Transport Delay:输入信号延时输入信号延时一个给定时间再输出一个给定时间再输出Variable Transport Delay:输入输入信号延时一个可变时间再输出信号延时一个可变时间再输出 连续模块连续模块(Continuous)Zero-Order Hold:零阶采样保持器零阶采样保持器Unit
17、Delay:一个采样周期的延时一个采样周期的延时Discrete-time Integrator:离散时间积分器离散时间积分器Discrete State-Space:离散状态空间系统模型离散状态空间系统模型Discrete Filter:离散滤波器离散滤波器Discrete Transfer-Fcn:离散传递函数模型离散传递函数模型Discrete Zero-Pole:以零极点表示的离散传递函数模型以零极点表示的离散传递函数模型First-Order Hold:一阶采样保持器一阶采样保持器 离散模块(离散模块(Discrete)Look-Up Table:建立输入信号的查询表建立输入信号的查
18、询表(线性峰值匹配)(线性峰值匹配)Look-Up Table(2-D):建立两个输入信号的建立两个输入信号的查询表(线性峰值匹配)查询表(线性峰值匹配)Fcn:用户自定义的函数(表达式):用户自定义的函数(表达式)MATLAB Fcn:利用利用MATLAB的现有函数的现有函数S-Function:调用自编的调用自编的S函数的程序函数的程序 Look-up Table(查表模块)(查表模块)User-defined function(用户定义函数模块用户定义函数模块)Sum:加减运算加减运算Product:模块输入的乘除运算模块输入的乘除运算Dot Product:点乘运算点乘运算Gain:比
19、例运算比例运算Math Function:包括指数函数、包括指数函数、对数函数、求平方等常用数学函数对数函数、求平方等常用数学函数Trigonometric Function:三角函数,三角函数,包括正弦、余弦、正切等包括正弦、余弦、正切等MinMax:最小值或最大值运算最小值或最大值运算 Math operations(数学模块)(数学模块)Abs:取绝对值取绝对值Sign:给出符号函数给出符号函数Rounding Function 圆整函数圆整函数Combinatorial Logic:建立真值表建立真值表Logical Operator:逻辑运算逻辑运算Relational Operat
20、or:关系运算关系运算Complex to Magnitude-Angle:由复数输入转为幅值和相角输出由复数输入转为幅值和相角输出Complex to Real-Imag:由复数输入转为实部和虚部输出由复数输入转为实部和虚部输出Magnitude-Angle to Complex:由幅值和相角输入合成复数输出由幅值和相角输入合成复数输出Real-Imag to Complex:由实部和虚部输入合成复数输出由实部和虚部输入合成复数输出Rate Limit:变化速率限制变化速率限制Saturation:饱和输出,饱和输出,让输出超过某一值时能够饱和。让输出超过某一值时能够饱和。Quantizer
21、:离散化离散化Blacklash:滞环或间隙滞环或间隙Dead Zone:死区死区Relay:滞环继电器滞环继电器Switch:切换开关切换开关Manual Switch:手动选择开关手动选择开关Coulomb&Viscous Friction 库仑和粘滞摩擦库仑和粘滞摩擦 Discontinuous(非线性模块(非线性模块)Mux:将多个单一输入转化为将多个单一输入转化为一个复合输出。一个复合输出。Demux:将一个复合输入转化将一个复合输入转化为多个单一输出。为多个单一输出。Signal Routing(信号通路模块)(信号通路模块)Scope:示波器,显示信号曲线。示波器,显示信号曲线。
22、XY Graph:显示二维显示二维X-Y图形。图形。Out1:输出端口输出端口Display:显示数值显示数值To Workspace:将输出写入将输出写入MATLAB的工作空间。的工作空间。To File(.mat):将输出写入数据将输出写入数据文件。文件。Terminator:终止一个未连接终止一个未连接的输出端口的输出端口 Sinks(接收器模块)(接收器模块)In1:输入端口输入端口Constant:常数信号常数信号Signal Generator:信号发生器,产生任意波信号发生器,产生任意波形形Ramp:斜坡信号斜坡信号Sine Wave:正弦波信号正弦波信号 Step:阶跃波信号阶
23、跃波信号Repeating Sequence:重复信号重复信号Pulse Generator:脉冲发生器脉冲发生器Ground:搁置一个未连接的输入端口搁置一个未连接的输入端口Clock:时钟信号时钟信号From Workspace:来自来自MATLAB的工作空间。的工作空间。From File(.mat):来自数据文件。来自数据文件。Sources(输入源模块)(输入源模块)其他常用方块组及工具箱其他常用方块组及工具箱 Blocksets&Toolboxes Simulink extras(特别模块)(特别模块)2.Simulink Extras(Simulink 附加库)附加库)3.Com
24、munications Blockset(通信模块集通信模块集)4.Control System Toolbox(控制系统工具箱控制系统工具箱)5.DSP Blockset(数字信号处理模块集数字信号处理模块集)6.Dials&Gauges Blockset(面板和仪表模块集面板和仪表模块集)7.Fixed-Point Blockset(定点模块集定点模块集)8.Fuzzy Logic Toolbox(模糊逻辑工具箱模糊逻辑工具箱)9.MPC Blockset(MPC 模块集模块集)10.NCD Blockset(非线性控制设计模块集非线性控制设计模块集)11.Motorola DSP Blo
25、ckset(DSP模块集模块集)12.Neural Network Blockset(神经网络模块集神经网络模块集)13.Power System Blockset(电力系统模块集)电力系统模块集)SIMULINK的一些其它工具箱14.Real-Time Windows Target(实时窗口目标库实时窗口目标库)15.Real-Time Workshop(实时工作空间库实时工作空间库)16.System ID Blocks(系统辨识模块集系统辨识模块集)17.Stateflow(有限状态流程库有限状态流程库)18.Aerospace Blockset(航空模块集航空模块集)23.Data A
26、cquistion Toolbox(数据采集工具箱)数据采集工具箱)20.Signal Processing Blocks(信号处理工具箱信号处理工具箱)21.Image Acquistion Toolbox(图形采集工具箱)图形采集工具箱)22.RF Blockset(射频工具箱射频工具箱)23.Video and Image Processing Blocks图像处理工具箱图像处理工具箱新增工具箱:机构仿真工具箱 液压驱动工具箱例例1、考虑下图所示的简单的小车系统运动。、考虑下图所示的简单的小车系统运动。例例1、考虑下图所示的简单的小车系统运动。、考虑下图所示的简单的小车系统运动。忽略摩擦
27、力,运动微分方程为:例例1、考虑下图所示的简单的小车系统运动。、考虑下图所示的简单的小车系统运动。在matlab/simulink中搭建仿真模型:加入两个积分模块,第一个模块用来计算速度,第二个模块用来计算位移,可用模块图表示为:例例1、考虑下图所示的简单的小车系统运动。、考虑下图所示的简单的小车系统运动。假定F=sin(t)为正弦激励,m=0.5。求010s 区间内的系统位移响应曲线,仿真结果如下图:例例1、考虑下图所示的简单的小车系统运动。、考虑下图所示的简单的小车系统运动。若要求同时输出位移和速度,则模型框图为:例例1、考虑下图所示的简单的小车系统运动。、考虑下图所示的简单的小车系统运动
28、。仿真结果如下图:在模型窗口中,选中模块,则其在模型窗口中,选中模块,则其4个角会出现黑色标记。此时可以对个角会出现黑色标记。此时可以对模块进行以下的基本操作。模块进行以下的基本操作。1)移动:移动:选中模块,选中模块,按住鼠标左键按住鼠标左键将其拖曳到所需的位置即可。若要脱将其拖曳到所需的位置即可。若要脱离线而移动,可按住离线而移动,可按住shift键,再进行拖曳。键,再进行拖曳。2)复制:复制:选中模块,然后选中模块,然后按住鼠标右键进行拖曳按住鼠标右键进行拖曳即可复制同样的一个功即可复制同样的一个功能模块。能模块。3)删除:删除:选中模块,按选中模块,按Delete键即可。若要删除多个模
29、块,可以同时按键即可。若要删除多个模块,可以同时按住住Shift键,再用鼠标选中多个模块,按键,再用鼠标选中多个模块,按Delete键即可。也可以用鼠标键即可。也可以用鼠标选取某区域,再按选取某区域,再按Delete键就可以把该区域中的所有模块和线等全部键就可以把该区域中的所有模块和线等全部删除。删除。4)转向:转向:为了能够顺序连接功能模块的输入和输出端,功能模块有时需为了能够顺序连接功能模块的输入和输出端,功能模块有时需要转向。在菜单要转向。在菜单FormatFlip Block(Ctrl+I)旋转旋转180度,度,FormatRotate Block(Ctrl+R)顺时针旋转顺时针旋转9
30、0度。度。模块的处理模块的处理u Simulink模型的建立方法模型的建立方法5)改变大小:改变大小:选中模块,对鼠标移到角上出现选中模块,对鼠标移到角上出现,进行拖曳即可。进行拖曳即可。6)模块命名:模块命名:先用鼠标在需要更改的名称上单击一下,然后直接更改即先用鼠标在需要更改的名称上单击一下,然后直接更改即可。名称在功能模块上的位置也可以变换可。名称在功能模块上的位置也可以变换180度,可以用度,可以用FormatFlip Name来实现,也可以直接通过鼠标进行拖曳。来实现,也可以直接通过鼠标进行拖曳。Hide Name可以隐藏模块名称。可以隐藏模块名称。7)颜色设定:颜色设定:Forma
31、t Foreground Color改变模块的前景颜色,改变模块的前景颜色,Background Color改变模块的背景颜色;而模型窗口的颜色可以通过改变模块的背景颜色;而模型窗口的颜色可以通过Screen Color来改变。来改变。8)参数设定:参数设定:用鼠标双击模块,就可以进入模块的参数设定窗口,从而用鼠标双击模块,就可以进入模块的参数设定窗口,从而对模块进行参数设定。或点击鼠标右键,选择对模块进行参数设定。或点击鼠标右键,选择Block parameters 参数参数设定窗口包含了该模块的基本功能帮助。通过对模块的参数设定,就设定窗口包含了该模块的基本功能帮助。通过对模块的参数设定,
32、就可以获得需要的功能模块。可以获得需要的功能模块。模块的处理模块的处理u Simulink模型的建立方法模型的建立方法 SIMULINK模型的构建是通过用线将各种功能模块进行连接而构成的。模型的构建是通过用线将各种功能模块进行连接而构成的。1)用鼠标可以在功能模块的输入与输出端之间直接连线。用鼠标可以在功能模块的输入与输出端之间直接连线。2)线的分支:线的分支:l按住鼠标右键,在需要分支的地方拉出即可。按住鼠标右键,在需要分支的地方拉出即可。l或者按或者按住住Ctrl键,并在要建立分支的地方用鼠标拉出即可。键,并在要建立分支的地方用鼠标拉出即可。l或从输入端拉线到分支点或从输入端拉线到分支点
33、模块的连接模块的连接u Simulink模型的建立方法模型的建立方法l属性设定:选中模块,打开属性设定:选中模块,打开EditBlock Properties可以对模块进行属可以对模块进行属性设定。或鼠标右键选择性设定。或鼠标右键选择Block Propertiesl属性包括属性包括Description描述属性:对模块的说明文本描述属性:对模块的说明文本 Priority优先级属性:模块执行顺序优先级属性:模块执行顺序Tag标签属性:标签属性:Open function属性:通过它指定一个函数名,则当该模块被双击之后,属性:通过它指定一个函数名,则当该模块被双击之后,Simulink就会调用
34、该函数执行,这种函数在就会调用该函数执行,这种函数在MATLAB中称为回调函数中称为回调函数Attributes format string属性属性 属性的改变属性的改变u Simulink模型的建立方法模型的建立方法1.点击鼠标左键3.双击打开模块窗口2.点击鼠标左键新建u Simulink模型的建立方法模型的建立方法取取信号信号源源Sources/Step鼠标选中后拖拽到仿真窗口双击可弹出属性窗口编辑属性弹开右边模块窗口取取增益增益Math/Gain双击可弹出属性窗口编辑属性点击增益所在模块夹鼠标选中后拖拽到仿真窗口取传函取传函Continuous/Transfer Fcn双击可弹出属性窗
35、口编辑属性点击传函所在模块夹鼠标选中后拖拽到仿真窗口取取相加相加点点Math/Sum双击可弹出属性窗口编辑属性点击求和所在模块夹鼠标选中后拖拽到仿真窗口取取显示显示Sinks/Scope双击可弹出示波器窗口点击示波器所在模块夹鼠标选中后拖拽到仿真窗口点击示波器参数图标连接各元件;选择仿真参数,如停止时间等连接各元件;选择仿真参数,如停止时间等Simulation/Simulation parameters;开始仿真开始仿真Simulation/Start选择start或这里开始仿真点击右键,调整显示参数仿真结果显示仿真结果显示例例3、考虑下图所示的简单的小车系统运动。、考虑下图所示的简单的小车
36、系统运动。若要求同时输出位移、速度和加速度,则模型框图为:u Simulink建模与仿真举例建模与仿真举例例例3、考虑下图所示的简单的小车系统运动。、考虑下图所示的简单的小车系统运动。仿真结果如下图:例例4:考虑下图所示的简单的小车系统运动。考虑下图所示的简单的小车系统运动。例例4:考虑下图所示的简单的小车系统运动。考虑下图所示的简单的小车系统运动。运动微分方程为:动力方程变换为:例例4:考虑下图所示的简单的小车系统运动。考虑下图所示的简单的小车系统运动。在matlab/simulink中搭建仿真模型:例例4:考虑下图所示的简单的小车系统运动。考虑下图所示的简单的小车系统运动。位移曲线仿真结果
37、如下图:同时查看位移、速度、加速度仿真模型框图:同时查看位移、速度、加速度10s内仿真结果:若要同时查看位移、速度、加速度20s内仿真结果,该如何设置参数?第第1 步:设置仿真参数和选择解法器步:设置仿真参数和选择解法器 选择选择Simulation菜单下的菜单下的Parameters命令,就会弹出一个仿真参命令,就会弹出一个仿真参数对话框,它主要用三个页面来管理仿真的参数。数对话框,它主要用三个页面来管理仿真的参数。I.Solver页,它允许用户设置仿真的开始和结束时间,选择解法器,页,它允许用户设置仿真的开始和结束时间,选择解法器,说明解法器参数及选择一些输出选项。说明解法器参数及选择一些
38、输出选项。II.Workspace I/O页,作用是管理模型从页,作用是管理模型从MATLAB工作空间的输入工作空间的输入和对它的输出。和对它的输出。III.Diagnostics诊断页,允许用户选择诊断页,允许用户选择Simulink在仿真中显示的警告在仿真中显示的警告信息的等级。信息的等级。构建好一个系统的模型之后,接下来的事情就是运行模型,构建好一个系统的模型之后,接下来的事情就是运行模型,得出仿真结果。运行一个仿真的完整过程分成三个步骤:设置得出仿真结果。运行一个仿真的完整过程分成三个步骤:设置仿真参数,启动仿真和仿真结果分析。仿真参数,启动仿真和仿真结果分析。仿真方法与仿真参数的选择
39、仿真方法与仿真参数的选择u Simulink建模与仿真举例建模与仿真举例 Solver页页 Simulation time仿真时间:注意这里的时间是计算机仿真中对时间的一种表示,比如10秒的仿真时间,如果采样步长定为0.1,则需要执行100步,若把步长减小,则采样点数增加,那么实际的执行时间就会增加。一般仿真开始时间设为0,而结束时间视不同的因素而选择。Solver option解法选项:Type后面的第一个选项中指定仿真的步长类型,分Variable-step(变步长)和Fixed-step(固定步长)两种。变步长模式解法器变步长模式解法器有:有:ode45,ode23,ode113,ode
40、15s,ode23s,ode23t,ode23tb和和discrete。a)ode45:缺省值,四/五阶龙格库塔法,适用于大多数连续或离散系统,但不适用于刚性(stiff)系统。它是单步解法器,也就是,在计算y(tn)时,它仅需要最近处理时刻的结果y(tn-1)。一般来说,面对一个仿真问题最好是首先试试ode45。b)ode23:二/三阶龙格库塔法,它在误差限要求不高和求解的问题不太难的情况下,可能会比ode45更有效。也是一个单步解法器。c)ode113:是一种阶数可变的解法器,它在误差容许要求严格的情况下通常比ode45有效。ode113是一种多步解法器,也就是在计算当前时刻输出时,它需要
41、以前多个时刻的解。d)ode15s:是一种基于数字微分公式的解法器(NDFs)。也是一种多步解法器。适用于刚性系统,当用户估计要解决的问题是比较困难的,或者不能使用ode45,或者即使使用效果也不好,就可以用ode15s。e)ode23s:它是一种单步解法器,专门应用于刚性系统,在弱误差允许下的效果好于ode15s。它能解决某些ode15s所不能有效解决的stiff问题。f)ode23t:是梯形规则的一种自由插值实现。这种解法器适用于求解适度stiff的问题而用户又需要一个无数字振荡的解法器的情况。g)ode23tb:是TR-BDF2的一种实现,TR-BDF2 是具有两个阶段的隐式龙格库塔公式
42、。h)discrtet:当Simulink检查到模型没有连续状态时使用它。u Simulink建模与仿真举例建模与仿真举例固定步长模式解法器有:固定步长模式解法器有:ode5,ode4,ode3,ode2,ode1和和discrete。a)ode5:缺省值,是ode45的固定步长版本,适用于大多数连续或离散系统,不适用于刚性系统。b)ode4:四阶龙格库塔法,具有一定的计算精度。c)ode3:固定步长的二/三阶龙格库塔法。d)ode2:改进的欧拉法。e)ode1:欧拉法。f)discrete:是一个实现积分的固定步长解法器,它适合于离散无连续状态的系统。u Simulink建模与仿真举例建模与
43、仿真举例Fixed step size固定步参数:缺省情况下,步长自动地确定,它由值auto表示Mode(固定步长模式选择)Multitasking:多任务模式,当simulink检测到模块间非法的采样速率转换,它会给出错误提示。所谓的非法采样速率转换指两个工作在不同采样速率的模块之间的直接连接。在实时多任务系统中,如果任务之间存在非法采样速率转换,那么就有可能出现一个模块的输出在另一个模块需要时却无法利用的情况。通过检查这种转换,Multitasking将有助于用户建立一个符合现实的多任务系统的有效模型。使用速率转换模块可以减少模型中的非法速率转换。Simulink提供了两个这样的模块:un
44、it delay模块和zero-order hold模块。对于从慢速率到快速率的非法转换,可以在慢输出端口和快输入端口插入一个单位延时unit delay模块。而对于快速率到慢速率的转换,则可以插入一个零阶采样保持器zero-order hold。Singletasking:单任务模式,不检查模块间的速率转换,它在建立单任务系统模型时非常有用,在这种系统就不存在任务同步问题。Auto:自动模式,simulink会根据模型中模块的采样速率是否一致,自动决定切换到multitasking和singletasking。Step size步长参数:对于变步长模式,用户可以设置最大的和推荐的初始步长参数
45、,缺省情况下,步长自动地确定,它由值auto表示。Maximum step size(最大步长参数):它决定了解法器能够使用的最大时间步长,它的缺省值为“仿真时间/50”,即整个仿真过程中至少取50个取样点,但这样的取法对于仿真时间较长的系统则可能带来取样点过于稀疏,而使仿真结果失真。一般建议对于仿真时间不超过15s的采用默认值即可,对于超过15s的每秒至少保证5个采样点,对于超过100s的,每秒至少保证3个采样点。Initial step size(初始步长参数):一般建议使用“auto”默认值即可。Relative tolerance(相对误差):它是指误差相对于状态的值,是一个百分比,缺
46、省值为1e-3,表示状态的计算值要精确到0.1%。Absolute tolerance(绝对误差):表示误差值的门限,或者是说在状态值为零的情况下,可以接受的误差。如果它被设成了auto,那么simulink为每一个状态设置初始绝对误差为1e-6。u Simulink建模与仿真举例建模与仿真举例Output options输出选项(在变步长模式下有效)Refine output:精细输出,其意义是在仿真输出太稀松时,simulink会产生额外的精细输出,这一点就像插值处理一样。用户可以在refine factor设置仿真时间步间插入的输出点数。产生更光滑的输出曲线,改变精细因子比减小仿真步长更
47、有效,并且在ode45效果最好。Produce additional output:它允许用户直接指定产生输出的时间点。一旦选择了该项,则在它的右边出现一个output times编辑框,在这里用户指定额外的仿真输出点,它既可以是一个时间向量,也可以是表达式。与精细因子相比,这个选项会改变仿真的步长。Produce specified output only:它的意思是让simulink只在指定的时间点上产生输出。为此解法器要调整仿真步长以使之和指定的时间点重合。这个选项在比较不同的仿真时可以确保它们在相同的时间输出。Workspace I/O页页q此页主要用来设置与MATLAB工作空间交换数
48、值的有关选项。Load from workspace:从MATLAB工作空间获取时间和输入变量,一般时间变量定义为t,输入变量定义为u。Initial state用来定义从MATLAB工作空间获得的状态初始值的变量名。Save to workspace:设置保存到MATLAB工作空间的变量类型和变量名,包括输出时间向量(Time)、状态向量(States)和输出变量(Output)。最终状态(Final state)用来定义将系统稳态值存往工作空间所使用的变量名。Diagnostics页页q此页分成两个部分:仿真选项和配置选项。配置选项下的列表框主要列举了一些常见的事件类型,以及当SIMULI
49、NK检查到这些事件时给予的处理。仿真选项options主要包括是否进行一致性检验、是否禁用过零检测、是否禁止复用缓存、是否进行不同版本的SIMULINK的检验等几项。q除了上述3个主要的页外,仿真参数设置窗口还包括real-time workshop页,主要用于与C语言编辑器的交换,通过它可以直接从SIMULINK模型生成代码并且自动建立可以在不同环境下运行的程序,这些环境包括实时系统和单机仿真。q设置仿真参数和选择解法器之后,就可以启动仿真而运行。设置仿真参数和选择解法器之后,就可以启动仿真而运行。q选择选择Simulink菜单下的菜单下的start选项来启动仿真,如果模型中有选项来启动仿真
50、,如果模型中有些参数没有定义,则会出现错误信息提示框。如果一切设置些参数没有定义,则会出现错误信息提示框。如果一切设置无误,则开始仿真运行,结束时系统会发出一鸣叫声。无误,则开始仿真运行,结束时系统会发出一鸣叫声。启动仿真启动仿真u Simulink建模与仿真举例建模与仿真举例演示示波器Scopeu Simulink建模与仿真举例建模与仿真举例SCOPE图形的鼠标右键:图形的鼠标右键:zoom out AutoscaleSave current axes settingAxes propertiesl工具栏:Scope parameters General Data historyFloati