学习matlab(十五)——Simulink

1.基本介绍

Simulink是MATLAB软件的重要组成部分,能够进行动态系统的建模、仿真和综合分析,在学术和工业领域的网用越来越广泛。本章详细的介绍了Simulink建模的基本概念,然后介绍了Simulink的基本操作,例如Simulink的启动、模块的连接和模块参数的设置等。接着详细的介绍了Simulink常用的基本模块库,这些基本模块是建模的基本元素,了解各个模块的作用是熟练掌握Simulink建模的基础。最后介绍了Simulink中的子系统和封装,以及Simulink模型的工作空间。

Simulink是MATLAB软件最重要的组件之一,能够进行动态系统建模、仿具和综合分析,提供了交互式图形化环境。在Simulink中,把现实中的每个系统都看成是由输入、输出和状态这3个基本元素组成,并随时间变化的数学函数关系。本节对Simulink的基本概念进行详细的介绍。

Simulink是MATLAB中的一种可视化仿真工具,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。 nau时间讲行建模,它也支持多埋学时间或两种混合的采样时间进行建模,它也支持多速率系统,即系统中的不同部分具有不同的采样率。为了建动态系统模型,Simulink提供了一个建立模型方块图的图形用户接口(GUI,这个创建过程只需单击和拖动鼠标操作就能完成,它提供了一种更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。

Simulink提供一个动态系统建模、仿真和综合分析的集成环境。在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。Simulink具有适应面广、结构和流程清晰及仿真精细、贴近实际、效率高、灵活等优点,并基于以上优点Simulink已被广泛应用于控制理论和数字信号处理的复杂仿真和设计。同时有大量的第三方软件和硬件可应用于Simulink。

利用Simulink建模的过程,可以简单地理解为从模块库中选择需要的模块,然后将这些模块进行连接和属性设置,最后进行系统的运行,并查看仿真结果。下面对Simulink的基本操作进行详细的介绍,主要包括启动Simulink、模块的操作和属性设置,以及仿真器设置等。

首先启动MATLAB软件,然店再启动Simulink。用户可以单击MATLAB主界面工具栏的按钮,或在MATLAB的命令行窗口输入:simulink,来启动simulink.用户可以在MATLAB的命令行输入:help simulink,来查看Simulink命令行下的函数。用户在命令行输入:demo simulink,将会打开MATLAB的帮助系统,并显示Simulink的例子程序。

在Simulink模块库浏览器中,Simulink模块包括两类,一类是Simulink基本模块库,是进行系统建模的基本单元。另一类是各个工具箱的模块库,和各个具体应用领域相关。Simulink基本模块库包含16个子集。下面介绍Simulink的基本模块库。连续时间模块子集包括13个模块。

下面介绍其中的Derivative模块(微分器)。微分器计算输入信号的导数du/dt,其中du是输入信号的变化量,dt是时间的变化。

非连续时间模块子集共有12个模块。下面介绍其中的Dead Zone模块和Saturation模块。Deadzone模块产生死区,输入在某一范围取值时,输出为0。 saturation模块,可以对输入信号的范围进行限制。当输入信号超出规定的上限值时,输出为该上限值;当输入信号小于规定的上限值时,输出为该下限值。

Simulink的数学运算模块共包含37个基本模块,这些模块用来进行常用的数学运算,如图13.38所示。下面介绍Real-Imag to Complex模块和Complex to Magnitude-Angle模块。Real-Imag to Complex模块通过实部和虚部组成复数,Complex to Magnitude-Angle获取复数的幅度和角度。

端口和子系统模块子集共包括24个基本模块。下面介绍其中的Enabled Subsytem模块,即使能子系统模块。将Enable Subsystem模块加入系统后,就变为了一个使能子系统。系统在仿真时,首先判断使能信号是否大于0,只有在使能端大于0时,子系统才运行,否则子系统不运行。

Simulink的信号特征模块子集包括14个基本模块。这些模块可以对信号的数据类型、采样率、宽度等特征进行检测和操作。下面介绍其中的Rate Transition模块和Probe模块。Rate Transition模块用于改变信号的采样率。Probe模块用于获取信号的宽度、维数、采样时间等信息。

在Simulink的信号路径模块子集,共包含18个基本模块,其中的一些模块也是常用模块子集的一部分。下面介绍其中的Switch模块,根据条件对输入信号进行选择。该模块有3个输入端,从上到下依次为u1、u2和u3,只有一个输出端。

Simulink的Sinks模块子集共包括9个模块。Sinks模块子集的很多模块在前面的例子中已经用过。To File模块将Simulink中某个变量保存到文件中,To Workspace将某个变量保存到MATLAB的基本工作空间中。

信号源模块子集共包含23个基本模块,用来产生仿真模型的信号源和时间等。From File模块将保存在文件中的数据读入到Simulink模型中。From Workspace模块将MATLAB基本工作空间中的变量读入到simulink模型中,可以实现MATLAB和Simulink之间的数据交换。

用户定义模块子集包括6个基本模块和S-Function Examples模块,S-function模块,MATLAB Fcn模块对输入进行规定的数学运算,输入和输出都必须是双精度的浮点型,但可以是实数也可以是复数。

当模型变得越来越大、越来越复杂时,使用的模块非常多,用户很难轻易读懂所建立的模型。因此,可以将大的模型分成一些小的子系统,每个子系统非常简单、可读性好,能够完成某个特定的功能。通过子系统,可以采样模块化设计方法,层次非常清晰。有些常用的模块集成在一起,还可以实现复用。

建立子系统的方法有2种。第一种方法是采用Simulink模块库的端口和子系统模块子集。Subsystem模块可以建立子系统,Triggered subsystem模块用来建立触发子系统,Enabled Subsystem模块建立使能子系统。在本章的已经进行了介绍,给出了一个使能子系统的例子。另一种方法是把系统模型中已有的一部分模块组合在一起,建立一个子系统.子系统可以使设计的模型非常简洁易懂,但是设置各个模块的参数仍然非常繁琐。通过对子系统进行封装,使用户创建的子系统和Simulink的其它模块一样有自己的图标,用鼠标双击该子系统后会出现用户自定义的属性设置窗口,对子系统中各个模块的参数进行设置。

子系统可以使设计的模型非常简洁易懂,但是设置各个模块的参数仍然非常繁琐。通过对子系统进行封装,使用户创建的子系统和Simulink的其它模块一样有自己的图标,用鼠标双击该子系统后会出现用户自定义的属性设置窗口,对子系统中各个模块的参数进行设置。

每个Simulink模型有两个工作空间,一个是基本的MATLAB工作空间,另一个是模型的工作空间。对于模型工作空间中的变量只有该模型能够看到。通常模型工作空间中的变量不能改变。

2.S函数

Simulink的功能越来越强大,应用领域越来越多。本章将更加深入的介绍利用Simulink进行建模和仿真。首先详细的介绍Simulink建模中的回调函数,利用回调函数在模块或模型发生变化时执行某些特定的操作,非常的方便。接着介绍了Simulink仿真器的设置以及在命令行下进行模型的仿真,命令行下模型的仿真,可以非常方便的修改模块或模型的参数,在查看在小回参教心保丝的结果非常的方便。然后介绍了Simulink中的调试器,如果建立的模型没有实现预期的功能,可以利用调试番米进行模型的调试。最后介绍了S-函数的基本概念、工作原理,并详细的介绍了如何利用M文件编写S-函数。利用S-函数可以扩展Simulink的功能,例如采用MATLAB、C/C++或Fortan等语言编写模块。

在Simulink中,可以通过回调函数实现对模型或模块的操作。回调函数是当用户建立的模型或模块发生某些特殊行为时所要执行的MATLAB程序。下面分别介绍模型的回调函数和模块的回调函数。

与模型文件的回调函数类似,模块回调函数在模块的模块属性(Block Properties)窗口中的Callbacks内输入。建立模型文件(文件名为chap14_2.mdl) , sine Wave模块和Saturation模块都采样默认的属性值。用鼠标单击Sine Wave模块,然后选择Edit菜单下的Block Properties子菜单,会出现Sine Wave模块的模块属性窗口。

模型建立后,就可以运行该模型和对仿真结果进行分析。用户可以单击菜单Simulation下的Start子菜单运行该模型。下面介绍如何设置仿真参数,以及仿真出错时的信息。最后介绍如何在MATLAB的命令行窗口进行模型的仿真。

在利用模型窗口直接进行仿真时,每次运行时都是针对固定的模块参数。在运行过程中很难改变这些参数。在MATLAB中,对于建立的Simulink模型允许通过函数sim()在命令行进行仿真。这样在进行仿真时,可以很容易的改变模块的参数。

在Simulink中,可以通过调试器对模型进行调试,允许用户通过单步执行,来观察模块的状态和输入输出等。用户既可以采用图形化的调试界面进行模型的调试,也可以通过命令进行调试。下面介绍Simulink中模型的调试。建立模型文件(文件名为chap14_5.mdl)。设置模块Sine Wave的角频率,其他参数为默认值。然后对其他模块的参数进行了设置,采样示波器Scope显示输出结果。单击Tools菜单下的Simulink Debugger子菜单,打开Simulink的调试器。

在MATLAB中,还可以在命令行窗口中通过命令对Simulink模型进行调试。可以通过函数simget()获取模型文件的设置信息,通过函数simset( )对模型的参数进行设置。这两个函数的详细调用格式,用户可以查阅MATLAB的帮助系统。有两种方法启动调试器,对模型进行调试:一种是在利用函数sim()对模型进行仿真时,通过函数simset()将debug属性设置为on.

s-函数( System-函数)是扩展Simulink功能的非常好的工具,在很多情况下非常有用。用户可以利用MATLAB语言、C语言、C++语言以及Fortan等语言创建自定义的Simulink模块。在Simulink基本模块库中的用户定义模块子集中有多个和S-函数有关的模块。S-函数是对一个动态系统的计算机程序语言描述。利用C\C++、Fortan等语言写的S-函数需要用mex命令编译成MEX文件,然后就可以动态的连接到MATLAB了。本文只介绍采样MATLAB语言编写S-函数。S-函数使用一种特殊的调用规则使用户可以与Simulink的内部求解器进行交互,和内部模块的调用非常相似。s-函数可以用于连续系统、离散系统和混合系统,几乎所有的模块都可以描述为S-函数。通过Simulink基本模块库中的用户定义模块子集中的S-Function模块,可以将S-函数加入到Simulink模型中,并指定S-函数的名字。通过S-函数可以创建一个自定义的Simulink模块在模型中可以多次使用这个模块,便用时只需要改发的参数即可。S-函数是由一系列S-函数回调方法组成,在每次仿真循环中的每一个仿真步骤由Simulink调用相世的S-函数回调方法来执行相应的任务。

Simulink为编写S-函数提供了各种模版文件,其中定义了S-函数完整的框架结构,用户可以根据自己的需要在模版上进行修改。利用M文件编写S-函数时,推荐采用S-函数的模版文件sfuntmpl.m。用户可以在MATLAB的命令行窗口输入:edit sfuntmpl.m打开该文件。这个模版文件包含1个主函数和6个子函数,在主函数内通过标志变量flag,通过switch...case语句根据flag执行对应的子函数。flag变量作为主函数的参数由系统调用时给出。

在MATLAB中,提供了S-函数的例子程序,用户可以在命令行窗口输入:sfundemos,来查看例子程序。S-函数的例子程序包括M文件例子、C文件例子、C++文件例子和Fortan例子。用鼠标双击M-files,得到M文件编写的S-函数例子。其中Level-1 M-files用来创建的S-函数用于兼容以前版本的S-函数,Level-2 M-files用于扩展M文件的S-函数。

3.Demo

参考链接:https://ww2.mathworks.cn/support/learn-with-matlab-tutorials.html

 

你可能感兴趣的:(matlab相关与数理知识)