simulink教程

上传人:cn****1 文档编号:591512503 上传时间:2024-09-18 格式:PPT 页数:187 大小:2.13MB
返回 下载 相关 举报
simulink教程_第1页
第1页 / 共187页
simulink教程_第2页
第2页 / 共187页
simulink教程_第3页
第3页 / 共187页
simulink教程_第4页
第4页 / 共187页
simulink教程_第5页
第5页 / 共187页
点击查看更多>>
资源描述

《simulink教程》由会员分享,可在线阅读,更多相关《simulink教程(187页珍藏版)》请在金锄头文库上搜索。

1、第九章 Simulink仿真 本章主要讲解: Simulink的概念及其应用; Simulink搭建系统模型的方法及特点; Simulink环境中的仿真及调试。目录 9.1 Simulink概述 9.2 模型的创建 9.3 子系统及其封装 9.4 过 零 检 测 9.5 代 数 环 9.6 回 调 函 数 9.7 运 行 仿 真 9.8 仿真结果分析 9.9 模型的调试 9.10 S 函 数 9.11 实 例 习 题9.1 Simulink概述 9.1.1 Simulink的概念 9.1.2 Simulink的工作环境 9.1.3 Simulink的工作原理 9.1.4 Simulink模型的

2、特点 9.1.5 Simulink里的数据类型 9.1.6 Simulink里的模块和模块库9.1.1 Simulink的概念 Simulink是MATLAB提供的实现动态系统建模和仿真的软件包,是MATLAB相对独立的重要的组成部分。 Simulink的突出特点是支持图形用户界面(GUI),模型由模块组成的框图来表示。 启动Simulink(6.0版)有如下3种方式: 在 MATLAB的 命 令 窗 口 直 接 键 入 命 令Simulink; 用鼠标左键单击MATLAB工具条上的按钮; 在MATLAB菜单上选择【File】|【New】|【Model】选项。 运行后会弹出如下图所示的Simu

3、link模块库浏览器窗口 。 使用第3种方式打开时还会弹出如下图所示的新建模型窗口。 1【File】菜单 2【Edit】菜单 3【View】菜单9.1.2 Simulink的工作环境 4【Simulation】菜单 5【Format】菜单 6【Tools】菜单 7【Help】菜单 Simulink模块库浏览器各部分的用途,如下图所示。1【File】菜单 【File】菜单中各选项的名称与功能如下表所示。【File】菜单 2【Edit】菜单 【Edit】菜单中各选项的名称与功能如下表所示。【Edit】菜单 3【View】菜单 【View】菜单中部分主要选项的名称与功能如下表所示。【View】菜单

4、4【Simulation】菜单 【Simulation】菜单如下图所示。【Simulation】菜单各选项的功能如下 : 【Start】:开始运行仿真; 【Stop】:停止仿真; 【Configuration Parameters】:设置仿真参数和选择解法器; 【 Normal】 、 【 Accelerator】 、 【External】分别表示正常工作模式、加速仿真和外部工作模式。5【Format】菜单 【Format】菜单用于设置字体、屏幕颜色、模块名的显示、模块显示颜色、信号和端口类型和宽度等。 该菜单部分主要选项的名称与功能如下表所示。【Format】菜单 6【Tools】菜单 【To

5、ols】菜单中部分主要选项的名称与功能如下表所示。【Tools】菜单 7【Help】菜单 【Help】菜单中部分主要选项的名称与功能如下表所示。【Help】菜单 9.1.3 Simulink的工作原理 1图形化模型与数学模型间的关系 2图形化模型的仿真过程1图形化模型与数学模型间的关系 现实中每个系统都有输入、输出和状态3个基本要素,以及它们之间随时间变化的数学函数关系,即数学模型。 图形化模型也体现了输入、输出和状态间随时间变化的某种关系,如下图所示。 只要这两种关系在数学上是等价的,那么就可以图形化模型代替数学模型。2图形化模型的仿真过程 Simulink的仿真过程包括如下几个阶段: 模型

6、编译阶段; 连接阶段; 仿真环阶段。(1)模型编译阶段 Simulink引擎调用模型编译器,将模型编译成可执行文件。 编译器完成以下任务: 计算模块参数的表达式以确定它们的值; 确定信号属性(如名字、数据类型等); 传递信号属性以确定未定义信号的属性。 优化模块; 展开模型的继承关系(如子系统); 确定模块运行的优先级; 确定模块的采样时间。(2)连接阶段 Simulink引擎按执行次序创建运行列表,初始化每个模块的运行信息。(3)仿真环阶段 Simulink引擎从仿真的开始到结束,在每一个采样点按运行列表计算各模块的状态和输出。 仿真环阶段又分成以下两个子阶段: 初始化阶段:该阶段只运行一次

