PID 是一个闭环控制算法。因此要实现 PID算法,必须在硬件上具有闭环控制,就是得有反馈。比如控制一个电机的转速,就得有一个测量转速的传感器,并将结果反馈到控制路线上。以前对于闭环控制的一个最朴素的想法就只有P 控制,将当前结果反馈回来,再与目标相减,为正的话,就减速,为负的话就加速。

pid 偏差变化ec pid当偏差为负_稳态误差


其中P 表示比例控制、I 表示积分控制 、 D表示微分控制。一般,根据实际模型,可能会分别采用P、PI、PD、PID控制。

一、基本概念

1.基本偏差e(t)

e(t)=设定值 - 测量值
比如:设定室内空调为25度,而t时刻测量值为27度,则e(t) = -2 (度)理想的控制结果就是尽快使偏差为零,且偏差保持稳定。

稳态误差:系统进入到稳态时,测量值和设定值差值。
比如:初始室内温度为30度,设定室内空调为25度,但过了很长时间后,室内温度保持25.5度,则稳态误差就是-0.5度。

2.累计偏差∑e(t)

∑e(t)=e(t)+e(t-1)+e(t-2)+ …+e(1),这是我们每一次测量到的偏差值的总和,这是代数和,考虑到他的正负符号的运算的,这是面向积分项用的一个变动数据。

3.三个基本参数

三个基本参数:Kp,Ki,Kd.这是做好一个控制器的关键常数,分别称为比例常数积分常数微分常数,不同的控制对象他们需要选择不同的数值,还需要经过现场调试才能获得。

4.比例控制(Kp)

比例控制作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的稳态误差

5.积分控制(Ki)

在使用比例控制时,会产生稳态误差,为了消除稳态误差,在控制器中必须引入“ 积分项” 。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。 这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。 因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。但积分项的调节存在明显的滞后。而且 Ki 值越大,滞后效果越明显。
优点:消除稳态误差。
缺点:会使系统不稳定。

6.微分控制(Kd)

使用e(t) – e(t-1)控制,使用最近几次数据的变化趋势,一般将本次偏差减去上次偏差,根据结果,可以预测系统未来变化趋势。
优点:增加系统阻尼系数,可以抑制突发的干扰
缺点:会延长进入稳态时间

二、计算公式

偏差e(t),控制执行器功率Pout(t)。
使用P + I + D控制时,此时标准的计算公式为:
Pout (t)= Kp * e(t) + Ki * ∑e(t) + Kd * ( e(t) – e(t-1))

三、参数设定和调整

这是PID最困难的部分,编程时只设定他们的大概数值,然后通过反复的调试才能找到相对比较理想的参数值。以温度控制例:

  1. 加温很迅速就达到目标值,但是温度过冲很大:

a)比例系数太大,致使在未达到设定温度前加温比例过高;
b)微分系数过小,致使对对象反应不敏感;

  1. 加温经常达不到目标值,小于目标值的时间较多:

a)比例系数过小,加温比例不够;
b)积分系数过小,对恒偏差补偿不足;

  1. 基本上能够在控制目标上,但上下偏差偏大,经常波动:

a)微分系数过小,对即时变化反应不够快,反映措施不力;
b)积分系数过大,使微分反应被淹没钝化;
c)设定的基本定时周期过短,加热没有来得及传到测温点;

  1. 受工作环境影响较大,在稍有变动时就会引起温度的波动:

a)微分系数过小,对即时变化反应不够快,不能及时反映;
b)设定的基本定时周期过长,不能及时得到修正;

四、平衡车控制示例

基于平衡车角度变化的PD控制代码

/*
函数名:angle_PDcontrol
参数:无
返回值:无
函数功能:角度环PD控制
备注:
*/
void angle_PDcontrol(void)
{
	get_angleX();									//采集角度
	test_angleXsafe();							//验证角度安全
	if(safeFlag)
	{
		Et = setAngleX - trueAngleX ;						//得到偏差
		Pout = Kp * Et  + Kd * (Et - Et_last) ;			//PD公式,得到Pout
		Et_last = Et ;												//记录本次Et,用于下次微分控制
		//控制执行器(左右电机)
		leftMotor_move_control(Pout);						
		rightMotor_move_control(Pout);
	}
}

参考《PID算法详细解释》《PID算法原理及调整规律》《PID通俗教程》