MATLABSIMULINK控制系统仿真(lk)Sfu.ppt

上传人:sh****n 文档编号:6378695 上传时间:2020-02-24 格式:PPT 页数:38 大小:1.97MB
返回 下载 相关 举报
MATLABSIMULINK控制系统仿真(lk)Sfu.ppt_第1页
第1页 / 共38页
MATLABSIMULINK控制系统仿真(lk)Sfu.ppt_第2页
第2页 / 共38页
MATLABSIMULINK控制系统仿真(lk)Sfu.ppt_第3页
第3页 / 共38页
点击查看更多>>
资源描述
MATLAB SIMULINK控制系统仿真 航空科学与工程学院2014年4月 S 函数S 函数介绍 为什么要引入S Function S 函数的分类S 函数的使用 实例演习 为什么要引进S 函数 1 Simulink里自带的Block够用么 2 如何跟其他硬件有效结合 3 如果速度不够快怎么办 4 如何使用现成的开源代码 什么是S Function S 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 函数是系统函数 SystemFunction 的简称 是指采用非图形化的方式 即计算机语言 区别于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交换参数 DirectFeedthrough S输入参数直接跟输入相关 DynamicallySizedArrays S输入的参数可变 2 时间设置 S 函数如何与Simulations的时间配合起来 Continuoussampletime 连续系统 微小步长 Continuous butfixedinminortimestepsampletime 连续系统 非自定义步长 Discretesampletime 自定义步长 Variablesampletime 可变步长 Inheritedsampletime 继承其他block S 函数分类 1 2 M fileS 函数通过functionhandles实现 MEX fileS 函数C C Ada Fortran S functionAPI实现 优点 简单 容易上手可以调用Matlab里的工具箱缺点 比较慢不太适合硬件开发 优点 速度快可以调用任何开源代码适合硬件开发缺点 对初学者比较难 S 函数分类 2 2 ALevel 1M fileS functionmatlabroot toolbox simulink blocks sfuntmpl mALevel 2M fileS functionmatlabroot toolbox simulink blocks msfuntmpl basic mAhand writtenCMEXS function 推荐 matlabroot simulink src sfuntmpl doc cTheS FunctionBuilder 新手 TheLegacyCodeTool S 函数的例子 在模型中使用S Function为了将一个S function组合到一个Simulink模型中 首先从Simulink用户定义的函数块库中拖出一个S Function块 然后在S Function块对话框中的S Functionname区域指定S Function的名字 如下图所示 在本例中 模型包含了两个的S function块 这两个块使用到同一个源文件 mysfun 可以是一个CMEX文件 或者是一个M文件 如果一个CMEX文件与一个M文件具有相同的名字 则CMEX文件被优先使用 即在S function块中使用的是CMEX文件 向S Function传递参数在S function块的S functionparameters区域可以指定参数值 这些值将被传递到相应的S function中 要使用这个区域 必须了解S function所需要的参数 及参数的顺序 如果不知道 应查询S function的编制者 相关文件 或源代码 输入参数值时 参数之间应使用逗号分隔 并按照S function要求的参数顺序进行输入 参数值可以是常量 模型空做区间定义的变量名 或MATLAB表达式 下面的图示使用S functionparameters区域输入用户自定义参数的用法 在本例中 模型使用的是由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 FileS 函数 例1 使用S 函数实现系统 y 2u 实例操作 M FileS 函数 例2 编写一个S函数 说明人口的动态变化 设人口出生率为r 资源为K 初始人口数量为init 则人口的变化规律 p n r p n 1 1 p n 1 K p 0 init 实例操作 C FileS 函数 3 5FuzzyLogicToolbox 模糊逻辑工具箱 Matlab模糊控制工具箱为模糊控制器的设计提供了一种非常便捷的途径 通过它我们不需要进行复杂的模糊化 模糊推理及反模糊化运算 只需要设定相应参数 就可以很快得到所需要的控制器 而且修改也非常方便 下面将根据模糊控制器设计步骤 一步步利用Matlab工具箱设计模糊控制器 3 5 1模糊控制 1 什么是模糊控制 模糊控制是用模糊数学的知识模仿人脑的思维方式 对模糊现象进行识别和判决 给出精确的控制量 对被控对象进行控制 2 模糊控制的特点 与经典控制理论和现代控制理论相比 模糊控制的主要特点是不需要建立对象的数学模型 3 手动控制和经验控制 操作人员根据对象的当前状态和以往的控制经验 用手动控制的方法给出适当的控制量 对被控对象进行控制 用计算机模拟操作人员手动控制的经验 对被控对象进行控制 首先根据操作人员手动控制的经验 总结出一套完整的控制规则 再根据系统当前的运行状态 经过模糊推理 模糊判决等运算 求出控制量 实现对被控对象的控制 4 模糊控制的基本思想 5 模糊控制的发展 1965年美国加利福尼亚大学自动控制专家L AZadeh 扎德或查德 教授论文 模糊集合论 1974年英国工程师 E H Mamdani 马丹尼将模糊集合理论应用于锅炉和蒸汽机的控制 获得成功 模糊数学走向应用 取名模糊控制 3 5 2模糊控制器设计 首先我们在Matlab的命令窗口 commandwindow 中输入fuzzy 回车就会出来这样一个窗口 图3 5 1模糊控制器设计窗口 下面都是在这样一个窗口中进行模糊控制器的设计 1 确定模糊控制器结构 即根据具体的系统确定输入 输出量 这里可以选取标准的二维控制结构 即输入为误差e和误差变化ec 输出为控制量u 注意这里的变量还都是精确量 相应的模糊量为E EC和U 可以选择增加输入 AddVariable 来实现双入单出控制结构 2 输入输出变量的模糊化 即把输入输出的精确量转化为对应语言变量的模糊集合 首先要确定描述输入输出变量语言值的模糊子集 如 NB NM NS ZO PS PM PB 并设置输入输出变量的论域 例如我们可以设置误差E 此时为模糊量 误差变化EC 控制量U的论域均为 3 2 1 0 1 2 3 然后为模糊语言变量选取相应的隶属度函数 在模糊控制工具箱中 在MemberFunctionEdit中即可完成这些步骤 首先打开MemberFunctionEdit窗口 然后分别对输入输出变量定义论域范围 添加隶属函数 以E为例 设置论域范围为 33 添加隶属函数的个数为7 然后根据设计要求分别对这些隶属函数进行修改 包括对应的语言变量 隶属函数类型 3 模糊推理决策算法设计 即根据模糊控制规则进行模糊推理 并决策出模糊输出量 首先要确定模糊规则 即专家经验 对于我们这个二维控制结构以及相应的输入模糊集 我们可以制定49条模糊控制规则 一般来说 这些规则都是现成的 很多教科书上都有 如图 制定完之后 会形成一个模糊控制规则矩阵 然后根据模糊输入量按照相应的模糊推理算法完成计算 并决策出模糊输出量 4 对输出模糊量的解模糊 模糊控制器的输出量是一个模糊集合 通过反模糊化方法判决出一个确切的精确量 凡模糊化方法很多 我们这里选取重心法5 然后Exporttodisk 即可得到一个 fis文件 这就是你所设计的模糊控制器 3 5 3仿真实例 模糊逻辑工具箱与simulink的结合使用水箱水位模糊控制系统假定有一个水箱有进水出水口 可以通过一个阀门来控制流入的水量 但是流出的速度取决于出水口的半径和水箱底部的压力 要求设计进水口阀门控制器 能够根据水箱水位的实时测量结果对进水阀进行控制 使水位满足特定要求 在Matlab命令窗口中键入 sltank会出现如图所示的Simulink仿真模块图 加载模糊系统文件的命令为 tank readfis tank 例3 9舱室温度模糊控制系统如图3 5 10所示 模糊控制器输出如图3 5 11所示 将系统控制器换为Fuzzy控制器构成模糊控制系统 其中Fuzzy控制器模块可在Simulink的模块库中找到 提示 在Matlab中可以使用ruleview命令观察模糊规则推理过程 通过surfview命令观察模糊控制器的输入输出 图3 5 10舱室温度模糊控制系统 图3 5 11模糊控制器输出 3 6神经网络工具箱 3 6 1介绍神经网络神经网络是单个并行处理元素的集合 我们从生物学神经系统得到启发 在自然界 网络功能主要由神经节决定 我们可以通过改变连接点的权重来训练神经网络完成特定的功能 一般的神经网络都是可调节的 或者说可训练的 这样一个特定的输入便可得到要求的输出 如图所示 这里 网络根据输出和目标的比较而调整 直到网络输出和目标匹配 作为典型 许多输入 目标对应的方法已被用在有监督模式中来训练神经网络 帮助和安装神经网络工具箱包含在nnet目录中 键入helpnnet可得到帮助主题 工具箱包含了许多示例 每一个例子讲述了一个问题 展示了用来解决问题的网络并给出了最后的结果 显示向导要讨论的神经网络例子和应用代码可以通过键入helpnndemos找到 安装神经网络工具箱的指令可以在下列两份MATLAB文档中找到 theInstallationGuideforMS WindowsandMacintosh或者theInstallationGuideforUNIX 3 6 3仿真实例 NN神经网络预估控制的Simulink应用 NN神经网络预估控制的原理图如图所示 其NN预估神经网络结构图如图所示 NN预估神经网络原理图NN预估神经网络结构图 NN神经网络性能指标函数如下式所示 控制器原理图如图所示 NN预估神经网络控制器 例3 10水箱控制示意图如图所示 其参数方程可由下式表示 水箱控制示意图 水箱NN预估神经网络仿真图如图所示 仿真结果曲线如图所示 提示 在Matlab中可以输入predcstr调出神经网络simulink仿真实例 谢谢
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!