7、,用于初始化系统的状态和输出; 迭代阶段:该阶段在定义的时间段内按采样点间的步长重复运行。9.1.4 Simulink模型的特点 Simulink建立的模型具有以下3个特点: 仿真结果的可视化; 模型的层次性; 可封装子系统。9.1.5 Simulink里的数据类型 1Simulink支持的数据类型 2数据类型的传播 3使用复数信号 Simulink在仿真开始之前和运行过程中会自动确认模型的类型安全性,以保证该模型产生的代码不会出现上溢或下溢。1Simulink支持的数据类型 Simulink支持所有的MATLAB内置数据类型,除此之外Simulink还支持布尔类型。 打开Simulink模型

8、窗口中的菜单Help下的选项Block Support Table,打开如下 图 所 示 的 帮 助 窗 口 , 总 结 了 所 有Simulink库中的模块所支持的数据类型。 打开Simulink模型窗口的【Format】|【Port/Signal Displays】|【Port Data Types】,查看信号的数据类型和模块输入/输出端口的数据类型,如下图所示。2数据类型的传播 相连模块的输出/输入信号所支持的数据类型如果是不相同的,在仿真中就会弹出错误提示对话框,告知出现冲突的信号和端口。 此时可以尝试在冲突的模块间插入DataTypeConversion模块来解决类型冲突。3使用复数

9、信号 Simulink默认的信号值都是实数,但在实际问题中有时需要处理复数信号。 在Simulink中通常用下面两种方法来建立处理复数信号的模型,如下图所示。 在模型中加入Constant模块,并将其参数设为复数。 分别生成复数的虚部和实部,再用Real-Image to Complex模块把它们联合成一个复数。 分 别 生 成 复 数 的 幅 值 和 幅 角 , 再 用Magnitue-Angle to Complex模块把它们联合成一个复数。9.1.6 Simulink里的模块和模块库 模块库提供各种基本模块,它按应用领域以及功能组成若干子库,并按树状结构进行显示。 模块是Simulink

10、建模的基本元素。 下表详细介绍了Simulink中常用子库中常用模块的功能 。Commonly Used Blocks子库 Continuous子库 Discontinuities子库 Discrete子库 Logic and Bit Operations子库 续表Math Operations子库 续表Ports & Subsystems子库续表Sinks子库 Sources子库User-Defined Functions子库 9.2 模型的创建 1模块的基本操作 2创建模型的基本步骤 3模型文件格式1模块的基本操作 下表汇总了Simulink对模块进行操作的部分方法。对模块进行操作续表 下

11、表汇总了Simulink对直线进行操作的部分方法。对直线进行操作 双击模块将会弹出【参数设置】对话框,如下图所示的增益模块,进而设置参数值。 鼠标右键单击模块并在弹出的上下文菜单中选择【Block Properties】,会弹出属性设置对话框,如下图所示,其中包括如下三项内容。 【General】页; 【Block Annotation】页; 【Callbacks】页。(1)【General】页 Description:用于对该模块在模型中的用法进行注释; Priority:定义该模块在模型中执行的优先顺序; Tag:为模块添加文本格式的标记。(2)【Block Annotation】页 用于

12、指定在图标下显示模块的参数、取值及格式。(3)【Callbacks】页 用于定义该模块发生某种指定行为时所要执行的回调函数。 对信号进行标注以及对模型进行注释,方法如下表所示。在连线上反映信息 对注释进行处理 2创建模型的基本步骤 利用Simulink进行系统建模和仿真的一般步骤如下。 绘制系统流图; 启动Simulink模块库浏览器,新建一个空白模型窗口; 将所需模块放入空白模型窗口中,按系统流图的布局连接各模块,并封装子系统; 设置各模块的参数以及与仿真有关的各种参数; 保存模型,模型文件的后缀名为.mdl; 运行并调试模型。3模型文件格式 Simulink还提供了通过命令行建立模型和设置

