跳转到内容

PID控制器:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
LIUJILONG89留言 | 贡献
修饰语句 修正笔误
回退到由Ddmmyyy8討論)做出的修訂版本78839227:恢復到大量修改繁簡字體(繁簡破壞)前的版本
标签TW 撤销
第1行: 第1行:
{{NoteTA|G1=物理
{{NoteTA|G1=物理
|1=zh-hans:电动机;zh-hant:马达;
|1=zh-hans:电动机;zh-hant:馬達;
|2=zh-hans:过程控制;zh-hant:程序控制;
|2=zh-hans:过程控制;zh-hant:程序控制;
}}
}}


'''PID控制器'''(比例-积分-微分[[控制器]]),由[[比例]]单元('''P'''roportional)、[[积分]]单元('''I'''ntegral)和[[微分]]单元('''D'''erivative)组成<ref>[http://eprints.gla.ac.uk/3816/1/IEEE2pdf.pdf, 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)]{{dead link|date=2018年5月 |bot=InternetArchiveBot |fix-attempted=yes }}</ref>。可以通过调个单元的增益<math>K_p</math>,<math>K_i</math>和<math>K_d</math>来调整其特性。PID控制器主要适用于基本上线性,且动态特性不随时间变化的系统。
'''PID控制器'''(比例-积分-微分[[控制器]]),由[[比例]]单元('''P'''roportional)、[[积分]]单元('''I'''ntegral)和[[微分]]单元('''D'''erivative)组成<ref>[http://eprints.gla.ac.uk/3816/1/IEEE2pdf.pdf, 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)]{{dead link|date=2018年5月 |bot=InternetArchiveBot |fix-attempted=yes }}</ref>。可以透過調個單元的增益<math>K_p</math>,<math>K_i</math>和<math>K_d</math>來調定其特性。PID控制器主要适用于基本上线性,且动态特性不随时间变化的系统。


[[File:Pid-feedback-nct-int-correct.png|right|thumb|300px|PID控制器的方塊圖]]
[[File:Pid-feedback-nct-int-correct.png|right|thumb|300px|PID控制器的方塊圖]]
第10行: 第10行:
PID控制器是一个在工业控制应用中常见的[[回授]]回路部件。这个控制器把收集到的数据和一个参考值进行比较,然后把这个差别用于计算新的输入值,这个新的输入值的目的是可以让系统的数据达到或者保持在参考值。PID控制器可以根据历史数据和差别的出现率来调整输入值,使系统更加准确而稳定。
PID控制器是一个在工业控制应用中常见的[[回授]]回路部件。这个控制器把收集到的数据和一个参考值进行比较,然后把这个差别用于计算新的输入值,这个新的输入值的目的是可以让系统的数据达到或者保持在参考值。PID控制器可以根据历史数据和差别的出现率来调整输入值,使系统更加准确而稳定。


PID控制器的比例单元(P)、积分单元(I)和微分单元(D)分别对应目前差、去累计误差及未来误差。若是不知道受控系的特性,一般认为PID控制器是最用的控制器<ref name="ben93p48" />。整PID控制器的三个参数,可以整控制系设计需求。控制器的响应可以用控制器对误差的反快慢、控制器[[过冲]]的程度及系的程度表示。不使用PID控制器不一定保到系的[[最佳控制]],也不保统稳定性。
PID控制器的比例单元(P)、积分单元(I)和微分单元(D)分別對應目前差、去累計誤差及未來誤差。若是不知道受控系的特性,一般認為PID控制器是最用的控制器<ref name="ben93p48" />。調整PID控制器的三個參數,可以調整控制系滿設計需求。控制器的響應可以用控制器對誤差的反快慢、控制器[[過衝]]的程度及系的程度表示。不使用PID控制器不一定保到系的[[最佳控制]],也不保統穩定性。


有些用只需要PID控制器的部份元,可以不需要元的参数设为零即可。因此PID控制器可以成PI控制器、PD控制器、[[P控制器]]或I控制器。其中又以PI控制器比常用,因D控制器回授杂讯十分敏感,而若有I控制器的,系回到考值,存在一个误差量。
有些用只需要PID控制器的部份元,可以不需要元的參數設為零即可。因此PID控制器可以成PI控制器、PD控制器、[[P控制器]]或I控制器。其中又以PI控制器比常用,因D控制器回授雜訊十分敏感,而若有I控制器的,系回到考值,存在一個誤差量。


== 反馈回路基础 ==
== 反馈回路基础 ==
PID回路是要自动实现一个操作人员用量具和控制旋钮行的工作,这个操作人员会用量具测系统输出的结果,然后用控制旋钮来调整这个系统的输入,直到系统的输出在量具上显示稳定的需求的结果,在旧的控制文档里,这个过程叫做“复位”行为,量具被称为“测量”,需要的结果被称为“[[设置值]]”而设置值和测量之间的差别被称为“误差”。
PID回路是要自动实现一个操作人员用量具和控制旋钮行的工作,这个操作人员会用量具测系统输出的结果,然后用控制旋钮来调整这个系统的输入,直到系统的输出在量具上显示稳定的需求的结果,在旧的控制文档里,这个过程叫做“复位”行为,量具被称为“测量”,需要的结果被称为“[[設定值]]”而設定值和测量之间的差别被称为“误差”。


一个控制回路包括三个部分:
一个控制回路包括三个部分:
第25行: 第25行:
控制器从[[传感器]]得到测量结果,然后用需求结果减去测量结果来得到误差。然后用误差来计算出一个对系统的纠正值来作为输入结果,这样系统就可以从它的输出结果中消除误差。
控制器从[[传感器]]得到测量结果,然后用需求结果减去测量结果来得到误差。然后用误差来计算出一个对系统的纠正值来作为输入结果,这样系统就可以从它的输出结果中消除误差。


在一个PID回路中,这个纠正值有三种算法,消除目前的误差,平均过去的误差,和透误差的改变来预测将来的误差。
在一个PID回路中,这个纠正值有三种算法,消除目前的误差,平均过去的误差,和透误差的改变来预测将来的误差。


比如说,假如利用水箱在为植物提供水,水箱的水需要保持在一定的高度。可以用[[传感器]]来检查水箱里水的高度,这样就得到了测量结果。控制器会有一个固定的用户输入值来表示水箱需要的水面高度,假设这个值是保持65%的水量。控制器的输出设备会连在由马达控制的水阀门上。打开阀门就会给水箱注水,关上阀门就会让水箱里的水量下降。这个阀门的控制信号就是控制变量。
比如说,假如利用水箱在为植物提供水,水箱的水需要保持在一定的高度。可以用[[传感器]]来检查水箱里水的高度,这样就得到了测量结果。控制器会有一个固定的用户输入值来表示水箱需要的水面高度,假设这个值是保持65%的水量。控制器的输出设备会连在由马达控制的水阀门上。打开阀门就会给水箱注水,关上阀门就会让水箱里的水量下降。这个阀门的控制信号就是控制变量。
第31行: 第31行:
PID控制器可以用来控制任何可被测量及可被控制变量。比如,它可以用来控制温度、[[压强]]、流量、化学成分、速度等等。汽车上的[[巡航定速]]功能就是一个例子。
PID控制器可以用来控制任何可被测量及可被控制变量。比如,它可以用来控制温度、[[压强]]、流量、化学成分、速度等等。汽车上的[[巡航定速]]功能就是一个例子。


一些控制系统把数个PID控制器[[串联]]起来,或是连成网络。这样的话,一个主控制器可能会为其他控制输出结果。一个常见的例子是马达的控制。控制系统会需要马达有一个受控的速度,最停在一个确定的位置。可由一子控制器用来管理速度,但是这个子控制器的速度是由控制马达位置的主控制器来管理的。
一些控制系统把数个PID控制器[[串联]]起来,或是连成网络。这样的话,一个主控制器可能会为其他控制输出结果。一个常见的例子是马达的控制。控制系統會需要马达有一个受控的速度,最停在一个确定的位置。可由一子控制器用来管理速度,但是这个子控制器的速度是由控制马达位置的主控制器来管理的。


连合和串联控制在化学过程控制系统中相常见。
连合和串联控制在化学过程控制系统中相常见。


==史及用==
==史及用==


[[File:Scross helmsman.jpg|thumb|PID控制理是由察[[舵手]]的作而]]
[[File:Scross helmsman.jpg|thumb|PID控制理是由察[[舵手]]的作而]]


PID控制器可以追溯到1890年代的{{link-en|调速器|Governor (device)}}设计<ref name="ben93p48">{{Cite book
PID控制器可以追溯到1890年代的{{link-en|调速器|Governor (device)}}設計<ref name="ben93p48">{{Cite book
| publisher = IET
| publisher = IET
| isbn = 978-0-86341-299-8
| isbn = 978-0-86341-299-8
第66行: 第66行:
|archiveurl=https://web.archive.org/web/20110608080946/http://ieeexplore.ieee.org/iel5/37/24267/01104827.pdf?arnumber=1104827
|archiveurl=https://web.archive.org/web/20110608080946/http://ieeexplore.ieee.org/iel5/37/24267/01104827.pdf?arnumber=1104827
|archivedate=2011-06-08
|archivedate=2011-06-08
}}</ref>。PID控制器是在船舶自动操作系渐渐发展。1911年{{link-en|Elmer Sperry|Elmer Sperry}}开发的控制器是最早期PID型控制器的其中之一<ref>{{cite web |url=http://www.building-automation-consultants.com/building-automation-history.html |title=A Brief Building Automation History |accessdate=2011-04-04 |deadurl=yes |archiveurl=https://web.archive.org/web/20110708104028/http://www.building-automation-consultants.com/building-automation-history.html |archivedate=2011-07-08 }}</ref>,而第一个发表PID控制器理分析文的是[[俄裔美国人|俄裔美国]]工程{{link-en|尼古拉斯·米诺尔斯基|Nicolas Minorsky}}{{Harv|Minorsky|1922}}。米诺尔斯基当时设计的自动操作系,他的设计是基于对[[舵手]]的察,控制船舶不只是依目前的差,也考虑过去的差以及差的趋势<ref>{{Harv|Bennett|1993|loc = [http://books.google.com/books?id=VD_b81J3yFoC&pg=PA67 p. 67]}}</ref>,后来米诺尔斯基也用数学的方式加以推<ref name="ben96">{{Cite journal
}}</ref>。PID控制器是在船舶自动操作系漸漸發展。1911年{{link-en|Elmer Sperry|Elmer Sperry}}開發的控制器是最早期PID型控制器的其中之一<ref>{{cite web |url=http://www.building-automation-consultants.com/building-automation-history.html |title=A Brief Building Automation History |accessdate=2011-04-04 |deadurl=yes |archiveurl=https://web.archive.org/web/20110708104028/http://www.building-automation-consultants.com/building-automation-history.html |archivedate=2011-07-08 }}</ref>,而第一個發表PID控制器理分析文的是[[俄裔美国人|俄裔美国]]工程{{link-en|尼古拉斯·米诺尔斯基|Nicolas Minorsky}}{{Harv|Minorsky|1922}}。米诺尔斯基當時設計的自动操作系,他的設計是基於對[[舵手]]的察,控制船舶不只是依目前的差,也考慮過去的差以及差的趨勢<ref>{{Harv|Bennett|1993|loc = [http://books.google.com/books?id=VD_b81J3yFoC&pg=PA67 p. 67]}}</ref>,後來米诺尔斯基也用數學的方式加以推<ref name="ben96">{{Cite journal
| publisher = IEEE
| publisher = IEEE
| journal = IEEE Control Systems Magazine
| journal = IEEE Control Systems Magazine
第82行: 第82行:
| archive-date = 2016-08-09
| archive-date = 2016-08-09
| dead-url = yes
| dead-url = yes
}}</ref>。他的目的是在于稳定性,而不是泛用的控制,因此大幅的化了问题。比例控制可以在小的扰动下有定性,但法消除稳态误差,因此加入了后来也加入了微分
}}</ref>。他的目的是在於穩定性,而不是泛用的控制,因此大幅的化了問題。比例控制可以在小的擾動下有定性,但法消除穩態誤差,因此加入了後來也加入了微分


当时在[[新墨西哥号战舰]]上测试,利用控制器控制[[舵]]的[[角速度]],利用PI控制器可以角度持在±2°以,若加上D控制,角度持在±1/6°,比最好的舵手要好<ref>{{Cite book
當時在[[新墨西哥號戰艦]]上測試,利用控制器控制[[舵]]的[[角速度]],利用PI控制器可以角度持在±2°以,若加上D控制,角度持在±1/6°,比最好的舵手要好<ref>{{Cite book
| publisher = IET
| publisher = IET
| isbn = 978-0-86341-047-5
| isbn = 978-0-86341-047-5
第94行: 第94行:
}}</ref>。
}}</ref>。


的抗拒,海候未使用套系,在1930年代也有其他人作出似的研究。
的抗拒,海候未使用套系,在1930年代也有其他人作出似的研究。


在自控制展的早期,用设备来实现PID控制,是由[[槓]]、[[簧]]、[[阻尼]]及成,多半压缩气体驱动。[[气动|气动控制器]]一度是工上的标准
在自控制展的早期,用設備來實現PID控制,是由[[槓]]、[[簧]]、[[阻尼]]及成,多半壓縮氣體驅動。[[氣動|氣動控制器]]一度是工上的標準


子的模拟控制器可以用[[]]、[[真空管]]、[[容器]]及[[阻器]]成。复杂子系中常包括PID控制,例如[[磁碟]]的读写头定位、[[源供器]]的件、甚至是代[[地震]]的运动侦测线路。子控制器已大幅的被些利用[[晶片]]或[[FPGA]]来实现数码控制器所取代。
子的類比控制器可以用[[]]、[[真空管]]、[[容器]]及[[阻器]]成。複雜子系中常包括PID控制,例如[[磁碟]]的讀寫頭定位、[[源供器]]的件、甚至是代[[地震]]的運動偵測線路。子控制器已大幅的被些利用[[晶片]]或[[FPGA]]來實現數位控制器所取代。


代工使用的PID控制器多半用[[可编程逻辑控制器|PLC]]或有安装面板的数码控制器来实现软件实现的好是相低廉,配合PID实现方式整的敏度很大。在工业锅炉、塑射出械、烫金机及包中都用到PID控制。
代工使用的PID控制器多半用[[可编程逻辑控制器|PLC]]或有安装面板的數位控制器來實現軟體實現的好是相低廉,配合PID實現方式調整的敏度很大。在工業鍋爐、塑射出械、烫金机及包中都用到PID控制。


化的电压输出可以用[[脉冲宽调变|PWM]]来实现,也就是固定週期,依要出的量去整週期中出高位的时间对于数码,其时间比例有可能是散的,例如週期是二秒,高时间设置单0.1秒,表示可以分20格,精度5%,因此存在一[[量化差]],但只要时间解析度高,就有不的效果。
化的電壓輸出可以用[[脈衝寬調變|PWM]]來實現,也就是固定週期,依要出的量去調整週期中出高位的時間對於數位,其時間比例有可能是散的,例如週期是二秒,高時間設定單0.1秒,表示可以分20格,精度5%,因此存在一[[量化差]],但只要時間解析度高,就有不的效果。


== 理论 ==
== 理论 ==


PID是以它的三种纠正算法而命名。受控变量是三种算法(比例、分、微分)相加果,即出,其误差值(设置去测量值果)或是由误差值衍生的信。若定<math>u(t)</math>控制出,PID演算法可以用下式表示:
PID是以它的三种纠正算法而命名。受控變數是三种算法(比例、分、微分)相加果,即出,其误差值(設定去测量值果)或是由误差值衍生的信。若定<math>u(t)</math>控制出,PID演算法可以用下式表示:


:<math>\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)</math>
:<math>\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)</math>


