




已阅读5页,还剩116页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
控制系统综合实践ComprehensivePractiseonControlSystem 主讲人 谢海斌讲师单位 机电工程与自动化学院自动化研究所电话 76342 806Email hbxie hbxie gfkd mtn 控制系统综合实践 第一部分公共综合实践模块课时 15学时主要内容1基于Simulink的动态系统建模与仿真 讲授3学时 2基于dSPACE的控制系统快速原型设计 讲授3学时 3基于dSPACE的电机控制系统设计 实验9学时 参考教材 薛定宇 控制系统计算机辅助设计 MATLAB语言与应用 第2版 清华大学出版社 2006 黄永安 马路 刘慧敏 MATLAB7 0 Simulink6 0建模仿真开发与高级工程应用 清华大学出版社 2005 基于dSPACE的电机控制系统设计 9学时 时间 2010年10月18 19 20 21 232010年10月25 26 27 28 30地点 03教学楼4楼现代控制技术实验室分组 8人一组 共分10组 共80人 形式 1 每组8人独占一天 每人1套设备 上 下 晚共9学时2 建议不同组的组员自由组合成一个2人合作组 这样每个人实际上机时间可扩展为18学时 实验安排 被控对象 步进电机 增量编码器 旋转电位计实验内容 1 熟悉步进电机与编码器的工作原理 使用说明以及电气特性2 以步进电机为被控对象 设计电机闭环控制系统3 熟悉Simulink建模与仿真方法4 dSPACE软硬件环境熟悉及设计流程实践 3学时 5 电机系统建模 控制器设计与离线仿真 3学时 6 电机控制系统快速原型设计与实时控制 3学时 实验安排 引子 讨论 如何完成一个完整的控制系统设计与实现任务 第一步 问题描述与需求分析第二步 被控对象建模与特性分析第三步 控制器设计 仿真验证与优化第四步 控制算法软件开发与控制器硬件设计第五步 软 硬件联调与验证 第一讲基于Simulink的动态系统建模与仿真本讲内容 Simulink简介Simulink建模的基础知识Simulink建模与仿真动态系统建模与仿真实例子系统与模块封装技术Simulink自定义功能模块 控制系统综合实践 1 Simulink简介 Simulink是MATLAB4 0版本 1993年 后推出的用以实现动态系统图形化建模与仿真的软件包 并随着MATLAB版本的升级而不断更新 目前MATLAB的最新版本为2010a Simulink的最新版本为V7 5 R2010a 图形化建模是指Simulink提供了一些按功能分类的基本的系统模块 用户只需要知道这些模块的输入 输出及功能 而不必考察其内部实现方式 通过对这些基本模块的调用 再将它们连接起来就可以构成所需的系统模型 mdl 进而进行仿真与分析 用户利用图形化建模方式可以更方便 更直观的实现动态系统的建模与仿真 可以把更多的精力投入到系统模型构建与算法研究 而非编程上 一 什么是Simulink 1 Simulink简介 二 MATLAB产品体系 二 MATLAB产品体系 续 1 Simulink简介 基本数学计算 编程环境 M语言 数据可视化 Guide 二 MATLAB产品体系 续 1 Simulink简介 1 Simulink简介 三 控制相关的工具箱 Toolbox 与模块集 Blocksets ControlSystemToolboxFuzzyLogicToolboxNeuralNetworkToolboxModelPredictiveControlToolboxRobustControlToolboxSystemIdentificationToolboxSimulinkControlDesignSimulinkDesignOptimizationStateflow 1 Simulink简介 四 一个简单的控制系统设计例子 演示 被控对象 控制器 建模 仿真 闭环系统阶跃响应 第一讲基于Simulink的动态系统建模与仿真本讲内容 Simulink简介Simulink建模的基础知识Simulink建模与仿真动态系统建模与仿真实例子系统与模块封装技术Simulink自定义功能模块 控制系统综合实践 2 Simulink建模的基础知识 命令行方式启动工具栏方式启动 一 Simulink启动 在CommandWindow中输入 simulink Simulink图标 2 Simulink建模的基础知识 二 Simulink界面 版本2010a 库窗口 工作窗口 2 Simulink建模的基础知识 三 Simulink的常用模块集 open system simulink 2 Simulink建模的基础知识 三 Simulink的常用模块集 续 CommonlyUsedBlocks常用模块库Sources输入源模块库Sinks接收器模块库Continuous连续模块库Discrete离散模块库Discontinuities非线性模块库SignalRoutes信号路由模块库MathOperations数学模块库Ports Subsystems端口和子系统模块库User definedFunctions用户自定义模块库 2 Simulink建模的基础知识 三 Simulink的常用模块集 续 LogicandBitOperations逻辑与位操作库LookupTables查表操作库ModelVerification模型验证模块库SignalAttributes信号属性模块库AddionalMath Discrete附加数学与离散模块库Model wideUtilities模型应用模块库 2 Simulink建模的基础知识 CommonlyUsedBlocks 常用模块库 将其它模块库中最常用的一些功能模块提取出来以方便用户调用Sources 输入源模块库 ConstantClockInSineWaveStepSignalBuilderSignalGeneratorFromWorkspaceFromFile mat 2 Simulink建模的基础知识 Sinks 接收器模块库 ScopeDisplayXYGraphFloatingScopeOutTerminatorToWorkspaceToFile mat 2 Simulink建模的基础知识 Continuous 连续模块库 Derivative 微分Integrator 积分IntegratorLimited 限幅积分TransferFcn 传递函数模型Zero Pole 零极点传递函数模型State Space 状态空间模型PIDController PID控制器TransportDelay 固定时延模块 2 Simulink建模的基础知识 Discrete 离散模块库 Discrete timeIntegrator 离散积分DiscreteDerivative 离散微分DiscreteFilter 离散滤波器DiscretePIDController 离散PID控制器DiscreteTransferFcn 离散传递函数模型DiscreteZero Pole 离散零极点传递函数模型DiscreteState Space 离散状态空间模型First OrderHold 一阶采样保持器Zero OrderHold 零阶采样保持器UnitDelay 一个采样周期的延时Memory 存储器 2 Simulink建模的基础知识 Discontinuities 非线性模块库 Saturation 饱和输出Baddash 回滞DeadZone 死区 SignalRoutes 信号路由模块库 Mux DemuxBusCreator SelectorFrom GotoSwitchMamualSwitchSelector 2 Simulink建模的基础知识 MathOperations 数学模块库 Abs Sign 绝对值与符号函数add Sum 加减Product Divide 乘除MinMax 最值运算Gain 增益SliderGain 滑动增益MathFunction 数学函数TrigonometricFunction 三角函数复数运算取整运算 2 Simulink建模的基础知识 Ports Subsystems 端口和子系统模块库 User definedFunctions 用户自定义模块库 AtomicSubsystem 原子子系统EnabledSubsystem 使能子系统TriggeredSubsystem 触发子系统Function CallSubsystemIf SwitchCaseActionSubsystemFor WhileIteratorSubsystem Fcn MatlabFcn 自定义函数S Function S函数S FunctionBuilder S函数生成器EmbeddedMatlabFunction 2 Simulink建模的基础知识 四 Simulink的扩展模块集 Bocksets Simulink扩展库 物理系统仿真StateflowSimEventsSimPowerSystemsSimscapeSimDrivelineSimElectronicsSimHydraulicsSimMechanicsSimulink3DAnimation 实时系统与硬件设计SimulinkFixedPointReal TimeWindowsTargetxPCTargetxPCTargetEmbeddedOptionSimulinkHDLCoderSimulinkPLCCoderInstrumentControlToolboxVideoandImageProcessingBlockset 建模与控制系统设计方案AerospaceBlocksetSimulinkControlDesignSimulinkDesignOptimizationRobustControlToolboxNeuralNetworkToolboxFuzzyLogicToolboxSystemIdentificationToolbox 代码生成Real TimeWorkshopReal TimeWorkshopEmbeddedCoderStateflowCoder 第一讲基于Simulink的动态系统建模与仿真本讲内容 Simulink简介Simulink建模的基础知识Simulink建模与仿真动态系统建模与仿真实例子系统与模块封装技术Simulink自定义功能模块 控制系统综合实践 3 Simulink建模与仿真 Simulink建模可归纳为 模型 模块 信号连接Simulink仿真可归纳为 仿真 模型 仿真条件 Simulink 一词中的 Simu 表示仿真 Link 表示连接 即将一系列简单的功能模块按照信号流向和输入输出关系连接起来 即可构建出复杂系统的仿真模型 通过适当的仿真条件设置 即可完成复杂系统动态特性的计算机仿真 使用Simulink的步骤 启动Simulink打开模型编辑窗口 工作窗口 从库窗口中向工作窗口中复制相关模块修改模块参数模块连接设置仿真条件运行仿真分析仿真结果 并修正系统模型重复上述步骤 进行系统优化 3 Simulink建模与仿真 构建系统仿真模型 系统动态特性仿真分析 参考课件 Simulink建模 模块操作将所需模块从模块库中拖入工作窗口中选择模块移动模块改变模块大小旋转与翻转对象改变模块外观 标签 前景 背景 阴影 复制模块删除模块设置模块参数 连接操作连接线段分支线段 Ctrl 左键 移动线段 删除线段分割连接线 Shift 左键 注释线段 模型操作打开与关闭模型保存模型打印与拷贝模型模型属性与注释 3 Simulink建模与仿真 Simulink功能模块的处理 模块库中的模块可以直接用鼠标进行拖曳 选中模块 按住鼠标左键不放 而放到模型窗口中进行处理 在模型窗口中 选中模块 则其4个角会出现黑色标记 此时可以对模块进行以下的基本操作 移动 选中模块 按住鼠标左键将其拖曳到所需的位置即可 若要脱离线而移动 可按住shift键 再进行拖曳 复制 选中模块 然后按住鼠标右键进行拖曳即可复制同样的一个功能模块 删除 选中模块 按Delete键即可 若要删除多个模块 可以同时按住Shift键 再用鼠标选中多个模块 按Delete键即可 也可以用鼠标选取某区域 再按Delete键就可以把该区域中的所有模块和线等全部删除 功能模块的基本操作 包括模块的移动 复制 删除 转向 改变大小 模块命名 颜色设定 参数设定 属性设定 模块输入输出信号等 转向 为了能够顺序连接功能模块的输入和输出端 功能模块有时需要转向 在菜单Format中选择FlipBlock旋转180度 选择RotateBlock顺时针旋转90度 或者直接按Ctrl F键执行FlipBlock 按Ctrl R键执行RotateBlock 改变大小 选中模块 对模块出现的4个黑色标记进行拖曳即可 模块命名 先用鼠标在需要更改的名称上单击一下 然后直接更改即可 名称在功能模块上的位置也可以变换180度 可以用Format菜单中的FlipName来实现 也可以直接通过鼠标进行拖曳 HideName可以隐藏模块名称 颜色设定 Format菜单中的ForegroundColor可以改变模块的前景颜色 BackgroundColor可以改变模块的背景颜色 而模型窗口的颜色可以通过ScreenColor来改变 Simulink功能模块的处理 参数设定 用鼠标双击模块 就可以进入模块的参数设定窗口 从而对模块进行参数设定 参数设定窗口包含了该模块的基本功能帮助 为获得更详尽的帮助 可以点击其上的help按钮 通过对模块的参数设定 就可以获得需要的功能模块 属性设定 选中模块 打开Edit菜单的BlockProperties可以对模块进行属性设定 包括Description属性 Priority优先级属性 Tag属性 Openfunction属性 Attributesformatstring属性 其中Openfunction属性是一个很有用的属性 通过它指定一个函数名 则当该模块被双击之后 Simulink就会调用该函数执行 这种函数在MATLAB中称为回调函数 模块的输入输出信号 模块处理的信号包括标量信号和向量信号 标量信号是一种单一信号 而向量信号为一种复合信号 是多个信号的集合 它对应着系统中几条连线的合成 缺省情况下 大多数模块的输出都为标量信号 对于输入信号 模块都具有一种 智能 的识别功能 能自动进行匹配 某些模块通过对参数的设定 可以使模块输出向量信号 Simulink功能模块的处理 Simulink线的处理 改变粗细 线所以有粗细是因为线引出的信号可以是标量信号或向量信号 当选中Format菜单下的WideVectorLines时 线的粗细会根据线所引出的信号是标量还是向量而改变 如果信号为标量则为细线 若为向量则为粗线 选中VectorLineWidths则可以显示出向量引出线的宽度 即向量信号由多少个单一信号合成 设定标签 只要在线上双击鼠标 即可输入该线的说明标签 也可以通过选中线 然后打开Edit菜单下的SignalProperties进行设定 其中signalname属性的作用是标明信号的名称 设置这个名称反映在模型上的直接效果就是与该信号有关的端口相连的所有直线附近都会出现写有信号名称的标签 线的折弯 按住Shift键 再用鼠标在要折弯的线处单击一下 就会出现圆圈 表示折点 利用折点就可以改变线的形状 线的分支 按住鼠标右键 在需要分支的地方拉出即可以 或者按住Ctrl键 并在要建立分支的地方用鼠标拉出即可 Simulink模型的构建是通过用线将各种功能模块进行连接而构成的 用鼠标可以在功能模块的输入与输出端之间直接连线 所画的线可以改变粗细 设定标签 也可以把线折弯 分支 3 Simulink建模与仿真 常规显示 模型显示 信号类型 3 Simulink建模与仿真 常规显示 模型显示 采样类型 1 Simulink仿真参数设置选取菜单Simulation ConfigurationParameters 弹出 ConfigurationParameters 对话框 设置仿真参数 然后按 OK 即可 说明 若不设置仿真参数 则采用Simulink缺省设置 3 Simulink建模与仿真 Simulink仿真 求解器设置 Solver页 Simulationtime 仿真时间Starttime 仿真开始时间Stoptime 仿真终止时间Solveroptions 求解器选项Type 定步长或变步长Solver 求解器算法关于步长的设置关于误差容限的设置TaskingandsampletimeoptionsZero crossingoptions 1 Simulink仿真参数设置 Solveroptions 仿真算法选择 分为定步长算法和变步长算法两类 定步长支持的算法可在Fixedstepsize编辑框中指定步长或选择auto 由计算机自动确定步长 离散系统一般默认地选择定步长算法 在实时控制中则必须选用定步长算法 变步长支持的算法如图所示 对于连续系统仿真一般选择ode45 步长范围使用auto项 1 Simulink仿真参数设置 变步长算法 定步长算法 ErrorTolerance 误差容限 算法的误差是指当前状态值与当前状态估计值的差值 分为Relativetolerance 相对容限 和Absolutetolerance 绝对容限 通常可选auto 变步长模式解法器有 ode45 ode23 ode113 ode15s ode23s ode23t ode23tb和discrete ode45 缺省值 四 五阶龙格 库塔法 适用于大多数连续或离散系统 但不适用于刚性 stiff 系统 它是单步解法器 也就是 在计算y tn 时 它仅需要最近处理时刻的结果y tn 1 一般来说 面对一个仿真问题最好是首先试试ode45 ode23 二 三阶龙格 库塔法 它在误差限要求不高和求解的问题不太难的情况下 可能会比ode45更有效 也是一个单步解法器 ode113 是一种阶数可变的解法器 它在误差容许要求严格的情况下通常比ode45有效 ode113是一种多步解法器 也就是在计算当前时刻输出时 它需要以前多个时刻的解 1 Simulink仿真参数设置 ode15s 是一种基于数字微分公式的解法器 NDFs 也是一种多步解法器 适用于刚性系统 当用户估计要解决的问题是比较困难的 或者不能使用ode45 或者即使使用效果也不好 就可以用ode15s ode23s 它是一种单步解法器 专门应用于刚性系统 在弱误差允许下的效果好于ode15s 它能解决某些ode15s所不能有效解决的stiff问题 ode23t 是梯形规则的一种自由插值实现 这种解法器适用于求解适度stiff的问题而用户又需要一个无数字振荡的解法器的情况 ode23tb 是TR BDF2的一种实现 TR BDF2是具有两个阶段的隐式龙格 库塔公式 discrtet 当Simulink检查到模型没有连续状态时使用它 1 Simulink仿真参数设置 固定步长模式解法器有 ode5 ode4 ode3 ode2 ode1和discrete ode5 缺省值 是ode45的固定步长版本 适用于大多数连续或离散系统 不适用于刚性系统 ode4 四阶龙格 库塔法 具有一定的计算精度 ode3 固定步长的二 三阶龙格 库塔法 ode2 改进的欧拉法 ode1 欧拉法 discrete 是一个实现积分的固定步长解法器 它适合于离散无连续状态的系统 1 Simulink仿真参数设置 步长参数 对于变步长模式 用户可以设置最大的和推荐的初始步长参数 缺省情况下 步长自动地确定 它由值auto表示 Maximumstepsize 最大步长参数 它决定了解法器能够使用的最大时间步长 它的缺省值为 仿真时间 50 即整个仿真过程中至少取50个取样点 但这样的取法对于仿真时间较长的系统则可能带来取样点过于稀疏 而使仿真结果失真 一般建议对于仿真时间不超过15s的采用默认值即可 对于超过15s的每秒至少保证5个采样点 对于超过100s的 每秒至少保证3个采样点 Initialstepsize 初始步长参数 一般建议使用 auto 默认值即可 仿真精度的定义 对于变步长模式 Relativetolerance 相对误差 它是指误差相对于状态的值 是一个百分比 缺省值为1e 3 表示状态的计算值要精确到0 1 Absolutetolerance 绝对误差 表示误差值的门限 或者是说在状态值为零的情况下 可以接受的误差 如果它被设成了auto 那么simulink为每一个状态设置初始绝对误差为1e 6 1 Simulink仿真参数设置 Mode 固定步长模式选择 Multitasking 选择这种模式时 当simulink检测到模块间非法的采样速率转换 它会给出错误提示 所谓的非法采样速率转换指两个工作在不同采样速率的模块之间的直接连接 在实时多任务系统中 如果任务之间存在非法采样速率转换 那么就有可能出现一个模块的输出在另一个模块需要时却无法利用的情况 通过检查这种转换 Multitasking将有助于用户建立一个符合现实的多任务系统的有效模型 使用速率转换模块可以减少模型中的非法速率转换 Simulink提供了两个这样的模块 unitdelay模块和zero orderhold模块 对于从慢速率到快速率的非法转换 可以在慢输出端口和快输入端口插入一个单位延时unitdelay模块 而对于快速率到慢速率的转换 则可以插入一个零阶采样保持器zero orderhold Singletasking 这种模式不检查模块间的速率转换 它在建立单任务系统模型时非常有用 在这种系统就不存在任务同步问题 Auto 这种模式 simulink会根据模型中模块的采样速率是否一致 自动决定切换到multitasking和singletasking 1 Simulink仿真参数设置 Loadfromworkspace勾选相应项表明从工作空间获得输入或初始状态 若勾选Input 则工作空间提供矩阵形式输入 即输入矩阵的第一列是升序时间向量 其余列对应不同的输入信号 Savetoworkspace勾选相应项表明将相应参数按照指定名称 格式和存储方式存入工作空间 SaveOptions 存储选项指定数据存储的方式与格式 可选数组 结构体 包含时间数据的结构体 数据I O设置 DataImport Export页 1 Simulink仿真参数设置 t 0 0 1 10 u cos t sin t 如在指令窗中输入 且在模型窗中的模型为 数据I O设置 DataImport Export页 1 Simulink仿真参数设置 输出选项 OutputOptions Refineoutput 精细输出选项 在仿真输出太稀松时 simulink会产生额外的精细输出 类似插值处理 可在refinefactor设置仿真时间步间插入的输出点数 要产生更光滑的输出曲线 改变精细因子比减小仿真步长更有效 该选项出只能在变步长模式中使用 并且在ode45效果最好 Produceadditionaloutput 允许用户直接指定产生输出的时间点 选择该项后 则出现一个outputtimes编辑框 在这里用户指定额外的仿真输出点 它既可以是一个时间向量 也可以是表达式 与精细因子相比 这个选项会改变仿真的步长 Producespecifiedoutputonly simulink只在指定的时间点上产生输出 为此解法器要调整仿真步长以使之和指定的时间点重合 这个选项在比较不同的仿真时可以确保它们在相同的时间输出 1 Simulink仿真参数设置 此页仿真选项和配置选项分成两个部分 配置选项下的列表框主要列举了一些常见的事件类型 以及当Simulink检查到这些事件时给予的处理 仿真选项options主要包括是否进行一致性检验 是否禁用过零检测 是否禁止复用缓存 是否进行不同版本的Simulink的检验等几项 诊断选项设置 Diagnostics页 1 Simulink仿真参数设置 Solver SampleTime 2 Simulink模型窗口运行模式打开Simulink仿真模型窗口 或打开指定的 mdl文件 设置仿真参数 3 Simulink建模与仿真 仿真运行和终止 在模型窗口选取菜单 Simulation Start 仿真开始 至设置的仿真终止时间 仿真结束 若在仿真过程中要中止仿真 可选择 Simulation Stop 菜单 也可直接点击模型窗口中的 或 启动 或停止 仿真 3 MATLAB命令窗口下的仿真运行在Matlab命令窗口下可直接运行一个已存在的Simulink模型 t x y sim model timespan option ut 其中 t为返回的仿真时间向量 x为返回的状态矩阵 y为返回的输出矩阵 model为系统Simulink模型文件名 timespan为仿真时间 形式为 totf option为仿真参数选择项 由simset设置 ut为选择外部产生输入 ut T u1 u2 un 说明 上述参数中 若省略timespan option ut 则默认取框图模型的ConfigurationParameters对话框中设置的仿真参数 3 Simulink建模与仿真 Option simset 参数1 参数值1 参数2 参数值2 simset定义了仿真参数 包括以下一些主要参数 AbsTol 默认值为1e 6设定绝对误差范围 Decimation 默认值为1 决定隔多少个点返回状态和输出值 Solver 解法器的选择 MaxRows 默认值为0 表示不限制 若为大于零的值 则表示限制输出和状态的规模 使其最大行数等于该数值 InitialState 一个向量值 用于设定初始状态 FixedStep 用一个正数表示步阶的大小 仅用于固定步长模式 MaxStep 默认为auto 用于变步长模式 表示最大步阶大小 若知道模型文件名称 可以用以下命令得到该模型的仿真参数 simget 模型文件名 3 Simulink建模与仿真 提问 什么情况下需要用命令行方式执行Simulink仿真 3 Simulink建模与仿真 在同一模型结构下 需要比较不同模型参数需要考察不同输入条件需要比较不同初始状态需要考察不同仿真条件 4 Simulink仿真结果的分析 使用Sinks库的数据显示模块来观察输出将数据输出到Workspace中 利用Matlab命令进行分析将数据存储到文件中 使用时用load指令调入Workspace中 再利用Matlab进行后处理 3 Simulink建模与仿真 使用Sinks库的数据显示模块来观察输出Scope FloatingScope示波器Display将数据以数字形式显示出来XYgraph绘制二维图形 3 Simulink建模与仿真 将数据输出到Workspace中 利用Matlab命令进行分析使用Sink库中的ToWorkspace模块使用Scope FloatingScope 设置Parameters DataHistory使用Sink库中的Out模块 设置ConfigurationParameters DataImportExport页中的Output项时间数据用clock模块获得 将其数据用上述方式引出 3 Simulink建模与仿真 使用Sink库中ToFile模块将数据存储到文件中 或用save指令将仿真后存到Workspace中的数据存储到文件中 使用时用load指令调入Workspace中 再利用Matlab命令后处理 3 Simulink建模与仿真 save filename mat load filename mat 第一讲基于Simulink的动态系统建模与仿真本讲内容 Simulink简介Simulink建模的基础知识Simulink建模与仿真动态系统建模与仿真实例子系统与模块封装技术Simulink自定义功能模块 控制系统综合实践 例1 图中给出的是一个典型非线性反馈系统框图 其中控制器为PI控制器 其模型为 4 动态系统建模与仿真实例 Example 01 mdl 例2 非线性微分方程的框图求解考虑方程 其数学表达式为 4 动态系统建模与仿真实例 Example 02x mdl 这样用下面的语句就可以绘制出各个状态变量的时间响应曲线 如图 Example 02xx mdl 4 动态系统建模与仿真实例 例3 计算机控制系统的仿真下图所示的是经典的计算机控制系统模型 其中 控制器D z 是离散模型 采样周期为T秒 ZOH为零阶保持器 而受控对象模型G s 为连续模型 假设受控对象和控制器都已经给定 其中 对这样的系统来说 直接写成微分方程形式再进行仿真的方法是不可行的 因为其中既有连续环节 又有离散环节 不可能直接写出系统的微分方程模型 4 动态系统建模与仿真实例 解决这样的系统仿真问题也是Simulink的强项 由给出的控制系统框图 可以容易地绘制出系统的Simulink仿真框图 如下图所示 4 动态系统建模与仿真实例 Example 03 mdl 4 动态系统建模与仿真实例 例4 时变系统的仿真 4 动态系统建模与仿真实例 Example 04 mdl 4 动态系统建模与仿真实例 例5 多采样速率系统的仿真 4 动态系统建模与仿真实例 Simulink仿真框图如下 4 动态系统建模与仿真实例 Example 05 mdl 第一讲基于Simulink的动态系统建模与仿真本讲内容 Simulink简介Simulink建模的基础知识Simulink建模与仿真动态系统建模与仿真实例子系统与模块封装技术Simulink自定义功能模块 控制系统综合实践 5 子系统与模块封装技术 层次化建模的基本思想子系统概念及构成方法模块封装方法模块集构造 5 子系统与模块封装技术 自顶向下设计建模时将整个系统划分为若干个功能模块 并且明确各模块之间的信号接口与连接关系 随着建模的深入 逐步细化各个子模块 最终完成设计 自顶向下设计有助于我们把握系统的宏观构架和逻辑关系 而不至于一开始就拘泥于细节 自底向上设计建模时就从细节入手 整个系统的每个部分都是确切的可实现的 建模完成后 为了使模型结构更加简洁 按照功能将某些模块进行封装 从而形成一个层次化的模型 比较适合对象各子模块功能化分不太明确的建模 双向设计建模时兼具自顶向下设计与自底向上设计的特点 层次化建模的基本思想 5 子系统与模块封装技术 自顶向下设计 原子子系统触发子系统使能子系统触发使能子系统条件子系统 if Switch 迭代子系统 for while 函数调用子系统S FunctionFcnEmbeddedMATLABFunction 5 子系统与模块封装技术 例6 触发子系统示例 上升沿触发 下降沿触发 双边触发 Example 06 mdl 应用 触发子系统应用的一个示例 触发器设为下降沿触发 正弦输入经触发控制后 成为阶梯波 如图所示 系统仅在脉冲信号的下降沿导通 并保持导通时刻的输入值至下一个脉冲下降沿 5 子系统与模块封装技术 5 子系统与模块封装技术 例7 使能子系统示例 Example 07 mdl 应用 积分分离式PID控制器 这种PID控制器可以让控制器中的积分项在系统响应进入稳态时投入运行 以提高稳态精度 而在系统响应处于瞬态过程时 将积分项断开以改善系统动态响应质量 积分分离式PID控制器建立如图所示 使能模块的控制信号为delta与abs e 的差值 delta为一很小的正数 当偏差e的绝对值小于delta时 控制器的积分项才投入使用 从而实现了控制器中的积分项的分离控制 5 子系统与模块封装技术 5 子系统与模块封装技术 例8 触发使能子系统示例 Example 08 mdl 在建立的Simulink系统模型比较大或很复杂时 可将一些模块组合成子系统 这样可使模型得到简化 便于连线 可提高效率 便于调试 可生成层次化的模型图表 用户可采取自上而下或自下而上的设计方法 将一个创建好的子系统进行封装 也就是使子系统象一个模块一样 例如可以有自己的参数设置对话框 自己的模块图标等 这样就使子系统使用起来非常方便 5 子系统与模块封装技术 自底向上设计 子系统创建与封装 5 子系统与模块封装技术 创建子系统框选需要被打包成一个子系统的所有模块 可采用如下三种方式创建子系统 a 点击鼠标右键 在弹出的快捷菜单中选择 CreateSubsystem 选项 b 点击Edit菜单中的 CreateSubsystem 选项 c 快捷键Ctrl G新生成的子系统会代替选中的所有模块 双击该子系统 则在新的窗口中打开该子系统 子系统的输入端口用In模块表示 输出端口用Out模块表示 子系统可以建立自己的参数设置对话框 以避免对子系统内每个模块分别进行参数设置 因此在子系统建立好以后可对其进行封装 子系统封装的基本步骤如下 设置好子系统中各模块的参数变量 定义提示对话框及其特性 定义被封装子系统的描述和帮助文档 定义产生模块图标的命令 5 子系统与模块封装技术 子系统封装 5 子系统与模块封装技术 子系统封装若想封装一个用户自建模型 首先应该用建立子系统的方式将其转化为子系统模块 选中该子系统模块的图标 可采用如下三种方式封装子系统 a 选择Edit MashSubsystem菜单项 b 点击鼠标右键 在弹出的快捷菜单中选择MashSubsystem选项 c 快捷键Ctrl M则可弹出下图所示的模块封装编辑界面 5 子系统与模块封装技术 子系统封装 四个设置页面Icon PortsParametersInitializationDocumention PID控制器传递函数 5 子系统与模块封装技术 例9 PID控制器设计与封装 建模 5 子系统与模块封装技术 1 Icon标签页 此页最重要的部分是DrawingCommands 在该区域内可以用disp指令设定功能模块的文字名称 用plot指令画线 用dpoly指令画转换函数 注意 尽管这些命令在名字上和以前讲的MATLAB函数相同 但它们在功能上却不完全相同 因此不能随便套用以前所讲的格式 disp text 可以在功能模块上显示设定的文字内容 disp text1 ntext2 分行显示文字text1和text2plot x1x2 xn y1y2 yn 指令会在功能模块上画出由 x1y1 经 x2y2 经 x3y3 直到 xn yn 为止的直线 功能模块的左下角会根据目前的坐标刻度被正规化为 0 0 右上角则会依据目前的坐标刻度被正规化为 1 1 dpoly num den 按s次数的降幂排序 在功能模块上显示连续的传递函数 dpoly num den z 按z次数的降幂排序 在功能模块上显示离散的传递函数 5 子系统与模块封装技术 用户还可以设置一些参数来控制图标的属性 这些属性在Icon页右下端的下拉式列表中进行选择 Iconframe Visible显示外框线 Invisible 隐藏外框线 IconTransparency Opaque隐藏输入输出的标签 Transparent 显示输入输出的标签 IconRotation 旋转模块 Drawingcoordinate 画图时的坐标系 5 子系统与模块封装技术 2 Parameters标签页 此页主要用来设计输入提示 prompt 以及对应的变量名称 variable 在prompt栏上输入变量的含义 其内容会显示在输入提示中 而variable是仿真要用到的变量 该变量的值一直存于maskworkspace中 因此可以与其他程序相互传递 如果配合在initializationcommands内编辑程序 可以发挥功能模块的功能来执行特定的操作 在prompt编辑框中输入文字 这些文字就会出现在prompt列表中 在variable列表中输入变量名称 则prompt中的文字对应该变量的说明 如果要增加新的项目 可以点击边上的Add键 Up和Down按钮用于执行项目间的位置调整 Controltype列表给用户提供选择设计的编辑区 选择Edit会出现供输入的空白区域 所输入的值代表对应的variable Popup则为用户提供可选择的列表框 所选的值代表variable 此时在下面会出现Popupstrings输入框 用来设计选择的内容 各值之间用逻辑或符号 隔开 如选择Checkbox则用于on与off的选择设定 5 子系统与模块封装技术 Add Delete Up Down 提示符 变量名 直接输入变量名 变量的类型为数值 变量的数值可在线调节 5 子系统与模块封装技术 2 Parameters标签页 Assignment属性用于配合Controltype的不同选择来提供不同的变量值 变量值有Evaluate和Literal两种 其含义如下 5 子系统与模块封装技术 3 Documentation标签页 此页主要用来针对完成的功能模块来编写相应的说明文字和Help 在Blockdescription中输入的文字 会出现在参数窗口的说明部分 在Blockhelp中输入的文字则会显示在单击参数窗口中的help按钮后浏览器所加载的HTML文件中 Masktype 在此处输入的文字作为封装模块的标注性说明 在模型窗口下 将鼠标指向模块 则会显示该文字 当然必须先在View菜单中选择BlockDataTips ShowBlockDataTips 5 子系统与模块封装技术 双击鼠标左键 或点击鼠标右键 在弹出的快捷菜单中选择MaskParameters 可以进行参数设置点击鼠标右键 在弹出的快捷菜单中选择EditMask 可以重新编辑该封装 点击鼠标右键 在弹出的快捷菜单中选择LookUnderMask 可以打开该子系统 5 子系统与模块封装技术 模块库构造 5 子系统与模块封装技术 模块库是指具有某种属性的一类模块的集合 除了Simulink自带的大量模块库外 Simulink还允许用户自己开发模块 并建立自己的模块库 从而实现对自定义模块的有效管理 自定义模块库的使用方法和Simulink自带模块库的使用完全一样 模块库 某一类模块的集合库模块 模块库中的模块引用块 模型中调用的模块库中的模块关联 引用块与对应模块库中的模块建立关联 以便引用块发生改变时 库模块会自动进行相应的更新 模块库构造 5 子系统与模块封装技术 选择File New Library 建立一个模块库空白窗口将需要的模块 库模块或自定义模块 拖入或拷贝到该窗口保存该模块库若要在Simulink模块浏览器中显示该自定义模块库 须在该目录中建立名为slblocks m的文件 可从其它模块库目录下复制该文件到用户自定义模块库所在目录下 并修改以下内容 blkStruct Name MyLibrary 标识名blkStruct OpenFcn My Library 指定为模块库文件名Browser 1 Library My Library 指定为模块库文件名Browser 1 Name MyLibrayTest 浏览器中显示的名称 第一讲基于Simulink的动态系统建模与仿真本讲内容 Simulink简介Simulink建模的基础知识Simulink建模与仿真动态系统建模与仿真实例子系统与模块封装技术Simulink自定义功能模块 控制系统综合实践 FcnMATLABFcnEmbeddedMATLABFunctionS FunctionS FunctionBuilder 6 Simulink自定义功能模块 MATLABFcn Fcn EmbeddedMATLABFunction 6 Simulink自定义功能模块 S Function S FunctionBuilder 标签页InitializationDataPropertiesLibrariesOutputsContinuousDerivativesDiscreteUpdateBuildInfo 6 Simulink自定义功能模块 s function设计 s function是一个动态系统的计算机语言描述 在MATLAB里 用户可以选择用m文件编写 也可以用c C Fortran文件编写 S function提供了扩展Simulink模块库的有力工具 它采用一种特定的调用语法 使函数和Simulink解法器进行交互 S function最广泛的用途是定制用户自己的Simulink模块 它的形式十分通用 能够支持连续系统 离散系统和混合系统 6 Simulink自定义功能模块 6 Simulink自定义功能模块 6 Simulink自定义功能模块 s function的调用过程 M语言S 函数举例 6 Simulink自定义功能模块 例 微分跟踪器的离散形式为 6 Simulink自定义功能模块 6 Simulink自定义功能模块 取参数 r 30 h 0 01 T 0 001输入信号取正弦信号仿真算法为定步长 步长为0 001 sys x0 str test sfun1 t x u flag r h T 由于系统的输出可以由状态直接计算出 不涉及输入信号u t 所以初始化中DirectFeedthrough应设为0 此外 r h T应设为该模块的附加参数 6 Simulink自定义功能模块 s function的函数接口 输入和输出参量说明S function默认的4个输入参数为t x u和flag 它们的次序不能变动 代表的意义分别为 t 代表当前的仿真时间 这个输入参数通常用于决定下一个采样时刻 或者在多采样速率系统中 用来区分不同的采样时刻点 并据此进行不同的处理 x 表示状态向量 这个参数是必须的 甚至在系统中不存在状态时也是如此 它具有很灵活的运用 u 表示输入向量 flag 是一个控制在每一个仿真阶段调用哪一个子函数的参数 由Simulink在调用时自动取值 6 Simulink自定义功能模块 S function默认的4个返回参数为sys x0 str和ts 它们的次序不能变动 代表的意义分别为 sys 是一个通用的返回参数 它所返回值的意义取决于flag的值 x0 是初始的状态值 没有状态时是一个空矩阵 这个返回参数只在flag值为0时才有效 其他时候都会被忽略 str 这个参数没有什么意义 是MathWorks公司为将来的应用保留的 m文件s function必须把它设为空矩阵 ts 是一个m 2的矩阵 它的两列分别表示采样时间间隔和偏移 6 Simulink自定义功能模块 建立m文件s function 使用模板文件 sfuntmp1 m 该模板文件位于MATLAB根目录下toolbox simulink blocks目录下 模板文件里s function的结构十分简单 它只为不同的flag的值指定要相应调用的m文件子函数 比如当fla
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 波峰焊培训课件
- 2024山东工程职业技术大学单招《语文》考试彩蛋押题含答案详解(培优)
- 幼儿园教案集书写培训
- 2024-2025学年度广西蓝天航空职业学院单招《物理》模拟试题附完整答案详解【易错题】
- 产品项目培训课件模板
- 2024年连云港市海州区国有企业招聘考试真题
- 2024年德江县县直机关事业单位考调笔试真题
- 光伏电站危险源辨识培训
- 数字媒体艺术设计专业教学标准(高等职业教育专科)2025修订
- 新员工设备培训
- 断绝子女关系协议书模板(5篇)
- 成都小升初数学分班考试试卷五
- Q∕SY 01007-2016 油气田用压力容器监督检查技术规范
- 赤水市辖区内枫溪河(风溪河)、宝沅河(宝源河)、丙安河
- 水利水电 流体力学 外文文献 外文翻译 英文文献 混凝土重力坝基础流体力学行为分析
- 零星维修工程项目施工方案
- 物流公司超载超限整改报告
- 起重机安装施工记录表
- 江苏省高中学生学籍卡
- 碳排放问题的研究--数学建模论文
- 赢越酒会讲解示范
评论
0/150
提交评论