**PID控制器**（比例-积分-微分控制器），由比例单元（**P**roportional）、积分单元（**I**ntegral）和微分单元（**D**erivative）组成。可以透過調整這三個單元的增益K\_{p}，K\_{i}和K\_{d}來調定其特性。PID控制器主要适用于基本上线性，且动态特性不随时间变化的系统。

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

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

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

反馈回路基础
------

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

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

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

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

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

比如说，假如利用水箱在为植物提供水，水箱的水需要保持在一定的高度。可以用传感器来检查水箱里水的高度，这样就得到了测量结果。控制器会有一个固定的用户输入值来表示水箱需要的水面高度，假设这个值是保持65％的水量。控制器的输出设备会连在由马达控制的水阀门上。打开阀门就会给水箱注水，关上阀门就会让水箱里的水量下降。这个阀门的控制信号就是控制变量。

PID控制器可以用来控制任何可被测量及可被控制变量。比如，它可以用来控制温度、压强、流量、化学成分、速度等等。汽车上的巡航定速功能就是一个例子。

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

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

歷史及應用
-----

PID控制理論是由觀察舵手的動作而來
PID控制器可以追溯到1890年代的调速器（英语：）設計。PID控制器是在船舶自动操作系統中漸漸發展。1911年Elmer Sperry（英语：）開發的控制器是最早期PID型控制器的其中之一，而第一個發表PID控制器理論分析論文的是俄裔美国工程師尼古拉斯·米诺尔斯基（英语：）（Minorsky 1922）。米诺尔斯基當時在設計美國海軍的自动操作系統，他的設計是基於對舵手的觀察，控制船舶不只是依目前的誤差，也考慮過去的誤差以及誤差的變化趨勢，後來米诺尔斯基也用數學的方式加以推導。他的目的是在於穩定性，而不是泛用的控制，因此大幅的簡化了問題。比例控制可以在小的擾動下有穩定性，但無法消除穩態誤差，因此加入了積分項，後來也加入了微分項。

當時在新墨西哥號戰艦上進行測試，利用控制器控制舵的角速度，利用PI控制器可以角度誤差維持在±2°以內，若加上D控制，角度誤差維持在±1/6°，比最好的舵手還要好。

不過因為海軍人員的抗拒，海軍那時候未使用這套系統，在1930年代也有其他人作出類似的研究。

在自動控制發展的早期，用機械設備來實現PID控制，是由槓桿、彈簧、阻尼及質量組成，多半會用壓縮氣體驅動。氣動控制器還一度是工業上的標準。

電子的類比控制器可以用電晶體、真空管、電容器及電阻器組成。許多複雜的電子系統中常會包括PID控制，例如磁碟的讀寫頭定位、電源供應器的電源條件、甚至是現代地震儀的運動偵測線路。現代電子控制器已大幅的被這些利用單晶片或FPGA來實現的數位控制器所取代。

現代工業使用的PID控制器多半會用PLC或有安装面板的數位控制器來實現。軟體實現的好處是相對低廉，配合PID實現方式調整的靈敏度很大。在工業鍋爐、塑膠射出機械、烫金机及包裝行業中都會用到PID控制。

變化的電壓輸出可以用PWM來實現，也就是固定週期，依要輸出的量去調整週期中輸出高電位的時間。對於數位系統，其時間比例有可能是離散的，例如週期是二秒，高電位時間設定單位為0.1秒，表示可以分為20格，精度5%，因此存在一量化誤差，但只要時間解析度夠高，就會有不錯的效果。

理论
--

PID是以它的三种纠正算法而命名。受控變數是三种算法（比例、積分、微分）相加後的結果，即為其輸出，其輸入為误差值（設定值減去测量值後的結果）或是由误差值衍生的信號。若定義u(t)為控制輸出，PID演算法可以用下式表示：

