基于模型的设计——MCU篇Word文档下载推荐.docx

上传人:wj 文档编号:730648 上传时间:2023-04-29 格式:DOCX 页数:63 大小:3.26MB
下载 相关 举报
基于模型的设计——MCU篇Word文档下载推荐.docx_第1页
第1页 / 共63页
基于模型的设计——MCU篇Word文档下载推荐.docx_第2页
第2页 / 共63页
基于模型的设计——MCU篇Word文档下载推荐.docx_第3页
第3页 / 共63页
基于模型的设计——MCU篇Word文档下载推荐.docx_第4页
第4页 / 共63页
基于模型的设计——MCU篇Word文档下载推荐.docx_第5页
第5页 / 共63页
基于模型的设计——MCU篇Word文档下载推荐.docx_第6页
第6页 / 共63页
基于模型的设计——MCU篇Word文档下载推荐.docx_第7页
第7页 / 共63页
基于模型的设计——MCU篇Word文档下载推荐.docx_第8页
第8页 / 共63页
基于模型的设计——MCU篇Word文档下载推荐.docx_第9页
第9页 / 共63页
基于模型的设计——MCU篇Word文档下载推荐.docx_第10页
第10页 / 共63页
基于模型的设计——MCU篇Word文档下载推荐.docx_第11页
第11页 / 共63页
基于模型的设计——MCU篇Word文档下载推荐.docx_第12页
第12页 / 共63页
基于模型的设计——MCU篇Word文档下载推荐.docx_第13页
第13页 / 共63页
基于模型的设计——MCU篇Word文档下载推荐.docx_第14页
第14页 / 共63页
基于模型的设计——MCU篇Word文档下载推荐.docx_第15页
第15页 / 共63页
基于模型的设计——MCU篇Word文档下载推荐.docx_第16页
第16页 / 共63页
基于模型的设计——MCU篇Word文档下载推荐.docx_第17页
第17页 / 共63页
基于模型的设计——MCU篇Word文档下载推荐.docx_第18页
第18页 / 共63页
基于模型的设计——MCU篇Word文档下载推荐.docx_第19页
第19页 / 共63页
基于模型的设计——MCU篇Word文档下载推荐.docx_第20页
第20页 / 共63页
亲,该文档总共63页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于模型的设计——MCU篇Word文档下载推荐.docx

《基于模型的设计——MCU篇Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于模型的设计——MCU篇Word文档下载推荐.docx(63页珍藏版)》请在冰点文库上搜索。

基于模型的设计——MCU篇Word文档下载推荐.docx

