2021-04-29

目录

PID控制

前言

一、PID控制是什么?

PID控制又被称为比例—积分—微分控制,其具有控制算法简单,鲁棒性好,可靠性高等优点,所以被广泛的应用与工业过程控制中。

二、PID的介绍

1.PID控制的实际应用举例

2.PID控制基本公式

3.PID控制的理解

4.基于matlab程序对PID控制算法的理解

5.PID控制算法各个参数的确定

总结


PID控制

前言

        PID是什么意思(通俗易懂讲解PID)在实际工程中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。PID控制器问世至今以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。PID调节控制是一个传统控制方法,它适用于温度、压力、流量、液位等几乎所有现场,不同的现场,仅仅是PID参数应设置不同,只要参数设置得当均可以达到很好的效果。均可以达到0.1%,甚至更高的控制要求。随着人工智能的不断发展,学习PID控制也越来越重要,很多人都开启了PID学习,本文就介绍了PID学习的基础内容。

一、PID控制是什么?

PID控制又被称为比例—积分—微分控制,其具有控制算法简单,鲁棒性好,可靠性高等优点,所以被广泛的应用与工业过程控制中。

二、PID的介绍

1.PID控制的实际应用举例

        假设我们有一个无人机,其控制目标是让它飞到距地面30米的位置,而控制器的控制量对应于无人机螺旋桨转速的大小,可以快速调整升力。同时,无人机也搭载了气压高度传感器来获得高权高度,以计算它与目标高度之间的误差err(t)。

        首先,我们仅采用比例控制,即控制信号与误差err(t)成正比。故当无人机距离目标较远时,误差较大,故控制量也会较大,螺旋桨急速旋转产生大升力,无人机就会快速上升。无人机当快接近目标高度时,误差err(t)较小,控制量也会较小,螺旋桨旋转的速度也就没有那么快了,这使得无人机上升速度变小,直到无人机维持在一定高度,此时的无人机无法达到目标高度。比例控制虽然可以快速减少误差,但最大的问题是当控制量小于一定值时,螺旋桨提供升力不足以让无人机上升,无人机只能保持现有的高度,造成了所谓的稳态误差,这个误差不会随着时间的推移而被比例控制消除,所以此时我们就需要积分控制器了。

        积分控制器它会不断累积误差err(t)的值,使得我们的控制量增加,故升力增大,无人机继续上升,最终在这一机制的作用下,成功消除了稳态误差,达到了目标高度。

        当然,上述的模型有点太过于理想化了,试想突然从上方刮来一阵风,无人机的高度急剧下降,误差err(t)也随之快速增加,此时,微分控制就可以大显神通了。微分控制器计算的是误差err(t)的变化率,当无人机快速下降时,微分控制量将随着误差err(t)的变化率的增大而增大,使得无人机产生更大的升力以快速回到目标位置,进而使得其高度更为稳定。一方面,当无人机只在比例—积分控制作用下快速向目标高度靠近时,误差快速降低,故误差err(t)的导数为负,使得无人机上升时会超过目标高度30米。另一方面,当无人机在比例—积分—微分控制作用下快速向目标高度靠近时,误差快速降低接近于0,故误差err(t)的导数为负,微分控制项就将减小控制量,进而使得无人机螺旋桨转速减小,以防止其上升冲过30米这一目标高度。         

        简单总结一下,积分控制提供了一定的惯性,而微分控制则提供了一定的阻尼,以上就是简单直观的对PID控制的理解。

2.PID控制基本公式

PID控制器由比例单元(P)单元(I)单元(D),其输入误差err(t)与输出u(t)的关系为:

其中Kp为比例系数,Ti为积分时间常量,Td为微分时间常量。

2.1  PID系统原理框图:

2.2  PID算法的离散化:

假设采样周期间隔为T,则在KT时刻:

偏差err(K)=E(k)-A(k);

积分环节用加和形式表示:err(k)+err(K-1)+…err(0);

微分环节用斜率形式表示:[err(k)-err(k-1)]/T;

比例系数:Kp;

积分系数:Ki=Kp*T/Ti;

微分系数:Kd=Kp*Td/T;

2.3   PID离散表示形式(位置式PID的表达形式):

2.4    求出u(k-1),然后求出△u(k)=u(k)-u(k-1),就得到增量式PID的表达形式:


————————————————
版权声明:本文为CSDN博主「Tzeng09」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39899831/article/details/80033010

3.PID控制的理解

3.1 比例P控制(proportion)理解

        比例P控制(proportion)的另一种理解为(present)现在。比例P控制中控制器的输出u(t)与输入误差信号err(t)成比例关系。假如某一刻t你的预期值是E,而实际值为A,那么误差值就为err(t)=E-A,这时候控制器输出就为u(t)=Kp*err(t)。

3.2 积分I控制(integral)理解

        在积分I控制(integral)的另一种理解为(past)过去。积分I控制可以监控历史,及时作出调整。积分I控制中控制器的输出与输入误差信号的积分成正比关系。如果系统进入稳态后存在稳态误差,必须引入积分环节以消除误差。积分项为误差对时间的积分,即便误差很小,随着时间的增加积分项也会增大,引导控制器增大输出使稳态误差减小,直至稳态误差为0。

