PID控制原理講解_第1頁
PID控制原理講解_第2頁
PID控制原理講解_第3頁
PID控制原理講解_第4頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、PID 控制原理講解經常有人問有關PIDPID的用法,看一些有關單片及應用的書上都有關于PIDPID的應用原理,但是面對具體的問題就不知道如何應用了,主要的問題是里面所用到的參數以及計算結果需要進行什么經常有人問有關 PID 的用法,看一些有關單片及應用的書上都有關于 PID 的應用原理,但是面對具體的問題就不知道如何應用了,主要的問題是里面所用到的參數以及計算結果需要進行什么處理,通過什么樣的換算才能具體的應用于實際,另外在計算方法上也存在著數值計算的算法問題,今天我在這里例舉溫度控中的 PID 部分,希望能夠把 PID 的具體應用說明白。一般書上提供的計算公式中的幾個名詞:1 .直接計算法

2、和增量算法,這里的所謂增量算法就是相對于標準算法的相鄰兩次運算之差,得到的結果是增量,也就是說,在上一次的控制量的基礎上需要增加(負值意味著減少)控制量,例如對于可控硅電機調速系統,就是可控硅的觸發相位還需要提前(或遲后)的量,對于溫度控制就是需要增加(或減少)加熱比例,根據具體的應用適當選擇采用哪一種算法,但基本的控制方法、原理是完全一樣的,直接計算得到的是當前需要的控制量,相鄰兩次控制量的差就是增量;2 .基本偏差 e(t),表示當前測量值與設定目標間的差,設定目標是被減數,結果可以是正或負,正數表示還沒有達到,負數表示已經超過了設定值。這是面向比例項用的變動數據。3 .累計偏差 E(e)