13、模型参数的方法。 Simulink将每一个模型(包括库)都保存在一个以.mdl为后缀的文件里,称为模型文件。 一个模型文件就是一个结构化的ASCII文件,它包括关键字和各种参数的值。 9.3 子系统及其封装 9.3.1 创建子系统 9.3.2 封装子系统 9.3.3 自定义模块库9.3.1 创建子系统 1子系统的作用 2子系统的创建方法 3子系统创建示例1子系统的作用 通过子系统可以把复杂的模型分割成若干个简单的模型,具有以下优点: 减少模型窗口中模块的个数,使得模型窗口整洁。 把一些功能相关的模块集成在一起,可以复用。 通过子系统可以实现模型图表的层次化。2子系统的创建方法 Simulink

14、有如下两种创建子系统的方法。 通过子系统模块来创建子系统:先向模型中添加Subsystem模块,然后打开该模块并向其中添加模块; 组合已存在的模块集。3子系统创建示例例 通过Subsystem模块创建子系统。具体步骤如下。 从Ports&Subsystems中复制Subsystem模块到模型中,如下图所示; 用鼠标左键双击Subsystem模块图标打开如下图所示Subsystem模块编辑窗口; 在新的空白窗口创建子系统,然后保存; 运行仿真并保存。例 通过组合已存在的模块创建子系统。具体步骤如下。 创建如下图所示的系统; 选中要创建成子系统的模块,如下图所示; 选择【Edit】|【Create

15、 Subsystem】菜单,结果如下图所示; 运行仿真并保存。9.3.2 封装子系统 1封装的作用 2封装的过程 3封装示例 封装后的子系统与Simulink提供的模块一样拥有图标,并且用鼠标左键双击图标时会出现一个用户自定义的【参数设置】对话框,实现在对话框中设置子系统中的参数。1封装的作用 子系统中各个模块的参数通过参数对话框就可以进行设置。 为子系统创建可以反映子系统功能的图标。 可以避免用户在无意中修改子系统中模块的参数。2封装的过程 选择需要封装的子系统,并选择【Edit】|【Mask Subsystem】菜单进行封装。 选择【Edit】|【Edit mask】菜单,这时会弹出如下图

16、所示的封装编辑器,通过它进行各种设置。 单击【Apply】或【OK】按钮保存设置。3封装示例例 简介封装的过程。具体步骤如下: (1)建立如下图所示的含有子系统的模型,并设置子系统中Gain模块的Gain参数为一变量m。 (2)选中模型中的Subsystem子系统,选择【Edit】|【Mask Subsystem】菜单进行封装,进而选择【Edit】|【Edit mask】菜单(或用鼠标右键单击子系统弹出上下文菜单,选择【Edit mask】菜单)打开封装编辑器,如下图所示。 (3)按照如下图所示设置【Icon页】。 Icon options面板:定义图标的边框是否可见等。 Drawing co

17、mmands文本框:定义绘制模型图标的方式。 Examples of drawing commands面板:说明各种绘制图标的命令,每种命令都对应一个示例。 (4)按照如下图所示设置【Parameters】页。 定义封装子系统参数设置对话框的可设置参数,其中各项设置的含义如下图所示。 (5)按照如下图所示设置 【Initialization】页。定义封装子系统的初始化命令,包括MATLAB表达式、函数、运算符和在【Parameters】页定义的变量。 (6)按照如下图所示设置【Documentation】页 定义封装子系统的封装类型、模块描述和模块帮助信息,其中各项设置的含义如下图所示。 (7

18、)设置参数后运行仿真,用鼠标左键双击模型中的Scope模块,看到如下图所示的结果。9.3.3 自定义模块库 大量封装子系统模块按照功能需要分门别类地来存储,以方便查找,每一类即为一模块库。 通过自定义模块库,可以将为某个领域服务的所有模块集中存放。 通过选择Simulink界面的【File】|【New】|【Library】菜单来创建模块库。 选中该菜单后将弹出一个空白的库窗口; 然后将需要存放在同一模块库中的模块复制到模块库窗口中即可,如下图所示。9.4 过 零 检 测 过零检测通过Simulink为模块注册若干过零函数,当变化趋势剧烈时,过零函数发生符号变化。 每个采样点仿真结束时Simul

