




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、PID限制算法介紹與實現(xiàn)、PID的數(shù)學模型在工業(yè)應用中PID及其衍生算法是應用最廣泛的算法之一,是當之無愧的萬能算法,如果能夠熟練掌握PID算法的設計與實現(xiàn)過程,對于一般的研發(fā)人員來講,應該是足夠應對一般研發(fā)問題了,而難能可貴的是,在很多限制算法當中,PID限制算法又是最簡單,最能表達反響思想的限制算法,可謂經(jīng)典中的經(jīng)典.經(jīng)典的未必是復雜的,經(jīng)典的東西常常是簡單的,而且是最簡單的.PID算法的一般形式:PID算法通過誤差信號限制被控量,而限制器本身就是比例、積分、微分三個環(huán)節(jié)的加和這里我們規(guī)定在t時刻:1 .輸入量為?冽2 .輸出量為?的3 .偏差量為??個?=?廠?)=?不??:./?(?+
2、?%?二、PID算法的數(shù)字離散化假設采樣間隔為T,那么在第K個T時刻:偏差??=?-?積分環(huán)節(jié)用加和的形式表示,即??-?眼3+微分環(huán)節(jié)用斜率的形式表示,即?卒???/T;PID算法離散化后的式子:?=??囹?+-.二????+=?????解??那么?而可表小成為:?=?3?+?有??掰+?次?隨???其中式中:比例參數(shù)??:限制器的輸出與輸入偏差值成比例關系.系統(tǒng)一旦出現(xiàn)偏差,比例調(diào)節(jié)立即產(chǎn)生調(diào)節(jié)作用以減少偏差.特點:過程簡單快速、比例作用大,可以加快調(diào)節(jié),減小誤差;但是使系統(tǒng)穩(wěn)定性下降,造成不穩(wěn)定,有余差.積分參數(shù)???積分環(huán)節(jié)主要是用來消除靜差,所謂靜差,就是系統(tǒng)穩(wěn)定后輸出值和設定值之間
3、的差值,積分環(huán)節(jié)實際上就是偏差累計的過程,把累計的誤差加到原有系統(tǒng)上以抵消系統(tǒng)造成的靜差.微分參數(shù)??小微分信號那么反響了偏差信號的變化規(guī)律,或者說是變化趨勢,根據(jù)偏差信號的變化趨勢來進行超前調(diào)節(jié),從而增加了系統(tǒng)的快速性.PID的根本離散表示形式如上.目前的這種表述形式屬于位置型PID,另外一種表述方式為增量式PID,由上述表達式可以輕易得到:?(?-1)=?鞏?)+?(?+?怒??)-?(?)那么:?(?)=?(?(?)?-?(?-?1)+?(?)?+?(?(?)?-2?(?-1?)+?(?-?2)上式就是離散化PID的增量式表示方式,由公式可以看出,增量式的表達結(jié)果和最近三次的偏差有關,這
4、樣就大大提升了系統(tǒng)的穩(wěn)定性.需要注意的是最終的輸出結(jié)果應該為:輸出量=?(?)+增量調(diào)節(jié)值三、PID的C語言實現(xiàn)1 .位置式PID的C語言實現(xiàn)上邊已經(jīng)抽象出了位置性PID和增量型PID的數(shù)學表達式,這里重點講解C語言代碼的實現(xiàn)過程.第一步:定義PID變量結(jié)構(gòu)體,代碼如下:structt_pidfloatSetSpeed;floatActualSpeed;floaterr;/定義設定值/定義實際值/定義偏差值/定義上一個偏差值/定義比例、積分、微分系數(shù)/定義電壓值(限制執(zhí)行器的變量)/定義積分值floaterr_last;floatKp,Ki,Kd;floatvoltage;floatinteg
5、ral;pid;第二部:初始化變量,代碼如下:voidPID_init()pid.SetSpeed=0.0;pid.ActualSpeed=0.0;pid.err=0.0;pid.err_last=0.0;pid.voltage=0.0;egral=0.0;pid.Kp=0.2;pid.Ki=0.015;pid.Kd=0.2;統(tǒng)一初始化變量,尤其是Kp,Ki,Kd三個參數(shù),調(diào)試過程當中,對于要求的限制效果,可以通過調(diào)節(jié)這三個量直接進行調(diào)節(jié).第三步:編寫限制算法,代碼如下:floatPID_realize(floatspeed)pid.SetSpeed=speed;pid.err=
6、pid.SetSpeed-pid.ActualSpeed;egral+=pid.err;pid.voltage=pid.Kp*pid.err+pid.Ki*egral+pid.Kd*(pid.err-pid.err_last);pid.err_last=pid.err;pid.ActualSpeed=pid.voltage*1.0;returnpid.ActualSpeed;注意:這里用了最根本的算法實現(xiàn)形式,沒有考慮死區(qū)問題,沒有設定上下限,只是對公式的一種直接的實現(xiàn),后面的介紹當中還會逐漸的對此改良.到此為止,PID的根本實現(xiàn)局部就初步完成了.下面是測試代碼:i
7、ntmain()PID_init();intcount=0;while(count1000)floatspeed=PID_realize(200.0);printf(%fn,speed);count+;return0;2 .增量型PID的C語言實現(xiàn)上一節(jié)中介紹了最簡單的位置型PID的實現(xiàn)手段,這一節(jié)講解增量式PID的實現(xiàn)方法.#include#includestructt_pid/定義設定值/定義實際值/定義偏差值/定義上一個偏差值/定義最上前的偏差值/定義比例、積分、微分系數(shù)floatSetSpeed;floatActualSpeed;floaterr;floaterr_next;float
8、err_last;floatKp,Ki,Kd;pid;voidPID_init()pid.SetSpeed=0.0;pid.ActualSpeed=0.0;pid.err=0.0;pid.err_last=0.0;pid.err_next=0.0;pid.Kp=0.2;pid.Ki=0.015;pid.Kd=0.2;floatPID_realize(floatspeed)pid.SetSpeed=speed;pid.err=pid.SetSpeed-pid.ActualSpeed;floatincrementSpeed=pid.Kp*(pid.err-pid.err_next)+pid.Ki*
9、pid.err+pid.Kd*(pid.err-2*pid.err_next+pid.err_last);pid.ActualSpeed+=incrementSpeed;pid.err_last=pid.err_next;pid.err_next=pid.err;returnpid.ActualSpeed;intmain()PID_init();intcount=0;while(count200)index=0;elseindex=1;egral+=pid.err;pid.voltage=pid.Kp*pid.err+index*pid.Ki*egral+pid.K
10、d*(pid.err-pid.err_last);/算法具體實現(xiàn)過程4 .抗積分飽和的PID限制算法C語言實現(xiàn)所謂的積分飽和現(xiàn)象是指如果系統(tǒng)存在一個方向的偏差,PID限制器的輸出由于積分作用的不斷累加而加大,從而導致執(zhí)行機構(gòu)到達極限位置,假設限制器輸出U(k)繼續(xù)增大,執(zhí)行器開度不可能再增大,此時計算機輸出限制量超出了正常運行范圍而進入飽和區(qū).一旦系統(tǒng)出現(xiàn)反向偏差,u(k)逐漸從飽和區(qū)退出.進入飽和區(qū)越深那么退出飽和區(qū)時間越長.在這段時間里,執(zhí)行機構(gòu)仍然停留在極限位置而不隨偏差反向而立即做出相應的改變,這時系統(tǒng)就像失控一樣,造成限制性能惡化,這種現(xiàn)象稱為積分飽和現(xiàn)象或積分失控現(xiàn)象.預防積分飽和
11、的方法之一就是抗積分飽和法,該方法的思路是在計算u(k)時,首先判斷上一時刻的限制量u(k-1)是否已經(jīng)超出了極限范圍:如果u(k-1)umax,那么只累加負偏差;如果u(k-1)pid.umax)/灰色底色表示抗積分飽和的實現(xiàn)if(abs(pid.err)200)/藍色標注為積分別離過程index=0;elseindex=1;if(pid.err0)egral+=pid.err;elseif(pid.ActualSpeed200)/積分別離過程index=0;elseindex=1;if(pid.err0)egral+=pid.err;elseif(abs(pid
12、.err)200)/積分別離過程index=0;elseindex=1;egral+=pid.err;pid.voltage=pid.Kp*pid.err+index*pid.Ki*egral+pid.Kd*(pid.err-pid.err_last);pid.err_last=pid.err;pid.ActualSpeed=pid.voltage*1.0;returnpid.ActualSpeed;5 .梯形積分的PID限制算法先看一下梯形算法的積分環(huán)節(jié)公式ee(t)dt=E0.一e(i)+e(i-1)t作為PID限制律的積分項,其作用是消除余差,為了盡量減小余差
13、,應提升積分項運算精度,為此可以將矩形積分改為梯形積分,具體實現(xiàn)的語句為:pid.voltage=pid.Kp*pid.err+index*pid.Ki*egral/2+pid.Kd*(pid.err-pid.err_last);/梯形積分6 .變積分的PID限制算法變積分PID可以看成是積分別離的PID算法的更一般的形式.在普通的PID限制算法中,由于積分系數(shù)ki是常數(shù),所以在整個限制過程中,積分增量是不變的.但是,系統(tǒng)對于積分項的要求是,系統(tǒng)偏差大時,積分作用應該減弱甚至是全無,而在偏差小時,那么應該增強.積分系數(shù)取大了會產(chǎn)生超調(diào),甚至積分飽和,取小了又不能短時間內(nèi)消除靜差.
14、因此,根據(jù)系統(tǒng)的偏差大小改變積分速度是有必要的.變積分PID的根本思想是設法改變積分項的累加速度,使其與偏差大小相對應:偏差越大,積分越慢;偏差越小,積分越快.這里給積分系數(shù)前加上一個比例值index:當abs(err)180時,index=1;當180abs(err)200時,index=0;最終的比例環(huán)節(jié)的比例系數(shù)值為ki*index;具體PID實現(xiàn)代碼如下:pid.Kp=0.4;pid.Ki=0.2;/增加了積分系數(shù)pid.Kd=0.2;floatPID_realize(floatspeed)floatindex;pid.SetSpeed=speed;pid.err=pid.SetSpe
15、ed-pid.ActualSpeed;if(abs(pid.err)200)/變積分過程index=0.0;elseif(abs(pid.err)MmaX寸,說明誤差的絕對值已經(jīng)很大了,不管誤差變化趨勢如何,都應該考慮限制器的輸入應按最大(或最小)輸出,以到達迅速調(diào)整誤差的效果,使誤差絕對值以最大的速度減小.此時,相當于實施開環(huán)限制.當e*ec0時,說明誤差在朝向誤差絕對值增大的方向變化,此時,如果abs(e)Mmid,說明誤差也較大,可考慮由限制器實施較強的限制作用,以到達扭轉(zhuǎn)誤差絕對值向減小的方向變化,并迅速減小誤差的絕對值.此時如果abs(e)Mmid,說明盡管誤差是向絕對值增大的方向變
16、化,但是誤差絕對值本身并不是很大,可以考慮限制器實施一般的限制作用,只需要扭轉(zhuǎn)誤差的變化趨勢,使其向誤差絕對值減小的方向變化即可.當e*err0或者e=0時,說明誤差的絕對值向減小的方向變化,或者已經(jīng)到達平衡狀態(tài),此時保持限制器輸出不變即可.當e*err0且e*err(k-1)0時,說明誤差處于極限狀態(tài).如果此時誤差的絕對值較大,大于Mmiq可以考慮實施較強限制作用.如果此時誤差絕對值較小,可以考慮實施較弱限制作用.abs(e)Mmin時,說明誤差絕對值很小,此時參加積分,減小靜態(tài)誤差.上面的邏輯判斷過程,實際上就是對于限制系統(tǒng)的一個專家判斷過程.實際上模糊算法屬于智能算法,智能算法也可以叫非
17、模型算法,智能算法包含了專家系統(tǒng)、模糊算法、遺傳算法、神經(jīng)網(wǎng)絡算法等.其實這其中的任何一種算法都可以跟PID去做結(jié)合,而選擇的關鍵在于,處理的實時性能不能得到滿足.當我們處理器的速度足夠快速時,我們可以選擇更為復雜的、精度更加高的算法.但是,限制器的處理速度限制了我們算法的選擇.當然,本錢是限制處理器速度最根本的原因.模糊PID適應一般的限制系統(tǒng)是沒有問題.模糊算法其實并不模糊.模糊算法其實也是逐次求精的過程.這里舉個例子說明.我們設計一個倒立擺系統(tǒng),假設擺針偏差5.,我們說它的偏差比擬“??;擺針偏差在5.和10.之間,我們說它的偏差處于“中的狀態(tài);當擺針偏差10.的時候,我們說它的偏差有點兒
18、“大了.對于“小、“中、“大這樣的詞匯來講,他們是精確的表述,可問題是如果擺針偏差是3呢,那么這是一種什么樣的狀態(tài)呢.我們可以用“很小來表述它.如果是7呢,可以說它是“中偏“小.那么如果到了80呢,它的偏差可以說“非常大.而我們調(diào)節(jié)的過程實際上就是讓系統(tǒng)的偏差由非?!按笾饾u向非?!靶∵^度的過程.當然,我們系統(tǒng)這個調(diào)節(jié)過程是快速穩(wěn)定的.通過上面的說明,可以熟悉到,其實對于每一種狀態(tài)都可以劃分到大、中、小三個狀態(tài)當中去,只不過他們隸屬的程度不太一樣,比方6隸屬于小的程度可能是0.3,隸屬于中的程度是0.7,隸屬于大的程度是0.這里實際上是有一個問題的,就是這個隸屬的程度怎么確定?這就要求我們?nèi)ピO計
19、一個隸屬函數(shù).詳細內(nèi)容可以查閱相關的資料,這里沒有方法那么詳細的說明了.那么,知道了隸屬度的問題,就可以根據(jù)目前隸屬的程度來限制電機以多大的速度和方向轉(zhuǎn)動了,當然,最終的限制量肯定要落實在限制電壓上.這點可以很容易的想想,我們限制的目的就是讓倒立擺從隸屬“大的程度為1的狀態(tài),調(diào)節(jié)到隸屬“小的程度為1的狀態(tài).當隸屬大多一些的時候,我們就加快調(diào)節(jié)的速度,當隸屬小多一些的時候,我們就減慢調(diào)節(jié)的速度,進行微調(diào).可問題是,大、中、小的狀態(tài)是漢字,怎么用數(shù)字表示,進而用程序代碼表示呢?其實我們可以給大、中、小三個狀態(tài)設定三個數(shù)字來表示,比方大表示用3表示,中用2表示,小用1表示.那么我們完全可以用1*0.
20、3+2*0.7+3*0.0=1.7來表示它,當然這個公式也不一定是這樣的,這個公式的設計是系統(tǒng)模糊化和精確化的一個過程,讀者也可參見相關文獻理解.但就1.7這個數(shù)字而言,可以說明,目前6的角度偏差處于小和中之間,但是更偏向于中.我們就可以根據(jù)這個數(shù)字來調(diào)節(jié)電機的轉(zhuǎn)動速度和時間了.當然,這個數(shù)字與電機轉(zhuǎn)速的對應關系,也需要根據(jù)實際情況進行設計和調(diào)節(jié).前面一個例子已經(jīng)根本上說明了模糊算法的根本原理了.可是實際上,一個系統(tǒng)的限制因素常常不是一個.上面的例子中,只有偏差角度成為了系統(tǒng)調(diào)節(jié)的參考因素.而實際系統(tǒng)中,比方PID系統(tǒng),我們需要調(diào)節(jié)的是比例、積分、微分三個環(huán)節(jié),那么這三個環(huán)節(jié)的作用就需要我們認
21、清,也就是說,我們需要根據(jù)超調(diào)量、調(diào)節(jié)時間、震蕩情況等信息來考慮對這三個環(huán)節(jié)調(diào)節(jié)的比重,輸入量和輸出量都不是單一的,可是其中必然有某種內(nèi)在的邏輯聯(lián)系.所以這種邏輯聯(lián)系就成為我們設計工作的重點了.四、PID算法參數(shù)整定方法1 .臨界比例度法(1)將調(diào)節(jié)器的積分時間工置于最大(下二8),微分時間置零(Td=0),比例度6適當,平衡操作一段時間,把系統(tǒng)投入自動運行.(2)將比例度6逐漸減小,得到等幅振蕩過程,記下臨界比例度今和臨界振蕩周期Tk值.(3)根據(jù)今和Tk值,采用經(jīng)驗公式,計算出調(diào)節(jié)器各個參數(shù),即6、F、Td的值.(4)按“先P后I最后D的操作程序?qū)⒄{(diào)節(jié)器整定參數(shù)調(diào)到計算值上.假設還不夠滿意
22、,可再作進一步調(diào)整.參數(shù)6(%)Ti(min)Td(min)P2aP/I2.2&Tk/1.2P/I/D1.6Sk0.5a0.25Ti臨界振蕩整定計算公式2 .衰減曲線法在純比例作用下,由大到小調(diào)整比例度以得到具有衰減比(4:1)的過渡過程,記下此時的比例度與及振蕩周期Ts,根據(jù)經(jīng)驗公式,求出相應的積分時間T和微分時間Td.參數(shù)6(%)Ti(min)Td(min)PIP/I1.240.5TsP/I/D0.8恿0.3Ts0.1Ts衰減曲線法限制器參數(shù)計算表Note:(1).反響較快的限制系統(tǒng),要認定4:1衰減曲線和讀出Ts比擬困難,此時,可用記錄往返擺動兩次就到達穩(wěn)定作為4:1衰減過程.(2).在生產(chǎn)過程中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水產(chǎn)養(yǎng)殖基地土地使用權合同
- 公司技術服務采購合同
- 豪華酒店廚師服務合同
- 電子產(chǎn)品購銷合同標準版
- 房地產(chǎn)投資專項法律服務合同
- (完整版)農(nóng)村土地租賃合同書
- 光學玻璃的紫外光固化涂層技術考核試卷
- 醫(yī)療用品行業(yè)服務平臺拓展考核試卷
- 搪瓷原材料市場動態(tài)與價格趨勢考核試卷
- 數(shù)字出版物的長期保存與數(shù)字遺產(chǎn)考核試卷
- 圖書出版項目合作協(xié)議
- 部編版七年級歷史下冊全冊導學案
- 酒店住宿投標方案(技術標)
- 2024風力發(fā)電葉片維保作業(yè)技術規(guī)范
- 中建分供方資源管理辦法
- (人教PEP2024版)英語一年級上冊Unit 3 教學課件(新教材)
- 小小演說家演講技巧教學設計
- 住院患者跌倒、墜床、壓力性損傷的風險評估及管理
- 2024移動電源車運維管理技術規(guī)范柴油機類
- 2024年中國端側(cè)大模型行業(yè)研究:算力優(yōu)化與效率革命+如何重塑行業(yè)生態(tài)-22正式版
- 學校臨聘人員規(guī)范管理自查報告
評論
0/150
提交評論