- 2.82 MB
- 2022-04-29 14:32:04 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
'simulink教程
本章主要讲解:Simulink的概念及其应用;Simulink搭建系统模型的方法及特点;Simulink环境中的仿真及调试。
目录9.1Simulink概述9.2模型的创建9.3子系统及其封装9.4过零检测9.5代数环
9.1.1Simulink的概念Simulink是MATLAB提供的实现动态系统建模和仿真的软件包,是MATLAB相对独立的重要的组成部分。Simulink的突出特点是支持图形用户界面(GUI),模型由模块组成的框图来表示。
启动Simulink(6.0版)有如下3种方式:在MATLAB的命令窗口直接键入命令Simulink;用鼠标左键单击MATLAB工具条上的按钮;在MATLAB菜单上选择【File】|【New】|【Model】选项。
运行后会弹出如下图所示的Simulink模块库浏览器窗口。
使用第3种方式打开时还会弹出如下图所示的新建模型窗口。
1.【File】菜单2.【Edit】菜单3.【View】菜单9.1.2Simulink的工作环境
4.【Simulation】菜单5.【Format】菜单6.【Tools】菜单7.【Help】菜单
Simulink模块库浏览器各部分的用途,如下图所示。
1.【File】菜单【File】菜单中各选项的名称与功能如下表所示。
【File】菜单
2.【Edit】菜单【Edit】菜单中各选项的名称与功能如下表所示。
【Edit】菜单
3.【View】菜单【View】菜单中部分主要选项的名称与功能如下表所示。【View】菜单
4.【Simulation】菜单【Simulation】菜单如下图所示。
【Simulation】菜单各选项的功能如下:【Start】:开始运行仿真;【Stop】:停止仿真;【ConfigurationParameters】:设置仿真参数和选择解法器;【Normal】、【Accelerator】、【External】分别表示正常工作模式、加速仿真和外部工作模式。
5.【Format】菜单【Format】菜单用于设置字体、屏幕颜色、模块名的显示、模块显示颜色、信号和端口类型和宽度等。该菜单部分主要选项的名称与功能如下表所示。
【Format】菜单
6.【Tools】菜单【Tools】菜单中部分主要选项的名称与功能如下表所示。
【Tools】菜单
7.【Help】菜单【Help】菜单中部分主要选项的名称与功能如下表所示。
【Help】菜单
9.1.3Simulink的工作原理1.图形化模型与数学模型间的关系2.图形化模型的仿真过程
1.图形化模型与数学模型间的关系现实中每个系统都有输入、输出和状态3个基本要素,以及它们之间随时间变化的数学函数关系,即数学模型。
图形化模型也体现了输入、输出和状态间随时间变化的某种关系,如下图所示。只要这两种关系在数学上是等价的,那么就可以图形化模型代替数学模型。
2.图形化模型的仿真过程Simulink的仿真过程包括如下几个阶段:模型编译阶段;连接阶段;仿真环阶段。
(1)模型编译阶段Simulink引擎调用模型编译器,将模型编译成可执行文件。编译器完成以下任务:计算模块参数的表达式以确定它们的值;确定信号属性(如名字、数据类型等);传递信号属性以确定未定义信号的属性。
优化模块;展开模型的继承关系(如子系统);确定模块运行的优先级;确定模块的采样时间。
(2)连接阶段Simulink引擎按执行次序创建运行列表,初始化每个模块的运行信息。
(3)仿真环阶段Simulink引擎从仿真的开始到结束,在每一个采样点按运行列表计算各模块的状态和输出。
仿真环阶段又分成以下两个子阶段:初始化阶段:该阶段只运行一次,用于初始化系统的状态和输出;迭代阶段:该阶段在定义的时间段内按采样点间的步长重复运行。
9.1.4Simulink模型的特点Simulink建立的模型具有以下3个特点:仿真结果的可视化;模型的层次性;可封装子系统。
9.1.5Simulink里的数据类型1.Simulink支持的数据类型2.数据类型的传播3.使用复数信号
Simulink在仿真开始之前和运行过程中会自动确认模型的类型安全性,以保证该模型产生的代码不会出现上溢或下溢。
1.Simulink支持的数据类型Simulink支持所有的MATLAB内置数据类型,除此之外Simulink还支持布尔类型。打开Simulink模型窗口中的菜单Help下的选项BlockSupportTable,打开如下图所示的帮助窗口,总结了所有Simulink库中的模块所支持的数据类型。
打开Simulink模型窗口的【Format】|【Port/SignalDisplays】|【PortDataTypes】,查看信号的数据类型和模块输入/输出端口的数据类型,如下图所示。
2.数据类型的传播相连模块的输出/输入信号所支持的数据类型如果是不相同的,在仿真中就会弹出错误提示对话框,告知出现冲突的信号和端口。此时可以尝试在冲突的模块间插入DataTypeConversion模块来解决类型冲突。
3.使用复数信号Simulink默认的信号值都是实数,但在实际问题中有时需要处理复数信号。在Simulink中通常用下面两种方法来建立处理复数信号的模型,如下图所示。
在模型中加入Constant模块,并将其参数设为复数。分别生成复数的虚部和实部,再用Real-ImagetoComplex模块把它们联合成一个复数。分别生成复数的幅值和幅角,再用Magnitue-AngletoComplex模块把它们联合成一个复数。
9.1.6Simulink里的模块和模块库模块库提供各种基本模块,它按应用领域以及功能组成若干子库,并按树状结构进行显示。模块是Simulink建模的基本元素。下表详细介绍了Simulink中常用子库中常用模块的功能。
CommonlyUsedBlocks子库
Continuous子库
Discontinuities子库
Discrete子库
LogicandBitOperations子库
续表
MathOperations子库
续表
Ports&Subsystems子库
续表
Sinks子库
Sources子库
User-DefinedFunctions子库
9.2模型的创建1.模块的基本操作2.创建模型的基本步骤3.模型文件格式
1.模块的基本操作下表汇总了Simulink对模块进行操作的部分方法。对模块进行操作
续表
下表汇总了Simulink对直线进行操作的部分方法。对直线进行操作
双击模块将会弹出【参数设置】对话框,如下图所示的增益模块,进而设置参数值。
鼠标右键单击模块并在弹出的上下文菜单中选择【BlockProperties】,会弹出属性设置对话框,如下图所示,其中包括如下三项内容。【General】页;【BlockAnnotation】页;【Callbacks】页。
(1)【General】页Description:用于对该模块在模型中的用法进行注释;Priority:定义该模块在模型中执行的优先顺序;Tag:为模块添加文本格式的标记。
(2)【BlockAnnotation】页用于指定在图标下显示模块的参数、取值及格式。
(3)【Callbacks】页用于定义该模块发生某种指定行为时所要执行的回调函数。对信号进行标注以及对模型进行注释,方法如下表所示。
在连线上反映信息
对注释进行处理
2.创建模型的基本步骤利用Simulink进行系统建模和仿真的一般步骤如下。绘制系统流图;启动Simulink模块库浏览器,新建一个空白模型窗口;将所需模块放入空白模型窗口中,按系统流图的布局连接各模块,并封装子系统;
设置各模块的参数以及与仿真有关的各种参数;保存模型,模型文件的后缀名为.mdl;运行并调试模型。
3.模型文件格式Simulink还提供了通过命令行建立模型和设置模型参数的方法。Simulink将每一个模型(包括库)都保存在一个以.mdl为后缀的文件里,称为模型文件。一个模型文件就是一个结构化的ASCII文件,它包括关键字和各种参数的值。
9.3子系统及其封装9.3.1创建子系统9.3.2封装子系统9.3.3自定义模块库
9.3.1创建子系统1.子系统的作用2.子系统的创建方法3.子系统创建示例
1.子系统的作用通过子系统可以把复杂的模型分割成若干个简单的模型,具有以下优点:减少模型窗口中模块的个数,使得模型窗口整洁。把一些功能相关的模块集成在一起,可以复用。通过子系统可以实现模型图表的层次化。
2.子系统的创建方法Simulink有如下两种创建子系统的方法。通过子系统模块来创建子系统:先向模型中添加Subsystem模块,然后打开该模块并向其中添加模块;组合已存在的模块集。
3.子系统创建示例例通过Subsystem模块创建子系统。具体步骤如下。从Ports&Subsystems中复制Subsystem模块到模型中,如下图所示;用鼠标左键双击Subsystem模块图标打开如下图所示Subsystem模块编辑窗口;
在新的空白窗口创建子系统,然后保存;运行仿真并保存。
例通过组合已存在的模块创建子系统。具体步骤如下。创建如下图所示的系统;选中要创建成子系统的模块,如下图所示;
选择【Edit】|【CreateSubsystem】菜单,结果如下图所示;运行仿真并保存。
9.3.2封装子系统1.封装的作用2.封装的过程3.封装示例
封装后的子系统与Simulink提供的模块一样拥有图标,并且用鼠标左键双击图标时会出现一个用户自定义的【参数设置】对话框,实现在对话框中设置子系统中的参数。
1.封装的作用子系统中各个模块的参数通过参数对话框就可以进行设置。为子系统创建可以反映子系统功能的图标。可以避免用户在无意中修改子系统中模块的参数。
2.封装的过程选择需要封装的子系统,并选择【Edit】|【MaskSubsystem】菜单进行封装。选择【Edit】|【Editmask】菜单,这时会弹出如下图所示的封装编辑器,通过它进行各种设置。单击【Apply】或【OK】按钮保存设置。
3.封装示例例简介封装的过程。具体步骤如下:(1)建立如下图所示的含有子系统的模型,并设置子系统中Gain模块的Gain参数为一变量m。
(2)选中模型中的Subsystem子系统,选择【Edit】|【MaskSubsystem】菜单进行封装,进而选择【Edit】|【Editmask】菜单(或用鼠标右键单击子系统弹出上下文菜单,选择【Editmask】菜单)打开封装编辑器,如下图所示。
(3)按照如下图所示设置【Icon页】。①Iconoptions面板:定义图标的边框是否可见等。②Drawingcommands文本框:定义绘制模型图标的方式。③Examplesofdrawingcommands面板:说明各种绘制图标的命令,每种命令都对应一个示例。
(4)按照如下图所示设置【Parameters】页。
定义封装子系统参数设置对话框的可设置参数,其中各项设置的含义如下图所示。
(5)按照如下图所示设置【Initialization】页。定义封装子系统的初始化命令,包括MATLAB表达式、函数、运算符和在【Parameters】页定义的变量。
(6)按照如下图所示设置【Documentation】页
定义封装子系统的封装类型、模块描述和模块帮助信息,其中各项设置的含义如下图所示。
(7)设置参数后运行仿真,用鼠标左键双击模型中的Scope模块,看到如下图所示的结果。
9.3.3自定义模块库大量封装子系统模块按照功能需要分门别类地来存储,以方便查找,每一类即为一模块库。通过自定义模块库,可以将为某个领域服务的所有模块集中存放。
通过选择Simulink界面的【File】|【New】|【Library】菜单来创建模块库。选中该菜单后将弹出一个空白的库窗口;然后将需要存放在同一模块库中的模块复制到模块库窗口中即可,如下图所示。
9.4过零检测过零检测通过Simulink为模块注册若干过零函数,当变化趋势剧烈时,过零函数发生符号变化。
每个采样点仿真结束时Simulink检测是否有过零函数符号变化,如果检测到过零点,Simulink将在前一个采样点和目前采样点间内插值。
下表列出了Simulink中支持过零检测的模块。支持过零点检测的模块
9.5代数环如果Simulink模块的输入是依赖于该模块的输出,就会产生一个代数环,如下图所示。这意味着无法进行仿真,因为没有输入就得不到输出,没有输出也得不到输入。
解决代数环的办法包括以下几种:尽量不形成代数环的结构,采用替代结构;为可以设置初始值的模块设置初值;对于离散系统,在模块的输出一侧增加unitdelay模块;对于连续系统,在模块的输出一侧增加memory模块。
为模型或模块设置回调函数的方法有下面两种:通过模型或模块的属性对话框来设置;通过MATLAB相关的命令来设置。9.6回调函数
模型属性设置见下图。
模块属性设置见下图。
模型属性设置对话框中的Callbacks页给出了回调函数列表,如下表所示。模型的回调参数
模块的回调参数
续表
9.7运行仿真1.使用窗口运行仿真2.仿真参数设置3.仿真诊断对话框4.使用命令运行仿真5.改善仿真性能及精度
1.使用窗口运行仿真建立好模型后,可以直接在模型窗口通过菜单项或工具栏进行仿真,如下图所示。
2.仿真参数设置可以通过模型窗口的【Simulation】|【ConfigurationParameters】菜单项打开设置仿真参数的对话框,如下图所示。
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.改善仿真性能及精度Simulink的仿真性能和精度受许多因素的影响,包括模型的设计、仿真参数的设置等。但是对于某些问题,适当的调整仿真参数可以得到更好的结果,如:加速仿真提高精度
9.8仿真结果分析1.观看输出结果2.线性化分析3.平衡点分析
1.观看输出结果在Simulink中有如下3种方法绘制模型的仿真结果。在模型中将信号输入到Scope模块;将输出写入ToWorkspace模块,然后使用MATLAB绘图功能。将输出写入ToFile模块,然后使用MATLAB文件读取和绘图功能。
2.线性化分析Matlab中用函数linmod()和dlinmod()来分别实现连续模型和离散系统、混杂系统的线性化,其具体使用方法如下:[A,B,C,D]=linmod(filename);[A,B,C,D]=dlinmod(filename,Ts)。
3.平衡点分析Simulink通过函数trim()来计算动态系统的平衡点。并不是所有时候都有解,如果无解,函数trim()将返回离期望状态最近的解。
9.9模型的调试1.Simulink调试器2.命令行调试3.设置断点4.显示仿真的信息5.显示模型的信息
Simulink提供了调试器,以方便查找和诊断模型中的错误,它允许通过单步运行仿真显示模块的即时状态、输入和输出。
1.Simulink调试器下表对该对话框工具栏各按钮的功能进行了详细介绍。
调试器工具栏
2.命令行调试许多Simulink命令和消息是通过MethodID和BlockID来引用方法和模块的。MethodID是按方法被调用的顺序从0开始分配的一个整数;BlockID是在编译阶段分配的,形式为sid:bid。
3.设置断点断点就是使仿真运行到该位置时停止,同时可以使用命令continue使仿真继续运行。调试器允许定义无条件断点和有条件断点。
(1)设置无条件断点设置无条件断点有如下3种方式:通过调试器工具栏;通过调试器SimulationLoop页;通过在MATLAB命令窗口运行相关命令。
(2)设置有条件断点设置有条件断点可以通过在调试器【Breakonconditions】页中设置相应的断点条件来实现。
4.显示仿真的信息Simulink调试器工具条中的按钮用于显示模块的输入/输出信息。首先在模型窗口选中模块;然后用鼠标左键单击该按钮,被选中的模块在当前采样点的输入、输出和状态信息将显示在调试器窗口的【Outputs】页中。
5.显示模型的信息调试器除了可以显示仿真的相关信息外,还可以显示模型的相关信息。在MATLAB命令窗口中,可以用命令slist显示系统中各模块的索引,模块的索引就是它们的执行顺序,它与调试器窗口中【SortedList】页显示的内容是一样。
9.10S函数9.10.1概念9.10.2功能9.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-DefinedFunctions模块库的S-function模块中通过名称来调用,并可以进行封装。
可以通过S函数将一个系统描述成一个数学方程。便于图形化仿真。可以创建代表硬件驱动的模块。
9.10.3工作流程1.模块输入、状态和输出间的数学关系2.Simulink仿真流程3.S函数的回调函数
1.模块输入、状态和输出间的数学关系描述一个Simulink模块需要3个基本元素:输入向量(u);状态向量(x);输出向量(y)。
输出是输入向量、状态向量和采样时间的函数。在计算中,往往需要利用如下所示的3种关系。
Simulink在仿真时把上面的关系对应为不同的函数,它们分别实现计算模块的输出、更新模块的离散状态和计算连续状态的微分。
2.Simulink仿真流程Simulink仿真按照如下图所示的流程进行。初始化阶段,Simulink将库中的模块并入到自建模型中;然后进入仿真循环;如此循环直至仿真结束。
3.S函数的回调函数一个S函数是由一系列回调函数组成,在仿真循环中的每个仿真阶段都由Simulink调用回调函数来执行相应的任务。
S函数的回调函数可以完成以下任务。初始化;计算下一个采样点;计算当前仿真步的输出;更新当前仿真步的离散状态;积分。
9.10.4书写规范每一个M文件S函数具有如下的形式:[sys,x0,str,ts]=f(t,x,u,flag,p1,p2,...)下表列出了上面各参数的含义。
函数各参数的含义
续表
书写M文件S函数时只需用MATLAB语言来编写每个flag值对应的子函数即可。下表列出了在各个仿真阶段对应要执行的回调函数以及相应的flag参数值。
各个仿真阶段对应要执行的S函数方法
9.10.5应用示例利用“User-DefinedFunctions”库中的S-Function模块创建由MATLAB语言书写的M文件S函数。
运行Simulink模型可得到如下图所示的仿真结果。上下两个模块的输出结果一样,证明了S函数的功能是正确的。
9.11实例例针对平面直角坐标系,实现坐标在几种常用坐标系间的变换,具体步骤如下。首先列出常用的坐标系。(1)直角坐标系(oxy)原点o位于任意位置,轴ox指向任意方向,轴oy垂直于轴ox。
(2)极坐标系(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)由旋转直角坐标系转换到直角坐标系的框图。建立如下图所示的子系统,
并进行如下图所示的封装设置。
最后构成并保存自建模型库,如下图所示。
习题
苏教版四年级数学下册积的变化规律刘寨小学卫少芳
教学目标1.探索、发现“一个因数不变,另一个因数乘几,得到的积就等于原来的积乘几”的变化规律;能运用积的变化规律灵活地进行计算。2.经历观察、比较、猜想、验证和归纳等一系列的数学活动,体验探索和发现数学规律的经验,发展思维能力。
小明在计算“42×5”时,将因数5写成了50并进行了计算。问题一:小明能算出这个算式的正确答案吗?问题二:那他算出的积和正确的答案之间会有什么关系呢?
①第一个因数不变,第二个因数乘2,得到的积等于原来的积乘2。②第一个因数不变,第二个因数乘10,得到的积等于原来的积乘10。③第二个因数不变,第一个因数乘4,得到的积等于原来的积乘4。④第二个因数不变,第一个因数乘5,得到的积等于原来的积乘5。
小结:一个因数不变,另一个因数乘几,得到的积就等于原来的积乘几。
你学会了吗?通过本课的学习,你有什么收获?还有哪些疑问?'
您可能关注的文档
- 最新RoHS培训资料剖析课件PPT.ppt
- 最新S6洛伦兹力初探课件PPT.ppt
- 最新s2032 右下角gap超规课件PPT.ppt
- 最新RxNorm资料课件PPT.ppt
- 最新saber-无源逆变电路的仿真课件PPT.ppt
- 最新SBAR沟通模式课件PPT.ppt
- 最新Section-A-2人教版七年级英语下册第3单元课件PPT课件.ppt
- 最新Shopping购物课件PPT.ppt
- 最新ShehadeggsandsausagesPPT课件4课件PPT.ppt
- 最新Slide1广州中医药大学(精)课件PPT.ppt
- 最新Smart-growth(精明增长、省市规划)课件PPT.ppt
- 最新SNRI的双通道作用机制带来更好的疗效课件PPT.ppt
- 最新solidworks案例教程《蝶形螺母建模》课件PPT.ppt
- 最新spss表格基本操作课件PPT.ppt
- 最新SQL补充触发器临时表与游标课件PPT.ppt
- 最新stp生成树三台二层课件PPT.ppt
- 最新STEMI溶栓后PCI时机选择策略课件PPT.ppt
- 最新SVG培训(8.6)资料课件PPT.ppt