{\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}：比例增益，是調適參數
K\_{i}：積分增益，也是調適參數
K\_{d}：微分增益，也是調適參數
e：誤差=設定值（SP）- 回授值（PV）
t：目前時間
\tau ：積分變數，數值從0到目前時間t
用更专业的话来讲，PID控制器可以視為是频域系统的滤波器。在计算控制器最终是否会达到稳定结果时，此性質很有用。如果数值挑选不当，控制系统的输入值会反复振盪，这导致系统可能永远无法达到预设值。

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

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\_{{{\mathrm {out}}}}=K\_{p}\,{e(t)}
若比例增益大，在相同誤差量下，會有較大的輸出，但若比例增益太大，會使系統不穩定。相反的，若比例增益小，若在相同誤差量下，其輸出較小，因此控制器會較不敏感的。若比例增益太小，當有干擾出現時，其控制信號可能不夠大，無法修正干擾的影響。

#### 穩態誤差

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

### 積分控制項

不同積分增益Ki下，受控變數對時間的變化（Kp和Kd維持定值）
积分控制考慮过去誤差，將误差值过去一段时间和（误差和）乘以一个正值的常数Ki。Ki从过去的平均误差值来找到系统的输出结果和预定值的平均误差。一个简单的比例系统会震盪，会在预定值的附近来回变化，因为系统无法消除多余的纠正。通过加上负的平均误差值，平均系统误差值就会漸漸减少。所以，最终这个PID回路系统会在設定值稳定下来。

積分控制的輸出如下：

I\_{{{\mathrm {out}}}}=K\_{{i}}\int \_{{0}}^{{t}}{e(\tau )}\,{d\tau }
積分控制會加速系統趨近設定值的過程，並且消除純比例控制器會出現的穩態誤差。積分增益越大，趨近設定值的速度越快，不過因為積分控制會累計過去所有的誤差，可能會使回授值出現過衝的情形。

### 微分控制項

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

微分控制的輸出如下：

D\_{{{\mathrm {out}}}}=K\_{d}{\frac {d}{dt}}e(t)
微分控制可以提昇整定時間及系統穩定性。不過因為純微分器不是因果系统，因此在PID系統實現時，一般會為微分控制加上一個低通濾波器以限制高頻增益及雜訊。實际上較少用到微分控制，估計PID控制器中只有約20%有用到微分控制。

參數調試
----

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

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

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

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

### 穩定性

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

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

### 最佳性能

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

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

### 各方法的簡介

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

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

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

### 人工調整

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

調整PID參數對其步階響應的影響
調整PID參數對系統的影響如下

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

### 齊格勒－尼科爾斯方法

更多：齊格勒－尼科爾斯方法
齊格勒－尼科爾斯方法是另一種啟發式的調試方式，由John G. Ziegler和Nathaniel B. Nichols在1940年代導入，一開始也是將K\_{i}及K\_{d}設定為零，增加比例增益直到系統開始等振幅振盪為止，當時的增益稱為K\_{u}，而振盪週期為P\_{u}，即可用以下的方式計算增益：

齊格勒－尼科爾斯方法| 控制器種類 | K\_{p} | K\_{i} | K\_{d} |
| --- | --- | --- | --- |
| *P* | 0.50{K\_{u}} | - | - |
| *PI* | 0.45{K\_{u}} | 1.2{K\_{p}}/P\_{u} | - |
| *PID* | 0.60{K\_{u}} | 2{K\_{p}}/P\_{u} | {K\_{p}}{P\_{u}}/8 |

### PID調試軟體

大部份現代的工業設備不再用上述人工計算的方式調試，而是用PID調試及最佳化軟體來達到一致的效果。軟體會收集資料，建立模型，並提供最佳的調試結果，有些軟體甚至可以用參考命令的變化來進行調試。

數學的PID調試會將脈衝加入系統，再用受控系統的頻率響應來設計PID的參數。若是響應時間要數分鐘的系統，建議用數學PID調試，因為用試誤法可能要花上幾天才能找到可讓系統穩定的參數。最佳解不太容易找到，有些數位的迴路控制器有自我調試的程序，利用微小的參考命令來計算最佳的調試值。

也有其他調試的公式，是依不同的性能準則所產生。許多有專利的公式已嵌入在PID調試軟體及硬體模組中。

