您的当前位置:首页正文

教材-第九章Simulink仿真介绍

2021-04-28 来源:步旅网
下篇 电机学MATLAB仿真

MATLAB因其完整的专业体系和先进的设计开发思路,在多个领域得到了广泛应用。其产品SIMULINK是一个动态系统建模、仿真和综合分析的集成软件包,在SIMULINK提供的图形用户界面(GUI)上,只要进行鼠标的简单拖拉操作就可构造出复杂的仿真模型,它能让使用者在可视化图形方式下以最小的代价来模拟系统的动态运行过程。电机的SIMULINK仿真模型构建主要使用SIMULINK中的电力系统仿真模块库(SimPowerSystem),该库是由加拿大的Hydro Quebec公司和TECSIM International公司共同开发的,功能非常强大,可以应用于电路、电力电子系统、电机系统、电路系统等领域的仿真。使用者可以在仿真进程中改变感兴趣的参数,实时地观察系统行为的变化。

为加深学生对电机学理论知识及先前实验的理解,本教材下篇应用MATLAB R2009b软件,借助于MATLAB/SIMULINK强大功能,对电机与拖动控制中主要实验进行建模仿真。

第九章 Simulink简介

其产品SIMULINK是一个动态系统建模、仿真和综合分析的集成软件包,在SIMULINK提供的图形用户界面(GUI)上,只要进行鼠标的简单拖拉操作就可构造出复杂的仿真模型,它能让使用者在可视化图形方式下以最小的代价来模拟系统的动态运行过程。SIMULINK是Simulation和Link两个英文单词的缩写,意思是仿真链接,MATLAB模型库都在此环境中使用,从模型库中提取模型放到SIMULINK的仿真平台上进行仿真。所以,有关SIMULINK的操作是仿真应用的基础。电机的SIMULINK仿真模型构建主要使用SIMULINK中的电力系统仿真模块库(SimPowerSystem),该库是由加拿大的Hydro Quebec公司和TECSIM International公司共同开发的,功能非常强大,可以应用于电路、电力电子系统、电机系统、电路系统等领域的仿真。使用者可以在仿真进程中改变感兴趣的参数,实时地观察系统行为的变化。

9.1 SIMULINK的工作环境 1 SIMULINK启动

在MATLAB中,启动SIMULINK环境有以下几种方法:

(1) 在MATLAB的菜单栏上选择File,在下拉菜单中的New选项下选中Model,

如图9-1所示。

图9-1 启动SIMULINK环境方法一

(2) 在MATLAB的工具栏上点击快捷按钮

,打开Simulink Library Browser窗口,

如图9-2所示,然后在打开的模型库浏览窗口菜单上点击快捷按钮

图9-2启动SIMULINK环境方法二

(3) 在MATLAB窗口中输入“simulink”后回车,会在桌面上出现一个如上图9-2

所示的窗口,然后在菜单上点击快捷按钮

完成上述操作之一后,屏幕上出现SIMULINK的工作窗口(见图9-3)。在窗口上方标题栏上,“untitled”表示一个尚未命名的新文件。窗口中的空白部分是绘制仿真模型框图的空间,使用鼠标可以从图9-3中左部Simulink Library Browser中将模块拖至仿真环境中,按照需要将各模块进行连接,建立系统仿真模型。

图9-3 SIMULINK工作窗口

1

SIMULINK模块库

上图9-3即为模块库浏览器窗口,窗口左部的树状目录是各分类模块库的名称。在分类模块库下还有二级子模块库,点击模块库名前带“+”的小方块则可展开二级子模块库的目录,点击模块库名前带“-”的小方块则可关闭二级目录。

SIMULINK模块库包括标准模块库和专业模块库两大类。标准模块库“Simulink”中,包含Commonly Used Blocks(常用模块)、Continuous(连续系统)、Discontinuities(不连续系统)、Discrete(离散系统)、Logic and Bit Operations(逻辑与位操作模块)、Look-up Tables(查表)、Math Operations(数学运算)、Model Verification(模型检验模块)、Model-Wide Utilities(模型扩充模块)、Ports & Subsystems(端口和子系统)、Signal Attributes(信号属性)、Signal Routing(信号路由)、Sinks(接收器模块)、Sources(输入源模块)、User-Defined Functions(用户自定义函数)、Additional Math & Discrete(附近数学和离散模块)。电机与拖动控制仿真中常用的模块说明见表1。

