
生活中的一些小電器,無人機的飛行姿態和飛行速度控制等等,都應用到 PID——PID 控制在自動控制原理中是一套比較經典的算法 。
我們常見到這類設備,只不過沒有留心或者發現了沒有深入探究以及主動搜索一下其中的原理而已 。
為什么說產品經理需要保持強烈的好奇心?發現生活、身邊的美,探究一下為我所用 。
比如我們家里的恒溫熱水器、小米的平衡車,我們常常說的自動駕駛、無人機、掃地機、大火的服務機器人等等產品上有廣泛的應用 。
不管你學沒學過控制理論,只要涉及到機電一體化系統 , 一定會接觸到 PID 控制算法 。
為什么需要 PID 控制器呢?
你一定用過恒溫熱水壺,你想讓熱水壺的水保持在一個恒定的溫度,回到家拿起來就喝,不需要慢慢等水燒開再等到水冷卻到適合咕咚咕咚喝的溫度 。
這時候就需要一種算法先將水溫加熱到目標位置附近,能夠“預見”這個水溫的變化趨勢 , 然后還能根據各種環境影響因素造成誤差去調節以維持設定目標 。
當然,熱水壺不需要那么高的精確度,可能只用 PD 就搞定了 。
那,比如自動駕駛中控制汽車維持在某個設定的速度行駛,或將汽車保持在一個固定車道內行駛,這就需要非常精準 。
這下你知道 PID 到底是個什么東東了吧!
接下來,我們了解一下他的原理 。
一、什么是 PID及其原理
1. 什么是 PID

PID,即比例 Proportion、積分 Integral 和微分 Derivative 三個單詞的縮寫;比例積分微分控制,簡稱PID控制 。
簡單講,根據給定值和實際輸出值構成控制偏差 , 將偏差按比例、積分和微分通過線性組合構成控制量 , 對被控對象進行控制 。
常規 PID 控制器作為一種線性控制器 。
2. PID 原理
常規的 PID 控制原理圖:
系統由 PID 控制器和被控對象(常常是執行機構,如電機等)組成 。
現在知道了 PID 控制器是怎么工作的,那么為什么需要比例、積分、微分三個環節呢?具體有什么作用呢?
- 比例環節:當被控制對象現狀與目標有差距的時候,控制器就產生一個控制使得被控制對象向目標靠近 。所以這是根據目標差距進行一個有比例的調節 。
- 微分環節:當被控制對象越來越接近目標的時候,當然不能按照比例調節的給定量去執行 。所以引入一個對未來趨勢的判斷給定量 。
- 積分環節:當比例和微分環節控制達到預設目標時,對一段時間內的靜態誤差進行糾偏 。
引述百度的標準解釋:
- 比例環節:即時成比例地反應控制系統的偏差信號e(t),偏差一旦產生,控制器立即產生控制作用以減小誤差 。當偏差e=0時,控制作用也為0;因此,比例控制是基于偏差進行調節的 , 即有差調節 。
- 積分環節:能對誤差進行記憶 , 主要用于消除靜態差 , 提高系統的無差度,積分作用的強弱取決于積分時間常數Ti , Ti越大,積分作用越弱,反之則越強 。
- 微分環節:能反映偏差信號的變化趨勢(變化速率),并能在偏差信號值變得太大之前,在系統中引入一個有效的早期修正信號,從而加快系統的動作速度,減小調節時間 。
這時,你把三個環節想象成你自己=比例,你另外的兩個兄弟,一個是微分,一個是積分 。
現在你們倆的車相距 300m , 你一腳油門下去,車子急加速開始逼近目標 。
你的車慢慢靠近 100m 這個目標 。
這時,你的兄弟「微分」說:“兄弟,慢點慢點?。】煲詠恕?。這就是微分的作用,對未來的判斷和控制 。
你肯定不會一次性就將這個跟車距離調整好了 。可能你一會兒小于 100m , 一會兒你又大于 100m 跟蹤距離 。
就這樣你跟你兄弟這樣來來回回的調整 , 終于將跟車距離調整在 100m 左右這樣的距離(比較極端哈,人為是不可能做到的) 。
可是路上有坑洼呀、有風阻、還有上坡這樣的環境干擾因素 。
這時,你那個好久沒說話的兄弟「積分」起作用了,他一直在監視你這段平穩駕駛(100m 跟車的穩定狀態)狀態的誤差,然后進行計算,告訴你給多少油門 。
至此,我想應該對 PID 有了初步的認識 。
接下來通過一個稍微詳細點兒的例子了解一下 PID 三個環節是如何工作的 。
二、PID 三個環節如何工作
我們就用比較火熱的自動駕駛來簡單舉例,那自動駕駛很直觀的就有兩個應用,一個是保持固定的車道行駛 , 一個就是保持固定的速度行駛 。保持固定的車道就是控制方向盤,保持固定速度就是控制油門;這兩個都比較直觀,我們就用固定速度(定速巡航)來簡單舉例 。
定速巡航也是非常成熟的技術了,在很多中低端車型上已經成了標配 。
1. 我們先講 P——比例調節
現在我們想讓我們的車在高速公路上保持 100km/h 的速度行駛,當前速度是 40km/h 。想要到達 100km/h 有三種執行方式:
- 猛踩油門 , 車速快速提升,以最快的速度接近 100km/h;
- 溫和的踩油門,車速中等,以溫和的速度接近 100km/h;
- 緩慢的踩油門 , 車速較慢,以較慢的速度接近 100km/h 。
直觀的反應對比如圖:

