本文主要是介绍变速积分PID控制算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
变速积分PID控制算法
- 变速积分PID控制算法:
- 变速积分PID的基本思想:
- 变速积分的PID积分项表达式:
注:本文内容摘自《先进PID控制MATLAB仿真(第4版)》刘金琨 编著,研读此书受益匪浅,感谢作者!
变速积分PID控制算法:
在普通的PID控制算法中,由于积分系数 k i k_i ki是常数,所以在整个控制过程中,积分增量不变。而系统对积分项的要求是,系统偏差大时积分作用应减弱甚至全无,而在偏差小时则应加强。积分系数取大了会产生超调,甚至积分饱和,取小了又迟迟不能消除静差。因此,如何根据系统偏差大小改变积分的速度,对于提高系统品质是很重要的。变速积分PID可较好地解决这一问题。
变速积分PID的基本思想:
变速积分PID的基本思想是设法改变积分项的累加速度,使其与偏差大小相对应:偏差越大,积分越慢,反之则越快。为此,设置系数 f ( e ( k ) ) f(e(k)) f(e(k)),它是 e ( k ) e(k) e(k)的函数。当 ∣ e ( k ) ∣ |e(k)| ∣e(k)∣增大时, f f f减小,反之增大。
变速积分的PID积分项表达式:
u i ( k ) = k i ( ∑ i = 0 k − 1 e ( i ) + f [ e ( k ) ] e ( k ) ) T u_i(k)=k_i (\sum_{i=0}^{k-1}e(i)+f[e(k)]e(k))T ui(k)=ki(i=0∑k−1e(i)+f[e(k)]e(k))T
系数 f f f与偏差当前值 ∣ e ( k ) ∣ |e(k)| ∣e(k)∣的关系可以是线性的或非线性的,可设为
f [ e ( k ) ] = { 1 ∣ e ( k ) ∣ ≤ B A − ∣ e ( k ) ∣ + B A B < ∣ e ( k ) ∣ ≤ A + B 0 ∣ e ( k ) ∣ > A + B f[e(k)]=\begin{cases} 1 & \text {}|e(k)|\leq B \\ \frac{A-|e(k)|+B}{A} & \text{} B<|e(k)|\leq A+B \\ 0 & \text{} |e(k)|>A+B\end{cases} f[e(k)]=⎩⎪⎨⎪⎧1AA−∣e(k)∣+B0∣e(k)∣≤BB<∣e(k)∣≤A+B∣e(k)∣>A+B
f f f值在[0,1]区间内变化,当偏差 ∣ e ( k ) ∣ |e(k)| ∣e(k)∣大于所给分离区间 A + B A+B A+B后, f = 0 f=0 f=0,不再对当前值 e ( k ) e(k) e(k)进行继续累加;当偏差 ∣ e ( k ) ∣ |e(k)| ∣e(k)∣小于 B B B时,加入当前值 e ( k ) e(k) e(k),即积分项变为 u i ( k ) = k i ∑ i = 0 k e ( i ) T u_i(k)=k_i\sum_{i=0}^{k}e(i)T ui(k)=ki∑i=0ke(i)T,与一般PID积分项相同,积分动作达到最高速;而当偏差 ∣ e ( k ) ∣ |e(k)| ∣e(k)∣在 B 与 A + B B与A+B B与A+B之间时,则累加计入的是部分当前值,其值在 0 − ∣ e ( k ) ∣ 0-|e(k)| 0−∣e(k)∣之间随 ∣ e ( k ) ∣ |e(k)| ∣e(k)∣的大小而变化,因此,其积分速度在 k i ∑ i = 0 k − 1 e ( i ) T k_i\sum_{i=0}^{k-1}e(i)T ki∑i=0k−1e(i)T和 k i ∑ i = 0 k e ( i ) T k_i\sum_{i=0}^{k}e(i)T ki∑i=0ke(i)T之间。变速积分PID算法为:
u ( k ) = k p e ( k ) + k i ( ∑ i = 0 k − 1 e ( i ) + f [ e ( k ) ] e ( k ) ) ∗ T + k d [ e ( k ) − e ( k − 1 ) ] u(k)=k_pe(k)+k_i(\sum_{i=0}^{k-1}e(i)+f[e(k)]e(k))*T+k_d[e(k)-e(k-1)] u(k)=kpe(k)+ki(i=0∑k−1e(i)+f[e(k)]e(k))∗T+kd[e(k)−e(k−1)]
这种算法对A,B两个参数的要求不精确,参数整定较容易。
这篇关于变速积分PID控制算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!