端口与子系统模块(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

取整

常量增益

MinMax

求最值

SliderGain

可用滑动条改变的增益

TrigonometricFunction

三角函数

Product

对输入求积或商

AlgebraicConstraint

强制驶入信号为0

DotProduct

点积

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

时钟信号

常数

CounterLimited

受限计数器

DigitalClock

数字时钟

EnumeratedConstant

枚举常数

FromFile

从文件读数据

FromWorkSpace

从工作空间读数据

输入接口

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

输出端口

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函数作为输入

-Function

S函数

S-FunctionBuilder

S函数构造器

2.1.3模块的基本操作

1.模块的查找

在模块库页面的左侧以树形结构显示了一系列的子库,如连续模块库,离散模块库,数学运算模块库,当用户对这些模块比较熟悉以后,可以非常方便、快捷的找到自己需要的模块。

如果是刚刚接触Simulink的用户,这里还提供了查找功能,方便不熟悉它的人使用。

如图2.1.10所示:

图2.1.10模块查找

当用户找到自己所需要的模块后,就要把它复制到模型编辑窗口中以便进行下一步的操作。

这里可以直接把模块拖拽到编辑窗口中完成复制,也可以右键单击,在弹出菜单中选择“Addtonewmodel”,如图2.1.11所示。

图2.1.11添加模块

2.模块的选定

模块被加入到编辑窗口以后,要通过选定模块才能对其进行操作。

选定单个模块可以直接用鼠标左键单击目标模块;

也可以按下鼠标任意键拖动,此时会出现一个虚线框,当虚线框包围了目标模块时放开鼠标,即可选中模块。

若是要选中多个模块就需要用上述的虚线框法来操作,如图2.1.12所示。

选择编辑窗口中所有对象的方法是单击菜单Edit→SelectAll。

图2.1.12选定一组对象

3.模块的连接和调整

l模块的调整

为了使模型更加美观和符合逻辑,有时需要对模块的大小、方向等做适当的修改。

模块大小的调整。

选中模块,用鼠标选中模块周围4个黑色方块中的任意一个开始拖动,这时会出现一个虚线框表示的新模块大小示意,调整至需要的大小后释放鼠标即可,如图2.1.13所示。

图2.1.13调整模块大小

模块的旋转。

选中模块想要旋转的模块,在菜单中选择Format,在次级目录中选择FlipBlock可以使模块180°

旋转;

选择RotateBlock使模块旋转90°

如图2.1.14所示:

图2.1.14模块翻转

l模块的连接

模型中的信号是从模块经连线传输到下一个模块的,因此模块间的连线被称为信号线,当模块设置好以后,只有将它们按一定的顺序连接起来才能完成一个正确的模型。

自动连线:

Simulink系统具备自动连线的功能,步骤如下:

选择一个具有信号输出的模块,按下“ctrl”键,然后用鼠标左键单击要连接到的模块。

如图2.1.15所示:

图2.1.15自动连线

手动连线。

用户也可以选择自己手动连线。

把鼠标指针移动到第一个模块的输出端口,这时指针的形状会变为一个十字,如图2.1.16所示。

图2.1.16手动连线

按下并拖动鼠标至目标模块的输入端口处,这时鼠标指针会变成一个双十字,释放鼠标后两个模块就连接起来了。

如图2.1.17所示:

图2.1.17手动连线

提示:

用手动方法连接模块时是可以从输出到输入口划连接线的。

分支连线:

是指从一条已经存在的连线上另外再拉出一条线用来连接一个模块的输入口。

这时,原连线和分支连线上传输的是同一个信号。

把鼠标指针移动到原有连线上,按下“ctrl”键,拖动鼠标左键到目标模块的端口,释放鼠标,完成连线。

如图2.1.18所示:

图2.1.18分支连线

移动连线:

把鼠标移动到想要移动的连线处,按下左键并拖动到目标位置,释放按键,完成移动。

如图2.1.19所示:

图2.1.19移动连线

连线的折曲:

选择要折曲的线段,将鼠标移动到要折曲的点上,按下“shift”键,并按下鼠标左键,这时指针会变成一个圆圈状,拖动折曲点至目标位置后释放鼠标,完成折曲。

如图2.1.20所示:

图2.1.20曲折连线

连线中插入模块:

如果模块只有一个输入口和输出口,那么可以将该模块直接插入到一天连线中。

如图2.1.21所示:

图2.1.21连线中插入模块

连线的注释:

有时为了增加模型的可读性,常常会给信号线加上注释。

在要添加注释的连线附近双击鼠标左键会出现一个文本输入框,用户可以根据需要添加适当的注释,注释的位置是可以通过鼠标拖拽更改位置的。

如图2.1.22所示:

图2.1.22连线的注释

2.2搭建直流电机模型

直流电机是控制系统中的常用组件,它给系统提供旋转动力或者和其他组件配合进行传动。

下面将通过一个直流电机模型(DCMotor)来介绍如何在Simulink中建立LTI(LTILineartime-invariant)系统并实现对其转速的控制。

2.2.1数学模型分析

电机可分为电气部件和机械部件两部分,电机模型如图2.2.1所示。

图2.2.1电机模型

电机的电气部分和机械部分是通过转子联系起来的,转子即为电能与机械能转化的枢纽。

这两部分的方程都要受到转子感应电动势的影响。

对于左边的电气部分,由电磁感应定律可知,转子会产生一个反向的感应电动势来阻止转子的运转,外界电源Vin要克服反向感应电动势做功,才能使转子转动。

我们可以先把其他元件抽象为电阻和电感,把精力集中到主要矛盾上来:

电机如何平稳运转。

当电机正常运转时,先分析电气部分回路:

外部电源Vin、电阻和电感上的电压降VR和VL、转子上的反向感应电动势Vemf在同一个回路中。

由电路分析的基础知识KVL定律(基尔霍夫电压定律)可以得到:

Vin=VR+VL+Vemf①

对于右边的机械部分,稍复杂一些。

当电动机带着负载匀速旋转时,其输出转矩必定与负载转矩相等。

在非理想电机模型中(即不忽略机械、电磁损耗),轴承的摩擦、电刷和换向器的摩擦、转子铁心中的涡流、磁滞损耗都要引起阻转矩。

此阻转矩用Tf表示。

这样,电动机的输出转矩便等于电磁转矩T减去电机本身的阻转矩Tf。

所以,当电机克服负载阻转矩TL匀速旋转时,则有:

TL=TO=T-Tf②

实际上,电机经常运行在转速变化的情况下,例如启动、停转或反转等,因此必须讨论转速改变时的转矩平衡关系。

当电机的转速改变时,由于电机及负载具有转动惯量,将产生惯性转矩Tj,则有:

Tj=J*dωdt。

其中J是负载和电动机的转动惯量,ω是电动机的角速度,dωdt是其角加速度。

为了使模型能覆盖这种更一般的情况,可根据牛顿力学定律对式②做一些微调:

TO-TL=Tj=J*dωdt③

得到表示电机基本原理的方程后,需要设置一些参数以备建模使用。

如:

电阻R,电感L,转动惯量J,转矩Tm,旋转角度θ,转矩常量Km,感应电动势常量Kemf,粘滞摩擦系数Kf。

因为ωt=θ,Vemf=Kemf*ω(t),式①可化为:

Ldidt+Ri=Vin-Vemf④

又因为θ=dωdt,式③可化为:

J*θ+Kfθ=Tm⑤

将④,⑤两式子用电压Vin和转子角速度ω表示出来可写为:

didt=Vint-Rit-Kemfω(t)L⑥

dωdt=Kmit-Kfω(t)J⑦

为了表示方便,我们对上式做Laplace变换,转换到S域。

根据拉氏变换的规则,在0初始条件下,一阶导数→S;

二阶导数→S2,则可得到:

Is=Vins-RIs-Kemfω(s)L⑧

ωs=KmIs-Kfω(s)J⑨

合并化简后得到系统传输函数:

ω(s)Vin(s)=KmJLS2+KfL+JRS+(KfR+KemfKm)⑩

至此,分析了直流电机的传递函数,下面将利用Simulink建立直流电机模型。

2.2.2模型搭建与参数设置

模型搭建

直流电机的模型需要用到source库中的“step”模块,sinks库中的“scope”模块,mathoperations库中的“add”、“gain”,和continuous库中的“integrator”。

1.添加source库中的“step”模块到模型中。

如图2.2.2所示:

图2.2.2step模块

默认情况下,信号从第一秒处产生跃变。

2.添加sinks库中的“scope”模块到模型中,如图2.2.3所示。

图2.2.3scope模块

示波器模块是可以同时显示多个输入信号的。

例如,双击打开示波器模块,单击“”按钮,在numberofaxes中输入参数3即可使示波器变为3个输入口,如图2.2.4。

图2.2.4设置scope模块

3.添加mathoperations库中的“add”模块到模型中,如图2.2.5所示。

图2.2.5add模块

为了正确表达电机模型的系统方程,需要两个“Add”模块,其符号参数Listofsigns需要分别设置为“+--”和“+-”,这样“Add”模块会分别含有2个和3个输入接口。

如图2.2.6所示:

图2.2.6设置add模块

4.添加mathoperations库中的“gain”模块到模型中,如图2.2.7所示。

图2.2.7gain模块

“gain”模块的参数需要修改。

该模型需要6个“gain”模块,参数分别设置为:

1/L、Km、1/J、R、Kf、Kemf。

可以通过双击放大器模块打开其参数设置页面,然后输入参数。

如图2.2.8所示:

图2.2.8设置gain模块

5.添加continuous库中的“integrator”模块到模型中,如图2.2.9所示。

图2.2.9integrator模块

模型中需要两个“Integrator”模块,参数可采用默认值。

6.按照式⑩表达的逻辑,在第一个积分器之前算子为S2,其系数为JL;

第一个和第二个积分器之间算子为S,其系数为KfL+JR;

第二个积分器之后算子为1,其系数为(KfR+KemfKm)。

由此可以连接其中的各个模块,得到如图2.2.10所示的模型。

图2.2.10Simulink电机模型

左侧的模块对应于公式⑧,其输出为转矩Torque;

右侧的模块对应于公式⑨,其输出为转速ω(t)。

此模型实现了系统传输函数所描述的由输入电压控制直流电机转速的功能。

当输入信号为“Step”阶跃信号时,输出为其阶跃响应;

当输入为外部实际控制信号时,电机转速ω(t)即由输入信号所控制。

为了后面更好的分析电机模型,在仿真时同时输出其转动控制信号和输出转速、角度和转矩。

实现原理如下:

Ø

控制信号与输出转速比较在添加SignalRouting库中的“Mxx”模块到模型中,如图2.2.11所示。

图2.2.11mux模块

修改模型如图2.2.12所示:

图2.2.12Simulink电机模型

扭矩信号输出如图2.2.10所示,左边框图模块组的输出既是转矩信号。

角度信号输出由电机数学模型公式

ω(s)Vin(s)=KmJLS2+KfL+JRs+(KfR+KemfKm)⑩

可知该模型的输出为ω(t),即旋转角速度,且θ=0tw(τ)dτ,因此,模型的输出经过一个积分器即转化为角度,修改模型如图2.2.13:

图2.2.13Simulink电机模型

参数设置

最后,在仿真之前一定要设置模

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2