首页 关于
树枝想去撕裂天空 / 却只戳了几个微小的窟窿 / 它透出天外的光亮 / 人们把它叫做月亮和星星
目录

PID控制器

PID控制器,通过对误差的比例(Propotion)、积分(Integral)和微分(Diffiential)的线性组合,生成针对被控对象的控制量。取这三项的英文首字母,称之为PID控制器。 这是一种广泛使用的,技术最为成熟的控制器。一些邪教信徒们,甚至把它的作用夸张到了可以控制一切。但PID控制器本质上是一种线性的控制器,这意味着只有在线性的, 或者近似线性的系统中,才有较好的控制效果。对于非线性的系统,如果仍然希望PID控制能够起作用,那么我们需要先对其进行线性化,有时甚至需要分段线性化, 之后才能比较顺利的使用PID控制器。

最早PID控制器是在模拟的连续系统中设计和实现的,本科那会儿的实验课还要用运放和阻容电感等器件,搭建模拟电路来实现PID控制。后来,随着计算机系统的普及, 低成本的单片机和嵌入式系统的广泛使用。离散化的数字控制器,因为其灵活的实现方式,逐渐的取代了传统的模拟控制器。

本文中,我们以控制一个直流有刷电机的转速为例介绍这一入门级的控制器。首先介绍模拟控制器,讲述PID三项的意义和作用。然后对模拟控制器进行离散化,得到数字控制器。

1. 模拟PID控制器

为了方便说明PID控制器的原理和使用方法,我们以直流有刷电机为例进行介绍。根据直流有刷电机的模型,我们知道电机转动产生的反电动势\(E_d\)与转速\(n\)之间存在如下的比例关系: $$ \begin{equation}\label{f1} E_d = C_E \Phi n \end{equation} $$ 其中,\(C_E\)是电机的电势常数,它是电机的基本参数之一,在其产品手册上应该能够找到。\(\Phi\)是描述磁场的磁通量,它也是一个应该可以在产品手册中找到的参数。 有的电机可能将这两个参数的乘积一起称为电势常数列举。在忽略电机线圈内阻的情况下,我们可以近似的认为加载在电机两端的电压与电机的转速之间存在正比关系。 这是一种线性关系,故而适用PID控制器。

图 1. 直流有刷电机速度控制框图 图 2. PID控制器框图

如上图1所示,是一个直流有刷电机速度控制框图。图中\(r\)是控制电机的目标转速,它与测速编码器反馈的转速测量值\(\hat{n}\)对比得到偏差量\(e = r - \hat{n}\)。 这一偏差量就是PID控制器的输入,经过下式(\(\ref{f2}\))输出控制量\(u\),最终形成电机两端的电压调整电机转速。

$$ \begin{equation}\label{f2} u = K_P \left(e + \frac{1}{T_I}\int{e dt} + T_D \frac{de}{dt}\right) \end{equation} $$

式中,\(K_P\)是控制器的比例系数,\(T_I\)是积分时间常数,\(T_D\)是微分时间常数。对其进行拉氏变换,可以写出PID控制器的传递函数如下,上图2则给出了其框图。

$$ \begin{equation}\label{f3} D(s) = K_P \left(1 + \frac{1}{T_I s} + T_D s\right) \end{equation} $$

一般来说,比例、积分、微分三项的作用如下:

2. 数字PID控制器

我们知道在计算机的数字世界里,都是通过对连续的模拟量进行采样,生成离散的数字量进行处理的。相应的,我们需要对传统的模拟PID控制器进行离散化处理,得到数字PID控制器。

所谓的采样,我们可以理解为每隔一个固定的时长,对连续的模拟量进行一次测量,所得到的测量值就是当次采样的数字量。间隔的固定时长通常被称为采样周期\(T\), 可以理解,采样周期越短,对模拟量的观测就越精细,所得到的数字量序列就越接近观测信号。在控制理论中有一则采样定理,说如果采样频率大于两倍的信号最高频率, 就可以不失真地恢复原连续信号。

如果,我们以\(T\)为采样周期,\(k\)标记采样序号,那么我们可以用一个数列来表示采样时间:

$$ \begin{equation}\label{f4} t \approx kT\ (k = 0, 1, 2, \cdots) \end{equation} $$

相应的,偏差值可以近似表示为,\(e(t) \approx e(kT)\)。为了书写方便,我们以下角标的形式\(e_k\)表示。那么式(\(\ref{f2}\))中的积分项和微分项可以近似表示为:

$$ \begin{align}\label{f5} \int e(t) dt & \approx T\sum_{j=0}^k e_j \\ \frac{de}{dt} & \approx \frac{e_k - e_{k-1}}{T} \end{align} $$

式(\(\ref{f2}\))可以改写为如下的形式:

$$ \begin{equation} \label{f6} u_k = K_P \left(e_k + \frac{T}{T_I}\sum_{j=0}^k e_j + T_D \frac{e_k - e_{k-1}}{T}\right) \end{equation} $$

其中,\(u_k\)是第\(k\)时刻控制器的输出量。令\(K_I = K_P \times T / T_I\),\(K_D = K_P \times T_D / T\),上式又可以写作:

$$ \begin{equation} \label{f7} u_k = K_P e_k + K_I\sum_{j=0}^k e_j + K_D (e_k - e_{k-1}) \end{equation} $$

这就是有些资料中提到的位置式PID控制器,理论上只要采样周期足够小,就可以得到和传统的模拟控制器近似的控制过程。这种控制器的输出是第\(k\)时刻的全部控制量, 所以有些资料中也称它是全量式PID。这种叫法主要是为了与将要介绍的增量式PID进行区分。

所谓的增量式PID,是指控制器的输出只是控制量的增量\(\Delta u_k\)。根据式(\(\ref{f6}\))我们可以写出第\(k-1\)时刻的控制量:

$$ \begin{equation} \label{f8} u_{k-1} = K_P \left(e_{k-1} + \frac{T}{T_I}\sum_{j=0}^{k-1} e_j + T_D \frac{e_{k-1} - e_{k-2}}{T}\right) \end{equation} $$

用式(\(\ref{f6}\))减去式(\(\ref{f8}\))可以得到\(k\)时刻的控制量增量:

$$ \begin{align} \label{f9} \Delta u_k & = u_k - u_{k-1} \\ & = K_P\left(e_k - e_{k-1} + \frac{T}{T_I} e_k + T_D \frac{e_k - 2e_{k-1} + e_{k-2}}{T} \right) \\ & = K_P\left(1 + \frac{T}{T_I} + \frac{T_D}{T}\right)e_k - K_P \left(1 + 2\frac{T_d}{T} \right)e_{k-1} + K_P \frac{T_d}{T} e_{k-2} \\ A & = K_P\left(1 + \frac{T}{T_I} + \frac{T_D}{T}\right) \\ B & = -K_P \left(1 + 2\frac{T_d}{T} \right) \\ C & = K_P \frac{T_d}{T} \\ \Delta u_k & = A e_k + B e_{k-1} + C e_{k-2} \end{align} $$

那么\(k\)时刻的控制量就可以写成增量的形式:

$$ \begin{equation}\label{f10} u_k = u_{k-1} + \Delta u_k \end{equation} $$

对于增量式控制器而言,我们只需要记录前后三次的偏差量以及上一时刻的控制量就可以完成控制,更容易在计算机中实现。

3. 总结

本文中通过对模拟PID控制器的介绍,我们了解到一般情况下,P用于提高系统的响应速度,I用于消除静差,D则用于减少超调量。然后,对模拟PID进行离散化得到数字的PID控制器, 大体上有全量式和增量式两种PID,由于增量式PID更容易在计算机中实现而被广泛的应用。

PID控制器的原理和公式都十分简单,所以我们能够在各种需要控制的场合中见到它。但是其控制参数的选择因为不同的系统,需要精心的调整,这是一个需要经验和运气的过程, 本文不再详细介绍。以后我们还会研究不需要调参的自适应控制方法。




Copyright @ 高乙超. All Rights Reserved. 京ICP备16033081号-1