目前,,國內(nèi)應(yīng)用最多的是以51系列單片機(jī)為主的8位單片機(jī),。在51系列單片機(jī)系統(tǒng)中,可以進(jìn)行移植的嵌入式操作系統(tǒng)為數(shù)不多,。其中,,Keil自帶的RTX51沒有源代碼,使用起來很不方便;uC/OSII雖然有源代碼,,也有移植成的例子,但是,,它對于51系列單片機(jī)系統(tǒng)的資源占用過大,,需要外擴(kuò)RAM,而且要保證每個函數(shù)的可重入性,,使用起來比較勉強(qiáng),。Small RTOS51是專門為小RAM系統(tǒng)設(shè)計的占先式內(nèi)核,占用資源少,、實時性好,,應(yīng)用在本系統(tǒng)上非常合適。
1 系統(tǒng)功能及硬件描述
1.1 系統(tǒng)的功能描述
對于處于昏迷狀態(tài)或食道進(jìn)行手術(shù)的病人,,需要一種按時,、按量對病人進(jìn)行腸營養(yǎng)液輸入的智能型腸營養(yǎng)液輸液泵,以達(dá)到維持病人生命的目的,。本文介紹的智能型腸營養(yǎng)輸液泵(以下簡稱營養(yǎng)泵)主要實現(xiàn)以下功能:
根據(jù)要求,,可以設(shè)定輸入營養(yǎng)液的總量、流速,、溫度等參數(shù),,并且在運(yùn)行過程中可以任意修改;
根據(jù)指令,自動檢測和控制營養(yǎng)液的流量和流速,,并將數(shù)據(jù)反饋給主程序;
根據(jù)設(shè)定營養(yǎng)液的溫度,,自動檢測和控制營養(yǎng)液的溫度,并將溫度數(shù)據(jù)反饋給主程序;
在出現(xiàn)營養(yǎng)液的溫度,、流量和流速異常時,,發(fā)出聲,、光報警信號;
使用LCD顯示各種數(shù)據(jù),隨時查看已經(jīng)輸入營養(yǎng)液的數(shù)量,、溫度,、流量和流速;
營養(yǎng)泵主要由220VAC供電,同時備有應(yīng)急充電電池,,一次充電可以連續(xù)運(yùn)行12小時以上,,以備醫(yī)院緊急停時使用。
1.2 系統(tǒng)的硬件描述
本營養(yǎng)泵的電路原理框圖如圖1所示,。

