第6章控制系统响应分析与仿真2.docx
《第6章控制系统响应分析与仿真2.docx》由会员分享,可在线阅读,更多相关《第6章控制系统响应分析与仿真2.docx(13页珍藏版)》请在冰豆网上搜索。
第6章控制系统响应分析与仿真2
6.3SIMULINK交互式仿真
SIMULINK是一个进行动态系统建模、仿真和综合分析的集成软件包。
它可以处理的系统包括:
线性、非线性系统;离散、连续及混合系统;单任务、多任务离散事件系统。
在SIMULINK提供的图形用户界面GUI上,只要进行鼠标的简单拖拉操作就可构造出复杂的仿真模型。
它外表以方块图形式呈现,且可采用分层结构,并可表示齿隙、饱和、死区等非线性因素和各种随机因素对系统行为的影响,从而使用户摆脱深奥数学推演的压力和烦琐编程的困扰。
而且,在SIMULINK环境中,用户可以在仿真进程中改变感兴趣的参数,实时地观察系统行为的变化。
在MATLAB5.3版中,可直接在SIMULINK环境中运作的工具包很多,覆盖了通信、控制、信号处理、DSP、电力系统等诸多领域,所涉内容专业性极强,已成为科学分析和工程计算中一个强有力的仿真工具。
SIMULINK实际上是面向结构的系统仿真软件,利用其进行系统仿真可分为启动SIMULINK,建立模型文件,设置仿真参数和输出仿真结果等4个步骤。
6.3.1SIMULINK仿真的操作
1.启动SIMULINK窗口及模型库
在MATLABCOMMAND窗口键入SIMULINK,即可弹出SIMULINK模块库窗口,如图6.10所示。
图6.10SIMULINK模块库窗口
在该窗口中,包含有7个标准模块子库和一个演示程序图标,这7个标准模块子库分别是Sources(信号源)、Sink(显示输出)、Discrete(离散)、Linear(线性)、Nonlinear(非线性)、connections(连接)和Blocksets&Toolbox。
每个模块子库又包含许多常用的模块,供用户建模时使用,读者不难自己打开后理解其功能。
2.建立系统模型文件
系统模型文件建立过程如下:
(1)当在COMMAND窗口键入Simulink后,弹出模块库窗口的同时也将弹出一个Untitled窗口,如图6.11,该窗口为未命名的模型窗口,可在该窗口下建立系统的模型文件。
图6.11SIMULINK模型窗口
单击Simulink窗口的[File]菜单中[new]子菜单的[Model]后也会弹出图6.11所示模型窗口。
(2)模块的选取、拷贝和移动
根据建立模型的需要,在相应的标准模块子库中找出所需模块图标,用鼠标单击选中。
按住鼠标可移动所选模块图标并将其拖(拷贝)至模型窗口上。
用同样的方法可以将模块图标在模型窗口上任意移动。
缺省状态下的模块输入端在左,输出端在右,可通过选用Format菜单中的FlipBlock或RotateBlock将选定模块的输入输出方向旋转180º和90º。
(3)模块参数设置
几乎所有模块都有一个相应的参数对话框,可通过双击模块图标打开对话框对模块参数进行设置。
各模块对话框需设置参数不同,打开对话框后需根据栏目中提供的信息输入或改变模块参数。
(4)模块连接
如果两个模块之间有直接的信息传输,则需要用连线将两个模块连结起来,该连线称为信号线,在模块连接时,存在一个模块的输入端,输出端及信息流向问题。
例6.8:
用Simulink模拟
并进行阶跃响应分析
其中
解:
进入simulink环境后,打开sources模块库找到step模块,并将其拖至模型窗口,类似地,打开linear模块库拖出transferfcn模块至模型窗口并根据题中要求设置参数,用信号线连接成闭环系统如图6.12,然后保持为s-t1.mdl
图6.12例6.的系统功能模块图
在模型窗口的simulation菜单中点击start进行模拟后,再点击功能模块图中scope模块即可看到系统阶跃响应仿真结果,如图6.13所示。
图6.13系统阶跃响应仿真结果
6.3.2线性系统建模
例6.9:
假设从实际自然界(力学、电学、生态等)抽象出有初始状态为0的二阶微分方程
X’’+0.2X’+0.4X=0.2u(t),(6.3-1)
U(t)是单位阶跃函数,本例以传递函数,状态方程,差分方程三种形式用Simulink求解该问题的数值解。
(1)传递函数形式模块及阶跃响应
对式(6.3-1)进行L氏变换得
S2X(S)+0.2SX(S)+0.4X(S)=0.2U(s)(6.3-2)
得传递函数为:
(6.3-3)
根据(6.3-3)式,直接构造Simulink传递函数模型文件(s_trans.m)
图6.14传递函数形式模块
打开[simulation:
start]可看到响应曲线,如图6.15
图6.15系统阶跃响应曲线
(2)状态方程式形式模块及单位脉冲响应
若令x
(1)=x,x
(2)=x’,则式(6.3-1)
可写为
又考虑到感兴趣的是x,则可写出输出方程
在Simulink中有标准的状态方程式模块可供调用,此例中参数设置为:
A=[0,1;-0.4,-0.2]
B=[0;0.2]
C=[1,0]
D=0
正如其他物理系统中不存在理想单位脉冲一样,Simulink库中亦无现成的单位脉冲标准模块。
在进行脉冲响应分析时,可用两个阶跃信号模块产生。
如欲生成一个宽度d=0.01,幅度100的脉冲,可用两个阶跃模块,u1和u2,且设
u1:
Steptime=0inifialvalue=0FinalValue=100
u2:
Steptime=0.01inifialvalue=0FinalValue=100
并通过求和模块Sum(+,-)来实现,即:
δ(t)=u1-u2
=100u(t)-100u(t-0.01
根据以上考虑和设置所构成的Simulink模型文件如下图所示:
(s_ss.mdl)
图6.16状态方程式形式模块
仿真结果见图6.17
图6.17系统脉冲响应曲线
(3)用积分模块直接构造微分方程求解
将(6.3-1)式改写为
x”=0.2u(t)-0.2x’-0.4x(9.3-5)
可利用Simulink库的积分模块直接构成模型(s_df.mdl)按前面所述方法设置参数和进行仿真可得系统响应结果。
在该模型中,除了可通过示波器观察仿真结果外,还通过两个ToWorkspace模块来存放数据在工作空间,仿真招待后,可通过其他命令来调用这两些数据组,如本例中可用plot(t,x)来给出系统的响应曲线。
图6.18积分器形式的模块
图6.19利用存放在workspace中的数据所绘制的响应曲线
9.3.3非线性系统建模
严格地说,任何系统和元器件都具有非线性因素,如果这种非线性比较严重,仿真中就必须考虑其影响。
Simulink中以典型非线性环节和任意非线性函数两种形式提供对非线性环节的建模和仿真处理。
1.含典型非线性环节的非线性系统仿真
Simulink库中提供了许多典型的非线性环节模块。
如零位死区(Deadzone),继电器非线性(Relay),齿隙非线性(Backlash)等。
例6.10通过比较系统有无非线性环节时的响应结果来说明所典型非线性模块在Simulink中的应用。
例6.10.比较线性系统(slexp1.mdl)和非线性系统(slexp2.mal)系统结构和仿真结果.
图6.20(a)(b)分别表示了有无非线性环节(Backlash)的系统结构图图6.21(a)(b)则分别是对应的仿真分析结果,读者可自己了解系统中的参数和进行仿真来体会其应用和意义。
(a)线性系统(slexp1.mdl)
(b)非线性系统(slexp2.mal)
图6.19线性系统(slexp1.mdl)和非线性系统(slexp2.mal)
(a)线性系统(slexp1.mdl)的仿真结果
(b)非线性系统(slexp2.mal)的仿真结果
图6.20线性系统(slexp1.mdl)和非线性系统(slexp2.mal)的仿真结果
2.任意非线性函数模块及其应用
除了一系列典型非线性环节的模块外,Simulink还提供了若干可由用户根据需要定义的“任意函数”模块,如Fcn、MinMax、Look-upTable(一维查表函数)等,本节通过一个例子介绍其应用。
例6.11轿车沿直线山坡路向前行驶。
受力情况如图6.21所示。
其中:
各量的物理意义为:
m:
轿车质量,本例取100个质量单位
Fe:
引擎动力,最大驱动力1000,最大制动力2000,即-2000≤Fe≤1000
Fw:
空气阻力,设Fw=0.001(x+20sin(0.01t))2
Fh:
重力分量Fh=30sin(0.0001x)
x
Fw
Mθ
Fe
Fh
图6.21坡路上行驶轿车的受力图
要求设计一简单的比例放大器,使轿车能以指定的速度运动。
解;
1)根据牛顿运动定律,可得车辆运动方程式为:
mx”=Fe-Fw-Fh
2)比例控制器设计
根据题目要求设计一个比例控制器,其工作原理是根据期望速度与实际速度之差来产生一个与此成比例的控制力,本例中取其控制律为:
Fc=Ke(xc-x)
上式中:
xc:
期望速度,x:
实际速度;Ke为比例系灵敏;本例取Ke=50
3)根据以上分析和设计构造一个受控轿车的仿真模型,如图6.22所示:
图6.22受控轿车仿真模型
图中“SliderGain”为滑键增益,用以产生期望速度
4)仿真操作和说明
仿真中,先打开滑键操作窗与示波器显示窗,若移动滑键,可从SliderGain上看到变化的期望车速,与此同时也可看到示波器显示的实际车速在控制作用下不断向期望车速逼近。
6.3.4子系统的创建与应用
对于比较复杂的系统时,采用设立子系统,进行模块化“分层”处理是一种常用的有效手法。
Simulink中亦提供了利用“分层”思想建立各种子系统(subsystem)的功能。
子系统的建立有“先有内容后套包装”和“先有包装后置内容”两种方法,下例演示按前一种方法从非分层模型中获得分层模型。
例6.12从例6.11的模型文件创建利用比例控制器使轿车的运动速度稳定在期望车速的分层仿真模型。
解:
(1)将待“分层”的模型存为一个新模型
打开文件“s_car.mdl”另存为中“s_car1.mdl”
(2)生成子系统
在模型窗中,框选汽车动力学模型部分,点击[Edit:
createsubsystem],把框选部分包装在一个名为subsystem的模块中。
框选sum2模块和Ke增益模块组成的比例控制器,再次点击[Edit:
CrenteSubsystem],生成Subsystem1模块。
(3)用鼠标将生成的子系统图形和信号线进行调整
(4)更改子系统标识名,将Subsystem模块更名为AutomobileModel,将Subsystem1模块更名为PController。
(5)重命名输入输出口的名称
双击Automobilemodel模块,引出该子系统的结构模型窗口;把该结构模型窗中的输入模块的缺省名In1改为FcIn,把输出口模块名由缺省名out1改为saout,然后,选中该结构模型窗的菜单项[File:
Close]或[File:
save]。
用同样的方法,可改变PController子系统的输入输出口名称,于是得图6.23所示分层模型。
图6.23分层模型。
在现代控制系统中,通常被控的对象是连续时间的(物理)子系统,而控制器是由逻辑控制器或计算机构成的离散子系统。
分层模型除了可将复杂的模型以数个子系统来描述,使系统功能更加明确,结构更加简洁外,还可用于处理一些有特殊要求的一些系统,如多速率离散子系统,离散——连续混合系统等。
下列通过对一个离散——连续混合系统的仿真讲座其应用。
例6.12,在例6.11基础上,设计一个数字PID控制器对轿车速度进行控制。
解:
轿车运动是一个连续系统,而数字PID控制器则是一个离散系统,故这是一个离散——连续混合系统。
这种系统在实际中非常普遍。
以下我们通过创建两个不同的子系统来对该混合系统的控制性能进行分析。
(1)复制一份模型
打开例6.11中模型S-car1.mdl,选用菜单项[File:
Saveas]产生“另存”模型s_car2.mdl。
它将用做以下改建的“原始”模型。
(2)修改模型
把s_car2.mdl窗口中的PController改名为PIDController(参见图6.24)。
双击PIDController子系统“原始”模块,打开该子系统的PIDController结构模型窗。
把PIDController模型窗中模型改建成图6.25所示的模型。
图6.24采用离散PID的轿车速度控制系统
图6.25PIDController子系统结构图
图6.25中,ZOH是零阶保持器,它的采样时间设置为0.5。
DT-Ⅰ是离散时间积分器。
本例采用前向法积分,采样时间也设为0.5。
此外,为了防止积分“过冲(Wind-up)”,把积分器输出的上下限设置为100。
DD是由标准离散传递函数模块经设置而得的。
导数的求取方法很多,本例采用的近似公式是
经Z变换即得
。
Kp,Ki,Kd分别是用标准Slidinggain滑键增益模块经不同设置而得。
它们的增益设置范围是:
Kp为[0,100];Ki为[0,5];Kd为[0,100]。
(3)设置颜色
在s_car2.mdl模型窗中,选取菜单项[Format:
Sampletimecolors],使该模型及其所有子系统模型按采样速率着色:
连续时间部分用黑色;离散时间部分用红色;离散、连续混合的子系统被着黄色。
(4)仿真实验
在s_car2.mdl模型窗中,设置仿真参数:
仿真终止时间为100;Solver采用ode45。
其余均采用缺省设置。
图6.26是汽车实际速度曲线。
图6.26PID作用下的汽车实际速度曲线