由于博主非自动化相关专业学生,如有疏漏以及谬误还请不吝赐教。感谢~
由于常见的是二阶系统,所以本文以二阶系统为例,展开分析。
专家PID控制原理
PID专家控制的实质是,基于受控对象和控制规律的各种知识,无需知道被控对象的精确模型,利用专家经验来设计PID参数。
- 专家PID控制是一种直接型专家控制器。
对典型的二阶系统单位阶跃响应过程作如下分析。
专家控制系统一般不需要知道被控对象的精确模型,是基于受控对象和控制规律的各种知识,利用在该领域的专家经验来制定决策。因此我们无需建立这个控制系统的模型和传递函数。
- 上面说了我们不需要做什么,那我们需要做什么?以及怎么做?
对于这个问题,我们首先需要分析对于“典型的二阶系统”我们掌握的知识、经验或规律。
无论采取什么样的算法来控制系统,最主要的目的是使系统的误差足够小。大误差要对应强的控制来矫正,小误差对应弱的控制作用。当经过控制后误差小到我们设定的范围,我们就保持当前的控制作用即可,使系统保持稳定,并改善对于稳定状态的性能指标。
根据以上分析,我们需要首先知道“典型的二阶系统”的误差变化曲线是什么样子的。
典型的二阶系统单位阶跃响应误差曲线如图所示。
图中的区域可以分为以下两类:
- 误差的绝对值在减小 (图中曲线白色部分)
- 误差的绝对值在增大 (图中阴影部分)
根据我们的经验,误差及其变化是我们实时控制算法的依据。
我们以PID的误差及其变化为依据,按照下述步骤设计我们的专家PID控制器:
- 引入一些定义
同时定义2个常数: M 1 , M 2 M_1,M_2 M1,M2并且 M 1 > M 2 > = 0 M_1>M_2>=0 M1>M2>=0 - 根据误差及其变化,专家PID可以分为如下5种情况
(1) 当 ∣ e ( k ) ∣ > M 1 |e(k)|>M_1 ∣e(k)∣>M1时
说明误差的绝对值已经很大。不论误差变化趋势如何,都应考虑控制器的输出应按最大(小)输出,以达到迅速调整误差,使误差绝对值以最大速度减小。同时需要避免超调。(此时,相当于实施开环控制)
(2)当 e ( k ) Δ e ( k ) > 0 e(k)\Delta{e(k)}>0 e(k)Δe(k)>0或 Δ e ( k ) = 0 \Delta{e(k)}=0 Δe(k)=0时
说明误差在朝绝对值增大的方向变化或者误差保持不变
此时如果 ∣ e ( k ) ∣ > = M 2 |e(k)|>= M_2 ∣e(k)∣>=M2,说明误差也较大,考虑由控制器实施较强的控制作用,以达到扭转误差绝对值朝减小的方向变化,并迅速减少误差的绝对值,控制器的输出为
u ( k ) = u ( k − 1 ) + k 1 { k p [ e ( k ) − e ( k − 1 ) ] + k i e ( k ) + k d [ e ( k ) − 2 e ( k − 1 ) + e ( k − 2 ) ] } u(k)=u(k-1)+k_1\{k_p[e(k)-e(k-1)]+k_ie(k)+k_d[e(k)-2e(k-1)+e(k-2)]\} u(k)=u(k−1)+k1{kp[e(k)−e(k−1)]+kie(k)+kd[e(k)−2e(k−1)+e(k−2)]}
Note:上述公式为增量式PID算法,我们还加上了 k 1 k_1 k1来增强控制作用。
如果此时 ∣ e ( k ) ∣ < M 2 |e(k)|<M_2 ∣e(k)∣<M2,说明尽管误差朝绝对值增大的方向变化,但是误差绝对值本身并不大,考虑由控制器实施一般的控制作用,只要扭转误差的变化趋势,使其朝误差绝对值减小方向变化,控制器输出为:
u ( k ) = u ( k − 1 ) + k p [ e ( k ) − e ( k − 1 ) ] + k i e ( k ) + k d [ e ( k ) − 2 e ( k − 1 ) + e ( k − 2 ) ] u(k)=u(k-1)+k_p[e(k)-e(k-1)]+k_ie(k)+k_d[e(k)-2e(k-1)+e(k-2)] u(k)=u(k−1)+kp[e(k)−e(k−1)]+kie(k)+kd[e(k)−2e(k−1)+e(k−2)]
对比上面缺少了 k 1 k_1 k1系数。
[注意](3)(4)的3个条件中,前两个是逻辑与的关系,其整体与最后的e(k)=0是逻辑或的关系,请勿对这段描述理解错。(文章中条件中的逗号是同时满足的意思)
应用举例
求三阶传递函数的阶跃响应
G
p
(
s
)
=
523500
s
3
+
87.35
s
2
+
10470
s
G_p(s)=\frac{523500}{s^3+87.35s^2+10470s}
Gp(s)=s3+87.35s2+10470s523500
其中,对象采样时间为1ms。
在仿真过程中
ϵ
\epsilon
ϵ取0.001。程序中的五条规则和控制算法中的5种情况相对应。
采用Z变换进行离散化,经过Z变换离散化后的对象为:
y
(
k
)
=
−
d
e
n
(
2
)
y
(
k
−
1
)
−
d
e
n
(
3
)
y
(
k
−
2
)
−
d
e
n
(
4
)
y
(
k
−
3
)
+
n
u
m
(
2
)
u
(
k
−
1
)
+
n
u
m
(
3
)
u
(
k
−
2
)
+
n
u
m
(
4
)
u
(
k
−
3
)
y(k)=-den(2)y(k-1)-den(3)y(k-2)-den(4)y(k-3)+num(2)u(k-1)+num(3)u(k-2)+num(4)u(k-3)
y(k)=−den(2)y(k−1)−den(3)y(k−2)−den(4)y(k−3)+num(2)u(k−1)+num(3)u(k−2)+num(4)u(k−3)
专家PID控制
代码参考文末附录资料。
对比试验:常规PID控制
Reference
https://wenku.baidu.com/view/3b505c86a200a6c30c22590102020740be1ecd83.html