变速积分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两个参数的要求不精确,参数整定较容易。