基于GPRS的遠程數(shù)據(jù)采集模塊
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”?!癈MNET”命令設置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)絡連接不斷線?!靶奶鳖l率應根據(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)將有著更為廣闊的應用前景。
評論