




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 Simulink建模与仿真 6.1 Simulink6.1 Simulink模块库简介与使用模块库简介与使用 6.2 6.2 构建构建SimulinkSimulink框图框图 6.3 6.3 设计设计SimulinkSimulink框图的界面框图的界面 6.4 Simulink6.4 Simulink与与MATLABMATLAB的接口设计的接口设计 6.5 6.5 简单系统的仿真分析简单系统的仿真分析 6.6 Simulink6.6 Simulink的调试技术的调试技术6.1 Simulink模块库简介与使用 Simulink是基于MATLAB环境之上的高性能的系统级仿真设计平台,因此
2、启动Simulink之前必须首先运行MATLAB,然后才能启动Simulink并建立系统模型。启动Simulink有两种方式: (1) 用命令行方式启动Simulink。即在MATLAB的命令窗口中直接键入如下命令: simulink利用利用SimulinkSimulink进行系统仿真的步骤是:进行系统仿真的步骤是:启动Simulink,打开Simulink模块库;打开空白模型窗口;建立Smulink仿真模型;设置仿真参数,进行仿真;输出仿真结果。 (2) 使用工具栏按钮启动Simulink。即用鼠标单击MATLAB工具栏中的Simulink按钮。启动Simulink,建立系统模型,其相应的基
3、本操作如图6.1所示。 依次表示新建、打开系统模型文件 依次表示新建、打开与保存系统模型文件 图6.1 启动Simulink,建立系统模型的基本操作为便于用户能够快速构建自己所需的动态系统,Simulink提供了大量以图形方式给出的内置系统模块,使用这些内置模块可以快速方便地设计出特定的动态系统。为了便于用户对Simulink内置模块库的认识与使用,本节简单介绍Simulink中的模块库以及模块库中具有代表意义的系统模块。图6.2所示Simulink的模块库浏览器。 模块搜索 模块描述 系统模块 系统模块库 图6.2 Simulink的模块库浏览器 6.1.2 Simulink公共模块库 Si
4、mulink公共模块库是Simulink中最为基础、最为通用的模块库,它可以被应用到不同的专业领域中。Simulink公共模块库主要包含9个模块库,如图6.3所示。下面分别介绍各个模块的功能: 1. Continuous(连续系统模块库) 连续系统模块库以及其中各模块的功能如图6.4所示。 2. Discrete(离散系统模块库) 离散系统模块库以及其中各模块的功能如图6.5所示。 连续系统模块库 离散系统模块库 函数与表库 数学运算库 非线性系统模块库 信号与系统模块库 系统输出模块库 系统输入信号模块库 Simulink 子系统模块库 连续系统模块库离散系统模块库函数与表库数学运算库非线性
5、系统模块库信号与系统模块库系统输出模块库系统输入模块库子系统模块库图6.3 Simulink的公共模块库 模模块块功功能能说说明明: 连续信号的数值微分 输入信号的连续时间积分 单步积分延迟,输出为前一个输入 线性连续系统的状态空间描述 线性连续系统的传递函数描述 对输入信号进行固定时间延迟 对输入信号进行可变时间延迟 线性连续系统的零极点模型 模块功能说明:连续信号的数值微分输入信号的连续时间积分单步积分延迟,输出为前一个输入线性连续系统的状态空间描述线性连续系统的传递函数描述对输入信号进行固定时间延迟对输入信号进行可变时间延迟线性连续系统的零极点模型图6.4 连续系统模块库及其功能 模块功
6、能说明模块功能说明: 线性离散系统的传递函数描述 线性离散系统的零极点模型描述 线性离散系统的滤波器描述 线性离散系统的状态空间描述 离散时间积分器 离散信号的一阶保持器 单位延迟 离散信号的零阶保持器 模块功能说明模块功能说明: 线性离散系统的传递函数描述 线性离散系统的零极点模型描述 线性离散系统的滤波器描述 线性离散系统的状态空间描述 离散时间积分器 离散信号的一阶保持器 单位延迟 离散信号的零阶保持器 模块功能说明:线性离散系统的传递函数描述线性离散系统的零极点模型描述线性离散系统的滤波器描述线性离散系统的状态空间描述离散时间积分器离散信号的一阶保持器单位延迟离散信号的零阶保持器图6.
7、5 离散系统模块库及其功能3. Functions & Tables(函数与表库)函数与表库以及其中各模块的功能如图6.6所示。4. Math(数学运算库)数学运算库以及其中各模块的功能如图6.7所示。5. Nonlinear(非线性系统模块库)非线性系统模块库以及其中各模块的功能如图6.8所示。6. Signals & Systems(信号与系统模块库) 信号与系统模块库以及其中各模块的功能如图6.9所示。 模块功能说明模块功能说明: 表数据选择器(从表中选择数据) 求取输入信号的数学函数值 对输入信号进行内插运算 输入信号的一维线性内插 输入信号的二维线性内插 输入信号的
8、n 维线性内插 M 函数,对输入进行运算输出结果 多项式求值 查找输入信号所在范围 S 函数模块 S 函数生成器 模块功能说明:表数据选择器(从表中选择数据)求取输入信号的数学函数值对输入信号进行内插运算输入信号的一维线性内插输入信号的二维线性内插输入信号的n维线性内插M函数(对输入进行运算输出结果)多项式求值查找输入信号所在范围S-函数模块S-函数生成器图6.6 函数与表库及其功能模块功能说明模块功能说明: 求取信号的绝对值 输出强制系统输入为零的代数状态 按位逻辑运算 逻辑真值查找 输出输入复数的幅值与相位 输出系统输入的实部或虚部 点乘运算 信号增益 信号逻辑运算 幅值与相位转化为复数形
9、式 特定的一些数学函数 矩阵增益 求取输入的最小或最大值 乘法或除法器 从输入实部与虚部构造复数 关系运算器 求整运算器 符号运算 渐变增益 对输入求和或差 三角与双曲函数 模块功能说明:求取信号的绝对值输出强制系统输入为零的代数状态按位逻辑运算逻辑真值查找输出输入复数的幅值与相位输出系统输入的实部或虚部点乘运算信号增益信号逻辑运算幅值与相位转化为复数形式特定的一些数学函数矩阵增益求取输入的最小或最大值乘法或除法器从输入实部与虚部构造复数关系运算器求整运算器符号运算渐变增益对输入求和或差三角与双曲函数图6.7 数学运算库及其能2模块功能说明:模块功能说明:死区间隙库仑粘滞信号死区信号双输出选择
10、器(手动)多端口输出选择器量化器信号上升、下降速率控制器信号延迟器饱和信号三路选择器、根据输入控制输出模块功能说明:死区间隙库仑粘滞信号死区信号双输出选择器(手动)多端口输出选择器量化器信号上升、下降速率控制器信号延迟器饱和信号三路选择器(根据输入2控制输出)图6.8 非线性系统模块库及其功能 模模块块功功能能说说明明: 数据类型转换器 信号分解器 从 Goto 模块中获得信号 函数调用发生器 向 Goto 模块传递信号 Goto 模块标记控制器 将信号与特定的偏移值比较 初始化信号 矩阵串联器 合并输入信号为一个输出 模块控制信息 信号组合器 信号探测器 信号维数改变器 选择或重组信号 信号
11、线属性修改 输入信号宽度 模块功能说明:数据类型转换器信号分解器从Goto 模块中获得信号函数调用发生器向Goto 模块传递信号Goto 模块标记控制器将信号与特定的偏移值比较初始化信号矩阵串联器合并输入信号为一个输出模块控制信息信号组合器信号探测器信号维数改变器选择或重组信号信号线属性修改输入信号宽度模模块块功功能能说说明明: 对信号进行分配 由输入产生总线信号 总线信号选择器 用户定义的数据存储区 从数据存储区中读取数据 向数据存储区写数据 模块功能说明:对信号进行分配由输入产生总线信号总线信号选择器用户定义的数据存储区从数据存储区中读取数据向数据存储区写数据 图6.9 信号与系统模块库及
12、其功能 7. Sinks(系统输出模块库)系统输出模块库以及其中各模块的功能如图6.10所示。8. Sources(系统输入模块库)系统输入模块库以及其中各模块的功能如图6.11所示。9. Subsystems(子系统模块库) 子系统模块库以及其中各模块功能如图6.12所示。 模模块块功功能能说说明明: 以数值形式显示输入信号 悬浮信号显示器 为子系统或模型提供输出端口 信号显示器 当输入非零时停止仿真 中断输出信号 将仿真数据写入 mat 文件 将仿真数据输出到 Matlab 工作空间 使用 Matlab 图形显示数据 模块功能说明:以数值形式显示输入信号悬浮信号显示器为子系统或模型提供输出
13、端口信号显示器当输入非零时停止仿真中断输出信号将仿真数据写入.mat文件将仿真数据输出到MATLAB工作空间使用MATLAB图形显示数据图6.10 系统输出模块库及其功能 模块功能说明:模块功能说明: 有限带宽白噪声 输出频率随时间线性变换的正弦信号 输出当前仿真时间 常数输入 以固定速率输出当前仿真时间 从 Matlab 工作空间中输入数据 从 mat 文件中输入数据 接地信号 为子系统或其它模型提供输入端口 输入脉冲信号 输入斜坡信号 输入服从高斯分布的随机信号 输入周期信号 信号发生器 正弦信号初始器 输入阶跃信号 输入服从高斯分布的随机信号 模块功能说明:有限带宽白噪声输出频率随时间线
14、性变换的正弦信号输出当前仿真时间常数输入以固定速率输出当前仿真时间从MATLAB工作空间中输入数据从.mat文件中输入数据接地信号为子系统或其它模型提供输入端口输入脉冲信号输入斜坡信号输入服从高斯分布的随机信号输入周期信号信号发生器正弦信号初始器输入阶跃信号输入服从高斯分布的随机信号图6.11 系统输入模块库及其功能模块功能说明:模块功能说明: 可配置子系统 原子子系统 使能子系统 使能触发子系统 For 循环子系统 函数调用子系统 If 条件子系统 条件执行子系统 通用子系统 子系统示例 SwitchCase 子系统 SwitchCase 动作子系统 触发子系统 当型循环子系统 模块功能说明
15、:可配置子系统原子子系统使能子系统使能触发子系统For循环子系统函数调用子系统If条件子系统条件执行子系统通用子系统Switch-Case子系统Switch-Case动作子系统触发子系统当型循环子系统图6.12 子系统模块库及其功能6.1.3 Simulink专业模块库 Simulink集成了许多面向各专业领域的系统模块库,不同领域的系统设计者可以使用这些系统模块快速构建自己的系统模型,然后在此基础上进行系统的仿真与分析,从而完成系统设计的任务。这里仅简单介绍部分专业模块库的主要功能。 (1) Control System Toolbox模块库:面向控制系统的设计与分析,主要提供线性时不变系统
16、的模块。 (2) DSP Blockset模块库:面向数字信号处理系统的设计与分析,主要提供DSP输入模块、DSP输出模块、信号预测与估计模块、滤波器模块、DSP数学函数库、量化器模块、信号管理模块、信号操作模块、统计模块以及信号变换模块等。 (3) Simulink Extras模块库:主要补充Simulink公共模块库,提供附加连续模块库、附加线性系统模块库、附加输出模块库、触发器模块库、线性化模块库、系统转换模块库以及航空航天系统模块库等。 (4) S-function demos模块库:主要提供C+、C、FORTRAN以及M文件下S-函数的模块库的演示模块。 (5) Real-Time
17、 Workshop与Real-Time Windows Target模块库:主要提供各种用来进行独立可执行代码或嵌入式代码生成,以实现高效实时仿真的模块。它们和RTW、TLC有着密切的联系。 (6) Stateflow库:对使用状态图所表达的有限状态机模型进行建模仿真和代码生成。有限状态机用来描述基于事件的控制逻辑,也可用于描述响应型系统。 (7) 定点模块库:包含一组用于定点算法仿真的模块。 (8) 通信模块库:专用于通信系统仿真的一组模块。 (9) Dials & Gauges库:图形仪表模块库,它们实际上是一组ActiveX控件。 (10) 神经网络模块库:用于神经网络的分析设计
18、和实现的一组模块。 (11)模糊控制模块库:包括一组有关模糊控制的分析设计和实现的模块。 (12) xPC模块库:提供了一组用于xPC仿真的模块。 6.2 构建Simulink框图 6.1节中简单介绍了Simulink中的一些比较常用的系统模块。本节将介绍如何使用这些系统模块以构建用户自己的系统模型。当Simulink库浏览器被启动之后,通过鼠标左键单击模块库的名称可以查看模块库中的模块。模块库中包含的系统模块显示在Simulink库浏览器右边的一栏中。对Simulink库浏览器的基本操作有: (1) 使用鼠标左键单击系统模块库,如果模块库为多层结构,则单击“+”号载入库。 (2) 使用鼠标右
19、键单击系统模块库,在单独的窗口打开库。 (3) 使用鼠标左键单击系统模块,在模块描述栏中显示此模块的描述。 (4) 使用鼠标右键单击系统模块,可以得到系统模块的帮助信息,将系统模块插入到系统模型中,查看系统模块的参数设置,以及回到系统模块的上一层库。 6.2.1 模块选择 用一个非常简单的例子介绍如何建立动态系统模型。此简单系统的输入为一个正弦波信号,输出为此正弦波信号与一个常数的乘积。要求建立系统模型,并以图形方式输出系统运算结果。已知系统的数学描述为 系统输入: , t0 系统输出: 0),()(atautyttusin)( 启动Simulink并新建一个系统模型文件。欲建立此简单系统的模
20、型,需要如下的系统模块(均在Simulink公共模块库中): (1) 系统输入模块库Sources中的Sine Wave模块:产生一个正弦波信号。 (2) 数学库Math中的Gain模块:将信号乘上一个常数(即信号增益)。 (3) 系统输出库Sinks中的Scope模块:图形方式显示结果。 选择相应的系统模块并将其拷贝(或拖动)到新建的系统模型中,如图6.13所示。图6.13 选择系统所需模块 在选择构建系统模型所需的所有模块后,需要按照系统的信号流程将各系统模块正确连接起来。连接系统模块的步骤如下: (1) 将光标指向起始块的输出端口,此时光标变成“+”。 (2) 单击鼠标左键并拖动到目标模
21、块的输入端口,在接近到一定程度时光标变成双十字。这时松开鼠标键,连接完成。完成后在连接点处出现一个箭头,表示系统中信号的流向。 (3) 在Simulink的最新版本中,连接系统模块还有如下更有效的方式: 使用鼠标左键单击起始模块。 按下Ctrl键,并用鼠标左键单击目标块。 6.2.2 模块操作 下面介绍一些对系统模块进行操作的基本技巧,掌握它们可使建立动态系统模型变得更为方便快捷。 1. 模块的复制 如果需要几个同样的模块,可以使用鼠标右键单击并拖动某个块进行拷贝。也可以在选中所需的模块后,使用Edit菜单上的 Copy 和Paste 或使用热键Ctrl+C和Ctrl+V完成同样的功能,如图6
22、.15所示。 图6.15 模块的复制 2. 模块的插入 如果用户需要在信号连线上插入一个模块,只需将这个模块移到线上就可以自动连接。注意这个功能只支持单输入单输出模块。对于其他的模块,只能先删除连线,放置块,然后再重新连线。具体操作如图6.16所示。 图6.16 系统模块的插入3. 连线分支与连线改变 在某些情况下,一个系统模块的输出同时作为多个其它模块的输入,这时需要从此模块中引出若干连线,以连接多个其它模块。对信号连线进行分支的操作方式为:使用鼠标右键单击需要分支的信号连线(光标变成“+”),然后拖动到目标模块。 对信号连线还有以下几种常用的操作: (1) 使用鼠标左键单击并拖动以改变信号
23、连线的路径。 (2) 按下Shift键的同时,在信号连线上单击鼠标左键并拖动,可以生成新的节点。 (3) 在节点上使用鼠标左键单击并拖动,可以改变信号连线路径。 信号连线分支与连线改变如图6.17所示。 改变粗细改变粗细:选中Format菜单下的Wide Vector Lines时,线的粗细会根据线所引出的信号是标量还是向量而改变,如果信号为标量则为细线,若为向量则为粗线。 设定标签设定标签:在线上双击鼠标,即可输入该线的说明标签。也可以通过选中线,然后打开Edit菜单下的Signal Properties进行设定 右键单击连线拖动到目标模块 按下 Shift 键、左键单击并拖动 左键单击并拖
24、动 使用鼠标右键单击连线拖动到目标模块按下Shift键、使用鼠标左键单击并拖动使用鼠标左键单击并拖动图6.17 连线分支与连线改变 4. 信号组合 在利用Simulink进行系统仿真时,在很多情况下,需要将系统中某些模块的输出信号(一般为标量)组合成一个向量信号,并将得到的信号作为另外一个模块的输入。 图6.18 信号组合Signals & Systems 库库 :信号分路器 。 将混路器输出的信号依照原来的构成方法分解成多路信号。 :信号汇总器 将多路信号依照向量的形式混合成一路信号。 (a)(b)Simulink中的LTI Viewer 在Simulink中建立的仿真模型也可直接输
25、入到LTI Viewer中进行分析,具体方法如下:在Simulink 模型窗建立起仿真模型(线性系统)。点击Simulink模型窗上的【Tool:Linear analysis】,在弹出的界面中将输入输出接点分别复制到仿真模型的输入和输出。仿真模型的输入输出接点 再次点击SIMULINK模型窗上的ToolLinear analysis,打开LTI Viewer仿真界面,点击该界面上Simulink Get Linearized Model选项,即画出系统的阶跃响应曲线,表明SIMULINK中的仿真模型已和LTI Viewer相连接,因此可利用LTI Viewer对该系统进行分析。 LTI Vi
26、ewer获取模型窗中模型 LTI Viewer绘制的阶跃响应曲线如果在Simulink模型窗对已输入到LTI Viewer中的模型进行了修改,应重复步骤(3)重新装入模型,并删除掉旧模型。方法是点击LTI Viewer仿真界面上的【EditDelete systems】,在弹出的对话框中,进行模型的删除,如图所示。 模型的删除6.2.3 运行仿真 1. 系统模块参数设置与系统仿真参数设置 当用户按照信号的输入输出关系连接各系统模块之后,系统模型的创建工作便已结束。为了对动态系统进行正确的仿真与分析,必须设置正确的系统模块参数与系统仿真参数。系统模块参数的设置方法如下: (1) 双击系统模块,打
27、开系统模块的参数设置对话框。 (2) 在参数设置对话框中设置合适的模块参数。 (3)当系统中各模块的参数设置完毕后,可设置合适的系统仿真参数以进行动态系统的仿真。双击系统模块出现相应的模块参数设置对话框以设置系统参数区分向量信号并显示向量信号的维数双击系统模块,出现相应的模块参数设置对话框以设置系统参数区分向量信号并显示向量信号的维数图6.19 系统模块参数设置 2. 运行仿真 当对系统中各模块参数以及系统仿真参数进行正确设置之后,单击系统模型编辑器上的Play图标(黑色三角)或选择Simulation菜单下的Start便可以对系统进行仿真分析。对于图6.19所示的动态系统,采用上述的模块参数
28、设置与默认的仿真参数进行仿真。仿真结束后双击Scope模块以显示系统仿真的输出结果,如图6.20所示。 , 单击 Start Simulation 按钮以缺省参数仿真 向量信号输出, 其中黄色显示为 Mux 第一端口的信号、紫色显示为 Mux第二端口的信号。 图6.20 系统仿真及结果输出示波器示波器 :显示在仿真过程产生的信号波形。双击该图标,弹出示波器窗如右图所示:分别管理X-Y、X和Y轴向变焦取当前窗中信号最大、最小值为纵坐标的上下限把当前轴的设置保存为该示波器的缺省设置打开示波器属性对话框设置为浮动示波器示波器属性对话框示波器属性对话框设置Y轴个数设置显示的时间范围选择轴的标注方法确定
29、显示频度(每隔n-1个数 据 点 显 示 一 次 )确定显示点的时间间隔(缺省 为 0 表 示 连 续 显 示 )示波器属性对话框General页示波器属性对话框Data history页设定缓冲区接受数据的长度,勾选为缺省状态,其值为5000确定示波器数据是 否 保 存 到MATLAB工作空间。若勾选则为保存,且需确定变量名和保存格式(缺省时,不被勾选)MATLAB 命令窗口下的仿真运行命令窗口下的仿真运行在Matlab命令窗口下可直接运行一个已存在的Simulink模型:t,x,y=sim(model,timespan,option,ut)其中,t为返回的仿真时间向量; x为返回的状态矩阵
30、; y为返回的输出矩阵; model为系统Simulink模型文件名; timespan为仿真时间;option为仿真参数选择项,由simset设置;ut为选择外部产生输入,ut=T,u1,u2,un。说明上述参数中,若省略timespan,option,ut则由框图模型的对话框Simulation Parameters设置仿真参数。Simulink建模和仿真的基本步骤:1、根据系统的物理模型或数学模型,在Simulink Browser中选取相关模块2、将选取的模块按照模块间的输入输出关系进行连接3、设置系统的模块参数4、设置系统的仿真参数5、运行仿真模型,进行分析和调试6.3 设计Simu
31、link框图的界面 6.2节对使用Simulink进行系统建模与仿真做了简单的介绍,任何动态系统的模型构建与仿真的步骤都与此类似。本节所要介绍的Simulink界面设计主要用来改善系统模型的界面,以便于用户对系统模型的理解与维护。 6.3.1 模块及框图属性编辑 1. 框图的视图调整 在Simulink系统模型编辑器中,可以对系统模型的视图进行调整以便更好地观察系统模型。视图调整的方法如下所述: (1) 使用View菜单控制模型在视图区的显示,用户可以对模型视图进行任意缩放。 (2) 使用系统热键R(放大)或V(缩小)。 (3) 按空格键可以使系统模型充满整个视图窗口。 视图调整效果如图6.2
32、1所示: 2. 模块的名称操作 在使用Simulink中的系统模块构建系统模型时,Simulink会自动给系统模型中的模块命名,如在6.2节的简单动态系统中,正弦信号模块名称为Sine Wave;对于系统模型中相同的模块,Simulink会自动对其进行编号。一般对于简单的系统,可以采用Simulink的自动命名;但对于复杂系统,给每个模块取一个具有明显意义的名称非常有利于系统模型的理解与维护。下面简单介绍一下模块名称的操作。 (1) 模块命名:使用鼠标左键单击模块名称,进入编辑状态,然后键入新的名称。 (2) 名称移动:使用鼠标左键单击模块名称并拖动到模块的另一侧,或选择Format菜单中的F
33、lip Name翻转模块名称。 (3) 名称隐藏:选择Format菜单中的Hide Name隐藏系统模块名称。 注意注意: 系统模型中模块的名称应当是唯一的,否则Simulink会给出警告并自动改变名称。系统模型中模块的名称操作如图6.22所示。 3. 模块的其它操作 Simulink允许用户对模块的几何尺寸进行修改,以改善系统模型框图的界面。例如,对于具有多个输入端口的模块,需要调整其大小使其能够较好地容纳多个信号连线,而非采用模块的默认大小;另外,对于某些系统模块,当模块的尺寸足够大时,模块的参数将直接显示在模块上面,这非常有利于用户对模型的理解。 Simulink允许改变模块的颜色。使用
34、鼠标右键单击模块,选择Foreground color或Background color菜单来设置颜色;或使用模型编辑器中Format菜单中的相应命令设置模块颜色。如果模块的前景色发生改变,则所有由此模块引出的信号线颜色也随之改变;当系统模型框图很复杂时,这个特性能够有效地增强框图的可读性。 此外,还可以使用Format菜单中的Show Drop Shadow为模块生成阴影,或使用Flip Block、Rotate Block对模块进行翻转与旋转,或使用Font对模块字体进行设置等。对模块的操作如图6.23所示。 Sine Wave 模块的前景色改变为 Magenta, 由其引出的信号线也随之
35、改变 Gain 模块的尺寸变大、Scope模块显示阴影 图6.23 模块的其它操作 4. 系统框图注释 作为友好的Simulink系统模型界面,对系统模型的注释是不可缺少的。在Simulink中对系统模型框图进行注释的方法非常简单,只需在系统模型编辑器的背景上双击鼠标左键以确定添加注释文本的位置,并打开一个文本编辑框,用户便可以在此输入相应的注释文本。输入完毕后,使用鼠标左键单击以退出编辑并移动文本位置(编辑框未被选中情况下)到合适的地方。 此外,在文本对象上单击鼠标右键,可以改变文本的属性如大小、字体和对齐方式等。在任何时候都可以双击注释文本进行编辑。系统框图注释如图6.24所示。 左键双击
36、背景进行注释 右键单击注释文本以编辑文本的各种属性 使用鼠标左键双击背景进行注释使用鼠标右键单击注释文本以编辑文本的各种属性 图6.24 系统模型框图注释 6.3.2 信号标签与标签传递 1. 信号标签 所谓的信号标签,也可以称为信号的“名称”或“标记”,它与特定的信号相联系,是信号的一个固有属性。这一点与系统框图注释不同,框图注释是对整个或局部系统模型进行说明的文字信息,它与系统模型相分离。 生成信号标签的方法有如下两种: (1) 使用鼠标左键双击需要加入标签的信号(即系统模型中与信号相对应的模块连线),这时便会出现标签编辑框,在其中键入标签文本即可。与框图注释类似,信号标签可以移动到希望的
37、位置,但只能是在信号线的附近。如果强行将标签拖动离开信号线,标签会自动回到原处。当一个信号定义了标签后,从这条信号线引出的分支线会继承这个标签,如图6.25所示。 左键双击信号键入信号标签 信号分支线自动继承标签 用鼠标左键双击信号键入信号标签信号分支线自动继承标签图6.25 信号标签操作之一 (2) 首先选择需要加入标签的信号,用鼠标左键单击信号连线;然后使用Edit菜单下的 Signal Properties项,在打开的界面中编辑信号的名称,而且还可以使用这个界面对信号作简单的描述,并建立HTML文档链接,如图6.26所示。 注意注意: 虽然信号标签的内容可以任意指定,但为了系统模型可读性
38、,信号标签最好使用能够代表信号特征的名称(如信号类型、信号作用等)。图6.26 信号标签操作之二 2. 信号标签的传递 在系统模型中,信号标签可以由某些称之为“虚块”的系统模块来进行传递。这些虚块主要用来完成对信号的选择、组合与传递,它不改变信号的任何属性。如Signals & Systems模块库中的Mux模块的功能是组合信号,但并不改变信号的值。 信号标签传递的方法有如下几种: (1) 选择信号线并用鼠标左键双击,在信号标签编辑框中键入,在此尖括号中键入信号标签即可传递信号标签。 (2) 选择信号线,然后选择Edit菜单中的SignalProperties;或单击鼠标右键,选择弹出
39、式菜单中的Signal Properties,将Show Propagated Signals设置为 on即可。 注意:只能在信号的前进方向上传递该信号标签。当一个带有标签的信号与Scope块连接时,信号标签将作为标题显示。 6.3.3 Simulink子系统介绍 对于简单的动态系统而言,用户很容易建立系统模型并分析系统模型中各模块之间的相互关系,以及模块的输入输出关系。但是对于比较复杂的系统,系统模型中包含的模块数目较多,模块之间的输入输出关系比较复杂。这时对于分析与设计系统而言,都会给用户带来诸多的不便,而使用子系统技术则可以较好地解决这一问题。 1. 子系统生成 Simulink提供的子
40、系统功能可以大大地增强Simulink系统模型框图的可读性。所谓的子系统可以理解为一种“容器”,此容器能够将一组相关的模块封装到一个单独的模块中,并且与原来系统模块组的功能一致。 子系统的建立方法有如下两种: (1) 在已有的系统模型中建立子系统 首先框选待封装的区域,即在模型编辑器背景中单击鼠标左键并拖动,选中需要放置到子系统中的模块与信号(或在按下Shift键的同时,用鼠标左键单击所需模块);然后选择Edit菜单下的Create Subsystem,即可建立子系统。如图6.28所示。 框选模块,选择 Edit 菜单中的 Create Subsystem 左键双击子系统显示其内容 用鼠标左键
41、双击子系统显示其内容图6.28 子系统建立:选择模块生成子系统 组合已存在的模块来建立子系统 如果现有的模型已经包含了需要转化成子系统的模块,就可以通过组合这些模块的方式建立子系统。步骤如下: 确定需建立Subsystem的模型(被选中的均标记有黑块) 圈选欲建子系统的模块点击模型窗Edit菜单下的Create Subsystem 命令,则所选定的模型组合自动转化成子系统:双击该图标,可打开该子系统窗口,改写输入输出符号:关闭子系统编辑窗口,设置子系统标签,则系统模型如下图所示: (2) 建立空的子系统:使用Subsystems (有的版本在Signals & Systems子库里)模
42、块库中的模块建立子系统。这样建立的子系统内容为空,然后双击子系统对其进行编辑。如图6.29所示。 使 用 多 个 Outport 模 块 ,即 Out1 模 块 以 产 生 多 个输 出 信 号 左 键 双 击 Subsystem以 编 辑 子 系 统 使用鼠标左键双击Subsystem以编辑子系统图6.29 子系统建立:生成并编辑空子系统下面以PID控制器子系统创建,说明子系统的创建过程:将子系统库模块中的Subsystem模块复制到模型窗,如右图所示。双击该图标即打开该子系统的编辑窗口,如下图所示。 子系统模块复制到模型窗 原始子系统模块的内部结构型窗 将组成子系统的模块添加到子系统编辑窗
43、口:将模块按设计要求连接: 设置子系统各模块参数(可以是变量);修改 in1 和 out1 模块下面的标签;关闭子系统的编辑窗口,返回模型窗口,修改子系统的标签(PID),该PID子系统即可作为模块在构造系统模型时使用。 2. 子系统的封装 子系统可以建立自己的参数设置对话框,以避免对子系统内的每个模块分别进行参数设置,因此在子系统建立好以后,需对其进行封装。子系统封装的基本步骤为:设置好子系统中各模块的参数变量;定义提示对话框及其特性;定义被封装子系统的描述和帮助文档;定义产生模块图标的命令。 设置子系统参数变量设置子系统参数变量将原子系统中的常数改为变量,其中饱和环节的上、下限分别设为au
44、、ab (需打开该环节的参数设置框)。产生提示对话框产生提示对话框 选择需要封装的子系统,从模型窗口的 Edit 菜单选择Mask Subsystem命令,即弹出封装编辑器:该编辑器分为四页:Icon(图标)页Parameters(参数页)Initialiation(初始化)页Documentation(文档)页 其中子系统封装最关键的是Parameters项,用于设置参数变量及其类型等。(1)Icon标签页标签页q此页最重要的部分是Drawing Commands,在该区域内可以用disp指令设定功能模块的文字名称,用plot指令画线,用dpoly指令画转换函数。qdisp(text)可以在
45、功能模块上显示设定的文字内容。qplot(x1 x2 xn,y1 y2 yn)指令在功能模块上画出直线。qdpoly(num,den):按s次数的降幂排序,在功能模块上显示连续的传递函数。q用户还可以设置一些参数来控制图标的属性,这些属性在Icon页右下端的下拉式列表中进行选择。qIcon frame:Visible 显示外框线;Invisible:隐藏外框线。qIcon Transparency:Opaque 隐藏输入输出的标签;Transparent:显示输入输出的标签。qIcon Rotation:旋转模块。qDrawing coordinate:画图时的坐标系。(2)Initializ
46、ation标签页标签页q此页主要用来设计输入提示(prompt)以及对应的变量名称variable)。q在prompt编辑框中输入文字,这些文字就会出现在prompt列表中;在variable列表中输入变量名称,则prompt中的文字对应该变量的说明。qControl type列表给用户提供选择设计的编辑区,选择Edit会出现供输入的空白区域,所输入的值代表对应的variable。qAssignment属性用于配合Control type的不同选择来提供不同的变量值,变量值有Evaluate和Literal两种。(3)Documentation标签页标签页q此页针对完成的功能模块编写相应的说明
47、文字和Help。q在Block description中输入的文字,会出现在参数窗口的说明部分。qMask type:此处输入的文字作为封装模块的标注说明,在模型窗口下,将鼠标指向模块,会显示该文字。Parameters页页 AddDeleteUpDown提示符变量名直接输入变量名变量的类型为数值变量的数值可在线调节假定子系统(Nonlinear system)的参数变量名已由封装编辑器全部输入。双击该子系统图标,即弹出如图所示子系统的参数设置框图。如图所示逐栏输入与变量所对应的参数,即完成对该子系统的参数设置。3.条件子系统(1)使能子系统使能子系统该子系统当使能端控制信号为正时,系统处于“
48、允许”状态,否则为“禁止”状态。“使能”控制信号可以为标量,也可以为向量。当为标量信号时,只要该信号大于零,子系统就开始执行;当为向量信号时,只要其中一个信号大于零,也“使能”子系统。例:积分分离式PID控制器。这种PID控制器可以让控制器中的积分项在系统响应进入稳态时投入运行,以提高稳态精度;而在系统响应处于瞬态过程时,将积分项断开以改善系统动态响应质量。积分分离式PID控制器建立如图所示: 使能模块的控制信号为delta与abs(e)的差值。delta为一很小的正数,当偏差e的绝对值小于delta时,控制器的积分项才投入使用,从而实现了控制器中的积分项的分离控制。(2)触发子系统触发子系统
49、触发子系统只在触发事件发生的时刻执行。所谓触发事件也就是触发子系统的控制信号,一个触发子系统只能有一个控制信号,在Simulink中称之为触发输入。(a) 触发子系统模块(b) 触发子系统模型n触发事件有4种类型,即上升沿触发、下降沿触发、跳变触发和回调函数触发。双击触发子系统中的触发器模块(Trigger),在弹出的对话框中可选择触发类型。 触发子系统应用的一个示例触发子系统应用的一个示例。触发器设为下降沿触发,正弦输入经触发。触发器设为下降沿触发,正弦输入经触发控制后,成为阶梯波,如图所示。控制后,成为阶梯波,如图所示。系统仅在脉冲信号的下降沿导通,并保持导通时刻的输入值至下一个脉冲下降沿
50、。 4. 子系统操作 在生成子系统之后,用户可以对子系统进行各种与系统模块相类似的操作,这时子系统相当于具有一定功能的系统模块。例如,子系统的命名、子系统视图的修改、子系统的显示颜色等等。当然子系统也有其特有的操作,如子系统的显示(用鼠标左键双击子系统模块即可打开子系统)、子系统的封装等等。 6.3.4 建立复杂系统模型 Simulink适合建立大型复杂系统的模型,它为仿真系统模型的界面组织与设计提供了强大的支持。一般而言,建立复杂系统模型有两种不同的思路: (1) 自下而上的设计思路:如果用户从草图开始建立一个复杂的模型,可以先建底层模型,然后对已经建好的块生成子系统。 (2) 自上而下的设
51、计思路:首先设计系统的总体模型,然后再进行细节设计。采用这种方法,可以在顶层使用空的子系统块,然后再实现具体的细节。 6.3.5 SIMULINK仿真运行1、设置仿真参数和选择解法器q选择Simulation菜单下的Parameters命令,弹出一个仿真参数对话框,有三个管理仿真参数的页面。qSolver页,允许用户设置仿真的开始和结束时间,选择解法器,说明解法器参数及选择一些输出选项。qWorkspace I/O页,设置模型从MATLAB工作空间的输入和对它的输出。qDiagnostics页,允许用户选择仿真中显示的警告信息等级。 运行一个仿真的完整过程分成三个步骤:设置仿真参数,启动仿真和
52、仿真结果分析。(1)Solver页(2)Workspace I/O页q此页主要用来设置SIMULINK与MATLAB工作空间交换数值的有关选项。(3)Diagnostics页q此页分两个部分:仿真选项和配置选项。配置选项下的列表框主要列举了常见的事件类型。仿真选项options主要包括是否进行一致性检验、是否禁用过零检测、是否禁止复用缓存等。 除上述3个主要的页外,仿真参数设置窗口还包括real-time workshop页,主要用于与C语言编辑器的交换,通过它可直接从SIMULINK模型生成代码并自动建立可在不同环境下运行的程序。2、启动仿真6.4 Simulink与MATLAB的接口设计6
53、.4.1 由MATLAB工作空间变量设置系统模块参数 如前所述,用户可以双击一个模块以打开模块参数设置对话框,然后直接输入数据以设置模块参数。其实用户也可以使用MATLAB工作空间中的变量设置系统模块参数,这对于多个模块的参数均依赖于同一个变量时非常有用。 (1) 直接使用MATLAB工作空间中的变量设置模块参数。 (2) 使用变量构成的表达式设置模块参数。 例如,如果a是定义在MATLAB中的变量,则表达式a、a2+5、exp(a)等均可以作为系统模块的参数,如图6.30所示。 模块参数设置对话框中相应的设置使用 Matlab 工作空间中的变量 模块参数设置对话框中相应的设置使用MATLAB
54、工作空间中的变量图6.30 使用MATLAB工作空间变量设置模块参数6.4.2 将信号输出到MATLAB工作空间中 使用示波器模块Scope的输出信号,可以使用户对输出的信号进行简单的定性分析。 使用Sinks模块库中的To Workspace 模块,可以轻易地将信号输出到MATLAB工作空间中。信号输出的名称在To Workspace模块的对话框中设置,此对话框还可以设置输出数据的点数、输出的间隔,以及输出数据的类型等。其中输出类型有三种形式:数组、结构以及带有时间变量的结构。仿真结束或暂停时信号被输出到工作空间中,如图6.31所示。 使用Sinks模块库中的 To Workspace 模块
55、输出系统模型中指定的信号至Matlab 工作空间 使用Sinks模块库中的To Workspace模块输出系统模型中指定的信号至MATLAB工作空间图6.31 系统模型中信号输出6.4.3 使用工作空间变量作为系统输入信号 Simulink与MATLAB的数据交互是相互的,除了可以将信号输出到MATLAB工作空间中之外,用户还可以使用MATLAB工作空间中的变量作为系统模型的输入信号。使用Sources模块库中的From Workspace模块可以将MATLAB工作空间中的变量作为系统模型的输入信号。此变量的格式如下所示:t=0:time_step:final_time; % 表示信号输入时间
56、范围与时间步长x=func(t); % 表示在每一时刻的信号值input=t,x;%表示信号的输入向量,输入变量第一列须为时间序列,接下来的各列代表信号的取值例如,在MATLAB命令窗口中键入如下的语句并运行。t=0:0.1:10;x=sin(t);input=t,x; 此窗口为 From Workspace 模块的参数设置窗口 图6.32 MATLAB工作空间变量作为系统输入信号 运行此系统进行仿真,系统输入信号input的作用相当于Sources模块中的Sine Wave模块,其结果如图6.33所示(Scope1显示结果)。 图6.33 使用input信号作为输入的仿真结果 6.4.4 向
57、量与矩阵 在前面的系统模型中,Simulink所使用的信号均是标量。其实,Simulink 也能够传递和使用向量信号。例如,向量增益可以作用在一个标量信号上,产生一个向量输出。在缺省情况下,模块对向量中的逐个元素进行操作,就像MATLAB中的数组运算一样,如图6.34所示。 向量增益 乘法类型,共有三种:按元素操作、 按矩阵左乘以及按矩阵右乘。 对不同信号必须采用适当的配置。 乘法类型共有三种:按元素操作、按矩阵左乘以及按矩阵右乘。对不同信号必须采用适当的配置图6.34 向量增益示意图 Simulink最重要的特性就是支持矩阵形式的信号,它可以区分行和列向量并传递矩阵。通过对模块做适当的配置,
58、可以使模块能够接受矩阵作为模块参数。在上面的例子中,如果Constant模块的参数为一矩阵,并且Gain增益模块被配置成按矩阵乘的定义从左边乘上输入向量,则Display 块能够感知到输入信号的尺寸,即12行向量,并对边框做适当调整,如图6.35所示。图6.35 矩阵输入与向量增益示意图 6.4.5 MATLAB Function与Function模块 除了使用上述的方式进行Simulink与MATLAB之间的数据交互,用户还可以使用Functions and Tables 模块库中的 Function模块(简称为Fcn模块)或Functions and Tables 模块库中的MATLAB
59、Function模块(简称为MATLAB Fcn模块)进行彼此间的数据交互。 Fcn模块一般用来实现简单的函数关系,在Fcn模块中: (1) 输入总是表示成u,u可以是一个向量。 (2) 可以使用 C 语言表达式,例如sin(u1)+cos(u2)。 (3) 输出永远为一个标量。 MATLAB Fcn一般用来调用MATLAB函数来实现一定的功能,在MATLAB Fcn模块中: (1) 所要调用的函数只能有一个输出(可以是一个向量)。 (2) 单输入函数只需使用函数名,多输入函数输入需要引用相应的元素,如mean、sqrt、myfunc(u(1),u(2)。 (3) 在每个仿真步长内都需要调用M
60、ATLAB解释器。 使用Fcn模块与MATLAB Fcn模块进行Simulink与MATLAB之间的数据交互如图6.36所示。函数表达式 Matlab 函数 MATLAB函数图6.36 使用Fcn与MATLAB Fcn模块进行数据交互6.5 使用Simulink进行简单的仿真 例:信号平方运算。系统的功能是对输入的信号进行平方运算。现要求建立系统的Simulink模型并进行简单的仿真分析。具体要求如下: (1) 系统输入信号源:幅值为 2 的正弦波 (2) 使用Scope 显示原始信号和结果信号 (3) 生成系统运算部分的子系统 (4) 生成信号标签并传递 解:首先选择系统所需的如下模块(组件): (1) Sources 库中的Sine
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南开18语文高三第一次月考作文
- 电子测量技术在海洋开发中的应用考核试卷
- 生态保护与草原生态治理考核试卷
- 电气设备绝缘测试考核试卷
- 天津市西青区张窝中学2024−2025学年高一下学期第一次月考 数学试题(含解析)
- 规范的采血流程 2
- 山东省济南市重点中学2025届高中毕业班第二次质量检测试题英语试题文试题含解析
- 山东省泰安市宁阳县重点名校2024-2025学年初三下学期第三次四校联考物理试题试卷含解析
- 莱芜职业技术学院《水工建筑材料》2023-2024学年第二学期期末试卷
- 吉林省长春市榆树市一中2025届高三下学期第四次(1月)月考英语试题试卷含解析
- 脚手架稳定计算
- 信息系统网络安全应急预案
- 掉落物落地品管理规定
- 【图文】GB8624-2012建筑材料及制品燃烧性能分级(精)
- 科姆龙变频器说明书kv2000
- 小学生读书知识竞赛试题
- 蓝色简约法律通用PPT模板
- 旅行社挂靠协议(样板)
- 皮尔逊Ⅲ型曲线模比系数计算表(共享版)
- 房屋租赁合以装修费抵租金
- Z5140型立式钻床说明书
评论
0/150
提交评论