粘貼過來的代碼都亂了,貼個原文鏈接吧: https://blog.csdn.net/D_SEngineer?spm=1011.2124.3001.5113 不定時發送福利,歡迎小伙伴們交流學習。
上一節說的PID公式屬于位置式PID,位置式PID控制的輸出與整個過去的狀態有關,用到了誤差的累加值,而增量式PID的輸出只與當前拍和前兩拍的誤差有關。就溫控系統來說,位置式PID輸出的結果就是PWM占空比最終值,如果用增量式就是PWM占空比相比上次輸出增加(減少)的值。 比如用位置式控制,計算結果是100,那么占空比就是100%,如果用增量式控制,計算結果是20,那么占空比就是(上次輸出值+20)%。 增量式PID公式推導假設上一次輸出是OUTk-1,這次輸出的是OUTk,兩個相減: △OUT=OUTk-OUTk-1將位置式PID代入得:
 注意紅色字體,紅色字體應該計算到當前值(k)的前一個值。
化簡得:

式中:
Ek是當前誤差
Ek-1是上次的誤差
Ek-2是上上次的誤差 這就是增量式PID公式,現在應該知道是怎么來的吧。 兩者的區別知道了計算公式之后,兩者的區別就顯而易見了,粘貼一個百度: - 位置式PID控制的輸出與整個過去的狀態有關,用到了誤差的累加值;而增量式PID的輸出只與當前拍和前兩拍的誤差有關,因此位置式PID控制的累積誤差相對更大;
- 增量式PID控制輸出的是控制量增量,并無積分作用,因此該方法適用于執行機構帶積分部件的對象,如步進電機等,而位置式PID適用于執行機構不帶積分部件的對象,如電液伺服閥。
- 由于增量式PID輸出的是控制量增量,如果計算機出現故障,誤動作影響較小,而執行機構本身有記憶功能,可仍保持原位,不會嚴重影響系統的工作,而位置式的輸出直接對應對象的輸出,因此對系統影響較大。
總結至此,PID這塊骨頭理論上已經啃完了,就差實戰了。后面我準備用電機來進行實戰,用位置式和增量式去控制轉速,實現PID控制。 往前看看,我寫第一個帖子是6月30號,當時還不會配置PWM,還在跟著視頻學STM32。不到一個月的時間,PID理論已經懂了,不能說完全掌握吧,最起碼有點頭緒了。其實我也沒有想到能學到這一步,因為大學4年都沒把PID搞懂(其實是沒有去認真搞)。十分感謝我在網上找到的文獻和視頻的作者,以后我也會在網上多發布一些做項目的經驗,不僅可以記錄自己 ,還能幫助別人。 堅持就是勝利,加油吧!
|