19、ink检测是否有过零函数符号变化,如果检测到过零点,Simulink将在前一个采样点和目前采样点间内插值。 下表列出了Simulink中支持过零检测的模块。支持过零点检测的模块 9.5 代 数 环 如果Simulink模块的输入是依赖于该模块的输出,就会产生一个代数环,如下图所示。 这意味着无法进行仿真,因为没有输入就得不到输出,没有输出也得不到输入。 解决代数环的办法包括以下几种: 尽量不形成代数环的结构,采用替代结构; 为可以设置初始值的模块设置初值; 对于离散系统,在模块的输出一侧增加unit delay模块; 对于连续系统,在模块的输出一侧增加memory模块。 为模型或模块设置回调函

20、数的方法有下面两种: 通过模型或模块的属性对话框来设置; 通过MATLAB相关的命令来设置。9.6 回 调 函 数模型属性设置见下图。模块属性设置见下图。 模型属性设置对话框中的Callbacks页给出了回调函数列表,如下表所示。模型的回调参数 模块的回调参数 续表9.7 运 行 仿 真 1使用窗口运行仿真 2仿真参数设置 3仿真诊断对话框 4使用命令运行仿真 5改善仿真性能及精度1使用窗口运行仿真 建立好模型后,可以直接在模型窗口通过菜单项或工具栏进行仿真,如下图所示。2仿真参数设置 可以通过模型窗口的【Simulation】|【Configuration Parameters】菜单项打开设

21、置仿真参数的对话框,如下图所示。3仿真诊断对话框 如果模型在运行过程中遇到错误,将停止仿真,并弹出仿真诊断对话框。通过该对话框,可以了解模型出错的位置和原因,如下图所示。4使用命令运行仿真 MATLAB允许通过命令窗口运行仿真。MATLAB提供函数sim()运行仿真,其具体使用方法如下: t,x,y = sim(filename, timespan, options, ut); t,x,y1, y2, ., yn = sim(filename,timespan,options,ut)。 只有参量filename是必需的,各参量的含义如下表所示。 函数sim()参量5改善仿真性能及精度 Simu

22、link的仿真性能和精度受许多因素的影响,包括模型的设计、仿真参数的设置等。 但是对于某些问题,适当的调整仿真参数可以得到更好的结果,如: 加速仿真 提高精度9.8 仿真结果分析 1观看输出结果 2线性化分析 3平衡点分析1观看输出结果 在Simulink中有如下3种方法绘制模型的仿真结果。 在模型中将信号输入到Scope模块; 将输出写入To Workspace 模块,然后使用MATLAB绘图功能。 将输出写入To File 模块,然后使用MATLAB文件读取和绘图功能。2线性化分析 Matlab中用函数linmod()和dlinmod()来分别实现连续模型和离散系统、混杂系统的线性化,其具

23、体使用方法如下: A,B,C,D = linmod(filename); A,B,C,D = dlinmod(filename, Ts)。3平衡点分析 Simulink通过函数trim()来计算动态系统的平衡点。并不是所有时候都有解,如果无解,函数trim()将返回离期望状态最近的解。9.9 模型的调试 1Simulink调试器 2命令行调试 3设置断点 4显示仿真的信息 5显示模型的信息 Simulink提供了调试器,以方便查找和诊断模型中的错误,它允许通过单步运行仿真显示模块的即时状态、输入和输出。1Simulink调试器 下表对该对话框工具栏各按钮的功能进行了详细介绍 。调试器工具栏 2

24、命令行调试 许 多 Simulink命 令 和 消 息 是 通 过Method ID和Block ID来引用方法和模块的。 Method ID是按方法被调用的顺序从0开始分配的一个整数; Block ID是在编译阶段分配的,形式为sid:bid。3设置断点 断点就是使仿真运行到该位置时停止,同时可以使用命令continue使仿真继续运行。调试器允许定义无条件断点和有条件断点。(1)设置无条件断点 设置无条件断点有如下3种方式: 通过调试器工具栏; 通过调试器Simulation Loop页; 通过在MATLAB命令窗口运行相关命令。(2)设置有条件断点 设置有条件断点可以通过在调试器【Brea

25、k on conditions】页中设置相应的断点条件来实现。4显示仿真的信息 Simulink调试器工具条中的按钮用于显示模块的输入/输出信息。 首先在模型窗口选中模块; 然后用鼠标左键单击该按钮,被选中的模块在当前采样点的输入、输出和状态信息将显示在调试器窗口的【Outputs】页中。 5显示模型的信息 调试器除了可以显示仿真的相关信息外,还可以显示模型的相关信息。 在MATLAB命令窗口中,可以用命令slist显示系统中各模块的索引,模块的索引就是它们的执行顺序,它与调试器窗口中【Sorted List】页显示的内容是一样。9.10 S 函 数 9.10.1 概念 9.10.2 功能 9