從圖中可以看出:
- 當 P 值較大時,車輛以更快的速度和最短的時間達到 100km/h;
- 當 P 值中等時,車輛相對于 P 值較大時 , 反應相對慢點兒,也就是以相對較慢和更長一點兒的時間到達 100km/h;
- 當 P 值較小時,車輛的反應速度就更慢,到達 100km/h 所耗費的時間也更長 。
車輛的反應速度和耗費時間的長短取決于 P 值的大小——也就是 P 值越大 , 車輛反應越快,耗時越短 。
P 值大,雖然反應快,但是反應劇烈,類似于猛加速,坐在汽車里有強烈的推背感;相應的當靠近目標的時候,由于慣性容易沖過頭,并且為了抑制過大沖過頭就需要猛烈的踩剎車,乘坐的人就身體向前傾 。
另外由于慣性比較大的原因,車輛需要更長的時間才能調整到恒定 100km/h 的速度 , 因為車輛需要較長的時間來調整震蕩 。
這樣的乘坐體驗就不是很好,這就需要我們設置一個合理的 P 值,車輛的反應不那么劇烈,反應時間你也能夠接受 。
類似于你開汽車,你用 S 檔(有的叫運動檔 , 有的叫超車檔)超車,較大的功率輸出 , 較快的提速,然后切換到 D 檔(行車檔)維持;你可以感受一下,同樣的油門,S 檔與 D 檔的反應不一樣 , P 值設置不一樣 。
好了,既然有了 P 為什么還需要 D 呢?
人類的欲望是無止盡的,總希望越多越好 , 越快越好(前提是付出的越少越好) 。
這時就引入一個 D , 反應速度再快一點兒,但是反應又不那么劇烈;也就是在中等的 P 值前提下 , 比只有 P 的情況下更快的到達 100 的速度(用時更少),但是車輛又不劇烈的震蕩(比沒有 D 的時候更溫和) 。
2. D——微分調節
【經典的自動控制算法什么是pid】為了不讓車輛速度沖過頭,我們再給他一個反向的減速度 。就是讓車輛在越接近 100 的時候,車速解決 100 的速度越慢;與 100km/h 差距越大的時候,接近速度越快 。注意 , 這個速度不是車輛的行駛速度,是達到目標速度 100 的時間長短 。
這點兒可能不太容易理解,這個相當于你車速已經到了 90km/h , 為了防止過沖,這時候你開始松油門,松的比較快;當到達 95km/h 的時候,你油門松的就比較慢 。
D 值的設置也有三種情況:
- D 值較大,到達目標速度的時間就比較長;
- D 值較?。岵鸕?,車速會在 100 上下波動,緩慢的進入 100 的車速維持;
- D 值合適,車速較快達到 100,并且不會震動 。