一些先進的PID調試軟體也可以在動態的情況下用演算法調整PID迴路，這類軟體會先將程序建模，給微擾量，再根據響應計算參數。

PID控制的限制
--------

PID控制可以應用在許多控制問題，多半在大略調整參數後就有不錯的效果，不過有些應用下可能反而會有差的效果，而且一般無法提供最佳控制。PID控制的主要問題是在於其為回授控制，係數為定值，不知道受控系統的資訊，因此其整体性能常常是妥協下的結果。在沒有受控系統模型的條件下，PID控制最佳的控制器，但若配合系統模型，可以有進一步的提昇。

當PID控制器單獨使用時，若因應用需求，需調整PID迴路增益使控制系統不會過衝，其效果有可能很差。PID控制器的缺點還包括無法處理受控系統的非線性、需在反應時間及调整率之間妥協、無法針對參數的變動而反應（例如系統在暖機後特性會改變）、以及大擾動下的波形落後。

PID控制器最顯著的提昇是配合前饋控制，加入有關系統的資訊，只用PID控制器來控制誤差。另外，PID控制器也有一些小幅的改善方式，例如調整參數（增益規劃或是依性能進行適應性的調整）、提昇性能（提高取樣率、精度及準度，若有需要加入低波濾波器），或是用多個串接的PID控制器。

### 線性

PID控制器常見的問題是在於其線性且對稱的特性，若應用在一些非線性的系統，其效果可能會有變化。以暖通空調中常見的溫度控制，可能是採用主動加熱（用加熱器加熱），但冷卻是使用被動冷卻（不加熱，自然冷卻），其冷卻速度比加熱速度慢很多，輸出若有過衝，下降速度很慢，因此PID控制需調整為不會過衝的過阻尼，以減少或避免過衝，但這也延長了整定時間，使性能變差。

### 雜訊對微分器的影響

微分器的問題在於對量測或程序產生的高頻雜訊會有放大效果，因此會對輸出造成大幅的變動。因此真實的控制器不會有理想的微分器，只有一個有限頻寬的微分器或高通濾波器。一般為了移除高頻的雜訊，會在量測時加入低通濾波器，若低通濾波器和微分器對消，濾波效果也就受限了，因此低雜訊的量測設備相當重要。實務上可以使用中值滤波器，調昇濾波效率及實際上的性能。有時可以將微分器關閉，對控制性能的影響不大，此時稱為PI控制器。

PID演算法的修改
---------

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

### 積分飽和

積分飽和是理想PID演算法實現時常見的問題。若設定值有大的變動，其積分量會有大幅的變化，大到輸出值被上下限限制而飽和，因此系統會有過衝，而且即使誤差量符號改變，積分量變小，但輸出值仍被上下限限制，維持在上限（或下限），因此輸出看似沒有變化，系統仍會持續的過衝，一直要到輸出值落在上下限的範圍內，系統的回授量才會開始下降。此問題可以用以下方式處理：

* 在程序變數離開可控制範圍時，暫停積分。
* 讓積分值限制在一個較小的上下範圍內。
* 重新計算積分項，使控制器輸出維持上下限之間的範圍內。

### PI控制器

PI控制器的方塊圖
PI控制器（比例-積分控制器）是不用微分單元的PID控制器。

控制器的輸出為

K\_{P}\Delta +K\_{I}\int \Delta \,dt
其中\Delta 為設定值SP和量測值PV的誤差：

\Delta =SP-PV.
PI控制器可以用Simulink或Xcos之類的軟體進行建模，方式是使用「flow chart」圖框，其中用以下的拉氏運算子：

C={\frac {G(1+\tau s)}{\tau s}}
其中

G=K\_{P} = 比例增益
G/\tau =K\_{I} = 積分增益
G值的選擇需在減少過衝以及增加安定時間之間取捨。

