zoukankan      html  css  js  c++  java
  • PID教程

     

    PID教程

    介绍


    本教程将向您展示了比例每一个比例项 (P)的特点,积分项(I)和微分项 (D) 控制,以及怎样使用它们来获得所需的响应。在本教程中,我们会考虑下面单位反馈系统:


    Plant【被控对象】:被控制的系统


    Controller【控制器】:为被控对象提供刺激;目的是控制整个系统的行为


    三个控制系数


    PID控制器的传递函数例如以下所看到的:


    · Kp =比例控制參数

    · KI =积分控制參数

    · Kd =微分控制參数

    首先,让我们来看看怎样在一个PID控制器的闭环使用上述系统的工作原理图。变量(e)代表误差,这里的误差是指输入值(R)和实际输出(Y)两者之差。这个错误信号(e)将发送到PID控制器,该控制器对这个错误信号同一时候计算导数和积分。刚刚过去信号(u)将等于比例控制參数(Kp)乘上误差,积分控制參数(Ki)乘上误差的积分,微分控制系数(Kd)乘上误差的微分。



    这个信号(u)将被发送到被控对象,新的输出(Y)将获得。这样的新的输出(Y)将被送回传感器再次找到新的误差信号(e)。该控制器採用这个新的误差信号,并计算其微分及其积分了。这个过程将重复的进行。



    PID控制器的属性


    比例控制參数(Kp)加快系统的响应速度,提高系统的调节精度,但从未消除稳态误差。一个积分控制參数(Ki)将消除残差,但它可能使瞬态响应差。一个微分控制參数(Kd)将改善系统的动态性能,降低了过冲,改善瞬态响应的影响。Kp, Kd, 和Ki在闭环系统的影响总结例如以下表。

                                                      


    请注意,这些关系不是固定不变的,由于Kp, Kd, 和Ki是互相依赖。其实,改变一个值能够改变其它两个效果。出于这个原因,该表帮您确定Ki, Kp 和Kd值时作为參考。



    以下对PID做一个简单形象的介绍


    简单的控制模型:你控制一个人让他以PID控制的方式走100步后停下。


    1P  比例控制,就是让他走100步,他依照一定的步伐走到90几步(如98步)或100多步(如102步)就停了。


    说明:P比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-state error)。


    2PI 积分控制,就是他依照一定的步伐走到102步然后回头接着走,走到98步位置时,然后又回头向100步位置走。在100步位置处来回晃几次,最后停在100步的位置。


    说明:在积分I控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自己主动控制系统,假设在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(System with Steady-state Error)。为了消除稳态误差,在控制器中必须引入“积分项”积分项对误差取决于时间的积分,随着时间的添加,积分项会增大。这样,即便误差非常小,积分项也会随着时间的添加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,能够使系统在进入稳态后无稳态误差。


    3PD 微分控制就是他依照一定的步伐走到一百零几步后,再慢慢地向100步的位置靠近,假设最后能精确停在100步的位置,就是无静差控制;假设停在100步附近(如99步或101步位置),就是有静差控制。


    说明:在微分控制D中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。自己主动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳,其原因是因为存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。解决的办法是使抑制误差作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。这就是说,在控制器中仅引入“比例P”项往往是不够的,比例项的作用仅是放大误差的幅值,而眼下须要添加的是“微分项”,它能预測误差变化的趋势。这样,具有比例+微分的控制器,就行提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。所以对有较大惯性或滞后的被控对象,比例P+微分DPD)控制器能改善系统在调节过程中的动态特性。


    带着上面的形象的说明通过例题让我们加深记忆!!



    例题


    如果我们有一个简单的质量,弹簧,阻尼器和问题,例如以下图。


    该系统的建模方程式



    (1)


    我们得到的建模方程(1用拉普拉斯变换,得到



    位移X(s)和输入值F(s)的传递函数就变成


    当中

    · M = 1kg

    · b = 10 N.s/m

    · k = 20 N/m

    · F(s) = 1


    把这些值代入到传递函数


    这个例题的目的是向您展示Kp, Ki 和Kd 值怎样有助于获得

    · 高速的上升时间(Fast rise time)

    · 最小的过冲量(Minimum overshoot)

    · 没有稳态误差 (No steady-state error)



    开环阶跃响应


    让我们先来查看开环阶跃响应。创建一个新的M-文件,加入下面代码:

    1. num=1;
    2. den=[1 10 20];
    3. plant=tf(num,den);
    4. step(plant)
    复制代码

    MATLAB命令窗体中执行M -文件应该得到以下的图。


    该被控对象的传递函数的直流增益为1/ 20,所以0.05是一个单位阶跃输入输出的终于值。这相当于0.95稳态误差,确实相当大。此外,上升时间约为1秒,稳定时间约为1.5秒。让我们设计的控制器将降低上升时间,降低稳定时间,并消除了稳态误差。



    比例控制


    从上面的表格中,我们看到,比例控制參数(Kp)使上升时间缩短,添加了过冲,并降低了稳态误差。上述系统的闭环传递一个比例控制參数的功能是:


    比例控制參数(Kp)等于300,然后对M -文件进行例如以下改动:

    1. Kp=300;
    2. contr=Kp;
    3. sys_cl=feedback(contr*plant,1);
    4. t=0:0.01:2;
    5. step(sys_cl,t)
    复制代码

    执行在MATLAB命令窗体中的M -文件应提供下列情节。

    Note: The MATLAB function called feedback was used to obtain a closed-loop transfer function directly from the open-loop transfer function (instead of computing closed-loop transfer function by hand).

    注意:MATLAB函数称为反馈是用来直接从开环传递函数获取闭环传递函数。(而不是用手工计算闭环传递函数)。



    上图显示,使用比例控制參数的降低了上升时间和稳态误差,但提高了过冲,并降低了小额的稳定时间。


    比例积分控制


    在进入一个PID控制去,让我们来看看在PI控制。从表中,我们看到积分控制參数(Ki)减少上升时间,但添加了超调和稳定时间,只是消除了稳态误差。对于给定的系统,使用PI控制的闭环传递函数为:



    让我们把Kp减小到等于30,并让 Ki 等70。创建一个新的M-文件,输入下面命令。

    1. Kp=30;
    2. Ki=70;
    3. contr=tf([Kp Ki],[1 0]);

    4. sys_cl=feedback(contr*plant,1);
    5. t=0:0.01:2;
    6. step(sys_cl,t)
    复制代码


    执行此命令窗体在MATLABM -文件,你应该得到下面的图片。


    我们降低了比例控制參数(Kp),由于积分控制參数对也对降低上升时间,添加了冲量和比例控制參数有同样效果(双重效果)。上述反应表明,积分控制器消除了稳态误差。



    比例微分控制


    如今,让我们看看在PD控制。从上面的表格中,我们看到,微分控制參数(Kd)减少了过冲量和稳定时间。此次与PD控制器给定的系统闭环传递函数为:


    让我们像第一次一样,让Kp等于300, Kd等于10把以下的命令输入到m-文件并执行以下的命令在MATLAB命令窗体中。

    1. Kp=300;
    2. Kd=10;
    3. contr=tf([Kd Kp],1);

    4. sys_cl=feedback(contr*plant,1);
    5. t=0:0.01:2;
    6. step(sys_cl,t)
    复制代码



    此图表明,微分控制器既减少超调量和稳定时间,并对上升时间和稳态误差较小的影响。



    比例,积分,微分控制


    如今,让我们看看在一个PID控制器。此次与PID控制器的给定的系统闭环传递函数为:



    经过多次重复试验执行,Kp=350, Ki=300, 和Kd= 50提供所需的响应。为了确认,请输入下面命令,以一米文件并执行在命令窗体中。你应该得到下面步骤响应。

    1. Kp=350;
    2. Ki=300;
    3. Kd=50;
    4. contr=tf([Kd Kp Ki],[1 0]);

    5. sys_cl=feedback(contr*plant,1);
    6. t=0:0.01:2;
    7. step(sys_cl,t)
    复制代码



    如今,我们已经获得了无过冲,高速上升时间,并没有稳态误差闭环系统。


    设计一个PID控制器的一般技巧


    当你要设计一个给定系统的PID控制器,请依照以下以获得所需的响应的步骤。

    1. 获取一个开环反应并确定哪些须要改进
    2. 加入比例控制以改善上升时间
    3. 加入微分控制以改善冲量
    4. 加入一个积分控制消除稳态误差
    5. 调整每一个Kp, Ki, 和 Kd直到您获得所需的总体反应。


    你总是能够參考本“PID教程”上显示的表,以找出哪个控制器控制什么特点。


    最后,请记住假设没有必要你并不须要在一个单一的系统中的把全部三个控制器(比例,微分和积分)都用上。比如,假设一个PI控制器提供足够好的反应(如上面的样例),那么你就不须要在系统上运行微分控制器。尽可能保持简单的控制器。


    书上的经常使用口诀:


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

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

        曲线振荡非常频繁,比例度盘要放大

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

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

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

        曲线振荡频率快,先把微分降下来

        动差大来波动慢,微分时间应加长

        理想曲线两个波,前高后低41

        一看二调多分析,调节质量不会低


    PS1: 推荐一个最经典的教程,由入门到精通吃透PID2.0版-焦作华润白志刚。从PID历史到说明再到例题!! 认为很有研读价值。在project领域仅仅要吃透PID大部分都能够解决掉!! 所以不在多在于精!! 下载完一定要去研读哦!!
  • 相关阅读:
    Java 泛型 泛型的约束与局限性
    Java 泛型 泛型方法
    Java 泛型 泛型数组
    Java 泛型 协变性、逆变性
    Java 泛型 协变式覆盖和泛型重载
    Java 泛型 泛型代码和虚拟机
    Insertion Sort List
    Remove Duplicates from Sorted List II
    String to Integer (atoi)
    SpringMvc源码入门
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4070645.html
Copyright © 2011-2022 走看看