溫度控制pid算法語言程序_第1頁
溫度控制pid算法語言程序_第2頁
溫度控制pid算法語言程序_第3頁
溫度控制pid算法語言程序_第4頁
溫度控制pid算法語言程序_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

加熱電路。用keilC語言來實現(xiàn)PID的控制。//PID算法溫控C2008-08-17structPID{unsignedintSetPoint;//DesiredunsignedintProportion;//ProportionalConstunsignedintIntegral;//積分常數(shù)IntegralConstunsignedintDerivative;//微分常數(shù)DerivativeConstunsignedintLastError;//Error[-1]unsignedintPrevError;//Error[-2]unsignedintSumError;//SumsofErrorsstructPIDspid;//PIDControlStructureunsignedintrout;//PIDResponse(Output)unsignedintrin;//PIDFeedback(Input)sbitdata1=P1^0;sbitclk=P1^1;sbitplus=P2^0;sbitsubs=P2^1;sbitstop=P2^2;sbitoutput=P3^4;sbitDQ=P3^3;unsignedcharunsignedcharhigh_time,low_time,count=0;//占空比調(diào)節(jié)參數(shù)unsignedcharset_temper=35;unsignedchartemper;unsignedchari;unsignedcharj=0;unsignedints;voiddelay(unsignedchartime){unsignedchar}voidwrite_bit(unsignedcharbitval)DQ=0*拉低DQ以開始一個寫時序*/{}delay(5*90us供DA18B20采樣*/DQ=1;/*釋放DQ總線*/}voidwrite_byte(unsignedcharval){unsignedchari;unsignedchartemp; {}//;/}unsignedcharread_bit(){unsignedchari,value_bit;DQ=0*拉低DQ,開始讀時序DQ=1*釋放總線*/}unsignedcharread_byte(){unsignedchari,value=0;{if(read_bit*讀一字節(jié)數(shù)據(jù),一個時序中讀一次,并作移位處理*/}unsignedcharreset(){unsignedcharpresence;DQ=0*拉低DQ總線開始復(fù)位*/delay(30);/*480us*/DQ=1;/*釋放總線*/delay(28*延時以完成整個時序*/}voidget_temper(){unsignedchari,j;{}while(i!=0*1為無反饋信號*/i=0xcc;/*發(fā)送設(shè)備定位命令*/i=0x44*發(fā)送開始轉(zhuǎn)換命令*/{i=0xcc;*設(shè)備定位*/s=(unsignedint)(j&0x0f);}InitializePIDvoidPIDInit(structPID{}unsignedintPIDCalc(structPID*pp,unsignedintNextPoint{unsignedintErrorpp->SetPointNextPoint;//pp->SumErrorError;//dErrorpp->LastErrorpp->PrevError;//pp->PrevError=pp->LastError;pp->LastError=Error;pp->Integral*pp pp->Derivative*dError }{unsignedchari;{{}{{rin=s;//Readrout=PIDCalc(&spid,rin);//PerformPID}if(high_time<=100)high_time=(unsignedchar)(rout/800);}}else{{}{{rin=s;//Readrout=PIDCalc(&spid,rin);//PerformPID}if(high_time<100)}}////}voidserve_T0()interrupt1using1{else{}}voidserve_sio()interrupt4using2{/*EA=0;{}else}EA=1;}{unsignedcharn,a,m;{//k=disp_num1[n];{}}}voiddisplay(){unsignedcharcodenumber[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};unsignedchardisp_num[6];unsignedintk,k1;k1=k/100;if(k1==0)}{unsignedcharunsignedcharunsignedcharphil[]={2,0xce,0x6e,0x60,0x1c,2};PIDInit(&spid);//InitializeStructurespid.Proportion=10;//SetPIDCoefficientsspid.Integral=8;spid.SetPoint=100;//SetPIDSetpoint{{}}else{{}}else{{}{}{//}}}//DS18b20#includesbit typedefunsignedchar {

}

