第五章MATLAB应用
第五章MATLAB应用 MATLAB比较易学,如果有不清楚的地方,可以通过它的帮助(help)和演示(demo)功能得到启示。 MATLAB是一种科学计算软件。MATLAB是Matrix Laboratory(矩阵实验室)的缩写 。早期的MATLAB主要用于解决科学和工程的复杂数学计算问题。使用方便、输入便捷、运算高效、适应科技人员的思维方式,并且有绘图功能,有用户自行扩展的空间,是国内外高校教学和科学研究的常用软件。 MATLAB比较易学,如果有不清楚的地方,可以通过它的帮助(help)和演示(demo)功能得到启示。 学习MATLAB的难点在于,它有大量函数,这些MATLAB函数仅基本部分就有700多个,其中常用的有200~300个,掌握和记忆起来都比较困难。
第五章MATLAB应用 1993年出现了SIMULINK,是基于框图的仿真平台,SIMULINK挂接在MATLAB环境上,以MATLAB的强大计算功能为基础,以直观的模块框图进行仿真和计算。SIMULINK提供了各种仿真工具,尤其是它不断扩展的、内容丰富的模块库,为系统的仿真提供了极大便利。避免了在MATLAB窗口使用MATLAB命令和函数仿真时需要熟悉记忆大量M函数的麻烦 。 SIMULINK原本是为控制系统的仿真而建立的工具箱,在使用中易编程、易拓展,并且可以解决MATLAB不易解决的非线性、变系数等问题。 支持连续系统和离散系统的仿真,支持连续离散混合系统的仿真,支持线性和非线性系统的仿真,支持多种采样频率(Multirate)系统的仿真,也就是不同的系统能以不同的采样频率组合,这样就可以仿真较大、较复杂的系统。 各科学领域根据自己的仿真需要,以MATLAB为基础,开发了大量的专用仿真程序,并把这些程序以模块的形式都放入SIMULINK中,形成了模块库。
第五章MATLAB应用 现在SIMULINK模块库有三级树状的子目录,在一级目录下就包含了SIMULINK最早开发的数学计算工具箱、控制系统工具箱的内容,之后开发的信号处理工具箱(DSP Blocks)、通信系统工具箱(Comm) 等也并行列入模块库的一级子目录,逐级打开模块库浏览器(SIMULINK Library Browser)的目录,就可以看到这些模块。
第五章MATLAB应用 从SIMULINK 4.1开始,有了电力系统模块库(Power System Blockset),该模块库主要由加拿大HydroQuebec和TECSIM International 公司共同开发。在SIMULINK环境下用电力系统模块库的模块,可以方便地进行RLC电路、电力电子电路、电机控制系统和电力系统的仿真。 本书中电力电子和电力 拖动控制系统的仿真就是在 MATLAB/SIMULINK环境下, 主要使用电力系统模块库和 SIMULINK两个模块库进行。
5.1 MATLAB的计算基础 5.1 MATLAB的计算基础 MATLAB的计算主要是数组和矩阵的计算,并且定义的数值元素是复数 5.1.1 常量和变量 1. 常量 MATLAB定义的数值元素是复数,因此实数是复数虚部为零的特殊情况。常量可以是十进制数,也可以是其他进制的数值。 复数的生成语句为 或 MATLAB中的常数存储格式是16位长型格式,数值有效范围是 ~ 。
5.1 MATLAB的计算基础 2. 变量 变量的命名规则 1)变量名以英文字母开始,即首字符必须是26个英文字母之一。 2. 变量 变量的命名规则 1)变量名以英文字母开始,即首字符必须是26个英文字母之一。 2)变量名可以由英文字母、数字和下划线组成,MATLAB能区分字母的大小写。 3)变量名长度不超过31个字符长度。 4)如果在变量名前添加了关键词“global”,该变量就成为全局变量,全局变量不仅在主程序中起作用,并且在调用的子程序和函数中起作用。定义全局变量必须在主程序的首行,这是惯例 。MATLAB有一些规定的常量和变量 表5-1
默认变量名,用于应答最近一次的操作、运算结果 5.1 MATLAB的计算基础 表5-1 MATLAB规定的常量和变量 常量和变量名 说 明 ANS(或ans) 默认变量名,用于应答最近一次的操作、运算结果 realmin 最小的实正数 i或j 虚数单位 INF(或inf) 无穷大 Pi 圆周率π NaN(或nan) 表示不定值(即0/0) eps 浮点数的相对误差 nargin 函数实际输入的参数个数 realmax 最大的实正数 nargout 函数实际输出的参数个数
5.1 MATLAB的计算基础 5.1.2 数组和矩阵的表示和赋值 5.1.2 数组和矩阵的表示和赋值 MATLAB既支持数组的运算,也支持矩阵的运算,但是数组与矩阵的运算有很大的不同,数组的运算对数组中每个元素都执行相同的操作,而矩阵的运算则按线性代数的法则进行。 一维数组的表示和赋值 一维数组(行向量)是用方括号括起的一组元素(或数),元素之间用空格或逗号分隔,组成数组的元素可以是具体的数值、变量名或算式。如
5.1 MATLAB的计算基础 2. 维数组和矩阵的表示和赋值 矩阵或数组的元素列入括号中,每行的元素间用空格或逗号分隔,行与行之间用分号或回车键隔开。如 表示一个3×3的矩阵 矩阵内的元素可以是数值、变量或者表达式。 5.1.3 MATLAB 的算术运算
5.1 MATLAB的计算基础 表5-2 MATLAB的算术运算符 算术运算 说 明 说 明 + 加 ^ 矩阵乘方 / 矩阵右除 - 减 说 明 说 明 + 加 ^ 矩阵乘方 / 矩阵右除 - 减 .^ 数组乘方 ./ 数组右除 * 矩阵乘 \ 矩阵左除 ′ 矩阵转置 .* 数组乘 .\ 数组左除 .′ 数组转置
5.1 MATLAB的计算基础 5.1.4 MATLAB 的关系运算 表5-3 MATLAB的关系运算符 关系运算的结果只可能是或。表示该关系式不成立,即为“假”;表示该关系式成立,即为“真”。 关系运算符 说 明 = = 等于 < 小于 ~ = 不等于 > = 大于等于 > 大于 < = 小于等于
5.1 MATLAB的计算基础 5.1.5 MATLAB 的逻辑运算 逻辑量的基本运算有与(&)、或(|)和非(~)三种。有时也包括异或运算(xor) 表5-4 MATLAB的关系运算符 逻辑运算 A=0 A=1 B=0 B=1 A&B 1 A│B ~A xor(A,B)
5.1 MATLAB的计算基础 5.1.6 MATLAB的特殊运算符 表5-5 MATLAB的特殊运算符 这些特殊运算符在英文状态下输入有效,在中文状态下输入则无效 特殊运算符 说明 : 冒号,从向量、数组、矩阵中取指定元素 ; 分号,用于分隔行 , 逗号,用于分隔列 ( ) 圆括号,用于表示数学运算中的先后次 [ ] 方括号,用于构成向量和矩阵 { } 大括号,用于构成单元数组 . 小数点或域访问符 .. 父目录 … 用于语句末端,表示该行未结束 % 用于注释 ! 用于调用操作系统命令 = 用于赋值
5.1 MATLAB的计算基础 5.1.7 MATLAB 常用的函数 MATLAB的函数极为丰富,一些常用的数学函数如表5-6 见书
5.2 MATLAB程序设计基础 5.3 MATLAB的绘图功能 5.2.1 表达式、表达式语句和赋值语句 5.2.2 流程控制语句 5.2.3 MATLAB常用的其他命令 5.3 MATLAB的绘图功能 5.3.1 直角坐标中的二维曲线 5.3.2 多条曲线的绘制 5.3.3 电力电子电路波形图的绘制
5.4 SIMULINK 环境和模型库 5.4 SIMULINK 环境和模型库 5.4.1 系统仿真(SIMULINK)环境 系统仿真(SIMULINK)环境也称工具箱(Toolbox),是MATLAB最早开发的,它包括SIMULINK仿真平台和系统仿真模型库两部分。由于SIMULINK的仿真平台使用方便、功能强大,后来拓展的其他模型库也都共同使用这个仿真环境,成为MATLAB仿真的公共平台。SIMULINK 是Simulation和Link两个英文单词的缩写,意思是仿真链接,MATLAB模型库都在此环境中使用,从模型库中提取模型放到SIMULINK的仿真平台上进行仿真。
5.4 SIMULINK 环境和模型库 SIMULINK特点: 1)以调用模块代替程序的编写。 2)画完系统框图,设置好仿真参数,即可启动仿真。 3)系统运行的状态和结果可以通过波形和曲线观察 。 4)系统仿真的数据可以用以.mat为后缀的文件保存,并且可以用其他数据处理软件进行处理。 5)如果系统框图绘制不完整或仿真过程中出现计算不收敛的情况,会给出一定的出错提示信息,但是这提示不一定准确,这是软件还不够完备的地方。
5.4 SIMULINK 环境和模型库 5.4.2 SIMULINK 的工作环境 进入SIMULINK 的工作环境: SIMULINK模型库浏览窗口 SIMUUNK工作窗口,即系统仿真平台 SIMULINK窗口菜单系统与目前常用的一些应用软件大同小异,不再逐一进行介绍,应用中比较特殊的命令会在应用内容中进行说明
5.4 SIMULINK 环境和模型库 5.4.3 模型库浏览器 5.4.3 模型库浏览器 模型库是SIMULINK的重要内容,模型库中保存了控制系统中常用的典型环节的模型可以通过模型库浏览器(SIMULINK Library Browser)来查找
5.4 SIMULINK 环境和模型库 Simulink(标准工具箱) MATLAB的工具箱具有极其丰富的内涵,在上图左侧可以看到,整个SIMULINK工具箱是由Simulink(标准模块库)、Aerospace blockset(航空航天系统模块库)、Communications Blockset(通信系统模型库)、Simpower Systems(电力系统模块库)等数十个模块组构成。结合电力电子的专业特点,主要介绍系统仿真标准工具箱(SIMULINK)和电力系统(Power System Block)两个模块库内所包含的模块 Simulink(标准工具箱) Simulink(标准工具箱)中包含了Conntinuous, Discontinuities、Discrete、Look-up Tables、Math Operations、Model Verification、Model-Wide Utilities、 Ports&Subsystems、Signal Attributes、Signal Routing、Sinks、Sources和Use-Defined functions等模块组。在电力电子专业中常用的模块组有Continuous、Math operations、Signal Routing、Sinks、sources、Discontinuities等。
5.4 SIMULINK 环境和模型库 第五章MATLAB应用
5.4 SIMULINK 环境和模型库 (1)Continuous模块组 (2)Math operations模块组
5.4 SIMULINK 环境和模型库 (3)Discontinuities模块组 (4)Signal Routing模块组
5.4 SIMULINK 环境和模型库 (5)Sinks模块组 (6)Sources模块组
5.4 SIMULINK 环境和模型库 2. SimPower System(电力系统)工具箱 主要有电源(Electrical sources)、元件(Elements)、电力电子(Power Electronics)、电机系统(Machines)、测量(Measurements)附加(Extras)等模块组。 (1)Electrical sources(电源)模块组
5.4 SIMULINK 环境和模型库 (2)Measurements(测量)模块组 (3)Elements(元件)模块组 在MATLAB中没有测量端口m的模块,如需用示波器显示工作波形,则要使用这些测量模块先将所需信号测量出来,然后将测量模块的输出接入到示波器或显示模块中进行显示 (3)Elements(元件)模块组
5.4 SIMULINK 环境和模型库 注意:单个的电阻、电容和电感元件只能通过串联或并联的RLC分支以及它们的负载形式来定义,单个元件的参数设置在串联或并联分支中是不同的,具体设置如表5-9 表5-9 单个电阻、电容、电感元件的参数设置表 元 件 串联RLC分支 并联RLC分支 类 型 电阻数值 电感数值 电容数值 单个电阻 R inf 单个电感 L 单个电容 C
5.4 SIMULINK 环境和模型库 (4)Power Electronics(电力电子)模块组 (6)Extras liberary(附加)模块组 附加(Extras)模块组是二级子目录,其中包括控制(Control Blocks)模块组、离散控制(Discrete Control Blocks)模块组、离散测量(Discrete Measurments)模块组、测量(Measurments)模块组和向量(Phasor Liberary)模块组 。常用的有
5.4 SIMULINK 环境和模型库 1)Control Blocks(控制)模块组 2)Measurments(测量)模块组
5.5 SIMULINK 的仿真实践基础 3. 模块的基本操作 (1)模块的参数设置 (2)模块的连接 第一步 电路或系统搭建。 注意:一个完整的仿真模型应该至少包括一个源模块(Sources)和一个输出模块(Sinks) 第二步 设置模块参数。 第三步 设置仿真参数。 第四步 启动仿真。 第五步 观察结果。
5.5 SIMULINK 的仿真实践基础
5.5 SIMULINK 的仿真实践基础
5.5 SIMULINK 的仿真实践基础
5.5 SIMULINK 的仿真实践基础
5.5 SIMULINK 的仿真实践基础 仿真结束,双击仿真模型中的输出模块SCOPE观察结果
5.5 SIMULINK 的仿真实践基础
5.5 SIMULINK 的仿真实践基础 在使用MATLAB Simulink进行仿真的过程中,除出了模块参数的设置以外,仿真参数的设置的是否合适、波形的处理是否到位,对于仿真结果有明显的影响。 5.5.2 仿真参数的设置 仿真参数的设置界面中Solver、Data Import/Export项的设置与仿真及仿真数据的处理密切相关。 1. Solver(解算器)的参数设置 Solver(解算器)的参数设置是MATLAB仿真中必需的步骤。包括“Simulation time”(仿真时间)、“Solver options”(解算器选项)和“Solver diagnostic controls”(解算器诊断控制)三组参数 1)“Simulation time”仿真时间设置栏:此栏设置项在仿真之前必须进行修改和确认。 “Start time”仿真的起始时间,连续系统一般从零开始。 “Stop time”仿真的停止时间,单位为s 。
“type”栏下用下拉选择框中可选变步长算法(Variable-step)或者固定步长算法(Fix-step) 5.5 SIMULINK 的仿真实践基础 2)“Solver options”仿真算法设置栏 “type”栏下用下拉选择框中可选变步长算法(Variable-step)或者固定步长算法(Fix-step)
5.5 SIMULINK 的仿真实践基础
5.5 SIMULINK 的仿真实践基础 2. Data Import/Export的参数设置(略) 5.5.3 观察仿真结果 5.5.3 观察仿真结果 Simulink的Sinks输出模块组中的几个模块都可以用来观察仿真结果 第一种方法是将仿真结果信号输入到输出模块“Scope”示波器(将信号显示在类似示波器的图标窗口内 )、“XY Graph”二维X-Y图形显示器(绘制X-Y二维的曲线图形)与“Display”数字显示器(将仿真结果的信息数据以数字形式显示) 中直接查看图形或者数据。 第二种方法是将仿真结果信号输入到“To Workspace”模块中,保存到MATLAB工作空间里,再利用绘图命令Plot在MATLAB命令窗口里绘制出图形(plot(tout, simout) )。 第三种方法是使用outl模块将仿真输出信息返回到MATLAB命令窗口里,再利用绘图命令Plot绘制出图形(plot (tout, yout)) 。
5.5 SIMULINK 的仿真实践基础 5.5.4 基本仿真举例 【例5-5】 仿真一阶惯性环节在单位阶跃给定下的响应。
5.5 SIMULINK 的仿真实践基础 【例5-6】
5.5 SIMULINK 的仿真实践基础 5.5.5 示波器的使用和数据保存 示波器(Scope)是最经常使用的输出模块,示波器不仅可以显示波形,并且可以同时保存波形数据。 示波器的参数 包含General和data history两部分设置
5.5 SIMULINK 的仿真实践基础 a) General页参数设置 “Number of Axies”项用于设定示波器的Y 轴数量,即示波器的输入信号端口的个数
5.5 SIMULINK 的仿真实践基础
5.5 SIMULINK 的仿真实践基础 第二项“Time range”(时间范围),用于设定示波器时间轴的最大值 第三项用于选择标签的贴放位置 第四项用于选择数据取样方式,其中Decimation方式是当右边栏设为“3”时,则每3个数据取一个数据显示波形。如果取样方式选Sample time采样方式,则其右栏里输入的是采样的时间间隔,这时将按采样间隔提取数据显示。 还有一项“Floating scope”选择,如果在它左方的小框中单击选中,则该示波器成为浮动的示波器,即没有输入接口,但可以接收其他模块发送来的数据。
5.5 SIMULINK 的仿真实践基础 第一项是数据点数,预置 值是5000,即可以显示5000个数 据,若超过5000个数据,则删掉 b) data histry页参数设置 第一项是数据点数,预置 值是5000,即可以显示5000个数 据,若超过5000个数据,则删掉 前面的保留后面的。也可以不选 该项,显示所有数据。 第二项“Save data to workspace”,即将数据放到工作间去,则仿真的结果可以保存起来,并可以用MATLAB的绘图命令来处理,也可以用其他绘图软件画出更漂亮的图形。 在保存数据栏下,还有两项设置,第一项是保存的数据命名(Variable name),这时给数据起一个名,以便将来调用时识别。第二项是选择数据的保存格式(Format),该处有3种选择:Array格式适用于只有一个输入变量的情况;Structure with time 和Structure这两种格式适用于以向量表示的多个变量情况,并且前者同时保存数值和时间,后者仅保存数值。
5.5 SIMULINK 的仿真实践基础 用Arrary格式保存的变量,为了以后可以用MATLAB命令重画,同时需要将时间也保存起来 2. 图形缩放 3. 坐标轴范围 4. 浮动示波器(Floating Scope) 5.5.6 SIMULINK 的仿真算法
5.5 SIMULINK 的仿真实践基础 5.5.7 建立子系统和系统模型的封装 将需要打包的模块都包含在虚线框内,松开鼠标,这时虚线框内的模块和线条都被选中。然后在Edit 菜单中选Create Subsystem(创建子系统)命令。建成的子系统模块可以重新命名 如果需要打开这个子系统模块,只要双击该子系统模块图标即可。打开子系统模块后,可以给子系统内的各模块设置参数,还可以进行修改模块名称等操作。关闭子系统只要单击窗口右上角的关闭按钮即可。子系统模型是允许嵌套的子系统模块可以复制,并转移到其他仿真模型中去使用。
5.5 SIMULINK 的仿真实践基础 2. 子系统模型的封装 一一打开子系统修改参数很繁琐,SIMULINK提供了子系统的封装(Mask)功能,也就是将子系统中各模块常要修改的参数集中在一张表上,方便子系统的使用。封装子系统需要在选中该子系统模块后,在模型窗口Edit菜单中选择Mask subsystem命令,就会弹出Mask编辑器窗口,然后在编辑器窗口内输入相关信息。 (见数学模型的simulink实现子系统S函数.ppt第41页)
5.6 SIMULINK与MATLAB的接口设计 Simulink可以和MATLAB进行数据交互(从MATLAB的工作空间中读入数据或者向MATLAB工作空间写入数据)。 5.6.1 由MATLAB工作空间变量设置系统模块参数 可以使用MATLAB工作空间中的变量设置系统模块参数, 模块参数的形式有如下两种: 1)直接使用MATLAB工作空间中的变量设置模块参数。 2)使用变量的表达式设置模块参数。
5.6 SIMULINK与MATLAB的接口设计 使用Sinks模块库中的To Workspace模块,可以轻易地将信号输出到MATLAB工作空间中。信号输出的名称、结构等在To Workspace模块的对话框中设置,仿真结束或暂停时信号被输出到工作空间中
5.6 SIMULINK与MATLAB的接口设计
5.6.3 使用工作空间变量作为系统输入信号 5.6 SIMULINK与MATLAB的接口设计 5.6.3 使用工作空间变量作为系统输入信号 使用Sources模块库中的From Workspace模块可以将MATLAB工作空间中的变量作为系统模型的输入信号。 » ; %表示信号输入时间范围与时间步长 » ; %表示在每一时刻的信号值 » ; %表示信号的输入向量,输入变量第一列须为时间序 列,接下来的各列代表信号的取值 例如,在MATLAB命令窗口中键入如下的语句并运行。 » ; » ; » ; 在系统模型的FromWorkspace中使用此变量作为信号输入
5.6 SIMULINK与MATLAB的接口设计 注意MATLAB命令中的输入向量与FromWorkspace中Data项设置名称都为input
5.6 SIMULINK与MATLAB的接口设计 » ; » ; » ; 将生成一个三角波。
5.6.4 MATLAB Function与Function模块 5.6 SIMULINK与MATLAB的接口设计 5.6.4 MATLAB Function与Function模块 用户还可以使用user-defined Functions模块库中的Function模块(简称为Fcn模块)或MATLAB Function模块(简称为MATLAB Fcn模块)进行彼此间的数据交互 在Fcn模块中: 1)输入总是表示成,可以是一个向量。 2)可以使用C语言表达式,例如。 3)输出永远为一个标量。 MATLAB Fcn用来调用MATLAB函数来实现功能,在MATLAB Fcn模块中: 1)所要调用的函数只能有一个输出(可以是一个向量)。 2)单输入函数只需使用函数名,多输入函数输入需要引用相应的元素,如mean,sqrt ,myfunc(u(1),u(2)) 。 3)在每个仿真步长内都需要调用MATLAB解释器。
5.6 SIMULINK与MATLAB的接口设计 如
5.7 S函数 5.7 S函数 5.7.1 S函数的基本概念 S函数是系统函数(System Function)的简称,是指采用非图形化的方式(即计算机语言,区别于Simulink的系统模块)描述的一个功能块。用户可以采用MATLAB代码。C、C++、FORTRAN或Ada等语言编写S函数。 S函数由一种特定的语法构成,用来描述并实现连续系统、离散系统和混合系统等动态系统。 为何还要使用S函数
5.7 S函数 可以从如下的几个角度来理解S函数: l) S函数为Simuilink的“系统”函数。 2)能够响应Simulink求解器命令的函数。 3)采用非图形化的方法实现一个动态系统。 4)可以开发新的Simulink模块。 5)可以与已有的代码相结合进行仿真。 6)采用文本方式输入复杂的系统方程。 7)扩展Simulink功能。M文件S函数可以扩展图形能力,C MEX S函数可以提供与操作系统的接口。 8)S函数的语法结构是为实现一个动态系统而设计的(默认用法),其他S函数的用法是默认用法的特例(如用于显示目的)。
5.7 S函数 5.7.2 如何使用S函数 5.7.3 与S函数相关的一些术语 S函数的使用步骤 1)创建S函数源文件。 2)在动态系统的Simulink模型框图中添加S-function模块,并进行正确的设置 3)在Simulink模型框图中按照定义好的功能连接输入输出端口。 5.7.3 与S函数相关的一些术语 仿真例程 mdlInitialization初始化 mdlGetTimeofNextVarHit计算下一个采样点 mdlOutput计算输出 mdlUpdate更新离散状态 mdlDerivatives计算导数 mdlTeminate结束仿真 2. 直接馈通 3. 采样时间和偏移量 4. 动态输入
5.7 S函数 5.7.4 S函数的工作原理 M文件S函数流程
5.7 S函数 2. M文件S函数模板 打开模板文件 在MATLAB命令行下输入: »edit sfuntmpl 或者双击\S-function example\M-file S-functions\level 1 M-files\ level 1 M-file S-function template块,
5.7 S函数 function [sys,x0,str,ts]=sfuntmpl(t,x,u,flag) 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)]); end
5.7 S函数 各个子函数(各个仿真例程) 1)初始化例程子函数。 提供状态、输入、输出、采样时间数目和初始状态的值。必须有该子函数。 function [sys,x0,str,ts]=mdlInitializeSizes sizes=simsizes; %生成sizes数据结构 sizes.NumContStates=0; %连续状态数,默认为0 sizes.NumDiscState=0; %离散状态数,默认为0 sizes.NumOutputs=0; %输出量个数,默认为0 sizes.NumInputs=0; %输入量个数,默认为0 sizes.DirFeedthrough=1; %是否存在直接馈通。1:存在,0:不存在,默认为1 sizes.NumSampleTimes=1; %采样时间个数,至少是一个 sys=simsizes(sizes); %返回size数据结构所包含的信息 x0=[]; %设置初始状态 str=[]; %保留变量置空 ts=[0 0]; %采样时间[采样周期 偏移量],采样周期为0表示连续系统
5.7 S函数 2)计算导数例程子函数。给定t,x,u,计算连续状态的导数,用户应该在此给出系统的连续状态方程。该子函数可以不存在。 function sys=mdlDerivatives(t,x,u) sys=[ ]; % sys表示状态导数,即dx 3)状态更新例程子函数。给定t,x,u,计算离散状态的更新。每个仿真步长必然调用该子函数,不论是否有意义。用户除了在此描述系统的离散状态方程外,还可以填入其他每个仿真步长都有必要执行的代码。 function sys=md1Upate(t,x,u) sys=[ ]; %sys表示下一个离散状态即 4)计算输出例程子函数。给定t,x,u,计算输出。该子函数必须存在,用户可以在此描述系统的输出方程。 function sys=mdlOutputs(t,x,u) sys=[ ]; %sys表示输出,即y 5)计算下一个采样时间,仅在系统是变采样时间系统时调用。 function sys=mdlGetTimeOfNextVarHit(t,x,u) sampleTime=1; %设置下一次的采样时间是 以后 sys=t+sampleTime; %sys表示下一个采样时间点
5.7 S函数 6)仿真结束时要调用的例程函数。在仿真结束时调用,用户可以在此完成结束仿真所需的必要工作。 function sys=mdlTerminate(t,x,u) sys=[ ]; S函数实现几种不同的系统举例: 【例5-9】 【例5-10】 【例5-11】
第五章MATLAB应用 5.8 MATLAB demo(演示)和Help文件的使用
5.8 MATLAB demo(演示)和Help文件的使用
5.8 MATLAB demo(演示)和Help文件的使用 其中含有各个工具箱的Demo,以电力电子专业常用的SymPowerSystem的Demo为例,单击SymPowerSystem,可以看到其下包含了8个Demo库,分别为Simple Models、Power Electronics Models、Machine Models、Power Utility AC/DC Network Models、Measurment and Control Models、Electric Drives Models、FACTS Models、Distributed Resources Models,右端窗口中为该工具箱中的演示的电路或系统的列表
5.8 MATLAB demo(演示)和Help文件的使用 5.8.2 单个Simulink仿真模块Help的使用 在使用MATLAB仿真软件的过程中,遇到Simulink仿真模块使用和参数设置不清楚时,可以使用MATLAB的Simulink仿真模块Help文件,进行查询。 以Transfer FCN模块为例进行说明,从Simulink工具箱中选取Transfer FCN模块放入Simulink仿真平台(见图5-68),在不清楚如何使用时,可用鼠标右击器件,从打开的菜单中选中Help,即可打开Transfer FCN的Help文件。
5.8 MATLAB demo(演示)和Help文件的使用
5.9 电力电子电路的MATLAB仿真 5.9 电力电子电路的MATLAB仿真 5.9.1 SIMULINK电力电子相关模块参数 一、开关器件模型及参数 MATLAB 电力电子器件模型主要仿真了电力电子器件的开关特性,并且不同电力电子器件模型都具有类似的模型结构 。 在MATLAB 电力电子器件模型中已经并联了简单的RC 串联缓冲电路,在参数表中设置,名称分别为Rs和Cs。更复杂的缓冲电路则需要另外建立。对于MOSFET模型还反并联了二极管,在使用中要注意,需要设置体内二极管的正向压降Vf和等效电阻Rd。对于GTO和IGBT需要设置电流下降时间Tf和电流拖尾时间Tt。
第五章MATLAB应用 5.9 电力电子电路的MATLAB仿真 # MATLAB 的电力电子器件必须连接在电路中使用,也就是要有电流的回路,但是器件的驱动仅仅是取决于门极信号的有无,没有电压型和电流型驱动的区别,也不需要形成驱动的回路,这是MATLAB 电力电子器件模型与其他Spice模型的不同之处。尽管模型与实际器件工作有差异,但是也使MATLAB 电力电子器件模型在与控制连接的时候很方便。 # MATLAB 的电力电子器件模型中含有电感,因此有电流源的性质,所以在模块参数中还包含了IC即初始电流项。也因为它的电流源性质,在没有连接缓冲电路时不能直接与电感或电流源相连接,也不能开路工作。含电力电子模型的电路或系统仿真时,仿真算法一般采用刚性积分算法,如ode23tb、ode15s,这样可以得到较快的仿真速度。 # 电力电子器件的模块上,一般都带有一个测量输出端口,通过输出端m 可以观测器件的电压和电流,不仅测量方便,并且可以为选择器件的耐压和电流提供依据。
5.9 电力电子电路的MATLAB仿真 理想开关IdealSwitch。理想开关的特点是开关受门极控制,开关导通时电流可以双向通过。初始状态一栏,如果起动仿真时开关应是接通状态,则设为"0"; 如果启动仿真时开关应是断开的,则设为"1"。
5.9 电力电子电路的MATLAB仿真 二、整流、逆变电路模块 MATLAB中提供了一个通用(多功能)桥电路模块UniversalBridge和三电平桥电路模块Three-levelBridge。
如果在开关器件栏中选择二极管或晶闸管,则桥式线路的结构为: 5.9 电力电子电路的MATLAB仿真 如果在开关器件栏中选择二极管或晶闸管,则桥式线路的结构为:
5.9 电力电子电路的MATLAB仿真 如果在开关器件栏中选择的是自关断器件GTO、MOSFET、IGBT或理想开关,则桥式线路的结构为:
第五章MATLAB应用 两种编号方式是为与晶闸管6脉冲触发器和驱动模块PWM发生器输出的脉冲序列相对应。 自关断器件模块上已经反并联了续流二极管。 三电平桥电路模块Three-levelBridge
5.9 电力电子电路的MATLAB仿真 三、驱动模块 1、pulse Generator用于 发出脉冲序列
5.9 电力电子电路的MATLAB仿真 PWM Generator调制原理
5.9 电力电子电路的MATLAB仿真 3、Synchronized 6-pulse generator用于产生三相桥式整流电路晶闸管的六路与开关电压同步的单脉冲或双脉冲 其中如果Block口置1,则 没有脉冲输出,如置0,则 有脉冲输出。
5.9 电力电子电路的MATLAB仿真 4、 Synchronized 12-pulse generator用于产生十二相整流器的触发脉冲
5.9 电力电子电路的MATLAB仿真 四、 变压器 1、变压器
5.9 电力电子电路的MATLAB仿真 2、单相多绕组变压器
5.9 电力电子电路的MATLAB仿真 3、三相变压器:三相变压器模块共有10余个,这里介绍两个 三相变压器模型是由三个单相变压器模型根据不同的联结组要求连接而成,根据需要可在参数对话框中进行选择,因此三相变压器的参数设置与单相变压器相同。 Y 星形联结,无中线 ∆11三角形联结,电压相位领先Y 联结30º Yn 星形联结,带中性点的连接端 ∆1三角形联结,电压相位滞后Y 联结30º Yg星形联结,中点在模型内接地
5.9 电力电子电路的MATLAB仿真 三相变压器参数设置
5.9 电力电子电路的MATLAB仿真 4、互感线圈 在对话框中可设置三个线圈的 电阻和自感,并可设置3个线圈 的互感。如不勾选Three windings Mutual inductance,则为两个有 互感的线圈。如果Rm、Lm都 取零,则模型表示的是3个没有 互感关系的独立线圈。互感线圈 也是一个简单的变压器模型。
5.9 电力电子电路的MATLAB仿真 五、 电动机模块 1、直流电机 其中F+和F-为直流电机励磁绕组 连接端,A+A-为电枢绕组连接端 选为设定机械负载转矩或设定速 度,前者为电动机模式,后者为 发电机模式) m端可输出转速、 电枢电流、励磁电 流和电磁转矩。 可通过励磁绕组和 电枢绕组的并联或 串联组成并励或串 励电机。
5.9 电力电子电路的MATLAB仿真 直流电机仿真:
5.9 电力电子电路的MATLAB仿真 直流电机仿真(上例使用电阻启动器进行限流启动):
5.9 电力电子电路的MATLAB仿真 2、交流电机 交流异步电机
5.9 电力电子电路的MATLAB仿真 交流同步电动机
5.9 电力电子电路的MATLAB仿真 永磁同步电机
5.9 电力电子电路的MATLAB仿真 开关磁阻电机
5.9 电力电子电路的MATLAB仿真 3、交流电机测量单元 根据所选Machine type不同,该模块 的外形有:
5.9 电力电子电路的MATLAB仿真 根据所选Machine type不同,该模块的外形有:
5.9 电力电子电路的MATLAB仿真 5.9.2 基础电路仿真 熟悉电力电子相关的元器件、测量显示的连接法、参数设置及使用用法。 一、线性变压器模块的使用
5.9 电力电子电路的MATLAB仿真 线性变压器参数设置: MATLAB线性变压器的电路模型: 模型考虑了绕组电阻(R1、R2、R3)和漏感(L1、L2、L3),还通过一个线性支路Rm、Lm考虑了磁芯的磁化特性。参数的设置可以有两种类型:标幺值(pu)和国际单位(SI)。 如果设定一个理想变压器,则将绕组电阻(R1、R2、R3)和电感(L1、L2、L3)设置为0,磁化电阻和电感(RmLm)设置为无穷大(inf)。
5.9 电力电子电路的MATLAB仿真 电路中变压器标幺值(pu)与国际单位(SI)设置对比
5.9 电力电子电路的MATLAB仿真 仿真参数 仿真结果
5.9 电力电子电路的MATLAB仿真 2. 可变电感的实现(子系统的应用) Demo中 的一个演示实例 其中的交流电压 源Vsource幅值频率、 阻抗源Zsource电阻、 电感,电流源Isource 幅值频率,还使用了 阻抗测量,使用常数 (constant)和正弦 波作为可变电感的给 定。电感随给定变化 的规律是在Variable Inductor子系统中实 现的
5.9 电力电子电路的MATLAB仿真
5.9 电力电子电路的MATLAB仿真 鼠标右击Variable Inductor子系统模块,弹出菜单,选择Look under mask,即可打开子系统仿真模型。
5.9 电力电子电路的MATLAB仿真 打开子电路内部:
5.9 电力电子电路的MATLAB仿真 仿真结果:
5.9 电力电子电路的MATLAB仿真 5.9.3 直流-直流变流器 降压(Buck)变换器及Powergui的使用 5.9.3 直流-直流变流器 降压(Buck)变换器及Powergui的使用 降压(Buck)变换器仿真电路、参数设置(输入电压为200v,滤波电感为10mH,输出滤波电容为100μf,负载5Ω)
5.9 电力电子电路的MATLAB仿真 参数设置:
5.9 电力电子电路的MATLAB仿真 仿真参数设置:
5.9 电力电子电路的MATLAB仿真 仿真结果
5.9 电力电子电路的MATLAB仿真 仿真结果
5.9 电力电子电路的MATLAB仿真 在Simpowersystems 模型仿真时,会自动调用一个专用的图形用户界面-Powergui(Graphical user interface,见图左上角),这个模块是仿真包含Simpowersystems模型的任何Simulink模型时所需要的。 其主要常用的功能 : 1)显示电路中所测量的电压和电流以及全部状态变量的稳态值 2)修改初始条件,使得仿真可以从任何的初始条件下开始,状态变量名称为电感或电容所在模块的名称 3) 阻抗频率特性测量(需在电路中加入阻抗测量模块才能进行)。 4)快速傅里叶分析(用于谐波分析)。 在上例中鼠标双击 Powergui打开模块:
5.9 电力电子电路的MATLAB仿真 Powergui模块及其常用的功能 显示稳态值
5.9 电力电子电路的MATLAB仿真 初始条件、阻抗特性: 快速傅里叶变换及其先决条件(数据需在示波器中进行保存):
5.9 电力电子电路的MATLAB仿真 2. 升压(Boost)变换器 升压(Boost)变换器仿真电路、参数设置(输入电压为200v,滤波电感为0.1mH,输出滤波电容为100μf,负载5Ω )
5.9 电力电子电路的MATLAB仿真 仿真参数及脉冲发生器的参数为:
5.9 电力电子电路的MATLAB仿真 仿真结果:
5.9 电力电子电路的MATLAB仿真 5.9.4 交流-直流变流器 单相桥式全控整流电路仿真
5.9 电力电子电路的MATLAB仿真 本例提供了两种实现单相桥式全控整流的方法:一种为基于二极管搭建的整流桥;另一种为基于多功能通用桥(universal bridge)。并使用了Mulimeter测量模块进行电路的测量,然后输入到示波器中进行显示。 Mulimeter测量模块的用法:打开Mulimeter测量模块设置界面,在左边Available Measurments(可用测量)中选所需测量的量,然后单击“》”,选择到Seleted Measurments(选择测量)窗口,还可对所选测量进行删除,使用Up、Down对排列顺序进行调整。
5.9 电力电子电路的MATLAB仿真 参数设置
5.9 电力电子电路的MATLAB仿真 参数设置
5.9 电力电子电路的MATLAB仿真 仿真结果
5.9 电力电子电路的MATLAB仿真 2. 三相桥式全控整流电路仿真 在该电路中,为了模拟给定突变的情况,使用了一个Step信号做Id给定,从0时刻开始保持起始值10A,在0.04s突变为保持25A。用来模拟在0.04s之前给定10A,0.04s时刻突变为25A时电路的工作状态。
5.9 电力电子电路的MATLAB仿真 参数设置
5.9 电力电子电路的MATLAB仿真 参数设置 仿真结果
5.9 电力电子电路的MATLAB仿真 5.9.5 直流-交流变流器 三相电压源型SPWM 逆变器仿真 5.9.5 直流-交流变流器 三相电压源型SPWM 逆变器仿真 输入电压250v,电阻均为2Ω,电感均为0.01H 在通用桥的参数设置页面中,Measurements项中选择的是All voltages and currents,即该模块中所有的电压和电流。在Measurements项中选择的所有量都可以显示在Multimeter的Available Measurements栏中。
5.9 电力电子电路的MATLAB仿真 电路图 选择了两个RLC支路的电流和通用桥的Uab、Ubc在示波器中进行显示。
5.9 电力电子电路的MATLAB仿真 参数设置
5.9 电力电子电路的MATLAB仿真 仿真结果
5.9 电力电子电路的MATLAB仿真 2. 单相电流滞环跟踪逆变器的仿真 电路中两个直流电源均为100v,滤波电感为10mH,负载电阻为2Ω
5.9 电力电子电路的MATLAB仿真 主要器件 模块参数
5.9 电力电子电路的MATLAB仿真 参数设置 其中 Relay是通过比较输入与指定的阈值来确定输出是“on”还是“off”,具体输出值由Output when on和Output when off中所确定的值决定。这里Relay与Relay1的阈值分别有0.5的差别,是为了所得的信号产生一个死区。
5.9 电力电子电路的MATLAB仿真 从Multimeter的参数中可以看出,信号Ib被反馈回来与正弦波进行比较,根据差值的大小通过滞环确定控制信号的电平高低,从而控制开关的通与断。 仿真结果:
5.9 电力电子电路的MATLAB仿真 仿真结果:
5.9 电力电子电路的MATLAB仿真 仿真结果: