7.2.2 Simulink基础
1.Simulink简介
Simulink是MATALB中的一种可视化仿真工具,广泛用于线性系统、数字控制以及数字信号处理的建模和仿真中。Simulink采用模块化的建模方式,每个模块都有自己的输入、输出端口,并能实现一定的功能。在Simulink中,模型表现为若干个仿真模块的集合以及各个模块之间的连接关系, 并且这些模块可以组织成具有同等结构的子系统,具有内在的模块化设计要求。
根据输出信号和输入信号的关系,Simulink提供了3种类型的模块:连续模块、离散模块和混合模块。连续模块指输出信号发生连续变化的模块,离散模块则是输出信号以固定间隔变化的模块;混合模块是根据输入信号的类型来确定输出信号类型的,既能产生连续输出信号,也能够产生离散输出信号。如果一个仿真模型中只包括离散模块,Simulink采用固定步长方式进行仿真;如果模型中只有连续模块,Simulink将采用连续方式对模型继续仿真。如果模块中包含连续模块和离散模块,则采用两种仿真步长进行仿真。
2.Simulink软件的安装
Simulink可以随着MATLAB一起安装到计算机内,在MATLAB安装选项中选中Simulink组件,安装程序会自动将其安装到MATLAB目录下;如果已安装了MATLAB而没有安装Simulink的话,也可以继续使用安装程序将Simulink安装到计算机内。两者的安装方法是基本一样的。需要注意的是,Simulink的运行需要MATLAB后台的支持,因此必须要安装MATLAB软件。
3.Simulink的工作原理
Simulink的工作包括两个阶段:初始化阶段和模型执行阶段。
1)模型初始化阶段
在初始化阶段,Simulink主要完成以下工作:
(1)将模型参数传递给MATLAB进行估值,得到的数值结果将作为模型的实际参数;
(2)展开模型的各个层次,每一个非条件执行的子系统将被它所包含的模块代替;
(3)模型中的模块按更新的次序进行排序;
(4)决定模型中有无显示设定的信号属性,如:名称、数据类型等,并且检查各个模块是否能连接到其相应的输入信号;
(5)决定所有未设定采样时间的模块的采样时间;
(6)分配和初始化用于存储每个模块的状态和输入当前值的存储空间。
完成上述工作后,就可以进入模型执行阶段。
2)模型执行
一般模型是使用数值积分来进行仿真的,所运用的仿真解法器依赖于模型提供的连续积分能力。计算微分可以分为两步来进行:首先,按照排序所确定的次序计算每个模块的输出;其次,根据当前时刻的输入和状态来决定状态的微分,得到微分向量后再把它返回给解法器,再用其来计算下一时刻采样点的状态向量,一旦新的状态向量计算完毕,被采样的数据源模块和接收模块才被更新。
在仿真开始时,模型设定待仿真系统的初始状态和输出。在每一个时间步长中,Simulink计算系统的输入、状态和输出,并更新模型来反映计算出的值。在仿真结束时,模型得出系统的输入、状态和输出。
4.Simulink设计简单举例
作为本节的最后一部分,给出一个Simulink的应用实例,增加读者对Simulink建模的直观印象。
例8-1 建立一个调幅(AM)系统,信号频率为100KMHz,载波频率为1MHz,调幅系数为0.5,并在示波器中显示出来。
具体的操作步骤如下:
1)打开MATLAB,在工具栏点击 图标,启动Simulink(也可以直接在MATLAB命令窗口直接敲入simulink)。
2)在Simulink环境下新建一个模型,在Simulink工具栏点击图标实现或通过菜单“File”中的“New Model”命令来实现,将新模型保存为am.mdl。
3)从Simulink library Browser中加入基本模块。首先从“Simulink Source”库中选中“Sine Wave”模块,直接将其拖拽到am.mdl的界面中,并复制该模块;然后双击“Sine Wave”模块,设定载波频率和幅度。再按照同样的方法将“Sine Wave1”模块设定为信号产生模块;再从“Simulink Math Operations”库中选择乘法器模块Product,最后从“Simulink Sink”库中选择示波器Scope。
4)连接各个模块,选中目标模块,按住Ctrl键,再点击要连接的模块,Simulink即可自动将两个模块连接起来,最终