基于MATLABSimulink的建模与仿真.ppt_第1页
基于MATLABSimulink的建模与仿真.ppt_第2页
基于MATLABSimulink的建模与仿真.ppt_第3页
基于MATLABSimulink的建模与仿真.ppt_第4页
基于MATLABSimulink的建模与仿真.ppt_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机仿真技术 第五讲基于MATLAB Simulink的建模与仿真 MATLAB软件简介MATLAB仿真实例什么是Simulink Simulink模块库简介Simulink模型的建立方法Simulink建模与仿真举例小结 MATLAB软件简介 MATLAB是一门计算机编程语言 是一种科学计算软件 取名来源于MatrixLaboratory 本意是专门以矩阵的方式来处理计算机数据 MATLAB将高性能的数值计算和可视化集成在一起 并提供了大量的内置函数 被广泛应用在科学计算 信息处理 控制系统等领域的分析 仿真和设计工作 MATLAB的功能包括 数值分析 数值和符号计算 工程和科学绘图 通讯和控制系统的设计与仿真 数字图像与信号处理 财务与金融工程等 MATLAB软件简介 MATLAB软件的典型应用领域 科学研究 工程技术应用研究CAI ComputerAidedInstruct 数学实验 MathematicalExperiment 数学建模 MathematicalModeling clear删除工作空间中的所有变量 系统不会要求你确认这个命令 所有变量都被清除且不能再恢复 对于简单的问题 在MATLAB提示符下输入命令是快速有效的 然而当命令数增加或希望改变一个或几个变量的值 然后重新执行一系列命令时 在MATLAB提示符处键入命令就非常麻烦了 对这个问题MATLAB提供了一种逻辑解决方案 它允许用户把MATLAB命令放在一个简单的文本文件中 然后告诉MATLAB打开文件并执行命令 如同在MATLAB提示符处键入命令一样 这些文件被称为脚本文件或简单地称为M文件 M文件是指脚本文件以扩展名 m结尾 MATLAB软件简介 MATLAB提供三种控制流结构的语句 For end循环While end循环If Else End结构 MATLAB软件简介 For end循环的基本作用是以固定的和预定的次数重复一组特定的命令 一般形式是 forn 循环控制量的范围 commands end MATLAB软件简介 说明 在for和end语句之间的命令串 commands 按矩阵 array 中的每一列执行一次 在每一次迭代中 n被指定为循环控制量的范围内的下一列 例如 forn 1 10 x n sin n pi 10 end这个循环体的作用是 对n等于1到10 求所有语句的值 直到下一个end语句 第1次通过For循环n 1 第2次 n 2 如此继续 直到n 10 在n 10以后 For循环结束 然后求end语句后面的任何命令值 For循环不能用For循环内重新赋值循环变量n来终止 在For循环中循环控制量的范围可以是任何有效的MATLAB矩阵 比如data 119456 716 15 forn datax n 1 n 2 end这时程序的输出有四个数值 分别是矩阵data的两列相减的结果x 4x 7x 46x 1 For循环可按需要嵌套 即For循环体内的命令组中可以出现另一个For循环体 这体现了For循环体也是命令组 比如forn 1 5form 5 1 1A n m n 2 m 2 Endend While end循环以不定的次数求一组语句的值 Whil end循环的一般形式是 whileexpression 控制表达式 commands end只要在控制表达式 expression 里的所有元素为真 就执行While和end语句之间的命令串 commands MATLAB软件简介 说明 控制表达式的值未必是一个标量值 矩阵值也同样有效 在矩阵情况下 所得到矩阵的所有元素必须都为真 具体示例 num 0 EPS 1 while 1 EPS 1EPS EPS 2 num num 1 end这段MATLAB代码最后在num 53时停止 IF ELSE END结构提供有条件地执行一些特定的命令序列的方式 最简单的IF ELSE END结构是 ifexpression 条件控制表达式 commands end如果在条件控制表达式 expression 中的所有元素为真 非零 那么就执行if和end语句之间的命令串 commands 在表达式包含有几个逻辑表达式时 即使前一个表达式决定了表达式的最后逻辑状态 仍要计算所有的子表达式 MATLAB软件简介 一般的有两个选择的IF ELSE END结构是 ifexpression 条件控制表达式 commandsevaluatedifTrueelsecommandsevaluatedifTrueend在这里 如果条件控制表达式 expression 为真 则执行第1组命令 如果表达式是假 则执行第2组命令 有三个或更多选择时的IF ELSE END结构的形式 ifexpression1commandsevaluated ifexpression1isTrueelseifexpression2commandsevaluated ifexpression2isTrueelseifexpression3commandsevaluated ifexpression3isTrueelseif elsecommandsevaluatedifonotherexpressionisTrueend最后这种有三个以上选择的IF ELSE END形式 依次检查各表达式 只执行第一个表达式为真的命令串 接下来的关系表达式不检验 跳过其余的IF ELSE END结构 最后的else命令可有可无 break是一种特殊的控制结构 基本作用是无条件跳出临近的循环体 即结束For循环和While循环的执行 MATLAB软件简介 学习和使用常用软件MATLAB的一些基本语句和功能来验证或观察函数的变化 实现函数的可视化计算 MATLAB软件简介 MATLAB仿真举例 设系统方程 y 0 1 试用Euler法求其数值解 取步长h 0 1 0 t 1 试编写matlab程序求其数值解 设系统方程 y 0 1 试用Euler法求其数值解 取步长h 0 1 0 t 1 试编写matlab程序求其数值解 Euler迭代公式 yn 1 yn 0 1yn2 MATLAB仿真举例 Euler迭代公式 yn 1 yn 0 1yn2 y 0 1 取步长h 0 1 0 t 1 MATLAB仿真举例 Euler迭代公式 yn 1 yn 0 1yn2 y 0 1 t 0 0 1 1 length size t 1 y zeros size t y 1 1 forn 1 1 length 1y n 1 y n 0 1 y n 2endplot t y 取步长h 0 1 0 t 1 MATLAB仿真举例 运行结果 y 1 00000 90000 81900 75190 69540 64700 60520 56850 53620 50750 4817 MATLAB仿真举例 作业 设系统方程 y 0 1 试用二阶龙格库塔法求其数值解 取步长h 0 1 0 t 1 试编写matlab程序求其数值解 二阶龙格库塔法迭代公式 请在第二次实验时上机验证结果 Simulink是MATLAB提供的实现动态系统建模和仿真的一个软件包 它让用户把精力从编程转向模型的构造 Simulink一个很大的优点是为用户省去了许多重复的代码编写工作 Simulink支持线性 非线性系统 连续系统 离散系统 或者混合系统的建模与仿真 同时它也支持具有不同部分拥有不同采样率的多种采样速度的系统仿真 Simulink的启动方式有两种 1 在工具栏点击Simulink图标 2 在CommandWindow中输入 Simulink 什么是Simulink Simulink模块库简介 SIMILINK模块库按功能进行分类 连续模块 离散模块 查表模块 数学模块 非线性模块 信号通路模块 接收器模块 输入源模块 其他常用方块组及工具箱 特别模块 Simulink模块库简介 Derivative 输入信号微分Integrator 积分器State Space 线性状态空间系统模型Transfer Fcn 线性传递函数模型Zero Pole 以零极点表示的传递函数模型Memory 存储上一时刻的状态值TransportDelay 输入信号延时一个给定时间再输出VariableTransportDelay 输入信号延时一个可变时间再输出 连续模块 Continuous Zero OrderHold 零阶采样保持器UnitDelay 一个采样周期的延时Discrete timeIntegrator 离散时间积分器DiscreteState Space 离散状态空间系统模型DiscreteFilter 离散滤波器DiscreteTransfer Fcn 离散传递函数模型DiscreteZero Pole 以零极点表示的离散传递函数模型First OrderHold 一阶采样保持器 离散模块 Discrete Look UpTable 建立输入信号的查询表 线性峰值匹配 Look UpTable 2 D 建立两个输入信号的查询表 线性峰值匹配 Fcn 用户自定义的函数 表达式 MATLABFcn 利用MATLAB的现有函数S Function 调用自编的S函数的程序 Look upTable 查表模块 User definedfunction 用户定义函数模块 Sum 加减运算Product 模块输入的乘除运算DotProduct 点乘运算Gain 比例运算MathFunction 包括指数函数 对数函数 求平方等常用数学函数TrigonometricFunction 三角函数 包括正弦 余弦 正切等MinMax 最小值或最大值运算 Mathoperations 数学模块 Abs 取绝对值Sign 给出符号函数RoundingFunction圆整函数CombinatorialLogic 建立真值表LogicalOperator 逻辑运算RelationalOperator 关系运算ComplextoMagnitude Angle 由复数输入转为幅值和相角输出ComplextoReal Imag 由复数输入转为实部和虚部输出Magnitude AngletoComplex 由幅值和相角输入合成复数输出Real ImagtoComplex 由实部和虚部输入合成复数输出 RateLimit 变化速率限制Saturation 饱和输出 让输出超过某一值时能够饱和 Quantizer 离散化Blacklash 滞环或间隙DeadZone 死区Relay 滞环继电器Switch 切换开关ManualSwitch 手动选择开关Coulomb ViscousFriction库仑和粘滞摩擦 Discontinuous 非线性模块 Mux 将多个单一输入转化为一个复合输出 Demux 将一个复合输入转化为多个单一输出 SignalRouting 信号通路模块 Scope 示波器 显示信号曲线 XYGraph 显示二维X Y图形 Out1 输出端口Display 显示数值ToWorkspace 将输出写入MATLAB的工作空间 ToFile mat 将输出写入数据文件 Terminator 终止一个未连接的输出端口 Sinks 接收器模块 In1 输入端口Constant 常数信号SignalGenerator 信号发生器 产生任意波形Ramp 斜坡信号SineWave 正弦波信号Step 阶跃波信号RepeatingSequence 重复信号PulseGenerator 脉冲发生器Ground 搁置一个未连接的输入端口Clock 时钟信号FromWorkspace 来自MATLAB的工作空间 FromFile mat 来自数据文件 Sources 输入源模块 其他常用方块组及工具箱Blocksets Toolboxes Simulinkextras 特别模块 2 SimulinkExtras Simulink附加库 3 CommunicationsBlockset 通信模块集 4 ControlSystemToolbox 控制系统工具箱 5 DSPBlockset 数字信号处理模块集 6 Dials GaugesBlockset 面板和仪表模块集 7 Fixed PointBlockset 定点模块集 8 FuzzyLogicToolbox 模糊逻辑工具箱 9 MPCBlockset MPC模块集 10 NCDBlockset 非线性控制设计模块集 11 MotorolaDSPBlockset DSP模块集 12 NeuralNetworkBlockset 神经网络模块集 13 PowerSystemBlockset 电力系统模块集 SIMULINK的一些其它工具箱 14 Real TimeWindowsTarget 实时窗口目标库 15 Real TimeWorkshop 实时工作空间库 16 SystemIDBlocks 系统辨识模块集 17 Stateflow 有限状态流程库 18 AerospaceBlockset 航空模块集 23 DataAcquistionToolbox 数据采集工具箱 20 SignalProcessingBlocks 信号处理工具箱 21 ImageAcquistionToolbox 图形采集工具箱 22 RFBlockset 射频工具箱 23 VideoandImageProcessingBlocks图像处理工具箱 新增工具箱 机构仿真工具箱液压驱动工具箱 例1 考虑下图所示的简单的小车系统运动 例1 考虑下图所示的简单的小车系统运动 忽略摩擦力 运动微分方程为 例1 考虑下图所示的简单的小车系统运动 在matlab simulink中搭建仿真模型 加入两个积分模块 第一个模块用来计算速度 第二个模块用来计算位移 可用模块图表示为 例1 考虑下图所示的简单的小车系统运动 假定F sin t 为正弦激励 m 0 5 求0 10s区间内的系统位移响应曲线 仿真结果如下图 例1 考虑下图所示的简单的小车系统运动 若要求同时输出位移和速度 则模型框图为 例1 考虑下图所示的简单的小车系统运动 仿真结果如下图 在模型窗口中 选中模块 则其4个角会出现黑色标记 此时可以对模块进行以下的基本操作 移动 选中模块 按住鼠标左键将其拖曳到所需的位置即可 若要脱离线而移动 可按住shift键 再进行拖曳 复制 选中模块 然后按住鼠标右键进行拖曳即可复制同样的一个功能模块 删除 选中模块 按Delete键即可 若要删除多个模块 可以同时按住Shift键 再用鼠标选中多个模块 按Delete键即可 也可以用鼠标选取某区域 再按Delete键就可以把该区域中的所有模块和线等全部删除 转向 为了能够顺序连接功能模块的输入和输出端 功能模块有时需要转向 在菜单Format FlipBlock Ctrl I 旋转180度 Format RotateBlock Ctrl R 顺时针旋转90度 模块的处理 Simulink模型的建立方法 改变大小 选中模块 对鼠标移到角上出现 进行拖曳即可 模块命名 先用鼠标在需要更改的名称上单击一下 然后直接更改即可 名称在功能模块上的位置也可以变换180度 可以用Format FlipName来实现 也可以直接通过鼠标进行拖曳 HideName可以隐藏模块名称 颜色设定 Format ForegroundColor改变模块的前景颜色 BackgroundColor改变模块的背景颜色 而模型窗口的颜色可以通过ScreenColor来改变 参数设定 用鼠标双击模块 就可以进入模块的参数设定窗口 从而对模块进行参数设定 或点击鼠标右键 选择Blockparameters参数设定窗口包含了该模块的基本功能帮助 通过对模块的参数设定 就可以获得需要的功能模块 模块的处理 Simulink模型的建立方法 SIMULINK模型的构建是通过用线将各种功能模块进行连接而构成的 用鼠标可以在功能模块的输入与输出端之间直接连线 线的分支 按住鼠标右键 在需要分支的地方拉出即可 或者按住Ctrl键 并在要建立分支的地方用鼠标拉出即可 或从输入端拉线到分支点 模块的连接 Simulink模型的建立方法 属性设定 选中模块 打开Edit BlockProperties可以对模块进行属性设定 或鼠标右键选择BlockProperties属性包括Description描述属性 对模块的说明文本Priority优先级属性 模块执行顺序Tag标签属性 Openfunction属性 通过它指定一个函数名 则当该模块被双击之后 Simulink就会调用该函数执行 这种函数在MATLAB中称为回调函数Attributesformatstring属性 属性的改变 Simulink模型的建立方法 Simulink模型的建立方法 取信号源Sources Step 取增益Math Gain 取传函Continuous TransferFcn 取相加点Math Sum 取显示Sinks Scope 连接各元件 选择仿真参数 如停止时间等Simulation Simulationparameters 开始仿真Simulation Start 选择start 或这里开始仿真 点击右键 调整显示参数 仿真结果显示 例3 考虑下图所示的简单的小车系统运动 若要求同时输出位移 速度和加速度 则模型框图为 Simulink建模与仿真举例 例3 考虑下图所示的简单的小车系统运动 仿真结果如下图 例4 考虑下图所示的简单的小车系统运动 例4 考虑下图所示的简单的小车系统运动 运动微分方程为 动力方程变换为 例4 考虑下图所示的简单的小车系统运动 在matlab simulink中搭建仿真模型 例4 考虑下图所示的简单的小车系统运动 位移曲线仿真结果如下图 同时查看位移 速度 加速度仿真模型框图 同时查看位移 速度 加速度10s内仿真结果 若要同时查看位移 速度 加速度20s内仿真结果 该如何设置参数 第1步 设置仿真参数和选择解法器选择Simulation菜单下的Parameters命令 就会弹出一个仿真参数对话框 它主要用三个页面来管理仿真的参数 Solver页 它允许用户设置仿真的开始和结束时间 选择解法器 说明解法器参数及选择一些输出选项 WorkspaceI O页 作用是管理模型从MATLAB工作空间的输入和对它的输出 Diagnostics诊断页 允许用户选择Simulink在仿真中显示的警告信息的等级 构建好一个系统的模型之后 接下来的事情就是运行模型 得出仿真结果 运行一个仿真的完整过程分成三个步骤 设置仿真参数 启动仿真和仿真结果分析 仿真方法与仿真参数的选择 Simulink建模与仿真举例 Solver页 Simulationtime仿真时间 注意这里的时间是计算机仿真中对时间的一种表示 比如10秒的仿真时间 如果采样步长定为0 1 则需要执行100步 若把步长减小 则采样点数增加 那么实际的执行时间就会增加 一般仿真开始时间设为0 而结束时间视不同的因素而选择 Solveroption解法选项 Type后面的第一个选项中指定仿真的步长类型 分Variable step 变步长 和Fixed step 固定步长 两种 变步长模式解法器有 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检查到模型没有连续状态时使用它 Simulink建模与仿真举例 固定步长模式解法器有 ode5 ode4 ode3 ode2 ode1和discrete ode5 缺省值 是ode45的固定步长版本 适用于大多数连续或离散系统 不适用于刚性系统 ode4 四阶龙格 库塔法 具有一定的计算精度 ode3 固定步长的二 三阶龙格 库塔法 ode2 改进的欧拉法 ode1 欧拉法 discrete 是一个实现积分的固定步长解法器 它适合于离散无连续状态的系统 Simulink建模与仿真举例 Fixedstepsize固定步参数 缺省情况下 步长自动地确定 它由值auto表示Mode 固定步长模式选择 Multitasking 多任务模式 当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 Simulink建模与仿真举例 Outputoptions输出选项 在变步长模式下有效 Refineoutput 精细输出 其意义是在仿真输出太稀松时 simulink会产生额外的精细输出 这一点就像插值处理一样 用户可以在refinefactor设置仿真时间步间插入的输出点数 产生更光滑的输出曲线 改变精细因子比减小仿真步长更有效 并且在ode45效果最好 Produceadditionaloutput 它允许用户直接指定产生输出的时间点 一旦选择了该项 则在它的右边出现一个outputtimes编辑框 在这里用户指定额外的仿真输出点 它既可以是一个时间向量 也可以是表达式 与精细因子相比 这个选项会改变仿真的步长 Producespecifiedoutputonly 它的意思是让simulink只在指定的时间点上产生输出 为此解法器要调整仿真步长以使之和指定的时间点重合 这个选项在比较不同的仿真时可以确保它们在相同的时间输出 WorkspaceI O页 此页主要用来设置与MATLAB工作空间交换数值的有关选项 Loadfromworkspace 从MATLAB工作空间获取时间和输入变量 一般时间变量定义为t 输入变量定义为u Initialstate用来定义从MATLAB工作空间获得的状态初始值的变量名 Savetoworkspace 设置保存到MATLAB工作空间的变量类型和变量名 包括输出时间向量 Time 状态向量 States 和输出变量 Output 最终状态 Finalstate 用来定义将系统稳态值存往工作空间所使用的变量名 Diagnostics页 此页分成两个部分 仿真选项和配置选项 配置选项下的列表框主要列举了一些常见的事件类型 以及当SIMULINK检查到这些事件时给予的处理 仿真选项options主要包括是否进行一致性检验 是否禁用过零检测 是否禁止复用缓存 是否进行不同版本的SIMULINK的检验等几项 除了上述3个主要的页外 仿真参数设置窗口还包括real timeworkshop页 主要用于与C语言编辑器的交换 通过它可以直接从SIMULINK模型生成代码并且自动建立可以在不同环境下运行的程序 这些环境包括实时系统和单机仿真 设置仿真参数和选择解法器之后 就可以启动仿真而运行 选择Simulink菜单下的start选项来启动仿真 如果模型中有些参数没有定义 则会出现错误信息提示框 如果一切设置无误 则开始仿真运行 结束时系统会发出一鸣叫声 启动仿真 Simulink建模与仿真举例 演示示波器Scope Simulink建模与仿真举例 SCOPE图形的鼠标右键 zoomoutAutoscaleSavecurrentaxessettingAxesproperties工具栏 ScopeparametersGeneralDatahistoryFloatingscope Exm5 2 mdl Simulink建模与仿真举例 Simulink建模与仿真举例 Simulink建模与仿

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论