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