PID参数解析:一文读懂PID并会调试kp,ki,kd(位置式 增量式PID)
PID参数解析:一文读懂PID并会调试kp,ki,kd(位置式 增量式PID)
PID控制是工业自动化领域中最常用的控制算法之一,广泛应用于各种需要精确控制的场景,如温度控制、速度控制、位置控制等。本文将从PID控制的基本概念出发,深入解析其各个参数的作用及其对系统性能的影响,并通过具体的代码示例和响应曲线分析,帮助读者掌握PID参数的调节方法。
什么是PID
PID控制是一种基于误差的反馈控制算法,通过比例(P)、积分(I)和微分(D)三个参数的组合来实现对系统的精确控制。具体来说:
- P(比例):将误差与比例系数相乘,直接反映误差的大小。
- I(积分):对误差进行积分运算,消除系统的稳态误差。
- D(微分):对误差进行微分运算,预测误差的变化趋势。
在实际应用中,PID控制的目标是使系统的输出尽可能接近设定值,同时保证系统的稳定性和响应速度。
PID参数对系统性能的影响
比例系数Kp
随着比例系数Kp的增加,系统的响应速度会加快,但同时也会导致超调量增大,系统震荡加剧。因此,Kp的设置需要在响应速度和稳定性之间取得平衡。
积分时间常数Ti
积分作用的强弱取决于积分时间常数Ti。Ti越小,积分作用就越强,反之则积分作用减弱。积分控制的主要作用是改善系统的稳态性能,消除系统的稳态误差。但是,加入积分控制会使得系统的相对稳定性变差,Ti值的减小可能导致系统的超调量增大,Ti值的增大可能使得系统响应趋于稳态值的速度减慢。
微分时间常数Td
随着微分时间常数Td的增加,闭环系统响应的响应速度加快,调节时间减小。微分环节的主要作用是提高系统的响应速度。但是过大的Kd值会因为系统造成或者受控对象的大时间延迟而出现问题。微分环节对于信号无变化或变化缓慢的系统不起作用。
PID控制算法的两种实现方式
位置型控制算法
位置闭环控制就是根据编码器的脉冲累加测量电机的位置信息,并与目标值进行比较,得到控制偏差,然后通过对偏差的比例、积分、微分进行控制,使偏差趋向于零的过程。
代码实现如下:
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; //输出
}
增量型控制算法
速度闭环控制就是根据单位时间获取的脉冲数(这里使用了M法测速)测量电机的速度信息,并与目标值进行比较,得到控制偏差,然后通过对偏差的比例、积分、微分进行控制,使偏差趋向于零的过程。
代码实现如下:
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; //增量输出
}
如何调节PID三个参数
PID算法具有三大特性:稳定性、快速性和准确性。在实际应用中,需要根据具体的应用场景来调整PID参数。以下是几个具体的调节示例:
示例1:KP=500, KI=0, KD=0
特点:
- 比例控制较大,出现了震荡
- 需要加入微分D控制抑制
- 积分控制为零,但是没有静差,因为比例控制较强
示例2:KP=50, KI=0, KD=0
特点:
- 比例控制KP减小,无震荡,响应变慢了
- 无积分控制且比例控制较弱时,会出现静差(积分减少静差)
示例3:KP=500, KI=0, KD=400
特点:
- 在比例控制较强的情况下,加入比较大的微分控制,震动次数较小。
- 微分控制较大,响应变慢
示例4:KP=120, KI=0.1, KD=500
目标:控制电机转90°,需要严格控制超调量、和静差。但是对响应速度无要求。
特点:
- 因为响应速度无要求,一般比例控制应该给小一点。
- 加大系统的阻尼防止超调,也就是微分参数尽量大。
- 另外因为比例参数较小,应该加入积分控制减小静差。