基于Matlab仿真PID校正

更新时间:2024-07-04 05:51:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于matlab仿真的pid校正总结

PID控制器是目前在过程控制中应用最为普遍的控制器,它通常可以采用以下几种形式:比例控制器,KD?KI?0;比例微分控制器,KI?0;比例积分控制器,KD?0;标准控制器。

下面通过一个例子来介绍PID控制器的设计过程。

假设某弹簧(阻尼系统)如图1所示,M?1kg,f?10N?s/m,k?20N/m。让

我们来设计不同的P、PD、PI、PID校正装置,构成反馈系统。来比较其优略。

系统需要满足:

(1) 较快的上升时间和过渡过程时间;

(2) 较小的超调; (3) 无静差。

fMF图1 弹簧阻尼系统

y

系统的模型可描述如下:

1

控制系统建模与仿真论文( 2011)

G(s)?X(s)F?s??1Ms?fs?k2

(1)、绘制未加入校正装置的系统开环阶跃响应曲线。

根据系统的开环传递函数,程序如下:

clear; t=0:0.01:2; num=1; den=[1 10 20]; c=step(num,den,t); plot(t,c);

xlabel('Time-Sec'); ylabel('y');

title('Step Response'); grid;

系统的阶跃响应曲线如图2

图2 未加入校正时系统的开环阶跃响应曲线

2

(2)、加入P校正装置

我们知道,增加Kp可以降低静态误差,减少上升时间和过渡时间,因此首先选择P校

正,也就是加入一个比例放大器。此时,系统的闭环传递函数为:

Gc(s)?KpKps?10s?(20?Kp)2

1?此时系统的静态误差为

Kp?20。所以为了减少静差,可以选择系统的比例增益

为Kp?300。这样就可以把静差缩小到0.0625。虽然系统的比例系数越大,静差越小,但是比例系数也不能没有限制地增大,它会受到实际物理条件和放大器实际条件的限制。一般取几十到几百即可。增大比例增益还可以提高系统的快速性。 加入P校正后,程序如下:

clear; t=0:0.01:2; Kp=300; num=[Kp]; den=[1 10 (20+Kp)]; c=step(num,den,t); plot(t,c);

xlabel('Time-Sec'); ylabel('y');

title('Step Response'); gird;

加入P校正后系统的闭环阶跃响应曲线如图3

3

控制系统建模与仿真论文( 2011)

图3 加入P校正后系统的闭环阶跃响应曲线

从图3中可以看出,系统的稳定值在0.94左右,静差约为0.06。基本符合系统的需要。并且,曲线的形状从过阻尼转变为衰减震荡。系统的快速性也得到了改善。系统的上升时间不超过0.2s,调节时间不超过0.7s。

不过转变为衰减震荡后又出现了新的问题。系统的超调量比较大,达到了38%。第一个峰值振荡频率过大,需要寻找新的方法继续校正。

(3)、PD校正装置设计

在P校正后虽然有效地减小了静差、改善了系统的响应速度,但出现了超调过大的现象。有自控原理的知识我们知道,加入微分调节,也就是增大KD可以降低超调量,减小调节时间,对上升时间和静差影响不大。因此,可以选择PD校正,也就是在系统中加入一个比例放大器和一个微分放大器。此时,系统的闭环传函为:

4

Gc(s)?KDs?Kps?(10?KDs)?(20?Kp)2

这里仍然选择Kp?300,KD的选择一般为系统震荡频率的8倍左右。所以经过调试我们选择KD?10。

编辑程序如下: clear;

t=0:0.01:2; Kp=300; Kd=10;

num=[Kd Kp];

den=[1 (10+Kd) (20+Kp)]; c=step(num,den,t); plot(t,c);

xlabel('Time-Sec'); ylabel('y');

title('Step Response'); grid;

加入PD校正后系统的阶跃响应曲线如图4:

图4 加入PD校正后系统的闭环阶跃响应曲线

5

控制系统建模与仿真论文( 2011)

由图4中可以看出,加入PD校正,系统的曲线仍然是呈衰减震荡,但衰减次数显著减少,比且超调量也降低了不少。而且对系统的上升时间和静差来说影响不大。剩下的问题就是如何实现无静差。

(4)、PI校正装置设计

