《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 數(shù)據(jù)采集監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
數(shù)據(jù)采集監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
來(lái)源:微型機(jī)與應(yīng)用2012年第11期
王 兵
(海軍計(jì)算技術(shù)研究所,北京 100841)
摘要: 提出了一個(gè)基于ARM架構(gòu)處理器和μC/OS-II操作系統(tǒng)的遠(yuǎn)程數(shù)據(jù)采集監(jiān)控系統(tǒng)的系統(tǒng)組成與結(jié)構(gòu),介紹了其μC/OS-II操作系統(tǒng)的移值方法,并對(duì)數(shù)據(jù)采集/控制器的軟件系統(tǒng)進(jìn)行了分析與設(shè)計(jì)。
Abstract:
Key words :

摘  要: 提出了一個(gè)基于ARM架構(gòu)處理器和μC/OS-II操作系統(tǒng)的遠(yuǎn)程數(shù)據(jù)采集監(jiān)控系統(tǒng)的系統(tǒng)組成與結(jié)構(gòu),介紹了其μC/OS-II操作系統(tǒng)的移值方法,并對(duì)數(shù)據(jù)采集/控制器的軟件系統(tǒng)進(jìn)行了分析與設(shè)計(jì)。
關(guān)鍵詞: 嵌入式系統(tǒng);遠(yuǎn)程監(jiān)控;系統(tǒng)結(jié)構(gòu)

 嵌入式系統(tǒng)是計(jì)算機(jī)系統(tǒng)應(yīng)用的重要發(fā)展方向之一。隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,嵌入式系統(tǒng)的設(shè)計(jì)開(kāi)發(fā)與應(yīng)用已步入一個(gè)全面發(fā)展的階段。由于嵌入式系統(tǒng)具有體積小、性能強(qiáng)、功耗低、可靠性高以及面向行業(yè)應(yīng)用的特點(diǎn),目前已經(jīng)廣泛地應(yīng)用于軍事國(guó)防、消費(fèi)電子、網(wǎng)絡(luò)通信、工業(yè)控制等領(lǐng)域。特別在數(shù)據(jù)采集與自動(dòng)化控制領(lǐng)域,嵌入式系統(tǒng)更是顯現(xiàn)了其得天獨(dú)厚的優(yōu)勢(shì)與魅力。
 進(jìn)行嵌入式系統(tǒng)應(yīng)用開(kāi)發(fā),開(kāi)發(fā)平臺(tái)的選擇非常重要。目前,基于ARM架構(gòu)的硬件平臺(tái)較為流行,產(chǎn)品資源非常豐富。而μC/OS-II是近年來(lái)發(fā)展迅速的開(kāi)放源碼實(shí)時(shí)操作系統(tǒng),具有良好的可移植性,因此,基于ARM架構(gòu)的處理器和μC/OS-II操作系統(tǒng)是進(jìn)行嵌入式應(yīng)用系統(tǒng)開(kāi)發(fā)的理想平臺(tái)。
1 系統(tǒng)組成結(jié)構(gòu)
1.1 系統(tǒng)功能與組成

 利用上述平臺(tái)本文設(shè)計(jì)實(shí)現(xiàn)了一個(gè)遠(yuǎn)程數(shù)據(jù)采集控制系統(tǒng),測(cè)量遠(yuǎn)程設(shè)備的環(huán)境溫度變化情況和電池電量,并能啟動(dòng)溫度控制器工作,在電池電量不足時(shí),向數(shù)據(jù)采集控制中心發(fā)送報(bào)警信息。系統(tǒng)實(shí)現(xiàn)的主要功能有:
?。?)定時(shí)檢測(cè)、采集遠(yuǎn)程設(shè)備環(huán)境溫度及供電電池電壓,并將數(shù)據(jù)發(fā)送到監(jiān)控中心;
 (2)在環(huán)境溫度超出預(yù)定范圍時(shí),啟動(dòng)溫控器工作,以保持設(shè)備環(huán)境溫度;
 (3)在電池電量不足時(shí),向監(jiān)控中心發(fā)送報(bào)警信息;