26、.10.3 工作流程 9.10.4 书写规范 9.10.5 应用示例9.10.1 概念 S函数是一种描述动态系统的计算机语言,可以用MATLAB、C、C+、Ada或 Fortran语言书写。 S函数采用一种特殊的调用语法使得S函数可以和Simulink解法器进行交互。S函数可以用来描述连续、离散和混杂系统。9.10.2 功能 S函数可以实现以下操作。 可以通过它用多种语言来创建新的通用性的Simulink模块。 编写好的S函数,可以在User-Defined Functions模块库的S-function模块中通过名称来调用,并可以进行封装。 可以通过S函数将一个系统描述成一个数学方程。 便于

27、图形化仿真。 可以创建代表硬件驱动的模块。9.10.3 工作流程 1模块输入、状态和输出间的数学关系 2Simulink仿真流程 3S函数的回调函数1模块输入、状态和输出间的数学关系 描述一个Simulink模块需要3个基本元素: 输入向量(u); 状态向量(x); 输出向量(y)。 输出是输入向量、状态向量和采样时间的函数。在计算中,往往需要利用如下所示的3种关系。 Simulink在仿真时把上面的关系对应为不同的函数,它们分别实现计算模块的输出、更新模块的离散状态和计算连续状态的微分。2Simulink仿真流程 Simulink仿真按照如下图所示的流程进行。 初始化阶段,Simulink将

28、库中的模块并入到自建模型中; 然后进入仿真循环; 如此循环直至仿真结束。3S函数的回调函数 一个S函数是由一系列回调函数组成,在 仿 真 循 环 中 的 每 个 仿 真 阶 段 都 由Simulink调用回调函数来执行相应的任务。 S函数的回调函数可以完成以下任务。 初始化; 计算下一个采样点; 计算当前仿真步的输出; 更新当前仿真步的离散状态; 积分。 9.10.4 书写规范 每一个M文件S函数具有如下的形式: sys,x0,str,ts=f(t,x,u,flag,p1,p2,.)下表列出了上面各参数的含义。 函数各参数的含义续表 书写M文件S函数时只需用MATLAB语言来编写每个flag值

29、对应的子函数即可。 下表列出了在各个仿真阶段对应要执行的回调函数以及相应的flag参数值。各个仿真阶段对应要执行的S函数方法 9.10.5 应用示例 利用“User-Defined Functions”库中的S-Function模块创建由MATLAB语言书写的M文件S函数。 运行Simulink模型可得到如下图所示的仿真结果。上下两个模块的输出结果一样,证明了S函数的功能是正确的。9.11 实 例 例 针对平面直角坐标系,实现坐标在几种常用坐标系间的变换,具体步骤如下。 首先列出常用的坐标系。(1)直角坐标系 (oxy) 原点o位于任意位置,轴ox指向任意方向,轴oy垂直于轴ox。(2)极坐标

30、系(ox) 极点o与直角坐标系的原点o重合,极轴ox与直角坐标系的轴ox重合,矢径与极轴ox的夹角为极角。(3)平移直角坐标系(o1x1y1) 原点o1在原直角坐标系的坐标为(g,h),轴o1x1和o1y1分别平行于原直角坐标系的轴ox和oy。(4)旋转直角坐标系(ox2y2) 原点o与原直角坐标系的原点o重合,轴ox2和oy2分别逆时针旋转角度。 其次写出坐标在不同坐标系间的转换关系。 再次构造Simulink框图。(1)由极坐标系转换到直角坐标系的框图如下图所示。 按下“Ctrl+A”键选中所有模块和连线,并创建子系统。 双击该子系统,修改模块In1的标注为“极坐标”,模块Out1的标注为“直角坐标”。得到如下图所示的结果。 然后封装该子系统并设置参数,同保存该子系统为.mdl文件。(2)由平移直角坐标系转换到直角坐标系的框图。类似于上面的步骤,创建的子系统如下图所示。 其 中 , 利 用 到 模 块 Constant、Demux、Mux和Fcn。 封装该子系统并设置参数,双击如下图所示的子系统。 可看到如下图所示的结果。 (3)由旋转直角坐标系转换到直角坐标系的框图。 建立如下图所示的子系统, 并进行如下图所示的封装设置。 最后构成并保存自建模型库,如下图所示。习 题

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号