MATLAB 之 Simulink 操作基础和系统仿真模型的建立

一、Simulink 操作基础

  • Simulink 是 MATLAB 的重要组成部分既适用于线性系统,也适用于非线性系统,既适用于连续系统,也适用于离散系统和连续与离散混合系统。既适用于定常系统,也适用于时变系统。

1. Simulink 的启动与退出

1.1 Simulink 的启动

  • 在安装 MATLAB 的过程中。若选中了 Simulink 组件,则在 MATLAB 安装完成后,Simulink 也就安装好了。如果需要,可以直接启动 Simulink,步骤如下。
  • (1) 在 MATLAB 的命令行窗口输入 Simulink 命令,或选择 MATLAB 主窗口 “主页" 选项卡,单击 SIMULINK 命令组中的 Simulink 命令按钮,或选择 MATLAB 主窗口 “主页" 选项卡,单击 “文件” 命令组中的 “新建” 命令按钮,再从下拉菜单中选择 Simulink Model 命令,这时进入 Simulink 起始页。
  • (2) 在 Simulink 起始页单击 Blank Model 按钮,打开一个名为 untitled 的模型编辑窗口,如下图所示。利用模型编辑窗口,可以通过鼠标的拖放操作创建一个仿真模型。

在这里插入图片描述

  • 在 Simulink 模型编辑窗口选择 File ⟶ \longrightarrow New ⟶ \longrightarrow Blank Model 命令,或按 Ctrl+N 键,打开如下图所示的 Simulink Library Browser(Simulink 模块库浏览器)窗口。
  • 该窗口包含两个窗格,左侧的窗格以树状列表的形式列出了所有模块库。若单击某个模块库,右侧的窗格列出该模块库的子模块库;若单击某个子模块库,右侧的窗格列出该子模块库中的所有模块。

在这里插入图片描述

  • 在 Simulink Library Browser 窗口中,单击其工具栏中的按钮或按 Ctrl+N 键,可以打开模型编辑窗口。
  • (4) 模型创建完成后,在 Simulink 模型编辑窗口选择 File ⟶ \longrightarrow Save 命令或 Save as 命令,或单击模型编辑窗口工具栏中的 save 命令按钮,将模型以模型文件的格式存盘。
  • 保存文件的格式与当前系统支持的字符编码有关,如果模型中使用了中文字符,建议使用 SLX 格式存储。
  • 这里需要注意的是,Simulink 不能独立运行,只能在 MATLAB 环境中运行。

1.2 模型文件的打开

  • 如果要对一个已经存在的模型文件进行编辑修改,需要打开该模型文件,其方法有以下几种。
  • (1) 在 MATLAB 命令行窗口直接输入模型文件名(不要加扩展名),这要求该模型文件在当前文件夹下或在已定义的搜索路径中。
  • (2) 在 Simulink 起始页单击 Open file 按钮,然后选择或输入欲编辑模型的名字。或直接选择最近打开过的模型文件打开模型。
  • (3) 在 Simulink 模型编辑窗口选择 File ⟶ \longrightarrow Open 命令,或按 Ctrl+O 键,或单击工具栏中的 Open 命令按钮口,然后选择或输入欲编辑模型的名字。也可以选择 File ⟶ \longrightarrow Open Recent 命令打开最近打开过的模型文件。
  • (4) 在 Simulink Library Browser 窗口中,单击其工具栏中的 Open 命令按钮,也能打开已经存在的模型文件。

1.3 Simulink 的退出

  • 要退出 Simulink,只要关闭所有模型编辑窗口和 Simulink Library Browser 窗口即可。

2. Simulink 仿真初步

2.1 模型元素

  • 典型的 Simulink 模型包括以下 3 种元素。
  • (1) 信号源(Source)。信号源可以是 Constant(常量)、Clock(时钟)、Sine Wave(正弦波)、Step(单位阶跃函数)等。
  • (2) 系统模块。例如,Math Operations 模块(数学运算)、Continuous 模块(连续系统)、Discrete 模块(离散系统)等。
  • (3) 信宿(Sink)。信号可以在 Scope(示波器)、XY Graph(图形记录仪)上显示,也可以存储到文件(To File),导出到工作空间(To Workspace)。

2.2 仿真步骤

  • 利用 Simulink 进行系统仿真通常包括以下步骤。
  • (1) 建立系统仿真模型,包括添加模块,设置模块参数,进行模块连接等操作。
  • (2) 设置仿真参数。
  • (3) 启动仿真并分析仿真结果。