?。?)可本地設(shè)置、修改系統(tǒng)工作參數(shù),也可由監(jiān)控中心通過(guò)短信遠(yuǎn)程控制、設(shè)定系統(tǒng)工作參數(shù);
?。?)監(jiān)控中心將數(shù)據(jù)信息保存于數(shù)據(jù)庫(kù)中,并能對(duì)采集的數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,按預(yù)設(shè)參數(shù)決定是否需對(duì)遠(yuǎn)程設(shè)備進(jìn)行人工維護(hù);
 (6)數(shù)據(jù)采集/控制器工作異常時(shí),能向監(jiān)控中心發(fā)送報(bào)警信息,請(qǐng)求進(jìn)行人工維護(hù);
 (7)能將采集的溫度數(shù)據(jù)信息本地存儲(chǔ),系統(tǒng)通信失敗時(shí),可通過(guò)USB設(shè)備進(jìn)行轉(zhuǎn)儲(chǔ)。
系統(tǒng)組成關(guān)系如圖1所示。其中數(shù)據(jù)庫(kù)采用SQL Server 2000,用于存儲(chǔ)采集到的數(shù)據(jù)信息和遠(yuǎn)程設(shè)備工作、維護(hù)情況信息;數(shù)據(jù)采集控制中心采用工控機(jī)服務(wù)器、Windows Server2003,運(yùn)行數(shù)據(jù)采集控制軟件系統(tǒng),通過(guò)串口與GSM模塊相連,采用短信通信方式完成對(duì)遠(yuǎn)程設(shè)備的信息采集與管理控制;GSM模塊采用Siemens的TC35,通過(guò)短信實(shí)現(xiàn)遠(yuǎn)程信息的交互,可使系統(tǒng)建設(shè)與維護(hù)投資小,工作可靠;數(shù)據(jù)采集/控制器用以實(shí)現(xiàn)數(shù)據(jù)采集以及相應(yīng)設(shè)備的控制。

 監(jiān)控器核心板集成了2 MB SRAM和4 MB Flash存儲(chǔ)器和4×4鍵盤,還集成了所需的外設(shè)接口模塊,包括液晶顯示接口、USB接口模塊、A/D轉(zhuǎn)換模塊、2個(gè)RS232接口以及 DC/DC轉(zhuǎn)換等模塊。外接設(shè)備有GSM模塊、128×64液晶屏,U盤、電池電源、溫度傳感控制器等,其中液晶屏和U盤為選配設(shè)備,為降低系統(tǒng)成本與功耗,只在需要時(shí)配接相應(yīng)設(shè)備。
2 數(shù)據(jù)采集/控制器軟件系統(tǒng)設(shè)計(jì)
 在目前嵌入式實(shí)時(shí)操作系統(tǒng)中,μC/OS-II源碼公開(kāi)、結(jié)構(gòu)簡(jiǎn)單、移植性好,采用C語(yǔ)言和匯編語(yǔ)言實(shí)現(xiàn),其中絕大部分使用C語(yǔ)言,結(jié)構(gòu)非常簡(jiǎn)單;能很容易被移植到各種微處理器上,移植過(guò)程中,用戶只需做少量工作;支持實(shí)時(shí)多任務(wù),可裁剪、可固化,是一款優(yōu)秀的嵌入式操作系統(tǒng),以其為平臺(tái),用戶可以快速地開(kāi)發(fā)出自己的應(yīng)用系統(tǒng)。
