欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    matlabsimulink仿真环境.ppt

    • 资源ID:5597354       资源大小:517.01KB        全文页数:66页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    matlabsimulink仿真环境.ppt

    第四章 simulink仿真环境,4.1 simulink 概述4.2 simulink 基本使用4.3 复杂系统的综合仿真4.4 电力系统模块(PSB),4.1 simulink 概述,simulink是MATLAB的重要组成部分,它具有相对独立的功能和使用方法。simulink的主要功能是实现动态系统建模仿真与分析。Mathworks从matlab4.0版开始应用simulink,当时把它放在matlab执行文件中。在matlab4.2及以后的版本中,simulink则以matlab里的工具包形式单独出现,即需要单独安装。在matlab5.0版中,Simulink已升级为2.0版,在matlab5.3版中,Simulink已升级为3.0版。目前,simulink比从前的版本有了很大的改进。Simulink的文件类型为.mdl。Simulink支持连续与离散系统,也支持线性与非线性系统。Simulink里包括一些控制工具箱,例如控制系统工具箱,模糊逻辑工具箱,非线性控制设计模块等等。用户还可以创建与定制自己的功能模块,而不一定只使用simulink系统软件提供的标准模块。这样,用户就可以自行扩充软件的使用范围。,4.1 simulink 概述,Simulink为用户提供了用方框图进行系统建模的图形窗口,根据实际工程中控制系统的具体构成,用户只需要用鼠标的点击拖拽功能,将模块库中提供的各种标准环节拷贝到图形窗口中,再用Simulink的连线方式连接成一个完整的simulink动态结构图,各个环节可按simulink特定的方法改变或设定其参数以与实际控制系统相对应。在对于较大的系统建立模型时,simulink提供了系统分层排列的功能。Simulink可将系统分为从高级到低级的好几层,每层又可以分为好几个小部分;每层系统模型创建完成后,再将其连接起来就是一个完整的系统了。,4.2 simulink 基本使用,4.2.1 Simulink的启动 1.命令窗口中键入simulink 2.file菜单中选择new命令的model 3.工具栏中,按按钮 4.模型窗口file菜单选择new命令的model,4.2 simulink 基本使用,4.2.2 Simulink的常用模块库简介1、Sources 信号源模块组:输入端口模块(In):用来反映整个系统的输入端子,这样的设置在模型线性化与命令行仿真时是必需的。信号发生器(Signal generator):能够生成若干种常用信号,如方波信号、正弦波信号、锯齿波信号等,用户可调整其幅值和相位。带宽限幅白噪声(band-limited white noise):一般用于连续或混杂系统的白噪声信号输入。除了白噪声信号外,还有一般随机数发生模块,如正态随机数模块(random number)和均匀分布随机数模块(uniform random number)等,注意,这两个模块不能直接用于仿真连续系统。读文件模块(From file)和读工作空间模块(From workspace):两个模块允许从文件或matlab工作空间中读取信号作为输入信号。,4.2 simulink 基本使用,4.2.2 Simulink的常用模块库简介1、Sources 信号源模块组:时间信号模块(clock):生成当前仿真时钟,在与时间有关的指标求取中是很有意义的。常数输入模块(constant):此模块以常数作为输入。接地线模块(grand):一般用于表示零输入模块,如果一个模块的输入端没有接其他任何模块,simulink经常会给出错误信号。各种其他类型的信号输入,如阶跃输入(step)、斜坡输入(ramp)、脉冲信号(pulse generator)、正弦信号(sine wave)等,还允许由repeating sequence模块构造可重复的输入信号。,4.2 simulink 基本使用,4.2.2 Simulink的常用模块库简介2、Continous连续系统模块 积分环节(Integrator):该模块将输入端 信号经过数值积分,在输出端直接反映 出来。微分环节(Derivative):该模块将输入端 信号经过一阶数值微分在输出端输出出来。线性系统的状态方程(state-space)、传递函数(Transfer fcn)、零-极点模型(Zero pole):都可以用来描述线性系统。时间延迟(Transport delay或variable transport delay):把输入信号按给定的时间作延迟。记忆环节(memory):输出本模块上一步的输入值。,4.2 simulink 基本使用,4.2.2 Simulink的常用模块库简介3、Discrete离散系统模块零阶保持器(zero-order hold)和一阶保持器(first-order hold):前者在一个计算步长内将输出的值保持在同一个值上,后者依照一阶插值的方法计算步长下的输出值。离散系统的传递函数(discrete Transfer fcn)、状态方程(discrete state-space)、零-极点模型(discrete Zero pole):可以建立一个离散系统模型。Unit delay:对采样信号保持,延迟一个采样周期。Discrete filter:建立离散滤波器。,4.2 simulink 基本使用,4.2.2 Simulink的常用模块库简介4、Math数学运算模块Abs:求绝对值或求模(复数);Algebraic Constraint:强制输入信号为零;Complex to Magnitude-Angle:求复数的幅值与相角;Complex to Real-Imag:求复数的实部和虚部;Dot Product:求点积(内积);Gain:对输入信号乘上一个常数增益;,4.2 simulink 基本使用,4.2.2 Simulink的常用模块库简介4、Math数学运算模块Logical Operator:逻辑操作符;Magnitude-Angle to Complex:由幅值与相角求复数;Math Function:数学运算函数;Product:对输入信号求积或商;Relational Operator:比较操作符;Rounding Function:取整函数;Sign:符号函数Slider Gain:以滑动形式改变增益;Sum:对输入信号求代数和;Trigonometric Function:三角函数Bitwise Logical Operator:位逻辑操作符,对无符号整形输入信号进行逻辑运算。,4.2 simulink 基本使用,4.2.2 Simulink的常用模块库简介5、signal routing模块Bus selector:从输入总线上选择信号.Demux:将向量分为标量或小向量;Mux:将标量或小向量组合为大向量;Selector:选择输入的元素;Switch:当第二个输入端信号大于 临界值时,输出第一个输入端的 信号,否则输出第三个输入端的 信号;,4.2 simulink 基本使用,4.2.2 Simulink的常用模块库简介6、nonlinear非线性系统模块Rate limiter:限制信号的变化速率 不超过规定的限制值;Saturation:对输出信号进行限幅 的饱和特性;Quantizer:对输入进行阶梯状量化;Backlash:在输出不变区中输出不 随输入变化而改变,在输出不变区外 输出随输入成正比变化;Coulomb&Viscous Friction:在原点不连续,在原点以外具有线性增益。,4.2 simulink 基本使用,4.2.2 Simulink的常用模块库简介7、sinks输出模块Scope:仿真时显示信号的类似示波器的窗口。XY graph scope:将两路输入信号分别作为 示波器的两个坐标轴;Out:反映整个系统的输出端子;To file:把数据输出到文件中;To workspace:把数据输出到工作空间中;Stop simulation:当输入为非零时,强行中 止仿真。,4.2 simulink 基本使用,4.2.3 Simulink模块的处理1、模块的选定、移动用鼠标操作即可,模块的删除、剪切和拷贝同常规的做法一样,还可用鼠标右键把待拷贝的模块拖到目标位置后放开。来完成模块的拷贝。2、在连接模块时,有时需要将模块转向。在菜单format中选择flip Block命令,模块水平旋转180(快捷键Ctrl+I),选择rotate block命令,模块顺时针旋转90(Ctrl+R)。3、模块的名称可以更改,名称在模块上的位置可以翻转,模块名称可以隐藏,模块的前景颜色、背景颜色,以及空白区域的颜色都可以设定。以上操作在菜单format中都有相应命令。,4.2 simulink 基本使用,4.2.3 Simulink模块的处理4、在simulink中,线具有连接模块的功能。用鼠标可以在模块的输入与输出之间连线。选中format-port/signal display-wide nonscalar lines命令,则线的粗细会根据在线上传输的信号而变化:传输的为数值,则为细线;传输的为向量,则为粗线。双击连线,即可输入该线的说明标签。按住shift键,用鼠标在连线要折弯的地方单击并拖动,即可实现连线的折弯。实现连线的分支有三种方法:一是按住ctrl键,在要建立分支的地方用鼠标拉出即可;二是在要建立分支的地方用鼠标右键拉出即可;三是由输入端拉线到分支点。,4.2 simulink 基本使用,4.2.3 Simulink模块的处理5、模块之间的连接线是信号线。每条连接线都表示标量或向量信号的传输,连接线的箭头表示信号流向。模块间连接线生成的方法是:将鼠标置于模块的输出端口上,即呈现出一个十字形光标,拖动十字形光标至另一模块的输入端口,两模块之间生成一条带有箭头的连线,模块连线完成。6、模块的属性分为模块的标题和模块的内部参数。模块标题的修改方法是:单击标题,使其呈可编辑状态,输入新标题即可。模块内部都有自己所需要的参数,设置模块内部参数的方法是:将模块从模型库选出置于窗口中,双击窗口中的模块,即出现该模块的对话框。具体每个模块参数的设置,可点击模块对话框的help按钮,参阅其帮助进行设置。,4.2 simulink 基本使用,4.2.4 演示示波器 示波器是simulink中常用的一个输出模块。由右图可以看出,示波器窗口的标题是“scope”,标题栏下是工具栏。工具栏最左边是打印按钮;其次是示波器属性对话框;再次是连续三个变焦(zoom)按钮,分别是XY轴放大器、X轴放大器和Y轴放大器,可以将图像根据用户选定的X轴和Y轴范围同时放大,或仅在X轴范围放大,或仅在Y轴范围放大。工具栏中望远镜按钮对窗口坐标刻度自动管理,取图像最大幅值、最大时间范围,显示全部结果。望远镜按钮右边两按钮为保存当前轴的设置。工具栏中最右边的按钮为“float scope”选择按钮,选中该按钮,示波器为游离状态,模型结构图中示波器图标的输入端与系统模型的连线会断开。,4.2 simulink 基本使用,4.2.4 演示示波器 示波器属性对话框中有两张标签页:分别为一般参数设置(下图)和数据存储参数设置。下图“axes”栏下的“number of axes”为示波器窗口内的坐标个数,缺省为1;当设置为2时,示波器图标的输入端也变为两个输入端口。其中“time range”栏为信号显示从0开始的时间区间,缺省为10,若设置为n,则信号显示区间为0,n;”tick labels”下拉三个选项,可分别选择示波器坐标系不同的标注标识。“floating scope”栏被勾选时,则示波器为游离状态。“sampling”下拉菜单有两个选项:其一decimation设置数据的显示频度,缺省为1,表示每点都显示;设置为n时,则为隔(n-1)点显示一次。其二sampling Time 设置采样时间间隔,缺省为0,意为显示连续信号;设置1时为显示方式由输入信号决定。,4.2 simulink 基本使用,4.2.4 演示示波器 示波器属性对话框的数据存储参数设置页如下图所示。其中“limit data points to last”栏设置缓冲区存储数据的长度,缺省为5000。即图中显示最新的5000个仿真点,如果实际仿真点数超过这个数值,而又想看到仿真的全貌,则取消此框的选中。“save data to workspace”栏用来把示波器缓冲区存储的数据送到MATLAB工作空间。缺省为不选,即不送数据到MATLAB工作空间。“variable name”是存储数据的变量名。“format”为保存数据的三种格式选择:array(数组)、structure(构架)、structure with time(带时间的构架)。,4.2 simulink 基本使用,4.2.5 仿真方法及仿真参数的选择 在simulink模型窗口选择主菜单【simulation】下的【start】命令即可开始仿真,仿真开始后【start】变为【pause】,选中【pause】可以暂停仿真的执行,要停止仿真可以选择【stop】。上述操作也可以在模型窗口工具栏上选择合适的按钮来实现。在仿真之前通常要对仿真参数进行设置,对于简单的模型,可以使用系统的缺省值。执行模型窗口主菜单【simulation】下的【parameter】命令,simulink会弹出仿真参数设置对话框标签之一为“solver”的解算器标签页。解算器(solver)标签页参数设定是进行仿真工作前准备的必须步骤。最基本的参数设定包括仿真的起始时间与中止时间,仿真的步长大小与结算问题的算法等。参数的设定可在出现“solver”对话框后直接进行。,4.2 simulink 基本使用,4.2.5 仿真方法及仿真参数的选择 solver标签页如右图所示:1、“simulation time”栏设置仿真时间,在“start time”与“stop time”旁的编辑框内分别输入仿真的起始时间与停止时间,单位是“秒”。系统实际运行的时间与设置的时间秒数不会一致,实际运行的时间与计算机性能、所选择的算法和步长、模型复杂程度及误差要等因素有关。2、“solver option”栏为选择算法的操作。“type”栏的下拉菜单可选择变步长(variable-step)算法和固定步长(fixed-step)算法。变步长能够在仿真过程中自动修改步长的大小以满足容许误差设定与过零点(zero crossing)检验的需求(设置过零点检验可提高仿真精度,但对仿真速度有影响)。,4.2 simulink 基本使用,4.2.5 仿真方法及仿真参数的选择 属于变步长方式的有ode45、ode23、ode113、ode15s、ode23s、Ode23t、ode23tb、discrete多种方法可供选择。一般情况下,连续系统仿真应选择ode45算法,该方法是simulink默认算法,应用最广。Ode23在容许误差方面以及使用在稍带刚性的问题方面,比ode45效率高。(所谓刚性问题是指用微分方程组描述的系统,如果方程组的Jacobian矩阵的特征值相差特别悬殊,此微分方程组叫做刚性方程组,该系统则成为刚性系统)ode113用于解决非刚性问题,在容许误差要求严格的情况下,比ode45更有效。对于刚性问题,可以选择ode15s算法。在允许误差比较大的条件下,ode23s 比ode15s更有效,所以在使用ode15s 效果较差时,宜选用ode23s。Ode23t、Ode23tb适于解决有适度刚性的问题。离散系统一般选择discrete法。“max step size”栏设定结算器运算步长的时间上限,“initial step size”设定第一步运算时间,一般默认为“auto”。相对误差默认为1e-3,绝对误差默认为“auto”。,4.2 simulink 基本使用,4.2.5 仿真方法及仿真参数的选择 固定步长能够固定步长的大小不变,其算法有ode5、ode4、Ode3、ode2、ode1、discrete几种可供选择。一般采用ode5,它等效于ode45,另外ode3等效于ode23。固定步长方式“mode”栏选择模型的类型:多任务、单任务和“auto”。多任务是指模块具有不同的采样速率,并对模块之间采样速率的传递进行检测;单任务模型各模块的采样速率相同,不检测采样速率的传递;“auto”根据模块的采样速率是否相同,决定前两种的哪一种。,4.2 simulink 基本使用,4.2.5 仿真方法及仿真参数的选择 3、“output options”输出选择栏第一项为细化输出,细化系数最大为4,缺省为1,数值越大输出越平滑。第二项为产生附加输出,允许指定产生输出的附加时间,这种方式可改变仿真步长,使其与指定的附加输出时间一致。第三项为只产生特定的输出,这种方式可改变仿真步长,使其与指定的时间一致。,4.2 simulink 基本使用,4.2.5 仿真方法及仿真参数的选择工作空间(workspace I/O)标签页参数设置 仿真控制参数simulation parameters 设定对话框标签之二为workspace I/O工作空间标签页,如图所示。在这一标签页中设置参数后,可以从当前工作空间输入数据、初始化状态模块(initial state)、把仿真结果保存到工作空间。,4.2 simulink 基本使用,4.2.5 仿真方法及仿真参数的选择诊断(diagnostics)标签页参数设置 仿真控制参数simulation parameters 设定对话框标签之三为diagnostics诊断标签页,如图所示。诊断标签页用于诊断模型是否精确,是否出现异常情况,或者在发生某些事件时,设定应采取的措施与作出的反应。在标签页的空白编辑框内显示程序执行时可能遇到的情况,action栏为异常情况发生时应执行的操作。Action栏的反应有3种:【none】不反应,【warning】警告,【error】错误。警告信息出现时不影响程序的运行,错误出现时程序要停止运行,需要采取相应措施。,4.2 simulink 基本使用,4.2.5 仿真方法及仿真参数的选择仿真控制参数对话框中高级仿真属性设置advanced标签,用户可以在其中选择一些进一步的属性,更好地控制仿真过程。仿真控制参数对话框中实时工具对话框real-time workshop标签。实时工作空间real-time workshop(RTW)是simulink的一个重要功能模块,它也是一种实时开发环境,在该环境下simulink模型生成可移植的程序源代码(c语言),并自动生成能在多种环境中实时执行的程序。在该对话框中允许用户选择目标语言模板、系统目标文件等。,4.2 simulink 基本使用,4.2.6 应用举例建立一个simulink模型如下图所示,对simulink 基本使用进行熟悉。,4.3 复杂系统的综合仿真,4.3.1 多采样速率系统仿真 对于既包括连续环节,又包括离散环节还含有多个采样速率的复杂系统,simulink提供了快速、便捷的建模和仿真方法。用户可以直接建立仿真方块图,在每一个环节上,设置需要的参数。考虑一个复杂系统仿真,方块图如图所示:图中,控制律部分为离散子系统;广义被控对象为2个连续子系统。其中一个作为反馈与控制律组合,因此引入了零阶保持器。仿真步长设为0.05s,零阶保持器和控制器的步长都选择为0.1s,输入阶跃信号发生在1s时。,4.3 复杂系统的综合仿真,4.3.1 多采样速率系统仿真 通过观察原系统的输出;观察设控制器步长为0.6s、零阶保持器和系统仿真步长不变时响应结果;观察控制器和零阶保持器步长都为0.6s,仿真步长不变时的响应结果,三种结果表明,随着控制器和零阶保持器步长的增大,控制器输出和系统响应都产生了越来越强的振荡。说明选取不同的步长,simulink会自动将信号保持需要的时间间隔,因此选取不同的步长会得到不同的结果。,4.3 复杂系统的综合仿真,4.3.2 仿真结构的参数化 仿真方块图中的参数可以是实际数值,也可以是字母表示的变量名。用字母表示的变量可以在MATLAB的工作空间中赋值,或用M文件赋值,然后进行仿真运算。建立如下图所示模型:图中传递函数模块的输入参数由a、b、c三个字母给出,本模型可以点击由subsystem做成的initialize模块来运行给模型初始化的M文件m1,为参数a、b、c三个字母赋值。,4.3 复杂系统的综合仿真,4.3.3 与M函数的组合仿真 如果仿真方块图中有复杂的非线性子系统或复杂的逻辑运算,而在MATLAB提供的所有工具箱中都找不到该子系统,用户可以采取下列方式完成仿真。对于那些可以从MATLAB工具箱中找到其所有子环节的子系统,用户可以自己构造该环节的方块图,加以封装和模块化,装入MATLAB相应的工具箱,以备随时调用。对于那些具有特殊运算或者特殊结构,无法构造的子系统,可以编制一个M函数,连接到方块图中。,4.3 复杂系统的综合仿真,4.3.3 与M函数的组合仿真 图中所示环节,有一个死区非线性环节是用M函数实现的。打开simulink模块库,在user-defined Functions 子模块库中选中MATLAB Fcn模块调入model窗口中,编写名为deadzone.m的M文件存入当前目录下,该函数内容如下:function y=deadzone(x)%deadzone functionif x=1 y=4;elseif x=-1 y=-4;else y=0;end,4.3 复杂系统的综合仿真,4.3.3 与M函数的组合仿真 打开MATLAB Fcn模块对话框,在MATLAB FUNCTION栏下输入函数名deadzone,其余值皆用系统默认。系统输入sin函数幅值设为2。系统运行的结果为,4.3 复杂系统的综合仿真,4.3.4 模块化与封装1、模块化 当模型规模很大、很复杂时,可以通过把一些模块组合成一个子系统,来简化模型。在simulink里创建子系统的途径有两种:通过子系统模块来建立子系统 这种方法首先将subsystem模块复制到模型窗口,其位置在simulink模块库的ports&subsystem子库中.双击subsystem模块,打开子系统的编辑窗口。在窗口中建立一个PID控制器,如下图所示:子系统窗口中的in1和out1模块是是simulink建立子系统不可缺少的。,4.3 复杂系统的综合仿真,4.3.4 模块化与封装1、模块化 给系统连接上输入和输出信号,系统方块图如下:双击图中subsystem模块,可以打开该子系统,看到上页图中所示的子系统的内部结构。在MATLAB命令窗口给子系统的参数kp、kd、ki分别赋值后,就可以运行该系统了。例如设置kp=1,kd=0,ki=0.1,系统运行的结果如下图所示。,4.3 复杂系统的综合仿真,4.3.4 模块化与封装1、模块化组合已存在的模块来建立子系统 如果现有的模块里已经包含了用户想转化成subsystem的模块,可以通过组合这些模块的方式来建立子系统。例如已有如下图所示的模型。该系统的功能是将输入的华式温度转换为摄氏温度。首先选取要组合的模块,别忘了连线也是对象之一。正确选择好操作对象后,选择edit菜单下的create subsystem命令,simulink会自动将操作对象转化成一个子系统,转化后如下图所示。双击生成的子系统,可以看到自动生成的子系统其内部结构和手动方法生成的子系统结构一致。,4.3 复杂系统的综合仿真,4.3.4 模块化与封装2、封装子系统 封装是simulink的一个非常重要的特性,它使得用户可以自定义子系统的对话框和图标。以前面建立的PID子系统为例说明封装子系统的方法。首先选择要封装的子系统,然后从Edit菜单选择mask subsystem命令,会弹出封装编辑器,它分为四页。,4.3 复杂系统的综合仿真,4.3.4 模块化与封装2、封装子系统 Icon页定义模块图标,在drawing commands 提示下的编辑框内输入命令plot(0:0.1:2*pi),sin(0:0.1:2*pi)可在模块上得到左图所示的图标。在该编辑框内写入image(imread(1.jpg),在当前目录下存有名为1.jpg的图形文件,可在模块上得到如图所示的图标。还可以使用语句 disp(PID controller)对该图标进行文字标注,这将可得如下图所示的图标显示。,4.3 复杂系统的综合仿真,4.3.4 模块化与封装2、封装子系统 parameters页对用户定义的参数进行编辑。页面如下图所示:可以利用左边的4个工具图标对参数进行添加、删除、上移和下移的操作。参数可以定义的属性有:prompts输入变量的含义,其内容会显示在输入提示中;variable输入变量的名称;type输入变量的类型,包括edit,popup,checkbox三种;evaluate选中表示模块参数对话框里输入的值在被赋给变量之前,先由MATLAB进行估值,不选则表示输入的值不经过估值,直接作为字符串传给变量。Turnable选择该项允许用户在仿真正在进行时改变该参数的值。,4.3 复杂系统的综合仿真,4.3.4 模块化与封装2、封装子系统 initialization页如图所示。在initialization commands提示下的编辑框中可以输入任何命令,用来计算参数的值。,4.3 复杂系统的综合仿真,4.3.4 模块化与封装2、封装子系统 documentation页设置模块的描述信息和帮助文档。页面如右图所示。按照图中的输入设置该页后,双 击被封装的子模块,则不再显示模块 的内部结构,而是打开下图所示的 参数设置对话框。,4.3 复杂系统的综合仿真,4.3.4 模块化与封装3、定义自己的模型库 如果用户想将封装好的模块放置在自己建立的模型库中可以采用如下的方法:打开simulink模型库,用右键在simulink上弹出“open”命令,如图所示。,4.3 复杂系统的综合仿真,4.3.4 模块化与封装3、定义自己的模型库 点击“open”命令打开simulink库,选择edit菜单下的 unlockLibrary命令去处锁定。拷贝一个空白Subsystem模块至simulink库中,将其名称改为“我的库”,如下图所示。,4.3 复杂系统的综合仿真,4.3.4 模块化与封装3、定义自己的模型库 双击打开“我的库”模块,将封装好的PID模块拷贝至“我的库”模块,保存后重新打开simulink模型库,就会出现如图所示的用户自己建立的模型库。,4.3 复杂系统的综合仿真,4.3.5 S函数及其应用1、简单的直接描述形式 MATLAB 可以利用函数直接给出动态系统的导数描述,函数调用的格式:T,Y=solver(odefun,tspan,y0)这里 solver 是 ode45,ode23,ode113,ode15s,ode23s,ode23t,或ode23tb中任意一种。Odefun是一个函数,描述的是形如微分方程y=f(t,y)表示的系统。该函数是对由微分方程y=f(t,y)描述的系统在时间间隔tspan=t0 tf在初始条件y0下进行积分.函数f=odefun(t,y)输入变量t是标量,y是列向量,返回的f必须是与y=f(t,y)相对应的列向量。数组Y的每一行对应于列向量T返回的一个时间,获得设定每一个时间点t0,t1,tf的解。时间由函数自动划分。函数还可以带有一些相关的选项,可参阅MATLAB相关帮助。,4.3 复杂系统的综合仿真,4.3.5 S函数及其应用1、简单的直接描述形式 下面的例子有两个目的:一是掌握如何利用方块图对微分方程描述的系统进行仿真,二是了解利用函数对微分方程描述的系统进行仿真。例:下面给出van der pol方程选择状态变量可得如下状态方程:左图是该方程的仿真结构图。,4.3 复杂系统的综合仿真,4.3.5 S函数及其应用1、简单的直接描述形式 设置好初始条件:x1(0)=x2(0)=0.25,仿真时间t=20s,步长可变。在命令窗口键入:subplot(121),plot(t,x1,t,x2,r)subplot(122),plot(x1,x2)回车可得时间响应和相平面图:,4.3 复杂系统的综合仿真,4.3.5 S函数及其应用1、简单的直接描述形式上述的系统也可以用一个导数形式的M函数,名为vd.m来描述:%ven der pol equationfunction dy=vd(t,y)dy=zeros(2,1);dy(1)=y(1)*(1-y(2)2)-y(2);dy(2)=y(1);在命令窗口键入:ts=0 20;x0=0.25 0.25;t,x=ode45(vd,ts,x0);subplot(121),plot(t,x)subplot(122),plot(x(:,1),x(:,2)回车可得左图。可见利用M函数可以不建立方块图而得到仿真结果。,4.3 复杂系统的综合仿真,4.3.5 S函数及其应用2、S函数 simulink提供了S函数功能,可以接入方块图进行仿真。与M函数在方块图中引入一个代数运算环节不同,S函数在方块图中引入了一个函数描述的动态环节。在MATLAB里,用户可以选择用MATLAB语言还是C或者C+语言来编写S函数,一般称前者为M文件S函数,称后者为C-MEX文件S函数。这里我们只讲解M文件S函数,因此以后不加以区分,只是简单称为S函数。,4.3 复杂系统的综合仿真,4.3.5 S函数及其应用2、S函数 在simulink里调用S函数,要使用user-defined functions子库中的S-function模块。在MATLAB安装目录下的toolboxsimulinkblocks目录里有一个简单的S函数例程timestwo文件,它可以实现把一个输入信号乘以2输出。将S-function模块放置模型窗口,双击该模块,打开S-function对话框,如图所示进行设置。给该模块连接上输入输出模块后,即可运行。打开timestwo文件,在源代码中,S函数的说明语句为function sys,x0,str,ts=timestwo(t,x,u,flag),输入参数t,x,u,flag是编写S函数所必须的输入参量,用户不用从对话框输入,它由simulink解法器自动传给S函数。除它们之外的任何参数,都需要用户从对话框传值给S函数。,4.3 复杂系统的综合仿真,4.3.5 S函数及其应用2、S函数 MATLAB提供了一个S函数的模板程序sfuntmpl.m,其位于MATLAB安装目录下的toolboxsimulinkblocks目录里。在建立实际的S函数时,可在该模板上做必要的修改即可。S函数的引导语句为function sys,x0,str,ts=f(t,x,u,flag,p1,p2,),其中f为S函数的函数名,t,x,u分别为时间、状态向量和输入向量,flag为标志位,表示S函数执行何种操作的阶段。其意义和相关信息如教材168页表46所示,该函数还允许使用任意数量的附加参数p1,p2,。函数返回的参数值也有4个:sys是S函数根据flag的值运算得出的解;x0为初始状态值;str参数对m文件形成的S函数设置为空矩阵(可省略);ts为两列向量,定义为取样时间及偏移量(可省略)。,4.3 复杂系统的综合仿真,4.3.5 S函数及其应用2、S函数 当flag=0时,表示S函数执行初始化操作,在S函数模板程序中可以看到初始化操作是定义在mdlInitializeSizes子函数中实现的。在该段子函数程序中首先出现的语句是sizes=simsizes;,该语句返回一个未经初始化的sizes结构,sizes结构是S函数的信息载体,其内部字段可以在命令窗口查询:在命令窗口键入sizes=simsizes回车可得sizes=NumContStates:0 即sizes是一个具有6个字段的结构,NumDiscStates:0 字段的值开始都被置为零,用户可以为 NumOutputs:0 sizes的每一个字段重新赋值,每一个字 NumInputs:0 段的含义在下页说明。DirFeedthrough:0 NumSampleTimes:0,4.3 复杂系统的综合仿真,4.3.5 S函数及其应用2、S函数 sizes的每一个字段的含义如下:NumContStates 连续状态的个数;NumDiscStates 离散状态的个数;NumOutputs 输出的数目个数,赋1表示动态宽度的输出;NumInputs 输入的数目个数,赋1表示动态宽度的输入;DirFeedthrough有无直接馈入,判断直接馈入要看输出函数或者采样时间的下一个采样点的计算是否包含输入变量;NumSampleTimes系统中有无代数循环的标志,一般设定为1。在S函数模板程序中,对sizes的每一个字段赋值后,紧跟着的命令是sys=simsizes(sizes),该命令是将一个结构再转换为向量,因此sys返回的是一个向量,包含用户设定的sizes的每一个字段赋值。即在该阶段用户给出了S函数的说明信息,包括状态变量的个数,输入输出的个数等,返回给S函数的输出变量sys。,4.3 复杂系统的综合仿真,4.3.5 S函数及其应用2、S函数 当flag1时,S函数输出sys为状态变量的微分。当flag2时,输出值sys为状态值在下一个时刻的更新值。当flag3时,输出值Sys为系统输出的表达式。当flag4时,输出值sys为下一次被触发的时间。当flag9时,仿真任务结束。flag4和9的情况很少使用,离散状态的描述会用到flag2的情况,一般情况下多用的是Flag1和3的情况,当然,flag0的初始化操作任何情况下都不能少。根据以上的说明,编写S函数也可以不用MATLAB提供的模板,自己编写更为简捷的S函数。,4.3 复杂系统的综合仿真,4.3.5 S函数及其应用2、S函数例:van der pol方程,选择状态变量可得如下状态方程:分析:该系统有两个状态变量,将系统的输出就设定为等于状态变量,因此可以编写如下的文件名为new_vdp的S函数function sys,x0=new_vdp(t,x,u,flag)if flag=0 sys=2,0,2,0,0,0;x0=0.25,0.25;elseif flag=1 sys(1)=x(1)*(1-x(2)2)-x(2);sys(2)=x(1);elseif flag=3 sys=x;Else sys=;End(model模型mysfcn.model)也可以用S函数模板编写,见文件名为new_vd的S函数。,4.3 复杂系统的综合仿真,4.3.5 S函数及其应用2、S函数 在simulink模型窗口建立名为mysfcn的方块图模型,如下:在S函数模块对话框分别输入new_vdp和new_vd文件名,将存入工作空间的数据类型改为array,运行程序后,在命令窗口键入subplot(121),plot(t,x1,t,x2)subplot(122),plot(x1,x2)回车可得:,4.4 电力系统模块,电力系统模块(power system blockset,PSB)功能非常强大,可以用于电路、电力电子系统、电机系统、电力传输等过程的仿真,它提供了一种类似电路建模的方式进行模型绘制,在仿真前将自动将其变化成状态方程描述的系统形式,然后才能在simulink下进行仿真分析。在MATLAB命令窗口中键入powerlib,将得出下图所示的模块集。也可以从Simulink模块浏览窗口中选中Simpowersystem子库启动。该模块集中还有很多子模块集,双击每一个图标都将打开一个下级子模块集。,4.4 电力系统模块,4.4.1 电力系统元件库简介1、电源元件 电源元件库包含产生电信号的各种元件。如右图所示。包括直流电压源、交流电压源、交流电流源、受控

    注意事项

    本文(matlabsimulink仿真环境.ppt)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开