PID控制器(比例-积分-微分控制器),由比例单元(Proportional)、积分单元(Integral)和微分单元(Derivative)组成[1]。可以透过调整这三个单元的增益
K
p
{\displaystyle K_{p}}
,
K
i
{\displaystyle K_{i}}
和
K
d
{\displaystyle K_{d}}
来调定其特性。PID控制器主要适用于基本上线性,且动态特性不随时间变化的系统。
PID控制器的方块图
PID控制器是一个在工业控制应用中常见的回授回路部件。这个控制器把收集到的数据和一个参考值进行比较,然后把这个差别用于计算新的输入值,这个新的输入值的目的是可以让系统的数据达到或者保持在参考值。PID控制器可以根据历史数据和差别的出现率来调整输入值,使系统更加准确而稳定。
PID控制器的比例单元(P)、积分单元(I)和微分单元(D)分别对应目前误差、过去累计误差及未来误差。若是不知道受控系统的特性,一般认为PID控制器是最适用的控制器[2]。借由调整PID控制器的三个参数,可以调整控制系统,设法满足设计需求。控制器的响应可以用控制器对误差的反应快慢、控制器过冲的程度及系统震荡的程度来表示。不过使用PID控制器不一定保证可达到系统的最佳控制,也不保证系统稳定性。
有些应用只需要PID控制器的部分单元,可以将不需要单元的参数设为零即可。因此PID控制器可以变成PI控制器、PD控制器、P控制器或I控制器。其中又以PI控制器比较常用,因为D控制器对回授噪声十分敏感,而若没有I控制器的话,系统不会回到参考值,会存在一个误差量。
反馈回路基础[编辑]
PID回路是要自动实现一个操作人员用量具和控制旋钮进行的工作,这个操作人员会用量具测系统输出的结果,然后用控制旋钮来调整这个系统的输入,直到系统的输出在量具上显示稳定的需求的结果,在旧的控制文档里,这个过程叫做“复位”行为,量具被称为“测量”,需要的结果被称为“设定值”而设定值和测量之间的差别被称为“误差”。
一个控制回路包括三个部分:
系统的传感器得到的测量结果
控制器作出决定
通过一个输出设备来作出反应
控制器从传感器得到测量结果,然后用需求结果减去测量结果来得到误差。然后用误差来计算出一个对系统的纠正值来作为输入结果,这样系统就可以从它的输出结果中消除误差。
在一个PID回路中,这个纠正值有三种算法,消除目前的误差,平均过去的误差,和透过误差的改变来预测将来的误差。
比如说,假如利用水箱在为植物提供水,水箱的水需要保持在一定的高度。可以用传感器来检查水箱里水的高度,这样就得到了测量结果。控制器会有一个固定的用户输入值来表示水箱需要的水面高度,假设这个值是保持65%的水量。控制器的输出设备会连在由马达控制的水阀门上。打开阀门就会给水箱注水,关上阀门就会让水箱里的水量下降。这个阀门的控制信号就是控制变量。
PID控制器可以用来控制任何可被测量及可被控制变量。比如,它可以用来控制温度、压强、流量、化学成分、速度等等。汽车上的巡航定速功能就是一个例子。
一些控制系统把数个PID控制器串联起来,或是连成网络。这样的话,一个主控制器可能会为其他控制输出结果。一个常见的例子是马达的控制。控制系统会需要马达有一个受控的速度,最后停在一个确定的位置。可由一个子控制器用来管理速度,但是这个子控制器的速度是由控制马达位置的主控制器来管理的。
连合和串联控制在化学过程控制系统中相当常见。
历史及应用[编辑]
PID控制理论是由观察舵手的动作而来
PID控制器可以追溯到1890年代的调速器(英语:Governor (device))设计[2][3]。PID控制器是在船舶自动操作系统中渐渐发展。1911年Elmer Sperry(英语:Elmer Sperry)开发的控制器是最早期PID型控制器的其中之一[4],而第一个发表PID控制器理论分析论文的是俄裔美国工程师尼古拉斯·米诺尔斯基(英语:Nicolas Minorsky)(Minorsky 1922)。米诺尔斯基当时在设计美国海军的自动操作系统,他的设计是基于对舵手的观察,控制船舶不只是依目前的误差,也考虑过去的误差以及误差的变化趋势[5],后来米诺尔斯基也用数学的方式加以推导[6]。他的目的是在于稳定性,而不是泛用的控制,因此大幅的简化了问题。比例控制可以在小的扰动下有稳定性,但无法消除稳态误差,因此加入了积分项,后来也加入了微分项。
当时在新墨西哥号战舰上进行测试,利用控制器控制舵的角速度,利用PI控制器可以角度误差维持在±2°以内,若加上D控制,角度误差维持在±1/6°,比最好的舵手还要好[7]。
不过因为海军人员的抗拒,海军那时候未使用这套系统,在1930年代也有其他人作出类似的研究。
在自动控制发展的早期,用机械设备来实现PID控制,是由杠杆、弹簧、阻尼及质量组成,多半会用压缩气体驱动。气动控制器还一度是工业上的标准。
电子的类比控制器可以用晶体管、真空管、电容器及电阻器组成。许多复杂的电子系统中常会包括PID控制,例如磁盘的读写头定位、电源供应器的电源条件、甚至是现代地震仪的运动侦测线路。现代电子控制器已大幅的被这些利用单芯片或FPGA来实现的数位控制器所取代。
现代工业使用的PID控制器多半会用PLC或有安装面板的数位控制器来实现。软件实现的好处是相对低廉,配合PID实现方式调整的灵敏度很大。在工业锅炉、塑胶射出机械、烫金机及包装行业中都会用到PID控制。
变化的电压输出可以用PWM来实现,也就是固定周期,依要输出的量去调整周期中输出高电势的时间。对于数位系统,其时间比例有可能是离散的,例如周期是二秒,高电势时间设定单位为0.1秒,表示可以分为20格,精度5%,因此存在一量化误差,但只要时间分辨率够高,就会有不错的效果。
理论[编辑]
PID是以它的三种纠正算法而命名。受控变数是三种算法(比例、积分、微分)相加后的结果,即为其输出,其输入为误差值(设定值减去测量值后的结果)或是由误差值衍生的信号。若定义
u
(
t
)
{\displaystyle u(t)}
为控制输出,PID算法可以用下式表示:
u
(
t
)
=
M
V
(
t
)
=
K
p
e
(
t
)
+
K
i
∫
0
t
e
(
τ
)
d
τ
+
K
d
d
d
t
e
(
t
)
{\displaystyle \mathrm {u} (t)=\mathrm {MV} (t)=K_{p}{e(t)}+K_{i}\int _{0}^{t}{e(\tau )}\,{d\tau }+K_{d}{\frac {d}{dt}}e(t)}
其中
K
p
{\displaystyle K_{p}}
:比例增益,是调适参数
K
i
{\displaystyle K_{i}}
:积分增益,也是调适参数
K
d
{\displaystyle K_{d}}
:微分增益,也是调适参数
e
{\displaystyle e}
:误差=设定值(SP)- 回授值(PV)
t
{\displaystyle t}
:目前时间
τ
{\displaystyle \tau }
:积分变数,数值从0到目前时间
t
{\displaystyle t}
用更专业的话来讲,PID控制器可以视为是频域系统的滤波器。在计算控制器最终是否会达到稳定结果时,此性质很有用。如果数值挑选不当,控制系统的输入值会反复振荡,这导致系统可能永远无法达到预设值。
PID控制器的一般转移函数是:
H
(
s
)
=
K
d
s
2
+
K
p
s
+
K
i
s
+
C
{\displaystyle H(s)={\frac {K_{d}s^{2}+K_{p}s+K_{i}}{s+C}}}
,
其中C是一个取决于系统带宽的常数。
比例控件[编辑]
主条目:比例控制
不同比例增益Kp下,受控变数对时间的变化(Ki和Kd维持定值)
比例控制考虑当前误差,误差值和一个正值的常数Kp(表示比例)相乘。Kp只是在控制器的输出和系统的误差成比例的时候成立。比如说,一个电热器控制器是在目标温度和实际温度差10°C时有100%的输出,而其目标值是25°C。那么它在15°C的时候会输出100%,在20°C的时候会输出50%,在24°C的时候输出10%,注意在误差是0的时候,控制器的输出也是0。
比例控制的输出如下:
P
o
u
t
=
K
p
e
(
t
)
{\displaystyle P_{\mathrm {out} }=K_{p}\,{e(t)}}
若比例增益大,在相同误差量下,会有较大的输出,但若比例增益太大,会使系统不稳定。相反的,若比例增益小,若在相同误差量下,其输出较小,因此控制器会较不敏感的。若比例增益太小,当有干扰出现时,其控制信号可能不够大,无法修正干扰的影响。
稳态误差[编辑]
比例控制在误差为0时,其输出也会为0。若要让受控输出为非零的数值,就需要产生一个稳态误差或偏移量[a]。
积分控件[编辑]
不同积分增益Ki下,受控变数对时间的变化(Kp和Kd维持定值)
积分控制考虑过去误差,将误差值过去一段时间和(误差和)乘以一个正值的常数Ki。Ki从过去的平均误差值来找到系统的输出结果和预定值的平均误差。一个简单的比例系统会震荡,会在预定值的附近来回变化,因为系统无法消除多余的纠正。通过加上负的平均误差值,平均系统误差值就会渐渐减少。所以,最终这个PID回路系统会在设定值稳定下来。
积分控制的输出如下:
I
o
u
t
=
K
i
∫
0
t
e
(
τ
)
d
τ
{\displaystyle I_{\mathrm {out} }=K_{i}\int _{0}^{t}{e(\tau )}\,{d\tau }}
积分控制会加速系统趋近设定值的过程,并且消除纯比例控制器会出现的稳态误差。积分增益越大,趋近设定值的速度越快,不过因为积分控制会累计过去所有的误差,可能会使回授值出现过冲的情形。
微分控件[编辑]
不同微分增益Kd下,受控变数对时间的变化(Kp和Ki维持定值)
微分控制考虑将来误差,计算误差的一阶导,并和一个正值的常数Kd相乘。这个导数的控制会对系统的改变作出反应。导数的结果越大,那么控制系统就对输出结果作出更快速的反应。这个Kd参数也是PID被称为可预测的控制器的原因。Kd参数对减少控制器短期的改变很有帮助。一些实际中的速度缓慢的系统可以不需要Kd参数。
微分控制的输出如下:
D
o
u
t
=
K
d
d
d
t
e
(
t
)
{\displaystyle D_{\mathrm {out} }=K_{d}{\frac {d}{dt}}e(t)}
微分控制可以提升整定时间及系统稳定性[8][9]。不过因为纯微分器不是因果系统,因此在PID系统实现时,一般会为微分控制加上一个低通滤波器以限制高频增益及噪声[10]。实际上较少用到微分控制,估计PID控制器中只有约20%有用到微分控制[10]。
参数调试[编辑]
PID的参数调试是指透过调整控制参数(比例增益、积分增益/时间、微分增益/时间)让系统达到最佳的控制效果。稳定性(不会有发散性的震荡)是首要条件,此外,不同系统有不同的行为,不同的应用其需求也不同,而且这些需求还可能会互相冲突。
PID只有三个参数,在原理上容易说明,但PID参数调试是一个困难的工作,因为要符合一些特别的判据,而且PID控制有其限制存在。历史上有许多不同的PID参数调试方式,包括齐格勒-尼科尔斯方法等,其中也有一些已申请专利。
PID控制器的设计及调试在概念上很直觉,但若有多个(且互相冲突)的目标(例如高稳定性及快速的暂态时间)都要达到的话,在实际上很难完成。PID控制器的参数若仔细的调试,会有很好的效果,相反的,若调适不当,效果会很差。一般初始设计常需要不断的电脑模拟,并且修改参数,一直达到理想的性能或是可接受的妥协为止。
有些系统有非线性的特性,若在无载下调试的参数可能无法在满载下动作,可以利用增益规划的方式进行修正(在不同的条件下选用不同的数值)。
稳定性[编辑]
若PID控制器的参数未挑选妥当,其控制器输出可能是不稳定的,也就是其输出发散,过程中可能有震荡,也可能没有震荡,且其输出只受饱和或是机械损坏等原因所限制。不稳定一般是因为过大增益造成,特别是针对延迟时间很长的系统。
一般而言,PID控制器会要求响应的稳定,不论程序条件及设定值如何组合,都不能出现大幅振荡的情形,不过有时可以接受临界稳定的情形[来源请求]。
最佳性能[编辑]
PID控制器的最佳性能可能和针对过程变化或是设定值变化有关,也会随应用而不同。
两个基本的需求是调整能力(regulation,干扰拒绝,使系统维持在设定值)及命令追随 (设定值变化下,控制器输出追随设定值的反应速度)。有关命令追随的一些判据包括有上升时间及整定时间。有些应用可能因为安全考量,不允许输出超过设定值,也有些应用要求在到达设定值过程中的能量可以最小化。
各方法的简介[编辑]
有许多种调试PID控制器参数的方法,最有效的方式多半是建立某种程序,再依不同参数下的动态特性来调试参数。相对而言人工调试其效率较差,若是系统的响应时间到数分钟以上,更可以看出人工调试效率的不佳[来源请求]。
调试方法的选择和是否可以暂时将控制回路“离线”有关,也和系统的响应时间有关。离线是指一个和实际使用有些不同的条件(例如不加负载),而且控制器的输出只需考虑理论情况,不需考虑实际应用。在线调试是在实际应用的条件,控制器的输出需考虑实际的系统
。若控制回路可以离线,最好的调试方法是对系统给一个步阶输入,量测其输出对时间的关系,再用其响应来决定参数[来源请求]。
选择调试方式
方法
优点
缺点
人工调试
不需要数学,可以在线调试
需要有经验的工程师[来源请求]
齐格勒-尼科尔斯方法
被证实有效的方法,可以在线调试
会影响制程,需要试误,得到的参数可能使响应太快[来源请求]
软件工具
调适的一致性,可以在线调试或离线调试,可以配合计算机自动设计,包括阀及感测器的分析,可以在下载前进行模拟,可以支援非稳态(NSS)的调试
需要成本或是训练[11]
Cohen–Coon
好的程序模型
需要一些数学,需离线调试,只对一阶系统有良好效果[来源请求]
人工调整[编辑]
若需在系统仍有负载的情形进行调试(线上调试),有一种作法是先将
K
i
{\displaystyle K_{i}}
及
K
d
{\displaystyle K_{d}}
设为零,增加
K
p
{\displaystyle K_{p}}
一直到回路输出震荡为止,之后再将
K
p
{\displaystyle K_{p}}
设定为“1/4振幅衰减”(使系统第二次过冲量是第一次的1/4)增益的一半,然后增加
K
i
{\displaystyle K_{i}}
直到一定时间后的稳态误差可被修正为止。不过若
K
i
{\displaystyle K_{i}}
可能会造成不稳定,最后若有需要,可以增加
K
d
{\displaystyle K_{d}}
,并确认在负载变动后回路可以够快的回到其设定值,不过若
K
d
{\displaystyle K_{d}}
太大会造成响应太快及过冲。一般而言快速反应的PID应该会有轻微的过冲,只是有些系统不允许过冲。因此需要将回授系统调整为过阻尼系统,而
K
p
{\displaystyle K_{p}}
比造成震荡
K
p
{\displaystyle K_{p}}
的一半还要小很多。
调整PID参数对其步阶响应的影响
调整PID参数对系统的影响如下
调整方式
(on) 上升时间
超调量
安定时间
稳态误差
稳定性[10]
↑ Kp
减少 ↓
增加 ↑
小幅增加 ↗
减少 ↓
变差 ↓
↑ Ki
小幅减少 ↘
增加↑
增加 ↑
大幅减少↓↓
变差↓
↑ Kd
小幅减少 ↘
减少↓
减少↓
变动不大→
变好 ↑
齐格勒-尼科尔斯方法[编辑]
更多信息:齐格勒-尼科尔斯方法
齐格勒-尼科尔斯方法是另一种启发式的调试方式,由John G. Ziegler和Nathaniel B. Nichols在1940年代导入,一开始也是将
K
i
{\displaystyle K_{i}}
及
K
d
{\displaystyle K_{d}}
设定为零,增加比例增益直到系统开始等振幅振荡为止,当时的增益称为
K
u
{\displaystyle K_{u}}
,而振荡周期为
P
u
{\displaystyle P_{u}}
,即可用以下的方式计算增益:
齐格勒-尼科尔斯方法
控制器种类
K
p
{\displaystyle K_{p}}
K
i
{\displaystyle K_{i}}
K
d
{\displaystyle K_{d}}
P
0.50
K
u
{\displaystyle 0.50{K_{u}}}
-
-
PI
0.45
K
u
{\displaystyle 0.45{K_{u}}}
1.2
K
p
/
P
u
{\displaystyle 1.2{K_{p}}/P_{u}}
-
PID
0.60
K
u
{\displaystyle 0.60{K_{u}}}
2
K
p
/
P
u
{\displaystyle 2{K_{p}}/P_{u}}
K
p
P
u
/
8
{\displaystyle {K_{p}}{P_{u}}/8}
PID调试软件[编辑]
大部分现代的工业设备不再用上述人工计算的方式调试,而是用PID调试及最佳化软件来达到一致的效果。软件会收集资料,建立模型,并提供最佳的调试结果,有些软件甚至可以用参考命令的变化来进行调试。
数学的PID调试会将脉冲加入系统,再用受控系统的频率响应来设计PID的参数。若是响应时间要数分钟的系统,建议用数学PID调试,因为用试误法可能要花上几天才能找到可让系统稳定的参数。最佳解不太容易找到,有些数位的回路控制器有自我调试的程序,利用微小的参考命令来计算最佳的调试值。
也有其他调试的公式,是依不同的性能判据所产生。许多有专利的公式已嵌入在PID调试软件及硬件模组中[12]。
一些先进的PID调试软件也可以在动态的情况下用算法调整PID回路,这类软件会先将程序建模,给摄动量,再根据响应计算参数。
PID控制的限制[编辑]
PID控制可以应用在许多控制问题,多半在大略调整参数后就有不错的效果,不过有些应用下可能反而会有差的效果,而且一般无法提供最佳控制。PID控制的主要问题是在于其为回授控制,系数为定值,不知道受控系统的信息,因此其整体性能常常是妥协下的结果。在没有受控系统模型的条件下,PID控制最佳的控制器[2],但若配合系统模型,可以有进一步的提升。
当PID控制器单独使用时,若因应用需求,需调整PID回路增益使控制系统不会过冲,其效果有可能很差。PID控制器的缺点还包括无法处理受控系统的非线性、需在反应时间及调整率之间妥协、无法针对参数的变动而反应(例如系统在暖机后特性会改变)、以及大扰动下的波形落后。
PID控制器最显著的提升是配合前馈控制,加入有关系统的信息,只用PID控制器来控制误差。另外,PID控制器也有一些小幅的改善方式,例如调整参数(增益规划或是依性能进行适应性的调整)、提升性能(提高取样率、精度及准度,若有需要加入低波滤波器),或是用多个串接的PID控制器。
线性[编辑]
PID控制器常见的问题是在于其线性且对称的特性,若应用在一些非线性的系统,其效果可能会有变化。以暖通空调中常见的温度控制,可能是采用主动加热(用加热器加热),但冷却是使用被动冷却(不加热,自然冷却),其冷却速度比加热速度慢很多,输出若有过冲,下降速度很慢,因此PID控制需调整为不会过冲的过阻尼,以减少或避免过冲,但这也延长了整定时间,使性能变差。
噪声对微分器的影响[编辑]
微分器的问题在于对量测或程序产生的高频噪声会有放大效果,因此会对输出造成大幅的变动。因此真实的控制器不会有理想的微分器,只有一个有限带宽的微分器或高通滤波器。一般为了移除高频的噪声,会在量测时加入低通滤波器,若低通滤波器和微分器对消,滤波效果也就受限了,因此低噪声的量测设备相当重要。实务上可以使用中值滤波器,调昇滤波效率及实际上的性能[13]。有时可以将微分器关闭,对控制性能的影响不大,此时称为PI控制器。
PID算法的修改[编辑]
基本的PID算法在一些控制应用的条件下有些不足,需进行小幅的修改。
积分饱和[编辑]
积分饱和是理想PID算法实现时常见的问题。若设定值有大的变动,其积分量会有大幅的变化,大到输出值被上下限限制而饱和,因此系统会有过冲,而且即使误差量符号改变,积分量变小,但输出值仍被上下限限制,维持在上限(或下限),因此输出看似没有变化,系统仍会持续的过冲,一直要到输出值落在上下限的范围内,系统的回授量才会开始下降。此问题可以用以下方式处理:
在程序变数离开可控制范围时,暂停积分。
让积分值限制在一个较小的上下范围内。
重新计算积分项,使控制器输出维持上下限之间的范围内[14]。
PI控制器[编辑]
PI控制器的方块图
PI控制器(比例-积分控制器)是不用微分单元的PID控制器。
控制器的输出为
K
P
Δ
+
K
I
∫
Δ
d
t
{\displaystyle K_{P}\Delta +K_{I}\int \Delta \,dt}
其中
Δ
{\displaystyle \Delta }
为设定值SP和量测值PV的误差:
Δ
=
S
P
−
P
V
{\displaystyle \Delta =SP-PV}
.
PI控制器可以用Simulink或Xcos之类的软件进行建模,方式是使用“flow chart”图框,其中用以下的拉氏运算子:
C
=
G
(
1
+
τ
s
)
τ
s
{\displaystyle C={\frac {G(1+\tau s)}{\tau s}}}
其中
G
=
K
P
{\displaystyle G=K_{P}}
= 比例增益
G
/
τ
=
K
I
{\displaystyle G/\tau =K_{I}}
= 积分增益
G
{\displaystyle G}
值的选择需在减少过冲以及增加安定时间之间取舍。
微分单元对输入中的高频信号格外敏感,PI控制器因为没有微分单元,在讯号噪声大时,在稳态时会更加稳定。但对状态快速变化的反应较慢,因此相较于调适到最佳值的PID控制器,PI控制器会较慢到达设定值,受干扰后也比较慢恢复到正常值。
PDF控制(pseudo-derivative feedback control)可以视为是PI控制器的变体,比例控制器的输入由误差值改为回授值[15]。
不动作区[编辑]
许多PID回路是控制机械元件(例如阀)。机械保养是一笔可观的费用,磨损会使得机械在有输入信号时出现静摩擦或是不动作区,都会导致控制性能的下降。机械损耗的速度主要和设备多常改变其状态有关。若磨损是主要考量的话,PID回路可以有输出的迟滞现象以减少输出状态的改变。若变化小,仍在不动作区内,让控制器的输出维持上一次的值。变化要大到超过不动作区,实际的状态才会随之变化。
设定值的步阶变化[编辑]
若系统的设定值有步阶变化,比例单元和微分单元也会有对应的变化,特别是微分单元对于步阶变化的输出特别的大,因此有些PID算法会配合以下的修改来处理设定值的变化。
设定值斜坡变化
此修改方式下,设定值会用线性或是一阶滤波的方式,由原始值变到新的值,避免因为步阶变化产生的不连续。
只对程序变数(回授量)微分
此修改下,PID控制器只针对量测的程序变数(PV)微分,不对误差微分。程序变数是实际的物理量,较不易有瞬间的变化,而误差可能因为设定值的步阶变化而有瞬间变化。这也是一种简单的设定值加权法。
设定值加权
设定值加权分别调整在比例单元及微分单元中的误差量,误差量的设定值乘以一个0到1之间的加权,积分单元的误差量需使用真实的设定值,以避免稳态误差。这两个参数不影响对负载变化及量测噪声的响应,可以提升对设定点变化的响应。
前馈控制[编辑]
PID控制器若再配合前馈控制(开回路控制),可以再提升其控制性能。在前馈控制中考虑系统的已知信息(例如理想加速度或是惯量),再将输出加到PID控制器的控制输出,以提升整体的系统性能。前馈量可能是控制输出主要的部分,而PID控制器只用来补偿目标值和开回路控制器输出之间的误差。因为前馈输出不会受到回授的影响,因此也不会造成系统的振荡,可以在不影响稳定性的条件下提升系统的响应。前馈可以依目标值及其他量测到的干扰量来产生,目标值加权是一种简单的前馈控制方式。
例如,在大部分的运动控制系统中,为了要使机械负载加速,致动器要产生更大的力。若用速度环的PID控制器来控制负载速度,比较理想的方式是先得到理想的瞬间加速度值,适量调整加权后再加到PID的输出中。因此控制器输出中有一部分是不随机械速度而改变的输出,再用PID根据实际输出和目标的差异去增加或是减少输出。这类有前馈控制的PID控制器可以加快控制系统的反应速度。
无冲击运转[编辑]
有时PID控制器会规划为无冲击(bumpless)的特性,在参数变化时重新计算适当的积分累计值,使输出不会因参数变化有不连续的改变[16]。
串级PID控制器[编辑]
二个PID控制器可以组合在一起,得到较佳的效果,这称为串级PID控制。以两个PID控制器组成的串级PID控制为例,其中一个PID控制器在外回路,控制像液面高度或是速度等主要的物理量,另一个PID控制器是内回路,以外回路PID控制器的输出做为其目标值,一般是控制较快速变化的参数,例如流量或加速度等。若利用串级PID控制,可以增加控制器的工作频率,并降低其时间常数。
例如一个温控的循环水浴设备有二个串级的PID控制器,分别有各自的热电偶温度感测器。外回路的控制器控制水温,其感测器距加热器很远,直接量测整体水温,其误差量是理想水温及整体水温的差值。外回路PID控制器的输出即为内回路控制器的目标值,内回路控制器控制加热器,其感测器是在加热器上,其误差量是加热器的理想温度及量测到温度的差值,其输出会使加热器维持在设定值附近。
内外回路控制器的参数可能会差很多,外回路的PID控制器有较长的时间常数,对应所有的水加热或是冷却需要的时间。内回路的PID控制器反应会比较快。每个控制器可以调整到符合其真正控制的系统,例如水槽中所有的水,或是加热器本身。
其他PID的形式及其表示法[编辑]
理想的PID及标准形PID[编辑]
工业上常看到PID控制器,而许多工业相关资料中看到的都是“标准形”的PID,其中比例增益
K
p
{\displaystyle K_{p}}
也作用在
I
o
u
t
{\displaystyle I_{\mathrm {out} }}
及
D
o
u
t
{\displaystyle D_{\mathrm {out} }}
两项,和上述“理论”段落看到的形式不同。“标准形”的PID为:
M
V
(
t
)
=
K
p
(
e
(
t
)
+
1
T
i
∫
0
t
e
(
τ
)
d
τ
+
T
d
d
d
t
e
(
t
)
)
{\displaystyle \mathrm {MV(t)} =K_{p}\left(\,{e(t)}+{\frac {1}{T_{i}}}\int _{0}^{t}{e(\tau )}\,{d\tau }+T_{d}{\frac {d}{dt}}e(t)\right)}
其中
T
i
{\displaystyle T_{i}}
为积分时间。
T
d
{\displaystyle T_{d}}
为微分时间。
在标准形中,每一个参数有其明确的物理意义,输出是根据现在误差、过去误差及未来误差而决定,加上微分项可以预测若控制系统不改变的话,
T
d
{\displaystyle T_{d}}
时间后的误差,而积分项是用过去所有误差的和来调整输出,希望在
T
i
{\displaystyle T_{i}}
时间后可以完全消除误差,而输出的值会再乘以单一的增益
K
p
{\displaystyle K_{p}}
。
在理想的平行式PID中,其方程如下:
M
V
(
t
)
=
K
p
e
(
t
)
+
K
i
∫
0
t
e
(
τ
)
d
τ
+
K
d
d
d
t
e
(
t
)
{\displaystyle \mathrm {MV(t)} =K_{p}{e(t)}+K_{i}\int _{0}^{t}{e(\tau )}\,{d\tau }+K_{d}{\frac {d}{dt}}e(t)}
其中的增益和标准形PID系数的关系是:
K
i
=
K
p
T
i
{\displaystyle K_{i}={\frac {K_{p}}{T_{i}}}}
及
K
d
=
K
p
T
d
{\displaystyle K_{d}=K_{p}T_{d}\,}
。平行式PID中的参数都视为单纯的增益,最泛用,灵活性也最高,但较没有物理意义,因此只用在PID的理论处理中,标准形PID虽在数学上比较复杂,在工业中较常使用。
倒数增益[编辑]
许多情形下,PID控制器处理的变数是无量纲的量,是某个最大值的比例,介于0到100%之间,而转换为实际物理量(如泵浦速率或是水加热的功率)是在PID控制器外,而这些控制变数是有量纲的物理量(例如温度)。此时
K
p
{\displaystyle K_{p}}
增益多半不会表示为“每变化一度的输出”,而会以温度的形式
1
/
K
p
{\displaystyle 1/K_{p}}
表示,代表“100%输出下的温度(变化)”,代表输出由0变到1(0%变为100%)下的温度变化。
只针对过程变数进行微分控制[编辑]
在大部分的商业控制系统中,是用过程变数取代误差作为微分项的输入,其原因是当目标值有不连续变化时,微分控制会产生很大的突波,若目标值不变,改变过程变数的效果和改变误差相同,因此有些PID控制器会用过程变数作为微分项的输入,不会影响控制器控制过程变数,抗噪声的能力。
M
V
(
t
)
=
K
p
(
e
(
t
)
+
1
T
i
∫
0
t
e
(
τ
)
d
τ
−
T
d
d
d
t
P
V
(
t
)
)
{\displaystyle \mathrm {MV(t)} =K_{p}\left(\,{e(t)}+{\frac {1}{T_{i}}}\int _{0}^{t}{e(\tau )}\,{d\tau }-T_{d}{\frac {d}{dt}}PV(t)\right)}
只针对过程变数进行微分及比例控制[编辑]
大部分的商业控制系统也提供选择,让过程变数作为微分控制及比例控制的输入,因此误差只作为积分控制的输入,这也不会影响控制器控制过程变数,抗噪声的能力。
上述的修改可以避免目标值有不连续变化时,输出值有对应不连续的变化,若目标值有步阶变化,这项调整就相当重要。
M
V
(
t
)
=
K
p
(
−
P
V
(
t
)
+
1
T
i
∫
0
t
e
(
τ
)
d
τ
−
T
d
d
d
t
P
V
(
t
)
)
{\displaystyle \mathrm {MV(t)} =K_{p}\left(\,{-PV(t)}+{\frac {1}{T_{i}}}\int _{0}^{t}{e(\tau )}\,{d\tau }-T_{d}{\frac {d}{dt}}PV(t)\right)}
也有些双自由度(2-DoF)PID控制架构除了一般的PID控制外,再加上只针对过程变数进行的微分及比例控制,再分别用增益进行调整,目标是同时对目标步阶响应以及噪声抑制都有良好的性能[17]。
PID控制器的拉氏转换[编辑]
有关会将PID控制器进行拉氏转换:
G
(
s
)
=
K
p
+
K
i
s
+
K
d
s
=
K
d
s
2
+
K
p
s
+
K
i
s
{\displaystyle G(s)=K_{p}+{\frac {K_{i}}{s}}+K_{d}{s}={\frac {K_{d}{s^{2}}+K_{p}{s}+K_{i}}{s}}}
PID控制器的拉氏转换也代表着控制器的传递函数,因此可以确认整体系统的传递函数。
PID的极零点对消[编辑]
PID控制器可以写成以下的形式
G
(
s
)
=
K
d
s
2
+
K
p
K
d
s
+
K
i
K
d
s
{\displaystyle G(s)=K_{d}{\frac {s^{2}+{\frac {K_{p}}{K_{d}}}s+{\frac {K_{i}}{K_{d}}}}{s}}}
若受控设备的传递函数如下:
H
(
s
)
=
1
s
2
+
2
ζ
ω
0
s
+
ω
0
2
{\displaystyle H(s)={\frac {1}{s^{2}+2\zeta \omega _{0}s+\omega _{0}^{2}}}}
又令
K
i
K
d
=
ω
0
2
{\displaystyle {\frac {K_{i}}{K_{d}}}=\omega _{0}^{2}}
K
p
K
d
=
2
ζ
ω
0
{\displaystyle {\frac {K_{p}}{K_{d}}}=2\zeta \omega _{0}}
则
G
(
s
)
H
(
s
)
=
K
d
s
{\displaystyle G(s)H(s)={\frac {K_{d}}{s}}}
因此若受控设备有不稳定的极点,看似可以用此方式消除,不过实际上有些差异,由干扰到输出的闭回路传递函数中仍有不稳定的极点,因此仍可能会发散。
串级型或交互型[编辑]
另一种PID控制器的表示法为串级型(series)或称为交互型(interacting)
G
(
s
)
=
K
c
(
τ
i
s
+
1
)
τ
i
s
(
τ
d
s
+
1
)
{\displaystyle G(s)=K_{c}{\frac {(\tau _{i}{s}+1)}{\tau _{i}{s}}}(\tau _{d}{s}+1)}
其中参数和标准型的参数有以下的关系
K
p
=
K
c
⋅
α
{\displaystyle K_{p}=K_{c}\cdot \alpha }
,
T
i
=
τ
i
⋅
α
{\displaystyle T_{i}=\tau _{i}\cdot \alpha }
T
d
=
τ
d
α
{\displaystyle T_{d}={\frac {\tau _{d}}{\alpha }}}
而
α
=
1
+
τ
d
τ
i
{\displaystyle \alpha =1+{\frac {\tau _{d}}{\tau _{i}}}}
.
上述作法可表示为二个串级的PD控制器及PI控制器,在早期类比电路的时代较容易实现,虽然控制器已经数字化,不过仍有些维持此形式。
离散化的控制器[编辑]
若要在微处理机(MCU)或是FPGA中实现PID控制或是分析其性能,就需要将控制器离散化[18]。一阶微分可以用后向有限差分表示,积分项也离散化,若取样时间为
Δ
t
{\displaystyle \Delta t}
,积分项可以用下式近似
∫
0
t
k
e
(
τ
)
d
τ
=
∑
i
=
1
k
e
(
t
i
)
Δ
t
{\displaystyle \int _{0}^{t_{k}}{e(\tau )}\,{d\tau }=\sum _{i=1}^{k}e(t_{i})\Delta t}
微分项可近似为
d
e
(
t
k
)
d
t
=
e
(
t
k
)
−
e
(
t
k
−
1
)
Δ
t
{\displaystyle {\dfrac {de(t_{k})}{dt}}={\dfrac {e(t_{k})-e(t_{k-1})}{\Delta t}}}
因此PID控制器的离散化可以将
u
(
t
)
{\displaystyle u(t)}
微分,再用一阶导数及二阶导数的定义求得
u
(
t
k
)
{\displaystyle u(t_{k})}
,可以得到
u
(
t
k
)
=
u
(
t
k
−
1
)
+
K
p
[
(
1
+
Δ
t
T
i
+
T
d
Δ
t
)
e
(
t
k
)
+
(
−
1
−
2
T
d
Δ
t
)
e
(
t
k
−
1
)
+
T
d
Δ
t
e
(
t
k
−
2
)
]
{\displaystyle u(t_{k})=u(t_{k-1})+K_{p}\left[\left(1+{\dfrac {\Delta t}{T_{i}}}+{\dfrac {T_{d}}{\Delta t}}\right)e(t_{k})+\left(-1-{\dfrac {2T_{d}}{\Delta t}}\right)e(t_{k-1})+{\dfrac {T_{d}}{\Delta t}}e(t_{k-2})\right]}
其中
T
i
=
K
p
/
K
i
,
T
d
=
K
d
/
K
p
{\displaystyle T_{i}=K_{p}/K_{i},T_{d}=K_{d}/K_{p}}
伪代码[编辑]
以下是一段实现PID算法的伪代码:[19]
previous_error = 0
integral = 0
start:
error = setpoint - measured_value
integral = integral + error*dt
derivative = (error - previous_error)/dt
output = Kp*error + Ki*integral + Kd*derivative
previous_error = error
wait(dt)
goto start
此例中有两个变数在循环前需初始化为0,然后开始循环。目前的误差(error)是用目前目标值(setpoint)减去系统反馈值(measured_value)而得,然后再进行积分和微分运算,比例项、积分项及微分项乘以各自参数后得到输出(output)。在实际系统中,这会透过数位类比转换器转换为类比讯号,作为受控系统的控制量。目前的误差量及积分会储存,以便下次计算微分及积分时使用,程式会等待dt秒后开始,循环继续进行,透过类比数位转换器读取新的系统反馈值及目标值,再计算误差量及输出[19]。
参见[编辑]
控制理论
反馈
不稳定
振荡
注释[编辑]
^ 唯一的例外是目标值恰好是比例增益等于0时的受控输出。
参考文献[编辑]
^ Li, Y., Ang, K.H., and Chong, G.C.Y. (2006) Patents, software and hardware for PID control: an overview and analysis of the current art. IEEE Control Systems Magazine, 26 (1). pp. 42-54. ISSN 0272-1708 (doi:10.1109/MCS.2006.1580153)[永久失效链接]
^ 2.0 2.1 2.2 Bennett, Stuart. A history of control engineering, 1930-1955. IET. 1993: p. 48. ISBN 978-0-86341-299-8.
^ Bennett, Stuart. Nicholas Minorsky and the automatic steering of ships (PDF). IEEE Control Systems Magazine. November 1984, 4 (4): 10–15. ISSN 0272-1708. doi:10.1109/MCS.1984.1104827. (原始内容 (PDF)存档于2011-06-08).
^ A Brief Building Automation History. [2011-04-04]. (原始内容存档于2011-07-08).
^ (Bennett 1993,p. 67)
^ Bennett, Stuart. A brief history of automatic control (PDF). IEEE Control Systems Magazine (IEEE). 1996, 16 (3): 17–25 [2014-12-24]. (原始内容 (PDF)存档于2016-08-09).
^ Bennett, Stuart. A history of control engineering, 1800-1930. IET. June 1986: 142–148. ISBN 978-0-86341-047-5.
^ Introduction: PID Controller Design. University of Michigan. [2014-12-28]. (原始内容存档于2012-10-23).
^ Tim Wescott. PID without a PhD (PDF). EE Times-India. October 2000 [2014-12-28]. (原始内容 (PDF)存档于2010-11-22).
^ 10.0 10.1 10.2 Ang, K.H., Chong, G.C.Y., and Li, Y. (2005). PID control system analysis, design, and technology, IEEE Trans Control Systems Tech, 13(4), pp.559-576. http://eprints.gla.ac.uk/3817/1/IEEE3.pdf (页面存档备份,存于互联网档案馆)
^ Li, Y., et al. (2004) CAutoCSD - Evolutionary search and optimisation enabled computer automated control system design, Int J Automation and Computing, vol. 1, No. 1, pp. 76-88. ISSN 1751-8520. http://userweb.eng.gla.ac.uk/yun.li/ga_demo/ (页面存档备份,存于互联网档案馆)
^ Y Li, KH Ang, GCY Chong, Patents, software, and hardware for PID control: An overview and analysis of the current art, Control Systems, IEEE, 26 (1), 42-54. http://eprints.gla.ac.uk/3816/1/IEEE2pdf.pdf (页面存档备份,存于互联网档案馆)
^ Li, Y. and Ang, K.H. and Chong, G.C.Y. (2006) PID control system analysis and design - Problems, remedies, and future directions. IEEE Control Systems Magazine, 26 (1). pp. 32-41. ISSN 0272-1708 (PDF). [2014-02-02]. (原始内容存档 (PDF)于2014-03-27).
^ Cooper, Douglas. Integral (Reset) Windup, Jacketing Logic and the Velocity PI Form. [2014-02-18]. (原始内容存档于2013-06-29).
^ PID and PDFF Compensators for Motion Control (PDF). [2016-10-01]. (原始内容 (PDF)存档于2012-09-01).
^ Cooper, Douglas. PI Control of the Heat Exchanger. Practical Process Control by Control Guru. [2014-02-27]. (原始内容存档于2014-02-28).
^ Two-Degree-of-Freedom PID Controllers Mituhiko Araki and Hidefumi Taguchi (PDF). [2016-09-29]. (原始内容存档 (PDF)于2016-09-10).
^ Discrete PI and PID Controller Design and Analysis for Digital Implementation. Scribd.com. [2011-04-04]. (原始内容存档于2012-01-11).
^ 19.0 19.1 PID process control, a "Cruise Control" example. CodeProject. 2009 [4 November 2012]. (原始内容存档于2014-12-24).
Minorsky, Nicolas. Directional stability of automatically steered bodies. J. Amer. Soc. Naval Eng. 1922, 34 (2): 280–309. doi:10.1111/j.1559-3584.1922.tb04958.x.
外部链接[编辑]
改善PID微分和积分的方法及其它控制系统的计算机自动设计CAutoD
学习PID和其他系统调试是如何工作的(页面存档备份,存于互联网档案馆)
PID控制器实验室,PID调试的Java applets(页面存档备份,存于互联网档案馆)
一系列的PID调试的Java Applets
PID调试的问答
PID控制系统算法的信息和教程
用Excel模拟基本的PID
如果用电子部件制作一个PID控制器查看22页
关于PID控制器的文章,教材[失效链接]
一个控制系统的一部分
PID定速控制应用(页面存档备份,存于互联网档案馆)
PID电动机定速与定角控制公式比较(页面存档备份,存于互联网档案馆)
Ang, K.H., Chong, G.C.Y., and Li, Y. (2005), PID control system analysis, design, and technology. IEEE Transactions on Control Systems Technology, 13 (4). pp. 559-576. ISSN 1063-6536(页面存档备份,存于互联网档案馆)
Understanding Servo Tune(其中包括PID调整方法范例) (页面存档备份,存于互联网档案馆)
LabView360技术文章 PID(页面存档备份,存于互联网档案馆)
查论编控制理论领域分支
自适应控制
控制理论
数位控制
能量成型控制
模糊控制
混合(英语:Hybrid computer)控制
智能控制
模型预测控制
神经系统控制
非线性控制
最优控制
实时计算
鲁棒控制
随机控制
系统特性
时域
频域
波德图
奈奎斯特图
尼柯尔斯图
方块图
闭回路传递函数
可控制性
傅里叶变换
频率响应
拉普拉斯变换
负反馈
可观测性
性能
正回馈
根轨迹图法
伺服机构
信号流图
状态空间
稳定性理论
稳态分析及设计
系统动力学
传递函数
数位控制
离散时间信号
数字信号处理
量化
实时软件
取样资料
系统识别
Z转换
进阶理论
人工神经网络
系数图法(英语:Coefficient diagram method)
控制重构
分布式参数系统
分数阶控制
模糊逻辑
H-infinity回路成形
汉克尔奇异值
卡尔曼滤波
Krener's theorem(英语:Krener's theorem)
最小二乘法
李雅普诺夫稳定性
小回路回授
知觉控制理论
状态观测器
矢量控制
描述函数
控制器
嵌入式控制器
超前-滞后补偿器
数控机床
PID控制器
可编程逻辑控制器
应用
分散式控制系统
电动机
工业控制系统
机械电子学
运动控制
过程控制
机器人学
数据采集与监控系统(SCADA)