3.3 微分D控制(derivative)理解

        在微分D控制(derivative)的另一种理解为(future)未来。微分D控制可以提前加以修正。微分D控制控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。误差变化越快,其微分绝对值越大。误差增大时,其微分为正;误差减小时,其微分为负;只有误差为常数时,微分才为0。总体来讲微分环节能预测变化的趋势来提前抑制误差直至微分为0。(曲线的斜率为微分值,当误差为常数或者为0时,微分值即曲线的斜率为0)
————————————————
版权声明:本文为CSDN博主「Tzeng09」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39899831/article/details/80033010

4.基于matlab程序对PID控制算法的理解

代码如下(示例):

设一被控对象G(s)=50/(0.125s^2+7s),用增量式PID控制算法编写仿真程序。(输入分别为单位阶跃、正弦信号,采样时间为1ms,控制器输出限幅:[-5,5],仿真曲线包括系统输出及误差曲线,并加上注释、图例)
 
clear all;                                       %关闭所有的Figure窗口
close all;                                      %清除工作区的所有变量,函数和MEX文件
ts=0.001;                                     %采样时间
sys=tf(50,[0.125,7, 0]);               %tf是传递函数  即被控对象函数G();
dsys=c2d(sys,ts,'z');                     %把控制函数离散化
[num,den]=tfdata(dsys,'v');        % 离散化后提取分子、分母  
u_1=0.0;
u_2=0.0;
y_1=0.0;
y_2=0.0;
x=[0,0,0]';
error_1=0;
error_2=0;
for k=1:1:1000
time(k)=k*ts;                        %采样次数
S=2;
if S==1
    kp=10;ki=0.1;kd=15;             %初始化PID  
    rin(k)=1;                        %Step Signal 
elseif S==2
    kp=10;ki=0.1;kd=15;             
    rin(k)=0.5*sin(2*pi*k*ts);                   %Sine Signal     即实际输入    
end 
du(k)=kp*x(1)+kd*x(2)+ki*x(3);      %PID Controller   控制系数  
u(k)=u_1+du(k);                               %Restricting the output of controller
if u(k)>=5       
   u(k)=5;
end
if u(k)<=-5
   u(k)=-5;
end
%Linear model
yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;          %实际输出
error(k)=rin(k)-yout(k);                                       %Return of parameters 误差
u_2=u_1;                                                       %保存上上次输入   为下次计算
u_1=u(k);                                                      %保存上一次控制系数   为下次计算
y_2=y_1;                                                       %保存上上次次输出   为下次计算
y_1=yout(k);                                                   %保存上一次输出   为下次计算
x(1)=error(k)-error_1;                                         %Calculating P
x(2)=error(k)-2*error_1+error_2;                               %Calculating D
x(3)=error(k);                                                 %Calculating I 
error_2=error_1;                    
error_1=error(k);                    
end
figure(1);
plot(time,rin,'b',time,yout,'r');                        %输入和实际控制输出
xlabel('time(s)'),ylabel('rin,yout'); 
figure(2);
plot(time,error,'r')                                     %输入与输出误差输出曲线
xlabel('time(s)');ylabel('error');

仿真曲线如下(示例):

5.PID控制算法各个参数的确定

PID参数的设定:是靠经验及工艺的熟悉,参考测量值跟踪与设定值曲线,从而调整P、I、D的大小。系统空载、带载联调。对PID参数进行微调,直到满足性能要求。

5.1 确定比例系数Kp
        确定比例系数Kp时,首先去掉PID的积分项和微分项,即令Ti=0、Td=0,使之成为纯比例调节。输入设定为系统允许输出最大值的60%~70%,比例系数Kp由0开始逐渐增大,直至系统出现振荡;再反过来,从此时的比例系数Kp逐渐减小,直至系统振荡消失。记录此时的比例系数Kp,设定PID的比例系数Kp为当前值的60%~70%。
5.2确定积分时间常数Ti
        比例系数Kp确定之后,设定一个较大的积分时间常数Ti,然后逐渐减小Ti,直至系统出现振荡,然后再反过来,逐渐增大Ti,直至系统振荡消失。记录此时的Ti,设定PID的积分时间常数Ti为当前值的150%~180%。
5.3确定微分时间常数Td
       微分时间常数Td一般不用设定,为0即可,此时PID调节转换为PI调节。如果需要设定,则与确定Kp的方法相同,取不振荡时其值的30%。

常用口诀:

参数整定找最佳,从小到大顺序查;

先是比例后积分,最后再把微分加;

曲线振荡很频繁,比例度盘要放大;

曲线漂浮绕大湾,比例度盘往小扳;

曲线偏离回复慢,积分时间往下降;

曲线波动周期长,积分时间再加长;

————————————————
版权声明:本文为CSDN博主「偏执灬」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_23338865/article/details/53837634

总结

本人第一次学习PID控制,也找了许多前辈的文章并参考引用,对MATLAB软件的使用并没有多么的熟练,所以,本文中的MATLAB程序是直接引用的,本人打算在空闲时间专门学习MATLAB软件,再对此程序进行改变参数,进行测试。以上就是今天要讲的内容,本文仅仅简单介绍了PID控制的理论知识和基于MATLAB程序对PID控制的了解,PID控制为我们生活提供了大量的帮助,成为工业控制的主要技术之一。同时,本文所涉及的MATLAB软件自身带有一些常用的函数,能使我们快速便捷地处理数据的函数和方法,大大地节约了我们编写程序的时间

猜你喜欢

转载自blog.csdn.net/weixin_56257452/article/details/116257090