表1 仿真常用模块 图形符号 信号参考地模块 阶跃信号发生模块 子系统输入端口模块 脉冲发生器模块 选择器模块 正弦信号发生模块 子系统输出模块 说明 常量模块 终端模块 图形符号 说明 示波器模块 总线建立模块 信号汇总模块 增益模块 逻辑运算模块 乘法模块 饱和模块 总线选择器模块 信号分离模块 积分模块 求和模块 关系运算符模块 开关模块 电机的SIMULINK仿真模型除了上述常用模块之外,还有就是专业模块库中的电力系统仿真模块库(SimPower Systems)(见图9-4),该模块库包含:Application Libraries(应用实例库)、Electrical Sources(电源)、Elements(组件)、Extra Library(附加库)、Machines(电机)、Measurements(测量)、Power Electronics(电力电子)。电力系统模块库中一些常用模块见表9-2。

图9-4 电力系统仿真模块库 表9-2 电力系统模块库常见模块

图形符号 说明 交流电流源 电池 可控电压源 三相可编程电压 源 接地 线性变压器 饱和变压器 三相电源 中性公共点 直流电压源 可控电流源 图形符号 说明 交流电压源 三相双绕组变压器 并联RLC分支 串联RLC分支 三相三绕组变压器 并联RLC负载 串联RLC负载 断路器 三相互感 三相并联RLC负载 三相串联RLC负载 三相异步电机(国标单位) 三相断路器 三相并联RLC分支 三相串联RLC分支 电机测量信号模 块 三相异步电机(标幺值) 直流电机 永磁同步电机 简化同步电机(国标单位) 简化同步电机(标幺值) 同步电机(国标单位) 同步电机(标幺值) 同步电机 励磁系统 电流测量 万用表 三相电压-电流测量 电压测量 阻抗测量 绝缘栅双极型晶体管 金属氧化物场效应晶体管 理想开关 9.2 SIMULINK的基本操作 1 模块的基本操作

模块是系统模型中最基本的元素,关于模块的操作很多,所有操作都可以用菜单功能和鼠标来完成,这里介绍常用的操作方法。 1.1 模块的选取

在Simulink Library Browser窗口中,用鼠标左键单击需要的模块,当模块反色时,表示模块被选中,然后拖动选中模块进入SIMULINK仿真平台窗口中,松开左键即可。 1.2 模块的复制

将鼠标移动到需要的模块上,点击鼠标左键,选中模块,同时按下Ctrl键拖拉鼠标,选中的模块上会出现一个小“+”号,表示可以复制了,继续按住鼠标和Ctrl键不动,移动鼠标就可以将该模块拖拉到模型的其他地方复制出一个相同的模块。

通用三相桥式变换器 晶闸管 门极关断晶闸管 二极管 1.3 模块的删除、恢复和粘帖

选中模块,按下键盘的【Delete】键即可删除。如果要删除模型的某一部分或全部,可以用鼠标左键将要删除的部分都选中,然后按下【Delete】键即可删除。

被误删的模块可以用主菜单【Edit】下的【Undo】命令恢复。

选中模块,选择【Edit】菜单中的【Cut】命令后,再用【Paste】命令从一个模型中粘帖到另一个模型中。 1.4 模块的移动和缩放

为了使建立的系统更紧凑,需要对模块进行移动和缩放操作。

用鼠标选中模块,按住鼠标左键不放,将模块拖曳到目的位置放开鼠标左键,即完成模块移动;也可以选中模块后用键盘的上、下、左、右键移动模块。

选中模块,将鼠标移到模块对象四周的控制小块上,鼠标变成双向小箭头,此时按下鼠标左键不放,按箭头方向拖动鼠标,即可改变模块大小。 1.5 模块方向的改变

