matlab河南工业大学课件第6章_第1页
matlab河南工业大学课件第6章_第2页
matlab河南工业大学课件第6章_第3页
matlab河南工业大学课件第6章_第4页
matlab河南工业大学课件第6章_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、控制工程中的程序设计控制工程中的程序设计授课教师:冯肖亮E-mail: 河南工业大学 电气工程学院1Simulink使用与仿真使用与仿真第六章第六章23 6.1 Simulink模块与模型建立模块与模型建立6.1.1 Simulink启用启用6.1.2 Simulink模块模块6.1.3 Simulink模型建立模型建立6.2 Simulink仿真技术与仿真技术与S函数函数6.2.1 Simulink仿真技术仿真技术6.2.2 S函数函数第第6 6章章 SimulinkSimulink使用与仿真使用与仿真4 由于由于Simulink是基于是基于MATLAB环境之上的环境之上的高性能的系统级仿真

2、设计平台,因此启动高性能的系统级仿真设计平台,因此启动Simulink之前必须首先运行之前必须首先运行MATLAB,然后才,然后才能启动能启动Simulink,启动,启动Simulink有两种方式:有两种方式: (1)用用命令行方式命令行方式启动启动Simulink。即在。即在MATLAB的的命令窗口中直接键入命令窗口中直接键入如下命令:如下命令: simulink6.1.1 Simulink启用启用6.1 Simulink模块与模型建立模块与模型建立5 6.1 Simulink模块与模型建立模块与模型建立 (2)使用使用工具栏按钮工具栏按钮启动启动Simulink。即用。即用鼠鼠标单击标单击

3、MATLAB工具栏中的工具栏中的 按钮。按钮。图图6.1 启动启动Simulink6 n Simulink浏览器界面浏览器界面(如图如图6.2所示所示) 菜单栏区、工具栏区、文字说明区、模块菜单栏区、工具栏区、文字说明区、模块库区、状态栏区库区、状态栏区 6.1 Simulink模块与模型建立模块与模型建立6.1.2 Simulink模块模块图图6.2 Simulink浏览器界面浏览器界面7 菜单栏区:其主菜单有菜单栏区:其主菜单有文件文件(File)、编辑编辑(Edit)、 查看查看(View)、帮助帮助(Help)等等4项。项。 File:含:含New(新建模型或者库新建模型或者库)、op

4、en(打开打开)、Close(关闭关闭)和和Preferences(属性设置属性设置)4项;项; Edit:含:含Add to the current model(添加到当前模型添加到当前模型)、Find(查找查找)和和Find next(查找下一个查找下一个)3项;项;6.1 Simulink模块与模型建立模块与模型建立8 6.1 Simulink模块与模型建立模块与模型建立View:由:由toolbar(工具栏工具栏), status bar(状态栏状态栏),description(文字说明栏文字说明栏),stay on top(将浏览器放将浏览器放在桌面最上层在桌面最上层) View:c

5、ollapse entire browser(模块模块库压缩显示库压缩显示),expand entire browser(模块库展开模块库展开显示显示),Large icons(大图标大图标) ,Small icons(小图标小图标),Show parameters for selection(显示所选模块的参显示所选模块的参数数) ;Help(帮助帮助)9 6.1 Simulink模块与模型建立模块与模型建立工具栏区:含工具栏区:含4个按钮:新建与打开按钮,将模个按钮:新建与打开按钮,将模块放在桌面最上层按钮,块放在桌面最上层按钮,Find是用来查找模块库是用来查找模块库中的模块按钮。中的模

6、块按钮。文字说明区:对所选模块的文字说明;文字说明区:对所选模块的文字说明;模块库区:含模块库及其相应的模块组;模块库区:含模块库及其相应的模块组;状态栏区:即最下方显示状态栏区:即最下方显示Ready区,用来显示浏区,用来显示浏览器状态。览器状态。10 6.1 Simulink模块与模型建立模块与模型建立n Simulink基本模块库基本模块库Continuous(连续模块组连续模块组)Discontinuities(非连续模块组非连续模块组) Discrete(离散模块组离散模块组) Look-Up Tables(表格模块组表格模块组) Math Operations(数学运算模块组数学运

7、算模块组) Model Verification(模型检验模块组模型检验模块组) Model-Wide Utilities(公用模块组公用模块组) 11 6.1 Simulink模块与模型建立模块与模型建立Ports & Subsystems(端口与子系统模块组端口与子系统模块组) Signal Attributes(信号属性模块组信号属性模块组)Signal Routing(信号传输选择模块组信号传输选择模块组)Sinks(输出模块组输出模块组) Sources(信号源模块组信号源模块组) User-Defined Functions(用户定义函数模块组用户定义函数模块组)等等n S

8、imulink基本模块库基本模块库 (续续)12 6.1 Simulink模块与模型建立模块与模型建立1、 Continuous(连续模块组连续模块组) 包含包含7个基本模块,分为连续时间线性系统与个基本模块,分为连续时间线性系统与连续时间延迟两种。子模块组的名称和用途见连续时间延迟两种。子模块组的名称和用途见表表6-1。13 6.1 Simulink模块与模型建立模块与模型建立2、 Math Operations(数学运算模块组数学运算模块组) 包含包含25个基本模块,包括数学运算、向量运算、个基本模块,包括数学运算、向量运算、复数与向量间的转换运算复数与向量间的转换运算4种。其子模块组的名

