基于ARM和GPRS的遠程監(jiān)測終端設(shè)計
摘要:針對分布比較分散,場所不固定,或是環(huán)境比較惡劣的監(jiān)測現(xiàn)場,提出了一種通用的遠程監(jiān)測終端的設(shè)計方法。終端具有模塊化的數(shù)據(jù)采集功能,并采用ARM9處理器和Linux操作系統(tǒng),用Qt/Embedded編寫終端應(yīng)用程序,使其具有良好的人機交互界面,并對數(shù)據(jù)進行分析處理,采用GPRS(通用無線分組業(yè)務(wù))無線通信技術(shù)將處理過的數(shù)據(jù)發(fā)往監(jiān)測中心,存入數(shù)據(jù)庫。實際實驗證明,該終端數(shù)據(jù)處理速度快,精度高,實時性好,可以滿足一般監(jiān)測現(xiàn)場的要求。
關(guān)鍵詞:遠程監(jiān)測;ARM9;GPRS;嵌入式Linux;Qt/Embedded
隨著現(xiàn)代生產(chǎn)科技水平的發(fā)展,對監(jiān)測技術(shù)的要求越來越高,形式趨于多樣化。在無人值守的變電站、水文站、氣象站等野外監(jiān)測或是在交通運輸?shù)刃袠I(yè)中,因分布比較分散、環(huán)境惡劣,地點不固定,不便于用傳統(tǒng)方法實現(xiàn)集中控制和實時監(jiān)測并且有線網(wǎng)絡(luò)的架設(shè)受到種種限制。在這些場合采用基于GPRS的無線網(wǎng)絡(luò)通信技術(shù),具有無可比擬的優(yōu)勢。將嵌入式應(yīng)用系統(tǒng)與無線通信技術(shù)結(jié)合在一起是未來嵌入式應(yīng)用的必然趨勢。GPRS(General Packet Radio Service),即通用無線分組業(yè)務(wù)。
GPRS技術(shù)應(yīng)用于遠程數(shù)據(jù)傳輸系統(tǒng),具有以下幾個特點:1)永遠在線,接入速度快。分組交換接入時間少于1秒,可使遠程數(shù)據(jù)傳輸?shù)男蚀蟠筇岣撸?)采用數(shù)據(jù)流量的計費方式,大大降低了用戶的使用費用;3)GPRS網(wǎng)絡(luò)覆蓋范圍廣,且支持TCP/IP協(xié)議,從而可實現(xiàn)與Intern et的無縫連接。
1 終端的整體結(jié)構(gòu)設(shè)計
終端要完成3個任務(wù),數(shù)據(jù)采集、數(shù)據(jù)處理和數(shù)據(jù)的無線傳輸。數(shù)據(jù)采集部分采用模塊化設(shè)計思想將采集模塊分為模擬量采集模塊,數(shù)字量采集模塊,開關(guān)量采集模塊等,每個模塊獨立的實現(xiàn)對特定采集信號的整流、調(diào)理、隔離等處理再轉(zhuǎn)換為數(shù)字量,各模塊采用統(tǒng)一的結(jié)構(gòu),選用相同的單片機處理器。各模塊采集的數(shù)據(jù)通過統(tǒng)一的SPI(serialperipleral interface)總線傳輸給ARM處理器。這樣的結(jié)構(gòu)使終端使用更靈活,應(yīng)用范圍更廣泛。數(shù)據(jù)處理部分采用ARM處理器對所采集的數(shù)據(jù)的類型、長度、有效范圍等進行處理,并通過液晶屏加觸摸屏完成人機交互功能。然后將處理好的數(shù)據(jù)通過GPRS無線網(wǎng)絡(luò)傳輸給上位機。終端的整體結(jié)構(gòu)圖如圖1所示。
2 終端硬件設(shè)計
終端硬件主要由3部分組成。一是作為主處理器的ARM9處理器及其外圍電路包括電源電路、復(fù)位電路、外擴存儲器電路及用于人機互動的液晶屏、觸摸屏連接電路等。二是各個模塊的數(shù)據(jù)采集電路的設(shè)計,這里主要設(shè)計的是模擬量采集模塊,以及各個數(shù)據(jù)采集模塊與主處理器之間SPI連接方式。三是GPRS模塊外圍電路以及與主處理器的連接。端硬件設(shè)計示意圖如圖2所示。
2.1 終端主處理器
主處理器是系統(tǒng)的核心,要完成數(shù)據(jù)處理,存儲,傳輸,人機界面顯示等功能。結(jié)合工業(yè)現(xiàn)場的需求終端處理器采用以ARM9為內(nèi)核的三星S3C2440處理器,它是一款基于ARM920T內(nèi)核的16/32位RSIC結(jié)構(gòu)的嵌入式微處理器,主頻400 MHz,最高可達533 MHz,具有2片外接32 M的板載SDRAM,片內(nèi)外資源豐富,擴展性強。系統(tǒng)存儲擴展了2 MB的NorFlash用于存放bootloader系統(tǒng)引導(dǎo)程序,和64 MB的NandFlash。系統(tǒng)的人機交互平臺采用一個7寸液晶顯示頻和一個觸摸屏來完成。
2.2 數(shù)據(jù)采集部分硬件設(shè)計
數(shù)據(jù)采集模塊可分為模擬量采集模塊,數(shù)字量采集模塊,開關(guān)量采集模塊等,主要完成對底層數(shù)據(jù)的采集,這些模塊的單片機處理器統(tǒng)一采用Cygnal公司的C8051F021單片機,它的MCU是高度集成的片上系統(tǒng)。在一個芯片內(nèi)集成了兩個多通道ADC子系統(tǒng)、電壓基準、SPI總線接口、8個8位的通用數(shù)字I/O端口和64 kBFLASH程序存儲器及與8051兼容的高速微控制器內(nèi)核等,這些很好的滿足了模塊的設(shè)計要求。由于模塊設(shè)計結(jié)構(gòu)上的相似性,這里主要介紹模擬量采集模塊部分。
工業(yè)現(xiàn)場采集的信號大部分是模擬量,如壓力、溫度、液位、流量等信號。這些信號經(jīng)過現(xiàn)場儀表測量后一般統(tǒng)一輸出為4~20 mA,0~5 V,0~10 V范圍的電流電壓信號。通過模擬量采集模塊將這些模擬量轉(zhuǎn)換為數(shù)字量。單片機的A/D準換的電壓基準定為2.5 V,要將4~20 mA,0~5 V,0~10 V范圍的電流電壓信號統(tǒng)一為0~2.5 V以內(nèi)的電壓信號,才能進入單片機完成模擬量到數(shù)字量的轉(zhuǎn)換。對于電流信號,在輸入端接一個250 Ω的精密便轉(zhuǎn)換為1~5 V的電壓信號了,對于電壓信號通過運算放大器按比例縮放到0~2.5 V范圍內(nèi)即可。轉(zhuǎn)換電路如圖3所示。
[!--empirenews.page--]
各個數(shù)據(jù)采集模塊與主處理器通過SPI總線進行通信。SPI總線是Motorola公司提出的一種高速全雙工串行通信總線,它容許CPU與各種外圍接口器件以串行方式進行通信。SPI接口只有MISO(主入從出)、MOSI(主出從人)、SCLK(時鐘)和CS(片選)4個信號組成,在芯片上只占用4條線,大大節(jié)省了芯片資源。主處理器與各采集模塊的SPI通信方式為一主多從的方式,即ARM主處理器的作為主設(shè)備,各數(shù)據(jù)采集模塊作為從設(shè)備,主設(shè)備驅(qū)動串行時鐘發(fā)起通信。主設(shè)備使用片選信號CS指明與哪個模塊采集模塊傳送數(shù)據(jù)。通信時,主設(shè)備的MISO為輸入,MOSI為輸出,從設(shè)備的MISO為輸出,MOSI為輸入,在主設(shè)備時鐘的控制下,主設(shè)備與從設(shè)備的雙向移位寄存器同時進行數(shù)據(jù)交換,完成一次數(shù)據(jù)的傳輸。主處理器與各模塊的通信結(jié)構(gòu)圖如圖4所示。
2.3 GPRS模塊
GPRS模塊選用華為GTM900C模塊,它是一款三頻段GSM/GPRS無線模塊。模塊接口簡單、使用方便且功能強大。它支持標準的AT命令及增強AT命令。GTM900C的GPRS數(shù)據(jù)業(yè)務(wù)的最高速率可達85.6 kbit/GTM900C提供40腳的ZIF接口,主要有電源接口、UART接口(最大串口速率可達115200bit/s)、標準SIM卡接口和模擬語音接口。
本系統(tǒng)中,GTM900C主要是實現(xiàn)GPRS上網(wǎng)功能。該模塊的主要特點如下:
1)單電源供電,供電范圍為3.3~4.8 V.典型供電電壓為4.2 V;
2)可工作于三頻EGSM900和/GSM1800/GT800單頻;最大發(fā)射功率EGSM900/GT800 Class(2W)和GSM1800 Classl(1W);
3)支持GSM標準AT命令、V.25 AT命令和華為擴展AT命令;
4)GPRS傳輸速率最高可達85.6 kbps,支持CS-1,CS-2,CS-3,CS-4 4種編碼方式。內(nèi)嵌了TCP/IP協(xié)議;支持多連接,提供ACK應(yīng)答,提供大容量緩存。
GPRS模塊與主處理器的連接很簡單,由于兩者是通過串口接口進行通信的,所以將兩者用串口線連接即可。GPRS的網(wǎng)絡(luò)功能都已集成在模塊中,只需要在主處理器這一端將串口參數(shù)設(shè)置好,然后發(fā)送相應(yīng)的AT指令對模塊進行操作即可。
3 終端軟件設(shè)計
終端軟件設(shè)計包括兩個任務(wù),一是搭建開發(fā)環(huán)境,如Linux操作系統(tǒng)內(nèi)核移植,編寫設(shè)備驅(qū)動等,二是在開發(fā)環(huán)境準備好的基礎(chǔ)上進行應(yīng)用程序的編寫,包括完成SPI總線數(shù)據(jù)輸入輸出功能,GPRS無線數(shù)據(jù)傳輸功能,和界面顯示功能。
3.1 軟件開發(fā)平臺搭建
軟件平臺采用嵌入式Linux操作系統(tǒng),嵌入式Linux操作系統(tǒng)是一個源代碼公開的實時多任務(wù)操作系統(tǒng),可應(yīng)用于多種硬件平臺,可根據(jù)需要定制內(nèi)核,有良好的網(wǎng)絡(luò)支持,Linux系統(tǒng)內(nèi)核精簡、高效并且穩(wěn)定,能夠充分發(fā)揮硬件的功能,它非常適合在嵌入式領(lǐng)域中應(yīng)用。嵌入式Linux操作系統(tǒng)搭建的步驟為:在宿主機上建立交叉編譯的環(huán)境;編譯生成Linux的內(nèi)核,用的內(nèi)核是Linux-2.6.29;編譯生成根文件
系統(tǒng),用的根文件系統(tǒng)為yaffs;向目標機下載Bootloader的映像,用的Bootloader為Supervivi;燒寫Linux內(nèi)核和文件系統(tǒng)的映像;復(fù)位啟動。為了使終端可以使用觸摸屏,液晶屏和SPI總線,將編寫的對應(yīng)的驅(qū)動編譯、添加到Linux內(nèi)核中。系統(tǒng)使用的宿主機系統(tǒng)為在虛擬機下運行的RedHat9.0。
終端應(yīng)用程序用Qt來編寫,Qt是一個跨平臺的C++圖形用戶界面應(yīng)用程序框架。它具有優(yōu)良的跨平臺特性、面向?qū)ο?、豐富的API支持等優(yōu)點。Qt-Embedded是Qt的嵌入式版本,因此終端應(yīng)用程序的開發(fā)使用Qt/E作為開發(fā)工具。Qt運行環(huán)境的搭建步驟為:首先在宿主機上分別建立Ot-x86編譯環(huán)境和Qt-ARM編譯調(diào)試環(huán)境,采用Qt4.5.0版本;其次,將宿主機生成的Lib下的庫文件下載到目標板的某個目錄下,并在目標板上設(shè)置好環(huán)境變量,這樣在目標機上的Qt程序運行環(huán)境就建好了。在宿主機上交叉編譯好的Ot/E程序就可以下載到目標機上運行了。
3.2 終端應(yīng)用程序設(shè)計
監(jiān)測終端需要采集監(jiān)測儀表的現(xiàn)場測量數(shù)據(jù),終端設(shè)計的數(shù)據(jù)采集模塊分別對不同的現(xiàn)場數(shù)據(jù)進行采集并做相應(yīng)的處理,數(shù)據(jù)采集模塊與CPU之間通過SPI總線進行數(shù)據(jù)傳輸,對與采集數(shù)據(jù)需按上端通信協(xié)議、PPP、TCP/IP協(xié)議進行二次成幀;利用GPRS網(wǎng)絡(luò)接入Internet網(wǎng)絡(luò),將處理后的數(shù)據(jù)信息通過GPRS無線網(wǎng)絡(luò)上傳至監(jiān)控中心。
GPRS模塊附著GPRS網(wǎng)絡(luò)并與上位機建立TCP數(shù)傳鏈路是通過向模塊發(fā)送一串AT指令實現(xiàn)。撥號動作完成,并成功建立數(shù)傳鏈路以后,GPRS模塊在終端串行口和上位機之間變得透明。另外,終端的重要狀態(tài)要能即時顯示在LCD上。
綜上分析,監(jiān)控終端應(yīng)用程序要完成的任務(wù)有:串口參數(shù)設(shè)置,GPRS網(wǎng)絡(luò)連接,讀取串口返回信息,SPI數(shù)據(jù)傳輸,GPRS數(shù)據(jù)傳輸,界面顯示。由于任務(wù)不止一個,而且有的任務(wù)需要同時運行,所以采用多線程編程。
在Qt編程中主界面UI一般為主線程,子線程通過繼承Qt中的QThread線程類來完成。這些任務(wù)和功能可以通過3個線程來實現(xiàn)。3個線程的作用分別為:1)主線程:負責界面顯示,串口參數(shù)設(shè)置,GPRS網(wǎng)絡(luò)連接,GPRS數(shù)據(jù)傳輸;2)SPI數(shù)據(jù)傳輸子線程:負責與數(shù)據(jù)采集模塊通信,將采集數(shù)據(jù)存入緩沖區(qū);3)串口數(shù)據(jù)讀取子線程:CPU通過串口操作GPRS模塊,GPRS模塊的返回信息可以通過串口數(shù)據(jù)讀取子線程隨時讀取。程序模塊圖如圖5所示。
[!--empirenews.page--]
3.2.1 顯示界面模塊
界面顯示模塊:界面顯示由兩部分組成。一是實時顯示各模塊的采集數(shù)據(jù)及一定時間以內(nèi)的歷史數(shù)據(jù)數(shù)據(jù);二是顯示GPRS模塊設(shè)置界面,通過這個界面設(shè)置串口參數(shù)、設(shè)置數(shù)據(jù)采集時間間隔、設(shè)置主機IP地址及端口號、發(fā)送AT指令、回顯模塊返回信息等。編寫界面設(shè)計文件mainwindow.h和mainwindow.cpp,其中串口參數(shù)設(shè)置、網(wǎng)絡(luò)連接和GPRS數(shù)據(jù)傳輸封裝成相應(yīng)的子函數(shù),利用Qt的信號槽機制,當捕捉到
相應(yīng)的信號便執(zhí)行對應(yīng)的函數(shù)。通過繼承Qt中的QThread線程類來完成GPRS數(shù)據(jù)讀取模塊和SPI模塊的功能。SPI模塊接收底層數(shù)據(jù)采集模塊的各種數(shù)據(jù),顯示到界面并編碼通過GPRS通道傳輸?shù)缴衔粰C,GPRS返回的一些重要信息業(yè)需顯示到LCD界面上。
3.2.2 GPRS網(wǎng)絡(luò)連接任務(wù)
GPRS網(wǎng)絡(luò)連接任務(wù)主要完成通過GPRS網(wǎng)絡(luò)建立與上位機的數(shù)據(jù)傳輸鏈路的過程。啟動GTM900C后,首先,需對PPP連接所使用的物理串口進行初始化,包括確定用于PPP連接的串行端口號以及通信波特率。然后,直接使用AT指令,撥號到中國移動的GPRS節(jié)點服務(wù)器(GGSN)。使用以下幾條燈指令使GTM900C進入數(shù)據(jù)通訊狀態(tài):
“AT+CGATY?”用于查詢GTM900C是否已附著在中國移動的GPRS網(wǎng)絡(luò),GTM900C將返回當前狀態(tài);
“AT+CGATT=1”用于設(shè)置GTM900C附著于中國移動的GPRS網(wǎng)絡(luò),操作成功GTM900C將返回OK;
“A1,+CGDCONT=1,“IP”“CMNET””用于設(shè)置中國移動的GPRS節(jié)點服務(wù)器的名稱和屬性,操作成功則返回OK;
“AT%ETCPIP”用于實現(xiàn)PDP激活和TCP/IP的初始化,使模塊進入TCP/IP功能,操作成功返回OK;
“AT%IOMODE=0.2,0”設(shè)置數(shù)據(jù)傳輸模式,操作成功返回OK;
“AT%IPOPEN=1,“TCP”,“115.24.116.19”,5000..1026”打開一條TCP/IP鏈接,選擇TCP傳輸,115.24.116.19為上位機IP地址,5000為上位機接受程序端口號,成功與上位機連接返回CONNECT。另外模塊還具有數(shù)據(jù)透傳功能,數(shù)據(jù)透明傳輸功能將實現(xiàn)TCP/IP上直接數(shù)據(jù)傳輸,進入透傳模式的AT指令是:“AT%TPS=1,1,3000,1024”,進入透傳模式后模塊將不會相應(yīng)其它AT指令,直接通過串口寫入數(shù)據(jù)便可實現(xiàn)與上位機之間的數(shù)據(jù)傳輸。以上使模塊附著在GPRS網(wǎng)絡(luò)的過程封裝在gprsConnect()函數(shù)中。
PPP配置、認證通過以后,即應(yīng)用程序就已經(jīng)通過GTM900C成功進入了Internet網(wǎng)絡(luò)。最后,通過變量GPRSOK=1指示GPRS撥號成功并建立數(shù)傳狀態(tài)。在run()程序中隔一段時間判斷當前網(wǎng)絡(luò)連接狀態(tài),若網(wǎng)絡(luò)斷開則變量GPRSOK=0,并調(diào)用gprsConnect()函數(shù)開始撥號任務(wù)重新建立數(shù)傳鏈路。
3.2.3 SPI數(shù)據(jù)通信模塊
SPI通信程序包括兩部分,一是用于數(shù)據(jù)采集的單片機這邊需要通過SPI發(fā)送現(xiàn)場數(shù)據(jù),接收控制指令,二是ARM主控制器需要讀取數(shù)據(jù),發(fā)送控制指令。數(shù)據(jù)采集模塊使用是帶有SPI接口的C8051f020單片機,SPI的數(shù)據(jù)寄存器是SHODAT。單片機和主控制器的SPI通信參數(shù)設(shè)置要一致。
在主設(shè)備ARM這邊,SPI驅(qū)動已經(jīng)配置好,直接使用read(),write()等函數(shù)便可進行數(shù)據(jù)的讀取與接收。在單片機這邊采用中斷的方式進行SPI數(shù)據(jù)的發(fā)送與接收。對于從設(shè)備C8051f021單片機來說,只有將片選線線接低電平才會啟動數(shù)據(jù)傳輸,可利用這一點進行多字節(jié)數(shù)據(jù)傳輸,拉低一次便傳輸一個字節(jié),這可用作與主設(shè)備之間的同步信號。主設(shè)備選一根I/O口線作為片選線,將其拉低,執(zhí)行一次SPI讀操作,再拉高,延時一定時間,這時從設(shè)備退出從模式,重新往SPIODAT里寫新數(shù)據(jù)及其他一些處理,主設(shè)備再將片選線拉低,執(zhí)行一次SPI讀操作。這樣便可進行多字節(jié)傳輸了。SPI主從設(shè)備通信流程圖如圖6所示。
3.3 終端性能測試
將編譯好的界面應(yīng)用程序下載到終端處理器中并運行,主線程為顯示界面,隨時可與用戶進行信息,兩個子線程為讀SPI總線線程和串口讀寫線程,這3個線程同時并行運行。其中GPRS傳輸部分的界面如圖7所示,通過這個顯示界面設(shè)置串口、上位機IP地址、TCP端口和數(shù)據(jù)定時發(fā)送的時間間隔,發(fā)送文本框會顯示SPI總線讀取的數(shù)據(jù)值,接收文本框回顯GPRS模塊返回的信息。上位機用自己的PC機,通過軟件soeket tool監(jiān)聽終端發(fā)送給上位機數(shù)據(jù),實驗證明終端界面應(yīng)用程序工作良好,數(shù)據(jù)傳輸也很準確。
4 結(jié)論
系統(tǒng)的上位機接受界面可用VB編寫,并建立數(shù)據(jù)庫,方便分析、處理監(jiān)測現(xiàn)場數(shù)據(jù),這部分程序正在完善中。監(jiān)測終端的數(shù)據(jù)采集部分采用模塊化設(shè)計,可以靈活增減,終端軟件可以根據(jù)不同現(xiàn)場用戶自行設(shè)計計算公式處理數(shù)據(jù),把終端設(shè)置好,在上位機通過GPRS網(wǎng)絡(luò)便可實時監(jiān)測現(xiàn)場。該檢測終端結(jié)構(gòu)靈活,實時性好,適用范圍廣,具有廣泛的應(yīng)用前景。