消除静差,可以通过加入积分环节。当在原系统的基础上加入一个比例放大器和一个积分放大器时,系统的闭环传递函数为:

Gc(s)?Kps?KIs?10s?(20?Kps)?KI32

加入PI校正后,系统的阶跃响应曲线如图5所示:

图5 PI校正后系统的闭环阶跃响应曲线

6

由图可见,加入PI校正后,系统的稳态值为1,也就是实现了无静差。系统的输出量可以无误差地跟踪设定值的变化。然而,这样的系统调节时间稍长,响应速度不够快。

为了满足这些要求,我们接下来引入经典的PID校正。

(5)、PID校正装置设计

加入Kp、KI、KD。通过调节这三个参数,并使用Matlab绘图进行逐步校正。此处省略调试过程。最终取KP?450,KI?300,KD?40。

系统的闭环传递函数如下:

Gc(s)?编写程序如下: clear;

t=0:0.01:2; Kp=450; Ki=300; Kd=40;

num=[Kd Kp Ki];

KDs?Kps?KIs?(10?KD)s?(20?Kps)?KI322

den=[1 (10+Kd) (20+Kp) Ki]; c=step(num,den,t); plot(t,c);

xlabel('Time-Sec'); ylabel('y');

title('Step Response'); grid;

所得图形如图6所示:

7

控制系统建模与仿真论文( 2011)

图6 PID校正后系统的闭环阶跃响应曲线

4.1 PID参数整定法概述

1.PID参数整定方法

(1) Relay feedback :利用Relay 的 on-off 控制方式,让系统产生一定的周期震荡,再用Ziegler-Nichols调整法则去把PID值求出来。

(2) 在线调整:实际系统中在PID控制器输出电流信号装设电流表,调P值观察电流表是否有一定的周期在动作,利用Ziegler-Nichols把PID求出来,PID值求法与Relay feedback一样。

(3) 波德图&跟轨迹:在MATLAB里的Simulink绘出反馈方块图。转移函数在用系统辨识方法辨识出来,之后输入指令算出PID值。[13]

2.PID调整方式

8

PID调整方式 有转移函数 无转移函数 系统辨识法 Relay feedback 在线调整 波德图 根轨迹 图4-1 PID调整方式

如上描述之PID调整方式分为有转函数和无转移函数,一般系统因为不知转移函数,所以调PID值都会从Relay feedback和在线调整去着手。波德图及根轨迹则相反,一定要有转移函数才能去求PID值,那这技巧就在于要用系统辨识方法,辨识出转移函数出来,再用MATLAB

[15]

里的Simulink画出反馈方块图,调出PID值。 所以整理出来,调PID值的方法有在线调整法、Relay feedback、波德图法、根轨迹法。前提是要由系统辨识出转移函数才可以使用波德图法和根轨迹法,如下图4-2所示。

图4-2由系统辨识法辨识出转移函数

4.2 针对无转移函数的PID调整法

在一般实际系统中,往往因为过程系统转移函数要找出,之后再利用系统仿真找出PID值,但是也有不需要找出转移函数也可调出PID值的方法,以下一一介绍。

4.2.1 Relay feedback调整法

9

控制系统建模与仿真论文( 2011)

图4-3 Relay feedback调整法

如上图4-3所示,将PID控制器改成Relay,利用Relay的On-Off控制,将系统扰动,可得到该系统于稳定状态时的震荡周期及临界增益(Tu及Ku),在用下表4-4 的Ziegler-Nichols第一个调整法则建议PID调整值,即可算出该系统之Kp、Ti、Tv之值。

表4-4 Ziegler-Nichols第一个调整法则建议PID调整值

[9]

4.2.2 Relay feedback 在计算机做仿真

Step 1: 以MATL AB里的Simulink绘出反馈方块,如下图4-5所示。

Controller 图Simulink馈方块图

P PI KP TI TD

4-5 绘出的反

0.5Ku 0.45Ku 0.83Tu 让RelayOn-Off

PID 0.6Ku 0.5Tu 0.125Tu Step 2:

做动作,将

10

系统扰动(On-Off动作,将以 ±1做模拟),如下图4-6所示。

图4-6

Step 3:即可得到系统的特性曲线,如下图4-7所示。

图4-7 系统震荡特性曲线