9、称和种。其子模块组的名称和用途见用途见表表6-2。14 6.1 Simulink模块与模型建立模块与模型建立表表6-2 数学运算模块组子模块的名称及用途数学运算模块组子模块的名称及用途模模 块块 名名 称称模模 块块 用用 途途Abs绝对值或求模绝对值或求模(对复数对复数)模块模块Algebraic Constraint将输入将输入f(z)强制置为强制置为0并输出并输出zAssignment分配器分配器Bitwise Logical Operator二进制逻辑运算模块二进制逻辑运算模块Combinatorial Logic建立逻辑真值表模块建立逻辑真值表模块Complex to Magnitu

10、de-Angle计算复数的幅值与相角模块计算复数的幅值与相角模块Complex to Real-Imag计算复数实部与虚部模块计算复数实部与虚部模块Dot Product计算点积计算点积(内积内积)模块模块Gain增益模块增益模块Logical Operator逻辑运算模块逻辑运算模块15 6.1 Simulink模块与模型建立模块与模型建立表表6-2续续 数学运算模块组子模块的名称及用途数学运算模块组子模块的名称及用途模模 块块 名名 称称模模 块块 用用 途途Magnitude-Angle to Complex由幅值与相角构造复数模块由幅值与相角构造复数模块Math Function数学运

11、算函数模块数学运算函数模块,可进行多种数学函数运算可进行多种数学函数运算Matrix Concatenation矩阵连接模块矩阵连接模块Matrix Gain矩阵增益模块矩阵增益模块MinMax计算极大值与极小值模块计算极大值与极小值模块Polynomial多项式运算模块多项式运算模块Product乘积运算模块乘积运算模块Real-Imag to Complex由实部与虚部构造复数模块由实部与虚部构造复数模块Relational Operator关系运算模块关系运算模块Reshape矩阵重新定维模块矩阵重新定维模块Rounding Function取整模块取整模块16 6.1 Simulink

12、模块与模型建立模块与模型建立表表6-2续续 数学运算模块组子模块的名称及用途数学运算模块组子模块的名称及用途模模 块块 名名 称称模模 块块 用用 途途Sign符号函数模块符号函数模块Slider Gain可变增益模块可变增益模块(使用滑尺改变增益值使用滑尺改变增益值)Sum计算代数和或差模块计算代数和或差模块Trigonometric Function执行多种常用三角函数模块执行多种常用三角函数模块17 6.1 Simulink模块与模型建立模块与模型建立3、 Signal Routing(信号传输选择模块组信号传输选择模块组) 共有共有15个基本模块,包括信号传输与信号存储、个基本模块,包

13、括信号传输与信号存储、访问两种。其子模块组的名称和用途见访问两种。其子模块组的名称和用途见表表6-3。18 6.1 Simulink模块与模型建立模块与模型建立4、 Sinks(输出模块组输出模块组) 及其用途及其用途 共有共有9个基本模块,包括模型及子系统输出、数个基本模块,包括模型及子系统输出、数据观察器与仿真控制据观察器与仿真控制3种。其子模块组的名称和用途种。其子模块组的名称和用途见表见表6-4。模块功能说明:模块功能说明: 以数值形式显示输入信号 悬浮信号显示器 为子系统或模型提供输出端口 信号显示器 当输入非零时停止仿真 中断输出信号 将仿真数据写入 mat 文件 将仿真数据输出到

14、 Matlab 工作空间 使用 Matlab 图形显示数据 模块功能说明:以数值形式显示输入信号悬浮信号显示器为子系统或模型提供输出端口信号显示器当输入非零时停止仿真中断输出信号将仿真数据写入.mat文件将仿真数据输出到MATLAB工作空间使用MATLAB图形显示数据19 6.1 Simulink模块与模型建立模块与模型建立表表6-4 输出模块组子模块的名称及用途输出模块组子模块的名称及用途模模 块块 名名 称称模模 块块 用用 途途Display实时数字显示模块实时数字显示模块Floating Scope浮动示波器模块浮动示波器模块Out1输出端口模块输出端口模块(同端口与子系统模块中同端口

15、与子系统模块中Out1)Scope示波器模块示波器模块Stop Simulation当输入非当输入非0时,停止仿真。在仿真停止前完成当时,停止仿真。在仿真停止前完成当前时间步内的仿真。前时间步内的仿真。Terminator信号终止模块信号终止模块To File将其输入写入将其输入写入MAT-file文件内的一个矩阵中文件内的一个矩阵中To Workspace将其输入写入工作空间将其输入写入工作空间XY GraphX-Y示波器模块示波器模块20 6.1 Simulink模块与模型建立模块与模型建立5、 Sources(信号源模块组信号源模块组) 及其用途及其用途 1818个基本模块,包括模型及子

