您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 制造加工工艺 > 基于模型的设计——MCU篇
第二章Simulink建模与调试Simulink是动态和嵌入式等系统的建模与仿真工具,也是基于模型设计的基础。对于机电、航空航天、信号处理、自动控制、通讯、音视频处理等众多领域,Simulink提供了交互式的可视化开发环境和可定制的模块库,对系统进行建模、仿真与调试等。并可实现与Stateflow有限状态机的无缝连接,扩展对复杂系统的建模能力。通过Simulin模块库自带的1000多个预定义模块,基本上可快速地创建基于MCU器件应用的系统模型。运用层次化建模、数据管理,子系统定制等手段,即使是复杂的嵌入式MCU应用系统,也能轻松完成简明精确的模型描述。大量使用EmbeddedMATLAB来创建用户自己的算法模块,可大大加快建模速度。读者在后面的内容中,会经常看到用EmbeddedMATLAB创建的算法模块,加快MCU器件开发的实例。模型是基于模型设计的起点,同时也最核心的东西。本章将以基于PID控制的直流电机的物理建模与调试为例来介绍Simulink,更详细的内容请读者参考MathWorks公司相关内容的用户手册。Simulink的主要特点如下:众多可扩展的模块库利用图形编辑器来组合和管理模块图以系统功能来划分模型,实现对复杂系统的管理利用模型浏览器(ModelExplorer)寻找、创建、配置模型组件的参数与属性利用API实现与其他仿真程序的连接或集成用户代码用图形化的调试器和剖析器来检查仿真结果,评估模型的性能指标在MATLAB命令窗口中,可对仿真结果进行分析与可视化,自定义模型环境、信号参数和测试数据利用模型分析和诊断工具来确保模型的一致性,定位模型中的错误本章主要内容有:Simulink基本操作搭建直流电机模型Simulink模型调试2.1Simulink基本操作2.1.1模块库和编辑窗口打开模型库浏览器在matlab的命令窗口中输入“simulink”指令或单击matlab工具栏上的“simulink”图标就可以打开模型库浏览器。如图2.1.1所示:图2.1.1模型库浏览器打开模型编辑窗口要建立一个新的模型,首先要打开一个模型编辑窗口。可以通过点击模块库浏览器上的NEWModel按钮,或File→NEW→Model来打开窗口,如图2.1.2所示。图2.1.2打开模型编辑窗口2.1.2Simulink模块库Simulink模块库是建立模型的基础,其中囊括了大量的基本功能模块,只有当用户熟练的掌握了模块库,才能快速、高效的建立模型。从图2.1.1所示的模型库浏览器可知,在Simulink模块库中包含有以下子模块库,如表2.1.1所示:表2.1.1模块库列表常用模块(commonlyusedblock)连续模块(continuous)非连续模块(discontinuous)离散模块(discrete)逻辑和位操作模块(logicandbitoperations)查找表模块(lookuptables)数学运算模块(mathoperations)模型验证模块(modelverification)模型实用模块(model-wideutilities)端口与子系统模块(ports&subsystems)信号属性模块(signalattributes)信号路由模块(signalrouting)接收器模块(sinks)源模块(sources)用户自定义模块(user-definedfunctions)附加操作模块(additionalmath&discrete)下面将详细介绍几种使用频率较高的模块库。1.常用模块库(commonlyusedblock)常用模块库中的模块是simulink所有模块库中使用频率最高模块的合集,主要是为了方便用户以最快的速度建立模型。常用模块包含如图2.1.3所示的成员,模块功能如表2.1.2所示:图2.1.3常用模块库表2.1.2常用模块库列表名称功能名称功能BusCreator生成总线BusSelector分离总线Constant常量信号DataTypeConversion转换数据类型Demux抽取向量信号中的元素并输出Discrete-TimeIntegrator时间离散积分Gain放大器Ground接地Inport产生输入口Integrator,IntegratorLimited信号积分LogicalOperator逻辑运算Mux将输入信号合成为向量Outport产生输出口Product标量和非标量乘除或矩阵乘法和转置RealationalOperator对输入做关系运算Saturation饱和ScopeandFloatingScope显示仿真信号Subsystem,AtomicSubsystem,NonvitualSubsystem,CodeReuseSubsystem以子系统表示其他系统Sum,Add,Subtract,SumofElements加或减Switch通过第二个输入值来输出第一或第二个输入。Terminator终止未连接的输出口UnitDelay延迟一个采样周期2.连续模块库(continuous)连续模块库中的模块如2.1.4图所示,它包含了搭建连续系统所涉及到的绝大部分模块,这些模块的功能如2.1.3表所示:图2.1.4连续模块库表2.1.3连续模块库列表名称功能名称功能Derivative微分Integrator积分IntegratorLimited有限积分Integrator2nd-order二阶积分Integrator2nd-orderLimited二阶有限积分PIDController比例微积分控制器PIDController(2DOF)双自由度比例微积分控制器State-Space状态空间TransferFcn传递函数TransportDelay时间延迟VariableTimeDelay可变时间延迟VariableTransportDelay可变时间延迟Zero-Pole零极点结合本书是讲述基于模型设计的思想开发MCU器件,本章将以Simulink在控制电机中的应用为例,介绍Simulink的建模与调试技术。这里值得一提的是PID控制模块。PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。它是在较新版本的Simulink中才新增并逐步完善的一个模块,R2010b版已经具备自动调节功能。具体原理和使用将在后面分析。3.离散模块库(discontinuous)离散模块在涉及数字信号系统中被广泛使用,基于这种考虑,mathworks公司单独列出了离散系统模块库。离散模块库中的模块和其功能如2.1.5图所列:图2.1.5离散模块库其中常用模块的功能如表2.1.4所示:表2.1.4离散模块库列表名称功能名称功能Difference差分DiscreteDerivative离散微分方程DiscreteFIRFilter离散FIR滤波器DiscreteFilter离散滤波器DiscretePIDController离散PID控制器DiscretePIDController(2DOF)离散双自由度PID控制器DiscreteState-Space离散状态空间DiscreteTransferFcn离散传递函数DiscreteZero-Pole离散零极点DiscreteTimeIntegrator离散时间积分1st-orderHold一阶保持器IntegerDelay采样保持Memory记忆TappedDelay采样周期延迟TransferFcn1st-order一阶传递函数TransferFcnLeadorLag传递函数(超前或延迟)TransferFcnRealZero传递函数(有零点无极点)UnitDelay单位延迟Zero-OrderHold零阶保持器4.数学运算模块库(mathoperations)数学运算模块将很多数学运算封装成模块的形式,使数学运算操作大大简化,减少了很多程序设计上的繁琐过程。此模块库所包含的模块如图2.1.6所示:图2.1.6数学运算模块库其中常用模块的功能如表2.1.5所示:表2.1.5数学运算模块库列表名称功能名称功能Sum对输入求代数和RoundingFunction取整Gain常量增益MinMax求最值SliderGain可用滑动条改变的增益TrigonometricFunction三角函数Product对输入求积或商AlgebraicConstraint强制驶入信号为0DotProduct点积ComplextoMagnitude-Angle复数的幅值相角Sign取输入的正负符号Magnitude-AngletoComplex根据幅值相角得到复数Abs绝对值(模)ComplextoReal-Imag复数的实部虚部MathFunction数学运算函数Real-Imagtocomplex由实部虚部求复数5.信号源模块库(signalattributes)信号源模块库如2.1.7图所示:图2.1.7信号源模块库其中常用模块的功能如表2.1.6所示:表2.1.6信号源模块库列表名称功能名称功能Band-LimitedWhiteNoise限带白噪声ChirpSignal频率变化的正弦信号Clock时钟信号Constant常数CounterLimited受限计数器DigitalClock数字时钟EnumeratedConstant枚举常数FromFile从文件读数据FromWorkSpace从工作空间读数据Ground接地Inport输入接口PulseGenerator脉冲发生器Ramp线性增或减的信号RandomNumber随机数RepeatingSequence重复系列RepeatingSequenceInterpolated重复序列插值RepeatingSequenceStair阶梯状重复序列SignalBuilder产生分段线性的可交替信号SignalGenerator信号发生器SineWave正弦信号Step阶跃信号UniformRandomNumber平均分布的随机信号6.信号接收模块库(sinks)信号接收模块库如图2.1.8所示:图2.1.8信号接收模块库其中常用模块的功能如表2.1.7所示:表2.1.7信号接收模块库列表名称功能名称功能Display显示输入值Output输出端口ScopeandFloatingScope显示仿真信号StopSimulation非零时停止仿真Terminator终止输出信号ToFile输出到文件ToWorkSpace输出到工作空间XYGragh作图7.用户自定义模块库(user-definedfunctions)用户自定义模块库如图2.1.9所示:图2.1.9用户自定义模块库其中常用模块的功能如表2.1.8所示:表2.1.8用户自定义模块库列表名称功能名称功能EmbeddedMATLABFunction嵌入式MATLAB函数Fcn各种函数组合Level-2M-FileS-Function二级M文件S函数MATLABFcn使用MATLAB函数作为输入S-FunctionS函数S-FunctionBuilderS函数构造器2.1.3模块的基本操作1.模块的查找在模块库页面的左侧以树形结构显示了一系列的子库,如连续模块库,离散模块库,数学运算模块库,当用户对这些模块比较熟悉以后,可以非常方便、快捷的找到自己需要的模块。如果是刚刚接触Simulink的用户,这里还提供了查找功能,方便不熟悉它的人使用。如图2.1.10所示:图2.1.10模块查找当用户找到自己所需要的模块后,就要把它复制到模型编辑窗口中以便进行下一步的操作。这里可以直接把模块拖拽到编辑窗口中完成复制,也可以右键单击,在弹出菜单中选择“Addtonewmodel”,如图2.1.11所示。图2.1.11添加模块2.模块的选定模块被加入到编辑窗口以后,要通过选定模块才能对其进行操作。选定单个模块可以直接用鼠标左键单击目标模块;也可以按下鼠标任意键拖动,此时会出现一个虚线框,当虚线框包围了目标模块时放
本文标题:基于模型的设计——MCU篇
链接地址:https://www.777doc.com/doc-5879428 .html