P 值不變的前提下 D 值影響的變化表現 。
D 值太大了,減速度就大了,也可以理解為靠近目標速度 100 的阻力大 。那這樣達到目標耗費的時間就較長 。
D 值太小了,雖然能夠較快的達到目標,但是 D 值對 P 的影響力不夠,容易過沖,并且需要經過多次調整才能進入穩定狀態 。
在 P 和 D 的相互作用,調節控制下,最終得到的理想狀態是這樣的 。

既能在較快時間內達到目標,又不會使得反應劇烈造成不適感 。
有了 P 和 D 是不是很完美了呢?貌似很完美,但是我們希望更加完美就需要引入一個 I 進入 。
3. I——積分調節
有了 P 和 D 貌似已經很完美了,但是這個世界是不穩定的,沒有一直保持不變的狀態,正如那句話“一切都不在變化 , 唯一不變的只有變化” 。你終于將你的車輛穩定在 100km/h 之后,但是依然有來個方面的影響因素,內在和外在 。
內在的是 , 你車輛的燃油效率是在變化的,外在的是風阻、路面狀態(比如摩擦比、平整度、微小的坡度等)都在變化,這些干擾因素都在影響你車輛的恒定目標速度 。
所以 , I (積分)就介入檢測過去一段時間內車速狀態 , 然后進行積分 , 適當的幫助 P 一把 。
I 值設置也有三種情況:
- I 值過大,調整的力度太大了 , 容易造成過沖,需要幾次調整才能讓車速回歸正常,車輛會振蕩;
- I 值過小,調整的力度太小了,幫助 P 的作用不大,所以需要較長時間才能回到正常;
- I 值合適 , 給一個合適的力來幫助 P,讓車速在一個合適的時間內回到目標值 。

以上就是 PID 三環節的調節 , 使得被控制對象能夠達到一個穩定平衡的運行系統 。
最后,用一個動圖 , 看看三者之間的關系 。

三、PID 應用
其實我們在在日常生活中能看到很多產品都有 PID 的運用,但并不是都會將 PID 三個調節都用上 。不同的產品根據不同的使用環境,做相應的調整;P 是一定要用的,I 和 D 就是看系統響應速度 , 輸入震蕩程度等情況,根據實現效果和控制精度等進行相應的取舍 。
當然,也有工程師工程技術能力的因素,以及怎么設計的問題 。
比如 , 很早以前,我用過一個某大牌的三軸手持云臺 , 我在沒有裝載手機的情況下開機,三軸開始亂轉,這就是設計的問題;在開機的時候,目標與現狀差距很大,這時候工程師讓 I 介入了,造成過沖,其實只要將 I 進行分離設計就好 。
再比如,平衡車很多的時候,很多廠家不明所以的就進入這個市?。蛔詈蠼朧諧〉牟?nbsp;, 一開機,平衡車前后劇烈振蕩,半天才進入平衡狀態 , 有的甚至一直不能進入平衡狀態,直到你強行扶著站上去才勉強能用 。
這項技術雖然是已經發展幾十年的技術了,在工業和日常生活的小產品上有廣泛的應用 。
產品經理雖然不需要深入的去了解技術,但是需要充分詳盡的了解使用場景,使用體驗 , 競爭的目前狀況,幫助工程師進行產品設計 。也需要根據實際情況做相應的取舍,因為成本也許需要考慮的重要因素 。
