也很庆幸最后有机会参与到历时四天三夜的电赛,可能是第一次参加这么大的比赛,很激动,也很紧张,那些天我估计自己总的睡眠时间不足10个小时,是蛮累的,但是现在想起来,很充足,很开心~
在那时候参加的是电赛的控制方向,我觉得印象最深的算法之一就是PID了,那时候控制方向的大佬们嘴上常挂着的就是PID的东西,P大点,小点什么的当时可能是数学没学好的原因吧,对微积分都有点抗拒,所以这个算法学得并不是很好,后来很长一段时间都不曾进行实践,所以至今我也觉得自己学得并不是太好,所以打算重新对PID算法进行理解,并做下记录进行分享,有算法大佬发现错误的话,麻烦指出哦~
今天先对PID算法中的模拟PID进行理解
PID简介
PID控制器就是将系统的输出值与预先设定的一个值的误差通过比例(Proportion)、积分(Integral) 和微分(Differential)的线性组合计算得到一个控制量,再使用该控制量去控制被控制的对象。
模拟PID控制原理
在这里使用直流电机的例子进行理解,先看一个使用PID调节直流电机速度的系统框图:
图中,r(t)是想要的电机转速,也就是提前设定的一个值,y(t)是实际的电机转速,e(t)是两者的偏差即e(t), u(t)是PID的输出。
偏差e(t)的计算如下:
这个偏差就是PID控制器的输入,经过PID控制器,可计算出u(t),然后将u(t)作为直流电机(注:需要有电机的驱动才可带动电机的转动,这里的直流电机包括电机驱动模块在内)的输入。具体的模拟PID计算公式,也可以说是PID的一个控制规律如下:
注:Kp、Ti和Td分别是PID控制的比例系数、积分系数(积分时间)和微分系数(微分时间)
接下来对PID控制器中的比例、积分和微分这三个部分进行分析。
1、比例部分:
在模拟PID控制器中,比例部分的作用是对偏差做出瞬间的反应,当设定的转速和实际的转速产生偏差时,控制器也立即产生控制作用,使控制量向减少偏差的方向变化。而控制作用的强弱就取决于比例系数Kp,Kp越大,控制作用越强,相应的过渡过程也越快,因此控制过程的静态偏差就越小;然而当Kp过大,容易产生振荡,从而破坏系统的稳定性。因此Kp选择必须恰当才能实现过渡过程快,静差小且系统稳定的效果。
2、积分部分:
从积分的公式可知,当存在偏差时,它的控制作用会不断的增强,直至偏差e(t)=0时,积分是一个常数,从而控制作用也是稳定的一个强度,可以看出积分部分是能够消除偏差的。
积分部分虽然可以消除静态误差,但是会因此降低系统的响应速度,增加系统的超调量。当积分系数Ti较大时,积分的作用就弱,这时的系统在过渡期间不会产生振荡,也可以减少超调量,提高系统的稳定性,但是这将导致消除静态误差的过程所耗的时间变长;如果积分系数Ti较小,积分的作用较强,这时候系统过渡过程可能会产生振荡,但是消除静差的时间将变短。所以需要根据实际控制的具体情况来确定Ti的值。
3、微分部分:
实际的控制系统除了希望可以消除静差,还希望加快调节过程。当偏差出现的瞬间,比例和积分这两部分可以分别对偏差量做出立即响应和消除静差,而在偏差的变化时,要对其变化趋势做一个预判,然后给出一个纠正的能量,这就需要有微分部分进行作用。
微分部分的作用就是阻止偏差的变化,根据偏差变化的趋势进行控制。偏差变化越快,微分部分的控制能量就越大,在这个偏差过大之前就纠正回来。讲到这里,就可以发现它有减小超调量、克服振荡使系统趋于稳定的作用。
但是有一点要注意,就是微分对于噪声信号也很敏感,对于一些具有大噪声的系统一般不使用微分,要不就是在使用前对输入信号进行滤波处理。
微分系数Td越大,它抑制偏差e(t)变化的能力也越大,反之,微分系数Td越小,抑制能力也越弱,因此需要适当的选择微分系数Td,使得微分作用达到最优,让系统更加稳定。
模拟PID相当于已经讲完了,不知道是否发现,该种类型的PID控制器是连续输出控制量的,因此这部分适用于硬件的操作,而我们在一些软件平台进行使用时,并不能实现这样连续的效果,需要对其进行离散化处理,才可以在软件上实现,也就是下次要讲的数字PID控制。