16、系统输入与信号个基本模块,包括模型及子系统输入与信号发生器两种。其子模块组的名称和用途见发生器两种。其子模块组的名称和用途见表表6-56-5。21 6.1 Simulink模块与模型建立模块与模型建立表表6-5 信号源模块组子模块的名称及用途信号源模块组子模块的名称及用途模模 块块 名名 称称模模 块块 用用 途途Band-Limited White Noise带宽限幅白噪声模块带宽限幅白噪声模块Chirp Signal线性调频信号模块线性调频信号模块(频率随时间线性增加的正弦信号频率随时间线性增加的正弦信号),可用于非线性系统谱分析可用于非线性系统谱分析Clock在每一仿真步输出当前仿真时间

17、在每一仿真步输出当前仿真时间(连续时间连续时间)Constant输出与时间无关的实数或复数输出与时间无关的实数或复数Digital Clock仅在指定的采样间隔内输出仿真时间,在其它时间仅在指定的采样间隔内输出仿真时间,在其它时间输出保持前一次值不变输出保持前一次值不变(离散时间离散时间)From Workspace从从MATLAB工作空间中读取数据工作空间中读取数据From File从一个指定的文件中读取数据并输出从一个指定的文件中读取数据并输出Ground接地模块接地模块In1输入端口模块输入端口模块(同端口与子系统模块中同端口与子系统模块中In1)Pulse Generator产生固定频

18、率脉冲序列产生固定频率脉冲序列22 6.1 Simulink模块与模型建立模块与模型建立表表6-5续续 信号源模块组子模块的名称及用途信号源模块组子模块的名称及用途模模 块块 名名 称称模模 块块 用用 途途Ramp产生按指定初始时间、初始幅度和变化率的斜坡信号产生按指定初始时间、初始幅度和变化率的斜坡信号Random Number产生正态分布的随机信号产生正态分布的随机信号Repeating Sequence产生一个任意波形的周期信号产生一个任意波形的周期信号Signal Generator可以产生三种不同波形的信号:正弦波、方波和锯齿可以产生三种不同波形的信号:正弦波、方波和锯齿波。信号单

19、位可以是波。信号单位可以是Hz或或rad/sSignal Builder信号构造器信号构造器Sine Wave正弦波信号模块正弦波信号模块Step在指定时间产生一个可定义上下电平的阶跃信号在指定时间产生一个可定义上下电平的阶跃信号Uniform Random Number产生在整个指定时间周期内均匀分布的随机信号产生在整个指定时间周期内均匀分布的随机信号23 6.1 Simulink模块与模型建立模块与模型建立n 部分专业模块库简介部分专业模块库简介 Mathworks公司还提供了一系列与公司还提供了一系列与Simulink一起使用的专业模块库,主要有:一起使用的专业模块库,主要有:Contr

20、ol System Toolbox:控制系统工具箱:控制系统工具箱Communications Blockset:通信系统仿真模块:通信系统仿真模块Fuzzy Logic Toolbox:模糊逻辑控制工具箱:模糊逻辑控制工具箱24 6.1 Simulink模块与模型建立模块与模型建立n 部分专业模块库简介部分专业模块库简介 (续续) Neural Network Blockset:神经网络工具箱:神经网络工具箱 Simulink Extras:补充:补充Simulink公共模块库公共模块库 Stateflow:用来对复杂的事件驱动系统进行建模:用来对复杂的事件驱动系统进行建模 和仿真和仿真 R

21、eal-Time Workshop (简称简称RTW):可以直接将:可以直接将simulink模型框图和模型框图和Stateflow的状态图转换成高效的状态图转换成高效优化的程序代码优化的程序代码25 6.1 Simulink模块与模型建立模块与模型建立6.1.3 Simulink模型建立模型建立建立简单模型的步骤:建立简单模型的步骤:建立模型窗口建立模型窗口点击点击 ,弹出,弹出Simulink Library Browser 点击点击File,弹出弹出New,指向,指向Model(或者在键盘中同时按住或者在键盘中同时按住Ctrl+N)即可得到一个即可得到一个空白的模型窗口空白的模型窗口(如

22、下图所示)。(如下图所示)。26 6.1 Simulink模块与模型建立模块与模型建立将功能模块从模块库中复制到模型窗口将功能模块从模块库中复制到模型窗口 将左图中的将左图中的功能模块功能模块复制到复制到空白窗口空白窗口“Untitled”。27 6.1 Simulink模块与模型建立模块与模型建立对模块进行连接,构成所需要的系统模型对模块进行连接,构成所需要的系统模型(如下如下图所示图所示)保存系统模型保存系统模型 点击点击Untiled菜单栏上的菜单栏上的File,选择,选择Save或者或者Save as保保存文件,文件扩展名为存文件,文件扩展名为.mdl 。 28 6.2 Simulin

23、k仿真技术与仿真技术与S函数函数6.2.1 Simulink仿真技术仿真技术下面通过一个例子介绍下面通过一个例子介绍Simulink的仿真技术的仿真技术例题例题:已知一个系统模型,它的:已知一个系统模型,它的数学描述数学描述为为 。求。求建立建立一个一个Simulink系统模型系统模型,并以,并以图形方式图形方式输出系统输出系统运算结果运算结果。( )( ), ( )sin( ),0,0y tau t u tt at29 6.2 Simulink仿真技术与仿真技术与S函数函数解:解:第一步:选择模块第一步:选择模块p 在在Sources中选择中选择Sine Wave模块,用以模块,用以产生产生