byte{byte byte{bytebytevalue=0;for(i=8;i>0;i--){}}{ {}}char{bytec[2];intx; }PID算 ΔUn=Kp[(en-en-1)+(T/Ti)en+(Td/T)(en-2*en-1+en-式中,en、en-1、en-2分別為第n次、n-1次和n-2次的偏差值,Kp、Ti、Td分別為比例系數(shù)、積分系數(shù)和微分系數(shù),T為采樣周的符號選擇不當對象測量值就會離控制目標的設(shè)定值越來越遠,如果出現(xiàn)這樣的情P一定要取反。只有D合適,才能使超調(diào)量較小,減短調(diào)節(jié)時間。溫底控PID的算法設(shè)計及實現(xiàn)PIDPID(ProportionalIntegralDerivative)控制是控制工程中技術(shù)成熟、應(yīng)用廣泛的一種控制策略,經(jīng)過長期的工程實踐,已整的控制方法和典型的結(jié)構(gòu)。它不僅適用于數(shù)學模型已知的控制系統(tǒng)中,而且對于大多數(shù)數(shù)學模型難以確定的工業(yè)過程也可應(yīng)用,在眾制中取得了滿意的應(yīng)用效果。PID工作基理:由于來自外界的各種擾動不斷產(chǎn)生,要想達到現(xiàn)場控制對象值保持恒定的目的,控制作用就必須不斷的進行?,F(xiàn)場控制對象值(以下簡稱被控參數(shù))發(fā)生變化,現(xiàn)場檢測元件就會將這種變化后經(jīng)變送器送至PID控制器的輸入端,并與其給定值)進行比較得到偏差值(以下簡稱e值),調(diào)節(jié)器按此偏差并以我們預(yù)先設(shè)定的整定參數(shù)控制規(guī)律發(fā)出控制信號,去改變調(diào)節(jié)器的開度度增加或減少,從而使現(xiàn)場控制對象值發(fā)生改變,并趨向于給定值(SP值),以達到控制目的,如圖1所示,其實PID的實質(zhì)就是對行比例、積分、微分運算,根據(jù)運算結(jié)果控制執(zhí)行部件的過程。1PIDPID控制器的控制規(guī)律可以描述為(1)比例(P)控制能迅速反應(yīng)誤差,從而減小穩(wěn)態(tài)誤差。但是,比例控制不能消除穩(wěn)態(tài)誤差。比例放大系數(shù)的加大,會引起系統(tǒng)(I)控制的作用是:只要系統(tǒng)有誤差存在,積分控制器就不斷地積累,輸出控制量,以消除誤差。因而,只要有足夠的時間,積分控誤差,使系統(tǒng)誤差為零,從而消除穩(wěn)態(tài)誤差。積分作用太強會使系統(tǒng)超調(diào)加大,甚至使系統(tǒng)出現(xiàn)振蕩。微分(D)控制可以減小超調(diào)量系統(tǒng)的穩(wěn)定性提高,同時加快系統(tǒng)的動態(tài)響應(yīng)速度,減小調(diào)整時間,從而改善系統(tǒng)的動態(tài)性能。根據(jù)不同的被控對象的控制特性,又可PD、PID等不同的控制模型。在連續(xù)-時間控制系統(tǒng)(PID)中,PIDPIDPID控制。PID(1),所以必須將控制模型離散化1(3)(4)制量的全部大小,所以稱之為全量式或者位置式控制;如果計算機只對相鄰的兩次作計算,只考慮一次基礎(chǔ)上,計算機輸出量的大是全部輸出信息的計算,這種控制叫做增量式PID控制算法,其實質(zhì)就是求Δμ的大小,而 Δμk=μk-μk-1;所以將式4做其PIDfOutfOutPIDPID于保存PID運算所需要的P、I、D系數(shù),以及設(shè)定值,歷史誤差的累加和等信息:typedefstruct{floatSetPoint;DesiredfloatProportion;ProportionalConstfloatIntegral;//積分系數(shù)IntegralConstfloatDerivative;//微分系數(shù)DerivativeConstintLastError;//上次偏差intSumError;}PIDstPID;stPIDPIDCfloatPIDCalc(PID*pp,intNextPoint{intErrorpp->SetPoint*10NextPoint;pp->SumError+=Error;//積分,歷史偏差累加dErrorError-pp->LastError;pp->PrevError=pp->LastError;//保存pp->LastError=pp->Integral*pp->SumErrorpp->Derivative*dError}在實際運算時,由于水具有很大的熱慣性,而且PID運算中的I(積分項)具有非常明顯的延遲效應(yīng)所以不能保留,須相反D(微分項)則有很強的預(yù)見性,能夠加快反應(yīng)速度,抑制超調(diào)量,所以積分作用應(yīng)該適當加強才能達到較佳的控制效果,系統(tǒng)最方案下面C代碼所示為PD控制的實現(xiàn)過程:floatPIDCalc(PID*pp,intNextPoint{intErrorpp->SetPoint*10NextPoint;dErrorError-pp->LastError;pp->PrevErrorpp->LastError;pp->LastError=return(pp->Proportion*Errorpp->Derivative*dError}溫度控制實現(xiàn)通過溫度的 運算,產(chǎn)生結(jié)果fOut,該參數(shù)決定是否加熱,加熱時間是多長。該程序如下stPID.Proportion2;PIDstPID.Integral=0;//設(shè)置PID積分值stPID.Derivative5;PIDfOutPIDCalc&stPID,(int)(fT*10)PID加熱時間由主函數(shù)計算,由TimerB中斷控制。主程序中通過PIDCalc函數(shù)得到fOut參數(shù),如果該參數(shù)大于“0”,則開啟加BIRQ2_TMBfOut1fOut0,PIDCalc基于PID89C52單片機的溫度控作者:電子信息學院來源:現(xiàn)代電子技術(shù):2009-12-2217:36:09[收藏][評論]基于PID算法和89C52在工程實際中,應(yīng)用最為廣泛的調(diào)節(jié)器控制規(guī)PID控制,又稱PID調(diào)節(jié)。PID控制器以其結(jié)構(gòu)簡單、穩(wěn)定性好、工作可靠、調(diào)整方便而成為工業(yè)控制的主要技術(shù)之一。當被控對象PID控制器的參數(shù)整定是控制系統(tǒng)設(shè)計的內(nèi)容。它是根據(jù)被控過程的特性確定PID控制器的比例系數(shù)、積分時問和微分時間的大小。PID控制器參數(shù)整定的方法概括起來有兩大類:一是理論計算整定法。式中:u(t)為控制器的輸出;e(t)為偏差,即設(shè)定值與反饋值之差;KC為控制器的放大系數(shù),即比例增樣時的偏差值;E(K-1)為第K-1次采樣時的偏差值;P(K)為第K次采樣是調(diào)節(jié)器的輸出。PID算法系統(tǒng)的性能與穩(wěn)定度需要通過具體實驗測試完成?,F(xiàn)1kW1L清水進行加熱。觀測設(shè)定值和實測值之間的誤差(當水溫達到穩(wěn)定時的值),計算絕對誤差和相對誤差,見表1。由實驗結(jié)果可以看出,系統(tǒng)的誤差基本穩(wěn)定在±0.3℃,可見系統(tǒng)的精度很好。此外,系統(tǒng)運5min時溫度基本達到穩(wěn)定,穩(wěn)定所需時間較短??梢钥闯觯鵓ID算法的單片機溫度控制系統(tǒng)具有較高的精MEGA16PIDK=△Y/△X公式。我知道△Y用溫度值的單位,但△X【1【2huang關(guān)于PIDLZ2255PID參數(shù)要調(diào)節(jié)的原因。因此要對PID3、想象一下,如果你的PID255,要么小于0,這就變成了開關(guān)控制了?!?deepi學習了資料郵件回復(fù)回復(fù)↑↑【4資料郵件回復(fù)回復(fù)↑↑【5資料郵件回復(fù)回復(fù)↑↑單片機高精度溫度控制實【】本文介紹了以AT89S51單片機為的溫度控制器的設(shè)計,在該設(shè)計中采用高精度的溫度傳感器AD590對電熱鍋爐的溫度進行實時精確測量,用超低溫漂移高精度運算放大器OP07將溫度-電壓信號進算法,實時更新控制輸出參數(shù),控制可控硅的通斷時間,最終實現(xiàn)對爐溫的高精度控制?!尽克疁乜刂葡到y(tǒng)PID控制單片方案一采用8031作為控制,以使用最為普遍的器件ADC0809作模數(shù)轉(zhuǎn)換,控制上使用對電阻絲加電使其升溫和開動風扇使其降溫。此方案簡易可行,器件的價格便宜,但8031沒有程序器,需要擴展,增加了電路的復(fù)雜性,且ADC0809是8位的模數(shù)轉(zhuǎn)換,不能滿足本題目的精度要求。方案二采用比較流行的AT89S51作為電路的控制,使用12位的高精度模數(shù)轉(zhuǎn)換器AD574A進行數(shù)據(jù)轉(zhuǎn)換,控制電路部分采用控制可控硅的通斷以實行對鍋爐溫度的連續(xù)控制,此方案電路簡單并且可1控制器設(shè)計總體框根據(jù)溫度變化慢,并且控制精度不易掌握的特點,AT89S51單片機為檢測控制中心的電熱鍋越限二硬件電路設(shè)主機選用ATMEL公司的51系列AT89S51來實現(xiàn),利用單片機軟件編程靈活、自由度大的特點,力求用軟件完善各種控制算法和邏輯控制。本系統(tǒng)選用的AT89S51時鐘可達12MHz,運算速度快,控制功能完善。其具有128字節(jié)RAM,而且含有4KB的flashROM不需要外擴展器,可使系統(tǒng)整體I/0部分送去顯示;另一部分與設(shè)定值進行比較,通過PID算法得到控制量并經(jīng)由單片機輸出去控制電熱鍋爐AD590,0P07,74LS373,AD574A等組成。由于控制精度0.1度,而考慮到測量干擾和數(shù)據(jù)處理誤差,則溫度傳感器和AD轉(zhuǎn)化器的精度應(yīng)更高才能保證控制精度的實現(xiàn),這個精度可處粗略0.1度。故溫度傳感器需要能夠0.1度;而對AD轉(zhuǎn)換器,由于測量范圍40-90度,0.1度作為響應(yīng)AD區(qū)分度要求,AD需要區(qū)分(90-40)/0.1=500個數(shù)字量,顯然10AD轉(zhuǎn)換器。為此,選用高精度的12位AD574A。為了達到測量高精度的要求,選用溫度傳感AD590,AD590具有較高精度和重復(fù)性(重復(fù)性0.1℃,其良好的非線形可以保證優(yōu)于0.1℃的測量精度,利用其重復(fù)性較好的特點,通過非線形補償,可以達到0.1℃測量精度.)超低溫漂移高精度運算放大器0P07將溫度一電壓信號進行放大,便于A/D進行轉(zhuǎn)換,以提高溫度電路的可靠性。模擬電路硬件部分見圖2。2溫度電壓轉(zhuǎn)換電進行處理,這里采用光耦元件TLP521在控制部分進行光電,此外采用變壓器實現(xiàn)弱強電的電源。 過集電極電阻以及射集反向偏壓,有7V左右的電壓加在雙向可控硅控制端,從而使可控硅導通,交流通路形成,電阻爐工作;反之單片機輸出電平為0時,光耦元件不能導通,三極管不能形成有效偏置而截止,可控3控制執(zhí)行部分電,AN3與P3.2相連,采用外部中斷方式,并且優(yōu)先級定為最高;AN5AN4分別與P1.7和1按鍵功按鍵按下(D1亮)時,設(shè)定值;按鍵升起(D1不亮)時,P3.0(RXD)口來輸出顯示數(shù)據(jù),從而節(jié)省了單片機端口資源,P1.4口和P3.1(TXD)的控制下通4三系統(tǒng)軟件設(shè)在主程序中首先給定PID算法的參數(shù)值,然后通過循環(huán)顯示當前溫度,并且設(shè)定鍵盤外部中斷為最高優(yōu)經(jīng)過A/D轉(zhuǎn)換的溫度信號;設(shè)定定時器T1為嵌套在T0之中的定時中斷,初值由PID算法子程序提供ORGAJMPORGAJMPORGAJMPORGAJMP該中斷是單片機5s定時中斷,優(yōu)先級設(shè)為最低,但卻是最重要的子程序。在該中斷響應(yīng)中,單片機要完成A/D轉(zhuǎn)換、數(shù)字濾波、判斷是否越限、標度轉(zhuǎn)換處理、繼續(xù)顯示當前溫度、與設(shè)定值進行比較,調(diào)用PID算法子程序并輸出控制信號等功能。2.3T1中斷子程T1定時中斷嵌套在T中斷之中,優(yōu)先級高于T中斷,其定時初值由PID算法子程序提供,T1中斷響應(yīng)的Am=90;Ao=40;Nm=FEH;7。系統(tǒng)算法控制采用工業(yè)上常用的位置型PID數(shù)字控制,并且結(jié)合特定的系統(tǒng)加以算法的改進,形成了變速積分PID一積分分離PID控制相結(jié)合的自動識別的控制算法。該方法不僅大大減小了超調(diào)量(圖7溫度計測量值與方式8PID控制算法流程e(k≥εPD算法e(k)<ε使用變速積PID算法9溫度控制曲線四源程五結(jié)果分析論本文針對電熱鍋爐溫度控制系統(tǒng)模型,提出了一種基于單片機AT89S51的設(shè)計方案。設(shè)計中運用PID算法T1的定時常數(shù),輸出控制可控硅的通斷,從而實現(xiàn)對溫度的連續(xù)控制。設(shè)計結(jié)7和圖PID控制那塊兒C程序啊。是以18B20

2#大中 于2009-5-2319:13只看該作者參考下我收藏#include#istruct_pidintpv;/*integerthatcontainstheprocessvalue*/intsp;/*integerthatcontainsthesetpoint*/floatintegral;

floatpgain;floatfloatdgain;intdeadband;intstruct_pidintprocess_point,floatp_gain,i_gain,d_gain,DESCRIPTIONThisfunctioninitializesthepointersinthetotheprocessvariableandthesetpoint.*pvand*spareintegerpointers.voidpid_init(struct_pid*warm,intprocess_point,{struct_pidpid=pid->pv=process_point;pid->sp=set_point;}DESCRIPTIONSetstheproportionalgain(p_gain),integralderivitivegain(d_gain),andthedeadband(dead_band)ofapidcontrolstructure_pid.voidpid_tune(struct_pid*pid,floatp_gain,floati_gain,floatd_gain,intdead_band){pid->pgain=p_gain;pid->igain=i_gain;pid->dgain=pid->deadband=dead_band;pid->integral=integral_val;}DESCRIPTIONSetanewvaluefortheintegraltermoftheThisisusefulforsettingtheinitialoutputofthepidcontrolleratstartup.voidpid_setinteg(struct_pid*pid,float{pid->integral=new_integ;pid->last_error=0;}DESCRIPTIONBumplesstransferalgorithim.Whensuddenlychangingsetpoints,orwhenrestartingthePIDequationafteranextendedpause,thederivativeoftheequationcancauseabumpinthecontrolleroutput.Thisfunctionwillhelpsmoothoutthatbump.Theprocessvaluein*pvshouldbetheupdatedjustbeforethisfunctionisused.voidpid_bumpless(struct_pid{pid->last_error=(pid->sp)-(pid-}Thisfunctionusesthepositionalformofthepidequation,andincorporatesanintegralwinduppreventionalgorithim.RectangulartimebasisforaccurateRETURNVALUEThenewoutputvalueforthepidUSAGE#includefloatpid_calc(struct_pid{intfloatpterm,dterm,result,err=(pid->sp)-(pid->pv);if(abs(err)>pid-{ferror=(float)err;/*ntegertofloatconversiononlyonce*/pterm=pid->pgain*ferror;if(pterm>100||pterm<-{pid->integral=}{pid->integral+=pid->igain*ferror;if(pid->integral>100.0){p

溫馨提示

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

最新文檔

評論

0/150

提交評論