系統(tǒng)的主控CPU采用Philips公司的89C51RD2,,實現(xiàn)系統(tǒng)的多任務(wù)控制;LCD采用北京青云的LCM12232B液晶模塊,顯示液體的控制參數(shù);控制溫度的DAC采用TI公司的TLC5615,,使?fàn)I養(yǎng)液溫度誤差達(dá)到0.1℃以內(nèi);電池容量和溫度的反饋值均為模擬電壓,,采用A/D,轉(zhuǎn)換后,,送入CPU;A/D轉(zhuǎn)換器使用的是TI公司的TLC1543;應(yīng)急電池充電電路,,采用Linear公司的LTC4006,充電電壓為12.6V,,電池容量為4000mAh;營養(yǎng)液流量反饋,,采用紅外線對管,直接由CPU記數(shù);營養(yǎng)泵電機(jī)使用直流電動機(jī),,采用控制電機(jī)運(yùn)行和停止時間的方法對轉(zhuǎn)速進(jìn)行閉環(huán)控制,,以達(dá)到控制液體流量的目的。
關(guān)鍵字:Small RTOS51 營養(yǎng)液輸液系統(tǒng)
2 Small RTOS51簡介
Small RTOS51是一個專門為51系列單片機(jī)設(shè)計的嵌入式實時操作內(nèi)核,,使用Keil編譯器可以直接使用其代碼,,它有如下特點(diǎn)。
公開源代碼,。只要遵循許可協(xié)議,,任何人可以免費(fèi)獲得源泉代碼,便于用戶的二次開發(fā),。
可移植性,。用戶可以把與CPU有關(guān)的控制指令壓縮到最小,把大部分精力放在CPU的控制程序上,??梢允褂肁NSI C編寫應(yīng)用程序,不僅簡化了編程手段,,而且便于程序移植,。
可固化性。Small RTOS51為嵌入式系統(tǒng)設(shè)計,可以嵌入到產(chǎn)品中,,成為產(chǎn)品的一部分,。
占先式運(yùn)行。Small RTOS51可以管理16個用戶任務(wù),,每個任務(wù)可以設(shè)置不同的優(yōu)先級,。Small RTOS51總是運(yùn)行優(yōu)先級最高的任務(wù)。
中斷管理,。采用中斷管理方式,,當(dāng)有更高級的中斷申請時,將目前正在執(zhí)行的任務(wù)掛起,。如果優(yōu)先級更高的任務(wù)被中斷喚醒,,則高優(yōu)先級的任務(wù)在中斷嵌套結(jié)束后立刻執(zhí)行。中斷嵌套層數(shù)可達(dá)255層,。如果需要,,還可以禁止中斷的嵌套管理。
RAM需求小,。SmallRTOS51為小RAM的系統(tǒng)設(shè)計,,因而對RAM的需求只有幾百字節(jié),相應(yīng)的系統(tǒng)服務(wù)也少,。
3 系統(tǒng)的軟件實現(xiàn)
按照系統(tǒng)所要實現(xiàn)的功能,,將整個系統(tǒng)劃分為幾個并行的任務(wù),占先式操作內(nèi)核對任務(wù)的調(diào)度是按照任務(wù)優(yōu)先權(quán)的高低進(jìn)行,。本文中,將系統(tǒng)劃分為9個任務(wù),,按其優(yōu)先級從高到低的順序排列依次是:報警任務(wù),、溫控任務(wù)、按鍵輸入任務(wù),、主控制任務(wù),、電機(jī)運(yùn)行任務(wù)、流量控制任務(wù),、記時任務(wù),、液晶顯示任務(wù)和電池電量檢測任務(wù)。系統(tǒng)上電以后進(jìn)入主程序,,首先對系統(tǒng)進(jìn)行自檢并任務(wù),,啟動9個程,此時系統(tǒng)的運(yùn)行就由Small RTOS51來接管,。
3.1 報警任務(wù)
由于本文所述的營養(yǎng)泵,,主要應(yīng)用在危重病人的看護(hù)中,所以將報警任務(wù)在放在最重要的位置。報警程序由一個全局變量setbaojing來控制,,其不斷檢測溫控程序,、流量控制程序和電池電量檢測程序的輸出值。當(dāng)上述程序出現(xiàn)故障報警信號時,,setbaojing為1,,報警程序立即使蜂鳴器和報警燈工作,并在液晶屏幕上顯示出現(xiàn)故障的名稱,,直到有人來清除故障后,,才可以正常運(yùn)行。
3.2 溫控任務(wù)
由于人體對于溫度的變化非常敏感,,而腸營養(yǎng)液是直接輸入到人的小腸當(dāng)中,,所以系統(tǒng)對溫度的要求非常高,為此,,本系統(tǒng)將溫控任務(wù)放在第二位,。先將設(shè)定的溫度參數(shù)輸入給CPU,經(jīng)過PI計算,,發(fā)出數(shù)字信號,,再用TLC5615轉(zhuǎn)換成模擬量,控制加溫電路給營養(yǎng)液加溫,。營養(yǎng)液的實際溫度,,由溫度反饋電路轉(zhuǎn)換成電壓信號,再通過A/D轉(zhuǎn)換成數(shù)字信號反饋給CPU,,由CPU進(jìn)行閉環(huán)控制,。
3.3 控制輸入任務(wù)
按鍵是實現(xiàn)人機(jī)交互的重要設(shè)備,要求實時性較高,。從系統(tǒng)軟件的設(shè)計角度,,不僅要讀出按鍵的狀態(tài),還需要具有對按鍵的抖動,、連擊,、串鍵等特殊情況進(jìn)行處理。系統(tǒng)按鍵輸入任務(wù)流程如圖2所示,,本任務(wù)使用消息隊列指令KeyReadBuf[16],,向主控制程序發(fā)送按鍵的相關(guān)信息。