3、=e(t)+e(t-1)+e(t-2)+e(1),這是我們每一次測量到的偏差值的總和,這是代數和,考慮到他的正負符號的運算的,這是面向積分項用的一個變動數據。4 .基本偏差的相對偏差 e(t)-e(t-1),用本次的基本偏差減去上一次的基本偏差,用于考察當前控制的對象的趨勢,作為快速反應的重要依據,這是面向微分項的一個變動數據。5 .三個基本參數:Kp,Ki,Kd.這是做好一個控制器的關鍵常數,分別稱為比例常數、積分常數和微分常數,不同的控制對象他們需要選擇不同的數值,還需要經過現場調試才能獲得較好的效果。6 .標準的直接計算法公式:Pout(t)=Kp*e(t)+Ki*藝 e(t)+Kd*(

4、e(t)-e(t-1);上一次的計算值:Pout(t-1)=Kp*e(t-1)+Ki*2e(t-1)+Kd*(e(t-1)-e(t-2);兩式相減得到增量法計算公式:Pdlt=Kp*(e(t)-e(t-1)+Ki*藝 e(t)+Kd*(e(t)-2*e(t-1)+e(t-2);*這里我們對藝項的表示應該是對 e(i)從 1 到 t 全部總和,但為了打字的簡便就記作藝 e(t).三個基本參數 Kp,Ki,Kd.在實際控制中的作用:比例調節作用:是按比例反應系統的偏差,系統一旦出現了偏差,比例調節立即產生調節作用用以減少偏差。比例作用大,可以加快調節,減少誤差,但是過大的比例,使系統的穩定性下降,

5、甚至造成系統的不穩定。積分調節作用:是使系統消除穩態誤差,提高無差度。因為有誤差,積分調節就進行,甚至無差,積分調節停止,積分調節輸出一常值。積分作用的強弱取決于積分時間常數 Ti,Ti 越小,積分作用就越強。反之 Ti 大則積分作用弱,加入積分調節可使系統穩定性下降,動態響應變慢。積分作用常與另兩種調節規律結合,組成 PI 調節器或 PID 調節器。微分調節作用:微分作用反映系統偏差信號的變化率,具有預見性,能遇見偏差變化的趨勢,因此能產生超前的控制作用,在偏差還沒有形成之前,已被微分調節作用消除。因此,可以改善系統的動態性能。在微分時間選擇合適情況下。可以減少超調,減少調節時間。微分作用對

6、噪聲干擾有放大作用,因此過強的加微分調節,對系統抗干擾不利。此外,微分反應是變化率,而當輸入沒有變化時,微分作用輸出為零。微分作用不能單獨使用,需要與另外兩種調節規律相結合,組成 PD 或 PID 控制器。具體應用中的數值量化處理:上面只是控制算法的數學方法,似乎有點抽象,在具體的控制項目中怎樣對應呢?也就是具體的量化問題。下面舉一個在溫度控制中的處理方法。對于加溫的溫度控制可以采用調節供電電壓或在一定的時間循環周期內的供電時間比例來調節加溫控制溫度,一般以調節加溫時間比例比較簡單,也是控制上比較常用的方法。調壓法控制的原理是通過可控硅的處罰相位角達到對電壓的調節,這個電壓是指有效電壓,直觀上

7、就是對一個正弦波形的前邊切掉一塊,用不同的切割位置以保留剩余的面積。為了敘述方便,我們還是采用控制時間比例的辦法:我們設定一個標準的加溫周期,例如 2 分鐘,我們就在這個兩分鐘周期內對輸出進行控制,也就是說在這個 2 分鐘內加溫多少時間,全速加溫就是連續整個周期(2分鐘)都加溫,當然停止加溫就是完全不輸出,根據我們的計算可以讓加溫時間在 0-2 分鐘內變化,比如計算所得我們在這一個周期內應該加溫 1 分 30 秒,經過兩分鐘以后再測量被加溫物體的溫度,通過計算我們應該加溫 1 分 28 秒,等等等等,這里除了加溫以外的時間就是不加溫,等等下一個周期到來,再進行實際測量計算下一周期我們的輸出量,

8、周而復始,不斷地修正我們的輸出量,以達到對溫度有效控制。為了對應我們的程序處理上的方便,我們在程序內部一般并不是用時分秒來計算的,通常我們會使用系統的一個定時器用于系統全部時鐘,例如顯示刷新、鍵盤掃描等,相對于計算來說,我們的控制周期比較長,所以我們可以對 2 分鐘進行細分,例如我們用每分鐘進行 100 等分,則兩分鐘就是 200 等分,用于我們的溫度控制,這樣的輸出比例的變化已經足夠了,我們可以有 200 個輸出等級了。取 200 的另一個好處是,對應于我們的 8 位單片機剛好可以在一個字節內進行運算,程序簡單運算速度快。當需要改變我們的定時周期時,有些不同的加熱對象,例如較大熱慣性的加熱對

9、象時,可能 2 分鐘周期太短了,我們可以通過修改基本定時常數的辦法來實現,而保持我們的 200 等分不變。我們對 2 分鐘進行 200 等分,算一下他的每一個基本單位的具體時間?To=60*2/200=0.6s=600ms這對于單片機來說太長了,因為如果我讓我的定時器做到這么慢的定時周期就干不了別的事了,為了顯示、鍵盤等的處理一般我們定時在 5-10ms,所以就需要另外設定一個變量 tTempl在每一個定時中斷發生時對 tTempl 計數。例如我的系統定時器的定時常數對應于 10ms,則設定tTempl 在達到 60 的時候才確認是達到 600ms 了,才作為一個基本的輸出時間單位。對應于總周

10、期的修改,我們的 200 等分可以不用修改,而只要修改我們的變量 tTempl 的判斷邊界就可以了,例如對應于 2 分鐘時是60,則在 3 分鐘為周期時邊界改為 90 就行了,定下了我們的基本控制時間分辨率以后,我們的計算就可以不用改變了。當然,根據您的具體對象也可以修改這個等分數,我這里只是作為一個舉例:例如 200 等分。溫控儀器不離開測溫器件,無論用什么測溫器件(傳感器),對于控制上來說,首先需要將測到的值換算為溫度數據,一般我們國內都采用攝氏度 C,工業上使用的測溫器件一般都是非線性的器件,經過放大、A/D 轉換所得到的電壓數據與溫度呈非線性關系,存在著微小的差異,一般采用電壓值表的辦

11、法獲得實際溫度,這個表格是以每一個溫度點上的電壓值來表述的,由于我們的單片機 rom 的大小限制,這個表格也不可能做得很細,基本上以度作為間隔,也就是說直接查表只能獲得度為單位的溫度值,而實際測量的溫度可能是介于 T 與 T+1 度之間,在 PID 控制計算上,這樣的分辨率是不夠的,所以我們還需要進一步獲得具體的溫度精確數據,一般采用將T 與 T+1 之間的電壓差和 AD 實際值(mv)進行定分比分點的辦法(更精確的是采用二次插值計算法)獲得溫度的精確數值,也就是獲得小數部分。如果能夠做到 1/10 度的溫度分辨率精度就可以基本滿足控制運算要求了,所以我們可以用定點數的辦法處理。不采用浮點數是

12、因為單片機的運算速度不適合用浮點數,定點數處理,就是將溫度的內部運算單位放大 10 倍,在用于顯示的時候再除以 10 也就是固定顯示一個小數點位置。如果想讓我們的控制做的更好,還可以再提高溫度的內部精度,例如精確到 1/100 度,這也是現在高級溫控儀采用的精度,但在通常情況下這個精度似乎有點過剩。PID 的三個基本參數 Kp,Ki,Kd,一般由試驗確定,根據我們的實際工作對象去初步確定,然后在實際運行過程中進行調節,以達到相對理想的效果,為了達到比較好的控制效果,這三個參數一般不采用整數,但同時為了減輕單片機的運算量,通常采用 2 的整倍數放大的辦法確定這些參數,在運算結果中再除以 2 的整

13、倍數,因為單片機運算中可以用移位來完成,速度比較快,常用的是 8 倍或 16 倍放大,注意這三個參數采用相同的放大比例。編程的過程中自己從頭到尾要清楚我的參數是經過放大了的,就不會忘記對運算結果還原。通過怎樣的運算來獲得 2-200 加溫比例數據呢?很簡單,為了說明這個問題,我們先假定只考慮最簡單的比例控制算法,假定我們的控制范圍是在 200 度,則設定溫度與實踐溫度的差的最大值就是 200(度),我們就用去他去輸出,這時的參數 Kp=1,當我們為了提高加熱速度,而使受控制的區域縮小,例如只控制 50 度范圍,如目標溫度設定為 230,我們控制的范圍就在180-230 范圍內,這時的差彳 t

14、不夠 200,我們就把計算得到的數字乘以 4 就得到 0-200 的數據了,假定當前實測溫度為 222,則 230-222=8 再乘以 4 算得 32,這就作為我們的輸出比例數據。當然我們這里還沒有考慮超溫的情況,計算產生了負數。這一部分將作為我們控制輸出的基本量,上面的計算是對應于 Kp=4DE,再加入微分和積分項,這時我們的 Kp 可以基本保持不變。Kp 在這里基本確立了我們的起始控制點到目標值之間的控制范圍,微分和積分項在這里只是作為附加部分,基本不影響控制范圍。當溫度突然下降一度時,我們希望補上多少比例區進行下一輪的加熱呢?這就是微分系數:早我經過這么久的控制,目標溫度還是低了一點,我

15、希望用多少的比例去彌補這個長期欠溫呢?這就是積分常數,我想你已經大概已經確定了這些數據了。一句話,比例常數決定我們參與在目標點以前真正控制的范圍,Kp本時間總周期/控制范圍。Ki,Kd 是您希望的反應對策速度,看你有沒有耐心去逐步達到穩定點,過激了會起反作用的,過于膽小怕事是達不到預期目標的。最后,在計算結果交付于輸出之前,還需要進彳 f 一些修正,例如當計算結果大于 200 時按200 輸出,計算結果小于零時按零輸出。處理上的一些常用方法為了提高測溫的準確性,往往需要進行多次測溫。然后剔除測得結果中的最大值和最小值。把剩余值的數值相加在計算平均值,這樣比較有利于抗干擾,或者由于其他原因引起的

16、測量值波動,初期的處理是很必要的。測溫工作和 PID 計算一般安排在上一個輸出周期的最后階段就提前進行的最后階段就提前進行,測溫次數一般在 7-13 次,去掉最大最下數以后保留 5-11 次用于運算,均值運算的累加部分將安排在每一次測溫以后逐步進行,不會過多占用系統時間。只有系統的時間允許,盡可能的測多幾次,所得到的結果也會相對精確點。運算將會占用很長的時間,這是相對于我們的一個基本定時周期來講的,一個系統定時周期內我們的系統還要處理很多事情,例如顯示的刷新、鍵盤的掃描、鍵盤碼的處理執行等等,如果我們的運算占用很多時間的話那么就會出現一個系統定時周期內完不成的情況。所以如果您的系統僅僅是一臺溫

17、控儀的話,就可以將運算部分放到主程序中進行,而常規的刷新掃描之類的才放在定時中斷里處理,這樣編制的主程序就非常清晰明了,這是比較理想的情況。如果溫度控制僅僅作為您的系統中的一部分小插曲,那就需要認真考慮程序的布局了,主程序有更重要的任務要處理,溫度控制運算部分就只能委托系統定時器來承擔了,時間不夠用怎么辦?假定我們的定時周期是 10ms,顯示刷新部分要用 1ms,鍵盤掃描處理要 1ms,PID 運算要 2ms(假定),留給主程序的時間可能不夠了,我們就需要對我們的 PID 運算進行任務的分割,把運算分成幾個部分進行,每一次進入運算程序只計算其中的一小部分,經過 N 次的調才完成一個完整的 PI

18、D 運算,這樣就不會影響整個系統的運作了,這里面需要細細的推敲、分割,這是面對一個較大系統的一般處理方法,對其他任務也可以采用分割的辦法進行細化,例如對顯示刷新,現在液晶屏用得比較多,環境的干擾,數據的變化都會引起花屏或反應遲鈍,而刷新需要占用很長的時間,我們也可以采用分片刷新的辦法處理,把每次刷新所占用的時間減到最短。PID 的輸出部分可以放到系統定時中斷里處理,這部分占用的時間不長,可以隨帶完成。前面我們講到將時間作 200 等分記作 Tset,這就是將一個約定時間 200 級不同的輸出時間比例,通過我們的計算得到一個介于 0-200 之間的數 Tout,然后每次在我們的 PID 基本定時

19、時間中對這個 Tout 減 1,當等分計數器 Tset 也達到零時進行下一輪控制循環,重新計算 Tout。這樣我們就完成一個控制比例 Tout/200,這個 Tout 是計算獲得的原始數據。運算中往往出現數據溢出的情況,所以一般在運算中都要求對數據強制轉換成 int 型,注意需要考慮符號,另外,對有些參數如積分項的累加數過大時會起反作用,使調節失靈,或者引起大幅震蕩,為此我們對這一項引入一個數值最大界限,當結果超出約定界限時,不再增加(或減少)。加溫的整個過程沒有必要全程 PID 控制,一般可以在設定目標值前一個溫度區域才進行 PID 控制,例如,設定目標溫度為 300度,則我們可以在 250

20、 度以前全速加溫,當達到 250 以后才開始計算 PID 并予以控制,這樣可以加快加溫速度又不影響溫度控制。在不產生過大的過沖的情況下,盡可能把起控點抬高,有利于后面控制部分的進一步細化。在進入控制之前我們的積分項紀錄數據為零。對于用調壓法控制輸出時,由于正弦波相對于延時導通的相位角輸出的電壓有效值是非線性的,而且三角函數計算也很費時,所以建議用查表法處理,同樣可以采用查表加插值獲得移向數據,其他的計算方法和用繼電器比例輸出法是一樣的。硬件上還需要做一個比較精確的過零負脈沖電路,讓脈沖發生于過零點以前,這樣我們就可以在過零以前先關閉輸出,脈沖寬度越窄越好,至少這個脈沖寬度不能大于 1ms,過零

21、脈沖的識別也需要一點小小的處理,防止假脈沖混入,防止電網干擾,這是軟件上的問題。參數的設定與調整這是 PID 最困難的部分,編程時只設定他們的大概數值,然后通過反復的調試才能找到相對比較理想的參數值。面向不同的控制對象參數都不同,所以我們無法提供參考數值,但是我們可以根據這些參數在整個 PID 過程中的作用原理,來討論我們的對策。1 1 . .加溫很迅速就達到目標值,但是溫度過沖很大:1 1 . .比例系數太大,致使在未達到設定溫度前加溫比例過高;2 2. .微分系數小,致使對對象反應不敏感;2 2. .加溫經常達不到目標值,小于目標值的時間較多:1 1 . .比例系數過小,加溫比例不夠;2

22、2. .積分系數過小,對恒偏差補償不足;3,3,基本上能夠在控制目標上,但上下偏差偏大,經常波動:1 1 . .微分系數過小,對及時變化反應不夠快,反映措施不力;2,2,積分系數過大,使微分反應被淹沒鈍化;4,4,受工作環境影響較大,在稍有變動時就會引起溫度的波動:2 2 . .微分系數過小,對及時變化反應不夠快,不能及時反映;3 3. .設定的基本定時周期過長,不能及時得到修正;選擇一個合適的時間常數很重要,要根據我們的輸出單位采用什么器件來確定,如果是采用可控硅的,則可設定時間常數的范圍就很自由,如果采用繼電器的則過于頻繁的開關會影響繼電器的使用壽命,所以就不太適合采用較短周期。一般的周期設定范圍為 1-10 分鐘較為合適。為了調試方便,起碼在調試階段您必須編制一個可以對參數進行隨時修改和記憶的接口,否則你會很辛苦,老是在現場與辦公室之間來回跑。關于自整定問題:在通用儀表行業用得比較多,因為他們的工作對象是不確定的,而不同的對象所使用的參數是千變萬化的,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論