首页 > 编程笔记 > MATLAB笔记 阅读:2

Simulink是什么,MATLAB Simulink简介(新手必看)

Simulink 是 MATLAB 系列工具软件包中最重要的组成部分:
Simulink 向用户提供一个动态系统建模、仿真和综合分析的集成环境,在这个环境中,用户无须书写大量的程序,只需通过简单直观的鼠标操作,选取适当的模块,即可构造出复杂的仿真模型。

Simulink 的主要优点在于适用面广、结构和流程清晰、仿真更为精细、模型内码更容易向 DPS/FPGA 等硬件移植。

MATLAB Simulink基本概念

Simulink 是一个进行动态系统建模、仿真和综合分析的集成软件包。它可以处理的系统包括线性/非线性系统、离散/连续及混合系统、单任务/多任务离散事件系统。

在 Simulink 提供的图形用户界面上,只要简单地进行鼠标的拖曳操作即可构造出复杂的仿真模型。它在外表上以方框图形式呈现,且采用分层结构。从建模角度讲,这既适用于自上而下(Top-down)的设计流程(从概念、功能、系统、子系统直至器件),又适用于自下而上(Bottom-up)的逆程设计。

从分析研究角度讲,这种 Simulink 模型不仅能让用户知道具体环节的动态细节,还能让用户清晰地了解各器件、各子系统、各系统间的信息交换,掌握各部分之间的交互影响。

Simulink 的每个模块对用户来说都相当于一个“黑匣子”,用户只需知道模块的输入和输出及功能即可,而不必管模块内部是怎样实现的。

因此,使用 Simulink 进行系统建模的任务就是选择合适的模块并把它们按照自己的模型结构连接起来,最后进行调试和仿真。如果仿真结果不满足要求,则可以改变模块的相关参数再次运行仿真,直到结果满足要求。

1) 模块与模块框图

Simulink 模块框图是动态系统的图形显示,由一组称为模块的图标组成,模块之间的连接是连续的。每个模块代表动态系统的某个单元,并且产生输出宏。模块之间的连线表明模块的输入端口与输出端口之间的信号连接。

模块的类型决定了模块输出与输入、状态和时间之间的关系;一个模块框图可以根据需要包含任意类型的模块。

模块代表动态系统功能单元,每个模块都包括输入、状态和输出等几部分,模块的输出是仿真时间、输入或状态的函数。

模块中的状态是一组能够决定模块输出的变量,一般当前状态值取决于以前时刻的状态值或输入,这样,具有状态变化的模块就必须存储以前时刻的状态值或输入。这样的模块称为记忆功能模块。

例如,Simulink 的积分(Integrator)模块就是典型的记忆功能模块。该模块当前的输出是其从仿真开始到当前时刻这一时间段内输入信号的积分。当前时刻的积分取决于历史输入,因此,积分就是该模块的一组状态变量。

另一个典型的例子就是 Simulink 中的单纯记忆(Memory)模块。该模块能够存储当前时刻的输入值,并在将来的某个时刻输出。

Simulink 的增益(Gain)模块是无状态变量的典型例子。增益模块的输出完全由当前的输入值决定,因此不存在状态变量。其他无状态变量的模块还有求和(Sum)模块和点乘(Product)模块等。

Simulink 模块的基本特点是参数化,许多模块都具有独立的属性对话框,在对话框中可定义模块的各种参数,如增益模块中的增益参数,这种调整甚至可以在仿真过程中实时进行,从而让用户能够找到最合适的参数值。这种能够在仿真过程中实时改变的参数又被称为可调参数,可以由用户在模块参数中任意指定。

Simulink 还允许用户创建自己的模块,这个过程又称为模块的定制。定制模块不同于 Simulink 中的标准模块,它可以由子系统封装得到,也可以采用 M 文件或 C语言实现自己的功能算法,称为 S 函数。用户可以为定制模块设计属性对话框,并将定制模块合并到 Simulink 库中,使得定制模块的使用与标准模块的使用完全—样。

2) 信号

Simulink 使用“信号”一词来表示模块的输出值。