微分單元對輸入中的高頻信號格外敏感，PI控制器因為沒有微分單元，在訊號雜訊大時，在穩態時會更加穩定。但對狀態快速變化的反應較慢，因此相較於調適到最佳值的PID控制器，PI控制器會較慢到達設定值，受干擾後也比較慢恢復到正常值。

PDF控制（pseudo-derivative feedback control）可以視為是PI控制器的變體，比例控制器的輸入由誤差值改為回授值。

### 不動作區

許多PID迴路是控制機械元件（例如閥）。機械保養是一筆可觀的費用，磨損會使得機械在有輸入信號時出現靜摩擦或是不動作區，都會導致控制性能的下降。機械損耗的速度主要和設備多常改變其狀態有關。若磨損是主要考量的話，PID迴路可以有輸出的遲滯現象以減少輸出狀態的改變。若變化小，仍在不動作區內，讓控制器的輸出維持上一次的值。變化要大到超過不動作區，實際的狀態才會隨之變化。

### 設定值的步階變化

若系統的設定值有步階變化，比例單元和微分單元也會有對應的變化，特別是微分單元對於步階變化的輸出特別的大，因此有些PID演算法會配合以下的修改來處理設定值的變化。

設定值斜坡變化
此修改方式下，設定值會用線性或是一階濾波的方式，由原始值變到新的值，避免因為步階變化產生的不連續。
只對程序變數（回授量）微分
此修改下，PID控制器只針對量測的程序變數（PV）微分，不對誤差微分。程序變數是實際的物理量，較不易有瞬間的變化，而誤差可能因為設定值的步階變化而有瞬間變化。這也是一種簡單的設定值加權法。
設定值加權
設定值加權分別調整在比例單元及微分單元中的誤差量，誤差量的設定值乘以一個0到1之間的加權，積分單元的誤差量需使用真實的設定值，以避免穩態誤差。這兩個參數不影響對負載變化及量測雜訊的響應，可以提昇對設定點變化的響應。
### 前饋控制

PID控制器若再配合前饋控制（開迴路控制），可以再提昇其控制性能。在前饋控制中考慮系統的已知資訊（例如理想加速度或是慣量），再將輸出加到PID控制器的控制輸出，以提昇整體的系統性能。前饋量可能是控制輸出主要的部份，而PID控制器只用來補償目標值和開迴路控制器輸出之間的誤差。因為前饋輸出不會受到回授的影響，因此也不會造成系統的振盪，可以在不影響穩定性的條件下提昇系統的響應。前饋可以依目標值及其他量測到的干擾量來產生，目標值加權是一種簡單的前饋控制方式。

例如，在大部份的運動控制系統中，為了要使機械負載加速，致動器要產生更大的力。若用速度環的PID控制器來控制負載速度，比較理想的方式是先得到理想的瞬間加速度值，適量調整加權後再加到PID的輸出中。因此控制器輸出中有一部份是不隨機械速度而改變的輸出，再用PID根據實際輸出和目標的差異去增加或是減少輸出。這類有前饋控制的PID控制器可以加快控制系統的反應速度。

### 無衝擊運轉

有時PID控制器會規劃為無衝擊（bumpless）的特性，在參數變化時重新計算適當的積分累計值，使輸出不會因參數變化有不連續的改變。

串級PID控制器
--------

二個PID控制器可以組合在一起，得到較佳的效果，這稱為串級PID控制。以兩個PID控制器組成的串級PID控制為例，其中一個PID控制器在外迴路，控制像液面高度或是速度等主要的物理量，另一個PID控制器是內迴路，以外迴路PID控制器的輸出做為其目標值，一般是控制較快速變化的參數，例如流量或加速度等。若利用串級PID控制，可以增加控制器的工作頻率，並降低其時間常數。

例如一個溫控的循環水浴設備有二個串級的PID控制器，分別有各自的熱電偶溫度感測器。外迴路的控制器控制水溫，其感測器距加熱器很遠，直接量測整體水溫，其誤差量是理想水溫及整體水溫的差值。外迴路PID控制器的输出即為內迴路控制器的目標值，內迴路控制器控制加熱器，其感測器是在加熱器上，其誤差量是加熱器的理想溫度及量測到溫度的差值，其輸出會使加熱器維持在設定值附近。

