1、自动控制系统
在直流有刷电机的基础驱动实验中,如果电机负载不变,我们只要设置固定的占空比(电压),电机的速度就会稳定在目标范围。然而,在实际的应用中,负载可能会发生变化,此时如果还是输出固定的电压,电机的速度就偏离目标范围了,为了解决这个问题,我们需要引入自动控制系统中的闭环控制。
用自动控制装置,对关键参数进行自动控制,使它在受到外界干扰而偏离正常状态时,能够被自动地调节回到目标范围内。
自动控制系统分为开环控制系统和闭环控制系统 。
1.1、开环控制系统
在开环控制系统中,系统输出只受输入的控制,没有反馈回路,控制精度和抑制干扰的特性都比较差。
电风扇风力控制系统就是一个开环控制的系统,我们设置好目标风力之后,
控制电路就输出相应的电压(假设是电压控制),此时电机的扇叶转速就被控制在目标范围了。
理想状态下,风扇的输出风力确实可以稳定在目标值附近,然而,在实际的使用中,电机会逐渐老化,扇叶上的灰尘也会让负载增大,此时我们所设定目标风力和实际风力可能就存在偏差了,此时就需要用到闭环控制系统了。
1.2、闭环控制系统
在闭环控制系统中,引入了反馈回路,利用输出(实际值)和输入(目标值)的偏差,对系统进行控制,避免偏离预定目标。
在电机运行中,根据设定转速和反馈转速进行误差计算,通过调整电流等参数的大小来尽量保证设定转速和反馈转速一致。
PID算法只在闭环控制系统中起作用。
2、PID算法简介
PID 算法是闭环控制系统中常用的算法,PID 分别是 Proportion(比例)、Integral(积分)、 Differential(微分)的首字母缩写。它是一种结合比例、积分和微分三个环节于一体的闭环控制算法,具体的控制流程如图如下所示。
将输入目标值和实际输出值进行偏差的计算,然后把计算结果输入到 PID 控制算法中,经过比例、积分和微分三个环节的运算,运算后的输出作用于执行器,从而让系统的实际值逐渐靠近目标值。
3、比例(KP)
比例环节可以成比例地反应控制系统的偏差信号,即输出与输入偏差成正比,可以用来
减小系统的偏差。此环节的公式如下:
u = Kp × e
u ----- 输出
Kp ----- 比例系数
e ----- 偏差
假设我们现在需要调节电机转速为 5000rpm,而实际转速为 4522rpm,此时的偏差 e=478rpm,由比例环节的公式可知,当 e 确定时,Kp 越大则输出 u 越大,也就是转速的调节力度越大,这样就可以更快地达到目标转速;而当 Kp 确定时,偏差 e 越大则输出 u 越大。由此可见,在比例环节中,比例系数 Kp 和偏差 e 越大则系统消除偏差的时间越短,具体的曲线表现如图。
当 Kp 的值越大时,其对应的橙色曲线达到目标值的时间就越短,与此同时,橙色曲线出现了一定幅度的超调和振荡,这会使得系统的稳定性下降,因此,我们在设置比例系数的时候,并不是越大越好,而是要兼顾消除偏差的时间以及整个系统的稳定性。
然而,在实际的应用中,如果仅有比例环节的控制,可能会给系统带来一个问题:静态误差。静态误差是指系统控制过程趋于稳定时,目标值与实测值之间的偏差。
假如我们设置转速为3000rpm,实际转速2950rpm,KP为固定值,我们可以通过KP让其1秒内提升转速50rpm,但是由于摩擦力等外界环境影响,使其1秒内降速50rpm,此时系统就会永远保持这种静态误差,实际转速一直维持在2950rpm。
我们可以通过增大 Kp 来增大输出,以此消除偏差。在实际应用中,此方法的局限性很大,因为我们不能确定偏差的大小,它是在实时变化的,如果我们把 Kp 设置得太大,就会引入超调和振荡,让整个系统的稳定性变差。因此,为了消除静态误差,我们引入了积分环节。
4、积分(KI)
积分环节可以对偏差 e 进行积分,只要存在偏差,积分环节就会不断起作用,主要用于消除静态误差,提高系统的无差度。引入积分环节后,比例+积分环节的公式如下:
u = Kp*e + Ki*∑e
u ----- 输出
e ----- 偏差
∑e ----- 累计偏差
Kp ----- 比例系数
Ki ----- 积分系数
此时如果存在50rpm的静态误差,KI积分会一直累计计算误差,以此增大输出,用于消除静态误差。从上述公式中可以得知,当积分系数 Ki 或者累计偏差越大时,输出就越大,系统消除静态误差的时间就越短,具体的曲线表现如图。
当 Ki 的值越大时,其对应的橙色曲线达到目标值的时间就越短,与此同时,橙色曲线出现了一定幅度的超调和振荡,这会使得系统的稳定性下降,因此,我们在设置积分系数的时候,并不是越大越好,而是要兼顾消除静态误差的时间以及整个系统的稳定性。
只要系统还存在偏差,积分环节就会不断地累计偏差。当系统偏差为 0的时候,说明已经达到目标值,此时的累计偏差不再变化,但是积分环节依旧在发挥作用(此时往往作用最大),这就很容易产生超调的现象了。因此,我们需要引入微分环节,提前减弱输出,抑制超调的发生。
5、微分(KD)
微分环节可以反应偏差量的变化趋势,根据偏差的变化量提前作出相应控制,减小超调,克服振荡。引入微分环节后,比例+积分+微分环节的公式如下:
假设目标转速为 6000rpm,在某阶段第1秒的时候存在偏差50rpm,经过一段时间的调节,到了第4秒,此时偏差已经缩小到10rpm,偏差的变化量= 第4秒的偏差(第 k 次)-第1秒的偏差(第 k-1 次)= -40,结合上述公式可知,此时微分环节会削弱比例和积分环节的作用,减小输出以抑制超调。
至此,PID 算法三个环节的作用已经介绍完,我们最终得到了 PID 算法的一个公式:
6、PID算法离散公式
6.1、位置式
该公式的计算需要全部控制量参与,它的每一次输出都和过去的状态有关。
6.2、增量式
增量式 PID 的计算并不需要一直累计偏差,它的输出与近三次的偏差有很大关系。
注意:增量式 PID 公式输出的只是控制量的增量。我们以一个实例来理解这句话:假设电机实际转速为 50RPM,现在我们要让它加速到 60RPM,如果采用的是位置式 PID,系统将直接输出 60RPM对应的控制量(占空比);如果采用的是增量式 PID,系统将输出提速 10RPM对应的控制量(占空比),此时我们还需要加上上次(50RPM)的输出。
6.3、位置式和增量式的优缺点
① 位置式:
优点:位置式 PID 是一种非递推式算法,带有积分作用,适用于不带积分部件的对象。
缺点:全量计算,计算错误影响很大;需要对偏差进行累加,运算量大。
② 增量式:
优点:只输出增量,计算错误影响小;不需要累计偏差,运算量少,实时性相对较好。
缺点:积分截断效应大,有稳态误差。
7、PID算法代码实现
位置式PID代码如下
增量式PID代码如下