PID参数解析(一文读懂PID并会调试kp,ki,kd)(位置式 增量式PID)

在最前面推荐一个大佬的讲解,真的很浅显易懂,建议先看了解大概PID:链接

什么是PID

快速(P)、准确(I)、稳定(D)
P:Proportion(比例),就是输入偏差乘以一个常数。
I :Integral(积分),就是对输入偏差进行积分运算。
D:Derivative(微分),对输入偏差进行微分运算。
(输入偏差=读出的被控制对象的值-设定值。比如说我要把温度控制在26度,但是现在我从温度传感器上读出温度为28度。则这个26度就是”设定值“,28度就是“读出的被控制对象的值”。)

1稳定性(P和I降低系统稳定性,D提高系统稳定性):在平衡状态下,系统受到某个干扰后,经过一段时间其被控量可以达到某一稳定状态;
2 准确性(P和I提高稳态精度,D无作用):系统处于稳态时,其稳态误差;
3快速性(P和D提高响应速度,I降低响应速度):系统对动态响应的要求。一般由过渡时间的长短来衡量。

公式

其中KP为比例增益;
TI为积分时间常数;
TD为微分时间常数;
u(t)为控制量(控制器输出);
e(t)为被控量与给定值的偏差。

(具体参数定义不理解可以参照最上方链接)

各个参数对性能影响

1.随着比例系数Kp

.随着比例系数Kp的增加,超调量增大(震荡变严重),系统响应速度加快,

2.积分时间常数Ti对控制性能的影响

    积分作用的强弱取决于积分常数Ti。Ti越小,积分作用就越强,反之

Ti大则积分作用弱。积分控制的主要作用是改善系统的稳态性能,消除
系统的稳态误差 (关于稳态误差可参考本文最上面那个链接)。当系统存在控制误差时,积分控制就进行,直至无差,积分调节停止,积分控制输出一常值。
加入积分控制可使得系统的相对稳定性变差。Ti值的减小可能导致
系统的超调量增大,Ti值的增大可能使得系统响应趋于稳态值的速度减
慢。

积分控制部分的作用主要是用来消除静差。那么积分是怎样来消除静差的呢?

    比例控制只能尽量将Err调节到0,
    而微分的作用是将曲线的斜率控制到0则停止对其作用,
    但斜率为0的时候Err并不一定为0。

    这个时候我们就需要积分来起作用了。
    我们知道曲线的积分相当于曲线与x轴围出来的面积。如下图,
    积分作用的目的是使红色部分的面积和蓝色部分的面积的和为0,
    那么即使系统在比例控制和微分控制部分已经趋于稳定,
    只要Err不为0就会存在静差,只要存在静差那么积分就会对系统产生影响,
    直到系统的Err值为0 。
    那么这样我们的PID控制在理论上就可以达到一个非常精确的控制效果。

3.微分时间常数Td对控制性能的影响

    随着微分时间常数Td的增加,闭环系统响应的响应速度加快,调节

时间减小。微分环节的主要作用是提高系统的响应速度。由于该环节对
误差的导数(即误差变化率发生作用),它能在误差较大的变化趋势时施加
合适的控制。
但是过大的Kd值会因为系统造成或者受控对象的大时间延迟而出现
问题。微分环节对于信号无变化或变化缓慢的系统不起作用。

作用机理:

微分代表error变化斜率,下降时候其为负数;
Err随时间是一条斜率小于0的曲线,那么在周期时间内,Err越大,微分的绝对值越大,那么也就对Err的减小速度是起到抑制的作用的,直到最后斜率为0微分才会停止作用。

PID作用

比例控制:能迅速反映误差,从而减小误差,但比例控制不能消除稳态误
差,KP的加大会引起系统的不稳定;

积分控制的作用是:只要系统存在误差,积分控制作用就不断地积累,
输出控制量以消除误差。因此只要有足够的时间,积分控制将能完全消
除误差,但是积分作用太强会使系统超调加大,甚至使系统出现振荡;

微分控制:可以减小超调量,克服振荡,使系统的稳定性提高,同时加快
系统的动态响应速度,减小调整时间,从而改善系统的动态性能。

位置型控制算法

位置闭环控制就是根据编码器的脉冲累加测量电机的位置信息,并与目标值进行比较,得到控制偏差,然后通过对偏差的比例、积分、微分进行控制,使偏差趋向于零的过程。

代码:

int Position_PID (int Encoder,int Target)
  {
   static float Bias,Pwm,Integral_bias,Last_Bias;
   Bias=Encoder-Target; //计算偏差
   Integral_bias+=Bias; //求出偏差的积分
   Pwm=Position_KP*Bias+Position_KI*Integral_bias+Position_KD*(Bias-Last_Bias);
   Last_Bias=Bias;       //保存上一次偏差
   return Pwm;           //输出
  }

假设采样时间间隔为T,则在k时刻:
偏差为e(k);
积分为e(k)+e(k-1)+e(k-2)+…+e(0);
微分为(e(k)-e(k-1))/T;
从而公式离散化后如下:



比例系数:Kp,

    积分系数:Kp*T/Ti,可以用Ki表示;

    微分系数:Kp*Td/T,可以用Kd表示;

    则公式可以写成如下形式:

增量型控制算法

速度闭环控制就是根据单位时间获取的脉冲数(这里使用了M法测速)测量电机的速度信息,并与目标值进行比较,得到控制偏差,然后通过对偏差的比例、积分、微分进行控制,使偏差趋向于零的过程。


Pwm+=Kp[e(k)-e(k-1)]+Kie(k)+Kd[e(k)-2e(k-1)+e(k-2)]
e(k):本次偏差
e(k-1):上一次的偏差
e(k-2):上上次的偏差
Pwm代表增量输出
在我们的速度控制闭环系统里面只使用PI控制,因此对PID控制器可简化为以下公式:
Pwm+=Kp[e(k)-e(k-1)]+Ki
e(k)


代码实现

int Incremental_PI (int Encoder,int Target)
{
  static float Bias,Pwm,Last_bias;
  Bias=Encoder-Target;                                  //计算偏差
  Pwm+=Velocity_KP*(Bias-Last_bias)+Velocity_KI*Bias;   //增量式PI控制器
  Last_bias=Bias;                                    //保存上一次偏差
  return Pwm;                                           //增量输出
}

增量式控制算法的优点

    (1) 增量算法不需要做累加,控制量增量的确定仅与最近几次误差采

样值有关,计算误差或计算精度问题,对控制量的计算影响较小。而位
置算法要用到过去的误差的累加值,容易产生大的累加误差。
(2)增量式算法得出的是控制量的增量,例如阀门控制中、只输出阀
门开度的变化部分,误动作影响小,必要时通过逻辑判断限制或禁止本
次输出,不会严重影响系统的工作。而位置算法的输出是控制量的全量
输出,误动作影响大。
(3) 采用增量算法,易于实现手动到自动的无冲击切换。
(4) 利用增量算法,也很容易得出位置算法u(k)= u(k-1)+△u(k)

如何调节pid三个参数(重点)

PID算法具有三大特性:
① 稳定性
② 快速性
③ 准确性
其实有时候并不一定都得用上
比如自动停车系统或者自动蓄水系统只需要用到1和3
刹车时用到123等等
接下来会举例说明

概念须知:
最大超调量:是响应曲线的最大峰值与稳态值的差,是评估系统稳定性的一个重要指标;

上升时间:是指响应曲线从原始工作状态出发,第一次到达输出稳态值所需的时间,是评估系统快速性的一个重要指标;

静差:是被控量的稳定值与给定值之差,一般用于衡量系统的准确性,

接下来我们需要调整KP,KI,KD的数值以达到最高效率

KP=500,KI=0,KD=0.响应曲线如图

特点:
比例控制较大,出现了震荡

需要加入微分d控制抑制

积分控制为零,但是没有静差,因为比例控制较强
(注意:经测试比例系数过大之后可减少静差出现)

KP=50,KI=0,KD=0.响应曲线如图

特点:
比例控制kp减小,无震荡,响应变慢了

无积分控制且比例控制较弱时,会出现静差(积分减少静差)

KP=500,KI=0,KD=400.响应曲线如图


特点:
1.在比例控制较强的情况下,加入比较大的微分控制,震动次数较小。
2.微分控制较大,响应变慢

KP=120,KI=0.1,KD=500.响应曲线如图


特点:

目标:控制电机转90°,需要严格控制超调量、和静差。但是对响应速度无要求。

1.因为响应速度无要求,一般比例控制应该给小一点。
2.加大系统的阻尼防止超调,也就是微分参数尽量大。
3.另外因为比例参数较小,应该加入积分控制减小静差。

参考1
参考2
PID讲四轴飞行器
PID控制电机

(0)

相关推荐