基于GPRS的遠程數(shù)據(jù)采集模塊
摘 要:針對傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)對系統(tǒng)構(gòu)建的方便性與數(shù)據(jù)傳輸?shù)目煽啃缘囊?,提出了一種基于移動GPRS無線通信的遠程數(shù)據(jù)采集方案。該方案利用GPRS的Internet接入功能,通過移動公司的網(wǎng)絡來實現(xiàn)數(shù)據(jù)采集模塊與遠程主機之間的無線通信。分析了該數(shù)據(jù)采集模塊的原理與結(jié)構(gòu),嵌入式TCP/IP/PPP協(xié)議的實現(xiàn),以及GPRS模塊的驅(qū)動設計。并由此研制出一臺基于Winbond單片機與c;PRS模塊的無線數(shù)據(jù)采集系統(tǒng),測試結(jié)果證明了訪采集模塊的穩(wěn)定性與可靠性。
關鍵詞:GPRS模塊;數(shù)據(jù)采集;TCP/IP/PPP協(xié)議;MC35i
0 引 言
數(shù)據(jù)采集與工業(yè)生產(chǎn)和國民生活息息相關,大到電力部門各變電站的遠程監(jiān)控、礦業(yè)生產(chǎn)單位的安全生產(chǎn),小到社區(qū)居民的電表、水表抄表系統(tǒng),因此數(shù)據(jù)采集與通信系統(tǒng)直接關系到人們生活質(zhì)量的提高。傳統(tǒng)的電表、水表的數(shù)據(jù)采集多采取人工抄表的方式,不僅浪費了大量的人力物力,抄表精度也不高;當前的卡式預付費表由于要將付費額與消費量存入IC卡中,作為電表、水表與監(jiān)控中心的通信媒介,安全性有待提高;工業(yè)生產(chǎn)中多采用Internet網(wǎng)絡通信或是RS 485總線來實現(xiàn)各監(jiān)測點與監(jiān)控中心的數(shù)據(jù)通信,對于采集點分布集中時尚可實現(xiàn),但是像電力系統(tǒng)變電站等多分布在郊區(qū)且節(jié)點多的系統(tǒng)來說不僅通信線路的鋪設是一筆巨大的費用,受自然環(huán)境的影響也特別大,可靠性得不到保障。
GPRS無線上網(wǎng)技術的快速發(fā)展給數(shù)據(jù)采集技術的發(fā)展帶來了新的活力。GPRS(General Packet,RadioService)是當前GSM網(wǎng)絡通信向3G標準的過渡階段,即2.5G標準。GPRS在現(xiàn)有的GSM網(wǎng)絡的基礎上引入分組交換的功能,支持TCP/IP協(xié)議,可以與Inter—net直接相通,因此已在消費電子中得到了廣泛的應用。GPRS理論最高通信速率可達到171.2 Kb/s,且國內(nèi)外各大通信公司均推出了各自的GPRS通信模塊,穩(wěn)定性好,完全能夠滿足各種數(shù)據(jù)采集系統(tǒng)的需要,因此,GPRS無線通信技術的應用必將給數(shù)據(jù)采集系統(tǒng)的發(fā)展帶來巨大的變化。
l GPRS通信原理及數(shù)據(jù)采集模塊的整體結(jié)構(gòu)
1.1 GPRS無線通信原理
基于GPRS的無線網(wǎng)絡通信系統(tǒng)結(jié)構(gòu)如圖1所示,主要由三部分構(gòu)成:位于數(shù)據(jù)采集現(xiàn)場的GPRS數(shù)據(jù)采集模塊、網(wǎng)絡運營商提供GPRS網(wǎng)絡與遠程服務器。數(shù)據(jù)采集模塊位于各個數(shù)據(jù)采集現(xiàn)場,由于移動公司的通信范圍已覆蓋我國的絕大部分地區(qū),各數(shù)據(jù)采集模塊可分散地安裝在各種復雜的地理環(huán)境中而不必考慮線路鋪設等復雜的問題。GPRS網(wǎng)絡是現(xiàn)場數(shù)據(jù)采集系統(tǒng)與遠程監(jiān)控中心數(shù)據(jù)交換的橋梁。數(shù)據(jù)采集模塊與測量儀表進行數(shù)據(jù)通信,將測量儀表產(chǎn)生的檢測數(shù)據(jù)通過移動基站實時發(fā)送到GPRS網(wǎng)絡服務商所提供的GGSN(Gateway GPRS Support Node)服務器,GGSN分配給GPRS數(shù)據(jù)采集終端相應的IP地址,從而實現(xiàn)了數(shù)據(jù)采集終端與Internet的連接,再通過In—ternet網(wǎng)絡將采集的數(shù)據(jù)發(fā)送到位于監(jiān)控中心的數(shù)據(jù)采集服務器。GPRS模塊可以是始終在線的,因此位于監(jiān)控中心的工作人員可以實時了解到終端設備的工作情況并做出相應的工作指示。
1.2 數(shù)據(jù)采集模塊的結(jié)構(gòu)
數(shù)據(jù)采集模塊負責檢測儀器與遠程監(jiān)測終端的無線數(shù)據(jù)傳輸,如圖2所示,模塊以Winbond的高性能單片機W77E58為控制核心,通過將串口采集到的數(shù)據(jù)經(jīng)初步處理后傳送給GPRS模塊實現(xiàn)無線網(wǎng)絡通信。
W77E58是Winbond公司推出的一款快速8051兼容微控制器,它的內(nèi)核經(jīng)過重新設計,整體運行速度要比標準的8051快2.5倍。W77E58具有1 KB的片上外部數(shù)據(jù)存儲器和32 KB的FLASH EPROM,省去了外擴SRAM所需的I/O引腳,從而用來擴展鍵盤與液晶顯示屏。
W77E58較為突出的特性是它具有兩個增強型全雙工串行口,在數(shù)據(jù)采集模塊中可將一個串口采用RS 232協(xié)議與GPRS模塊進行數(shù)據(jù)通信,另外一個串口則采用RS 485協(xié)議接收檢測儀器發(fā)送的數(shù)據(jù)。RS 485是在工業(yè)檢測現(xiàn)場應用非常廣泛的現(xiàn)場總線,總線上一臺主機可以與多達32臺從機進行通信。在實際應用中可將一臺GPRS數(shù)據(jù)采集模塊與多臺檢測設備通過RS 485總線相連,提高通信模塊的利用率,這在電表、水表等低成本的檢測儀表無線通信應用中十分重要。
GPRS無線通信模塊負責整個系統(tǒng)的數(shù)據(jù)收發(fā),GPRS無線網(wǎng)絡通信需要TCP/IP/PPP協(xié)議支持,當前常見的GPRS模塊可分為自帶TCP/IP協(xié)議棧與不帶協(xié)議棧的兩大類,自帶協(xié)議棧的模塊有Simcom的SIMl00,使用方便,用戶只需通過AT指令來控制數(shù)據(jù)傳輸就能實現(xiàn)無線通信,當然價格相對較高;而不帶協(xié)議棧的模塊還需用戶自己在單片機中實現(xiàn)嵌入式TCP/IP/PPP協(xié)議棧來實現(xiàn)數(shù)據(jù)傳輸??紤]到模塊的成本與W77E58高性能,這里選用了西門子的MC35i通信模塊。MC35i穩(wěn)定性及性價比都比較高,接口簡單,AT指令完善,支持GPRS CLASS 10。使用時只需自行設計外圍電路,包括電源供電、RS 232通信、SIM卡接口電路以及通信天線。該模塊不帶TCP/IP/PPP協(xié)議,需要自己編寫,在單片機中實現(xiàn)。
2 TCP/IP/PPP協(xié)議的實現(xiàn)
通常的Internet網(wǎng)絡通信只需實現(xiàn)TCP/IP協(xié)議簇,但是對于無線網(wǎng)絡的接入還需實現(xiàn)PPP協(xié)議。TCP/IP/PPP協(xié)議其實是一系列網(wǎng)絡通信協(xié)議的集合,為了能在資源有限的單片機中實現(xiàn)網(wǎng)絡數(shù)據(jù)傳輸,只能根據(jù)特定的功能來實現(xiàn)相應的協(xié)議,這包括PPP,IP,ICMP,UDP,TCP等協(xié)議,并在此基礎上構(gòu)建應用程序的API接口。
網(wǎng)絡協(xié)議采用分層結(jié)構(gòu),在GPRS無線通信模塊中采用了5層結(jié)構(gòu)。如圖3所示,位于最底層的是網(wǎng)絡硬件驅(qū)動程序,也就是GPRS模塊的驅(qū)動,MC35i與GPRS網(wǎng)絡的連接、斷開以及數(shù)據(jù)通信都是通過一系列的AT指令來實現(xiàn)。
接下來是數(shù)據(jù)鏈路層,數(shù)據(jù)鏈路層控制互聯(lián)網(wǎng)上主機之間數(shù)據(jù)鏈路的建立,該層實現(xiàn)了精簡的PPP(Point—to—Point Protoco1)點到點協(xié)議。GPRS模塊在撥號后首先要與GPRS網(wǎng)關進行通信鏈路的協(xié)商,即協(xié)商點到點的各種鏈路參數(shù)配置。協(xié)商過程遵守LCP(Link Control Protoco1),PAP(Password Authen—tication Protoco1)和IPCP(Internet Protocol ControlProtoco1)等協(xié)議。其中LCP協(xié)議用于建立、構(gòu)造、測試鏈路連接;PAP協(xié)議用于處理密碼驗證部分;IPCP協(xié)議用于設置網(wǎng)絡協(xié)議環(huán)境,并分配IP地址。一旦協(xié)商完成,鏈路已經(jīng)創(chuàng)建,IP地址已經(jīng)分配就可以按照協(xié)商的標準進行IP報文的傳輸了。數(shù)據(jù)傳輸完成之后,單片機會向GGSN發(fā)送LCP的斷開連接報文,以終止網(wǎng)絡連接。
GPRS模塊與網(wǎng)絡服務器連接成功后便可以進行數(shù)據(jù)通信。網(wǎng)際層實現(xiàn)了ICMP協(xié)議與IP協(xié)議。IC—MP協(xié)議是網(wǎng)際控制報文協(xié)議,負責傳遞網(wǎng)絡狀況信息。IP協(xié)議為TCP/IP協(xié)議中最為核心的協(xié)議,它負責數(shù)據(jù)報路由的選擇,以及將上層協(xié)議傳輸?shù)臄?shù)據(jù)包加上IP報頭后傳送給下層協(xié)議,并將下層協(xié)議接收到的IP數(shù)據(jù)包剝離包頭檢驗信息后接收或是丟棄。
傳輸層實現(xiàn)了TCP和UDP協(xié)議。UDP是面向數(shù)據(jù)報的傳輸協(xié)議,不能保證可靠的數(shù)據(jù)交付,但開銷較小發(fā)送數(shù)據(jù)的時延也相對少。如果對可靠性要求高,可以選擇TCP協(xié)議,TCP為不可靠的IP連接提供可靠的、具有流量控制的、端到端的數(shù)據(jù)傳輸,但對系統(tǒng)資源的要求相應增加。實際應用時可根據(jù)傳輸數(shù)據(jù)的內(nèi)容來選取傳輸協(xié)議。
為了方便上層程序調(diào)用相關的協(xié)議進行通信,可以建立一個數(shù)據(jù)結(jié)構(gòu),將本地和遠程的IP地址、端口號以及通信狀態(tài)封裝起來構(gòu)成一個Socket,并提供相應的API函數(shù)供應用程序調(diào)用,這就是應用層接口。
3 MC35i驅(qū)動及AT指令的編寫
3.1 MC35i的開關機及初始化
MC35i的開關機需要在模塊的0N/OFF引腳上加上脈寬1 s以上的低電平。當模塊處于關機狀態(tài)檢測到0N/OFF引腳的下降沿并持續(xù)1 s以上的低電平時啟動整個模塊,同理,當模塊啟動后檢測到持續(xù)1 s以上的低電平,則延時8 s關機。所有的AT指令操作都必須在開機狀態(tài)下才能執(zhí)行。
開機后還要對MC35i進行初始化來實現(xiàn)單片機對模塊的控制:首先要測試模塊串口的連接狀況,通過發(fā)送AT指令,等待模塊的回復,返回OK則連接成功,沒有響應則表示模塊連接存在問題;接著還要向模塊發(fā)送ATEO指令來關閉回顯。回顯功能主要用于串口調(diào)試,具體應用時應關閉該功能,防止回顯字符和返回參數(shù)混合。
3.2 MC35i的AT控制指令
MC35i模塊是采用AT指令集進行控制的,采用AT指令集可以實現(xiàn)模塊參數(shù)的設置,數(shù)據(jù)的發(fā)送與接收。AT指令集是調(diào)制解調(diào)器通信接口的工業(yè)標準,指令由ASCII字符組成,除“A/”、“+++”指令外,所有指令都是以”AT”開頭,以<回車><換行>結(jié)束,絕大多數(shù)指令被執(zhí)行后都有返回參數(shù)。
常見的AT指令有:
設置通信波特率:使用AT+IPR=19200命令,把波特率設為19 200 b/s;
設置接入網(wǎng)關:通過AT+CGD CONT=1,“IP”。“CMNET”命令設置GPRS接入網(wǎng)關為移動夢網(wǎng);
設置移動終端的類別:通過AT+CGCLASS=“B”設置移動終端的類別為B類,即同時監(jiān)控多種業(yè)務,但只能運行一種業(yè)務,即在同一時間只能使用GPRS上網(wǎng),或者使用GSM的語音通信;
測試GPRS服務是否開通:使用AT+CGACT=1,1命令激活GPRS功能。如果返回OK,則GPRS連接成功;如果返回ERROR,則意味著GPRS失敗。中國移動在GPRS與Internet網(wǎng)中間建立了許多的網(wǎng)關支持節(jié)點(GGSN),以連接GPRS網(wǎng)與外部的Internet網(wǎng)絡。GPRS模塊可以通過撥“*99***1#”登錄到GGSN上,并通過PPP協(xié)議獲取動態(tài)分配到In—ternet網(wǎng)的IP地址。
4 使用需注意的問題
由于GPRS網(wǎng)絡通信是以GSM網(wǎng)絡為基礎,GSM網(wǎng)絡的語音通信優(yōu)先級較高,當GPRS長時間在線但不產(chǎn)生流量時,數(shù)據(jù)業(yè)務的優(yōu)先級會自動降低,GGSN服務器則會為了節(jié)省線路帶寬斷開其網(wǎng)絡連接,此時對于GPRS模塊來說,雖說IP地址還在,但已無法進行數(shù)據(jù)傳輸。為了防止這種情況導致網(wǎng)絡的中斷,可在系統(tǒng)中設定“心跳”功能,通過單片機的定時器來實現(xiàn),每隔一段時間向服務器發(fā)送一個TCP數(shù)據(jù)包,以保證系統(tǒng)的網(wǎng)絡連接不斷線。“心跳”頻率應根據(jù)實際情況來設定,頻率不宜過高,以免產(chǎn)生過高的額外流量。
由于GPRS無線網(wǎng)絡受天氣環(huán)境影響較大,當出現(xiàn)雷雨等惡劣天氣或是信息擁塞時可能會發(fā)生數(shù)據(jù)包丟失、掉線等現(xiàn)象。為了防止丟包的現(xiàn)象發(fā)生,可以根據(jù)數(shù)據(jù)的重要性與否采取TCP或是UDP協(xié)議,TCP協(xié)議具有延時重發(fā)功能,對于UDP方式,則必須自行設計校驗和糾錯規(guī)則。對于受干擾掉線的問題則可定時測試網(wǎng)絡連通狀況,向遠程數(shù)據(jù)終端發(fā)送ICMP回顯請求(即ping命令),根據(jù)終端的應答情況來判斷網(wǎng)絡狀況。當多次請求未回應時即啟動GPRS模塊重新連接。
當數(shù)據(jù)采集模塊處于電磁干擾特別強烈的電力變壓器、電力整流器、電力開關產(chǎn)生的火花等環(huán)境中時,GPRS模塊和SIM卡運行時間長了偶爾會出現(xiàn)死機的現(xiàn)象,因此要對GPRS模塊和SIM卡實時監(jiān)測。
對GPRS模塊的監(jiān)測:每隔一定的時間對模塊進行AT指令測試,如果模塊有返回數(shù)據(jù)則說明模塊運行正常,沒有死機;如果沒有返回,則模塊出現(xiàn)問題,此時用單片機控制關閉模塊電源,幾秒鐘后再打開電源,重新啟動模塊。
對SIM卡的監(jiān)測:在模塊測試完畢后接著發(fā)送關于SIM卡的AT指令,如果返回OK則SIM卡工作正常,如果返回ERROR則SIM卡復位或者死機,此時可用AT指令重新啟動模塊。
5 結(jié) 語
本套數(shù)據(jù)采集模塊采用GPRS方式接入Internet網(wǎng)絡,不受地點與空間的限制,克服了傳統(tǒng)的電力系統(tǒng)設備監(jiān)控布線困難或是抄表系統(tǒng)效率低,可靠性差的缺點,可廣泛應用于電力工礦等生產(chǎn)行業(yè)設備運行監(jiān)控,居民生活區(qū)遠程抄表系統(tǒng),甚至于各種遠程家居電器控制系統(tǒng)等小流量高實時性的通信系統(tǒng)中。隨著3G網(wǎng)絡通信技術的成熟與應用,無線網(wǎng)絡通信的速度與可靠性將有變革性的提高,相信隨著新一代通信技術的發(fā)展,基于無線網(wǎng)絡的數(shù)據(jù)采集系統(tǒng)將有著更為廣闊的應用前景。