admin 管理员组文章数量: 887021
2023年12月19日发(作者:官网cms)
实用文档
Simulink仿真环境基础学习
Simulink是面向框图的仿真软件。
7.1演示一个Simulink的简单程序
【例7.1】创建一个正弦信号的仿真模型。
步骤如下:
(1) 在MATLAB的命令窗口运行simulink命令,或单击工具栏中的示。
图标,就可以打开Simulink模块库浏览器(Simulink Library Browser) 窗口,如图7.1所
实用文档
图7.1 Simulink界面
(2) 单击工具栏上的图标或选择菜单“File”——“New”——“Model”,新建一个名为“untitled”的空白模型窗口。
(3) 在上图的右侧子模块窗口中,单击“Source”子模块库前的“+”(或双击Source),或者直接在左侧模块和工具箱栏单击Simulink下的Source子模块库,便可看到各种输入源模块。
(4) 用鼠标单击所需要的输入信号源模块“Sine Wave”(正弦信号),将其拖放到的空白模型窗口“untitled”,则“Sine Wave”模块就被添加到untitled窗口;也可以用鼠标选中“Sine Wave”模块,单击鼠标右键,在快捷菜单中选择“add to 'untitled'”命令,就可以将“Sine Wave”模块添加到untitled窗口,如图7.2所示。
实用文档
图7.2 Simulink界面
(5) 用同样的方法打开接收模块库“Sinks”,选择其中的“Scope”模块(示波器)拖放到“untitled”窗口中。
(6) 在“untitled”窗口中,用鼠标指向“Sine Wave”右侧的输出端,当光标变为十字符时,按住鼠标拖向“Scope”模块的输入端,松开鼠标按键,就完成了两个模块间的信号线连接,一个简单模型已经建成。如图7.3所示。
(7) 开始仿真,单击“untitled”模型窗口中“开始仿真”图标示屏,可以看到黄色的正弦波形。如图7.4所示。
,或者选择菜单“Simulink”——“Start”,则仿真开始。双击“Scope”模块出现示波器显
实用文档
图7.3 Simulink模型窗口
图7.4 示波器窗口
(8) 保存模型,单击工具栏的图标,将该模型保存为“”文件。
7.2 Simulink的文件操作和模型窗口
7.2.1 Simulink的文件操作
1. 新建文件
新建仿真模型文件有几种操作:
在MATLAB的命令窗口选择菜单“File”“New”“Model”。
在图7.1的Simulink模块库浏览器窗口选择菜单“File”“New”“Model”,或者单击工具栏的 在图7.3的Simulink模型窗口选择菜单“File”“New”“Model”,或者单击工具栏的
2. 打开文件
打开仿真模型文件有几种操作:
在MATLAB的命令窗口输入不加扩展名的文件名,该文件必须在当前搜索路径中,例如输入“Ex0701”。
图标。
图标。
实用文档
在MATLAB的命令窗口选择菜单“File”Open…”或者单击工具栏的图标打开文件。
图标打开“.mdl”文件。
图标打开文件。
在图7.1的Simulink模块库浏览器窗口选择菜单“File”“Open…”或者单击工具栏的 在图7.3的Simulink模型窗口中选择菜单“File”“Open…”或者单击工具栏的7.2.2 Simulink的模型窗口
模型窗口由菜单、工具栏、模型浏览器窗口、模型框图窗口以及状态栏组成。
菜单
工具栏
模型框图
模型浏览器
状态栏
图7.5 双窗口模型窗口
1. 状态栏
2. 工具栏
模型窗口工具栏如图7.6所示。
实用文档
展示父系统
创建并编译生成exe文件
打开调试器
开始仿真
结束仿真
仿真模型 更新模块框图
单双窗口切换
打开库浏览器
图7.6 工具栏
3. 菜单
Simulink的模型窗口的常用菜单如表7.1所示。
表7.1模型窗口常用菜单表
菜单名 菜单项
New——Model
Model properties
File
Preferences
Print…
Close
Exit MATLAB
Create subsystem
Edit
Mask subsystem…
Look under mask
Update diagram
Go to parent
Model browser options
View
Block data tips options
Library browser
Fit system to view
Normal
功能
新建模型
模型属性
SIMULINK界面的默认设置选项
打印模型
关闭当前Simulink窗口
退出MATLAB系统
创建子系统
封装子系统
查看封装子系统的内部结构
更新模型框图的外观
显示当前系统的父系统
模型浏览器设置
鼠标位于模块上方时显示模块内部数据
显示库浏览器
自动选择最合适的显示比例
以正常比例(100%)显示模型
实用文档
Start/Stop
Pause/Continue
Simulation Simulation Parameters…
Normal
Accelerator
Text alignment
Filp name
Show/Hide name
Filp block
Rotate Block
Format
Library link display
Show/Hide drop shadow
Sample time colors
Wide nonscalar lines
Signal dimensions
Port data types
Storage class
Data explorer…
Tools
Simulink debugger…
Data class designer
Linear Analysis
启动/停止仿真
暂停/继续仿真
设置仿真参数
普通Simulink模型
产生加速Simulink模型
标注文字对齐工具
翻转模块名
显示/隐藏模块名
翻转模块
旋转模块
显示库链接
显示/隐藏阴影效果
设置不同的采样时间序列的颜色
粗线表示多信号构成的向量信号线
注明向量信号线的信号数
标明端口数据的类型
显示存储类型
数据浏览器
Simulink调试器
用户定义数据类型设计器
线性化分析工具
实用文档
7.3 模型的创建
7.3.1模块的操作
1. 对象的选定
选定单个对象
选定对象只要在对象上单击鼠标,被选定的对象的四角处会出现小黑块编辑框。
选定多个对象
如果选定多个对象,可以按下Shift键,然后再单击所需选定的模块;或者用鼠标拉出矩形虚线框,将所有待选模块框在其中,则矩形框中所有的对象均被选中,如图7.7所示。
图7.7 选定多个对象
选定所有对象
如果要选定所有对象,可以选择菜单“Edit”“Select all”。
2. 模块的复制
(1) 不同模型窗口(包括模型库窗口)之间的模块复制
选定模块,用鼠标将其拖到另一模型窗口。
选定模块,使用菜单的“Copy”和“Paste”命令。
选定模块,使用工具栏的“Copy”和“Paste”按钮。
(2) 在同一模型窗口内的复制模块(如图7.8所示)
选定模块,按下鼠标右键,拖动模块到合适的地方,释放鼠标。
选定模块,按住Ctrl键,再用鼠标拖动对象到合适的地方,释放鼠标。
实用文档
使用菜单和工具栏中的“Copy”和“Paste”按钮。
图7.8 在同一模型窗口复制对象
3. 模块的移动
在同一模型窗口移动模块
选定需要移动模块,用鼠标将模块拖到合适的地方。
在不同模型窗之间移动模块
在不同模型窗之间移动模块,在用鼠标移动的同时按下Shift键。
当模块移动时,与之相连的连线也随之移动。
4. 模块的删除
要删除模块,应选定待删除模块,按Delete键;或者用菜单“Edit”“Clear”或“Cut”;或者用工具栏的“Cut”按钮。
5. 改变模块大小
选定需要改变大小的模块,出现小黑块编辑框后,用鼠标拖动编辑框,可以实现放大或缩小。
6. 模块的翻转
模块翻转180度
选定模块,选择菜单“Format”“Flip Block”可以将模块旋转180度,如同7.9中间为翻转180度示波器模块。
模块翻转90度
选定模块,选择菜单“Format”“Rotate Block”可以将模块旋转90度,如图7.9右边示波器所示。如果一次翻转不能达到要求,可以多次翻转来实现。
图7.9 翻转模块
实用文档
7. 模块名的编辑
修改模块名
单击模块下面或旁边的模块名,出现虚线编辑框就可对模块名进行修改。
模块名字体设置
选定模块,选择菜单“Format”“Font”,打开字体对话框设置字体。
模块名的显示和隐藏
选定模块,选择菜单“Format”“Hide /Show name”,可以隐藏或显示模块名。
模块名的翻转
选定模块,选择菜单“Format”“Flip name”,可以翻转模块名。
7.3.2信号线的操作
1. 模块间连线
先将光标指向一个模块的输出端,待光标变为十字符后,按下鼠标键并拖动,直到另一模块的输入端。
2. 信号线的分支和折曲
(1) 分支的产生
将光标指向信号线的分支点上,按鼠标右键,光标变为十字符,拖动鼠标直到分支线的终点,释放鼠标;或者按住Ctrl键,同时按下鼠标左键拖动鼠标到分支线的终点,如图7.10所示。
图7.10 信号线的分支
(2) 信号线的折线
选中已存在的信号线,将光标指向折点处,按住Shift键,同时按下鼠标左键,当光标变成小圆圈时,用鼠标拖动小圆圈将折点拉至合适处,释放鼠标,如图7.11所示。
实用文档
图7.11 信号线的折线
3. 信号线文本注释(label)
添加文本注释
双击需要添加文本注释的信号线,则出现一个空的文字填写框,在其中输入文本。
修改文本注释
单击需要修改的文本注释,出现虚线编辑框即可修改文本。
移动文本注释
单击标识,出现编辑框后,就可以移动编辑框。
复制文本注释
单击需要复制的文本注释,按下Ctrl键同时移动文本注释,或者用菜单和工具栏的复制操作。
4. 在信号线中插入模块
如果模块只有一个输入端口和一个输出端口,则该模块可以直接被插入到一条信号线中。
7.3.3给模型添加文本注释
(1) 添加模型的文本注释
在需要当作注释区的中心位置,双击鼠标左键,就会出现编辑框,在编辑框中就可以输入文字注释。
(2) 注释的移动
在注释文字处单击鼠标左键,当出现文本编辑框后,用鼠标就可以拖动该文本编辑框。
实用文档
7.4 Simulink的基本模块
7.4.1基本模块
Simulink的基本模块包括9个子模块库。
1. 输入信号源模块库(Sources)
输入信号源模块是用来向模型提供输入信号。常用的输入信号源模块源如表7.2所示。
表7.2 常用的输入信号源模块表
名称
Constant
Step
Ramp
Sine Wave
Signal
Generator
From File
From Workspace
Clock
In
从文件获取数据
从当前工作空间定义的矩阵读数据
仿真时钟,输出每个仿真步点的时间
输入模块
模块形状
功能说明
恒值常数,可设置数值
阶跃信号
线性增加或减小的信号
正弦波输出
信号发生器,可以产生正弦、方波、锯齿波和随机波信号
2. 接收模块库(Sinks)
接收模块是用来接收模块信号的,常用的接收模块如表7.3所示。
表7.3 常用的接收模块表
名称
Scope
Display
XY Graph
模块形状
功能说明
示波器,显示实时信号
实时数值显示
显示X-Y两个信号的关系图
实用文档
To File
To Workspace
Stop
Simulation
Out
输出模块
输入不为零时终止仿真,常与关系模块配合使用
把数据写成矩阵输出到工作空间
把数据保存为文件
3. 连续系统模块库(Continuous)
连续系统模块是构成连续系统的环节,常用的连续系统模块如表7.4所示。
表7.4 常用的连续系统模块表
名称
Integrator
Derivative
State-Space
Transfer Fcn
Zero-Pole
Transport Delay
传递函数模型
零—极点增益模型
把输入信号按给定的时间做延时
模块形状
功能说明
积分环节
微分环节
状态方程模型
4. 离散系统模块库(Discrete)
离散系统模块是用来构成离散系统的环节,常用的离散系统模块如表7.5所示。
表7.5 常用的离散系统模块表
名称
Discrete Transfer
Fcn
Discrete Zero-Pole
离散零极点增益模型
模块形状
功能说明
离散传递函数模型
实用文档
Discrete
State-Space
Discrete Filter
Zero-Order Hold
First-Order Hold
Unit Delay
离散滤波器
零阶保持器
一阶保持器
采样保持,延迟一个周期
离散状态方程模型
7.4.2常用模块的参数和属性设置
1. 模块参数设置
(1) 正弦信号源(Sine Wave)
双击正弦信号源模块,会出现如图7.13所示图7.13的上部分为参数说明,仔细阅读可以Sample-based;Amplitude为正弦幅值;Bias为幅为采样时间。
(2) 阶跃信号源(Step)
阶跃信号模块是输入信号源,其模块参数对话其中:Step time为阶跃信号的变化时刻,框如图7.14所示。
initial value为初始值,Final value为终止值,Sample time为采样时间。
(3) 从工作空间获取数据(From workspace)
从工作空间获取数据模块的输入信号源为工作空间。
【例7.2】在工作空间计算变量t和y,将其运算的结果作为系统的输入。
t=0:0.1:10;
y=sin(t);
t=t';
的参数设置对话框。
帮助用户设置参数。Sine type为正弦类型,包括Time-based和值偏移值;Frequency为正弦频率;Phrase为初始相角;Sample time图7.13 模块的参数设置
图7.14 阶跃信号模块的参数
实用文档
y=y';
然后将“From Workspace”模块的参数设置对话框打开,如图7.15(a)所示,在“Data”栏填写“[t,y]”,单击“OK”按钮完成。则在模型窗口中该模块就显示为图7.15(b)。用示波器作为接收模块,可以查看输出波形为正弦波。
图7.15 (a) 模块参数设置 (b) 从工作空间获取数据模块
“Data”的输入有几种,可以是矩阵、包含时间数据的结构数组。“From Workspace”模块的接收模块必须有输入端口,“Data”矩阵的列数应等于输入端口的个数+1,第一列自动当成时间向量,后面几列依次对应各端口。
t=0:0.1:2*pi;
y=sin(t);
y1=[t;y];
save Ex0702 y1 %保存在“”文件中
(4) 从文件获取数据(From file)
从文件获取数据模块是指从mat数据文件中将【例7.2】中的数据保存到.mat文件:
t=0:0.1:2*pi;
y=sin(t);
y1=[t;y];
save Ex0702 y1 %保存在然后将“From File”模块的参数设置对话
获取数据为系统的输入。
“”文件中
框打开,如图7.16所示,在“File name”栏填写“”,图7.16 From File参数设置
实用文档
单击“OK”按钮完成。用示波器作为接收模块,可以查看输出波形。
(5) 传递函数(Transfer function)
传递函数模块是用来构成连续系统结构的模块,其模块参数对话框如图7.17所示。
图7.18
图7.17 传递函数模块参数设置
口的工具栏可以调整显示的波形,显示正弦信号的示波器如图7.19所示。
在上图中设置“Denominator”为“[1 1.414 1]”,则在模型窗口中显示为如图7.18所示。
(6) 示波器(Scope)
示波器模块是用来接收输入信号并实时显示信号波形曲线,示波器窗
实用文档
纵坐标Y坐标变焦
恢复保存过的坐标设置
的自动打开参数对话框
X-Y坐标变焦
X坐标变焦
浮动示波器
把当前的坐标设置保存
图7.19 示波器窗口
2. 模块属性设置
每个模块的属性对话框的内容都相同,如图7.22所示。
实用文档
图7.22 模块的属性设置
(1) 说明(Description)
对模块在模型中用法的注释。
(2) 优先级(Priority)
规定该模块在模型中相对于其它模块执行的优先顺序。
(3) 标记(Tag)
用户为模块添加的文本格式标记。
(4) 调用函数(Open function)
当用户双击该模块时调用的MATLAB函数。
(5) 属性格式字符串(Attributes format string)
指定在该模块的图标下显示模块的哪个参数和格图7.23 模块的属性格式字符串
式。
实用文档
7.5复杂系统的仿真与分析
Simulink的模型实际上是定义了仿真系统的微分或差分方程组,而仿真则是用数值解算法来求解方程。
7.5.1仿真的设置
在模型窗口选择菜单“Simulation”“Simulation parameters…”,则会打开参数设置对话框,如图7.24所示。
图7.24 Solver参数设置
1. Solver页的参数设置
(1) 仿真的起始和结束时间
仿真的起始时间(Start time)
仿真的结束时间(Stop time)
(2) 仿真步长
仿真的过程一般是求解微分方程组,“Solve options”的内容是针对解微分方程组的设置。
(3) 仿真解法
Type的右边:设置仿真解法的具体算法类型。
(4) 输出模式
实用文档
根据需要选择输出模式(Output options),可以达到不同的输出效果。
2. Workspace I/O(工作空间输入输出)页的设置
如图7.25所示,可以设置Simulink从工作空间输入数据、初始化状态模块,也可以把仿真的结果、状态模块数据保存到当前工作空间。
图7.25 Workspace I/O参数设置
(1) 从工作空间装载数据(Load from workspace)
(2) 保存数据到工作空间(Save to workspace)
Time栏
勾选Time栏后,模型将把(时间)变量以在右边空白栏填写的变量名(默认名为tout)存放于工作空间。
States栏
勾选States栏后,模型将把其状态变量在右边空白栏填写的变量名(默认名为xout)存放于工作空间。
Output栏
如果模型窗口中使用输出模块“Out”,那么就必须勾选Output栏,并填写在工作空间中的输出数据变量名(默认名为yout)。
Final state栏
Final state栏的勾选,将向工作空间以在右边空白栏填写的名称(默认名为xFinal),存放最终状态值。
(3) 变量存放选项(Save options)
Save options必须与Save to workspace配合使用。
实用文档
7.5.2连续系统仿真
【例7.3】建立二阶系统的仿真模型。
方法一:
输入信号源使用阶跃信号,系统使用开环传递函数1s0.6s2,接受模块使用示波器来构成模型。
(1) 在“Sources”模块库选择“Step”模块,在“Continuous”模块库选择“Transfer Fcn”模块,在“Math Operations”模块库选择“Sum”模块,在“Sinks”模块库选择“Scope”。
(2) 连接各模块,从信号线引出分支点,构成闭环系统。
(3) 设置模块参数,打开“Sum”模块参数设置对话框,如图7.26所示。将“Icon shape”设置为“rectangular”,将“List of signs”设置为“|+-”,其中“|”表示上面的入口为空。
“Transfer Fcn”模块的参数设置对话框中,将分母多项式“Denominator”设置为“[1 0.6 0]”。
图7.26 Sum参数设置
将“Step”模块的参数设置对话框中,将“Step time”修改为0。
(4) 添加信号线文本注释
双击信号线,出现编辑框后,就输入文本。则模型如图7.27所示。
实用文档
图7.27 二阶系统模型
(5) 仿真并分析
单击工具栏的“Start simulation”按钮,开始仿真,在示波器上就显示出阶跃响应。
在Simulink模型窗口,选择菜单“Simulation”——“Simulation parameters…”命令,在“Solver”页将“Stop time”设置为15,然后单击“Start simulation”按钮,示波器显示的就到15秒结束。
打开示波器的Y坐标设置对话框,将Y坐标的“Y-min”改为0,“Y-max”改为2,将“Title”设置为“二阶系统时域响应”,则示波器如图7.28所示。
图7.28 示波器显示
方法二:
(1) 系统使用积分模块(Integrator)和零极点模块(zero-pole)串联,反馈使用“Math Operations”模块库中的“Gain”模块构成反馈环的增益为-1。
(2) 连接模块,由于“Gain”模块在反馈环中,因此需要使用“Flip Block”翻转该模块。
(3) 设置模块参数,将“zero-pole”模块参数对话框中的“Zeros”栏改为“[]”,将“Poles”栏改为[-0.6]。
实用文档
将“Gain”模块的“Gain”参数改为-1。模型如图7.29所示。
图7.29 二阶系统模型
如果将示波器换成“Sinks”模块库中的“Out”模块 plot(tout,yout)
;然后在仿真参数设置对话框的“Workspace I/O” 页(工作空间输入输出),将“Time”和“Output”栏勾选,并分别设置保存在工作空间的时间量和输出变量为“tout”和“yout”。仿真后在工作空间就可以使用这两个变量来绘制曲线,如图7.30所示:
图7.30 plot绘制的时域响应波形
7.5.3离散系统仿真
【例7.4】控制部分为离散环节,被控对象为两个连续环节,其中一个有反馈环,反馈环引入了零阶保持器,输入为阶跃信号。
实用文档
创建模型并仿真:
(1) 选择一个“Step”模块,选择两个“Transfer Fcn”模块,选择两个“Sum”模块,选择两个“Scope”模块,选择一个“Gain”模块,在“Discrete”模块库选择一个“Discrete Filter”和一个“Zero-Order Hold”模块。
(2) 连接模块,将反馈环的“Gain”模块和“Zero-Order Hold”模块翻转。
(3) 设置参数,“Discrete Filter”和“Zero-Order Hold”模块的“Sample time”都设置为0.1s。
(4) 添加文本注释,系统框图如图7.31所示。
图7.31离散系统框图
(5) 设置颜色,Simulink为帮助用户方便地跟踪不同采样频率的运作范围和信号流向,可以采用不同的颜色表示不同的采样频率,选择菜单“Format”“Sample
time color”,就可以看到不同采样频率的模块颜色不同。
(6) 开始仿真,在Simulink模型窗口,选择菜单“Simulation”“Simulation parameters…”,将“Max step size”设置为0.05s,则两个示波器“Scope”和“Scope1”的显示如图7.32所示。
实用文档
图7.32 T=Tk=0.1 (a) d(k)示波器显示 (b) y(t)示波器显示
可以看出当T=Tk=0.1时系统的输出响应较平稳。
(7) 修改参数,将“Discrete Filter”模块的“Sample time”设置为0.6s,“Zero-Order Hold”模块的“Sample time”不变;选择菜单“Edit”“Update diagram”命令修改颜色,就可以看到“Discrete Filter”模块的颜色变化了;然后开始仿真,则示波器显示如图7.33所示。
可以看出当T=0.6而Tk=0.1时,系统出现振荡。
(8) 修改参数,将“Discrete Filter” 和“Zero-Order Hold”模块的“Sample time”都设置为0.6s,更新框图颜色,开始仿真,则示波器显示如图7.34所示。
图7.33 T=0.6 Tk=0.1 (a) d(k)示波器显示 (b) y(t)示波器显示
实用文档
当T=Tk=0.6时,系统出现强烈的振荡。
图7.34 T=0.6 Tk=0.1 (a) d(k)示波器显示 (b) y(t)示波器显示
7.5.4仿真结构参数化
当系统参数需要经常改变或由函数得出时,可以使用变量来作为模块的参数。
【例7.5】将【例7.4】中的模块结构参数用变量表示,结构图如图7.35所示。
实用文档
图7.35离散系统框图
将参数设置放在Ex0705_1.m文件中:
% Ex0705_1 参数设置
T=0.1; %控制环节采样时间
Tk=0.6; %零阶保持器采样时间
k=0.03; %Gain增益
zt1=1.44;zt2=-1.26;zt3=1;zt4=-1;
tf11=6.7;tf12=0.1;tf13=1;
tf21=1;tf22=3;tf23=1
在MATLAB工作空间运行该文件:
Ex0705_1
7.6子系统与封装
7.6.1建立子系统
子系统类似于编程语言中的子函数。建立子系统有两种方法:在模型中新建子系统和在已有的子系统基础上建立。
1. 在已建立的模型中新建子系统
【例7.6】打开【例7.4】建立的模型,将控制对象中的第一个连续环节中的反馈环建立为一个子系统。
在模型窗口中,将控制对象中的第一个连续环节的反馈环用鼠标拖出的虚线框框住,选择菜单“Edit”“Create subsystem”,则系统如图7.36所示。
实用文档
图7.36 子系统建立
双击子系统,则会出现“Subsystem”模型窗口,如图7.37所示。可以看到子系统模型除了用鼠标框住的两个环节,还自动添加了一个输入模块“In1”和一个输出模块“Out1”。
2. 在已有的子系统基础上建立
【例7.7】在【例7.6】的基础上建立新子系统,将【例7.6】模型的控制对象中的第一个对象环节整个作为一个子系统。
将图7.36中的所有对象都复制到新的空白模型窗口中,双击打开子系统“Subsystem”,则出现如图7.37所示的子系统模型窗口,添加模型构成反馈环形成闭环系统,如图7.38所示。
实用文档
图7.37 子系统模型窗口
图7.38 子系统模块窗口
然后将系统模型修改为如图7.39所示的系统。
图7.39 包含子系统的模型
创建的子系统可以打开和修改,但不能再解除子系统设置。
7.6.2条件执行子系统
1. 使能子系统(Enabled Subsystem)
实用文档
图7.41 (a) “Enable”模块参数设置 (b) “Out1”模块参数设置
【例7.8】建立一个用使能子系统控制正弦信号为半波整流信号的模型。
模型由正弦信号“Sine wave”为输入信号源,示波器“Scope”为接收模块,使能子系统“Enabled Subsystem”为控制模块,
连接模块,将“Sine wave”模块的输出作为“Enabled Subsystem”的控制信号,模型如图7.42(a)所示。
开始仿真,由于“Enabled Subsystem”的控制为正弦信号,大于零时执行输出,小于零时就停止,则示波器显示为半波整流信号,示波器的显示如图7.42(b)所示。
2. 触发子系统(Triggered Subsystem)
【例7.9】建立一个用触发子系统控制正弦信号输出阶梯波形的模型。
图7.43 (a) 触发子系统模型 (b) 示波器显示
图7.42 (a) 使能子系统模型 (b) 示波器显示
实用文档
模型由正弦信号“Sine wave”为输入信号源,示波器“Scope”为接收模块,触发子系统“Triggered Subsystem”为控制模块,选择“Sources”模块库中的“Pulse
Generator”模块为控制信号。
连接模块,将“Pulse Generator”模块的输出作为“Triggered Subsystem”的控制信号,模型如图7.43(a)所示。
开始仿真,由于“Triggered Subsystem”的控制为“Pulse Generator”模块的输出,示波器输出如图7.43(b)所示。
3. 使能触发子系统(Enabled and Triggered Subsystem)
使能触发子系统就是触发子系统和使能子系统的组合,含有触发信号和使能信号两个控制信号输入端,触发事件发生后,Simulink检查使能信号是否大于0,大于0就开始执行。
7.6.3子系统的封装
1. 封装子系统的步骤
(1) 选中子系统双击打开,给需要进行赋值的参数指定一个变量名;
(2) 选择菜单“Edit”“Mask subsystem”,出现封装对话框;
(3) 在封装对话框中的设置参数,主要有“Icon”、“Parameters”、“Initialization”和“Documentation”四个选项卡。
2. Icon选项卡
Icon选项卡用于设定封装模块的名字和外观,如图7.44所示。
实用文档
图7.44 Icon参数设置
(1) Drawing commands栏
用来建立用户化的图标,可以在图标中显示文本、图像、图形或传递函数等。在Drawing commands栏中的命令如上图中“Examples of drawing commands”的下拉列表所示,包括plot、disp、text、port_label、image、patch、color、droots、dploy和fprintf。
(2) Icon Options栏
用于设置封装模块的外观。
3. Parameters选项卡
Parameters选项卡用于输入变量名称和相应的提示,如图7.45所示。
实用文档
图7.45 Parameters参数设置
(1) Add、Delete、Move up和Move down按钮
用于添加、删除、上移和下移输入变量。
(2) Dialog Parameters
Prompt:输入变量的含义,其内容会显示在输入提示中。
Variable:输入变量的名称。
type:给用户提供设计编辑区的选择。“Edit”提供一个编辑框;“Checkbox”提供一个复选框;“Popup”提供一个弹出式菜单。
Evaluate:用于配合“type”的不同选项提供不同的变量值,有两个选项“Evaluate”和“Literal”,其含义如表7.6所示。
表7.6 Assignment选项的不同含义
Evaluate
type
Edit
Checkbox
Popup
on off
输入的文字是程序执行时所用的变量值 将输入的内容作为字符串
输出1和0
将选择的序号作为数值,第一项则为1
输出为on或off
将选择的内容当作字符串
实用文档
(3) Options for selected parameter
Pops:当“type”选择“Popup”时,用于输入下拉菜单项。
Callback:用于输入回调函数。
4. Initialization选项卡
Initialization选项卡用于初始化封装子系统。
5. Documentation选项卡
Documentation选项卡用于编写与该封装模块对应的Help和说明文字,分别有“Mask type”、“Mask Description”和“Mask help”栏。
(1) Mask type栏
用于设置模块显示的封装类型。
(2) Mask Description栏
用于输入描述文本。
(3) Mask help栏
用于输入帮助文本。
6. 按钮
设置参数设置对话框中的“Apply”按钮用于将修改的设置应用于封装模块;“Unmask”按钮用于将封装撤销,则双击该模块就不会出现定制的对话框。
【例7.10】创建一个二阶系统,并将子系统进行封装。
创建一个二阶系统,将其闭环系统构成子系统,并封装将阻尼系数zeta和无阻尼频率wn作为输入参数。
(1) 创建模型,并将系统的阻尼系数用变量zeta表示,无阻尼频率用变量wn表示,如图7.46所示。
实用文档
图7.46 二阶系统模型
(2) 用虚线框框住反馈环,选择菜单“Edit”“Create Subsystem”,则产生子系统,如图7.47所示。
图7.47 子系统模型
(3) 封装子系统,选择菜单“Edit”“Mask subsystem”,出现封装对话框,将zeta和wn作为输入参数。
在Icon选项卡中设置的“Drawing commands”栏中写文字并画曲线,命令如下:
disp('二阶系统')
plot([0 1 2 3 10],-exp(-[0 1 2 3 10]))
在Parameters选项卡中,单击“Add”按钮添加两个输入参数,设置“Prompt”分别为“阻尼系数”和“无阻尼振荡频率”,并设置“type”栏分别为“Popup”和“edit”,对应的“Variable”为“zeta”和“wn” ,设置“Popups”为“0 0.3 0.5 0.707 1 2”,如图7.48(a)所示。
在Initialization选项卡初始化输入参数,如图7.48(b)所示。
实用文档
图7.48 (a) Parameters选项卡 (b) Initialization选项卡
在Documentation选项卡中输入提示和帮助信息,如图7.48(c)所示。
实用文档
图7.48(c) Documentation选项卡
单击“OK”按钮,完成参数设置,然后双击该封装子系统,则出现如图7.49(a)所示的封装子系统,双击该子系统出现图7.49(b)所示的输入参数对话框,在对话框中输入“阻尼系数”zeta和“无阻尼振荡频率”wn的值,再不需要为子系统中的每个模块分别打开参数设置对话框了。
图7.49 (a) 封装子系统外观 (b) 封装子系统参数输入对话框
实用文档
7.7用MATLAB命令创建和运行Simulink模型
7.7.1用MATLAB命令创建Simulink模型
1. Simulink模型与文件
(1) 创建新模型
new_system命令用来在MATLAB的工作空间创建一个空白的Simulink模型。
语法:
new_system(‘newmodel’,option) %创建新模型
说明:‘newmodel’为模型名;option选项可以是’Library’和’Model’两种,也可以省略,默认为’Model’。
(2) 打开模型
open_system命令用来打开逻辑模型,在Simulink模型窗口显示该模型。
语法:
open_system(‘model’) %打开模型
说明:‘model’为模型名。
(3) 保存模型
save_system命令用来保存模型为模型文件,扩展名为.mdl。
语法:
save_system(‘model’,文件名) %保存模型
说明:‘model’为模型名可省略,如果不给出模型名,则自动保存当前的模型;文件名指保存的文件名,是字符串,也可省略,如果不省略则保存为新文件。
【例7.11】用MATLAB命令创建新模型。
new_system('Ex0711model')
open_system('Ex0711model')
save_system('Ex0711model','Ex0711')
%创建逻辑模型
%打开模型
%保存模型文件
2. 添加模块和信号线
(1) 添加模块
使用add_block命令在打开的模型窗口中添加新模块。
语法:
实用文档
add_block(’源模块名’,’目标模块名’,’属性名1’,属性值1,’属性名2’,属性值2,…)
说明:’源模块名’为一个已知的库模块名,或在其它模型窗口中定义的模块名,Simulink自带的模块为内在模块,例如正弦信号模块为’built-in/Sine Wave’;’目标模块名’为在模型窗口中使用的模块名。
(2) 添加信号线
模块需要用信号线连接起来,添加信号线使用add_line命令。
语法:
add_line(’模块名’,’起始模块名/输出端口号’, ’终止模块名/输入端口号’)
add_line(’模块名’,m)
说明:’模块名’为在模型窗口中的模块名;m为有两列元素的矩阵,每列给出一个转折点坐标。
【例7.11续】用MATLAB命令添加四个模块连接成一个二阶系统模型。
add_block('built-in/Step','Ex0711/Step','position',[20,100,40,120]) %添加阶跃信号模块
add_block('built-in/Sum','Ex0711/Sum','position',[60,100,80,120]) %添加Sum模块
add_block('built-in/Transfer Fcn','Ex0711/Fcn1','position',[120,90,200,130])
%添加传递函数模块
add_block('built-in/Scope','Ex0711/Scope','position',[240,100,260,120]) %添加示波器模块
add_line('Ex0711','Step/1','Sum/1') %添加连线
add_line('Ex0711','Sum/1','Fcn1/1')
add_line('Ex0711','Fcn1/1','Scope/1')
add_line('Ex0711','Fcn1/1','Sum/2')
程序分析:'position'为位置属性,模块名为'Ex0711'。
则出现如图7.50所示的模型。
图7.50 二阶系统模型
3. 设置模型和模块属性
实用文档
(1) 模型属性的获得
【例7.11续】获得模型属性和各属性的含义。
f1=simget('Ex0711')
f1 =
AbsTol: 'auto' %绝对允许误差限
Debug: 'off' %是否允许跟踪调试
Decimation: 1 %输出位数,每个1点输出1次
DstWorkspace: 'current' %输出量工作空间
FinalStateName: '' %状态变量名
FixedStep: 'auto' %定步长
InitialState: [] %初始状态向量
InitialStep: 'auto' %初始步长
MaxOrder: 5 %最高算法阶次
SaveFormat: 'Array' %变量类型
MaxDataPoints: 1000 %最大返回点数
MaxStep: 'auto' %最大步长
MinStep: [] %最小步长
OutputPoints: 'all' %输出点
OutputVariables: 'ty' %输出变量
Refine: 1 %插值点
RelTol: 0.0010 %相对误差
Solver: 'ode45' %仿真算法
SrcWorkspace: 'base' %输入量工作空间
Trace: '' %是否逐步显示
ZeroCross: 'on' 检测过零点
(2) 设置模型属性
(3) 设置模块和信号线属性
【例7.11续】设置各模块的属性,建立一个与【例7.3】模型参数相同的二阶系统模型。
set_param('Ex0711','StopTime','15') %设置采样停止时间
set_param('Ex0711/Step','time','0') %设置阶跃信号上升时间
set_param('Ex0711/Sum','Inputs','+-') %设置Sum模块信号的符号
set_param('Ex0711/Fcn1','Denominator','[1 0.6 0]') %设置传递函数分母
则系统模型框图如图7.51所示。
实用文档
图7.51 二阶系统模型
4. 删除模块和信号线
(1) 删除模块
例如删除示波器模块则使用:
delete_block('Ex0711/Scope')
(2) 删除信号线
7.7.2用MATLAB命令运行Simulink模块
使用sim命令来完成,在命令窗口就可以方便地对模型分析和仿真。
语法:
[t,x,y]=sim(‘model’,timespan,options,ut) %利用输入参数进行仿真,输出矩阵
[t,x,y1,y2,…]=sim(‘model’,timespan,options,ut)%利用输入参数进行仿真,逐个输出
说明:‘model’为模型名;timespan是仿真时间区间,可以是[t0,tf]表示起始时间和终止时间,也可以是[],利用模型对话框设置时间,如果是标量则指终止仿真时间;options参数为模型控制参数;ut为外部输入向量。t为时间列向量;x为状态变量构成的矩阵;y为输出信号构成的矩阵,每列对应一路输出信号。timespan 、options和ut参数都可省略。
【例7.11续】运行二阶系统的阶跃响应,如图7.50所示。
[t,x,y]=sim('Ex0711',[0,15]);
plot(t,x(:,2))
实用文档
图7.50 二阶系统时间响应
7.8以Simulink为基础的模块工具箱简介
在打开Simulink时出现的界面中,如前面的图7.1所示左侧的模块库和工具箱(Block and Toolboxes)栏中列出了各领域开发的仿真环节库。
主要的仿真环节库有:
控制系统工具箱(Control System Toolbox)
通信模块工具箱(Communications Blockset )
数字信号处理模块工具箱(DSP Blockset)
非线性控制模块工具箱(NCD Blockset)
定点处理模块工具箱(Fixed-Point Blockset)
状态流(StateFlow)
系统辨识模块工具箱(System ID Blocks)
神经网络模块工具箱(Neural Network Blockset)
模糊逻辑工具箱(Fuzzy Logic Toolbox)
实用文档
版权声明:本文标题:matlab-simulink初级教程 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1702948827h437037.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论