2.1 μC/OS-II的移植
 以μC/OS-II為軟件平臺(tái)開(kāi)發(fā)應(yīng)用系統(tǒng),首先,要進(jìn)行ARM硬件平臺(tái)下的操作系統(tǒng)移植,對(duì)μC/OS-II與處理器有關(guān)的代碼進(jìn)行修改,主要工作有:
 (1)在系統(tǒng)文件OS_CPU.H中要定義10個(gè)不依賴于編譯的數(shù)據(jù)類型,以免與處理器類型產(chǎn)生關(guān)聯(lián),從而影響移植;定義OS_STK_GROWTH常量為1,指明堆棧的生長(zhǎng)方向?yàn)樽陨隙?;定義兩個(gè)宏OS_ENTER_CRITICAL()、OS_EXIT_CRITICAL(),以禁止和允許中斷,系統(tǒng)代碼訪問(wèn)臨界區(qū)前要先禁止中斷,訪問(wèn)完畢后重新允許中斷;定義宏OS_TASK_SW(),在任務(wù)級(jí)代碼中調(diào)用,使系統(tǒng)從低優(yōu)先級(jí)任務(wù)切換到高優(yōu)先級(jí)任務(wù)。
?。?)在OS_CPU_C.C文件中編寫6個(gè)C函數(shù) OSTaskStkInit()、OSTaskCreateHook()、OSTaskDelHook()、OSTaskSwHook()、OSTaskStatHook()、OSTimeTickHook()。OSTaskStkInit()用來(lái)初始化任務(wù)的堆棧結(jié)構(gòu),OSTaskCreateHook()允許用戶及使用特定移植實(shí)例的用戶擴(kuò)展μC/OS-II的功能,OSTaskDelHook()用于任務(wù)刪除時(shí)的系統(tǒng)調(diào)用,OSTaskSwHook()是發(fā)生任務(wù)切換時(shí)的調(diào)用函數(shù)。這些函數(shù)中只有OSTaskStkInit()是必需和函數(shù),其余函數(shù)必須聲明,但不一定需要包含代碼。
?。?)在OS_CPU_A.ASM文件中編寫4個(gè)匯編函數(shù):OSStartHighRdy()使就緒狀態(tài)的最高優(yōu)先級(jí)任務(wù)開(kāi)始運(yùn)行,OSCtxSw()用于任務(wù)級(jí)的任務(wù)切換,OSIntCtxSw()用于中斷級(jí)的任務(wù)切換,OSTickISR為內(nèi)核處理時(shí)鐘節(jié)拍的中斷處理函數(shù)。應(yīng)注意運(yùn)行OSStart()后,在系統(tǒng)啟動(dòng)的第一個(gè)任務(wù)中初始化節(jié)拍中斷。
?。?)主函數(shù)程序結(jié)構(gòu):在主程序中應(yīng)包含頭文件config.h,其中對(duì)最大任務(wù)數(shù)、信號(hào)量和郵箱等內(nèi)核參數(shù)進(jìn)行定制和配置,分配各任務(wù)的堆棧空間,主函數(shù)main()要先后調(diào)用OSInit(),變量初始化,創(chuàng)建各任務(wù),調(diào)用OSStart(),進(jìn)入實(shí)時(shí)多任務(wù)運(yùn)行狀態(tài)。主程序結(jié)構(gòu)如下:
#include “config.h”
 OS_STK   TaskStk[TASK_STK_SIZE];
 OS_STK   Task_Stk1[TASK_STK_SIZE];
   … … … /*為各任務(wù)分配堆??臻g*/
 main(void)
 {
 OSInit();
 OSTaskCreate(Task1,(void*)0,&Task_Stk1[TASK_STK_SIZE-1],0);
 … … … /*創(chuàng)建各任務(wù)*/
 OSStart();
 return 0;
 }
2.2 系統(tǒng)任務(wù)劃分與功能設(shè)計(jì)

 


 數(shù)據(jù)采集/控制器的軟件系統(tǒng)共劃分為6個(gè)主要任務(wù),按優(yōu)先級(jí)順序分別為控制任務(wù)、鍵盤任務(wù)、溫度監(jiān)測(cè)任務(wù)、串口通信任務(wù)、電量監(jiān)測(cè)任務(wù)、顯示任務(wù)。