24、一个一个正弦波信号正弦波信号。30 6.2 Simulink仿真技术与仿真技术与S函数函数p在在Math中选择中选择Gain模块,用以模块,用以产生产生一个一个常数常数(即(即信号增益信号增益)。)。31 6.2 Simulink仿真技术与仿真技术与S函数函数p在在Sinks中选择中选择Scope模块,用以模块,用以图形方式显示图形方式显示结果结果。32 6.2 Simulink仿真技术与仿真技术与S函数函数p生成系统模型(系统模型囊括了模块选择步骤) 。33 6.2 Simulink仿真技术与仿真技术与S函数函数第二步:添加连接线第二步:添加连接线 完成所需模块选择后,按系统信号流动方向,将

25、各完成所需模块选择后,按系统信号流动方向,将各系统模块连接起来。具体做法是将光标指向起始块的输系统模块连接起来。具体做法是将光标指向起始块的输出端口,此时光标变成出端口,此时光标变成“+”,单击鼠标左键并拖动到目,单击鼠标左键并拖动到目标模块的输入端口,在接近到一定程度时光标变成双十标模块的输入端口,在接近到一定程度时光标变成双十字。这时松开鼠标键,连接完成。完成后在连接点处出字。这时松开鼠标键,连接完成。完成后在连接点处出现一个箭头,表示系统中信号的流向,如图所示。现一个箭头,表示系统中信号的流向,如图所示。34 6.2 Simulink仿真技术与仿真技术与S函数函数第三步:输入信号与输出信

26、号对比的实现第三步:输入信号与输出信号对比的实现在在Simulink公共模块库的公共模块库的Signal Routing(信号流信号流向模块库向模块库)中选择中选择Mux模块,以模块,以实现将输入信号和实现将输入信号和输出信号同时输入到一个示波器中输出信号同时输入到一个示波器中,如图所示,如图所示。35 6.2 Simulink仿真技术与仿真技术与S函数函数第四步:仿真运行第四步:仿真运行首先,进行系统模块参数和仿真参数设置。逐一双击系统中首先,进行系统模块参数和仿真参数设置。逐一双击系统中的模块,打开其参数设置对话框,输入合适的模块参数,如的模块,打开其参数设置对话框,输入合适的模块参数,如

27、图所示,仿真参数可采用图所示,仿真参数可采用Simulink的默认值,也可自主设定。的默认值,也可自主设定。本例中,系统模块参数设置增益取值为本例中,系统模块参数设置增益取值为5,仿真参数采用,仿真参数采用Simulink的默认值。的默认值。36 6.2 Simulink仿真技术与仿真技术与S函数函数进行仿真实验。单击系统模型编辑器上的进行仿真实验。单击系统模型编辑器上的“ ”(Play)或选择)或选择Simulation菜单下的菜单下的Start便可以对系统进行仿真分析。仿真结束后双击便可以对系统进行仿真分析。仿真结束后双击Scope模块可显示系统仿真的输出结果,如图所示。模块可显示系统仿真

28、的输出结果,如图所示。n如果在仿真过程结束之前,用户想停止此如果在仿真过程结束之前,用户想停止此次仿真,可选择菜单选项次仿真,可选择菜单选项SimulationStop停止仿真。停止仿真。37 6.2 Simulink仿真技术与仿真技术与S函数函数在这里做几点说明:在这里做几点说明:1)如果需要多个同样的模块时,可使用鼠标右如果需要多个同样的模块时,可使用鼠标右键单击并拖动库中的基本模块进行拷贝。键单击并拖动库中的基本模块进行拷贝。2)如果需要在信号连线上插入一个单输入单输如果需要在信号连线上插入一个单输入单输出模块,只需将这个模块移到线上就可以完成出模块,只需将这个模块移到线上就可以完成自动

29、插入,对于非单输入单输出的模块,只能自动插入,对于非单输入单输出的模块,只能先删除连线,然后放置该块,并重新连线。先删除连线,然后放置该块,并重新连线。3) 若需要从某模块中引出若干连线若需要从某模块中引出若干连线,可使用鼠可使用鼠标右键单击需要分支信号的连线,使光标变成标右键单击需要分支信号的连线,使光标变成“+”后,拖动到目标模块。后,拖动到目标模块。38 6.2 Simulink仿真技术与仿真技术与S函数函数4) 若模块的输入输出方向与建立系统的信号流动方向不同,可将鼠标停在若模块的输入输出方向与建立系统的信号流动方向不同,可将鼠标停在模块上,点击右键,选择模块上,点击右键,选择Form

30、at中的中的Flip Block功能可实现模块水平翻转,功能可实现模块水平翻转,或或Rotate Block功能进行逆时针功能进行逆时针90旋转。旋转。5) 用鼠标左键单击模块名称,进入编辑状态然后键入新的名称,即可完成用鼠标左键单击模块名称,进入编辑状态然后键入新的名称,即可完成对模块的重新命名。对模块的重新命名。39 6.2 Simulink仿真技术与仿真技术与S函数函数6) 在创建大型复杂系统模型需要添加信号标签时,具体做在创建大型复杂系统模型需要添加信号标签时,具体做法是用鼠标左键双击需要加入标签的信号(即系统模型中法是用鼠标左键双击需要加入标签的信号(即系统模型中与信号相对应的模块连

31、线),系统会弹出标签编辑框,在与信号相对应的模块连线),系统会弹出标签编辑框,在对话框中键入标签文本即可。对话框中键入标签文本即可。40 6.2 Simulink仿真技术与仿真技术与S函数函数 下图所示的仿真过程是在系统默认仿真参数条件下完成的,但是有时候系统默认仿真参数并不能得到理想的仿真结果,需要对系统仿真参数做调整。41 6.2 Simulink仿真技术与仿真技术与S函数函数1仿真参数的设定仿真参数的设定在如下图在如下图 Simulink仿真模型编译器界面下,选择菜仿真模型编译器界面下,选择菜单选项单选项SimulationConfiguration Parameters,将显,将显示如

