资源预览内容
第1页 / 共38页
第2页 / 共38页
第3页 / 共38页
第4页 / 共38页
第5页 / 共38页
第6页 / 共38页
第7页 / 共38页
第8页 / 共38页
第9页 / 共38页
第10页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
MATLAB/SIMULINKMATLAB/SIMULINK控制系统控制系统 仿真仿真航空科学与工程学院2014年 4月S-函数S-函数介绍(为什么要引入S-Function?)S-函数的分类S-函数的使用(实例演习)为什么要引进S-函数?1, Simulink里自带的Block够用么?2, 如何跟其他硬件有效结合?3,如果速度不够快怎么办?4,如何使用现成的开源代码?什么是 S-FunctionS-Function 可以使用MATLAB,C,C+,Ada,或Fortran 语言来 编写。使用MEX 实用工具,将C,C+,Ada,和Fortran 语言的S- Function 编译成MEX-文件,在需要的时候,它们可与其MEX-文件一起动 态地连接到MATLAB 中。 S-Function 使用一种特殊的调用格式让你可以与Simulink 方程求解器相互 作用,这与发生在求解器和内置Simulink 块之间的相互作用非常相似。S- Function 的形式是非常通用的,且适用于连续、离散和混合系统。 S-function 为你提供了一种在Simulink 模型中增加自制块的手段,你可以使 用MATLAB,C,C+,Ada,或Fortran 语言来创建自己的块。按照下面一 套简单的规则,你可以在S-function 中实现自己的算法。S-函数是系统函数(System Function)的简称,是指采用非图形化的方 式(即计算机语言,区别于Simulink的系统模块)描述的一个功能块。S-函数具备什么特征(1/3) ?Simulink 是如何工作的(Simulink与Matlab的本质不同?)总结:Simulink的工作原理 就是不停更新系统状 态的过程,这个系统 可以是连续的,可以 使离散的,也可以使 混合体。S-函数具备什么特征(2/3)?如何把S函数放进去?一个S函数必须包含必要的 callback (子函数), 做:1.1 初始化(Initialization )1.2 计算步长(非必须)1.3 计算系统的输出1.4 更新系统状态1.5 与系统其他模块整合S-函数具备什么特征(3/3) ?1: 参数传递, S-函数如何跟系统其他Block交换参数?Direct Feedthrough (S输入参数直接跟输入相关)Dynamically Sized Arrays (S输入的参数可变)2:时间设置,S-函数如何与Simulations的时间配合起来?Continuous sample time (连续系统,微小步长)Continuous, but fixed in minor time step sample time (连续系统,非自定 义步长)Discrete sample time (自定义步长)Variable sample time (可变步长)Inherited sample time (继承其他block)S-函数分类(1/2)M-file S-函数 通过function handles实现MEX-file S-函数 C, C+, Ada, Fortran;S-function API 实现优点:简单,容易上手可以调用Matlab里的工具箱缺点:比较慢不太适合硬件开发优点:速度快可以调用任何开源代码适合硬件开发缺点:对初学者比较难S-函数分类(2/2)A Level-1 M-file S-function matlabroot/toolbox/simulink/blocks/sfuntmpl.m A Level-2 M-file S-function matlabroot/toolbox/simulink/blocks/msfuntmpl_basic.m A hand-written C MEX S-function(推荐) matlabroot/simulink/src/sfuntmpl_doc.c The S-Function Builder (新手)The Legacy Code ToolS-函数的例子:在模型中使用 S-Function为了将一个 S-function 组合到一个Simulink 模型中,首先从Simulink 用户 定义的函数块库中拖出一个S-Function 块,然后在S-Function 块对话框中的 S-Function name 区域指定S-Function 的名字。如下图所示:在本例中,模型包含了两个的S-function 块,这两个块使用到同一个源文件( mysfun,可以是一个 C MEX 文件,或者是一个M 文件)。如果一个C MEX 文件与一个M 文件具有 相同的名字,则C MEX 文件被优先使用,即在S-function 块中使用的是C MEX 文件。向 S-Function 传递参数 在 S-function 块的S-function parameters 区域可以指定参数值,这些值将被 传递到相应的S-function中。要使用这个区域,必须了解S-function 所需要的 参数,及参数的顺序(如果不知道,应查询S-function的编制者、相关文件, 或源代码)。输入参数值时,参数之间应使用逗号分隔,并按照S-function 要 求的参数顺序进行输入。参数值可以是常量、模型空做区间定义的变量名、 或MATLAB 表达式。下面的图示使用 S-function parameters 区域输入用户 自定义参数的用法:在本例中,模型使用的是由Simulink 提供的S-function 范例,limintm。该S- function 的源代码在目录toolbox/simulink/blocks 下可以找到。函数limintm 接受了三个参数:一个下边界,一个上边界,及一个初始条件。该函数将输 入信号对时间进行积分,如果积分值在上下边界之间则输出积分值;如果积 分值小于下边界值,则输出先边界值;如果积分值大于上边界值,则输出上 边界的值。在本例的对话框中指定下边界值、上边界和初始条件分别为2,3 ,和2.5。图中示波器显示的曲线是当输入振幅为1的正弦波时的输出结果。S-Function 的实现 S-Function 可以通过M-文件或者MEX 文件来实现。以下部分介绍了这些实现方法,并讨论各种实现方法各自的优缺点。 M-文件的S-Function 一个 M-文件的S-Function 由以下形式的MATLAB 函数构成:sys,x0,str,ts = f(t,x,u,flag,p1,p2,.)其中,f 是S-Function 的函数名,t 是当前时间,x 是相应S-function 块的状 态向量,u 是块的输入,flag 指示了需被执行的任务,p1,p2,. 是块参数 。在模型仿真过程中,Simulink 反复调用f,对于特定的调用使用flag 来指 示需执行的任务。S-function 每次执行任务都返回一个结构,该结构的格式在语法范例中给出。在目录 matlabroot/toolbox/simulink/blocks 中给出了M-文件S-function 的 模板,sfuntmpl.m。该模板由一个主函数和一组骨架子函数组成,每个子函 数对应于一个特定的flag 值。主函数通过flag的值分别调用不同的子函数。 在仿真期间,这些子函数被S-function 以回调程序的方式调用,执行S- function 所需的任务。下表列出了按此标准格式编写的M-文件S-function 的 内容。实例操作:M-File S-函数例1、使用S-函数实现系统:y=2u。实例操作:M-File S-函数例2、编写一个S函数,说明人口的动态变化。设人口出生率为r,资源为 K,初始人口数量为init,则人口的变化规律:p(n)=r*p(n-1)*(1-p(n- 1)/K),p(0)=init。实例操作:C+-File S-函数3.5 Fuzzy Logic Toolbox3.5 Fuzzy Logic Toolbox(模糊(模糊 逻辑工具箱)逻辑工具箱)Matlab模糊控制工具箱为模糊控制器的 设计提供了一种非常便捷的途径,通过 它我们不需要进行复杂的模糊化、模糊 推理及反模糊化运算,只需要设定相应 参数,就可以很快得到所需要的控制器 ,而且修改也非常方便。下面将根据模 糊控制器设计步骤,一步步利用Matlab 工具箱设计模糊控制器。3.5.13.5.1模糊控制模糊控制1. 什么是模糊控制? 模糊控制是用模糊数学的知识模仿人脑的思维方式,对 模糊现象进行识别和判决,给出精确的控制量,对被控对象 进行控制。 2. 模糊控制的特点与经典控制理论和现代控制理论相比,模糊控制的主 要特点是不需要建立对象的数学模型。 3. 手动控制和经验控制操作人员根据对象的当前状态和以往的控制经验,用手 动控制的方法给出适当的控制量,对被控对象进行控制。用计算机模拟操作人员手动控制的经验,对被控对象进行控 制。首先根据操作人员手动控制的经验,总结出一套完整的控 制规则,再根据系统当前的运行状态,经过模糊推理、模糊 判决等运算,求出控制量,实现对被控对象的控制。4. 模糊控制的基本思想5. 模糊控制的发展1965年 美国加利福尼亚大学自动控制专家 L.A Zadeh (扎德 或 查 德)教授 论文模糊集合论。 1974年 英国工程师 (E.H.Mamdani)马丹尼 将模糊集合理论应用于锅炉和蒸汽机的控制,获得成功,模糊数学走向应用 ,取名模糊控制。3.5.2 3.5.2 模糊控制器设计模糊控制器设计首先我们在Matlab的命令窗口( command window)中输入fuzzy,回 车就会出来这样一个窗口。图3.5.1模糊控制器设计窗口下面都是在这样一个窗口中进行模糊控 制器的设计。1确定模糊控制器结构:即根据具体 的系统确定输入、输出量。这里可以选取标准的二维控制结构,即 输入为误差e和误差变化ec,输出为控 制量u。注意这里的变量还都是精确量 。相应的模糊量为E,EC和U,可以选 择增加输入(Add Variable)来实现双入 单出控制结构。2、输入输出变量的模糊化:即把输入输出的 精确量转化为对应语言变量的模糊集合。首先要确定描述输入输出变量语言值的模糊子 集,如NB,NM,NS,ZO,PS,PM,PB ,并设置输入输出变量的论域,例如我们可以 设置误差E(此时为模糊量)、误差变化EC、 控制量U的论域均为-3,-2,-1,0,1,2, 3;然后为模糊语言变量选取相应的隶属度函 数。在模糊控制工具箱中,在Member Function Edit中即可完成这些步骤。首先打开Member Function Edit窗口.然后分别对输入输出变量定义论域范围,添加 隶属函数,以E为例,设置论域范围为-3 3,添加 隶属函数的个数为7.然后根据设计要求分别对这些隶属函数 进行修改,包括对应的语言变量,隶属 函数类型。3、模糊推理决策算法设计:即根据模 糊控制规则进行模糊推理,并决策出模 糊输出量。首先要确定模糊规则,即专家经验。对 于我们这个二维控制结构以及相应的输 入模糊集,我们可以制定49条模糊控 制规则(一般来说,这些规则都是现成 的,很多教科书上都有),如图。制定完之后,会形成一个模糊控制规则矩 阵,然后根据模糊输入量按照相应的模糊 推理算法完成计算,并决策出模糊输出量 。4对输出模糊量的解模糊:模糊控制器 的输出量是一个模糊集合,通过反模糊化 方法判决出一个确切的精确量,凡模糊化 方法很多,我们这里选取重心法5然后Export to disk,即可得到一个.fis 文件,这就是你所设计的模糊控制器。3.5.33.5.3仿真实例仿真实例 模糊逻辑工具箱与simulink的结合使用水箱水位模糊控制系统假定有一个水箱有进水出水口,可
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号