引言 在工業(yè)污水處理過程中,常常需要對現(xiàn)場的排污水流量、水質(zhì)量等參數(shù)進行監(jiān)測,通過采集污水流量、水質(zhì)參數(shù)如TOC、COD等數(shù)據(jù)進行隨時了解,從而分析排污水流量是否超標,診斷水質(zhì)受污染的程度。現(xiàn)在常用的數(shù)據(jù)采集方式是通過數(shù)據(jù)采集板卡來進行數(shù)據(jù)的接入。但采用板卡不僅安裝麻煩、易受機箱內(nèi)環(huán)境的干擾,而且由于受計算機插槽數(shù)量和地址、中斷資源的限制,不可能掛接很多設(shè)備。一般的基于單任務(wù)順序機制的單片機數(shù)據(jù)采集系統(tǒng)又很難勝任于穩(wěn)定性、實時性要求很高的場合。基于此,本文設(shè)計了一種基于PHILLIS公司 ARM7處理器LPC2138的嵌入式、多任務(wù)數(shù)據(jù)采集系統(tǒng)。很容易就能實現(xiàn)低成本、高可靠性、多點的數(shù)據(jù)采集。 1 系統(tǒng)總體結(jié)構(gòu)設(shè)計 圖 1為系統(tǒng)結(jié)構(gòu)總體框圖,此嵌入式數(shù)據(jù)采集系統(tǒng)核心部分為圖中的核心板部分,其中嵌入了數(shù)據(jù)采樣/控制模塊,遠程通信模塊,計算模塊及報警邏輯等功能模塊。其主控制芯片為ARM7處理器LPC2138,芯片內(nèi)部內(nèi)置了寬范圍的串行通信接口和512kB的Flash存儲系統(tǒng),該存儲器可用作代碼和數(shù)據(jù)的存儲。對Flash存儲器的編程可通過以下幾種方法來實現(xiàn):通過內(nèi)置的串行JTAG 接口,通過在系統(tǒng)編程(ISP)和UART0,或通過在應(yīng)用編程(IAP)。使用在應(yīng)用編程的應(yīng)用程序也可以在應(yīng)用程序運行時對Flash進行擦除或編程。在本系統(tǒng)中使用了在應(yīng)用程序運行時對Flash進行擦除和編程,使用這種方法為數(shù)據(jù)存儲和現(xiàn)場固件的升級都帶來了極大的靈活性。故此LPC 2138非常適合于嵌入式系統(tǒng)的開發(fā)和應(yīng)用,并提供了大規(guī)模的緩沖區(qū)和強大的處理功能。 ![]() 圖1 系統(tǒng)結(jié)構(gòu)總體框圖 2 系統(tǒng)硬件設(shè)計介紹 系統(tǒng)中除了基本的電源電路、復(fù)位電路、系統(tǒng)時鐘電路,系統(tǒng)存儲器電路外,主要電路有按鍵電路、顯示電路。按鍵電路、顯示電路實現(xiàn)系統(tǒng)的基本人機交互界面。 2.1 數(shù)據(jù)采集系統(tǒng)總體描述 如圖1所示,數(shù)據(jù)采集系統(tǒng)置于監(jiān)測儀器設(shè)備(如有機污染監(jiān)測儀,流量計,PH計等)處。設(shè)備所檢測到的數(shù)據(jù)(如COD,TOC,流量等)通過相應(yīng)監(jiān)測儀器的輸出端子輸入到本系統(tǒng)的串口模塊(或狀態(tài)量模塊或其他采集模塊),經(jīng)過內(nèi)嵌入核心板的計算模塊,經(jīng)過數(shù)據(jù)處理后,通過GPRS模塊或ADSL就可以進行遠程數(shù)據(jù)傳輸,將處理后的結(jié)果傳送給遠端的上位機。只要在線監(jiān)測儀器生產(chǎn)廠家提供相關(guān)數(shù)據(jù)通訊協(xié)議就可增加相關(guān)儀器數(shù)據(jù)采集功能,直接存儲、顯示COD、 pH等數(shù)據(jù),同時本系統(tǒng)還支持數(shù)據(jù)查詢,指標超標報警等功能。 2.2 數(shù)據(jù)存儲部分 在本系統(tǒng)中,采用Flash存儲,存儲內(nèi)容包括了以下內(nèi)容:流量計槽型,槽號,槽高,瞬間值,累計流量;系統(tǒng)當前時間;各種污染物的上下限參數(shù);定時上報時間;實時上報時間間隔;TOC/PH采集頻率;測量數(shù)據(jù)。 數(shù)據(jù)根據(jù)時間順序存儲,30秒為1個記錄。如果某個儀器沒有數(shù)據(jù)則其數(shù)據(jù)位為以符號“-”表示。數(shù)據(jù)存儲在EEPROM物理位置如下: ![]() 2.3人機界面設(shè)計 此本分主要完成人機對答,數(shù)據(jù)查詢,定時發(fā)送和定時采集時間設(shè)定等功能。實現(xiàn)人機智能化操作的目的。 ![]() 圖2系統(tǒng)啟動界面(左)和啟動成功后系統(tǒng)運行界面(右) 其中“TFFFF”5位表示如下(從左至右): 是否登陸到中心 T(是)/F(否) 流量通信是否正常 T(是)/F(否) PH通信是否正常 T(是)/F(否) TOC通信是否正常 T(是)/F(否) 備用 T(是)/F(否) ![]() 圖3定時采樣界面(左)和實時上報時間問隔設(shè)置界面(右) 3 系統(tǒng)軟件實現(xiàn) 整個數(shù)據(jù)采集系統(tǒng)的軟件大致要完成3個部分的工作:系統(tǒng)的初始化代碼、uc/OS-II移植、應(yīng)用任務(wù)的編寫。以下分別對各部分要點進行說明。 3.1 系統(tǒng)的初始化代碼編寫流程 在嵌入式系統(tǒng)中,啟動時用于完成初始化操作的這段代碼被稱為Boot.loader程序。通過這段程序,可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖。從而將系統(tǒng)的軟硬件環(huán)境設(shè)定在一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核、運行用戶應(yīng)用程序準備好正確環(huán)境。本系統(tǒng)的 Boot.loader流程圖如圖4所示。 ![]() 圖4 Boot.loader流程圖 3.2 操作系統(tǒng)uc/OS-II在LPC2138上的移植 系統(tǒng)采用的操作系統(tǒng)為uc/OS-II。uc/OS-II是一種源碼公開的實時嵌入式操作系統(tǒng)。它是一種占先式的實時內(nèi)核,是基于優(yōu)先級的,即總是讓就緒態(tài)中優(yōu)先級最高的任務(wù)先運行,因此實時性比非占先式的內(nèi)核要好。它包含了實時內(nèi)核、任務(wù)管理、時間管理、任務(wù)間通信同步(信號量、郵箱、消息隊列)和內(nèi)存管理等功能:它的絕大部分代碼是用C語言編寫的,可移植性強。要使uc/OS-II正常運行,處理器需要滿足以下要求: ● 處理器的 C編譯器能產(chǎn)生可重入代碼; ● 用C語言就可以打開和關(guān)閉中斷; ● 處理器支持中斷,并且能產(chǎn)生定時中斷(通常在 10至 100Hz之間); ● 處理器支持能夠容納一定量數(shù)據(jù)(可能是幾千字節(jié))的硬件堆棧; ● 處理器有將堆棧指針和其它 CPU寄存器讀出和存儲到堆棧或內(nèi)存中的指令; uC/OS-II在LPC2138上的移植所采用的編譯器為ARM ADS自帶的C語言編譯器。具體做法主要包括:聲明10個與編譯器相關(guān)的數(shù)據(jù)類型(包括堆棧的數(shù)據(jù)類型),用#define設(shè)置一個常量 (OS_CPU.H),表明堆棧的增長方向;用C語言編寫6個與操作系統(tǒng)相關(guān)的函數(shù)(OS_CPU_C.C);任務(wù)堆棧初始化函數(shù);用匯編語言編寫4個與處理器相關(guān)的函數(shù)和5個鉤子函數(shù): ● OSStartHighRdy0,用于在調(diào)度中使最高優(yōu)先級的任務(wù)處于就緒態(tài)并開始執(zhí)行,uC/OS-II啟動時使用OSStartHighRdy運行第一個任務(wù); ● OSCtxSw0。完成任務(wù)級的上下定義切換; ● OSIntCtxSw0。完成中斷級任務(wù)切換,其過程與OSCaSw0類似。只是在執(zhí)行中斷服務(wù)子程序后可能使更高優(yōu)先級的任務(wù)處于就緒態(tài),即中斷退出時的入口; ● SoftwareInterrupt是軟件中斷,用于提供一些系統(tǒng)服務(wù)。 3.3 應(yīng)用程序的編寫 此部分主要是完成通信協(xié)議的編寫及注冊任務(wù)等工作,但不是系統(tǒng)所必須的。 4 實際測試結(jié)果 以下是采用型號為OPM-410A的有機污染監(jiān)測儀監(jiān)測到的COD數(shù)據(jù)與本嵌入式系統(tǒng)采集 COD數(shù)據(jù)對比。 表1 OPM-410A與本系統(tǒng)實測數(shù)據(jù)對比(單位:mg / L) ![]() 表1中 COD1 是指型號為OPM-410A有機污染監(jiān)測儀監(jiān)測到的COD數(shù)據(jù)數(shù)值; COD2 是采用本嵌入式系統(tǒng)所采集的數(shù)據(jù)數(shù)值;誤差=COD2-COD1; 表1中的數(shù)據(jù)僅僅是本系統(tǒng)在實際測試過程中所采集到的一部分,從表中可以看出,本系統(tǒng)所采集到的數(shù)據(jù)低于監(jiān)測儀器采集到的數(shù)據(jù),誤差不低于-5mg/L,可以滿足環(huán)保部分對有機污染監(jiān)測的要求,達到預(yù)期的效果。 結(jié)束語 本嵌入式數(shù)據(jù)采集系統(tǒng)采用了基于ARM7的LPC2318處理器,可以使系統(tǒng)小型化,便于提高性能,降低成本,同時本系統(tǒng)基于uc/OS-II操作系統(tǒng),應(yīng)用程序的編寫以任務(wù)為單元,實現(xiàn)了數(shù)據(jù)采集等多任務(wù)的管理與調(diào)度。另外本系統(tǒng)對具體的不同環(huán)境下的應(yīng)用可通過適當增減任務(wù)來實現(xiàn),從而可以廣泛應(yīng)用于各種數(shù)據(jù)采集場合。 本文作者創(chuàng)新點:本文利用開源的uc/OS-II操作系統(tǒng),在arm7處理器LPC2138上實現(xiàn)插件式的多點數(shù)據(jù)采集,可通過多任務(wù)的管理和調(diào)度來實現(xiàn)工業(yè)污水排放量、TOC/COD,PH等數(shù)據(jù)的采集,并實時將采集到的數(shù)據(jù)傳送至環(huán)保監(jiān)控部門的上位機,同時可實現(xiàn)數(shù)據(jù)存儲及查詢等功能。 作者:蔣梁中,許勇,卞青青 來源:《微計算機信息》(嵌入式與SOC)2009年第5-2期 |