上一次寫了模拟量的使用,模拟量傳感器想要用的好,還需要有PID算法的加持,有的朋友會疑問,為啥還要PID算法呢,比如想讓一個水箱一直保持恒定的水量,那麼測距傳感器檢測到水量低了那麼水泵就加水,水量夠了就不加水就行了呀!
那麼問題來了,你怎麼能把水加到正好呢?怎麼能讓水保持恒定值不變呢?水泵啟動一下,有可能水就加多了,這樣水泵會頻繁地啟動停止,當水在恒定值上下波動,那麼水泵就會因為啟動停止太頻繁發生震顫,這樣水泵加的水量是不精确的!再比如說需要保持恒定壓力的管道,傳感器檢測到壓力值不夠,就增加壓力,增加多少合适呢,這個是需要一個确定量的,不是說你增加一下壓力就可以,PID算法就是一個計算精度的一個公式,可以讓水量或者壓力或其它值最大可能保持恒定,精度達到最高!
這篇文章就詳細講解PID原理和PID程序功能塊的寫法,需要用到時候可以直接調用PID功能塊實現PID控制!
PID原理圖PID原理,下面這個原理圖當成3個部分看,很簡單,第一部分就是計算設定值和反饋值的誤差;第二部分把這個誤差參與PID計算,輸出給執行機構(例如水泵);第三部分傳感器反饋值;核心就是第二部分,PID計算!
教科書裡的原理圖
我理解分成三部分
PID計算PID計算拆分開來就是P(比例控制),I(積分控制),D(微分控制);下面每個原理都講解下!
P(比例控制)怎麼理解呢,如果單獨隻用P(比例)控制,I(積分控制)和D(微分控制)關閉,那麼拿水箱舉例,水箱裡我想恒定水量為1000ml,傳感器檢測到水量為999ml,那麼設定值和反饋值的誤差為1ml,比例控制就是在這1ml前面加個系數,這個系數自己調節,因為正常思路是,少1ml水,我就讓水泵加1ml水就行,但是實際是,我讓水泵加1ml,實際可能加了2ml(無法精确的讓水泵出來1ml水),這個時候我就得調整比例系數,讓比例系數為0.5就行!
PID标準公式裡的Kp就是比例系數,ev(t)就是設定值減反饋值的偏差值,如下圖,如果隻有比例控制部分,那麼公式很簡單,就是u(t)=Kp*ev(t);
PID公式
I(積分控制)怎麼理解呢?學過微積分的都知道積分是啥意思,沒學過的或忘了的就顧名思義吧,(積)就是積木,累積的意思,拿水箱舉例,那就是水泵加很多次水的一個累積總和!
假如水箱裡我們設定恒定值是1000ml,水泵每次隻能調節到進水9.9ml;
如果水箱沒水,那麼水泵需要運行100次,一共進水990ml,誤差10ml;
理論上水泵如果每次能進水10ml,那麼就剛剛好到設定值,實際每次隻進水9.9ml,這個0.1ml,靠調整水泵很難達到這個精度,那麼我們就取100次進水的總和,再看誤差;
100次進水990ml,這個總誤差10ml就好補償了,通過調整I(積分控制)計算部分的系數TI就可以,把TI設為0.99即可!
如下圖的PID公式裡的積分控制部分!
PID公式
D(微分控制)怎麼理解呢?也就是微積分裡面的微分部分,顧名思義就是把水泵加水量細分到每一次;
比如水泵加水,每次想加10ml,但是如果水泵功率開到最大,1秒就加了10ml,水泵功率開小點需要10秒;
實際應用中,想1秒加10ml的誤差肯定比10秒加10ml的要大,就是說水泵慢慢往水箱加水,實際應用中精度會更高,加水過程更穩定。
通過下圖PID公式裡的微分控制計算部分的系數TD可以調節!
PID公式
總結一下:P調節的是誤差值和水泵每次進水量成比例關系的調節,就是說水泵每次加水量是一定的,需要加多少次能接近誤差值,這個在PID調節中是第一個需要調的參數!
I調節的是P調節後還存在誤差的情況下的再次調節,靠調節累積誤差增加精度!
D調節的是穩定性,通過控制加水速度,減少滞後量或慣性帶來的誤差!
PID控制的原理就如上面所述,下面講一下PLC程序裡PID标準功能塊是怎麼寫的,用的ST語言,可以在支持ST的各種型号PLC裡使用,有興趣的可以詳細看看,對有精度要求的應用還是很有幫助的,對于之前不是很了解PID控制的朋友,我感覺對于模拟量使用,很多人隻無意間用到了P(比例控制)計算部分!
PID計算公式的程序實現這個程序是上面的PID計算公式的程序實現,有些參數的命名或者公式的格式有變化,但是原理是一樣的,有興趣的仔細研究下,無興趣的直接使用就行!
調用功能塊
調用功能塊
PID公式的變形
變成程序可以實現的形式:同樣是包含比例系數,積分控制,微分控制三部分,沒有初始值設定;
程序裡使用的PID公式
輸入參數定義:
fSetpointValue:設定值;fActualValue:實際反饋值;bReset: TRUE重置内部變量;fCtrlCycleTime:采樣周期[s];fKp:比例系數;fTn:積分作用時間[s];fTv:微分作用時間[s];
fTd:阻尼時間[s];
功能塊展現:
聲明部分
程序邏輯部分
以上說的是PID應用的基本功能,還有基于這個原理的其它控制方法,有單獨使用的,有PI結合使用的,PD結合使用的,有帶死區的PID,固定采樣頻率的PID等等,看實際需要寫對應的程序!
PID參數調試經驗調節PID參數調試靠的是經驗調節,就是不停的測試,找到一個需要的參數,有口訣如下:
常用口訣:
參數整定找最佳,從小到大順序查;
先是比例後積分,最後再把微分加;
曲線振蕩很頻繁,比例(度盤)要放大;
曲線漂浮繞大灣,比例度盤往小扳;
曲線偏離回複慢,積分時間往下降;
曲線波動周期長,積分時間再加長;
以上就是PID控制的大緻原理,想要深入應用還是需要各位朋友系統的去學習PID算法,理解這個原理希望對大家的深入學習有所幫助!
感覺有用的朋友關注我,我會給大家持續輸出實用工控的經驗!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!