为了使模块之间连线更方便,有时需要改变模块的方向。选中模块,使用主菜单【Format】的下拉菜单【Flip Block】使模块水平翻转,即方向改变180度;使用下拉菜单【Rotate block】使模块方向改变90度。

1.6 模块名内容和位置的改变

为了增强模型的可读性,有时需要对模块下面的名称进行修改。用鼠标双击模块名,进入模块名的编辑状态,可以和文本文件一样,输入新的模块名,模块名称可以是英文或中文。

模块名的位置可以调整或隐藏,选中模块,使用主菜单【Format】的下拉菜单【Flip name】改变模块名的位置,模块名的位置只能在模块的上方或下方;使用下拉菜单【Hide name】可以隐藏模块名,即不显示模块名。 1.7 模块内部参数设置

在模型窗口中,双击模块图标,便打开功能模块内部参数设置对话框,然后按照要求改变对话框中的数据即可。 2 信号线的基本操作

当对模块操作完之后,需要用信号线将各个模块图标连接起来,SIMULINK中的信号线不是简单的连线,它具有一定流向属性且不可逆向,表示实际模型中信号的流向。 2.1 信号线的使用

信号线的功能是连接模块,连接的方法是,将鼠标指向上级模块的输出端,光标变成“+”字星,按住鼠标左键,拖曳至下级模块的输入端后,松开鼠标左键,这样在两个模块之间就建立起信号联系。

对信号线的移动、删除、恢复、粘帖等操作与对模块的操作一样,必须先选中信号线,被选中的信号线的两端出现两个小黑块,表示信号线被选中了。 2.2 信号线分支

将鼠标移到需要分支的地方,同时按下【Ctrl】键和鼠标,就可拖拉出一根支线,然后将支线引到另一输入端松开鼠标即可。 2.3 信号线的弯折

选中信号线,按住【Shift】键,用鼠标左键在要弯折的地方单击一下,在此处出现一个小圆圈,表示折点,再拖曳鼠标,就可以将信号线以任意角度弯折。如果在画信号线时,需要弯折,只需要在拉出信号线时,在需要弯折的地方松开鼠标停顿一下,然后继续按下鼠标左键改变鼠标移动方向就可以画出折线了。 2.4 信号线的标注

双击要标注的信号线,进入标签编辑区,输入信号线标签内容,可以是数字、英文或中

文;如果标注内容很多,还可以用回车键换行。在标签编辑框外的窗口中单击鼠标即完成标注。

9.3 子系统的建立与封装 9.3.1 子系统的建立

在SIMULINK仿真中,一个复杂系统的模型将由许多基本模块组成,这么多模块及连线会使模型的画面显得很凌乱,甚至在一个平台上难以表达。SIMULINK提供了一个建立子系统(Subsystem)的功能,利用这项功能可以将模型中实现某一功能的多个模块及其连线打包后用一个模块图标来表示,从而简化模型。 在SIMULINK中创建子系统一般有两种方法。

(1) 通过“子系统”模块的方法

该方法要求在用户的模型里添加一个称为Subsystem的子系统模块,然后再往该模块里加入组成子系统的各种模块。这种方法适合于采用自上而下设计方式的用户,具体实现步骤如下:

1)新建一个空白模型。 2)打开“端口和子系统”(Ports&Subsystems)模块库,选取其中的“子系统”(Subsystem)模块并把它复制到新建的仿真平台窗口中。

3)双击“子系统”模块,弹出一个子系统编辑窗口。系统自动在该窗口中添加一个输入和输出端子,名为In1和Out1,这是子系统与外部联系的端口。

4) 将组成子系统的所有模块都添加到子系统编辑窗口中,合理排列。 5) 按要求用信号线连接各模块。

6) 修改外接端子标签并重新定义子系统标签,使子系统更具可读性。 7) 通过组合已存在模块的方法

该方法要求在用户的模型中已有组成子系统所需的所有模块,并且已做好正确的连接。这种方法适合于采用自下而上设计方式的用户,具体实现步骤如下:

a) 打开已经存在的模型。

b) 选中要组合到子系统中的所有对象,包括模块及其连线。