2.3 简单实例

  • 下面通过一个简单实例,说明利用 Simulink 建立仿真模型并进行系统仿真的方法。
  • 例如,我们利用 Simulink 仿真曲线 y ( t ) = sin ⁡ t sin ⁡ ( 4 π t ) ( 0 ≤ t ≤ π ) y(t)=\sin t\sin(4\pi t)(0\le t\le \pi) y(t)=sintsin(4πt)(0tπ)
  • 正弦信号由 Sources 模块库(信号源)中的 Sine Wave 模块提供,求积用 Math Operations 模块库(数学运算)中的 Product 模块实现,再用 Sinks 模块库(信号输出)中的 Scope 模块(示波器)输出波形,操作过程如下。
  • (1) 打开一个名为 untitled 的模型编辑窗口,创建仿真模型。
  • (2) 打开 Simulink Library Browser 窗口,将所需模块添加到模型中。在 Simulink Library Browser 窗口中展开 Simulink 模块库,然后单击 Sources 模块库,在右侧的窗口中找到 Sine Wave 模块,用鼠标将其拖曳到模型编辑窗口;单击 Math Operations 模块库,在右侧的窗口中找到 Product 模块,用鼠标将其拖曳到模型窗口;单击 Sinks 模块库,在右侧的窗口中找到 Scope 模块,用鼠标将其拖曳到模型窗口。
  • (3) 用连线将各个模块连接起来组成系统仿真模型,如下图所示。大多数模块两边有符号 “>”,与尖端相连的端表示信号输入端,与开口相连的端表示信号输出端。连线时从一个模块的输出端按下鼠标左键,拖曳至另一模块的信号输入端,松开鼠标左键完成连线操作,连线箭头表示信号流的方向。也可以单击信号流的源模块后,按住 Ctrl 键,然后单击信号流的目标模块,实现模块连线。

在这里插入图片描述

  • (4) 设置模块参数。对于两个 Sine Wave 模块,先分别双击它们打开其 Block Parameters 对话框,如下图所示,分别设置 Frequency(频率)为 1、4*pi,设置 Amplitude(幅值)都为 1,其余参数不改变。对于其他模块,其参数不改变。

在这里插入图片描述

  • 模型建好后,在模型编辑窗口选择 File ⟶ \longrightarrow Save 命令或 Save as 命令,或单击模型编辑窗口工具栏中的 save 命令按钮,将模型以模型文件的格式存盘。
  • (5) 设置系统仿真参数。在模型编辑窗口选择 Simulation ⟶ \longrightarrow Model Configuration Parameters 命令,打开仿真参数设置对话框,在 Star time 文本框中设置起始时间为 0,在 Stop time 文本框中设置终止时间为 pi。
  • 把 Solver options(算法选项)栏中的 Type 参数设为 Fixed-step(固定步长),并在其右侧的 Solver 下拉列表框中选择 ode5(Dormand-Prince)选项,即 5 阶 Runge-Kutta 算法,再把 Fixed-step size 的值设置为 0.001,如下图所示。

在这里插入图片描述

  • (6) 仿真操作。在模型编辑窗口选择 Simulation ⟶ \longrightarrow Run 命令,或单击工具栏中的 Run 命令按钮,再双击示波器模块,就可在示波器窗口中看到仿真结果,曲线如下图所示。

在这里插入图片描述

二、系统仿真模型的建立

  • Simulink 提供图形用户界面,用户可以用鼠标操作,从模块库中调用标准模块,将它们适当地连接起来以构成动态系统模型,并且用各模块的参数对话框为系统中各模块设置参数。
  • 当各模块的参数设置完成后,即建立起该系统的模型。如果没有对某一模块设置参数, 那就意味着使用 Simulink 预先为该模块设置的默认参数值作为该模块的参数。

1. Simulink 的基本模块

  • 模块是构成系统仿真模型的基本单元,用适当的方式把各种模块连接在一起就能够建立动态系统的仿真模型,所以构建系统仿真模型主要涉及 Simulink 模块的操作。
  • Simulink 的模块库提供了大量模块,大体分为两类:基本模块库和专业模块库。单击 Simulink Library Browser 窗口中 Simulink 前面的符号,将看到 Simulink 模块库中包含的基本子模块库,单击所需要的子模块库,在右边的窗口中将看到相应的模块,选择所需模块,可用鼠标将其拖曳到模型编辑窗口。
  • 同样,在 Simulink Library Browser 窗口左侧的 Simulink 选项上右击,在弹出的快捷菜单中选择 Open Simulink Libray 命令,将打开 Simulink 基本模块库窗口,如下图所示。双击其中的子模块库图标,打开子模块库,找到仿真所需要的模块。