32、图所示的仿真参数对话框。示如图所示的仿真参数对话框。42 6.2 Simulink仿真技术与仿真技术与S函数函数设置仿真时间非常重要,它决定了模型仿真的时间或取值区域,其设置完全根据待仿真系统的特性来确定,反映在输出显示上就是示波器的横轴坐标值的取值范围。“Start time”和“Stop time”项分别用以设置仿真开始时间(或取值区域下限)和终止时间(或取值区域上限),默认值分别为0.0和10.0s。(1)设置仿真时间设置仿真时间43 6.2 Simulink仿真技术与仿真技术与S函数函数 在在Simulink的仿真过程中的仿真过程中选择合适的算法是很重要的选择合适的算法是很重要的。仿真

33、算法是求常微分方程、传递函数、状态方程解的数值仿真算法是求常微分方程、传递函数、状态方程解的数值计算方法,主要有计算方法,主要有欧拉法(欧拉法(Eular)、阿达姆斯法)、阿达姆斯法(Adams)和龙格)和龙格-库塔法(库塔法(Runge-Kutta)。由于动态系。由于动态系统的差异性,使得某种算法对某类问题比较有效,而另外统的差异性,使得某种算法对某类问题比较有效,而另外算法对另一类问题更有效。因此,对不同的问题,可以选算法对另一类问题更有效。因此,对不同的问题,可以选择不同的适应算法和相应的参数,以得到更准确、快速的择不同的适应算法和相应的参数,以得到更准确、快速的解。解。(2)选择仿真算

34、法选择仿真算法44 6.2 Simulink仿真技术与仿真技术与S函数函数 根据仿真步长,根据仿真步长,Simulink中提供的常微分方程数值计中提供的常微分方程数值计算的算法大致可以分两类:算的算法大致可以分两类:Variable Step(可变步长类算(可变步长类算法)法),在仿真过程中可以自动调整步长,开通过减小步长,在仿真过程中可以自动调整步长,开通过减小步长来提高计算的精度;来提高计算的精度;Fixed Step(固定步长类算法)(固定步长类算法),在仿,在仿真过程中采取基准采样时间作为固定步长。一般地,使用真过程中采取基准采样时间作为固定步长。一般地,使用变步长的自适应算法是比较好

35、的选择。这类算法会按照设变步长的自适应算法是比较好的选择。这类算法会按照设定的精确度在各积分段内自适应地寻找最大步长进行积分,定的精确度在各积分段内自适应地寻找最大步长进行积分,从而使得运算效率最高。从而使得运算效率最高。45 6.2 Simulink仿真技术与仿真技术与S函数函数3示波器的属性设置示波器的属性设置 Scope(示波器)模块是(示波器)模块是Simulink仿真中非常重要的一个仿真中非常重要的一个模块,既可以显示仿真结果,而且可以同时保存波形数据,模块,既可以显示仿真结果,而且可以同时保存波形数据,是人机交互的重要手段。是人机交互的重要手段。46 6.2 Simulink仿真技

36、术与仿真技术与S函数函数 双击示波器模块图标,即可弹出示波器的窗口界面,双击示波器模块图标,即可弹出示波器的窗口界面,如图所示,在此可进行属性设置。如图所示,在此可进行属性设置。47 6.2 Simulink仿真技术与仿真技术与S函数函数 点击点击“示波器参数示波器参数”按键,弹出示波器参数设置界面,按键,弹出示波器参数设置界面,其中有两个功能,分别是其中有两个功能,分别是General(常规)功能和(常规)功能和Data history(数据)功能,如图所示。(数据)功能,如图所示。 a)General功能界面功能界面 b)Data history功能界面功能界面48 6.2 Simulin

37、k仿真技术与仿真技术与S函数函数 在在Gencral(常规)功能中,可以进行的设置有:(常规)功能中,可以进行的设置有:Number of Axes(坐标个数)、(坐标个数)、Time range(时间范(时间范围)、围)、Tick labels(单位标签)、(单位标签)、Sampling(采样)(采样)等。等。 在在Data history(数据)功能中,可以进行的设(数据)功能中,可以进行的设置有:置有:Limit data points to last(仅显示最新的数(仅显示最新的数据)、据)、Save data to workspace(保存数据至工作(保存数据至工作间)。间)。49