Simulink 允许用户定义信号的数据类型、数值类型(是实数还是复数)和维数(是一维数组还是二维数组)等。

Simulink 还允许用户创建 Simulink 数据类型的实例(称为数据对象)来作为模块的参数和信号变量。

3) 求解器

Simulink 模块指定了连续状态变量的时间导数,但其本身没有定义这些导数的具体值,它们必须在仿真过程中通过微分方程的数值求解方法计算得到。

Simulink 提供了一套高效、稳定、精确的微分方程数值求解算法,用户可以根据需要和模型特点选择合适的求解算法。

4) 子系统

Simulink 允许用户在子系统的基础上构造更为复杂的模块,其中每个子系统都是相对完整的、可以完成一定功能的模块框图。

通过对子系统的封装,用户还可以实现带触发使用功能的特殊子系统。子系统的概念体现了分层建模的思想,是 Simulink 的重要特征之—。

5) 零点穿越

在 Simulink 对动态系统进行仿真的过程中,一般在每个仿真中都会检查系统状态变化的连续性。如果 Simulink 检测到了某个变量的不连续性,那么为了保持状态突变处系统仿真的准确性,仿真程序会自动调整仿真步长,以适应这种变化。

动态系统中状态的突变对系统的动态特性具有重要的影响。例如,弹性球在撞击地面时,其速度方向会发生突变,这时,如果收集的时刻不是正好发生在仿真时刻当中(在相邻两步仿真之间),那么 Simulink 的求解算法就不能正确反映系统的特性。

如果采用固定步长的算法,那么求解器就不能对此做相应的处理;相反,如果使用变步长的求解算法,那么 Simulink 会在确定突变时刻之后,在突变前增加额外的仿真计算,以保证突变前后计算的准确性。变步长的求解算法在状态变化缓慢时会增大仿真的步长,而在状态变化剧烈时会减小仿真的步长。这样,在系统突变时刻,过小的仿真步长将会导致仿真时间的增加。

Simulink 采用一种被称为零点穿越检测的方法来解决这个问题。采用这种方法,模块首先记录下零点穿越的变量,每个变量都是有可能发生突变的状态变量的函数。在突变发生时,零点穿越函数也从正数或负数穿越零点。通过观察零点穿越变量的符号变化,就可以判断仿真过程中系统状态是否发生了突变。

如果检测到穿越事件发生,那么 Simulink 首先将通过对变量的以前时刻和当前时刻的插值来确定突变发生的具体时刻;然后调整仿真的步长,逐步逼近并跳过状态的不连续点。这样就避免了直接在不连续点上进行仿真的情况。

因为对不连续系统而言,不连续点处的状态值可能是没有定义的,所以采用零点穿越检测技术,Simulink 可以准确地对不连续系统进行仿真。许多模块都支持这种技术,从而大大提高了系统仿真的速度和精度。

Simulink工作环境与启动

启动 Simulink 有如下 3 种方式:
执行启动命令后,打开下图所示的“Simulink 起始页”浏览器窗口:


图 1 “Simulink起始页”浏览器窗口

单击“空白模型”选项,弹出下图所示的模型创建窗口:


图 2 模型创建窗口

在仿真过程中,模型创建窗口的状态条会显示仿真状态、仿真进度和仿真时间等相关信息。

Simulink 界面主要由模型浏览器窗口和模型创建窗口组成。前者为用户提供了展示 Simulink 标准模块库和专业工具箱的界面,而后者则是用户创建模型方框图的主要地方。因此,读者需要熟练掌握这些功能及操作。

MATLAB 环境设置对话框可以让用户集中设置 MATLAB 及其工具软件包的使用环境,包括 Simulink 的环境设置。

在 Simulink 界面中选择“建模”→“评估与管理”→“环境”→“Simulink预设项”命令,弹出下图所示的“Simulink预设项”窗口。


图 3 “Simulink预设项”窗口

Simulink模型特点

使用 Simulink 建立的模型具有仿真结果可视化、层次性及可封装子系统 3 个特点。

根据前面的讲解,可总结 Simulink 的主要优点如下:

相关文章