在这里插入图片描述

  • 以 Continuous 模块库(连续系统)为例,在 Simulink 基本模块库窗口中双击 Continuous 模块库的图标即可打开该模块库窗口,也可以在 Simulink Library Browser 窗口中 Simulink 菜单下选中 Continuous 选项,然后在 Simulink Library Browser 窗口右侧打开连续系统模块库。
  • 在连续系统模块库中,包含 Integrator(积分环节)、Derivative(微分环节)、State- Space(状态方程)、Transfer Fcn(传递函数)等许多模块,可供连续系统建模使用。
  • Simulink 模块库内容十分丰富,其他模块库的操作方法与连续系统模块库相同。此外,我们还可以自己定制和创建模块。

2. 模块操作

2.1 添加与删除模块

  • 要把一个模块添加到模型中,首先要在 Simulink 模块库中找到该模块,然后将这个模块拖曳到模型编辑窗口中即可。
  • 要删除模块,需要先选定模块,再按 Delete 键,或选择 Edit ⟶ \longrightarrow Cut 命令或 Delete 命令。也可以右击需要删除的模块,在弹出的快捷菜单中选择 Cut 命令或 Delete 命令。Cut 命令将删除的模块送到剪贴板,Delete 命令将彻底删除模块。

2.2 选取模块

  • 要在模型编辑窗口中选择单个模块,只要用鼠标在模块上单击即可,这时模块四周出现深色边框。
  • 要选取多个模块,可以在所有模块所占区域的一角按下鼠标左键不放,拖向该区域的对角,在此过程中会出现深色框,当深色框包住了要选的所有模块后,放开鼠标左键,这时所有被选中模块的周围会出现深色边框,表示模块都被选中了。

2.3 复制模块

  • 在建立系统仿真模型时,可能需要多个相同的模块,这时可采用模块复制的方法。
  • 在同一模型编辑窗口中复制模块的方法是,单击要复制的模块,按住鼠标左键并同时按住 Ctrl 键,移动鼠标到适当位置放开鼠标左键,模块复制以后,会发现复制出的模块名称在原名称的基础上加上了编号,这是 Simulink 的约定,每个模型中的模块和名称是一一对应的, 每一一个模块都有不同的名字。
  • 在不同的模型编辑窗口之间复制模块的方法是,首先打开源模块和目标模块所在的窗口,然后单击要复制的模块,按住鼠标左键移动鼠标到相应窗口(不用按住 Ctrl 键),然后释放鼠标左键,该模块就会被复制过来,而源模块不会被删除。
  • 复制操作还可以通过在模型编辑窗口选择 Edit ⟶ \longrightarrow Copy 命令和 Edit+Paste 命令来完成。

2.4 模块外形的调整

  • 要改变单个模块的大小,首先将鼠标指针指向该模块,此时模块的四角出现白色的小方块,用鼠标左键单击其周围的 4 个白方块中的任何一个并拖动到需要的位置后释放鼠标即可。
  • 若要改变整个模型中所有模块的大小,可以选择模型编辑窗口的 View ⟶ \longrightarrow Zoom 菜单项,其中的 Zoom in 和 Zoom out 命令分别用来放大和缩小整个模型,Normal View(100%)命令用来将整个模型恢复到原始的正常大小,Fit to View 命令用来将当前选中的模块或当前模型放大到整个窗口大小来观察。
  • 要调整模块的方向,首先选定模块,然后在模型编辑窗口选择 Diagram ⟶ \longrightarrow Rotate & Flip 菜单项,其中的 Clockwise 命令使模块顺时针方向旋转 90°,Counterclockwise 命令使模块逆时针方向旋转 90°,Flip Block 命令使模块旋转 180°。
  • 要改变模块的颜色,首先选定模块,然后在模型编辑窗口选择 Diagram ⟶ \longrightarrow Format 菜单项,其中的 Foreground Color 命令用来设置模块的前景色,即模块的图标、边框和模块名的颜色。
  • 选择 Background Color 命令,设置模块的背景色,即模块的背景填充色。
  • 选择 Canvas Color 命令,改变模型编辑窗口的背景色。
  • 选择 Shadow 命令,使模块产生阴影效果。