其中
其中
: <math>K_p</math>:比例增益,是调适参数
: <math>K_p</math>:比例增益,是調適參數
: <math>K_i</math>:分增益,也是调适参数
: <math>K_i</math>:分增益,也是調適參數
: <math>K_d</math>:微分增益,也是调适参数
: <math>K_d</math>:微分增益,也是調適參數
: <math>e</math>:差=设置值(SP)- 回授值(PV)
: <math>e</math>:差=設定值(SP)- 回授值(PV)
: <math>t</math>:目前时间
: <math>t</math>:目前時間
: <math>\tau</math>:变量0到目前时间<math>t</math>
: <math>\tau</math>:變數0到目前時間<math>t</math>


用更专业的话来讲,PID控制器可以视为是[[频域]]系统的[[滤波器]]。在计算控制器最终是否会达到稳定结果时,此性很有用。如果数值挑选不当,控制系统的输入值会反复振盪,这导致系统可能永远无法达到默认值。
用更专业的话来讲,PID控制器可以視為是[[频域]]系统的[[滤波器]]。在计算控制器最终是否会达到稳定结果时,此性很有用。如果数值挑选不当,控制系统的输入值会反复振盪,这导致系统可能永远无法达到预设值。


PID控制器的一般[[传递函数|转移函数]]是:
PID控制器的一般[[传递函数|转移函数]]是:
第126行: 第126行:
其中''C''是一个取决于系统带宽的常数。
其中''C''是一个取决于系统带宽的常数。


===比例控制===
===比例控制===
{{main|比例控制}}
{{main|比例控制}}
[[File:PID varyingP.jpg|right|thumb|320px|不同比例增益K<sub>p</sub>下,受控变量对时间化(K<sub>i</sub>和K<sub>d</sub>持定值)]]
[[File:PID varyingP.jpg|right|thumb|320px|不同比例增益K<sub>p</sub>下,受控變數對時間化(K<sub>i</sub>和K<sub>d</sub>持定值)]]


[[比例]]控制考当前差,误差值和一个正值的常数K<sub>p</sub>(表示比例)相乘。K<sub>p</sub>只是在控制器的输出和系统的误差成比例的时候成立。比如说,一个电热器控制器是在目标温度和实际温度差10°C有100%的出,而其目值是25°C。那么它在15°C的时候会输出100%,在20°C的时候会输出50%,在24°C的时候输出10%,注意在误差是0的时候,控制器的输出也是0。
[[比例]]控制考当前差,误差值和一个正值的常数K<sub>p</sub>(表示比例)相乘。K<sub>p</sub>只是在控制器的输出和系统的误差成比例的时候成立。比如说,一个电热器控制器是在目標溫度和實際溫度差10°C有100%的出,而其目值是25°C。那么它在15°C的时候会输出100%,在20°C的时候会输出50%,在24°C的时候输出10%,注意在误差是0的时候,控制器的输出也是0。


比例控制的出如下:
比例控制的出如下:
:<math>P_{\mathrm{out}}=K_p\,{e(t)}</math>
:<math>P_{\mathrm{out}}=K_p\,{e(t)}</math>


