最近看到了Brett Beauregard發表的有關PID的系列文章,感受對於理解PID算法頗有幫助,因而將系列文章翻譯過來!在自我提升的過程當中,也但願對同道中人有所幫助。做者Brett Beauregard的原文網址:http://brettbeauregard.com/blog/2017/06/introducing-proportional-on-measurement/算法
已經有至關長的一段時間了,但我終於更新了Arduino PID庫。我添加的是一個幾乎未知的功能,但我認爲這將是對愛好者社區的利好。它被稱爲 "測量的比例" (簡稱 PonM)。函數
1、爲何你應該關心性能
有一些進程被稱爲「集成進程」。在這些過程當中,PID的輸出控制輸入的變化率。在工業中,這些只佔全部過程的一小部分,但在業餘愛好領域,這些傢伙無處不在:真空低溫烹飪、線性幻燈片和3D打印機擠出機溫度控制都是這類過程的例子。ui
這些過程使人沮喪的是,使用傳統的 PI 或 PID 控制,它們會超過設定值。不是有時,而是老是:spa
若是你不知道這件事,這可能會讓你抓狂。您能夠永遠調整調優參數,超調仍然存在;基礎數學就是這樣。測量的比例改變了基礎數學。所以,在不發生超調的狀況下,能夠找到一組調優參數:翻譯
超調仍然能夠確定,但這並不是不可避免。有了 PonM 和正確的整定參數,那個低溫烹飪或線性滑塊就能夠直接延伸到設定值,而不是超過設定值。3d
2、那麼什麼是測量的比例呢?blog
與基於測量的微分相似,PonM 改變了比例項所關注的內容。比例項採用PID 輸入的當前值代替誤差進行計算。遊戲
基於誤差的比例:進程
基於測量的比例:
與基於測量的微分不一樣,它對性能的影響是巨大的。對於 DonM,微分項仍然有相同的做用:抵制急劇的變化,從而抑制由P和I比例測量驅動的振盪,另外一方面,從根本上改變比例項的做用。它不是像I同樣的驅動力,而是像 D 同樣成爲阻力的力量。這意味着,對於PonM,一個更大的 Kp 將使您的控制器更加保守。
3、很好。但這如何消除超調呢?
要理解這個問題並修復它,看看不一樣的項以及它們對整個PID輸出的貢獻是頗有幫助的。下面是對使用傳統 PID 的集成進程 (真空低溫烹飪) 的設定值更改的響應:
須要注意的兩大事項是:
在這裏,咱們能夠看到爲何會發生超調,並且老是會發生。當設定值第一次更改時,誤差將致使積分項的增加。爲了使進程在新的設定值保持穩定,輸出將須要返回到平衡點。要作到這一點,惟一的辦法就是積分項收縮。發生這種狀況的惟一方法是負偏差,只有在超過設定值時纔會發生。
4、PonM改變了遊戲規則
下面是使用基於測量的比例 (和相同的調諧參數) 控制的相同的真空低溫烹飪:
在這裏,您應該注意到:
關鍵是P項不會返回到0。這意味着I項沒必要單獨返回到平衡點。P和I一塊兒能夠將輸出返回到平衡點,而無需收縮I項。由於它不須要收縮,因此不存在超調。
5、如何在新的 PID 庫中使用它
若是您已準備好嘗試 "測量的比例",而且安裝了最新版本的PID庫,則設置它是至關容易的。使用 PonM 的主要方法是在重載構造函數中指定它:
若是要在運行時在 PonM 和 PonE 之間切換,則 "設置" 函數也會重載:
您只須要在須要切換時調用重載方法。不然,您可使用常規的設置調整功能,它將記住您的選擇。
歡迎關注: