何良斌 王 健
(杭州電子科技大學(xué)電子信息學(xué)院,浙江 杭州 310018)
基于uCOS-II的PID溫度控制系統(tǒng)
何良斌 王 健
(杭州電子科技大學(xué)電子信息學(xué)院,浙江 杭州 310018)
文章提出了一種基于實時操作系統(tǒng)uCOS-II的PID溫度控制系統(tǒng)的實現(xiàn)方案。該方案以飛思卡爾16位單片機(jī)MC9S12XDG128為硬件平臺,結(jié)合uCOS-II的實時性、可靠性以及PID控制的非線性、時變性等優(yōu)點,通過實驗成功的實現(xiàn)了對溫度的精確控制。系統(tǒng)具有成本低、可移植性強(qiáng)、可靠性好、易擴(kuò)展等優(yōu)點,可以適用一般的溫度控制場合。
實時操作系統(tǒng);PID控制;溫度控制
近年來,像化工、冶金、糧食儲存、酒類生產(chǎn)、電子設(shè)備等領(lǐng)域,溫度常常是表征對象和過程狀態(tài)的重要參數(shù)之一,因此,溫度控制系統(tǒng)具有廣泛的應(yīng)用前景和實際意義。采用微控制器對系統(tǒng)進(jìn)行控制具有控制方便、簡單、靈活性大等特點,然而采用傳統(tǒng)的前后系統(tǒng)當(dāng)大部分算法和邏輯運算都集中在微控制器時,程序的規(guī)模將變得很大,在系統(tǒng)功能較復(fù)雜,尤其是系統(tǒng)中的并發(fā)模塊較多的情況下,就很難保證測量和控制的實時性;另外,像溫度這樣一個具有非線性、大滯后、大慣性、時變性、升溫單向性等特點的控制對象,很難用數(shù)學(xué)方法建立精確地數(shù)學(xué)模型,用傳統(tǒng)的控制理論和方法很難達(dá)到好的控制效果。因此,本文設(shè)計了一種基于實時操作系統(tǒng)uCOS-II的PID溫度控制系統(tǒng),采用飛思卡爾的16位單片機(jī)MC9S12XDG128為微控制器,能夠滿足實時性好、精確度高、穩(wěn)定性好等要求的溫度控制場合。
整個系統(tǒng)由三部分組成:硬件層、操作系統(tǒng)層和應(yīng)用軟件層。MCU通過采樣電路實時采集溫度等現(xiàn)場數(shù)據(jù),并進(jìn)行數(shù)據(jù)處理和運算,得到輸出控制信號,輸出適當(dāng)寬度的 PWM脈沖信號,經(jīng)驅(qū)動放大后,實時控制加熱棒。整個系統(tǒng)的運行如信號采集、輸出脈沖、溫度報警、與上位機(jī)通信等都由操作系統(tǒng)調(diào)度,它是整個系統(tǒng)中上層控制和下層硬件系統(tǒng)的連接紐帶。
硬件電路框圖如圖1所示。控制核心為MC9S12XDG128,該MCU具有豐富的片內(nèi)資源:128KB的Flash,8路10位ADC,3個CAN協(xié)議控制器,8個可編程PWM通道,2個串行異步通信接口,2個同步串行外設(shè)接口SPI,一個I2C總線接口等,正因為有這么豐富的資源從而可以很容易進(jìn)行功能擴(kuò)展。同時,它具有很強(qiáng)的邏輯控制功能,完全可以取代信號處理和邏輯運算等硬件電路,這樣一方面大大減少了外部硬件電路受干擾的可能,提高抗干擾性,另一方面只需改變程序就能改變算法,提高了控制能力。
系統(tǒng)控制的好壞關(guān)鍵在AD的轉(zhuǎn)換精度,本文采用具有高精度、低噪聲的24位模數(shù)轉(zhuǎn)換器AD7190。MCU通過同步串行口SPI與AD7190通信,將轉(zhuǎn)換的數(shù)字化電壓值傳入微控制器,進(jìn)行后續(xù)計算得到相應(yīng)的溫度值。重要的是AD7190具有零延遲的特性,可以很好的實現(xiàn)實時性。
在溫度檢測裝置中采用鉑熱電阻Pt100,它具有其他任何溫度傳感器無法比擬的優(yōu)勢,包括高精度、穩(wěn)定性好、抗干擾能力強(qiáng)等,因而被廣泛用于中溫(-200~650℃)范圍的溫度測量中。由于鉑電阻的電阻值與溫度成非線性關(guān)系,所以需要進(jìn)行非線性校正。本文采用微處理器數(shù)字化校正,將Pt電阻的電阻值和溫度對應(yīng)起來后存入EEPROM中,根據(jù)電路中實測的AD值以查表方式計算相應(yīng)溫度值。
整個硬件工作流程如下:首先將 Pt100采到的對應(yīng)電壓值,經(jīng)過AD轉(zhuǎn)換后,將數(shù)字量傳給MCU,MCU根據(jù)數(shù)字量查表得到相應(yīng)的溫度值,PID控制器根據(jù)溫度值與目標(biāo)值之間的關(guān)系得到相應(yīng) PWM的輸出占空比,控制加熱棒,達(dá)到控制溫度目的,并在8位LED上顯示目標(biāo)溫度和實際溫度,當(dāng)實際溫度達(dá)到報警溫度時,就會產(chǎn)生報警以便人工及時處理情況。其中可以通過鍵盤或者PC設(shè)置目標(biāo)溫度值和報警溫度值,還可以通過通信接口與PC機(jī)或其他系統(tǒng)進(jìn)行通信。

圖1 硬件電路框圖
1.uCOS-II實時操作系統(tǒng)
傳統(tǒng)以單片機(jī)為核心的測控系統(tǒng),其程序一般采用前后臺的方式編寫。后臺運行一個大的無限循環(huán),循環(huán)中調(diào)用相應(yīng)的函數(shù)完成相應(yīng)的操作;前臺為多個中斷,處理異步事件。這種傳統(tǒng)的單片機(jī)開發(fā)工作中經(jīng)常遇到程序跑飛或是陷入死循環(huán),前者可以用看門狗解決,但對于死循環(huán),尤其是其中牽扯到復(fù)雜數(shù)學(xué)計算的話,只有設(shè)置斷點,耗費大量時間來慢慢分析。也因為無法確定發(fā)生中斷時程序到底執(zhí)行到了什么地方,從而無法判斷要經(jīng)過多長時間數(shù)據(jù)處理程序才會執(zhí)行,中斷響應(yīng)時間無法確定,使得系統(tǒng)的實時性不強(qiáng)。
uCOS-II是由Labrosse先生編寫的一個源碼公開、可移植、可固化、可裁剪、占先式實時多任務(wù)操作系統(tǒng)。雖然uCOS-II會占據(jù)一定的空間,但目前的單片機(jī)空間已經(jīng)足夠,而且其利遠(yuǎn)大于弊。基于 uCOS-II的應(yīng)用程序編寫就變得比較簡單,將系統(tǒng)功能劃分為一個個任務(wù),每個任務(wù)相對獨立,可以定義多達(dá)64個任務(wù),足夠一般系統(tǒng)使用。任務(wù)之間以及任務(wù)與中斷服務(wù)程序之間可以調(diào)用信號量、消息郵箱、消息隊列、延時等系統(tǒng)服務(wù)來實現(xiàn)彼此通信和同步。這一切有操作系統(tǒng)統(tǒng)一調(diào)度,分配資源,協(xié)調(diào)各個任務(wù)的運行。當(dāng)某一個任務(wù)出現(xiàn)問題也不會導(dǎo)致整個系統(tǒng)癱瘓,從而提高了系統(tǒng)的可靠性。同時,使系統(tǒng)更加容易更新以及擴(kuò)展新的功能,提高了系統(tǒng)的開放性和開發(fā)效率。
2.PID控制算法
在工程控制中,按偏差的比例(P)、積分(I)和微分(D)進(jìn)行控制,簡稱PID控制器,亦稱PID調(diào)節(jié)器。它以其結(jié)構(gòu)簡單、穩(wěn)定性好、工作可靠、調(diào)整方便而成為工業(yè)控制的主要技術(shù)之一。它就是根據(jù)系統(tǒng)的誤差,利用比例、積分、微分計算出控制量進(jìn)行控制的,三個校正環(huán)節(jié)的作用各不相同。目前有三種應(yīng)用比較廣泛的 PID控制算法,分別是增量式算法、位置式算法、微分先行。模擬 PID控制器的原理框圖如圖2所示,其中r(t)為系統(tǒng)給定值,c(t)為實際輸出,u(t)為控制量。其控制表達(dá)式如下:

式中e(t)=r(t)-c(t)為系統(tǒng)偏差,Kp為比例系數(shù),Ti為積分時間常數(shù),Td為微分時間常數(shù)。

圖2 模擬控制器原理框圖
計算機(jī)控制是一種采樣控制,它只能根據(jù)采樣時刻的偏差值計算空置量,所以在數(shù)字系統(tǒng)中 PID算法只能數(shù)值逼近的方法實現(xiàn),用求和代替積分,用差分代替微分,得到數(shù)字PID控制器的控制表示式如下:

式中e(k)=r(k)-c(k),Ki=Kp*T/Ti,Kd=Kp*Td/T,其中T為控制周期。從而可以推出增量式PID的控制表達(dá)式為:

u(k) =u(k? 1 )+ Δu(k),這兩個式子就為本系統(tǒng)所采用的增量式PID控制器的數(shù)學(xué)模型。
確定好PID控制的結(jié)構(gòu)以后,需要進(jìn)行PID控制器的參數(shù)整定,PID參數(shù)整定有多種方法,本文采用的是臨界比例法。首先,預(yù)選擇一個足夠短的采樣周期;其次,僅加入比例控制環(huán)節(jié),直到系統(tǒng)對輸入的階躍響應(yīng)出現(xiàn)臨界振蕩,記下比例放大系數(shù)Kr和臨界振蕩周期Tr;最后,在一定的控制度下通過公式計算得到 PID控制器的參數(shù):Kp=0.63*Kr,Ti=0.49*Tr,Td=0.14*Tr。
3.軟件實現(xiàn)
系統(tǒng)的軟件結(jié)構(gòu)框圖如圖3所示。uCOS-II實時操作系統(tǒng)負(fù)責(zé)協(xié)調(diào)和調(diào)度各個任務(wù)。總使能任務(wù)負(fù)責(zé)其他任務(wù)的工作與否,采集任務(wù)負(fù)責(zé)采集溫度值,控制任務(wù)負(fù)責(zé)控制加熱棒,顯示任務(wù)負(fù)責(zé)顯示溫度值,鍵盤任務(wù)負(fù)責(zé)設(shè)置目標(biāo)溫度值,通信任務(wù)負(fù)責(zé)與PC之間的通信。

圖3 軟件結(jié)構(gòu)框圖
(1)總使能任務(wù)
控制其他任務(wù)的工作與否,這樣既便于擴(kuò)展功能,也利于對系統(tǒng)裁剪、可移植性好。
(2)采集任務(wù)
該任務(wù)主要用于采集溫度值。首先查看總使能是否有效,若有效則通過SPI接口讀取AD7190的數(shù)據(jù),然后將數(shù)據(jù)轉(zhuǎn)化為溫度值,進(jìn)行平均濾波,最后將數(shù)據(jù)放入消息隊列,供控制任務(wù)使用,其任務(wù)流程圖如圖4所示。
(3)控制任務(wù)
該任務(wù)是系統(tǒng)的核心,主要控制加熱棒。查看總使能是否有效,若有效則從消息隊列中取出數(shù)據(jù),對數(shù)據(jù)進(jìn)行 PID計算得到PWM占空比,輸出PWM波,從而控制加熱棒。其任務(wù)流程圖如圖5所示。

圖4 采集任務(wù)流程圖

圖5 控制任務(wù)流程圖
(4)通信任務(wù)
該任務(wù)一方面向PC機(jī)實時發(fā)送各類數(shù)據(jù),包括溫度值、PWM占空比、目標(biāo)值等;另一方面PC機(jī)可以向系統(tǒng)發(fā)送各類命令,包括設(shè)置目標(biāo)值、啟動還是停止等,從而達(dá)到控制的作用,使整個系統(tǒng)更加人性化。而其中的 CAN通信可以使系統(tǒng)與其他系統(tǒng)進(jìn)行通信。
4.實驗結(jié)果與結(jié)論
該系統(tǒng)在色譜分析儀上已成功實現(xiàn)溫度控制,其溫度控制范圍50~250℃,圖6、7是其中二個實驗結(jié)果曲線圖。圖6為被外界干擾下使溫度失衡,但系統(tǒng)通過PID調(diào)控制很快將溫度控制在100℃±0.2℃,并符合系統(tǒng)的精度要求。圖7為正常升溫過程,當(dāng)達(dá)到目標(biāo)溫度時會過沖,但通過 PID控制很快就將溫度控制在180℃±0.2℃。

圖6 100℃溫控實驗曲線

圖7 180℃溫控實驗曲線圖
從實驗結(jié)果可以看出,本文基于uCOS-II的PID溫度控制,結(jié)合uCOS-II和PID各自的優(yōu)點,達(dá)到了很好的控制效果。另外,該系統(tǒng)具有實時性好、系統(tǒng)穩(wěn)定、易移植、易擴(kuò)展等優(yōu)點,從而可以應(yīng)用在各個中溫控制場合,具有廣泛的應(yīng)用前景。
[1] Jean J.Labrosse著.嵌入式實時操作系統(tǒng)uC/OS-II(2版)[M].邵貝貝譯.北京:航空航天大學(xué)出版社,2003(5): 34-316.
[2] 王宜懷,劉曉升.嵌入式系統(tǒng)—使用 HC12微控制器的設(shè)計與應(yīng)用[M].北京:航空航天大學(xué)出版社,2008(3).
[3] 周立功.ARM與嵌入式系統(tǒng)基礎(chǔ)教程[M].廣州周立功單片機(jī)發(fā)展公司,2004.
[4] 馬忠梅.單片機(jī)的 C語言應(yīng)用程序設(shè)計[M].北京:北京航空航天大學(xué)出版社,1999.
[5] Robert Richards.Designing RTOS for Embedded Microcontrollers,Embedded systems Programming[M].May 1997.
TP302
A
1008-1151(2011)05-0037-02
2011-02-17
何良斌(1987-),男,浙江麗水人,杭州電子科技大學(xué)電子信息學(xué)院在讀研究生,研究方向嵌入式系統(tǒng)。