c) 选择菜单【Edit】的下拉菜单【Create Subsystem】命令,模型自动转换成子系统。 d)修改外接端子标签并重新定义子系统标签,使子系统更具可读性。 9.3.2 子系统的封装 所谓封装(Mask),就是将建立的子系统包装成一个模块,并隐藏内部结构。访问该模块时只出现一个参数设置对话框,模块中所有需要设置的参数都可通过该对话框来统一设置。

封装一个子系统的主要步骤如下:

1)选中要进行封装的子系统,在模型窗口中选择菜单【Edit】的下拉菜单【Mask Subsystem】命令。

2)执行该命令,就会弹出Mask编辑器窗口(见图9-5),按照Mask编辑器窗口中四个标签页进行封装图标、参数、初始化和文本的设置。

“Mask Editor”的四个标签页实际上是封装子系统称为特殊模块的四大类属性,它们是图标标签页(Icon)、参数标签页(Parameters)、初始标签页(Initialization)、文本标签页(Documentation),其主要功能如下:

Icon:用来给封装模块设计自定义图标,通过在“Icon Drawing commands”命令窗口中填写函数设置封装模块的图标。图标标签页的常用绘制命令如表9-3所示。

图9-5 Mask编辑器窗口

表9-3 图标标签页的常用绘制命令

绘制命令 plot(x_vector,y_vector) disp(string) text(x,y,string) image(picture.jpg) dpoly(num,den) 说明 在图标上绘制曲线 在图标的中心显示字符串 在(x,y)坐标处显示字符串 在图标上嵌入目标图片(JPG格式) 在图标的中心显示传递函数 Parameters:设置参数对话框,最关键的标签页(见图9-6),可增加或删除子系统参数对话框中的变量以及属性。“Variable”项必须和子系统中对应模块内设置的变量名称一致,才能建立起封装模块内部变量和封装对话框之间的联系。

图9-6 设置参数对话框

Initialization:设定子系统参数的初始值。

Documentation:设定封装子系统的类型、描述和帮助等文字说明。 9.4 SIMULINK系统的仿真 9.4.1 系统运行仿真步骤

按照上述建模的一些基本操作,完成模型建立之后就可以对整个模型进行仿真了。SIMULINK一般使用窗口菜单命令进行仿真,方便且人机交互性强,用户可容易地进行仿真解法及仿真参数的选择、定义和修改等操作。

利用SIMULINK环境仿真一个系统的过程基本上可以分为如下几个步骤:

1、 按照前述模块的基本操作,根据要仿真的系统框图,在SIMULINK仿真平台上搭建仿

真模型。此过程要首先打开SIMULINK窗口和模型浏览器,将需要的模块提取到仿真平台上,然后将平台上的模块用信号线一一连接,形成仿真的系统框图,然后再设置模块参数。一个完整的仿真模型应该至少包括一个源模块(Sources)和一个输出模块(Sinks)。

2、 设置仿真参数。在对搭建好的模型进行仿真前,还需要确定仿真的步长、时间和选取仿

真算法等,也就是设置仿真参数。仿真参数的设置可以由菜单【Simulation】中【Configuration Parameters】来选择。选择此选项后,将得到图9-7所示的对话框,用户可以从中填写相应的数据,修改仿真参数。

图9-7 仿真参数设置对话框

在图9-7所示对话框左侧有7个标签,打开后默认的标签为解算器“Solver”的设置,这也是最常需设置的标签。

图9-7展示了解算器的设置项目,其中仿真时间“Simulation time”有开始时间(Start time)和终止时间(Stop time)两项,连续系统中仿真时间一般从零开始,可以先预设一个仿真的终止时间,在仿真过程如果预设时间不足,可以即时修改。算法选择“Solver options”中,算法类型“Type”有Variable-step(变步长)与Fixed-step(固定步长)两种,每一种类型下又分别有多种数值计算方法可供选择。具体数值计算方法稍后介绍。在电机和拖动控制系统仿真中一般都使用可变步长类算法。该标签中经常还要设置的有仿真误差,这有相对误差(Relative tolerance)和绝对误差(Absolute tolerance)两项,系统默认的相对误差是1e-3。选择合适的计算误差,对仿真的速度和仿真计算能否收敛影响很大,尤其在仿真不能收敛时,适当放宽误差可以取得效果;绝对误差一般可取“自动(auto)”。