38、6.2 Simulink仿真技术与仿真技术与S函数函数 在示波器窗口的图形显示区域内单击鼠标右键,选择在示波器窗口的图形显示区域内单击鼠标右键,选择“Axes properties”功能,可弹出一个名为功能,可弹出一个名为“scope properties:axisl”的轴的轴属性设置界面,在此进行坐标属性设置界面,在此进行坐标y的最大值与最小值的设置,用的最大值与最小值的设置,用Title项来给显示信号命名,如图所示。项来给显示信号命名,如图所示。50 6.2 Simulink仿真技术与仿真技术与S函数函数6.2.2 S函数函数 在实际的应用中,通常会有用户自己所需的具有独特在实际的应用中,

39、通常会有用户自己所需的具有独特功能的模块,用功能的模块,用Simulink所提供的基本模块无法实现,这所提供的基本模块无法实现,这时可以使用时可以使用Simulink支持的支持的S-函数格式,用函数格式,用MATLAB语言语言或或C语言编程序,构成语言编程序,构成S-函数模块,像标准的函数模块,像标准的Simulink模块模块那样直接调用。实际上那样直接调用。实际上Simulink许多模块所包含的算法均许多模块所包含的算法均是由是由S-函数写的,用户也可以编写自己的函数写的,用户也可以编写自己的S-函数,然后进函数,然后进行封装便可得到具有特定功能的定制模块。但是行封装便可得到具有特定功能的定

40、制模块。但是S-函数的函数的使用与一般函数相比复杂的多。使用与一般函数相比复杂的多。51 6.2 Simulink仿真技术与仿真技术与S函数函数1S函数的基本概念函数的基本概念 S-函数是系统函数(函数是系统函数(System Function)的简称,是指采)的简称,是指采用用非图形化的方式非图形化的方式(即计算机语言,区别于(即计算机语言,区别于Simulink的系统模的系统模块)描述的一个功能块。用户可以采用块)描述的一个功能块。用户可以采用MATLAB代码,代码,C,C+,FORTRAM等语言编写等语言编写S-函数。函数。 S-函数具有特定的语法结构,用来描述并实现连续系统、函数具有特

41、定的语法结构,用来描述并实现连续系统、离散系统以及复合系统等动态系统;离散系统以及复合系统等动态系统;S-函数能够接受来自函数能够接受来自Simulink求解器的相关信息,并对求解器发出的命令作出适当求解器的相关信息,并对求解器发出的命令作出适当的响应,这种交互作用非常类似于的响应,这种交互作用非常类似于Simulink系统模块与求解器系统模块与求解器的交互作用。的交互作用。52 6.2 Simulink仿真技术与仿真技术与S函数函数 S-函数作为与其他语言相结合的接口,可以使用这个语函数作为与其他语言相结合的接口,可以使用这个语言所提供的强大能力。例如,言所提供的强大能力。例如,MATLAB

42、语言编写的语言编写的S-函数可函数可以充分利用以充分利用MATLAB所提供的丰富资源,方便地调用各种工所提供的丰富资源,方便地调用各种工具箱函数和图形函数;使用具箱函数和图形函数;使用C语言编写的语言编写的S-函数可以实现对操函数可以实现对操作系统的访问,如实现与其他进程的通信和同步等。作系统的访问,如实现与其他进程的通信和同步等。 用户可能会有如下的疑问:用户可能会有如下的疑问:Simulink已经提供了大量的已经提供了大量的内置的系统模块,并且允许用户自定义模块,那么为何还要内置的系统模块,并且允许用户自定义模块,那么为何还要使用使用S-函数呢?诚然,对于大多数动态系统仿真分析语言,函数呢

43、?诚然,对于大多数动态系统仿真分析语言,使用使用Simulink提供的模块即可实现,而无需使用提供的模块即可实现,而无需使用S-函数。函数。53 6.2 Simulink仿真技术与仿真技术与S函数函数 但是,当需要开发一个新的通用的模块作为一个独立但是,当需要开发一个新的通用的模块作为一个独立的功能单元时,使用的功能单元时,使用S-函数实现则是一种相当简便的方法。函数实现则是一种相当简便的方法。另外,由于另外,由于S-函数可以使用多种语言编写,因此可以将已函数可以使用多种语言编写,因此可以将已有的代码结合进来,而不需要在有的代码结合进来,而不需要在Simulink中重新实现算法,中重新实现算法

44、,从而在某种程度上实现了代码移植。从而在某种程度上实现了代码移植。 此外,在此外,在S-函数中使用文本方式输入公式、方程,非函数中使用文本方式输入公式、方程,非常适合复杂动态系统的数学描述,并且在仿真过程中可常适合复杂动态系统的数学描述,并且在仿真过程中可以对仿真进行更精确的控制。以对仿真进行更精确的控制。 54 6.2 Simulink仿真技术与仿真技术与S函数函数简单地说,用户可以从如下的几个角度来理解简单地说,用户可以从如下的几个角度来理解S-函数:函数:1. S-函数为函数为Simulink的的“系统系统”函数。函数。 2. 能够响应能够响应Simulink为求解器命令的函数。为求解器

45、命令的函数。3. 采用非图形化的方法实现一个动态系统。采用非图形化的方法实现一个动态系统。4. 可以开发新的可以开发新的Simulink模块。模块。 5. 可以与已有的代码相结合进行仿真。可以与已有的代码相结合进行仿真。 6. 采用文本方式输入复杂的系统方程。采用文本方式输入复杂的系统方程。 7. 扩展扩展Simulink功能。功能。M文件文件S-函数可以扩展图形能力,函数可以扩展图形能力,C MEX S-函数可以提供与操作系统的接口。函数可以提供与操作系统的接口。 8. S-函数的语法结构是为实现一个动态系统而设计的(默认用法)。函数的语法结构是为实现一个动态系统而设计的(默认用法)。55