若比例增益大,在相同差量下,大的出,但若比例增益太大,使系定<!--(see [[#Loop tuning|the section on loop tuning]])-->。相反的,若比例增益小,若在相同差量下,其小,因此控制器会较不敏感的。若比例增益太小,有干现时,其控制信可能不大,法修正干的影
若比例增益大,在相同差量下,大的出,但若比例增益太大,使系定<!--(see [[#Loop tuning|the section on loop tuning]])-->。相反的,若比例增益小,若在相同差量下,其小,因此控制器會較不敏感的。若比例增益太小,有干現時,其控制信可能不大,法修正干的影


==== 稳态误差 ====
==== 穩態誤差 ====
比例控制在0,其出也会为0。若要受控非零的值,就需要生一个稳态误差或偏移量{{efn|唯一的例外是[[目值]]恰好是比例增益等0的受控出。}}。
比例控制在0,其出也會為0。若要受控非零的值,就需要生一個穩態誤差或偏移量{{efn|唯一的例外是[[目值]]恰好是比例增益等0的受控出。}}。


===分控制===
===分控制===
[[File:Change with Ki.png|right|thumb|320px|不同分增益K<sub>i</sub>下,受控变量对时间化(K<sub>p</sub>和K<sub>d</sub>持定值)]]
[[File:Change with Ki.png|right|thumb|320px|不同分增益K<sub>i</sub>下,受控變數對時間化(K<sub>p</sub>和K<sub>d</sub>持定值)]]


[[积分]]控制考过去差,误差值过去一段时间和(误差和)乘以一个正值的常数K<sub>i</sub>。K<sub>i</sub>从过去的平均误差值来找到系统的输出结果和预定值的平均误差。一个简单的比例系统会震,会在预定值的附近来回变化,因为系统无法消除多余的纠正。通过加上负的平均误差值,平均系统误差值就会渐渐减少。所以,最终这个PID回路系统会在设置值稳定下来。
[[积分]]控制考过去差,误差值过去一段时间和(误差和)乘以一个正值的常数K<sub>i</sub>。K<sub>i</sub>从过去的平均误差值来找到系统的输出结果和预定值的平均误差。一个简单的比例系统会震,会在预定值的附近来回变化,因为系统无法消除多余的纠正。通过加上负的平均误差值,平均系统误差值就会漸漸减少。所以,最终这个PID回路系统会在設定值稳定下来。


分控制的出如下:
分控制的出如下:


: <math>I_{\mathrm{out}}=K_{i}\int_{0}^{t}{e(\tau)}\,{d\tau}</math>
: <math>I_{\mathrm{out}}=K_{i}\int_{0}^{t}{e(\tau)}\,{d\tau}</math>


分控制加速系统趋设置值的程,且消除比例控制器稳态误差。分增益越大,设置值的速度越快,不为积分控制计过去所有的差,可能使回授值出[[过冲]]的情形。
分控制加速系統趨設定值的程,且消除比例控制器穩態誤差。分增益越大,設定值的速度越快,不為積分控制計過去所有的差,可能使回授值出[[過衝]]的情形。
{{clear}}
{{clear}}


===微分控制===
===微分控制===
[[File:Change with Kd.png|right|thumb|320px|不同微分增益K<sub>d</sub>下,受控变量对时间化(K<sub>p</sub>和K<sub>i</sub>持定值)]]
[[File:Change with Kd.png|right|thumb|320px|不同微分增益K<sub>d</sub>下,受控變數對時間化(K<sub>p</sub>和K<sub>i</sub>持定值)]]


[[微分]]控制考将来差,计算误差的一阶导,并和一个正值的常数K<sub>d</sub>相乘。这个导数的控制会对系统的改变作出反应。导数的结果越大,那么控制系统就对输出结果作出更快速的反应。这个K<sub>d</sub>参数也是PID被称为可预测的控制器的原因。K<sub>d</sub>参数对减少控制器短期的改变很有帮助。一些实际中的速度缓慢的系统可以不需要K<sub>d</sub>参数。
[[微分]]控制考将来差,计算误差的一阶导,并和一个正值的常数K<sub>d</sub>相乘。这个导数的控制会对系统的改变作出反应。导数的结果越大,那么控制系统就对输出结果作出更快速的反应。这个K<sub>d</sub>参数也是PID被称为可预测的控制器的原因。K<sub>d</sub>参数对减少控制器短期的改变很有帮助。一些实际中的速度缓慢的系统可以不需要K<sub>d</sub>参数。


微分控制的出如下:
微分控制的出如下:
:<math>D_{\mathrm{out}}=K_d\frac{d}{dt}e(t)</math>
:<math>D_{\mathrm{out}}=K_d\frac{d}{dt}e(t)</math>


微分控制可以提[[整定时间]]及系统稳定性<ref>{{cite web |url=http://ctms.engin.umich.edu/CTMS/index.php?example=Introduction&section=ControlPID |title=Introduction: PID Controller Design |publisher=University of Michigan |accessdate=2014-12-28 |archive-date=2012-10-23 |archive-url=https://web.archive.org/web/20121023114739/http://ctms.engin.umich.edu/CTMS/index.php?example=Introduction&section=ControlPID |dead-url=yes }}</ref><ref>{{cite journal |title=PID without a PhD |url=http://igor.chudov.com/manuals/Servo-Tuning/PID-without-a-PhD.pdf |publisher=EE Times-India |date=October 2000 |author=Tim Wescott |access-date=2014-12-28 |archive-date=2010-11-22 |archive-url=https://web.archive.org/web/20101122123630/http://igor.chudov.com/manuals/Servo-Tuning/PID-without-a-PhD.pdf |dead-url=yes }}</ref>。不为纯微分器不是[[因果系统]],因此在PID系统实现时,一般会为微分控制加上一低通波器以限制高增益及杂讯<ref name="IEEE_PID_05" />。际上少用到微分控制,估PID控制器中只有20%有用到微分控制<ref name="IEEE_PID_05" />。
微分控制可以提[[整定時間]]及系統穩定性<ref>{{cite web |url=http://ctms.engin.umich.edu/CTMS/index.php?example=Introduction&section=ControlPID |title=Introduction: PID Controller Design |publisher=University of Michigan |accessdate=2014-12-28 |archive-date=2012-10-23 |archive-url=https://web.archive.org/web/20121023114739/http://ctms.engin.umich.edu/CTMS/index.php?example=Introduction&section=ControlPID |dead-url=yes }}</ref><ref>{{cite journal |title=PID without a PhD |url=http://igor.chudov.com/manuals/Servo-Tuning/PID-without-a-PhD.pdf |publisher=EE Times-India |date=October 2000 |author=Tim Wescott |access-date=2014-12-28 |archive-date=2010-11-22 |archive-url=https://web.archive.org/web/20101122123630/http://igor.chudov.com/manuals/Servo-Tuning/PID-without-a-PhD.pdf |dead-url=yes }}</ref>。不為純微分器不是[[因果系统]],因此在PID系統實現時,一般會為微分控制加上一低通波器以限制高增益及雜訊<ref name="IEEE_PID_05" />。际上少用到微分控制,估PID控制器中只有20%有用到微分控制<ref name="IEEE_PID_05" />。
{{clear}}
{{clear}}


==参数调试==
==參數調試==
PID的参数调试是指透过调整控制参数(比例增益、分增益/时间、微分增益/时间统达到最佳的控制效果。定性(不散性的震)是首要件,此外,不同系有不同的行,不同的用其需求也不同,而且些需求可能互相突。
PID的參數調試是指透過調整控制參數(比例增益、分增益/時間、微分增益/時間統達到最佳的控制效果。定性(不散性的震)是首要件,此外,不同系有不同的行,不同的用其需求也不同,而且些需求可能互相突。


PID只有三个参数,在原理上容易明,但PID参数调试是一的工作,因要符合一些特准则,而且PID控制有其[[#PID控制的限制|限制]]存在。史上有多不同的PID参数调试方式,包括[[格勒-尼科斯方法]]等,其中也有一些已申[[利]]。
PID只有三個參數,在原理上容易明,但PID參數調試是一的工作,因要符合一些特準則,而且PID控制有其[[#PID控制的限制|限制]]存在。史上有多不同的PID參數調試方式,包括[[格勒-尼科斯方法]]等,其中也有一些已申[[利]]。


PID控制器的设计调试在概念上很直,但若有多(且互相突)的目(例如高定性及快速的暂态时间)都要到的,在实际上很完成。PID控制器的参数若仔调试有很好的效果,相反的,若调适,效果很差。一般初始设计常需要不电脑且修改参数,一直到理想的性能或是可接受的妥协为止。
PID控制器的設計調試在概念上很直,但若有多(且互相突)的目(例如高定性及快速的暫態時間)都要到的,在實際上很完成。PID控制器的參數若仔調試有很好的效果,相反的,若調適,效果很差。一般初始設計常需要不電腦且修改參數,一直到理想的性能或是可接受的妥協為止。


有些系有非线性的特性,若在无载调试参数可能法在满载作,可以利用[[增益规划]]的方式行修正(在不同的件下用不同的值)。
有些系有非性的特性,若在無載調試參數可能法在滿載作,可以利用[[增益規劃]]的方式行修正(在不同的件下用不同的值)。


=== 定性 ===
=== 定性 ===
若PID控制器的参数未挑,其控制器出可能是不定的,也就是其散,程中可能有震,也可能有震,且其出只受和或是损坏等原因所限制。不定一般是因为过大增益造成,特针对迟时间的系
若PID控制器的參數未挑,其控制器出可能是不定的,也就是其散,程中可能有震,也可能有震,且其出只受和或是損壞等原因所限制。不定一般是因為過大增益造成,特針對遲時間的系


一般而言,PID控制器要求响应定,不程序件及设置值如何合,都不能出大幅振盪的情形,不可以接受[[定]]的情形{{Citation needed|date=March 2011}}。
一般而言,PID控制器要求響應定,不程序件及設定值如何合,都不能出大幅振盪的情形,不可以接受[[定]]的情形{{Citation needed|date=March 2011}}。


===最佳性能===
===最佳性能===
PID控制器的最佳性能可能和针对过化或是设置化有,也会随应用而不同。
PID控制器的最佳性能可能和針對過化或是設定化有,也會隨應用而不同。


两个基本的需求是整能力(regulation,干,使系统维持在设置值)及命令追设置化下,控制器出追随设置值的反速度)。有命令追的一些准则包括有[[上昇时间]]及[[整定时间]]。有些用可能因安全考量,不允许输出超过设置值,也有些用要求在到达设置程中的能量可以最小化。
兩個基本的需求是調整能力(regulation,干,使系統維持在設定值)及命令追設定化下,控制器出追隨設定值的反速度)。有命令追的一些準則包括有[[上昇時間]]及[[整定時間]]。有些用可能因安全考量,不允許輸出超過設定值,也有些用要求在到達設定程中的能量可以最小化。


===各方法的介===
===各方法的介===
种调试PID控制器参数的方法,最有效的方式多半是建立某程序,再依不同参数下的动态特性来调试参数。相而言人工调试其效率差,若是系响应时间以上,更可以看出人工调试效率的不佳{{Citation needed|date=May 2013}}。
種調試PID控制器參數的方法,最有效的方式多半是建立某程序,再依不同參數下的動態特性來調試參數。相而言人工調試其效率差,若是系響應時間以上,更可以看出人工調試效率的不佳{{Citation needed|date=May 2013}}。


调试方法的选择和是否可以暂时将控制路「离线」有,也和系响应时间离线是指一实际使用有些不同的件(例如不加负载),而且控制器的出只需考,不需考虑实际应用。在线调试是在实际应用的件,控制器的出需考虑实际的系
調試方法的選擇和是否可以暫時將控制路「離線」有,也和系響應時間離線是指一實際使用有些不同的件(例如不加負載),而且控制器的出只需考,不需考慮實際應用。在線調試是在實際應用的件,控制器的出需考慮實際的系
。若控制路可以离线,最好的调试方法是统给阶输入,量对时间关系,再用其响应来决参数{{Citation needed|date=May 2013}}。
。若控制路可以離線,最好的調試方法是統給階輸入,量對時間關係,再用其響應來決參數{{Citation needed|date=May 2013}}。


{| class="wikitable"
{| class="wikitable"
|+ 选择调试方式
|+ 選擇調試方式
! 方法
! 方法
! 优点
! 優點
! 缺
! 缺
|- style="text-align:center;"
|- style="text-align:center;"
! 人工调试
! 人工調試
| 不需要数学,可以在线调试
| 不需要數學,可以在線調試
| 需要有经验的工程{{Citation needed|date=May 2013}}
| 需要有經驗的工程{{Citation needed|date=May 2013}}
|- style="text-align:center;"
|- style="text-align:center;"
! 格勒-尼科斯方法
! 格勒-尼科斯方法
| 被证实有效的方法,可以在线调试
| 被證實有效的方法,可以在線調試
| 响制程,需要试误,得到的参数可能使响应太快{{Citation needed|date=May 2013}}
| 響製程,需要試誤,得到的參數可能使響應太快{{Citation needed|date=May 2013}}
|- style="text-align:center;"
|- style="text-align:center;"
! 软件工具
! 軟體工具
| 调适的一致性,可以在线调试离线调试,可以配合[[计算机自动设计]],包括及感器的分析,可以在下行模,可以支稳态(NSS)的调试
| 調適的一致性,可以在線調試離線調試,可以配合[[计算机自动设计]],包括及感器的分析,可以在下行模,可以支穩態(NSS)的調試
| 需要成本或是训练<ref>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/ {{Wayback|url=http://userweb.eng.gla.ac.uk/yun.li/ga_demo/ |date=20160507233728 }}</ref>
| 需要成本或是訓練<ref>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/ {{Wayback|url=http://userweb.eng.gla.ac.uk/yun.li/ga_demo/ |date=20160507233728 }}</ref>
|- style="text-align:center;"
|- style="text-align:center;"
! Cohen–Coon
! Cohen–Coon
| 好的程序模型
| 好的程序模型
| 需要一些数学,需离线调试,只有良好效果{{Citation needed|date=May 2013}}
| 需要一些數學,需離線調試,只有良好效果{{Citation needed|date=May 2013}}
|}
|}


===人工整===
===人工調整===
若需在系仍有负载的情形调试线调试),有一作法是先<math>K_i</math>及<math>K_d</math>设为零,增加<math>K_p</math>一直到出震荡为止,之<math>K_p</math>设置为「1/4振幅衰」(使系第二次过冲量是第一次的1/4)增益的一半,然增加<math>K_i</math>直到一定时间后稳态误差可被修正止。不若<math>K_i</math>可能造成不定,最若有需要,可以增加<math>K_d</math>,并确认负载变动后回路可以快的回到其设置值,不若<math>K_d</math>太大造成响应太快及过冲。一般而言快速反的PID应该会微的过冲,只是有些系不允许过冲。因此需要回授系统调[[阻尼#阻尼|阻尼系]],而<math>K_p</math>比造成震<math>K_p</math>的一半要小很多。
若需在系仍有負載的情形調試調試),有一作法是先<math>K_i</math>及<math>K_d</math>設為零,增加<math>K_p</math>一直到出震盪為止,之<math>K_p</math>設定為「1/4振幅衰」(使系第二次過衝量是第一次的1/4)增益的一半,然增加<math>K_i</math>直到一定時間後穩態誤差可被修正止。不若<math>K_i</math>可能造成不定,最若有需要,可以增加<math>K_d</math>,並確認負載變動後迴路可以快的回到其設定值,不若<math>K_d</math>太大造成響應太快及過衝。一般而言快速反的PID應該會微的過衝,只是有些系不允許過衝。因此需要回授系統調[[阻尼#阻尼|阻尼系]],而<math>K_p</math>比造成震<math>K_p</math>的一半要小很多。
[[File:PID Compensation Animated.gif|right|thumb|400px|整PID参数对其步阶响应的影]]
[[File:PID Compensation Animated.gif|right|thumb|400px|調整PID參數對其步階響應的影]]
整PID参数对的影如下
調整PID參數對的影如下
{| class="wikitable"
{| class="wikitable"
|-
|-
! 整方式 !! (on) 上升时间 !! 超调量!! 安定时间 !! 稳态误差 !! 稳定性<ref name="IEEE_PID_05">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 {{Wayback|url=http://eprints.gla.ac.uk/3817/1/IEEE3.pdf |date=20131213200556 }}</ref>
! 調整方式 !! (on) 上升时间 !! 超调量!! 安定时间 !! 稳态误差 !! 稳定性<ref name="IEEE_PID_05">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 {{Wayback|url=http://eprints.gla.ac.uk/3817/1/IEEE3.pdf |date=20131213200556 }}</ref>
|-
|-
| ↑ K<sub>p</sub> || 少 ↓ || 增加 ↑ || 小幅增加 ↗ || 少 ↓ || 差 ↓
| ↑ K<sub>p</sub> || 少 ↓ || 增加 ↑ || 小幅增加 ↗ || 少 ↓ || 差 ↓
|-
|-
| ↑ K<sub>i</sub> || 小幅少 ↘ || 增加↑ || 增加 ↑ || 大幅少↓↓ ||差↓
| ↑ K<sub>i</sub> || 小幅少 ↘ || 增加↑ || 增加 ↑ || 大幅少↓↓ ||差↓
|-
|-
| ↑ K<sub>d</sub> || 小幅少 ↘ || 少↓ ||少↓ || 变动不大→ || 好 ↑
| ↑ K<sub>d</sub> || 小幅少 ↘ || 少↓ ||少↓ || 變動不大→ || 好 ↑
|}
|}


===格勒-尼科斯方法===
===格勒-尼科斯方法===
{{details|格勒-尼科斯方法}}
{{details|格勒-尼科斯方法}}


[[格勒-尼科斯方法]]是另一种启发式的调试方式,由John G. Ziegler和Nathaniel B. Nichols在1940年代入,一始也是<math>K_i</math>及<math>K_d</math>设置为零,增加比例增益直到系统开始等振幅振盪止,当时的增益称为<math>K_u</math>,而振盪週期<math>P_u</math>,即可用以下的方式算增益:
[[格勒-尼科斯方法]]是另一種啟發式的調試方式,由John G. Ziegler和Nathaniel B. Nichols在1940年代入,一始也是<math>K_i</math>及<math>K_d</math>設定為零,增加比例增益直到系統開始等振幅振盪止,當時的增益稱為<math>K_u</math>,而振盪週期<math>P_u</math>,即可用以下的方式算增益:


{| class="wikitable"
{| class="wikitable"
|+ 格勒-尼科斯方法
|+ 格勒-尼科斯方法
|-
|-
! 控制器种类
! 控制器種類
! <math>K_p</math>
! <math>K_p</math>
! <math>K_i</math>
! <math>K_i</math>
第257行: 第257行:
These gains apply to the ideal, parallel form of the PID controller. When applied to the standard PID form, the integral and derivative time parameters <math>T_i</math> and <math>T_d</math> are only dependent on the oscillation period <math>P_u</math>. Please see the section "[[#Alternative nomenclature and PID forms|Alternative nomenclature and PID forms]]".-->
These gains apply to the ideal, parallel form of the PID controller. When applied to the standard PID form, the integral and derivative time parameters <math>T_i</math> and <math>T_d</math> are only dependent on the oscillation period <math>P_u</math>. Please see the section "[[#Alternative nomenclature and PID forms|Alternative nomenclature and PID forms]]".-->


===PID调试软件===
===PID調試軟體===


大部份代的工业设备不再用上述人工算的方式调试,而是用PID调试及最佳化软件来达到一致的效果。软件会收集料,建立模型,提供最佳的调试结果,有些软件甚至可以用考命令的来进调试
大部份代的工業設備不再用上述人工算的方式調試,而是用PID調試及最佳化軟體來達到一致的效果。軟體會收集料,建立模型,提供最佳的調試結果,有些軟體甚至可以用考命令的來進調試


数学的PID调试会将脉冲加入系,再用受控系响应来设计PID的参数。若是响应时间的系,建数学PID调试,因试误法可能要花上天才能找到可统稳定的参数。最佳解不太容易找到,有些数码路控制器有自我调试的程序,利用微小的考命令来计算最佳的调试值。
數學的PID調試會將脈衝加入系,再用受控系響應來設計PID的參數。若是響應時間的系,建數學PID調試,因試誤法可能要花上天才能找到可統穩定的參數。最佳解不太容易找到,有些數位路控制器有自我調試的程序,利用微小的考命令來計算最佳的調試值。


也有其他调试的公式,是依不同的性能准则生。多有利的公式已嵌入在PID调试软件及硬中<ref>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 {{Wayback|url=http://eprints.gla.ac.uk/3816/1/IEEE2pdf.pdf |date=20130228143859 }}</ref>。
也有其他調試的公式,是依不同的性能準則生。多有利的公式已嵌入在PID調試軟體及硬中<ref>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 {{Wayback|url=http://eprints.gla.ac.uk/3816/1/IEEE2pdf.pdf |date=20130228143859 }}</ref>。


一些先的PID调试软件也可以在动态的情下用演算法整PID路,这类软件会程序建模,量,再根据响应计参数
一些先的PID調試軟體也可以在動態的情下用演算法調整PID路,這類軟體會程序建模,量,再根據響應計參數


==PID控制的限制==
==PID控制的限制==
PID控制可以用在多控制问题,多半在大略参数后就有不的效果,不有些用下可能反而有差的效果,而且一般法提供[[最佳控制]]。PID控制的主要问题是在回授控制,系数为定值,不知道受控系资讯,因此其整体性能常常是妥下的果。在有受控系模型的件下,PID控制最佳的控制器<ref name="ben93p48" />,但若配合系模型,可以有一步的提
PID控制可以用在多控制問題,多半在大略調參數後就有不的效果,不有些用下可能反而有差的效果,而且一般法提供[[最佳控制]]。PID控制的主要問題是在回授控制,係數為定值,不知道受控系資訊,因此其整体性能常常是妥下的果。在有受控系模型的件下,PID控制最佳的控制器<ref name="ben93p48" />,但若配合系模型,可以有一步的提


PID控制器单独使用,若因用需求,需整PID路增益使控制系[[过冲]],其效果有可能很差。PID控制器的缺点还包括理受控系的非线性、需在反应时间及调整率之针对参数变动而反(例如系在暖机后特性)、以及大扰动下的波形落
PID控制器單獨使用,若因用需求,需調整PID路增益使控制系[[過衝]],其效果有可能很差。PID控制器的缺點還包括理受控系的非性、需在反應時間及调整率之針對參數變動而反(例如系在暖機後特性)、以及大擾動下的波形落


PID控制器最显着的提是配合[[前控制]],加入有资讯,只用PID控制器控制差。另外,PID控制器也有一些小幅的改善方式,例如参数([[增益规划]]或是依性能适应性的整)、提性能(提高取率、精度及度,若有需要加入低波波器),或是用多串接的PID控制器。
PID控制器最顯著的提是配合[[前控制]],加入有資訊,只用PID控制器控制差。另外,PID控制器也有一些小幅的改善方式,例如調參數([[增益規劃]]或是依性能適應性的調整)、提性能(提高取率、精度及度,若有需要加入低波波器),或是用多串接的PID控制器。


=== 线性 ===
=== 性 ===
PID控制器常问题是在线性且对称的特性,若用在一些非线性的系,其效果可能化。以[[暖通空]]中常度控制,可能是用主(用加器加),但冷是使用被(不加,自然冷),其冷速度比加速度慢很多,出若有过冲,下降速度很慢,因此PID控制需会过冲阻尼,以少或避免过冲,但也延了整定时间,使性能差。
PID控制器常問題是在性且對稱的特性,若用在一些非性的系,其效果可能化。以[[暖通空調]]中常度控制,可能是用主(用加器加),但冷是使用被(不加,自然冷),其冷速度比加速度慢很多,出若有過衝,下降速度很慢,因此PID控制需調會過衝阻尼,以少或避免過衝,但也延了整定時間,使性能差。


=== 杂讯对微分器的影 ===
=== 雜訊對微分器的影 ===
微分器的问题于对或程序生的高[[杂讯]]有放大效果,因此会对输出造成大幅的变动。因此真的控制器不有理想的微分器,只有一有限频宽的微分器或[[高通波器]]。一般了移除高杂讯在量测时加入[[低通波器]],若低通波器和微分器消,波效果也就受限了,因此低杂讯的量测设备重要。实务上可以使用[[中值滤波器]],波效率及实际上的性能<ref>{{Cite web |url=http://eprints.gla.ac.uk/3815/1/IEEE_CS_PID_01580152.pdf |title=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 |accessdate=2014-02-02 |archive-date=2014-03-27 |archive-url=https://web.archive.org/web/20140327012720/http://eprints.gla.ac.uk/3815/1/IEEE_CS_PID_01580152.pdf |dead-url=no }}</ref>。有可以微分器关闭控制性能的影不大,此时称为PI控制器。
微分器的問題於對或程序生的高[[雜訊]]有放大效果,因此會對輸出造成大幅的變動。因此真的控制器不有理想的微分器,只有一有限頻寬的微分器或[[高通波器]]。一般了移除高雜訊在量測時加入[[低通波器]],若低通波器和微分器消,波效果也就受限了,因此低雜訊的量測設備重要。實務上可以使用[[中值滤波器]],調波效率及實際上的性能<ref>{{Cite web |url=http://eprints.gla.ac.uk/3815/1/IEEE_CS_PID_01580152.pdf |title=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 |accessdate=2014-02-02 |archive-date=2014-03-27 |archive-url=https://web.archive.org/web/20140327012720/http://eprints.gla.ac.uk/3815/1/IEEE_CS_PID_01580152.pdf |dead-url=no }}</ref>。有可以微分器關閉控制性能的影不大,此時稱為PI控制器。


==PID演算法的修改==
==PID演算法的修改==
基本的PID演算法在一些控制用的件下有些不足,需行小幅的修改。
基本的PID演算法在一些控制用的件下有些不足,需行小幅的修改。


===和===
===和===
<!--{{details|Integral windup}}
<!--{{details|Integral windup}}
-->
-->
[[和]]是理想PID演算法实现时问题。若设置值有大的变动,其分量有大幅的化,大到出值被上下限限制而和,因此系统会有[[过冲]],而且即使差量符分量小,但出值仍被上下限限制,持在上限(或下限),因此出看似化,系过冲,一直要到出值落在上下限的范围内,系的回授量才会开始下降。此问题可以用以下方式理:
[[和]]是理想PID演算法實現時問題。若設定值有大的變動,其分量有大幅的化,大到出值被上下限限制而和,因此系統會有[[過衝]],而且即使差量符分量小,但出值仍被上下限限制,持在上限(或下限),因此出看似化,系過衝,一直要到出值落在上下限的範圍內,系的回授量才會開始下降。此問題可以用以下方式理:


* 在[[程序变量]]离开可控制范围时分。
* 在[[程序變數]]離開可控制範圍時分。
* 让积分值限制在一个较小的上下范围内
* 讓積分值限制在一個較小的上下範圍內
* 重新,使控制器持上下限之范围内<ref>{{cite web|last=Cooper|first=Douglas|title=Integral (Reset) Windup, Jacketing Logic and the Velocity PI Form|url=http://www.controlguru.com/2008/021008.html|accessdate=2014-02-18|archive-date=2013-06-29|archive-url=https://web.archive.org/web/20130629161827/http://www.controlguru.com/2008/021008.html|dead-url=yes}}</ref>。
* 重新,使控制器持上下限之範圍內<ref>{{cite web|last=Cooper|first=Douglas|title=Integral (Reset) Windup, Jacketing Logic and the Velocity PI Form|url=http://www.controlguru.com/2008/021008.html|accessdate=2014-02-18|archive-date=2013-06-29|archive-url=https://web.archive.org/web/20130629161827/http://www.controlguru.com/2008/021008.html|dead-url=yes}}</ref>。


===PI控制器===
===PI控制器===
[[File:PI controller.svg|thumb|300x300px|PI控制器的方块图]]<!--redirects link here-->
[[File:PI controller.svg|thumb|300x300px|PI控制器的方塊圖]]<!--redirects link here-->


PI控制器(比例-分控制器)是不用微分元的PID控制器。
PI控制器(比例-分控制器)是不用微分元的PID控制器。


控制器的
控制器的
:<math>K_P \Delta + K_I \int \Delta\,dt</math>
:<math>K_P \Delta + K_I \int \Delta\,dt</math>
其中<math>\Delta</math>为设置值SP和量值PV的差:
其中<math>\Delta</math>為設定值SP和量值PV的差:
:<math>\Delta = SP - PV</math>.
:<math>\Delta = SP - PV</math>.


PI控制器可以用[[Simulink]]或[[Xcos]]之软件进行建模,方式是使用「flow chart」框,其中用以下的拉氏算子:
PI控制器可以用[[Simulink]]或[[Xcos]]之軟體進行建模,方式是使用「flow chart」框,其中用以下的拉氏算子:
:<math>C=\frac{G(1+\tau s)}{\tau s}</math>
:<math>C=\frac{G(1+\tau s)}{\tau s}</math>
其中
其中
:<math>G = K_P</math> = 比例增益
:<math>G = K_P</math> = 比例增益
:<math>G/\tau = K_I</math> = 分增益
:<math>G/\tau = K_I</math> = 分增益


<math>G</math>值的选择需在过冲以及增加安定时间
<math>G</math>值的選擇需在過衝以及增加安定時間


微分对输入中的高格外敏感,PI控制器因为没有微分元,在讯号杂讯,在稳态时会更加定。但对状态快速化的反应较慢,因此相较于调适到最佳值的PID控制器,PI控制器会较慢到达设置值,受干扰后也比慢恢到正常值。
微分對輸入中的高格外敏感,PI控制器因為沒有微分元,在訊號雜訊,在穩態時會更加定。但對狀態快速化的反應較慢,因此相較於調適到最佳值的PID控制器,PI控制器會較慢到達設定值,受干擾後也比慢恢到正常值。


[[PDF控制]](pseudo-derivative feedback control)可以视为是PI控制器的变体,比例控制器的入由差值改回授值<ref>{{Cite web |url=http://www.drivetechinc.com/articles/PM95PDFforPDF.pdf |title=PID and PDFF Compensators for Motion Control |access-date=2016-10-01 |archive-url=https://web.archive.org/web/20120901010233/http://www.drivetechinc.com/articles/PM95PDFforPDF.pdf |archive-date=2012-09-01 |dead-url=yes }}</ref>。
[[PDF控制]](pseudo-derivative feedback control)可以視為是PI控制器的變體,比例控制器的入由差值改回授值<ref>{{Cite web |url=http://www.drivetechinc.com/articles/PM95PDFforPDF.pdf |title=PID and PDFF Compensators for Motion Control |access-date=2016-10-01 |archive-url=https://web.archive.org/web/20120901010233/http://www.drivetechinc.com/articles/PM95PDFforPDF.pdf |archive-date=2012-09-01 |dead-url=yes }}</ref>。


===不===
===不===
多PID路是控制械元件(例如)。械保是一用,磨损会使得械在有入信号时现静摩擦或是[[不]],都会导致控制性能的下降。耗的速度主要和设备多常改状态。若磨是主要考量的,PID路可以有出的[[迟滞现象]]以状态的改。若化小,仍在不区内控制器的持上一次的值。化要大到超实际状态会随化。
多PID路是控制械元件(例如)。械保是一用,磨損會使得械在有入信號時現靜摩擦或是[[不]],都會導致控制性能的下降。耗的速度主要和設備多常改狀態。若磨是主要考量的,PID路可以有出的[[遲滯現象]]以狀態的改。若化小,仍在不區內控制器的持上一次的值。化要大到超實際狀態會隨化。


===设置值的步阶变化===
===設定值的步階變化===
若系设置值有步阶变化,比例元和微分元也对应化,特是微分对于阶变化的出特的大,因此有些PID演算法配合以下的修改来处设置值的化。
若系設定值有步階變化,比例元和微分元也對應化,特是微分對於階變化的出特的大,因此有些PID演算法配合以下的修改來處設定值的化。


;设置值斜坡
;設定值斜坡
:此修改方式下,设置线性或是一阶滤波的方式,由原始值到新的值,避免因阶变生的[[不连续]]。
:此修改方式下,設定性或是一階濾波的方式,由原始值到新的值,避免因階變生的[[不連續]]。


;只[[程序变量]](回授量)微分
;只[[程序變數]](回授量)微分
:此修改下,PID控制器只针对的程序变量(PV)微分,不对误差微分。程序变量实际的物理量,不易有瞬化,而差可能因为设置值的步阶变化而有瞬间变化。也是一种简单设置值加法。
:此修改下,PID控制器只針對的程序變數(PV)微分,不對誤差微分。程序變數實際的物理量,不易有瞬化,而差可能因為設定值的步階變化而有瞬間變化。也是一種簡單設定值加法。


;设置值加
;設定值加
:设置值加别调整在比例元及微分元中的差量,差量的设置值乘以一0到1之的加元的差量需使用真设置值,以避免[[稳态误差]]。这两个参数不影响对负载变化及量测杂讯响应,可以提升对设置点变化的响应
:設定值加別調整在比例元及微分元中的差量,差量的設定值乘以一0到1之的加元的差量需使用真設定值,以避免[[穩態誤差]]。這兩個參數不影響對負載變化及量測雜訊響應,可以提昇對設定點變化的響應


=== 前控制 ===
=== 前控制 ===
PID控制器若再配合[[前控制]]([[开回路控制器|开回路控制]]),可以再提其控制性能。在前控制中考的已知资讯(例如理想加速度或是量),再将输出加到PID控制器的控制出,以提的系性能。前量可能是控制出主要的部份,而PID控制器只用来补偿值和开回路控制器出之差。因馈输出不受到回授的影,因此也不造成系的振盪,可以在不影响稳定性的件下提响应。前可以依目值及其他量到的干来产生,目值加是一种简单的前控制方式。
PID控制器若再配合[[前控制]]([[開迴路控制器|開迴路控制]]),可以再提其控制性能。在前控制中考的已知資訊(例如理想加速度或是量),再將輸出加到PID控制器的控制出,以提的系性能。前量可能是控制出主要的部份,而PID控制器只用來補償值和開迴路控制器出之差。因饋輸出不受到回授的影,因此也不造成系的振盪,可以在不影響穩定性的件下提響應。前可以依目值及其他量到的干來產生,目值加是一種簡單的前控制方式。


例如,在大部份的运动控制系中,了要使负载加速,致器要生更大的力。若用速度的PID控制器控制负载速度,比理想的方式是先得到理想的瞬加速度值,整加权后再加到PID的出中。因此控制器出中有一部份是不随机械速度而改出,再用PID根据实际输出和目的差去增加或是出。这类有前控制的PID控制器可以加快控制系的反速度。
例如,在大部份的運動控制系中,了要使負載加速,致器要生更大的力。若用速度的PID控制器控制負載速度,比理想的方式是先得到理想的瞬加速度值,調整加權後再加到PID的出中。因此控制器出中有一部份是不隨機械速度而改出,再用PID根據實際輸出和目的差去增加或是出。這類有前控制的PID控制器可以加快控制系的反速度。


=== 无冲击运转 ===
=== 無衝擊運轉 ===
PID控制器会规划为无冲击(bumpless)的特性,在参数变重新适当分累值,使出不参数变化有不连续的改<ref>{{cite web|last=Cooper|first=Douglas|title=PI Control of the Heat Exchanger|url=http://www.controlguru.com/wp/p71.html|work=Practical Process Control by Control Guru|accessdate=2014-02-27|archive-date=2014-02-28|archive-url=https://web.archive.org/web/20140228115125/http://www.controlguru.com/wp/p71.html|dead-url=no}}</ref>。
PID控制器會規劃為無衝擊(bumpless)的特性,在參數變重新適當分累值,使出不參數變化有不連續的改<ref>{{cite web|last=Cooper|first=Douglas|title=PI Control of the Heat Exchanger|url=http://www.controlguru.com/wp/p71.html|work=Practical Process Control by Control Guru|accessdate=2014-02-27|archive-date=2014-02-28|archive-url=https://web.archive.org/web/20140228115125/http://www.controlguru.com/wp/p71.html|dead-url=no}}</ref>。


==串PID控制器==
==串PID控制器==
PID控制器可以合在一起,得到佳的效果,这称为PID控制。以两个PID控制器成的串PID控制例,其中一PID控制器在外路,控制像液面高度或是速度等主要的物理量,另一PID控制器是内回路,以外路PID控制器的出做其目值,一般是控制快速化的参数,例如流量或加速度等。若利用串PID控制,可以增加控制器的工作率,降低其时间
PID控制器可以合在一起,得到佳的效果,這稱為PID控制。以兩個PID控制器成的串PID控制例,其中一PID控制器在外路,控制像液面高度或是速度等主要的物理量,另一PID控制器是內迴路,以外路PID控制器的出做其目值,一般是控制快速化的參數,例如流量或加速度等。若利用串PID控制,可以增加控制器的工作率,降低其時間


例如一个温控的循水浴设备有二的PID控制器,分有各自的热电度感器。外路的控制器控制水,其感器距加器很,直接量,其差量是理想水及整的差值。外路PID控制器的输出即为内回路控制器的目值,内回路控制器控制加器,其感器是在加器上,其差量是加器的理想度及量度的差值,其使加持在设置值附近。
例如一個溫控的循水浴設備有二的PID控制器,分有各自的熱電度感器。外路的控制器控制水,其感器距加器很,直接量,其差量是理想水及整的差值。外路PID控制器的输出即為內迴路控制器的目值,內迴路控制器控制加器,其感器是在加器上,其差量是加器的理想度及量度的差值,其使加持在設定值附近。


路控制器的参数可能差很多,外路的PID控制器有较长时间对应所有的水加或是冷需要的时间内回路的PID控制器反应会快。每控制器可以整到符合其真正控制的系,例如水槽中所有的水,或是加器本身。
路控制器的參數可能差很多,外路的PID控制器有較長時間對應所有的水加或是冷需要的時間內迴路的PID控制器反應會快。每控制器可以調整到符合其真正控制的系,例如水槽中所有的水,或是加器本身。


== 其他PID的形式及其表示法 ==
== 其他PID的形式及其表示法 ==
=== 理想的PID及标准形PID===
=== 理想的PID及標準形PID===
上常看到PID控制器,而多工关资料中看到的都是「标准形」的PID,其中比例增益<math>K_p</math>也作用在<math>I_{\mathrm{out}}</math>及<math>D_{\mathrm{out}}</math>两项,和上述「理」段落看到的形式不同。「标准形」的PID
上常看到PID控制器,而多工關資料中看到的都是「標準形」的PID,其中比例增益<math>K_p</math>也作用在<math>I_{\mathrm{out}}</math>及<math>D_{\mathrm{out}}</math>兩項,和上述「理」段落看到的形式不同。「標準形」的PID


:<math>\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)</math>
:<math>\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)</math>
其中
其中
:<math>T_i</math>为积时间
:<math>T_i</math>為積時間
:<math>T_d</math>微分时间
:<math>T_d</math>微分時間


标准形中,每一个参数有其明的物理意出是根据现差、差及未来误差而定,加上微分可以预测若控制系不改,<math>T_d</math>时间后差,而是用去所有差的和来调出,希望在<math>T_i</math>时间后可以完全消除差,而出的值再乘以一的增益<math>K_p</math>。
標準形中,每一個參數有其明的物理意出是根據現差、差及未來誤差而定,加上微分可以預測若控制系不改,<math>T_d</math>時間後差,而是用去所有差的和來調出,希望在<math>T_i</math>時間後可以完全消除差,而出的值再乘以一的增益<math>K_p</math>。


在理想的平行式PID中,其方程如下:
在理想的平行式PID中,其方程如下:
:<math>\mathrm{MV(t)}=K_p{e(t)} + K_i\int_{0}^{t}{e(\tau)}\,{d\tau} + K_d\frac{d}{dt}e(t)</math>
:<math>\mathrm{MV(t)}=K_p{e(t)} + K_i\int_{0}^{t}{e(\tau)}\,{d\tau} + K_d\frac{d}{dt}e(t)</math>


其中的增益和标准形PID系数关系是:<math>K_i = \frac{K_p}{T_i}</math>及<math> K_d = K_p T_d \,</math>。平行式PID中的参数视为单纯的增益,最泛用,活性也最高,但较没有物理意,因此只用在PID的理论处理中,标准形PID数学上比较复杂,在工常使用。
其中的增益和標準形PID係數關係是:<math>K_i = \frac{K_p}{T_i}</math>及<math> K_d = K_p T_d \,</math>。平行式PID中的參數視為單純的增益,最泛用,活性也最高,但較沒有物理意,因此只用在PID的理論處理中,標準形PID數學上比較複雜,在工常使用。


=== 倒增益 ===
=== 倒增益 ===
多情形下,PID控制器理的变量因次的量,是某最大值的比例,介0到100%之,而转换为实际物理量(如泵浦速率或是水加的功率)是在PID控制器外,而些控制变量是有因次的物理量(例如度)。此<math>K_p</math>增益多半不表示「每化一度的出」,而度的形式<math>1/K_p</math>表示,代表「100%出下的度(化)」,代表出由0到1(0%变为100%)下的化。
多情形下,PID控制器理的變數因次的量,是某最大值的比例,介0到100%之,而轉換為實際物理量(如泵浦速率或是水加的功率)是在PID控制器外,而些控制變數是有因次的物理量(例如度)。此<math>K_p</math>增益多半不表示「每化一度的出」,而度的形式<math>1/K_p</math>表示,代表「100%出下的度(化)」,代表出由0到1(0%變為100%)下的化。


=== 只针对过变量进行微分控制 ===
=== 只針對過變數進行微分控制 ===
在大部份的商控制系中,是用变量取代差作微分入,其原因是值有不连续变,微分控制会产生很大的突波,若目值不,改变过变量的效果和改变误差相同,因此有些PID控制器变量微分入,不控制器控制变量,抗杂讯的能力。
在大部份的商控制系中,是用變數取代差作微分入,其原因是值有不連續變,微分控制會產生很大的突波,若目值不,改變過變數的效果和改變誤差相同,因此有些PID控制器變數微分入,不控制器控制變數,抗雜訊的能力。


:<math>\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)</math>
:<math>\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)</math>


=== 只针对过变量进行微分及比例控制 ===
=== 只針對過變數進行微分及比例控制 ===
大部份的商控制系也提供选择让过变量微分控制及比例控制的入,因此差只作为积分控制的入,也不控制器控制变量,抗杂讯的能力。
大部份的商控制系也提供選擇讓過變數微分控制及比例控制的入,因此差只作為積分控制的入,也不控制器控制變數,抗雜訊的能力。


上述的修改可以避免目值有不连续变出值有对应连续化,若目值有步阶变化,这项调整就相重要。
上述的修改可以避免目值有不連續變出值有對應連續化,若目值有步階變化,這項調整就相重要。


:<math>\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)</math>
:<math>\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)</math>
<!--
<!--
King<ref>King, Myke. ''Process Control: A Practical Approach''. Wiley, 2010, p. 52-78</ref>描述了一很有效的表法 describes an effective chart-based method.
King<ref>King, Myke. ''Process Control: A Practical Approach''. Wiley, 2010, p. 52-78</ref>描述了一很有效的表法 describes an effective chart-based method.
-->
-->


也有些自由度(2-DoF)PID控制架除了一般的PID控制外,再加上只针对过变量进行的微分及比例控制,再分用增益整,目是同时对阶响应以及杂讯抑制都有良好的性能<ref>{{Cite web |url=http://ijcas.com/admin/paper/files/401-411.pdf |title=Two-Degree-of-Freedom PID Controllers Mituhiko Araki and Hidefumi Taguchi |accessdate=2016-09-29 |archive-date=2016-09-10 |archive-url=https://web.archive.org/web/20160910044621/http://ijcas.com/admin/paper/files/401-411.pdf |dead-url=no }}</ref>。
也有些自由度(2-DoF)PID控制架除了一般的PID控制外,再加上只針對過變數進行的微分及比例控制,再分用增益調整,目是同時對階響應以及雜訊抑制都有良好的性能<ref>{{Cite web |url=http://ijcas.com/admin/paper/files/401-411.pdf |title=Two-Degree-of-Freedom PID Controllers Mituhiko Araki and Hidefumi Taguchi |accessdate=2016-09-29 |archive-date=2016-09-10 |archive-url=https://web.archive.org/web/20160910044621/http://ijcas.com/admin/paper/files/401-411.pdf |dead-url=no }}</ref>。


=== PID控制器的拉氏转换 ===
=== PID控制器的拉氏轉換 ===
关会将PID控制器行[[拉氏转换]]:
關會將PID控制器行[[拉氏轉換]]:
:<math>G(s)=K_p + \frac{K_i}{s} + K_d{s}=\frac{K_d{s^2} + K_p{s} + K_i}{s}</math>
:<math>G(s)=K_p + \frac{K_i}{s} + K_d{s}=\frac{K_d{s^2} + K_p{s} + K_i}{s}</math>


PID控制器的拉氏转换也代表控制器的[[传递]],因此可以确认传递
PID控制器的拉氏轉換也代表控制器的[[傳遞]],因此可以確認傳遞


=== PID的点对消===
=== PID的點對消===
PID控制器可以成以下的形式
PID控制器可以成以下的形式
:<math>G(s)=K_d \frac{s^2 + \frac{K_p}{K_d}s + \frac{K_i}{K_d}}{s}</math>
:<math>G(s)=K_d \frac{s^2 + \frac{K_p}{K_d}s + \frac{K_i}{K_d}}{s}</math>
若受控设备传递如下:
若受控設備傳遞如下:
:<math>H(s)=\frac{1}{s^2 + 2\zeta \omega_0 s + \omega_0^2}</math>
:<math>H(s)=\frac{1}{s^2 + 2\zeta \omega_0 s + \omega_0^2}</math>


第395行: 第395行:
:<math>\frac{K_i}{K_d}=\omega_0^2</math>
:<math>\frac{K_i}{K_d}=\omega_0^2</math>
:<math>\frac{K_p}{K_d}=2\zeta \omega_0</math>
:<math>\frac{K_p}{K_d}=2\zeta \omega_0</math>
:<math>G(s) H(s)=\frac{K_d}{s}</math>
:<math>G(s) H(s)=\frac{K_d}{s}</math>


因此若受控设备有不定的极点,看似可以用此方式消除,不过实际上有些差,由干出的闭回传递中仍有不定的极点,因此仍可能会发散。
因此若受控設備有不定的極點,看似可以用此方式消除,不過實際上有些差,由干出的閉迴傳遞中仍有不定的極點,因此仍可能會發散。


=== 串型或交互型 ===
=== 串型或交互型 ===
另一PID控制器的表示法型(series)或称为交互型(interacting)
另一PID控制器的表示法型(series)或稱為交互型(interacting)
:<math>G(s) = K_c \frac{(\tau_i{s}+1)}{\tau_i{s}} (\tau_d{s}+1)</math>
:<math>G(s) = K_c \frac{(\tau_i{s}+1)}{\tau_i{s}} (\tau_d{s}+1)</math>
其中参数标准型的参数有以下的关系
其中參數標準型的參數有以下的關係
:<math>K_p = K_c \cdot \alpha</math>, <math>T_i = \tau_i \cdot \alpha</math>
:<math>K_p = K_c \cdot \alpha</math>, <math>T_i = \tau_i \cdot \alpha</math>
:<math>T_d = \frac{\tau_d}{\alpha}</math>
:<math>T_d = \frac{\tau_d}{\alpha}</math>
第409行: 第409行:
:<math>\alpha = 1 + \frac{\tau_d}{\tau_i}</math>.
:<math>\alpha = 1 + \frac{\tau_d}{\tau_i}</math>.


上述作法可表示的PD控制器及PI控制器,在早期模拟电路的容易实现然控制器已经数码化,不仍有些持此形式。
上述作法可表示的PD控制器及PI控制器,在早期類比電路的容易實現然控制器已經數位化,不仍有些持此形式。


=== 散化的控制器 ===
=== 散化的控制器 ===
若要在[[微]](MCU)或是[[FPGA]]中实现PID控制或是分析其性能,就需要控制器[[散化]]<ref>{{cite web |url=http://www.scribd.com/doc/19070283/Discrete-PI-and-PID-Controller-Design-and-Analysis-for-Digital-Implementation |title=Discrete PI and PID Controller Design and Analysis for Digital Implementation |publisher=Scribd.com |accessdate=2011-04-04 |archive-date=2012-01-11 |archive-url=https://web.archive.org/web/20120111163212/http://www.scribd.com/doc/19070283/Discrete-PI-and-PID-Controller-Design-and-Analysis-for-Digital-Implementation |dead-url=no }}</ref>。一微分可以用向[[有限差分]]表示,散化,若取样时间为<math>\Delta t</math>,可以用下式近似
若要在[[微]](MCU)或是[[FPGA]]中實現PID控制或是分析其性能,就需要控制器[[散化]]<ref>{{cite web |url=http://www.scribd.com/doc/19070283/Discrete-PI-and-PID-Controller-Design-and-Analysis-for-Digital-Implementation |title=Discrete PI and PID Controller Design and Analysis for Digital Implementation |publisher=Scribd.com |accessdate=2011-04-04 |archive-date=2012-01-11 |archive-url=https://web.archive.org/web/20120111163212/http://www.scribd.com/doc/19070283/Discrete-PI-and-PID-Controller-Design-and-Analysis-for-Digital-Implementation |dead-url=no }}</ref>。一微分可以用向[[有限差分]]表示,散化,若取樣時間為<math>\Delta t</math>,可以用下式近似


:<math>\int_{0}^{t_k}{e(\tau)}\,{d\tau} = \sum_{i=1}^k e(t_i)\Delta t </math>
:<math>\int_{0}^{t_k}{e(\tau)}\,{d\tau} = \sum_{i=1}^k e(t_i)\Delta t </math>


微分可近似
微分可近似


:<math>\dfrac{de(t_k)}{dt}=\dfrac{e(t_k)-e(t_{k-1})}{\Delta t}</math>
:<math>\dfrac{de(t_k)}{dt}=\dfrac{e(t_k)-e(t_{k-1})}{\Delta t}</math>


因此PID控制器的散化可以<math>u(t)</math>微分,再用一阶导数及二阶导数的定求得<math>u(t_k)</math>,可以得到
因此PID控制器的散化可以<math>u(t)</math>微分,再用一階導數及二階導數的定求得<math>u(t_k)</math>,可以得到


:<math>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]</math>
:<math>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]</math>
第427行: 第427行:


== 伪代码 ==
== 伪代码 ==
以下是一段实现PID演算法的伪代码:<ref name="codeproject">{{cite web|title=PID process control, a "Cruise Control" example|url=http://www.codeproject.com/Articles/36459/PID-process-control-a-Cruise-Control-example|publisher=CodeProject|accessdate=4 November 2012|year=2009|archive-date=2014-12-24|archive-url=https://web.archive.org/web/20141224170122/http://www.codeproject.com/Articles/36459/PID-process-control-a-Cruise-Control-example|dead-url=no}}</ref>
以下是一段實現PID演算法的伪代码:<ref name="codeproject">{{cite web|title=PID process control, a "Cruise Control" example|url=http://www.codeproject.com/Articles/36459/PID-process-control-a-Cruise-Control-example|publisher=CodeProject|accessdate=4 November 2012|year=2009|archive-date=2014-12-24|archive-url=https://web.archive.org/web/20141224170122/http://www.codeproject.com/Articles/36459/PID-process-control-a-Cruise-Control-example|dead-url=no}}</ref>
previous_error = 0
previous_error = 0
integral = 0
integral = 0
第438行: 第438行:
wait(dt)
wait(dt)
goto start
goto start
此例中有两个变量在[[圈]]前需[[初始化]]0,然后开圈。目前的差(error)是用目前目值(setpoint)去系统反馈值(measured_value)而得,然行[[分]]和[[微分]]算,比例及微分乘以各自参数后得到出(output)。在实际中,这会[[数码模拟转换器]]转换为模拟讯号,作受控系的控制量。目前的差量及会储存,以便下次算微分及使用,程序会等待dt秒后开始,继续进行,透[[模拟数码转换器]]取新的系统反馈值及目值,再差量及出<ref name="codeproject"/>。
此例中有兩個變數在[[圈]]前需[[初始化]]0,然後開圈。目前的差(error)是用目前目值(setpoint)去系统反馈值(measured_value)而得,然行[[分]]和[[微分]]算,比例及微分乘以各自參數後得到出(output)。在實際中,這會[[數位類比轉換器]]轉換為類比訊號,作受控系的控制量。目前的差量及會儲存,以便下次算微分及使用,程式會等待dt秒後開始,繼續進行,透[[類比數位轉換器]]取新的系统反馈值及目值,再差量及出<ref name="codeproject"/>。


== 参见 ==
== 参见 ==
* [[控制理论]]
* [[控制理论]]
* [[反馈]]
* [[反馈]]
* [[不定]]
* [[不定]]
* [[振荡]]
* [[振荡]]


第464行: 第464行:
* [http://www.expertune.com/r2.asp?f=Wikipedia&l=articles.html 关于PID控制器的文章,教材]{{Dead link}}
* [http://www.expertune.com/r2.asp?f=Wikipedia&l=articles.html 关于PID控制器的文章,教材]{{Dead link}}
* [https://web.archive.org/web/20060417135557/http://www.industrial-electricity.com/open-and-closed-loop-feedback-systems-2-Parts-Typical-Control-System.html 一个控制系统的一部分]
* [https://web.archive.org/web/20060417135557/http://www.industrial-electricity.com/open-and-closed-loop-feedback-systems-2-Parts-Typical-Control-System.html 一个控制系统的一部分]
* [http://4rdp.blogspot.com/2008/05/pid-speed-control.html PID定速控制用]{{Wayback|url=http://4rdp.blogspot.com/2008/05/pid-speed-control.html |date=20111112044727 }}
* [http://4rdp.blogspot.com/2008/05/pid-speed-control.html PID定速控制用]{{Wayback|url=http://4rdp.blogspot.com/2008/05/pid-speed-control.html |date=20111112044727 }}
* [http://4rdp.blogspot.com/2008/12/apply-pid-to-control-lego-nxts-speed.html PID马达定速定角控制公式比]{{Wayback|url=http://4rdp.blogspot.com/2008/12/apply-pid-to-control-lego-nxts-speed.html |date=20120809002746 }}
* [http://4rdp.blogspot.com/2008/12/apply-pid-to-control-lego-nxts-speed.html PID馬達定速定角控制公式比]{{Wayback|url=http://4rdp.blogspot.com/2008/12/apply-pid-to-control-lego-nxts-speed.html |date=20120809002746 }}
* [http://eprints.gla.ac.uk/3817/1/IEEE3.pdf 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]{{Wayback|url=http://eprints.gla.ac.uk/3817/1/IEEE3.pdf |date=20131213200556 }}
* [http://eprints.gla.ac.uk/3817/1/IEEE3.pdf 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]{{Wayback|url=http://eprints.gla.ac.uk/3817/1/IEEE3.pdf |date=20131213200556 }}
* [http://www.ni.com/product-documentation/2923/en/ Understanding Servo Tune(其中包括PID整方法例) ]{{Wayback|url=http://www.ni.com/product-documentation/2923/en/ |date=20150123063127 }}
* [http://www.ni.com/product-documentation/2923/en/ Understanding Servo Tune(其中包括PID調整方法例) ]{{Wayback|url=http://www.ni.com/product-documentation/2923/en/ |date=20150123063127 }}
* [http://labview360.com/article/info.asp?TID=10149&FID=165 LabView360技文章 PID]{{Wayback|url=http://labview360.com/article/info.asp?TID=10149&FID=165 |date=20151222142820 }}
* [http://labview360.com/article/info.asp?TID=10149&FID=165 LabView360技文章 PID]{{Wayback|url=http://labview360.com/article/info.asp?TID=10149&FID=165 |date=20151222142820 }}
{{-}}
{{-}}
{{自控制}}
{{自控制}}


[[Category:控制理论]]
[[Category:控制理论]]

2024年5月29日 (三) 01:06的版本

PID控制器(比例-积分-微分控制器),由比例单元(Proportional)、积分单元(Integral)和微分单元(Derivative)组成[1]。可以透過調整這三個單元的增益來調定其特性。PID控制器主要适用于基本上线性,且动态特性不随时间变化的系统。

PID控制器的方塊圖

PID控制器是一个在工业控制应用中常见的回授回路部件。这个控制器把收集到的数据和一个参考值进行比较,然后把这个差别用于计算新的输入值,这个新的输入值的目的是可以让系统的数据达到或者保持在参考值。PID控制器可以根据历史数据和差别的出现率来调整输入值,使系统更加准确而稳定。

PID控制器的比例单元(P)、积分单元(I)和微分单元(D)分別對應目前誤差、過去累計誤差及未來誤差。若是不知道受控系統的特性,一般認為PID控制器是最適用的控制器[2]。藉由調整PID控制器的三個參數,可以調整控制系統,設法滿足設計需求。控制器的響應可以用控制器對誤差的反應快慢、控制器過衝的程度及系統震盪的程度來表示。不過使用PID控制器不一定保證可達到系統的最佳控制,也不保證系統穩定性。

有些應用只需要PID控制器的部份單元,可以將不需要單元的參數設為零即可。因此PID控制器可以變成PI控制器、PD控制器、P控制器或I控制器。其中又以PI控制器比較常用,因為D控制器對回授雜訊十分敏感,而若沒有I控制器的話,系統不會回到參考值,會存在一個誤差量。

反馈回路基础

PID回路是要自动实现一个操作人员用量具和控制旋钮進行的工作,这个操作人员会用量具测系统输出的结果,然后用控制旋钮来调整这个系统的输入,直到系统的输出在量具上显示稳定的需求的结果,在旧的控制文档里,这个过程叫做“复位”行为,量具被称为“测量”,需要的结果被称为“設定值”而設定值和测量之间的差别被称为“误差”。

一个控制回路包括三个部分:

  1. 系统的传感器得到的测量结果
  2. 控制器作出决定
  3. 通过一个输出设备来作出反应

控制器从传感器得到测量结果,然后用需求结果减去测量结果来得到误差。然后用误差来计算出一个对系统的纠正值来作为输入结果,这样系统就可以从它的输出结果中消除误差。

在一个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是以它的三种纠正算法而命名。受控變數是三种算法(比例、積分、微分)相加後的結果,即為其輸出,其輸入為误差值(設定值減去测量值後的結果)或是由误差值衍生的信號。若定義為控制輸出,PID演算法可以用下式表示:

其中

:比例增益,是調適參數
:積分增益,也是調適參數
:微分增益,也是調適參數
:誤差=設定值(SP)- 回授值(PV)
:目前時間
:積分變數,數值從0到目前時間

用更专业的话来讲,PID控制器可以視為是频域系统的滤波器。在计算控制器最终是否会达到稳定结果时,此性質很有用。如果数值挑选不当,控制系统的输入值会反复振盪,这导致系统可能永远无法达到预设值。

PID控制器的一般转移函数是:

,

其中C是一个取决于系统带宽的常数。

比例控制項

不同比例增益Kp下,受控變數對時間的變化(Ki和Kd維持定值)

比例控制考慮当前誤差,误差值和一个正值的常数Kp(表示比例)相乘。Kp只是在控制器的输出和系统的误差成比例的时候成立。比如说,一个电热器控制器是在目標溫度和實際溫度差10°C時有100%的輸出,而其目標值是25°C。那么它在15°C的时候会输出100%,在20°C的时候会输出50%,在24°C的时候输出10%,注意在误差是0的时候,控制器的输出也是0。

比例控制的輸出如下:

若比例增益大,在相同誤差量下,會有較大的輸出,但若比例增益太大,會使系統不穩定。相反的,若比例增益小,若在相同誤差量下,其輸出較小,因此控制器會較不敏感的。若比例增益太小,當有干擾出現時,其控制信號可能不夠大,無法修正干擾的影響。

穩態誤差

比例控制在誤差為0時,其輸出也會為0。若要讓受控輸出為非零的數值,就需要產生一個穩態誤差或偏移量[a]

積分控制項

不同積分增益Ki下,受控變數對時間的變化(Kp和Kd維持定值)

积分控制考慮过去誤差,將误差值过去一段时间和(误差和)乘以一个正值的常数Ki。Ki从过去的平均误差值来找到系统的输出结果和预定值的平均误差。一个简单的比例系统会震盪,会在预定值的附近来回变化,因为系统无法消除多余的纠正。通过加上负的平均误差值,平均系统误差值就会漸漸减少。所以,最终这个PID回路系统会在設定值稳定下来。

積分控制的輸出如下:

積分控制會加速系統趨近設定值的過程,並且消除純比例控制器會出現的穩態誤差。積分增益越大,趨近設定值的速度越快,不過因為積分控制會累計過去所有的誤差,可能會使回授值出現過衝的情形。

微分控制項

不同微分增益Kd下,受控變數對時間的變化(Kp和Ki維持定值)

微分控制考慮将来誤差,计算误差的一阶导,并和一个正值的常数Kd相乘。这个导数的控制会对系统的改变作出反应。导数的结果越大,那么控制系统就对输出结果作出更快速的反应。这个Kd参数也是PID被称为可预测的控制器的原因。Kd参数对减少控制器短期的改变很有帮助。一些实际中的速度缓慢的系统可以不需要Kd参数。

微分控制的輸出如下:

微分控制可以提昇整定時間及系統穩定性[8][9]。不過因為純微分器不是因果系统,因此在PID系統實現時,一般會為微分控制加上一個低通濾波器以限制高頻增益及雜訊[10]。實际上較少用到微分控制,估計PID控制器中只有約20%有用到微分控制[10]

參數調試

PID的參數調試是指透過調整控制參數(比例增益、積分增益/時間、微分增益/時間)讓系統達到最佳的控制效果。穩定性(不會有發散性的震盪)是首要條件,此外,不同系統有不同的行為,不同的應用其需求也不同,而且這些需求還可能會互相衝突。

PID只有三個參數,在原理上容易說明,但PID參數調試是一個困難的工作,因為要符合一些特別的準則,而且PID控制有其限制存在。歷史上有許多不同的PID參數調試方式,包括齊格勒-尼科爾斯方法等,其中也有一些已申請專利

PID控制器的設計及調試在概念上很直覺,但若有多個(且互相衝突)的目標(例如高穩定性及快速的暫態時間)都要達到的話,在實際上很難完成。PID控制器的參數若仔細的調試,會有很好的效果,相反的,若調適不當,效果會很差。一般初始設計常需要不斷的電腦模擬,並且修改參數,一直達到理想的性能或是可接受的妥協為止。

有些系統有非線性的特性,若在無載下調試的參數可能無法在滿載下動作,可以利用增益規劃的方式進行修正(在不同的條件下選用不同的數值)。

穩定性

若PID控制器的參數未挑選妥當,其控制器輸出可能是不穩定的,也就是其輸出發散,過程中可能有震盪,也可能沒有震盪,且其輸出只受飽和或是機械損壞等原因所限制。不穩定一般是因為過大增益造成,特別是針對延遲時間很長的系統。

一般而言,PID控制器會要求響應的穩定,不論程序條件及設定值如何組合,都不能出現大幅振盪的情形,不過有時可以接受臨界穩定的情形[來源請求]

最佳性能

PID控制器的最佳性能可能和針對過程變化或是設定值變化有關,也會隨應用而不同。

兩個基本的需求是調整能力(regulation,干擾拒絕,使系統維持在設定值)及命令追隨 (設定值變化下,控制器輸出追隨設定值的反應速度)。有關命令追隨的一些準則包括有上昇時間整定時間。有些應用可能因為安全考量,不允許輸出超過設定值,也有些應用要求在到達設定值過程中的能量可以最小化。

各方法的簡介

有許多種調試PID控制器參數的方法,最有效的方式多半是建立某種程序,再依不同參數下的動態特性來調試參數。相對而言人工調試其效率較差,若是系統的響應時間到數分鐘以上,更可以看出人工調試效率的不佳[來源請求]

調試方法的選擇和是否可以暫時將控制迴路「離線」有關,也和系統的響應時間有關。離線是指一個和實際使用有些不同的條件(例如不加負載),而且控制器的輸出只需考慮理論情況,不需考慮實際應用。在線調試是在實際應用的條件,控制器的輸出需考慮實際的系統 。若控制迴路可以離線,最好的調試方法是對系統給一個步階輸入,量測其輸出對時間的關係,再用其響應來決定參數[來源請求]

選擇調試方式
方法 優點 缺點
人工調試 不需要數學,可以在線調試 需要有經驗的工程師[來源請求]
齊格勒-尼科爾斯方法 被證實有效的方法,可以在線調試 會影響製程,需要試誤,得到的參數可能使響應太快[來源請求]
軟體工具 調適的一致性,可以在線調試或離線調試,可以配合计算机自动设计,包括閥及感測器的分析,可以在下載前進行模擬,可以支援非穩態(NSS)的調試 需要成本或是訓練[11]
Cohen–Coon 好的程序模型 需要一些數學,需離線調試,只對一階系統有良好效果[來源請求]

人工調整

若需在系統仍有負載的情形進行調試(線上調試),有一種作法是先將設為零,增加一直到迴路輸出震盪為止,之後再將設定為「1/4振幅衰減」(使系統第二次過衝量是第一次的1/4)增益的一半,然後增加直到一定時間後的穩態誤差可被修正為止。不過若可能會造成不穩定,最後若有需要,可以增加,並確認在負載變動後迴路可以夠快的回到其設定值,不過若太大會造成響應太快及過衝。一般而言快速反應的PID應該會有輕微的過衝,只是有些系統不允許過衝。因此需要將回授系統調整為過阻尼系統,而比造成震盪的一半還要小很多。

調整PID參數對其步階響應的影響

調整PID參數對系統的影響如下

調整方式 (on) 上升时间 超调量 安定时间 稳态误差 稳定性[10]
↑ Kp 減少 ↓ 增加 ↑ 小幅增加 ↗ 減少 ↓ 變差 ↓
↑ Ki 小幅減少 ↘ 增加↑ 增加 ↑ 大幅減少↓↓ 變差↓
↑ Kd 小幅減少 ↘ 減少↓ 減少↓ 變動不大→ 變好 ↑

齊格勒-尼科爾斯方法

齊格勒-尼科爾斯方法是另一種啟發式的調試方式,由John G. Ziegler和Nathaniel B. Nichols在1940年代導入,一開始也是將設定為零,增加比例增益直到系統開始等振幅振盪為止,當時的增益稱為,而振盪週期為,即可用以下的方式計算增益:

齊格勒-尼科爾斯方法
控制器種類
P - -
PI -
PID

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控制器。

控制器的輸出為

其中為設定值SP和量測值PV的誤差:

.

PI控制器可以用SimulinkXcos之類的軟體進行建模,方式是使用「flow chart」圖框,其中用以下的拉氏運算子:

其中

= 比例增益
= 積分增益

值的選擇需在減少過衝以及增加安定時間之間取捨。

微分單元對輸入中的高頻信號格外敏感,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,其中比例增益也作用在兩項,和上述「理論」段落看到的形式不同。「標準形」的PID為:

其中

為積分時間
為微分時間

在標準形中,每一個參數有其明確的物理意義,輸出是根據現在誤差、過去誤差及未來誤差而決定,加上微分項可以預測若控制系統不改變的話,時間後的誤差,而積分項是用過去所有誤差的和來調整輸出,希望在時間後可以完全消除誤差,而輸出的值會再乘以單一的增益

在理想的平行式PID中,其方程如下:

其中的增益和標準形PID係數的關係是:。平行式PID中的參數都視為單純的增益,最泛用,靈活性也最高,但較沒有物理意義,因此只用在PID的理論處理中,標準形PID雖在數學上比較複雜,在工業中較常使用。

倒數增益

許多情形下,PID控制器處理的變數是無因次的量,是某個最大值的比例,介於0到100%之間,而轉換為實際物理量(如泵浦速率或是水加熱的功率)是在PID控制器外,而這些控制變數是有因次的物理量(例如溫度)。此時增益多半不會表示為「每變化一度的輸出」,而會以溫度的形式表示,代表「100%輸出下的溫度(變化)」,代表輸出由0變到1(0%變為100%)下的溫度變化。

只針對過程變數進行微分控制

在大部份的商業控制系統中,是用過程變數取代誤差作為微分項的輸入,其原因是當目標值有不連續變化時,微分控制會產生很大的突波,若目標值不變,改變過程變數的效果和改變誤差相同,因此有些PID控制器會用過程變數作為微分項的輸入,不會影響控制器控制過程變數,抗雜訊的能力。

只針對過程變數進行微分及比例控制

大部份的商業控制系統也提供選擇,讓過程變數作為微分控制及比例控制的輸入,因此誤差只作為積分控制的輸入,這也不會影響控制器控制過程變數,抗雜訊的能力。

上述的修改可以避免目標值有不連續變化時,輸出值有對應不連續的變化,若目標值有步階變化,這項調整就相當重要。

也有些雙自由度(2-DoF)PID控制架構除了一般的PID控制外,再加上只針對過程變數進行的微分及比例控制,再分別用增益進行調整,目標是同時對目標步階響應以及雜訊抑制都有良好的性能[17]

PID控制器的拉氏轉換

有關會將PID控制器進行拉氏轉換

PID控制器的拉氏轉換也代表著控制器的傳遞函數,因此可以確認整體系統的傳遞函數。

PID的極零點對消

PID控制器可以寫成以下的形式

若受控設備的傳遞函數如下:

又令

因此若受控設備有不穩定的極點,看似可以用此方式消除,不過實際上有些差異,由干擾到輸出的閉迴路傳遞函數中仍有不穩定的極點,因此仍可能會發散。

串級型或交互型

另一種PID控制器的表示法為串級型(series)或稱為交互型(interacting)

其中參數和標準型的參數有以下的關係

,

.

上述作法可表示為二個串級的PD控制器及PI控制器,在早期類比電路的時代較容易實現,雖然控制器已經數位化,不過仍有些維持此形式。

離散化的控制器

若要在微處理機(MCU)或是FPGA中實現PID控制或是分析其性能,就需要將控制器離散化[18]。一階微分可以用後向有限差分表示,積分項也離散化,若取樣時間為,積分項可以用下式近似

微分項可近似為

因此PID控制器的離散化可以將微分,再用一階導數及二階導數的定義求得,可以得到

其中

伪代码

以下是一段實現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]

参见

注释

  1. ^ 唯一的例外是目標值恰好是比例增益等於0時的受控輸出。

参考文献

  1. ^ 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. ^ 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. 
  3. ^ 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). 
  4. ^ A Brief Building Automation History. [2011-04-04]. (原始内容存档于2011-07-08). 
  5. ^ (Bennett 1993p. 67)
  6. ^ 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). 
  7. ^ Bennett, Stuart. A history of control engineering, 1800-1930. IET. June 1986: 142–148. ISBN 978-0-86341-047-5. 
  8. ^ Introduction: PID Controller Design. University of Michigan. [2014-12-28]. (原始内容存档于2012-10-23). 
  9. ^ Tim Wescott. PID without a PhD (PDF). EE Times-India. October 2000 [2014-12-28]. (原始内容 (PDF)存档于2010-11-22). 
  10. ^ 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页面存档备份,存于互联网档案馆
  11. ^ 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/页面存档备份,存于互联网档案馆
  12. ^ 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页面存档备份,存于互联网档案馆
  13. ^ 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). 
  14. ^ Cooper, Douglas. Integral (Reset) Windup, Jacketing Logic and the Velocity PI Form. [2014-02-18]. (原始内容存档于2013-06-29). 
  15. ^ PID and PDFF Compensators for Motion Control (PDF). [2016-10-01]. (原始内容 (PDF)存档于2012-09-01). 
  16. ^ Cooper, Douglas. PI Control of the Heat Exchanger. Practical Process Control by Control Guru. [2014-02-27]. (原始内容存档于2014-02-28). 
  17. ^ Two-Degree-of-Freedom PID Controllers Mituhiko Araki and Hidefumi Taguchi (PDF). [2016-09-29]. (原始内容存档 (PDF)于2016-09-10). 
  18. ^ Discrete PI and PID Controller Design and Analysis for Digital Implementation. Scribd.com. [2011-04-04]. (原始内容存档于2012-01-11). 
  19. ^ 19.0 19.1 PID process control, a "Cruise Control" example. CodeProject. 2009 [4 November 2012]. (原始内容存档于2014-12-24). 

外部链接