版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 本章主要讲解: Simulink的概念及其应用; Simulink搭建系统模型的方法及特点; Simulink环境中的仿真及调试。 6 回 调 函 数 7 运 行 仿 真 8 仿真结果分析 9 模型的调试 10 S 函 数 11 实 例 1.1 Simulink的概念 1.2 Simulink的工作环境 1.3 Simulink的工作原理 1.4 Simulink模型的特点 1.5 Simulink里的数据类型 1.6 Simulink里的模块和模块库 Simulink是MATLAB提供的实现动态系统建模和仿真的软件包,是MATLAB相对独立的重要的组成部分。 Simulink的突出特点是支
2、持图形用户界面(GUI),模型由模块组成的框图来表示。 启动Simulink(6.0版)有如下3种方式: 在 M AT L A B 的 命 令 窗 口 直 接 键 入 命 令Simulink; 用鼠标左键单击MATLAB工具条上的按钮; 在MATLAB菜单上选择【File】|【New】|【Model】选项。 运行后会弹出如下图所示的Simulink模块库浏览器窗口 。 使用第3种方式打开时还会弹出如下图所示的新建模型窗口。 1【File】菜单 2【Edit】菜单 3【View】菜单 4【Simulation】菜单 5【Format】菜单 6【Tools】菜单 7【Help】菜单 Simulin
3、k模块库浏览器各部分的用途,如下图所示。 【File】菜单中各选项的名称与功能如下表所示。【File】菜单 【Edit】菜单中各选项的名称与功能如下表所示。【Edit】菜单 【View】菜单中部分主要选项的名称与功能如下表所示。【View】菜单 【Simulation】菜单如下图所示。【Simulation】菜单各选项的功能如下 : 【Start】:开始运行仿真; 【Stop】:停止仿真; 【Configuration Parameters】:设置仿真参数和选择解法器; 【Normal】、【Accelerator】、【External】分别表示正常工作模式、加速仿真和外部工作模式。 【Form
4、at】菜单用于设置字体、屏幕颜色、模块名的显示、模块显示颜色、信号和端口类型和宽度等。 该菜单部分主要选项的名称与功能如下表所示。【Format】菜单 【Tools】菜单中部分主要选项的名称与功能如下表所示。【Tools】菜单 【Help】菜单中部分主要选项的名称与功能如下表所示。【Help】菜单 1图形化模型与数学模型间的关系 2图形化模型的仿真过程 现实中每个系统都有输入、输出和状态3个基本要素,以及它们之间随时间变化的数学函数关系,即数学模型。 图形化模型也体现了输入、输出和状态间随时间变化的某种关系,如下图所示。 只要这两种关系在数学上是等价的,那么就可以图形化模型代替数学模型。 Si
5、mulink的仿真过程包括如下几个阶段: 模型编译阶段; 连接阶段; 仿真环阶段。(1)模型编译阶段 Simulink引擎调用模型编译器,将模型编译成可执行文件。 编译器完成以下任务: 计算模块参数的表达式以确定它们的值; 确定信号属性(如名字、数据类型等); 传递信号属性以确定未定义信号的属性。 优化模块; 展开模型的继承关系(如子系统); 确定模块运行的优先级; 确定模块的采样时间。(2)连接阶段 Simulink引擎按执行次序创建运行列表,初始化每个模块的运行信息。(3)仿真环阶段 Simulink引擎从仿真的开始到结束,在每一个采样点按运行列表计算各模块的状态和输出。 仿真环阶段又分成
6、以下两个子阶段: 初始化阶段:该阶段只运行一次,用于初始化系统的状态和输出; 迭代阶段:该阶段在定义的时间段内按采样点间的步长重复运行。 Simulink建立的模型具有以下3个特点: 仿真结果的可视化; 模型的层次性; 可封装子系统。 1Simulink支持的数据类型 2数据类型的传播 3使用复数信号 Simulink在仿真开始之前和运行过程中会自动确认模型的类型安全性,以保证该模型产生的代码不会出现上溢或下溢。 Simulink支持所有的MATLAB内置数据类型,除此之外Simulink还支持布尔类型。 打开Simulink模型窗口中的菜单Help下的选项Block Support Tabl
7、e,打开如下 图 所 示 的 帮 助 窗 口 , 总 结 了 所 有Simulink库中的模块所支持的数据类型。 打开Simulink模型窗口的【Format】|【Port/Signal Displays】|【Port Data Types】,查看信号的数据类型和模块输入/输出端口的数据类型,如下图所示。 相连模块的输出/输入信号所支持的数据类型如果是不相同的,在仿真中就会弹出错误提示对话框,告知出现冲突的信号和端口。 此时可以尝试在冲突的模块间插入DataTypeConversion模块来解决类型冲突。 Simulink默认的信号值都是实数,但在实际问题中有时需要处理复数信号。 在Simul
8、ink中通常用下面两种方法来建立处理复数信号的模型,如下图所示。 在模型中加入Constant模块,并将其参数设为复数。 分别生成复数的虚部和实部,再用Real-Image to Complex模块把它们联合成一个复数。 分 别 生 成 复 数 的 幅 值 和 幅 角 , 再 用Magnitue-Angle to Complex模块把它们联合成一个复数。 模块库提供各种基本模块,它按应用领域以及功能组成若干子库,并按树状结构进行显示。 模块是Simulink建模的基本元素。 下表详细介绍了Simulink中常用子库中常用模块的功能 。Commonly Used Blocks子库 Continu
9、ous子库 Discontinuities子库 Discrete子库 Logic and Bit Operations子库 续表Math Operations子库 续表Ports & Subsystems子库续表Sinks子库 Sources子库User-Defined Functions子库 1模块的基本操作 2创建模型的基本步骤 3模型文件格式 下表汇总了Simulink对模块进行操作的部分方法。对模块进行操作续表 下表汇总了Simulink对直线进行操作的部分方法。对直线进行操作 双击模块将会弹出【参数设置】对话框,如下图所示的增益模块,进而设置参数值。 鼠标右键单击模块并在弹出
10、的上下文菜单中选择【Block Properties】,会弹出属性设置对话框,如下图所示,其中包括如下三项内容。 【General】页; 【Block Annotation】页; 【Callbacks】页。(1)【General】页 Description:用于对该模块在模型中的用法进行注释; Priority:定义该模块在模型中执行的优先顺序; Tag:为模块添加文本格式的标记。(2)【Block Annotation】页 用于指定在图标下显示模块的参数、取值及格式。(3)【Callbacks】页 用于定义该模块发生某种指定行为时所要执行的回调函数。 对信号进行标注以及对模型进行注释,方法如
11、下表所示。在连线上反映信息 对注释进行处理 利用Simulink进行系统建模和仿真的一般步骤如下。 绘制系统流图; 启动Simulink模块库浏览器,新建一个空白模型窗口; 将所需模块放入空白模型窗口中,按系统流图的布局连接各模块,并封装子系统; 设置各模块的参数以及与仿真有关的各种参数; 保存模型,模型文件的后缀名为.mdl; 运行并调试模型。 Simulink还提供了通过命令行建立模型和设置模型参数的方法。 Simulink将每一个模型(包括库)都保存在一个以.mdl为后缀的文件里,称为模型文件。 一个模型文件就是一个结构化的ASCII文件,它包括关键字和各种参数的值。 3.1 创建子系统
12、 3.2 封装子系统 3.3 自定义模块库 1子系统的作用 2子系统的创建方法 3子系统创建示例 通过子系统可以把复杂的模型分割成若干个简单的模型,具有以下优点: 减少模型窗口中模块的个数,使得模型窗口整洁。 把一些功能相关的模块集成在一起,可以复用。 通过子系统可以实现模型图表的层次化。 Simulink有如下两种创建子系统的方法。 通过子系统模块来创建子系统:先向模型中添加Subsystem模块,然后打开该模块并向其中添加模块; 组合已存在的模块集。例 通过Subsystem模块创建子系统。具体步骤如下。 从Ports&Subsystems中复制Subsystem模块到模型中,如下
13、图所示; 用鼠标左键双击Subsystem模块图标打开如下图所示Subsystem模块编辑窗口; 在新的空白窗口创建子系统,然后保存; 运行仿真并保存。例 通过组合已存在的模块创建子系统。具体步骤如下。 创建如下图所示的系统; 选中要创建成子系统的模块,如下图所示; 选择【Edit】|【Create Subsystem】菜单,结果如下图所示; 运行仿真并保存。 1封装的作用 2封装的过程 3封装示例 封装后的子系统与Simulink提供的模块一样拥有图标,并且用鼠标左键双击图标时会出现一个用户自定义的【参数设置】对话框,实现在对话框中设置子系统中的参数。 子系统中各个模块的参数通过参数对话框就
14、可以进行设置。 为子系统创建可以反映子系统功能的图标。 可以避免用户在无意中修改子系统中模块的参数。 选择需要封装的子系统,并选择【Edit】|【Mask Subsystem】菜单进行封装。 选择【Edit】|【Edit mask】菜单,这时会弹出如下图所示的封装编辑器,通过它进行各种设置。 单击【Apply】或【OK】按钮保存设置。例 简介封装的过程。具体步骤如下: (1)建立如下图所示的含有子系统的模型,并设置子系统中Gain模块的Gain参数为一变量m。 (2)选中模型中的Subsystem子系统,选择【Edit】|【Mask Subsystem】菜单进行封装,进而选择【Edit】|【E
15、dit mask】菜单(或用鼠标右键单击子系统弹出上下文菜单,选择【Edit mask】菜单)打开封装编辑器,如下图所示。 (3)按照如下图所示设置【Icon页】。 Icon options面板:定义图标的边框是否可见等。 Drawing commands文本框:定义绘制模型图标的方式。 Examples of drawing commands面板:说明各种绘制图标的命令,每种命令都对应一个示例。 (4)按照如下图所示设置【Parameters】页。 定义封装子系统参数设置对话框的可设置参数,其中各项设置的含义如下图所示。 ( 5 ) 按 照 如 下 图 所 示 设 置 【Initializa
16、tion】页。定义封装子系统的初始化命令,包括MATLAB表达式、函数、运算符和在【Parameters】页定义的变量。 (6)按照如下图所示设置【Documentation】页 定义封装子系统的封装类型、模块描述和模块帮助信息,其中各项设置的含义如下图所示。 (7)设置参数后运行仿真,用鼠标左键双击模型中的Scope模块,看到如下图所示的结果。 大量封装子系统模块按照功能需要分门别类地来存储,以方便查找,每一类即为一模块库。 通过自定义模块库,可以将为某个领域服务的所有模块集中存放。 通过选择Simulink界面的【File】|【New】|【Library】菜单来创建模块库。 选中该菜单后将
17、弹出一个空白的库窗口; 然后将需要存放在同一模块库中的模块复制到模块库窗口中即可,如下图所示。 过零检测通过Simulink为模块注册若干过零函数,当变化趋势剧烈时,过零函数发生符号变化。 每个采样点仿真结束时Simulink检测是否有过零函数符号变化,如果检测到过零点,Simulink将在前一个采样点和目前采样点间内插值。 下表列出了Simulink中支持过零检测的模块。支持过零点检测的模块 如果Simulink模块的输入是依赖于该模块的输出,就会产生一个代数环,如下图所示。 这意味着无法进行仿真,因为没有输入就得不到输出,没有输出也得不到输入。 解决代数环的办法包括以下几种: 尽量不形成代
18、数环的结构,采用替代结构; 为可以设置初始值的模块设置初值; 对于离散系统,在模块的输出一侧增加unit delay模块; 对于连续系统,在模块的输出一侧增加memory模块。 为模型或模块设置回调函数的方法有下面两种: 通过模型或模块的属性对话框来设置; 通过MATLAB相关的命令来设置。模型属性设置见下图。模块属性设置见下图。 模型属性设置对话框中的Callbacks页给出了回调函数列表,如下表所示。模型的回调参数 模块的回调参数 续表 1使用窗口运行仿真 2仿真参数设置 3仿真诊断对话框 4使用命令运行仿真 5改善仿真性能及精度 建立好模型后,可以直接在模型窗口通过菜单项或工具栏进行仿真
19、,如下图所示。 可以通过模型窗口的【Simulation】|【Configuration Parameters】菜单项打开设置仿真参数的对话框,如下图所示。 如果模型在运行过程中遇到错误,将停止仿真,并弹出仿真诊断对话框。通过该对话框,可以了解模型出错的位置和原因,如下图所示。 MATLAB允许通过命令窗口运行仿真。MATLAB提供函数sim()运行仿真,其具体使用方法如下: t,x,y = sim(filename, timespan, options, ut); t , x , y 1 , y 2 , . . . , y n = sim(filename,timespan,options,
20、ut)。 只有参量filename是必需的,各参量的含义如下表所示。 函数sim()参量 Simulink的仿真性能和精度受许多因素的影响,包括模型的设计、仿真参数的设置等。 但是对于某些问题,适当的调整仿真参数可以得到更好的结果,如: 加速仿真 提高精度 1观看输出结果 2线性化分析 3平衡点分析 在Simulink中有如下3种方法绘制模型的仿真结果。 在模型中将信号输入到Scope模块; 将输出写入To Workspace 模块,然后使用MATLAB绘图功能。 将输出写入To File 模块,然后使用MATLAB文件读取和绘图功能。 M a t l a b 中 用 函 数 l i n m
21、o d ( ) 和dlinmod()来分别实现连续模型和离散系统、混杂系统的线性化,其具体使用方法如下: A,B,C,D = linmod(filename); A,B,C,D = dlinmod(filename, Ts)。 Simulink通过函数trim()来计算动态系统的平衡点。并不是所有时候都有解,如果无解,函数trim()将返回离期望状态最近的解。 1Simulink调试器 2命令行调试 3设置断点 4显示仿真的信息 5显示模型的信息 Simulink提供了调试器,以方便查找和诊断模型中的错误,它允许通过单步运行仿真显示模块的即时状态、输入和输出。 下表对该对话框工具栏各按钮的功能
22、进行了详细介绍 。调试器工具栏 许多Simulink命令和消息是通过Method ID和Block ID来引用方法和模块的。 Method ID是按方法被调用的顺序从0开始分配的一个整数; Block ID是在编译阶段分配的,形式为sid:bid。 断点就是使仿真运行到该位置时停止,同时可以使用命令continue使仿真继续运行。调试器允许定义无条件断点和有条件断点。(1)设置无条件断点 设置无条件断点有如下3种方式: 通过调试器工具栏; 通过调试器Simulation Loop页; 通过在MATLAB命令窗口运行相关命令。(2)设置有条件断点 设置有条件断点可以通过在调试器【Break on
23、 conditions】页中设置相应的断点条件来实现。 Simulink调试器工具条中的按钮用于显示模块的输入/输出信息。 首先在模型窗口选中模块; 然后用鼠标左键单击该按钮,被选中的模块在当前采样点的输入、输出和状态信息将显示在调试器窗口的【Outputs】页中。 调试器除了可以显示仿真的相关信息外,还可以显示模型的相关信息。 在MATLAB命令窗口中,可以用命令slist显示系统中各模块的索引,模块的索引就是它们的执行顺序,它与调试器窗口中【Sorted List】页显示的内容是一样。 10.1 概念 10.2 功能 10.3 工作流程 10.4 书写规范 10.5 应用示例 S函数是一种
24、描述动态系统的计算机语言,可以用MATLAB、C、C+、Ada或 Fortran语言书写。 S函数采用一种特殊的调用语法使得S函数可以和Simulink解法器进行交互。S函数可以用来描述连续、离散和混杂系统。 S函数可以实现以下操作。 可以通过它用多种语言来创建新的通用性的Simulink模块。 编写好的S函数,可以在User-Defined Functions模块库的S-function模块中通过名称来调用,并可以进行封装。 可以通过S函数将一个系统描述成一个数学方程。 便于图形化仿真。 可以创建代表硬件驱动的模块。 1模块输入、状态和输出间的数学关系 2Simulink仿真流程 3S函数的
25、回调函数 描述一个Simulink模块需要3个基本元素: 输入向量(u); 状态向量(x); 输出向量(y)。 输出是输入向量、状态向量和采样时间的函数。在计算中,往往需要利用如下所示的3种关系。 Simulink在仿真时把上面的关系对应为不同的函数,它们分别实现计算模块的输出、更新模块的离散状态和计算连续状态的微分。 Simulink仿真按照如下图所示的流程进行。 初始化阶段,Simulink将库中的模块并入到自建模型中; 然后进入仿真循环; 如此循环直至仿真结束。 一个S函数是由一系列回调函数组成,在 仿 真 循 环 中 的 每 个 仿 真 阶 段 都 由Simulink调用回调函数来执行相应的任务。 S函数的回调函数可以完成以下任务。 初始化; 计算下一个采样点; 计算当前仿真步的输出; 更新当前仿真步的离散状态; 积分。 每一个M文件S函数具有如下的形式: sys,x0,str,ts=f(t,x,u,flag,p1,p2,.)下表列出了上面各参数的含义。 函数各参数的含义续表 书写M文件S函数时只
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年青海柴达木职业技术学院单招职业适应性考试题库附参考答案详解(夺分金卷)
- 2026年陕西青年职业学院单招职业倾向性测试题库带答案详解(培优a卷)
- 2025年东莞松山湖科学城公开招聘15人备考题库带答案详解
- 2026年青海省西宁市单招职业倾向性考试题库带答案详解(黄金题型)
- 中国铁路太原局集团有限公司2026年招聘高校毕业生1014人备考题库及一套完整答案详解
- 2026年闽西职业技术学院单招综合素质考试题库含答案详解(巩固)
- 2026年青海农牧科技职业学院单招职业技能考试题库附参考答案详解(能力提升)
- 2026年鹰潭职业技术学院单招职业适应性测试题库附答案详解
- 2025年武冈市招募特聘动物防疫专员备考题库及一套参考答案详解
- 2026年青岛远洋船员职业学院单招综合素质考试题库及1套参考答案详解
- 物业小区控烟监督制度
- 2026年郑州市检验检测有限公司公开招聘19人笔试备考题库及答案解析
- 二十届中纪委五次全会知识测试题及答案解析
- GB/T 26514-2011互叶白千层(精)油,松油烯-4-醇型茶树(精)油
- GA/T 1028.4-2017机动车驾驶人考试系统通用技术条件第4部分:道路驾驶技能考试系统
- 除灰点检技术标准
- 04第四章-火箭导弹的气动布局
- 齐鲁医学妊娠期急腹症
- 【部编版】六年级道德与法治下册全册课件
- 年龄相关性白内障课件
- 石膏头像素描之头骨篇课件
评论
0/150
提交评论