46、6.2 Simulink仿真技术与仿真技术与S函数函数2与与S-函数相关的一些术语函数相关的一些术语(1)仿真例程(仿真例程(Routines)Simulink在仿真的特定阶段调用对应的在仿真的特定阶段调用对应的S-函数功能模块(函函数功能模块(函数),来完成不同的任务,如初始化、计算输出、更新离散状数),来完成不同的任务,如初始化、计算输出、更新离散状态、计算导数、结束仿真等,这些功能模块(函数)称为仿真态、计算导数、结束仿真等,这些功能模块(函数)称为仿真例程或者回调函数(例程或者回调函数(call back functions)。)。S-函数中的例程函数如下:函数中的例程函数如下:mdl

47、Initialization 初始化初始化mdlGetTimeofNextVarHit 计算下一个采样点计算下一个采样点mdlOutput 计算输出计算输出mdlUpdate 更新离散状态更新离散状态mdlDerivatives 计算导数计算导数mdlTerminate 结束仿真结束仿真56 6.2 Simulink仿真技术与仿真技术与S函数函数(2)直接馈通(直接馈通(Direct feedthrough) 直接馈通意味着在某一时刻的系统输出直接馈通意味着在某一时刻的系统输出y中包含某一时刻的中包含某一时刻的系统输入系统输入u时,或系统是一个变采样时间系统(时,或系统是一个变采样时间系统(v

48、ariable sample time system)且采样时间计算与输入)且采样时间计算与输入u相关时,需要直接馈通。相关时,需要直接馈通。time=(n*sample_time_value)+offset_time其中其中n表示第表示第n个采样点。个采样点。Simulink在每一个采样点上调用在每一个采样点上调用mdlOutput和和mdlUpdate例程。例程。 对于连续时间系统采样时间和偏移量的值应该设置为零。对于连续时间系统采样时间和偏移量的值应该设置为零。采样时间还可以继承自驱动模块、目标模块或者系统最小采样采样时间还可以继承自驱动模块、目标模块或者系统最小采样时间,这种情况下采样

49、时间值应该设置为时间,这种情况下采样时间值应该设置为-1,或者,或者INHERITED_SAMPLE_TIME。57 6.2 Simulink仿真技术与仿真技术与S函数函数(3)动态输入(动态输入(Dynamically sized inputs)S-函数支持动态可变维数的输入。函数支持动态可变维数的输入。S-函数的输入变量函数的输入变量u的维数决定于驱动的维数决定于驱动S-函数模块的输入信号的维数。函数模块的输入信号的维数。 58 6.2 Simulink仿真技术与仿真技术与S函数函数3S-函数的工作原理函数的工作原理(1)动态系统描述动态系统描述 在对动态系统建模时,总是能够采用广义的状态

50、空间形在对动态系统建模时,总是能够采用广义的状态空间形式进行表示。对无论是线性系统还是非线性系统进行描述式进行表示。对无论是线性系统还是非线性系统进行描述Simulink框图的大部分模块都具有一个输入向量框图的大部分模块都具有一个输入向量u、一个输出、一个输出向量向量y和一个状态向量和一个状态向量x,其中,其中x分为两部分:连续状态占据第分为两部分:连续状态占据第一部分,离散状态占据第二部分,如图所示。一部分,离散状态占据第二部分,如图所示。系统状态空间系统状态空间59 6.2 Simulink仿真技术与仿真技术与S函数函数(2)Simulink仿真的过程仿真的过程 Simulink的仿真过程

51、有初始化和仿真运行两个阶段组的仿真过程有初始化和仿真运行两个阶段组成,在初始化阶段,主要功能是初始化所有的模块,完成成,在初始化阶段,主要功能是初始化所有的模块,完成的工作有:将参数传递给的工作有:将参数传递给MATLAB进行求值、展开模型进行求值、展开模型的层次、检查信号的宽度和连接、确定状态初值和采样时的层次、检查信号的宽度和连接、确定状态初值和采样时间等。间等。 在仿真运行阶段,完成的工作有:计算输出、更新离在仿真运行阶段,完成的工作有:计算输出、更新离散状态、计算连续状态、计算输出等。散状态、计算连续状态、计算输出等。S-函数仿真流程如函数仿真流程如图图(c)所示,每个功能模块都对应于

52、一个仿真例程。所示,每个功能模块都对应于一个仿真例程。60 6.2 Simulink仿真技术与仿真技术与S函数函数图图(c) S-函数仿真流程函数仿真流程61 6.2 Simulink仿真技术与仿真技术与S函数函数4编写编写M文件文件S-函数函数(1)M文件文件S-函数的工作流程函数的工作流程 M文件文件S-函数和上节所介绍的函数和上节所介绍的S-函数仿真流函数仿真流程是一致的。它调用例程函数的顺序是通过标志程是一致的。它调用例程函数的顺序是通过标志Flag来控制的。图来控制的。图(d)给出了各仿真阶段的标志值、给出了各仿真阶段的标志值、变量值及其对应仿真例程。变量值及其对应仿真例程。 62

53、6.2 Simulink仿真技术与仿真技术与S函数函数图图(d) M文件文件S-函数流程函数流程63 6.2 Simulink仿真技术与仿真技术与S函数函数(2)M文件文件S-函数模板函数模板 Simulink为用户编写为用户编写S-函数提供了各种模板文件,函数提供了各种模板文件,其中定义了其中定义了S-函数完整的框架结构,用户可以根据自己函数完整的框架结构,用户可以根据自己的需要加以修改。的需要加以修改。 编写编写M文件文件S-函数时,推荐使用函数时,推荐使用S-函数模板文件函数模板文件sfuntmpl.m。这个文件是一个完整的。这个文件是一个完整的M文件文件S-函数,它函数,它包含包含1个

54、主函数和个主函数和6个子函数。个子函数。 在主函数内,程序根据标志变量在主函数内,程序根据标志变量Flag,将执行流程,将执行流程转移到相应的子函数,即例程函数。转移到相应的子函数,即例程函数。Flag标志量作为主标志量作为主函数的参数由系统(函数的参数由系统(Simulink引擎)调用时给出。引擎)调用时给出。64 6.2 Simulink仿真技术与仿真技术与S函数函数 若要打开模板文件,可在若要打开模板文件,可在MATLAB命令窗口输入命令窗口输入“edit sfuntmpl”命令,命令,模板如下:模板如下:function sys,x0,str,ts = sfuntmpl(t,x,u,f

55、lag)switch flag, case 0, sys,x0,str,ts=mdlInitializeSizes;case 1, sys=mdlDerivatives(t,x,u);case 2, sys=mdlUpdate(t,x,u);case 3, sys=mdlOutputs(t,x,u);case 4, sys=mdlGetTimeOfNextVarHit(t,x,u); case 9, sys=mdlTerminate(t,x,u);otherwise error(Unhandled flag = ,num2str(flag);end65 6.2 Simulink仿真技术与仿真技

56、术与S函数函数function sys,x0,str,ts=mdlInitializeSizessizes = simsizes; % 生成sizes数据结构 sizes.NumContStates = 0; % 连续状态数,缺省为 0sizes.NumDiscStates = 0; % 离散状态数,缺省为 0sizes.NumOutputs = 0; % 输出量个数,缺省为 0sizes.NumInputs = 0; % 输入量个数,缺省为 0sizes.DirFeedthrough = 1; %是否存在直接馈通。1:存在;0:不存在,缺省为 1。sizes.NumSampleTimes =

57、 1; % 采样时间个数,至少是一个sys = simsizes(sizes); % 返回sizes数据结构所包含的信息66 6.2 Simulink仿真技术与仿真技术与S函数函数% initialize the initial conditionsx0 = ; % 设置初始状态str = ; % 保留变量置空ts = 0 0; % 采样时间:采样周期 偏移量,采样周期为0表示是连续系统计算导数例程子函数:给定 t,x,u, 计算连续状态的导数,用户应该在此给出系统的连续状态方程。该子函数可以不存在。67 6.2 Simulink仿真技术与仿真技术与S函数函数function sys=mdlD

58、erivatives(t,x,u) sys = ; % sys 表示状态导数,即dx。状态更新例程子函数:给定 t,x,u, 计算离散状态的更新。每个仿真步长必然调用该子函数,不论是否有意义。用户除了在此描述系统的离散状态方程外,还可以填入其它每个仿真步长都有必要执行的代码function sys=mdlUpdate(t,x,u) sys = ; % sys 表示下一个离散状态 即 x(k+1)。计算输出例程子函数:给定 t,x,u, 计算输出。该子函数必须存在,用户可以在此描述系统的输出方程68 6.2 Simulink仿真技术与仿真技术与S函数函数function sys=mdlOutpu

59、ts(t,x,u) sys = ; % sys 表示下输出,即y。计算下一个采样时间,仅在系统是变采样时间系统时调用function sys=mdlGetTimeOfNextVarHit(t,x,u) sampleTime = 1; %设置下一次的采样时间是1s以后sys = t + sampleTime; %sys 表示下一个采样时间点。 %仿真结束时要调用的例程函数,在仿真结束时调用,用户可以在此完成结束仿真所需的必要工作69 6.2 Simulink仿真技术与仿真技术与S函数函数 程序的前程序的前17行是主程序,下面的程序是需要用户根据仿真行是主程序,下面的程序是需要用户根据仿真要求进行

60、充实的子程序。要求进行充实的子程序。 主函数包含四个输出:主函数包含四个输出:sys 数组包含某个子函数返回的值,数组包含某个子函数返回的值,它的含义随着调用子函数的不同而不同;它的含义随着调用子函数的不同而不同;x0 为所有状态的初为所有状态的初始化向量;始化向量;str是保留参数,总是一个空矩阵;是保留参数,总是一个空矩阵;Ts返回系统采样返回系统采样时间。注意在编写自己的时间。注意在编写自己的S-函数时,应该把函数名函数时,应该把函数名sfuntmpl改改为为S-function块中对应的函数名。块中对应的函数名。 初始化例程子函数是必须存在的子函数,在初始化阶段,初始化例程子函数是必须存在的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论