版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 摘要</b></p><p> 隨著科學(xué)技術(shù)的迅猛發(fā)展,各個領(lǐng)域?qū)囟瓤刂葡到y(tǒng)的精度、穩(wěn)定性等要求越來越高,控制系統(tǒng)也千變?nèi)f化,溫度是工業(yè)生產(chǎn)中常見的工藝參數(shù)之一,任何物理變化和化學(xué)反應(yīng)過程都與溫度密切相關(guān),因此溫度控制是生產(chǎn)自動化的重要任務(wù)。對于不同生產(chǎn)情況和工藝要求下的溫度控制,所采用的加熱方式,燃料,控制方案也有所不同。采用單片機(jī)進(jìn)行爐溫控制,可大大地提
2、高控制質(zhì)量和自動化水平, 具有良好的經(jīng)濟(jì)效益和推廣價值。</p><p> 本文主要介紹了利用AT89C51為主控制電路實現(xiàn)的爐溫調(diào)節(jié)控制系統(tǒng),詳細(xì)闡述了系統(tǒng)的功能,硬件組成以及軟件設(shè)計,利用熱電偶采集溫度信號經(jīng)A/D轉(zhuǎn)換器轉(zhuǎn)化后與給定信號送入微機(jī)系統(tǒng),系統(tǒng)分析控制算法,信號再經(jīng)D/A轉(zhuǎn)換后控制調(diào)節(jié)可控硅控制器來改變爐內(nèi)的溫度。</p><p> 關(guān)鍵字:溫度控制 自動化 單片機(jī)
3、 轉(zhuǎn)換器 </p><p><b> 溫度控制系統(tǒng)設(shè)計</b></p><p><b> 1 設(shè)計任務(wù)及分析</b></p><p> 1.1設(shè)計任務(wù)和要求 </p><p> 被控對象為電爐,采用熱阻絲加熱,利用大功率可控硅控制器控制熱阻絲兩端所加的電壓大小,來改變流經(jīng)熱阻絲的
4、電流,從而改變電爐爐內(nèi)的溫度??煽毓杩刂破鬏斎霝?~5伏時對應(yīng)電爐溫度0-300℃,溫度傳感器測量值對應(yīng)也為0~5伏,對象的特性為積分加慣性系統(tǒng),慣性時間常數(shù)為T1=40秒。</p><p> 要求完成的主要任務(wù):</p><p> 1)設(shè)計溫度控制系統(tǒng)的計算機(jī)硬件系統(tǒng),畫出框圖;</p><p> 2)編寫積分分離PID算法程序,從鍵盤接受Kp、Ti、Td、
5、T及β的值;</p><p> 3)計算機(jī)仿真被控對象,編寫仿真程序;</p><p> 4)通過數(shù)據(jù)分析Kp改變時對系統(tǒng)超調(diào)量的影響。</p><p> 5)撰寫設(shè)計說明書。</p><p><b> 1.2系統(tǒng)的分析</b></p><p> 該系統(tǒng)利用單片機(jī)可以方便地實現(xiàn)對PID參
6、數(shù)的選擇與設(shè)定,實現(xiàn)工業(yè)過程中PID控制。它采用溫度傳感器熱電偶將檢測到的實際爐溫進(jìn)行A/D轉(zhuǎn)換,再送入計算機(jī)中,與設(shè)定值進(jìn)行比較,得出偏差。對此偏差按PID規(guī)律進(jìn)行調(diào)整,得出對應(yīng)的控制量來控制驅(qū)動電路,調(diào)節(jié)電爐的加熱功率,從而實現(xiàn)對爐溫的控制。利用單片機(jī)實現(xiàn)溫度智能控制,能自動完成數(shù)據(jù)采集、處理、轉(zhuǎn)換、并進(jìn)行PID控制和鍵盤終端處理(各參數(shù)數(shù)值的修正)及顯示。在設(shè)計中應(yīng)該注意,采樣周期不能太短,否則會使調(diào)節(jié)過程過于頻繁,這樣,不但執(zhí)行
7、機(jī)構(gòu)不能反應(yīng),而且計算機(jī)的利用率也大為降低;采樣周期不能太長, 否則會使干擾無法及時消除,使調(diào)節(jié)品質(zhì)下降。</p><p><b> 2 方案比較及論證</b></p><p> 用溫度傳感器來檢測爐的溫度,將爐溫轉(zhuǎn)變成毫伏級的電壓信號,經(jīng)溫度變送器放大并轉(zhuǎn)換成電流信號。由電阻網(wǎng)絡(luò)講電流信號變成電壓信號,送入A/D轉(zhuǎn)換器,通過采樣和模數(shù)轉(zhuǎn)換,所檢測到的電壓信號和爐
8、溫給定值的電壓信號送入計算機(jī)程序中作比較,得出給定值與實際值之間的偏差,并與β進(jìn)行比較,從而確定算法。計算得到的控制量輸出給可控硅控制器,改變可控硅的導(dǎo)通角,達(dá)到調(diào)壓的目的,是電阻絲兩端的電壓增大或較小,進(jìn)而實現(xiàn)對爐溫的控制。</p><p> 方案一:熱電偶溫度自動控制系統(tǒng)。 方案二:數(shù)字溫度傳感器溫度控制系統(tǒng)。</p><p> 這兩個方案都是采用單片機(jī)控制,兩個方案的比較
9、部分為溫度檢測部分。</p><p> 方案一溫度檢測部分檢測部分采用熱電偶,它需要冷端補償電路與其配套,并且熱電偶輸出電壓只有幾毫負(fù),必須經(jīng)過放大處理才能A/D轉(zhuǎn)換和D/A轉(zhuǎn)換器接口,若采用8位A/D轉(zhuǎn)換器,ADC0809則輸人端需采用儀用放大器,把幾毫伏的電壓信號放大到5伏左右。由于熱電偶屬于非線性器件,因此每個溫度值都必須通過分度表,查表才能獲得,這給軟件編程和數(shù)據(jù)處理增加了難度。這種系統(tǒng)具有測量溫度范圍
10、可以從零下一百度到早上千攝氏度,而且有很多熱電偶精度非常高這是這種測量系統(tǒng)的優(yōu)點。但構(gòu)成系統(tǒng)復(fù)雜,抗干擾能力不強(qiáng)。</p><p> 方案二采用數(shù)字溫度傳感器DS18B20,它的最高分辨率為12位,可識別0.0625攝氏度的溫度。它具有直接輸出數(shù)字信號和數(shù)據(jù)處理,并且它和單片機(jī)接口只需要一位I/O口,因此由它構(gòu)成的系統(tǒng)簡單使用,由于DS18B20,按照工業(yè)設(shè)計要求設(shè)計,抗干擾性能強(qiáng)。但溫度測量范圍從-55℃—-
11、125℃。</p><p> 根據(jù)設(shè)計要求,綜合考慮選擇方案一。</p><p> 主要的控制芯片采用AT89C51,要求傳感器測量的電壓范圍和可控硅控制器的電壓在0-5℃,所以A/D與D/A轉(zhuǎn)換芯片采用ADC0809和DAC0832。爐溫控制在0-300℃內(nèi),因此采用鎳鉻-銅鎳熱電偶,同時選用運算放大器將信號放大。</p><p> 在系統(tǒng)中,利用熱電偶測得
12、電阻爐實際溫度并轉(zhuǎn)換成毫伏級電壓信號。該電壓信號經(jīng)過溫度檢測電路轉(zhuǎn)換成與爐溫相對應(yīng)的數(shù)字信號進(jìn)入單片機(jī),單片機(jī)進(jìn)行數(shù)據(jù)處理后,通過液晶顯示器顯示溫度,同時將溫度與設(shè)定溫度比較,根據(jù)設(shè)定計算出控制量,根據(jù)控制量通過控制繼電器的導(dǎo)通和關(guān)閉從而控制電阻絲的導(dǎo)通時間,以實現(xiàn)對爐溫的控制。</p><p> 由以上分析控制過程,可以得到如圖1的設(shè)計框圖,程序流程圖如圖2所示。</p><p>&l
13、t;b> 圖1 系統(tǒng)結(jié)構(gòu)框圖</b></p><p><b> 圖2系統(tǒng)程序流程圖</b></p><p><b> 3 控制算法</b></p><p> 3.1 PID控制算法</p><p> 在PID調(diào)節(jié)中,比例控制能迅速反應(yīng)誤差,從而減小誤差,但比例控制不能消除
14、穩(wěn)態(tài)誤差,的加大,會引起系統(tǒng)的不穩(wěn)定;積分控制的作用是:只要系統(tǒng)存在誤差,積分控制作用就不斷地積累,輸出控制量以消除誤差,因而,只要有足夠的時間,積分控制將能完全消除誤差,積分作用太強(qiáng)會使系統(tǒng)超調(diào)加大,甚至使系統(tǒng)出現(xiàn)振蕩;微分控制可以使減小超調(diào)量,克服振蕩,提高系統(tǒng)的穩(wěn)定性,同時加快系統(tǒng)的動態(tài)響應(yīng)速度,減小調(diào)整時間,從而改善系統(tǒng)的動態(tài)性能。將P、I、D三種調(diào)節(jié)規(guī)律結(jié)合在一起,可以使系統(tǒng)既快速敏捷,又平穩(wěn)準(zhǔn)確,只要三者強(qiáng)度配合適當(dāng),便可獲
15、得滿意的調(diào)節(jié)效果。</p><p> 模擬PID控制規(guī)律為:</p><p><b> ?。?-1)</b></p><p> 式中:稱為偏差值,可作為溫度調(diào)節(jié)器的輸入信號,其中為給定值,為被測變量值;為比例系數(shù);為積分時間常數(shù);為微分時間常數(shù);為調(diào)節(jié)器的輸出控制電壓信號。</p><p> 因為計算機(jī)只能處理數(shù)字
16、信號,故上述數(shù)字方程式必須加以變換。設(shè)采樣周期為T,第次采樣得到的輸入偏差為,調(diào)節(jié)器的輸出為,作如下近似:</p><p><b> 得到:</b></p><p> 其中,為調(diào)節(jié)器第次輸出值;、分別為第次和第次采樣時刻的偏差值。由式可知: 是全量值輸出,每次的輸出值都與執(zhí)行機(jī)構(gòu)的位置一一對應(yīng),所以稱之為位置型PID算法。在這種位置型控制算法中,由于算式中存在累加
17、項,而且輸出的控制量不僅與本次偏差有關(guān),還與過去歷次采樣偏差有關(guān),使得產(chǎn)生大幅度變化,這樣會引起系統(tǒng)沖擊,甚至造成事故。所以在實際中當(dāng)執(zhí)行機(jī)構(gòu)需要的不是控制量的絕對值,而是其增量時,可采用增量型PID算法。</p><p> 因為要累加偏差,位置式控制不夠方便,不僅多占用較多存儲單元,且不便于編程。在實際控制中,增量型算法要比位置算法應(yīng)用更加廣泛。利用位置型PID控制算法,可得到增量型PID控制算法的遞推形式為
18、:</p><p><b> ?。?-4)</b></p><p> 式中,為比例增益;為積分系數(shù);為微分系數(shù)。</p><p> 為了編程方便,可將式(2-4)整理成如下形式:</p><p><b> ?。?-5)</b></p><p><b> 式中:
19、</b></p><p> 3.2 積分分離PID控制算法</p><p> 在一般的PID控制中,當(dāng)有較大的擾動或大幅度改變給定值時,由于此時有較大的偏差,以及系統(tǒng)有慣性和滯后,故在積分項的作用下,往往會產(chǎn)生較大的超調(diào)和長時間的波動。特別對于溫度等變化緩慢的過程,這一現(xiàn)象更為嚴(yán)重,為此,可采用積分分離措施,即偏差較大時,取消積分作用;當(dāng)偏差較小時才將積分作用投入。亦即&
20、lt;/p><p> 當(dāng)時,采用PD控制;</p><p> 當(dāng)時,采用PID控制。</p><p> 積分分離閾值應(yīng)根據(jù)具體對象及控制要求。若值過大時,則達(dá)不到積分分離的目的;若值過小,則一旦被控量無法跳出個積分分離區(qū),只進(jìn)行PD控制,將會出現(xiàn)殘差,為了實現(xiàn)積分分離,編寫程序時必須從數(shù)字PID差分方程式中分離出積分項,進(jìn)行特殊處理。</p><
21、;p><b> 4 系統(tǒng)硬件設(shè)計</b></p><p> 用熱電偶來檢測爐的溫度,將爐溫轉(zhuǎn)變成毫伏級的電壓信號,經(jīng)溫度變送器放大并轉(zhuǎn)換成電流信號。由電阻網(wǎng)絡(luò)講電流信號變成電壓信號,送入A/D轉(zhuǎn)換器,通過采樣和模數(shù)轉(zhuǎn)換,所檢測到的電壓信號和爐溫給定值的電壓信號都轉(zhuǎn)換成數(shù)質(zhì)量送入單片機(jī)進(jìn)行比較,其差值即為實際爐溫和給定爐溫的偏差,以單片機(jī)為核心的數(shù)字PID控制器對偏差按照給定的方法運
22、算,運算結(jié)果送DAC0832轉(zhuǎn)換成模擬電壓,經(jīng)功率放大器放大后送入晶閘管調(diào)壓器,觸發(fā)晶閘管并改變其導(dǎo)通角的大小,從而控制電阻爐的加溫電壓,起到爐溫調(diào)節(jié)的作用。</p><p> 爐溫信號T通過溫度檢測及變送,變成電信號,與溫度設(shè)定值進(jìn)行比較,計算溫度偏差e和溫度的變化率de/dt,再由智能控制算法進(jìn)行推理,并得控制量u,可控硅輸出部分根據(jù)調(diào)節(jié)電加熱爐的輸出功率,即改變可控硅管的接通時間,使電加熱爐輸出溫度達(dá)到理
23、想的設(shè)定值。</p><p> 4.1 ADC0809芯片功能</p><p> A/D轉(zhuǎn)換器是將模擬電壓或電流轉(zhuǎn)換成數(shù)字量的期間或裝置,它是一種模擬系統(tǒng)和計算機(jī)之間的接口,它在數(shù)據(jù)采集和控制系統(tǒng)中,得到了廣泛的應(yīng)用,常用的A/D轉(zhuǎn)換器有ADC0809. 它是一種帶有8通道模擬開關(guān)的8位逐次逼近式A/D轉(zhuǎn)換器,轉(zhuǎn)換時間為100us左右,線性誤差為±1/2LSB,采用28腳雙立
24、直插式封裝,ADC0809由8通道模擬開關(guān)、通道選擇邏輯、8位A/D轉(zhuǎn)換器及三態(tài)輸出鎖存緩沖器組成。</p><p> 1)8通道模擬開關(guān)及通道選擇邏輯</p><p> 該部分的功能是實現(xiàn)8選1操作,通道選擇信號C、B、A與所選通道的關(guān)系如下:</p><p> 地址鎖存允許信號(ALE、正脈沖)用于通道選擇信號C、B、A的鎖存。加至C、B、A上的通道選擇信
25、號在ALE的作用下送入通道選擇邏輯后,通道i上的模擬輸入被送至A/D轉(zhuǎn)換器轉(zhuǎn)換。</p><p> 2)8位A/D轉(zhuǎn)換器</p><p> 圖3 ADC0809引腳圖</p><p> 為模擬信號的8個輸入通道。、為基準(zhǔn)電壓的正極和負(fù)極。、和為模擬信號輸入通道的地址選擇線。</p><p> 為地址鎖存信號,由低電平到高電平正跳變時講
26、地址選擇線的狀態(tài)鎖存,一選通相應(yīng)的輸入通道。</p><p> 為啟動信號,正脈沖的上升沿使內(nèi)部寄存器清零,從下降沿開始進(jìn)行A/D轉(zhuǎn)換。</p><p> 為轉(zhuǎn)換結(jié)束信號,在信號之后變低,轉(zhuǎn)換結(jié)束為高電平,用來申請中斷。</p><p> 為輸出允許信號,有效時將輸出寄存器中的數(shù)據(jù)放到數(shù)據(jù)總線上。</p><p> 為數(shù)碼輸出端,為最
27、低有效位,為最高有效位。</p><p> 4.2 DAC0832芯片功能</p><p> D/A轉(zhuǎn)換器的功能是把二進(jìn)制數(shù)字量電信號轉(zhuǎn)換為與其數(shù)值成正比的模擬量電信號。常用D/A轉(zhuǎn)換器為DAC0832芯片。DAC0832工作在單緩沖寄存器方式,即當(dāng)信號來時,~數(shù)據(jù)線送來的數(shù)據(jù)直通進(jìn)行D/A轉(zhuǎn)換,當(dāng)變高時,則此數(shù)據(jù)便被鎖存在寄存器中,因此D/A轉(zhuǎn)換的輸出也保持不變。DAC0832講輸入
28、的數(shù)字量轉(zhuǎn)換成差動的電流輸出(和),為了將其編程電壓輸出,必須經(jīng)過運算放大器,使其輸出(為-5V)或(為-10V),若要形成負(fù)電壓輸出,則需接正的基準(zhǔn)電壓。</p><p> DAC0832是雙列直插式8位D/A轉(zhuǎn)換器。能完成數(shù)字量輸入到模擬量(電流)輸出的轉(zhuǎn)換。圖4為DAC0832的引腳圖。其主要參數(shù)如下:分辨率為8位,轉(zhuǎn)換時間為1μs,滿量程誤差為±1LSB,參考電壓為(+10/span>-
29、10)V,供電電源為(+5~+15)V,邏輯電平輸入與TTL兼容。在DAC0832中有兩級鎖存器,第一級鎖存器稱為輸入寄存器,它的允許鎖存信號為ILE,第二級鎖存器稱為DAC寄存器,它的鎖存信號也稱為通道控制信號。 </p><p> 圖4 DAC0832引腳圖 當(dāng)ILE為高電平,片選信號 和寫信號 為低電平時,輸入寄存器控制信號為1,這種情況下,輸入寄存器的輸出隨輸入而變化。此后,當(dāng)由低電平變高時,
30、控制信號成為低電平,此時,數(shù)據(jù)被鎖存到輸入寄存器中,這樣輸入寄存器的輸出端不再隨外部數(shù)據(jù)DB的變化而變化。 對第二級鎖存來說,傳送控制信號和寫信號同時為低電平時,二級鎖存控制信號為高電平,8位的DAC寄存器的輸出隨輸入而變化,此后,當(dāng)由低電平變高時,控制信號變?yōu)榈碗娖?,于是將輸入寄存器的信息鎖存到DAC寄存器中。 其余各引腳的功能定義如下: DI7~DI0:8位的數(shù)據(jù)輸入端,DI7為最高位。 IO
31、UT1:模擬電流輸出端1,當(dāng)DAC寄存器中數(shù)據(jù)全為1時,輸出電流最大,當(dāng) DAC寄存器中數(shù)據(jù)全為0時,輸出電流為0。 IOUT2:模擬電流輸出端2,IOUT2與IOUT1的和為一個常數(shù)。</p><p> RFB:反饋電阻引出端,DAC0832內(nèi)部已有反饋電阻,所以 RFB端可以直接接到外部運算放大器的輸出端,相當(dāng)于將一個反饋電阻接在運算放大器的輸出端和輸入端之間。 VREF :參考電壓輸入端
32、,此端可接一個正電壓,也可接一個負(fù)電壓,它決定0至255的數(shù)字量轉(zhuǎn)化出來的模擬量電壓值的幅度,VREF范圍為。VREF端與D/A內(nèi)部T形電阻網(wǎng)絡(luò)相連。 VCC:芯片供電電壓,范圍為。 GND :模擬量地/數(shù)字量地,即模擬/數(shù)字電路接地端。</p><p> 4.3 AT89C51單片機(jī)</p><p> AT89C51提供以下的功能標(biāo)準(zhǔn):4K字節(jié)閃爍存儲器,128字
33、節(jié)隨機(jī)存儲器,32個I/O口,2個16位定時/計數(shù)器,1個5向量兩級中斷結(jié)構(gòu),1個串行通信口,片內(nèi)震蕩器和時鐘電路。另外,AT89C51還可以進(jìn)行0HZ的靜態(tài)邏輯操作,并支持兩種軟件的節(jié)電模式。</p><p> 8051單片機(jī)的內(nèi)部結(jié)構(gòu)十分復(fù)雜,但封裝之后,只有引腳是面向用戶的,所以使用者需要熟悉各引腳的用途。常用的8051芯片是用雙列直插40腳封裝。</p><p><b>
34、; ?。汗╇婋妷?。 </b></p><p><b> ?。航拥亍? </b></p><p> ?。篜0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗時,P0輸
35、出原碼,此時P0外部必須被拉高。 </p><p> ?。篜1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 </p><p> ?。篜2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口
36、緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并作為輸入時,P2口的管腳被外部拉低,將輸出電流,這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進(jìn)行存取時,P2口輸出地址的高八位。在給出地址“1”時,利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進(jìn)行讀寫時,P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。 <
37、;/p><p> ?。篜3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,P3口同時為閃爍編程和編程校驗接收一些控制信號。 </p><p> ?。簭?fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RS
38、T腳兩個機(jī)器周期的高電平時間。 </p><p> ?。寒?dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6,可用作對外部輸出的脈沖或用于定時目的?!?lt;/p><p> :外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機(jī)器周期兩次有效。但在
39、訪問外部數(shù)據(jù)存儲器時,這兩次有效的信號將不出現(xiàn)。 </p><p> ?。寒?dāng)保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,將內(nèi)部鎖定為RESET;當(dāng)端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 </p><p> ?。悍聪蛘袷幏糯笃鞯妮斎爰皟?nèi)部時鐘工作電路的輸入。
40、 </p><p> ?。簛碜苑聪蛘袷幤鞯妮敵?。 </p><p> 4.4 系統(tǒng)濾波原理</p><p> 一般微機(jī)應(yīng)用系統(tǒng)的模擬輸入信號中,均含有種種噪音和干擾,它們來自信號源本身、傳感器、外界干擾等。噪音有兩大類:一類為周期性的,另一類為不規(guī)則的。前者可采用雙積分A/D轉(zhuǎn)換器,有效地消除其影響。后者為隨機(jī)信號,可用數(shù)字濾波方法予以消除。</p
41、><p> 算術(shù)平均值法式要按輸入的N個采樣為周期(i=1~N),尋找這樣一個y,使y與各采樣值間的偏差的平方和為最小,使</p><p> 由一元函數(shù)求值原理可得</p><p><b> 5 系統(tǒng)仿真</b></p><p><b> 被控對象為:</b></p><p&
42、gt; 采用simulink仿真,通過simulink模塊實現(xiàn)積分分離PID控制算法。</p><p> 選擇合適的Kp,Ki,Kd是系統(tǒng)的仿真效果趨于理想狀態(tài)。MATLAB編寫程序如下:</p><p> clear all;</p><p> close all;</p><p> ts=2;
43、 %采樣時間2s</p><p> sys=tf([1],[40,1,0]);</p><p> dsys=c2d(sys,ts,'zoh'); %將sys離散化</p><p> [num,den]=tfdata(dsys,'v'); %求sys多項式模型參數(shù)</p><p>&l
44、t;b> kp=10;</b></p><p><b> ki=0.25;</b></p><p><b> kd=5;</b></p><p> Simulink仿真圖如下:</p><p> 圖6 Simulink仿真圖</p><p><
45、;b> 附錄1:源程序代碼</b></p><p> START:MOV 68H,KP ;分別將KP ,TI ,TD, T,β送入指定的存儲單元</p><p> MOV 54H,TI</p><p> MOV 55H,TD</p><p><b> MOV 56H,T</
46、b></p><p><b> MOV 57H,β</b></p><p> MOV A,68H ;計算KI=KP*T/TI</p><p><b> MOV B,56H</b></p><p><b> MUL AB</b></
47、p><p><b> MOV B,54H</b></p><p><b> DIV AB</b></p><p><b> MOV 69H,A</b></p><p> MOV A,68H ;計算KD=KP*TD/T</p><
48、;p><b> MOV B,55H</b></p><p><b> MUL AB</b></p><p><b> MOV B,56H</b></p><p><b> DIV AB</b></p><p><b> MOV 6
49、AH,A</b></p><p> LOOP0: MOV DPTR #7FF0H ;讀取預(yù)定溫度值,送ADC0809的IN0口地址</p><p> MOV @DPTR,A ;啟動A/D轉(zhuǎn)換</p><p> LOOP1 JB P3.3,LOOP1 ;等待轉(zhuǎn)換數(shù)據(jù)</p><
50、p> MOVX A,@DPTR ;讀取ADC0809的IN0口轉(zhuǎn)換后的數(shù)據(jù)</p><p> MOV 5CH,A ;將預(yù)定值數(shù)據(jù)放入指定的存儲單元</p><p> MOV DPTR,#7FF1H ;讀取采樣溫度值,送ADC0809的IN1口地址</p><p> MOVX @DPTR,A
51、 ;啟動A/D轉(zhuǎn)換</p><p> LOOP2: JB P3.3,LOOP2 ;等待轉(zhuǎn)換數(shù)據(jù)</p><p> MOVX A,@DPTR ;讀取ADC0809的IN1口轉(zhuǎn)換后的數(shù)據(jù)</p><p> MOV 49H,A ;將采樣值數(shù)據(jù)放入指定的存儲單元</p><
52、p> MOV A,5CH ;計算ei,先取溫度給定值</p><p><b> CLR C</b></p><p> SUBB A,50H ;溫度給定值-采樣值</p><p> JNC AA0 ;判斷ei的正負(fù),如果為正,跳至AA0</p&
53、gt;<p> CPL A ;ei為負(fù),下兩條指令求補</p><p> ADD A,#01H</p><p> AA0: MOV R0,57H</p><p> SUBB A,57H ;|ei|-β</p><p> JNC AA1
54、 ;|ei|>β跳至AA1</p><p> SJMP AA2 ;|ei|<β跳至AA2</p><p> AA1: LCALL PD ;調(diào)用PD算法</p><p> AA2: LCALL PID ;調(diào)用PID算法</p&
55、gt;<p> MOV A,7CH ;將△Ui通過DAC0832輸出</p><p> MOV DPTR,#7FF2H</p><p> MOVX @DPTR,A</p><p><b> INC DPTR</b></p><p> MOVX @DPTR,A<
56、/p><p> LCALL DELAY ;調(diào)用延時子程序,等待下一次采樣計算</p><p> SJMP LOOP0 ;進(jìn)入下一次控制計算</p><p> DELAY PROC NEAR</p><p> DL0: MOV R6,#FFH</p><p>
57、DL1: MOV R7,#FFH</p><p> DL2: MOV R5,#FFH</p><p> DLS: DJNZ R5,DLS</p><p> DJNZ R7,DL2</p><p> DJNZ R6 DL1</p><p><b> RET</b></p>
58、<p> DELAY ENDP</p><p> PID PROC NEAR</p><p> PID:MOV A,5CH ;計算ei,先取溫度給定值</p><p><b> CLR C</b></p><p> SUBB A,50H
59、 ;溫度給定值-溫度檢測值</p><p> JNC PID1 ;判斷ei正負(fù),如果為正,跳至PID1</p><p> CPL A ;ei為負(fù),下兩條指令求補</p><p> ADD A,#01H</p><p>
60、SETB 30H ;ei為負(fù),符號位置1</p><p><b> SJMP PID2</b></p><p> PID1:CLR 30H ;ei為正,符號位置0</p><p> PID2:MOV 6BH,A
61、 ;ei值存放在6BH單位元中</p><p> MOV R1,6BH ;計算ei-ei-1,先將ei值,送R1</p><p> MOV C,30H ;將ei的符號位值送20H位</p><p><b> MOV 20H,C</b></p>
62、<p> MOV R2,6CH ;將ei-1值送R2</p><p> MOV C,31H ;將 ei-1的符號位值送21H位</p><p><b> MOV 21H,C</b></p><p> LCALL DJF
63、 ;調(diào)用單字節(jié)帶符號的減法子程序</p><p> MOV 6EH,R3 ;將差值ei-ei-1送6EH單元</p><p> MOV C,22H ;將差值ei-ei-1的符號位送33H位</p><p><b> MOV 33H,C</b&g
64、t;</p><p> MOV R1,6CH ;計算ei-1-ei-2,先將ei-1值送R1</p><p> MOV C,31H ;將ei-1符號位送20H位</p><p><b> MOV 20H,C</b></p><p>
65、 MOV R2,6DH ;將ei-2的值送R2</p><p> MOV C,32H ;將 ei-2的符號位值送21H位</p><p><b> MOV 21H,C</b></p><p> LCALL DJF
66、 ;調(diào)用單字節(jié)帶符號的減法子程序</p><p> MOV 6FH,R3 ;將差值ei-1-ei-2送6FH單元</p><p> MOV C,22H ;將差值ei-1-ei-2的符號位送34H位</p><p><b> MOV 34H,C</b>
67、</p><p> MOV R1,6EH ;計算(ei-ei-1)-(ei-1-ei-2),將ei-ei-1值送R1</p><p> MOV C,33H ;將ei-ei-1符號位送20H位</p><p><b> MOV 20H,C</b><
68、/p><p> MOV R2,6FH ;將ei-1-ei-2值送R2</p><p> MOV C,34H ;將ei-1-ei-2符號位送21H位</p><p><b> MOV 21H,C</b></p><p> LCAL
69、L DJF ;調(diào)用單字節(jié)帶符號的減法子程序</p><p> MOV 70H,R3 ;將差值(ei-ei-1)-(ei-1-ei-2)送70H單元</p><p> MOV C,22H ;將差值(ei-ei-1)-(ei-1-ei-2)的符號位值送3
70、5H位</p><p><b> MOV 35H,C</b></p><p> MOV A,68H ;計算Kp*(ei-ei-1),將Kp值送A</p><p> MOV B,6EH ;將ei-ei-1值送B</p><p&g
71、t; MUL AB ;兩數(shù)相乘</p><p> MOV 71H,B ;Kp*(ei-ei-1)值存71H,72H單元</p><p><b> MOV 72H.A</b></p><p> MOV A,69H
72、 ;計算KI*ei,將KI值送A</p><p> MOV B,6BH ;將ei值送B</p><p> MUL AB ;兩數(shù)相乘</p><p> MOV 73H,B ;KI*ei值存73H,
73、74H單元</p><p><b> MOV 74H,A</b></p><p> MOV A,6AH ;計算KD*[(ei-ei-1)-(ei-1-ei-2)],將KD送A</p><p> MOV B,70H ;將(ei-ei-1)-(ei-
74、1-ei-2)值送B</p><p> MUL AB ;兩數(shù)相乘</p><p> MOV 75H,B ;KD*[(ei-ei-1)-(ei-1-ei-2)]值存75H,76H單元</p><p><b> MOV 76H,A</b><
75、;/p><p> MOV R1,71H ;計算Kp*(ei-ei-1)+KI*ei,將Kp*(ei-ei-1)值送R1,R2</p><p> MOV R2,72H</p><p> MOV C,33H ;將Kp*(ei-ei-1)的符號位值送23H位</p>
76、;<p><b> MOV 23H,C</b></p><p> MOV R3,73H ;將KI*ei值送R3,R4</p><p> MOV R4,74H </p><p> MOV C,30H ;將KI*ei值的符號位懂2
77、4H位</p><p><b> MOV 24H,C</b></p><p> LCALL SJF ;調(diào)用雙字節(jié)帶符號加法子程序</p><p> MOV 77H,R5 ;將Kp*(ei-ei-1)+KI*ei值送77H,78H</p>
78、<p> MOV 78H,R6</p><p> MOV C,25H ;將Kp*(ei-ei-1)+KI*ei值的符號位送36H位</p><p><b> MOV 36H,C</b></p><p> MOV R1,77H ;計算△Ui,將將
79、Kp*(ei-ei-1)+KI*ei值送R1,R2</p><p> MOV R2,78H </p><p> MOV C,36H ;將Kp*(ei-ei-1)+KI*ei值的符號位送23H位</p><p><b> MOV 23H,C</b></p><p> MOV
80、 R3,75H ;將KD*[(ei-ei-1)-(ei-1-ei-2)]的值送R3,R4</p><p> MOV R4,76H</p><p> MOV C,35H ;將KD*[(ei-ei-1)-(ei-1-ei-2)]的符號位送23H位</p><p><b>
81、MOV 24H,C</b></p><p> LCALL SJF ;調(diào)用雙字節(jié)帶符號加法子程序</p><p> MOV 79H,R5 ;將△Ui值送79H,7AH</p><p> MOV 7AH,R6</p><p> MOV C,25
82、H ;將△Ui值的符號位送37H</p><p><b> MOV 37H,C</b></p><p> MOV R1,7DH ;計算Ui,將Ui-1值送R1,R2</p><p> MOV R2,7EH</p><p> CLR
83、23H ;Ui-1值的符號位值恒為0</p><p> MOV R3,79H ;將△Ui值送R3,R4</p><p> MOV R4,7AH</p><p> MOV C,37H ;將△Ui值的符號位送24H</p>
84、;<p><b> MOV 24H,C</b></p><p> LCALL SJF ;調(diào)用雙字節(jié)帶符號加法子程序</p><p> JNB 25H,PID3 ;判斷計算結(jié)果是否為負(fù)</p><p> MOV 7BH,#00H
85、 ;如果是負(fù)數(shù),則輸出電壓為0</p><p> MOV 7CH,#00H</p><p><b> SJMP PID4</b></p><p> PID3:MOV 7BH,R5 ;否則,將計算得到的Ui值置7BH,7CH</p><p> MOV 7
86、CH,R6</p><p> PID4:MOV 6DH,6CH ;數(shù)據(jù)迭代,ei-1值送ei-2存儲單元</p><p> MOV 6CH,6BH ;ei值送ei-1存儲單元</p><p> MOV 7DH,7BH ;Ui值送Ui-1存儲單元<
87、;/p><p> MOV 7EH,7CH</p><p><b> RET</b></p><p><b> PID ENDP</b></p><p> PD PROC NEAR</p><p> PD:MOV A,5CH ;
88、計算ei,先取溫度給定值</p><p><b> CLR C</b></p><p> SUBB A,50H ;溫度給定值-溫度檢測值</p><p> JNC PD1 ;判斷ei正負(fù),如果為正,跳至PID1</p><p>
89、; CPL A ;ei為負(fù),下兩條指令求補</p><p> ADD A,#01H</p><p> SETB 30H ;ei為負(fù),符號位置1</p><p><b> SJMP PD2</b></p><p>
90、 PD1:CLR 30H ;ei為正,符號位置0</p><p> PD2:MOV 6BH,A ;ei值存放在6BH單位元中</p><p> MOV R1,6BH ;計算ei-ei-1,先將ei值,送R1</p><p> MOV
91、 C,30H ;將ei的符號位值送20H位</p><p> MOV 20H,C;</p><p> MOV R2,6CH ;將ei-1值送R2</p><p> MOV C,31H ;將 ei-1的符號位值送21H位</p>
92、;<p><b> MOV 21H,C</b></p><p> LCALL DJF ;調(diào)用單字節(jié)帶符號的減法子程序</p><p> MOV 6EH,R3 ;將差值ei-ei-1送6EH單元</p><p> MOV C,22H
93、 ;將差值ei-ei-1的符號位送33H位</p><p><b> MOV 33H,C</b></p><p> MOV R1,6CH ;計算ei-1-ei-2,先將ei-1值送R1</p><p> MOV C,31H
94、 ;將ei-1符號位送20H位</p><p><b> MOV 20H,C</b></p><p> MOV R2,6DH ;將ei-2的值送R2</p><p> MOV C,32H ;將 ei-2的符號位值送21H位</p>&l
95、t;p><b> MOV 21H,C</b></p><p> LCALL DJF ;調(diào)用單字節(jié)帶符號的減法子程序</p><p> MOV 6FH,R3 ;將差值ei-1-ei-2送6FH單元</p><p> MOV C,22H
96、 ;將差值ei-1-ei-2的符號位送34H位</p><p><b> MOV 34H,C</b></p><p> MOV R1,6EH ;計算(ei-ei-1)-(ei-1-ei-2),將ei-ei-1值送R1</p><p> MOV C,33H
97、 ;將ei-ei-1符號位送20H位</p><p><b> MOV 20H,C</b></p><p> MOV R2,6FH ;將ei-1-ei-2值送R2</p><p> MOV C,34H ;將ei-
98、1-ei-2符號位送21H位</p><p><b> MOV 21H,C</b></p><p> LCALL DJF ;調(diào)用單字節(jié)帶符號的減法子程序</p><p> MOV 70H,R3 ;將差值(ei-ei-1)-(ei-1-ei-2)送70
99、H單元</p><p> MOV C,22H ;將差值(ei-ei-1)-(ei-1-ei-2)的符號位值送35H位</p><p><b> MOV 35H,C</b></p><p> MOV A,68H ;計算Kp*(ei-ei-1),將Kp值送A&
100、lt;/p><p> MOV B,6EH ;將ei-ei-1值送B</p><p> MUL AB ;兩數(shù)相乘</p><p> MOV 71H,B ;Kp*(ei-ei-1)值存71H,72H單元</p><p>&l
101、t;b> MOV 72H.A</b></p><p> MOV A,6AH ;計算KD*[(ei-ei-1)-(ei-1-ei-2)],將KD送A</p><p> MOV B,70H ;將(ei-ei-1)-(ei-1-ei-2)值送B</p><p> MUL
102、AB ;兩數(shù)相乘</p><p> MOV 75H,B ;KD*[(ei-ei-1)-(ei-1-ei-2)]值存75H,76H單元</p><p><b> MOV 76H,A</b></p><p> MOV R1,71H
103、 ;計算Kp*(ei-ei-1)+KI*ei,將Kp*(ei-ei-1)值送R1,R2</p><p> MOV R2,72H</p><p> MOV C,33H ;將Kp*(ei-ei-1)的符號位值送23H位</p><p><b> MOV 23H,C</b></p>
104、<p> MOV R3,75H ;將KD*[(ei-ei-1)-(ei-1-ei-2)]值送R3,R4</p><p> MOV R4,76H </p><p> MOV C,35H ;將KD*[(ei-ei-1)-(ei-1-ei-2)]值的符號位送24H位</p><p&
105、gt;<b> MOV 24H,C</b></p><p> LCALL SJF ;調(diào)用雙字節(jié)帶符號加法子程序</p><p> MOV 79H,R5 ;將△Ui值送79H,7AH</p><p> MOV 7AH,R6</p><
106、p> MOV C,25H ;將△Ui值的符號位送37H</p><p><b> MOV 37H,C</b></p><p> MOV R1,7DH ;計算Ui,將Ui-1值送R1,R2</p><p> MOV R2,7EH</p>
107、<p> CLR 23H ;Ui-1值的符號位值恒為0</p><p> MOV R3,79H ;將△Ui值送R3,R4</p><p> MOV R4,7AH</p><p> MOV C,37H ;將△
108、Ui值的符號位送24H</p><p><b> MOV 24H,C</b></p><p> LCALL SJF ;調(diào)用雙字節(jié)帶符號加法子程序</p><p> JNB 25H,PD3 ;判斷計算結(jié)果是否為負(fù)</p><p&g
109、t; MOV 7BH,#00H ;如果是負(fù)數(shù),則輸出電壓為0</p><p> MOV 7CH,#00H</p><p><b> SJMP PID4</b></p><p> PD3:MOV 7BH,R5 ;否則,將計算得到的Ui值置7BH,7CH<
110、/p><p> MOV 7CH,R6</p><p> PD4:MOV 6DH,6CH ;數(shù)據(jù)迭代,ei-1值送ei-2存儲單元</p><p> MOV 6CH,6BH ;ei值送ei-1存儲單元</p><p> MOV 7DH,7BH
111、 ;Ui值送Ui-1存儲單元</p><p> MOV 7EH,7CH</p><p><b> RET</b></p><p><b> PD ENDP</b></p><p> DJF PROC NEAR</p><p> DFJ:JB 20H,D
112、FJ4 ;判斷被減數(shù)正負(fù),如果為正,跳至DJF4</p><p> JB 21H,DFJ2 ;被減數(shù)為正,在判斷減數(shù)的正負(fù)</p><p> CLR C ;兩數(shù)均為正,被減數(shù)減去減數(shù)</p><p><b> MOV A,R
113、1</b></p><p><b> SUBB A,R2</b></p><p><b> MOV R3,A</b></p><p> JC DFJ1 ;如不夠減,跳至DJF1,求補</p><p> CLR 22H
114、 ;夠減,差為正,符號位置0</p><p><b> RET</b></p><p> DJF1:MOV A,R3 ;求補</p><p><b> CPL A</b></p><p> ADD A,#01H</
115、p><p><b> MOV R3,A</b></p><p> SETB 22H ;差為負(fù),符號位置1</p><p><b> RET</b></p><p> DJF2:MOV A,R1 ;被減數(shù)為正,減數(shù)
116、為負(fù),兩數(shù)的絕對值相加</p><p><b> ADD A,R2</b></p><p><b> MOV R3,A</b></p><p><b> JNC DFJ3</b></p><p> MOV R3,#0FFH ;如果超過
117、FFH,則設(shè)為FFH</p><p> DJF3:CLR 22H ;差為正,符號位置0</p><p><b> RET </b></p><p> DJF4:JB 21H,DJF6 ;被減數(shù)為負(fù),再判斷減數(shù)正負(fù)</p><p>
118、 MOV A,R1 ;被減數(shù)為負(fù),減數(shù)為正,兩數(shù)絕對值相加</p><p><b> ADD A,R2</b></p><p><b> MOV R3,A</b></p><p><b> JNC DJF5</b></p><p&
119、gt; MOV R3,#0FFH ;如果超過FFH,則設(shè)為FFH</p><p> DJF5:SETB 22H ;差為負(fù),符號位置1</p><p><b> RET</b></p><p> DJF6:CLR C
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計---溫度控制系統(tǒng)設(shè)計
- 課程設(shè)計---溫度控制系統(tǒng)設(shè)計
- 溫度控制系統(tǒng)設(shè)計課程設(shè)計
- 微機(jī)課程設(shè)計---溫度控制系統(tǒng)
- 溫度顯示控制系統(tǒng)課程設(shè)計
- 溫度顯示控制系統(tǒng)課程設(shè)計
- 溫度控制系統(tǒng)課程設(shè)計--儲液罐溫度控制系統(tǒng)
- plc課程設(shè)計----爐窯溫度控制系統(tǒng)設(shè)計
- 【課程設(shè)計】烤箱溫度控制系統(tǒng)進(jìn)行設(shè)計
- 溫度顯示控制系統(tǒng)課程設(shè)計.doc
- 建筑智能溫度控制系統(tǒng)課程設(shè)計
- 單片機(jī)課程設(shè)計--溫度控制系統(tǒng)設(shè)計
- 單片機(jī)溫度控制系統(tǒng)課程設(shè)計
- 課程設(shè)計-鍋爐過熱蒸汽溫度控制系統(tǒng)
- 課程設(shè)計--單片機(jī)溫度控制系統(tǒng)
- 計算機(jī)溫度控制系統(tǒng)課程設(shè)計
- 微機(jī)控制課程設(shè)計--電阻爐溫度控制系統(tǒng)設(shè)計
- 計算機(jī)溫度控制系統(tǒng)課程設(shè)計
- 課程設(shè)計----電阻爐溫度控制系統(tǒng)
- 課程設(shè)計---鍋爐過熱蒸汽溫度控制系統(tǒng)
評論
0/150
提交評論