內外迴路控制器的參數可能會差很多，外迴路的PID控制器有較長的時間常數，對應所有的水加熱或是冷卻需要的時間。內迴路的PID控制器反應會比較快。每個控制器可以調整到符合其真正控制的系統，例如水槽中所有的水，或是加熱器本身。

其他PID的形式及其表示法
-------------

### 理想的PID及標準形PID

工業上常看到PID控制器，而許多工業相關資料中看到的都是「標準形」的PID，其中比例增益K\_{p}也作用在I\_{{{\mathrm {out}}}}及D\_{{{\mathrm {out}}}}兩項，和上述「理論」段落看到的形式不同。「標準形」的PID為：

{\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為積分時間
T\_{d}為微分時間
在標準形中，每一個參數有其明確的物理意義，輸出是根據現在誤差、過去誤差及未來誤差而決定，加上微分項可以預測若控制系統不改變的話，T\_{d}時間後的誤差，而積分項是用過去所有誤差的和來調整輸出，希望在T\_i時間後可以完全消除誤差，而輸出的值會再乘以單一的增益K\_{p}。

在理想的平行式PID中，其方程如下：

{\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}={\frac {K\_{p}}{T\_{i}}}及K\_{d}=K\_{p}T\_{d}\,。平行式PID中的參數都視為單純的增益，最泛用，靈活性也最高，但較沒有物理意義，因此只用在PID的理論處理中，標準形PID雖在數學上比較複雜，在工業中較常使用。

### 倒數增益

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

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

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

{\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)
### 只針對過程變數進行微分及比例控制

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

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

{\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控制外，再加上只針對過程變數進行的微分及比例控制，再分別用增益進行調整，目標是同時對目標步階響應以及雜訊抑制都有良好的性能。

### PID控制器的拉氏轉換

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

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}{\frac {s^{2}+{\frac {K\_{p}}{K\_{d}}}s+{\frac {K\_{i}}{K\_{d}}}}{s}}
若受控設備的傳遞函數如下：

H(s)={\frac {1}{s^{2}+2\zeta \omega \_{0}s+\omega \_{0}^{2}}}
又令

{\frac {K\_{i}}{K\_{d}}}=\omega \_{0}^{2}
{\frac {K\_{p}}{K\_{d}}}=2\zeta \omega \_{0}
則

G(s)H(s)={\frac {K\_{d}}{s}}
因此若受控設備有不穩定的極點，看似可以用此方式消除，不過實際上有些差異，由干擾到輸出的閉迴路傳遞函數中仍有不穩定的極點，因此仍可能會發散。

### 串級型或交互型

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

G(s)=K\_{c}{\frac {(\tau \_{i}{s}+1)}{\tau \_{i}{s}}}(\tau \_{d}{s}+1)
其中參數和標準型的參數有以下的關係

K\_{p}=K\_{c}\cdot \alpha , T\_{i}=\tau \_{i}\cdot \alpha 
T\_{d}={\frac {\tau \_{d}}{\alpha }}
而

\alpha =1+{\frac {\tau \_{d}}{\tau \_{i}}}.
上述作法可表示為二個串級的PD控制器及PI控制器，在早期類比電路的時代較容易實現，雖然控制器已經數位化，不過仍有些維持此形式。

### 離散化的控制器

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

\int \_{{0}}^{{t\_{k}}}{e(\tau )}\,{d\tau }=\sum \_{{i=1}}^{k}e(t\_{i})\Delta t
微分項可近似為

{\dfrac {de(t\_{k})}{dt}}={\dfrac {e(t\_{k})-e(t\_{{k-1}})}{\Delta t}}
因此PID控制器的離散化可以將u(t)微分，再用一階導數及二階導數的定義求得u(t\_{k})，可以得到

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}

伪代码
---

以下是一段實現PID演算法的伪代码：

