夏振華,阮寧君
(長(zhǎng)江大學(xué)電子信息學(xué)院,湖北 荊州 434023)
基于GPRS的無(wú)線智能數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)
夏振華,阮寧君
(長(zhǎng)江大學(xué)電子信息學(xué)院,湖北 荊州 434023)
提出了一種可以利用GPRS進(jìn)行無(wú)線數(shù)據(jù)傳輸?shù)臄?shù)據(jù)采集系統(tǒng),詳細(xì)介紹了該系統(tǒng)的硬件設(shè)計(jì)和基于嵌入式Linux操作系統(tǒng)的驅(qū)動(dòng)程序的設(shè)計(jì)及應(yīng)用程序設(shè)計(jì)方法。該系統(tǒng)具有穩(wěn)定性高、無(wú)線傳輸?shù)葍?yōu)點(diǎn),可以用于偏遠(yuǎn)、危險(xiǎn)、人不易到達(dá)等場(chǎng)所的數(shù)據(jù)采集。
數(shù)據(jù)采集;無(wú)線傳輸;嵌入式系統(tǒng);GPRS
傳統(tǒng)的數(shù)據(jù)采集傳輸系統(tǒng)大都是采用單片機(jī)為核心,利用RS232、RS485等有線通信方式實(shí)現(xiàn)的,雖然實(shí)現(xiàn)簡(jiǎn)單、成本低,但采用有線的數(shù)據(jù)傳輸方式很大程度上限制了其應(yīng)用場(chǎng)合,不能適用于一些分散的、無(wú)人值守的現(xiàn)場(chǎng),需要對(duì)數(shù)據(jù)進(jìn)行定時(shí)采集,以便及時(shí)了解現(xiàn)場(chǎng)的情況。在電力、鐵路、石油探采等領(lǐng)域,要求對(duì)相距遙遠(yuǎn)的生產(chǎn)過(guò)程進(jìn)行數(shù)據(jù)傳輸,如果采用有線的傳輸方式,則在技術(shù)上和經(jīng)濟(jì)上都是不可取的,需要采用無(wú)線的方式進(jìn)行遠(yuǎn)距離的數(shù)據(jù)傳輸。并且,隨著數(shù)據(jù)采集系統(tǒng)的應(yīng)用條件越來(lái)越復(fù)雜,基于單片機(jī)的數(shù)據(jù)采集系統(tǒng)在功能、用戶(hù)界面、運(yùn)算速度和精度上逐漸不能滿足需求。近年來(lái),以ARM為中央處理器和Linux為操作系統(tǒng)的嵌入式系統(tǒng)由于其功能強(qiáng)、功耗低、處理速度快、用戶(hù)界面友好等優(yōu)點(diǎn),得到越來(lái)越廣泛的應(yīng)用。筆者將介紹一種以S3c2410為核心,基于嵌入式Linux的數(shù)據(jù)采集傳輸系統(tǒng),其中AD芯片采用TI公司的多通道高速模數(shù)轉(zhuǎn)換器ADS8364,無(wú)線數(shù)據(jù)傳輸采用GPRS(General Packet Radio Service)模塊實(shí)現(xiàn)。
圖1 系統(tǒng)的結(jié)構(gòu)圖
系統(tǒng)由無(wú)線采集終端和監(jiān)控中心2大部分組成。監(jiān)控中心為運(yùn)行著監(jiān)控軟件的計(jì)算機(jī),監(jiān)控軟件具有顯示各終端數(shù)據(jù)、處理分析數(shù)據(jù)、產(chǎn)生報(bào)警信號(hào)、控制監(jiān)控終端的運(yùn)行等功能;采集終端是基于ARM的嵌入式采集系統(tǒng),主要由信號(hào)調(diào)理電路、數(shù)據(jù)采集模塊、控制模塊、無(wú)線傳輸模塊4個(gè)部分組成。采集終端和監(jiān)控中心組成一個(gè)典型的C/S(Client/Server)系統(tǒng)。監(jiān)控中心作為服務(wù)器,可以同時(shí)接受分布在地理位置相距很遠(yuǎn)的多個(gè)采集終端發(fā)來(lái)的數(shù)據(jù),并對(duì)所有的采集終端進(jìn)行控制和管理;采集終端將采集的數(shù)據(jù)通過(guò)GPRS撥號(hào)的方式,利用TCP/IP協(xié)議,經(jīng)由Internet傳輸?shù)奖O(jiān)控中心,同時(shí)接受來(lái)自監(jiān)控中心發(fā)來(lái)的控制命令,來(lái)控制采集系統(tǒng)的啟動(dòng)、停止、參數(shù)設(shè)置等操作,系統(tǒng)的結(jié)構(gòu)如圖1所示。監(jiān)控中心軟件采用VC++實(shí)現(xiàn)。
2.1ADS8364與S3c2410的接口
ADS8364可以通過(guò)給DVCC提供3.3V或者5V電壓而使器件的接口電壓為3.3V或者5V,這樣可以
很方便的將ADS8364和5V總線接口的51系列單片機(jī)等以及3.3V總線接口的DSP和ARM等接口。本系統(tǒng)所采用的處理器S3c2410與ADS8364接口不需要附加任何的接口電壓轉(zhuǎn)換芯片,只需把ADS8364的接口電壓設(shè)置成3.3V就可以將兩者的總線直接連接。S3c2410與ADS8364的接口如圖2所示。
圖2 S3c2410與ADS8364的接口圖
從圖2可以看出,S3c2410與ADS8364的接口非常簡(jiǎn)單,幾乎不需要任何附加硬件邏輯電路,用S3c2410的GPF4與ADS8364的EOC信號(hào)相連,并將GPF4設(shè)置成中斷模式,用來(lái)接收ADS8364轉(zhuǎn)換結(jié)束中斷,GPB5、6、7設(shè)置成輸出模式,與ADS8364的HOLDA、B、C相連,用來(lái)選中3組AD(每組2個(gè)AD)啟動(dòng)轉(zhuǎn)換,S3C2410的BANK2片選信號(hào)nGCS2與ADS8364的/CS相連,將AD作為外部物理地址映射到S3C2410相應(yīng)的內(nèi)核空間,位于外部I/O接口BANK2地址空間0x10000000~0x18000000。只要對(duì)BANK2進(jìn)行寫(xiě)操作,并將GPB5、GPB6、GPB7分別設(shè)置成000~111中的某個(gè)值,就可以產(chǎn)生ADS8364的啟動(dòng)相應(yīng)通道轉(zhuǎn)換的信號(hào)。S3c2410的地址線A2、A3、A4分別連接ADS8364的A0、A1、A2,將ADS8364的6個(gè)讀數(shù)通道映射到Linux操作系統(tǒng)的地址為0x10000000、0x10000004、0x10000008、0x1000000C、0x10000010、0x10000014。
2.2ADS8364的前端調(diào)理電路
圖3 ADS8364的前端調(diào)理電路
ADS8364的模擬輸入可以是雙極或全差分的,有2種方法可驅(qū)動(dòng)ADS8364 的輸入,即單端和差分。單端輸入時(shí),-IN端輸入的是共模電壓(CV),而+IN 的輸入則圍繞共模電壓擺動(dòng),輸入范圍為CV+VREF 和CV-VREF,VREF的大小決定了共模電壓的變化。當(dāng)輸入是差分方式時(shí),輸入幅值在-IN和+IN之間變化。每個(gè)輸入端的幅值分別是CV+1/2VREF 和CV-1/2VREF,差分輸入電壓范圍為+VREF和-VREF,所以VREF也決定了輸入電壓的范圍。圖3中R1和R2的取值可以用來(lái)改變OPA227輸入的電壓范圍。
2.3GPRS模塊和采集系統(tǒng)的連接
GPRS模塊選用市面上廣泛采用的西門(mén)子的MC35i。MC35i是Siemens公司推出的新一代無(wú)線通信GPRS模塊,可以快速安全可靠地實(shí)現(xiàn)系統(tǒng)方案中的數(shù)據(jù)、語(yǔ)音傳輸、短消息服務(wù)(Short Message Service)。該模塊采用GPRS分時(shí)復(fù)用的CLASS 8標(biāo)準(zhǔn),具有始終在線的功能且理論上傳輸速率最高可達(dá)171.2kb/s,通信傳輸時(shí)延較小。模塊還具有RS232串行接口,方便與PC機(jī)或者嵌入式系統(tǒng)連接,該采集終端就是通過(guò)RS232將嵌入式采集終端和MC35i模塊相連。在連接時(shí)需要注意的是,由于MC35i采用的是全功能串口,除了TXD、RXD、GND外,還包括CTS、DSR、DTR、RTS等握手信號(hào),而采集終端采用的串口只連接了TXD、RXD、GND信號(hào),因此在二者連接時(shí)需要將采集終端串口的DTR和DSR短接,RTS和CTS短接。
圖4 中斷方式的程序執(zhí)行的流程圖
圖5 網(wǎng)絡(luò)傳輸流程圖
該系統(tǒng)采用S3c2410為控制芯片,采用Linux為嵌入式系統(tǒng)的操作系統(tǒng),在設(shè)計(jì)軟件時(shí),需要分別設(shè)計(jì)應(yīng)用程序和驅(qū)動(dòng)程序[3]。驅(qū)動(dòng)程序主要作用是提供操作硬件設(shè)備ADS8364的各種函數(shù);應(yīng)用程序使用驅(qū)動(dòng)程序提供的函數(shù)完成數(shù)據(jù)采集,并利用Linux的Socket API將得到的數(shù)據(jù)通過(guò)Internet傳送給監(jiān)控中心。下面主要介紹ADS8364驅(qū)動(dòng)程序的設(shè)計(jì)方法和應(yīng)用程序的流程。
3.1驅(qū)動(dòng)程設(shè)計(jì)
Linux設(shè)備驅(qū)動(dòng)程序?qū)崿F(xiàn)的功能包括驅(qū)動(dòng)程序的注冊(cè)與注銷(xiāo)、設(shè)備的打開(kāi)與釋放、設(shè)備的讀寫(xiě)操作、設(shè)備的控制操作等。當(dāng)用戶(hù)需要通過(guò)設(shè)備文件同硬件打交道時(shí),必須通過(guò)調(diào)用open、read、write、close、ioctl等系統(tǒng)函數(shù),這些函數(shù)都由file_operations結(jié)構(gòu)體的函數(shù)指針成員給出入口地址。設(shè)計(jì)驅(qū)動(dòng)程序就是對(duì)這些函數(shù)按照需要進(jìn)行編程。
該系統(tǒng)在設(shè)計(jì)驅(qū)動(dòng)程序時(shí)采用中斷方式讀取轉(zhuǎn)換后的數(shù)據(jù)。在驅(qū)動(dòng)程序中將GPF4設(shè)置成中斷方式,將中斷觸發(fā)方式設(shè)置為下降沿觸發(fā),此時(shí)ADS8364產(chǎn)生的EOC信號(hào)觸發(fā)Linux系統(tǒng)的外中斷EINT4,應(yīng)用程序只需要打開(kāi)ADS8364所對(duì)應(yīng)的設(shè)備文件,并用write()函數(shù)啟動(dòng)相應(yīng)的通道開(kāi)始轉(zhuǎn)換,接下來(lái)的工作就由驅(qū)動(dòng)程序中的中斷服務(wù)函數(shù)將數(shù)據(jù)存放到一個(gè)全局變量中,然后在應(yīng)用程序中通過(guò)read()函數(shù)將數(shù)據(jù)讀出。圖4給出了中斷方式的程序執(zhí)行的流程圖,圖中給出了每個(gè)步驟所使用的關(guān)鍵函數(shù)。
3.2應(yīng)用程序設(shè)計(jì)
應(yīng)用程序的主要功能是實(shí)現(xiàn)數(shù)據(jù)采集和網(wǎng)絡(luò)傳輸,數(shù)據(jù)采集的過(guò)程在前面已有介紹,下面主要介紹網(wǎng)絡(luò)傳輸功能的設(shè)計(jì)。采集終端和監(jiān)控中心采用C/S模式,監(jiān)控中心作為服務(wù)器端,被動(dòng)的等待采集終端的連接,并接收數(shù)據(jù)和發(fā)送控制命令,采集終端作為客戶(hù)端,主動(dòng)連接服務(wù)器,將數(shù)據(jù)通過(guò)UDP協(xié)議發(fā)送給監(jiān)控中心,并接受來(lái)自中心的控制命令。該系統(tǒng)要求監(jiān)控中心必須有一個(gè)全球IP地址,而采集終端可以利用中國(guó)移動(dòng)CMWAP或者CMNET上網(wǎng)方式提供的私有IP地址。監(jiān)控中心和采集終端間的網(wǎng)絡(luò)傳輸流程圖如圖5所示。
表1 測(cè)試數(shù)據(jù)
測(cè)試采用ARM9板加上GPRS模塊作為采集終端,采集中心裝有采集控制軟件,控制軟件發(fā)出開(kāi)始采集命令,采集終端就進(jìn)行數(shù)據(jù)采集,并將采集的到得數(shù)據(jù)通過(guò)GPRS撥號(hào)上網(wǎng)的方式,通過(guò)無(wú)線聯(lián)入Internet,傳輸?shù)讲杉行?。?給出一組采集中心收到的測(cè)試數(shù)據(jù),從數(shù)據(jù)可以看出該系統(tǒng)的數(shù)據(jù)精度較高。
筆者提出的無(wú)線數(shù)據(jù)采集系統(tǒng),不但能夠?qū)崿F(xiàn)高速、高精度的數(shù)據(jù)采集,并利用Linux操作系統(tǒng)提供的socket API,實(shí)現(xiàn)了基于TCP/IP協(xié)議的網(wǎng)絡(luò)傳輸功能,利用GPRS撥號(hào)方式進(jìn)行無(wú)線數(shù)據(jù)傳輸。該系統(tǒng)將GPRS與數(shù)據(jù)采集系統(tǒng)相結(jié)合,可以實(shí)現(xiàn)整個(gè)系統(tǒng)的無(wú)線監(jiān)控,非常適用于一些特殊的、不能布線的場(chǎng)合,比如森林火災(zāi)監(jiān)控、戰(zhàn)場(chǎng)監(jiān)控、氣體泄露監(jiān)控等等。該監(jiān)測(cè)系統(tǒng)已在測(cè)試過(guò)程中取得良好效果,隨著GPRS網(wǎng)絡(luò)的不斷完善和市場(chǎng)需求的擴(kuò)大,該系統(tǒng)將有更廣闊的前景。
[1]夏振華, 張正炳, 潘濤. 一種改進(jìn)的嵌入式網(wǎng)絡(luò)視頻監(jiān)控系[J]. 電視技術(shù), 2007,(6):88~90.
[2]Texas Instruments. 250kSPS, 16-Bit, 6-Channel Simultaneous Sampling ANALOG-TO-DIGITALS CONVERTERS[DB/OL]. http://focus.ti.com/lit/ds/symlink/ads8364.pdf,2007-04.
[3]何永威,路林吉. 基于嵌入式Linux和ARM 9的家用智能監(jiān)控系統(tǒng)[J]. 微型電腦應(yīng)用, 2007, (10):16~17.
[4]王衛(wèi)峰,于海勛. 基于AT91RM9200的嵌入式數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J]. 微型電腦應(yīng)用, 2007, (10):13~15,61.
[編輯] 易國(guó)華
TP277; TP368
B
1673-1409(2009)03-N077-04
2009-05-27
夏振華(1978-),男,2000年大學(xué)畢業(yè),碩士,講師,現(xiàn)主要從事自動(dòng)化裝置方面的研究工作。