3.4 主控制任務(wù)
主控制任務(wù)應(yīng)用SmallRTOS51提供的系統(tǒng)函數(shù)OSQPend(KeyTemp,KeyRead Buf,0)來查錄按鍵輸入任務(wù)提供的信息,,一旦發(fā)覺KeyReadBuf[16]中有了相關(guān)信息,,立刻運(yùn)行輸入程序。根據(jù)按鍵的命令,,控制電機(jī)運(yùn)行程序,、流量控制程序,、液晶顯示程序的運(yùn)行及停止,每當(dāng)有一組按鍵信息進(jìn)入消息隊列中,,本程序就修改一次運(yùn)行指令,。
3.5 電機(jī)運(yùn)行任務(wù)
電機(jī)運(yùn)行任務(wù)一直處于等待的狀態(tài),當(dāng)主控制程序給它發(fā)關(guān)字相應(yīng)的指令才開始運(yùn)行,。在運(yùn)行過程中,,電機(jī)運(yùn)行任務(wù)受到主控制程序和流量控制程序的控制,一旦有停止運(yùn)行的命令,,或流量有異常,,就立刻停止電機(jī)的運(yùn)行。
3.6 流量控制任務(wù)
液量控制任務(wù)主要由CPU來控制輸入營養(yǎng)液的流量及流速,。正常運(yùn)行情況下,,流量控制程序會向液晶顯示程序發(fā)送流量及流速的信息,使液晶上顯示已經(jīng)輸入營養(yǎng)液的數(shù)量,、流量及流速,。一旦發(fā)生異常情況,如流速過快,、一段時間營養(yǎng)液沒有流動等故障,,立刻向電機(jī)運(yùn)行程序發(fā)出指令,停止電機(jī)的運(yùn)行,,同時將setbaojing置1,,使報警程序運(yùn)行。
3.7 記時任務(wù)
記時任務(wù)主要是為系統(tǒng)提供一個同步時鐘,,為系統(tǒng)提供同步運(yùn)行的基準(zhǔn),。
3.8 液晶顯示任務(wù)
液晶顯示任務(wù)主要由主控制程序、報警程序,、流量控制程序,、電池電量檢測程序傳遞到消息隊列中的參數(shù)。通過運(yùn)行顯示程序,,在液晶上顯示相關(guān)的漢字和字符,,本身不向其它任務(wù)發(fā)送命令,。
3.9 電池電量檢測任務(wù)
一旦發(fā)生220VAC市電斷電的情況,,營養(yǎng)泵會立刻自動切換到內(nèi)置的鋰電池供電,電池可以連續(xù)使用12小時以上,。電池電量檢測程序會自動運(yùn)行,,檢測電池的電量。在電量低的情況,,電池電量檢測程序會發(fā)出報警信號,,但不會主動停止系統(tǒng)的運(yùn)行,。
4 試驗數(shù)據(jù)
用本文所述的智能腸營養(yǎng)液泵對目前市場上常用的幾種營養(yǎng)袋進(jìn)行實驗。
以上實驗數(shù)據(jù)表明,,本智能腸營養(yǎng)液泵的輸液量精度遠(yuǎn)遠(yuǎn)高于目前市場上10%的通用標(biāo)準(zhǔn),,并且對各種品牌的營養(yǎng)液袋都能控制在足夠的精度范圍內(nèi)。
結(jié)語
在腸營養(yǎng)液泵的設(shè)計中,,使用了Small TROS51,,大大簡化了程序設(shè)計的難度,增強(qiáng)了系統(tǒng)的可靠性和安全性,,滿足系統(tǒng)實時性要求,。本設(shè)計達(dá)到了國家標(biāo)準(zhǔn),并且已經(jīng)在臨庫中開始使用.