2.5 模块名的处理

  • 要隐藏或显示模块名,首先选定模块,然后在模型编辑窗口选择 Diagram ⟶ \longrightarrow Format ⟶ \longrightarrow Show Block Name 命令,使模块隐藏的名字显示出来或隐藏模块名。
  • 要修改模块名,单击模块名的区域,这时会在此处出现编辑状态的光标,在这种状态下能够对模块名随意修改。
  • 模块名和模块图标中的字体也可以更改,方法是选定模块,在模型编辑窗口选择 Diagram ⟶ \longrightarrow Format ⟶ \longrightarrow Font Style 命令,这时会弹出 Select Font 对话框,在对话框中选择需要的字体。
  • 模块名的位置有一定的规律, 当模块的接口在左右两侧时,模块名只能位于模块的上下两侧,默认在下侧;当模块的接口在上下两侧时,模块名只能位于模块的左右两侧,默认在左侧。
  • 因此,模块名只能从原位置移动到相对的位置。可以用鼠标拖动模块名到其相对的位置;也可以选定模块,在模型编辑窗口选择 Diagram ⟶ \longrightarrow Rotate & Flip ⟶ \longrightarrow Flip Block Name 命令实现模块名相对的移动。

3. 模块的连接

当设置好各个模块后,还需要把它们按照一定的顺序连接起来才能组成一个完整的系统模型。

3.1 连接两个模块

  • 从一个模块的输出端连到另一个模块的输入端,这是 Simulink 仿真模型最基本的连接情况。
  • 方法是先移动鼠标指针到输出端,当鼠标指针变成十字形光标时按住鼠标左键,移动鼠标指针到另一个模块的输入端,当连接线由虚线变成实线时,释放鼠标左键就完成了两个模块的连接。
  • 如果两个模块不在同一水平线上,连线是一条折线。 若要用斜线表示,需要在连线后选中连线,再按住 Shift 键进行拖动。

3.2 模块间连线的调整

  • 调整模块间连线位置可采用鼠标拖放操作来实现。
  • 先将鼠标指针移动到需要移动的线段的位置,按住鼠标左键,移动鼠标到目标位置,释放鼠标左键。
  • 删除连线的方法和删除模块的方法相同,即先选中连线,再删除。

3.3.连线的分支

  • 在仿真过程中,经常需要把一个信号输送到不同的模块,这时就需要从一根连线分出一根连线。
  • 操作方法是,在先连好一条线之后,把鼠标指针移到分支点的位置,先按住 Ctrl 键,然后按住鼠标拖曳到目标模块的输入端,释放鼠标和 Ctrl 键。

3.4.标注连线

  • 为了使模型更加直观,可读性更强,可以为传输的信号做标记。
  • 操作方法是双击要做标记的连线,将出现一个小文本编辑框,在其中输入标注文本,这样就建立了一个信号标记。

4. 模块的参数和属性设置

  • 模块参数定义模块的动态行为和状态,属性定义模块的外观。

4.1 模块的参数设置

  • 在模型编辑窗口打开模块参数设置对话框有以下方法。
  • (1) 双击要设置的模块。
  • (2) 选择要设置的模块,再选择 Diagram ⟶ \longrightarrow Block Parameters 命令。
  • (3) 右击要设置的模块,从快捷菜单中选择 Block Parameters 命令。
  • 模块参数设置对话框分为两部分,上面一部分是模块功能说明,下面一部分用来进行模块参数设置。

4.2 模块的属性设置

  • 在模型编辑窗口打开模块属性设置对话框有以下方法。
  • (1) 选定要设置属性的模块,选择 Diagram ⟶ \longrightarrow Properties 命令。
  • (2) 右击要设置属性的模块,从快捷菜单中选择 Properties 命令。
  • 模块属性对话框包括 General、Block Annotation 和 Callbacks 3 个选项卡。
  • General 选项卡中可以设置 3 个基本属性:Description 属性对该模块在模型中的用法进行说明;Priority 属性规定该模块在模型中相对于其他模块执行的优先顺序,优先级的数值必须是整数(可以是负整数),该数值越小,优先级越高,也可以不输入优先级数值,这时系统自动选取合适的优先级;Tag 属性是用户为模块添加的文本格式的标记。
  • Block Annotation 选项卡中指定在该模块的图标下显示模块的哪个参数。
  • Callbacks 选项卡中指定当对该模块实施某种操作时需要执行的 MATLAB 命令或程序。