3、 启动仿真。完成仿真参数的设置后,就可以开始仿真了。选择菜单【Simulation】中【Start】命令或使用工具栏上的按钮“”图标启动仿真。在模型的仿真过程中,窗口下方的状

态栏会提示仿真的进程,对简单的模型这仅在一瞬间完成。对于仿真时间较长的模型,如果在仿真过程结束之前,用户想暂停此次仿真,修改模块参数或仿真时间等,可以用菜单【Simulation】中【Pause】命令或按钮“”暂停仿真。如果要提前结束仿真可以选择菜单【Simulation】中【Stop】命令或按钮“”来终止仿真。

4、 观测仿真结果。在模型仿真计算完毕后重要的是观测仿真的结果,在SIMULINK中最

常用的观测仪器是示波器(Scope),这时只要双击该示波器模块就可以打开示波器观察到以波形显示的仿真结果。 9.4.2 SIMULINK的仿真算法

在SIMULINK的仿真过程中选择合适的算法是很重要的,仿真算法是求常微分方程、传递函数、状态方程解的数值计算方法,这些方法主要有欧拉法(Euler)、阿达姆斯法(Adams)、龙格-库塔法(Rung-Kutta),这些算法主要建立在泰勒级数的基础上。所有方法分为两大类,可变步长类算法和固定步长类算法。 1、可变步长类算法

可变步长(Variable-step)类算法是在解算模型时可以自动调整步长,并通过减小步长来提高计算的精度。在SIMULINK的算法中可变步长类算法有如下几种:

(1)ode45:基于显式Runge-Kutta(4,5)和Dormand-Prince组合的算法,是一种一步算法,即只要知道前一时间点的解,就可以立即计算当前时间点的方程解。由于ode45仿真算法计算快,对大多数仿真模型来说,首先使用ode45算法,因此在SIMULINK的算法中把ode45设为默认的算法。

(2)ode23:基于显式Runge-Kutta(2,3)和Bogacki-Shampine相结合的算法,也是一种一步算法。在容许误差和计算略带刚性的问题方面,该算法比ode45要好。

(3)ode113:可变阶次的Adams-Bashforth-Moulton算法,是一种多步算法,即需要使用前几次节点上的值来计算当前节点的解。在精度要求高的情况下,该算法比ode45更合适。 (4)ode15s:一种可变阶次的多步算法,当遇到带刚性问题时或者使用ode45算法很慢时,可以试试这种算法。

(5)ode23s:这是一种改进的二阶Rosenbrock算法,在容许误差较大时,ode23s比ode15s有效,所以在解算一类带刚性的问题时用ode15s处理不行的话,可以用ode23s算法。 (6)ode23t:一种采用自由内插方法的梯形算法,如果系统为中度刚性且要求解没有数值衰减时,可考虑此解法。

(7)ode23tb:采用TR-BDF2算法,即在Runge-Kutta法的第一阶段用梯形法,第二阶段用二阶的Backward Differentiation Formulas算法。在容差较大时,ode23tb和ode23t都比ode15s要好。

(8)discrete:针对非连续系统(离散系统)的特殊算法。 2、固定步长类算法

固定步长类算法,顾名思义,是指解算模型的过程中步长是固定不变的,在SIMULINK算法中固定步长类算法有如下几种:

(1)ode5:采用Dormand-Prince算法,即固定步长的ode45算法。 (2)ode4:采用固定步长的四阶Runge-Kutta算法。 (3)ode3:采用Bogacki-Shampine算法。

(4)ode2:采用固定步长的二阶Runge-Kutta算法。 (5)ode1:Eular算法。

(6)discrete:不含积分的固定步长算法,适用于没有连续状态仅有离散状态模型的计算。

