1.PID是一種閉環(huán)控制系統(tǒng),根據(jù)控制量的實際值與設(shè)定的偏差來計算下一步的控制量;P使輸入與輸出成一種比例關(guān)系,I則是對控制過程偏差的積分,使系統(tǒng)朝偏差減小的方向行進,最終達到消滅靜差的目的,D則是用在有滯后和較大慣性的系統(tǒng)控制中,而溫度控制就是這樣的,微分項可以“預測”誤差變化的趨勢,所以減小超調(diào)、消除震蕩就靠它了。2.算法選用位置式,數(shù)據(jù)類型用unsigned int 很多資料上都推薦增量式,但這樣一來必須選用float;用unsigned int的話,如果溫差的差變化不大,大多數(shù)情況積分項會被省咯,用定點數(shù),則就得用double。 而位置式則無此問題,個人理解,增量式積分在最終輸出項了,即先乘積分系數(shù),后積分,位置式則相反,所以選用位置式用定點數(shù)損失不大。 51單片機不適合用float、double;資源消耗太大了。3.要想使波動范圍小,那么數(shù)據(jù)輸入精度非常重要 如果輸入的溫度值精度為1度,想達到 -1度的控制精度,是不可能的,最少也得0.1度左右,有些資料推薦在計算前給溫度值*10,輸出時再/10,這樣做基本沒什么作用,僅僅是方便了計算;基于溫差變化而計算,若遲遲得不到溫差變化,又怎么能計算呢。4.溫度控制的范圍也很重要 也就是在用unsigned int、用定點數(shù)時,若控制的溫度范圍很大時,計算時會產(chǎn)生溢出,若選好范圍即可解決,如控制的范圍為0-300度,其實根據(jù)位置式公式計算,溫差在40度左右系統(tǒng)才會減小輸出功率,那么我們在溫差在40度之內(nèi)后才開始用PID控制,之前全功率加熱,這樣減小了數(shù)據(jù)量,也減輕了無效的計算,當然不能忘了溫差為負數(shù)時,也要限制溫差計算范圍,范圍之外的關(guān)閉輸出。5.參數(shù)的整定很累人 一定要按先比例后積分,再微分,同時要作好記錄、分析,不要想著為節(jié)省三個系數(shù)都先給個經(jīng)驗值,再同時調(diào),結(jié)果很可能欲速則不達,本人已經(jīng)有過教訓了;最后當你對系統(tǒng)的加熱過程越了解,也就越接近完成了。PID的改良算法有很多,必要時要采用。 |