Step 4:取得Tu及a,带入公式3-1,计算出Ku。 以下为Relay feedback临界震荡增益求法

11

控制系统建模与仿真论文( 2011)

Ku?4??da 公式(4-1)

a:振幅大小 d:电压值

4.2.3 在线调整法

图4-8 在线调整法示意图

在不知道系统转移函数的情况下,以在线调整法,直接于PID控制器做调整,亦即PID控制器里的I值与D值设为零,只调P值让系统产生震荡,这时的P值为临界震荡增益Kv,之后震荡周期也可算出来,只不过在线调整实务上与系统仿真差别在于在实务上处理比较麻烦,要在PID控制器输出信号端在串接电流表,即可观察所调出的P值是否会震荡,虽然比较上一个Relay feedback法是可免除拆装Relay的麻烦,但是就经验而言在实务上线上调整法效果会较Relay feedback 差,在线调整法也可在计算机做出仿真调出PID值,可是前提之下如果在计算机使用在线调整法还需把系统转移函数辨识出来,但是实务上与在计算机仿真相同之处是PID值求法还是需要用到调整法则Ziegler-Nichols经验法则去调整,与Relay feedback的经验法则一样,调出PID值。

4.2.4 在线调整法在计算机做仿真

Step 1:以MATLAB里的Simulink绘出反馈方块,如下图4-9所示

12

图4-9反馈方块图

PID方块图内为

图4-10 PID方块图

Step 2:将Td调为0,Ti无限大,让系统为P控制,如下图4-11所示。

图4-11

Step 3:调整KP使系统震荡,震荡时的KP即为临界增益KU,震荡周期即为TV。(使在线调整时,不用看a求KU),如下图4-12所示。

13

控制系统建模与仿真论文( 2011)

图4-12 系统震荡特性图

Step 4:再利用Ziegler-Nichols调整法则,即可求出该系统之Kp、Ti,Td之值。

4.3 针对有转移函数的PID调整方法

4.3.1 系统辨识法

图4-13由系统辨识法辨识出转移函数

系统反馈方块图在上述无转移函数PID调整法则有在线调整法与Relay feedback调整法之外,也可利用系统辨识出的转移函数在计算机仿真求出PID值,至于系统辨识转移函数技巧在第三章已叙述过,接下来是要把辨识出来的转移函数用在反馈控制图,之后应用系统辨识的经验公式Ziegler-Nichols第二个调整法求出PID值,[13]如下表4-14所示。

14

controller P PI PID 0.9a1.2a1aKP TI TD ) )* * 3.3L 2L L2 ((0.6a0.9a [9]

表4-14 Ziegler-Nichols第二个调整法则建议PID调整值

*为本专题将经验公式修正后之值

※上表4.3.1中,L为延迟时间可参考图4.3.1(b)。 ※上表4.3.1中,a的解法可有以下2种:

解一:如下图4-15中可先观察系统特性曲线图,辨识出a值。 解二:利用三角比例法推导求得

k0.632kLTaT’T”

图4-15利用三角比例法求出a值

LT\?aK?a

aLT\?L?a(K?a)?aa?K?L

公式(4-2)

LT\?L?KT\?L用Ziegler-Nichols第一个调整法则求得之PID控制器加入系统后,一般闭环系统阶跃响应最大超越的范围约在10%~60%之间。

15

控制系统建模与仿真论文( 2011)

所以PID控制器加入系统后往往先根据Ziegler-Nichols第二个调整法则调整PID值,然后再微调PID值至合乎规格为止。

4.3.2 波德图法及根轨迹法

利用系统辨识出来的转移函数,使用MATLAB软件去做系统仿真。由于本设计中PID参数的整定主要是基于系统辨识及Ziegler-Nichols调整法则,所以在此不用波德图法及根轨迹法。

16

小结:

本论文仅介绍了一个简单的PID校正,在Matlab上的实现。实际上,Matlab在众多领域都有着广泛的应用。其中的Simulink的仿真能力更是给建模仿真带来了极大的方便。

按照分析现象、找出本质、建立数学模型、Matlab仿真、设计实现等的一般步骤来解决问题,可以有效的降低成本、节约时间,并达到较好的控制目的。

17

本文来源:https://www.bwwdw.com/article/vvn.html

Top