9.4.3 示波器的使用 示波器(Scope)是电机与拖动控制系统仿真中非常重要的一个模块,不仅可以实现仿真结果波形的显示,而且可以同时保存波形数据,是人机交互的重要手段。 双击示波器模块图标,即可弹出示波器的窗口界面,如图9-8所示。示波器模块属性的设置对用户观察和分析仿真结果影响很大,必须进行合适的属性设置才能得到满意的显示效果。

图9-8 示波器窗口

1、 示波器参数

点击“示波器参数”按钮可以弹出示波器参数设置的对话框,该对话框中含有两个标签页,分别是“常规”(General)和“数据”(Data history)标签页,如图9-9所示。 (1)“常规”(General)标签页 “Number of axes”:用于设定示波器的Y轴数量,即示波器的输入信号端口的个数,默认值为“1”,即示波器用以观察一路信号。若将其设为“2”,则可以同时观察两路信号,示波器的图标也自动变为两个输入端口。依此类推,一个示波器可设置为同时观察多路信号。 “Time range”:用于设定示波器时间轴的最大值,这一般可以选自动(auto),这样X轴就自动以系统仿真参数设置中的起始和终止时间作为示波器的时间显示范围。 “Tick labels”:用于选择标签的贴放位置。 “Sampling”:用于选择数据取样方式,包括“抽取”(decimation)和“采样时间”(sample time)两种方式。如果选取“抽取”方式,表示当采样下拉框右侧文本框输入数据N时,从每N个输入数据中抽取一个用来显示。可见,设定的数字N越大,显示的波形就越粗糙,但数据存储的空间可以减少,一般该文本框保持默认值1,表示所有输入数据均显示。若选取“采样时间”方式,则需要在采样下拉框右侧文本框中输入采样的时间间隔,并按采样间隔提取数据显示。 (2)“数据”(Data history)标签页 “Limit data points to last”:用于数据点数设置。选中后,其后的文本框被激活,默认值为5000,表示示波器显示5000个数据,若超过5000个数据,也仅显示最后的5000个数据。若不选该项,所有数据都显示,但对计算机内存要求较高。 “Save data to workspace”:数据在显示的同时被保存到Matlab工作空间中。若选中该项,将激活该复选框下的另两个参数设置项:变量名“Variable name”用于设置保存数据的名称,以便在MATLAB工作空间中识别和调用该数据;格式“Format”用于设置数据的保存格式。数据的保存格式有三种:“数组”Array格式,用于只有一个输入变量的数据保存格式;“带

时间变量的结构”(Structure with time)格式,用于同时保存波形数据和时间;“结构”(Structure)格式,用于仅保存波形数据。

图9-9 示波器参数设置对话框

2、 图形缩放

在示波器窗口菜单上有四个按键,用于图形的缩放操作。

(1) 区域放大:首先在菜单上点击区域放大镜,然后在需要放大的区域上按下鼠标

左键并斜向拖拉,这时出现一个矩形框,用矩形框框住需要放大的局部图形,松开鼠标,这部分图形就被放大了。

(2) X轴向放大:首先在菜单上点击X轴放大镜,然后在需要放大的区域按住鼠标

左键,并沿着X方向拖拉即可。

(3) Y轴向放大:首先在菜单上点击Y轴放大镜,然后在需要放大的区域按住鼠标

左键,并沿着Y方向拖拉即可。

(4) 自动尺寸按键:能自动地调整示波器的横轴和纵轴,既可完全显示用户设置的

仿真时间域以及对应的结果数值域,又能取得合理的显示效果,应用非常方便。

3、 坐标轴范围

示波器显示的变量一般是时间的函数,所以图形的X轴一般是时间,Y轴是对应的变量值。X轴和Y轴的最大取值范围一般是自动设置的,利用放大镜功能可以在X轴和Y轴的范围内选取其中的一部分显示,但有时需要将Y轴的最大范围再扩大一些,以便使图形处于窗口的中间。这可以在Scope窗口的图形部分点击鼠标右键,在弹出的功能菜单中选择“axes properties…”项,则可以打开Y轴范围限制的对话框,在对话框中重新设置Y轴范围,并可以给显示信号命名。

因篇幅问题不能全部显示,请点此查看更多更全内容