?。?)控制任務(wù):?jiǎn)?dòng)系統(tǒng)各任務(wù)后,根據(jù)收到的鍵盤或短信命令,修改系統(tǒng)工作參數(shù),控制系統(tǒng)工作狀態(tài),溫度超過(guò)設(shè)定值時(shí),控制溫度控制器工作。
?。?)鍵盤任務(wù):通過(guò)鍵盤可以輸入控制命令、設(shè)置系統(tǒng)工作參數(shù)。鍵盤任務(wù)循環(huán)讀取鍵盤,將按鍵信息發(fā)送到控制任務(wù),任務(wù)處理過(guò)程中應(yīng)考慮到按鍵的抖動(dòng)等特殊情況的處理。
?。?)溫度監(jiān)測(cè)任務(wù):監(jiān)測(cè)環(huán)境溫度,按設(shè)置參數(shù)定時(shí)讀取經(jīng)過(guò)A/D轉(zhuǎn)換的溫度值,進(jìn)行本地存儲(chǔ),并向串口通信任務(wù)發(fā)送環(huán)境溫度信息,由串口通信任務(wù)通過(guò)GSM模塊向數(shù)據(jù)采集控制中心發(fā)送溫度數(shù)據(jù)短信,供采集控制中心儲(chǔ)存、統(tǒng)計(jì)和分析。該任務(wù)還要進(jìn)行喂狗操作,將看門狗復(fù)位,然后進(jìn)入循環(huán)等待下一次定時(shí)數(shù)據(jù)采集。
?。?)串口通信任務(wù):將采集的溫度、電量等信息緩存至規(guī)定(可設(shè)置)的條數(shù)時(shí),通過(guò)串口發(fā)送給GSM模塊;對(duì)收到的報(bào)警信息則不進(jìn)行緩存,直接通過(guò)串口發(fā)送給GSM模塊。每次發(fā)送數(shù)據(jù)完成后,讀取GSM模塊的未接收短信,若為命令短信,則發(fā)送給控制任務(wù)進(jìn)行相應(yīng)控制。
 (5)電量監(jiān)測(cè)任務(wù):檢測(cè)電池電量,當(dāng)電池電量低于設(shè)定值時(shí),向串口通信任務(wù)發(fā)送低電信息,由串口通信任務(wù)通過(guò)GSM模塊向數(shù)據(jù)采集控制中心發(fā)送低電報(bào)警短信,請(qǐng)求人工維護(hù)。
?。?)顯示任務(wù):顯示任務(wù)用于顯示系統(tǒng)的工作狀態(tài),包括溫度、電量、報(bào)警信息以及鍵盤輸入信息的回顯,考慮系統(tǒng)的低功耗要求,在遠(yuǎn)程無(wú)人值守環(huán)境下,可關(guān)閉系統(tǒng)的顯示,或取消液晶顯示配置,降低硬件成本。
 本文以ARM系統(tǒng)的控制器系統(tǒng)和μC/OS-II為軟、硬件平臺(tái),實(shí)現(xiàn)了一個(gè)遠(yuǎn)程數(shù)據(jù)采集/控制系統(tǒng),達(dá)到了低成本、低功耗、建設(shè)實(shí)施簡(jiǎn)便、快捷的要求,應(yīng)用效果令人滿意。本系統(tǒng)的解決方案對(duì)于相似應(yīng)用環(huán)境的遠(yuǎn)程數(shù)據(jù)采集與控制具有一定的借鑒意義。
參考文獻(xiàn)
[1] 邵貝貝譯.μC/OS-II源碼公開(kāi)的實(shí)時(shí)嵌入式操作系統(tǒng)[M].北京:中國(guó)電力出版社,2001.
[2] 周立功.ARM微控制器基礎(chǔ)與實(shí)戰(zhàn)[M].北京:北京航空航天大學(xué)出版社,2003.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。