```
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秒後開始，迴圈繼續進行，透過類比數位轉換器讀取新的系统反馈值及目標值，再計算誤差量及輸出。

参见
--

* 控制理论
* 反馈
* 不穩定
* 振荡

参考文献
----

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. 1 2 3  Bennett, Stuart.. IET. 1993: p. 48. ISBN 978-0-86341-299-8.
3. ↑  Bennett, Stuart.  (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. ↑ .  [2011-04-04]. （原始内容存档于2011-07-08）.
5. ↑  （Bennett 1993，p. 67）
6. ↑  Bennett, Stuart.  (PDF). IEEE Control Systems Magazine (IEEE). 1996, **16** (3): 17–25  [2014-12-24]. （原始内容 (PDF)存档于2016-08-09）.
7. ↑  Bennett, Stuart.. IET. June 1986: 142–148. ISBN 978-0-86341-047-5.
8. ↑ . University of Michigan.  [2014-12-28]. （原始内容存档于2012-10-23）.
9. ↑  Tim Wescott.  (PDF). EE Times-India. October 2000  [2014-12-28]. （原始内容 (PDF)存档于2010-11-22）.
10. 1 2 3  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.  （页面存档备份，存于）
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.  （页面存档备份，存于）
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.  （页面存档备份，存于）
13. ↑   (PDF).  [2014-02-02]. （原始内容存档 (PDF)于2014-03-27）.
14. ↑  Cooper, Douglas..  [2014-02-18]. （原始内容存档于2013-06-29）.
15. ↑   (PDF).  [2016-10-01]. （原始内容 (PDF)存档于2012-09-01）.
16. ↑  Cooper, Douglas.. Practical Process Control by Control Guru.  [2014-02-27]. （原始内容存档于2014-02-28）.
17. ↑   (PDF).  [2016-09-29]. （原始内容存档 (PDF)于2016-09-10）.
18. ↑ . Scribd.com.  [2011-04-04]. （原始内容存档于2012-01-11）.
19. 1 2 . CodeProject. 2009  [4 November 2012]. （原始内容存档于2014-12-24）.

* Minorsky, Nicolas.. 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（页面存档备份，存于）


|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * 
* 论
* 编
控制理论 |
| --- |
|  |
| 領域分支 | 
* 自适应控制
* 控制理论
* 數位控制
* 能量成型控制
* 模糊控制
* 混合（英语：）控制
* 智能控制
* 模型預測控制
* 神经系统控制
* 非線性控制
* 最优控制
* 实时计算
* 鲁棒控制
* 隨機控制

 |
|  |
| 系統特性 | 
* 時域
* 頻域
* 波德圖
* 奈奎斯特图
* 尼柯尔斯图
* 方塊圖
* 閉迴路傳遞函數
* 可控制性
* 傅里叶变换
* 频率响应
* 拉普拉斯变换
* 负反馈
* 可觀測性
* 性能
* 正回饋
* 根軌跡圖法
* 伺服機構
* 信号流图
* 状态空间
* 穩定性理論
* 穩態分析及設計
* 系统动力学
* 传递函数

 |
|  |
| 數位控制 | 
* 離散時間信號
* 数字信号处理
* 量化
* 實時軟體
* 取樣資料
* 系統識別
* Z轉換

 |
|  |
| 進階理論 | 
* 人工神经网络
* 係數圖法（英语：）
* 控制重構
* 分佈式參數系統
* 分數階控制
* 模糊逻辑
* H-infinity迴路成形
* 漢克爾奇異值
* 卡尔曼滤波
* Krener's theorem（英语：）
* 最小二乘法
* 李雅普诺夫稳定性
* 小迴路回授
* 知覺控制理論
* 狀態觀測器
* 向量控制
* 描述函數

 |
|  |
| 控制器 | 
* 嵌入式控制器
* 超前-滞后补偿器
* 数控机床
* PID控制器
* 可编程逻辑控制器

 |
|  |
| 應用 | 
* 分散式控制系統
* 电动机
* 工業控制系統
* 机械电子学
* 運動控制
* 过程控制
* 机器人学
* 数据采集与监控系统（SCADA）

 |

 |