聶明新,鄒 宇,莫 奎
(武漢理工大學(xué)信息工程學(xué)院,湖北 武漢 430070)
隨著基于TCP/IP協(xié)議的IP網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)已經(jīng)逐漸走進(jìn)了人們的生活,利用GPRS網(wǎng)絡(luò)作為傳輸媒介的遠(yuǎn)程監(jiān)控得到了日益普及。GPRS是通用分組無線業(yè)務(wù)的簡(jiǎn)稱,是在GSM基礎(chǔ)上發(fā)展起來的一種分組交換的數(shù)據(jù)承載和傳輸方式[1-2]。GPRS網(wǎng)絡(luò)能夠充分利用網(wǎng)絡(luò)資源,同時(shí)具有傳輸速率快,組網(wǎng)迅速靈活,通信質(zhì)量高,安全保密性高,永遠(yuǎn)在線和按流量計(jì)費(fèi)等優(yōu)點(diǎn),GPRS數(shù)據(jù)傳輸業(yè)務(wù)的應(yīng)用范圍非常廣泛,特別適用于頻發(fā)小數(shù)據(jù)量的實(shí)時(shí)傳輸,使其在獲得實(shí)時(shí)監(jiān)控信息方面有著不可比擬的優(yōu)勢(shì)[3-4]。
利用GPRS網(wǎng)絡(luò)作為傳輸媒介的遠(yuǎn)程監(jiān)控系統(tǒng)的發(fā)展相當(dāng)迅速,第二代準(zhǔn)數(shù)字化監(jiān)控系統(tǒng)產(chǎn)品正逐步被基于網(wǎng)絡(luò)服務(wù)器的第三代全數(shù)字化監(jiān)控系統(tǒng)所取代,它使得人們的生活方式、工作方式和思維方式都發(fā)生了巨大的變化,同時(shí)也刺激人們對(duì)電腦以外的各種數(shù)據(jù)源和網(wǎng)絡(luò)服務(wù)的需求日益增長[5-6]。然而任何一種業(yè)務(wù)的成功與否最終取決于市場(chǎng),用戶關(guān)心的并不是運(yùn)營商會(huì)采取哪種技術(shù),而是營運(yùn)商能為他們提供怎樣的服務(wù),他們將為此付出怎樣的價(jià)格。但是,由于Internet公網(wǎng)上靜態(tài)IP資源的稀缺性和租用昂貴性,目前的網(wǎng)絡(luò)用戶基本上只能采取動(dòng)態(tài)IP接入方式連接Internet公網(wǎng),若研究的產(chǎn)品是基于靜態(tài)的,那么其在現(xiàn)實(shí)生活中的應(yīng)用會(huì)耗費(fèi)大量的財(cái)力。
筆者采用AT89S52單片機(jī)與華為GTM900C的無線通信模塊,設(shè)計(jì)并實(shí)現(xiàn)了基于動(dòng)態(tài)IP的GPRS 遠(yuǎn)程監(jiān)控系統(tǒng)[7]。
整個(gè)系統(tǒng)由下位機(jī)監(jiān)測(cè)與上位機(jī)軟件兩部分構(gòu)成[8]。其系統(tǒng)架構(gòu)如圖1所示。
圖1 系統(tǒng)架構(gòu)
下位機(jī)監(jiān)測(cè)部分包括傳感器、微控制器和GPRS無線通信模塊。當(dāng)系統(tǒng)開機(jī)啟動(dòng)后,完成對(duì)GPRS模塊的正常開機(jī)檢驗(yàn)和初始化操作,系統(tǒng)進(jìn)入監(jiān)控狀態(tài)。傳感器負(fù)責(zé)獲取實(shí)時(shí)監(jiān)控信息,監(jiān)控信息通過串口連接傳送給微處理器,微處理器對(duì)監(jiān)控信息進(jìn)行提取、篩選、編碼和加密,并通過微處理機(jī)將處理后的監(jiān)控信息傳送給GPRS無線通信模塊,利用GPRS模塊將數(shù)據(jù)通過無線數(shù)據(jù)傳輸給上位機(jī),并通過監(jiān)控中心上位機(jī)的返回值確認(rèn)發(fā)送的信息成功與否。當(dāng)TCP連接受到外界因素的干擾意外斷開時(shí),GPRS終端會(huì)自動(dòng)地向監(jiān)控中心發(fā)起注冊(cè)申請(qǐng)重新建立連接。
上位機(jī)部分包括數(shù)據(jù)的接收、數(shù)據(jù)的處理和控制信息的處理。數(shù)據(jù)接收部分包括與下位機(jī)鏈路連接和信息接收的差錯(cuò)處理,數(shù)據(jù)的處理部分可對(duì)接收到的信號(hào)進(jìn)行解碼并顯示,控制信息的處理部分可以通過GPRS網(wǎng)絡(luò)對(duì)下位機(jī)軟件傳送控制信息。下位機(jī)監(jiān)測(cè)終端的硬件結(jié)構(gòu)如圖2所示。
圖2 監(jiān)測(cè)終端的硬件結(jié)構(gòu)圖
從系統(tǒng)原理可知,利用GPRS網(wǎng)絡(luò)傳輸數(shù)據(jù)之前,要解決GPRS無線模塊和上位機(jī)軟件的網(wǎng)絡(luò)連接。完成這一步必須首先完成GPRS的附著和分組數(shù)據(jù)協(xié)議(packet data protocol,PDP)上下文的激活過程,激活過程中采用的是IP協(xié)議,保證數(shù)據(jù)以IP報(bào)的形式進(jìn)行傳送。GTM900C模塊終端具有內(nèi)置的協(xié)議棧,支持TCP/IP方式發(fā)送數(shù)據(jù),能方便用戶進(jìn)行軟件的開發(fā)。模塊與控制器間的通信協(xié)議是AT命令集。具體對(duì)模塊的設(shè)置步驟如下:
(1)確定模塊通信波特率,默認(rèn)的通信速度為9 600 b/s。
(2)檢查SIM工作是否正常。AT+CPIN?如果返回+CPIN:READY OK為正常工作。
(3)模塊對(duì)輸入輸出數(shù)據(jù)進(jìn)行轉(zhuǎn)換。AT%IOMODE=1,1,0,如果返回OK為正常設(shè)置。
(4)注冊(cè)移動(dòng)CMNET網(wǎng)關(guān)。AT+CGDCONT=1,"IP","CMNET"。
(5)查詢模塊能否使用GPRS。AT+CGREG?當(dāng)從模塊返回+CGREG:1,1 OK就證明注冊(cè)成功。
(6)模塊網(wǎng)絡(luò)注冊(cè)提示。AT+CGREG=1當(dāng)模塊從GPRS網(wǎng)絡(luò)中掉線,會(huì)自動(dòng)上報(bào)+CGREG:1,0 OK 。
(7)注冊(cè)用戶名密碼,GPRS初始化,并等分配IP。AT%ETCPIP?獲得本地IP地址以及DNS服務(wù)器的地址。建議將AT命令等待時(shí)間設(shè)定為10 s,注冊(cè)過程中做其他AT操作會(huì)注冊(cè)不到IP。
(8)設(shè)置接收服務(wù)器的協(xié)議類型、IP和端口號(hào)。如 AT%IPOPEN="TCP","61.144.176.175",10000。
(9)打開GPRS模塊與上位機(jī)的連接。AT%IPOPEN="TCP","61.144.177.202",10000,返回的結(jié)果為CONNECT就實(shí)現(xiàn)了模塊與上位機(jī)的正常連接。
(10)關(guān)閉 GPRS模塊與上位機(jī)的連接。AT%IPCLOSE,模塊退出 TCP/IP功能,從 GPRS網(wǎng)絡(luò)注銷。OK的返回最長需要15 s。
在完成以上模塊初始化的過程中,相鄰AT命令(除特別指出的AT命令以外)間發(fā)送需要有一定的間隔時(shí)間,3 s是可以滿足要求的。然后通過串口中斷函數(shù)接收AT命令發(fā)送后的返回值。需要注意的是AT命令的結(jié)束符是回車鍵,需要以字符串的形式傳送。
數(shù)據(jù)傳輸終端軟件實(shí)現(xiàn)的關(guān)鍵是單片機(jī)與GPRS模塊的通信,兩者之間需要有定義的通信協(xié)議,規(guī)定數(shù)據(jù)傳輸?shù)膸袷剑ㄟ^AT命令來實(shí)現(xiàn)GPRS的網(wǎng)絡(luò)附著、PDP的激活、Internet的接入及數(shù)據(jù)傳輸。終端程序流程圖如圖3所示。
圖3 終端程序流程圖
2.2.1 AT指令的調(diào)試
用單片機(jī)向模塊發(fā)送AT指令時(shí),字符格式的AT命令只有將ASCII編碼轉(zhuǎn)化為二進(jìn)制數(shù),才能通過串口進(jìn)行收發(fā),AT命令的結(jié)束符是回車鍵,AT命令的返回值都是以不可打印字符“0A0D”開始和結(jié)束的。單片機(jī)以一定的協(xié)議向模塊發(fā)送AT指令,GPRS模塊根據(jù)收到的指令會(huì)有返回值,單片機(jī)通過返回值對(duì)模塊的狀態(tài)進(jìn)行校驗(yàn)。單片機(jī)發(fā)送指令的實(shí)質(zhì)是以位為單位進(jìn)行收發(fā)的。
2.2.2 波特率的設(shè)置
由于GTM900C模塊默認(rèn)出廠的通信速度為9 600 b/s,因此設(shè)置單片機(jī)與模塊進(jìn)行通信的速率也應(yīng)該為9 600 b/s。系統(tǒng)中的通信不暢通常是由于波特率配置不當(dāng)。
2.2.3 驅(qū)動(dòng)函數(shù)的結(jié)構(gòu)
驅(qū)動(dòng)函數(shù)的結(jié)構(gòu)關(guān)鍵是串行口驅(qū)動(dòng)層,它實(shí)現(xiàn)打開串口、關(guān)閉串口、讀串口數(shù)據(jù)和寫串口數(shù)據(jù)等操作。然后,在這些串口函數(shù)的基礎(chǔ)上編寫GPRS模塊的驅(qū)動(dòng)函數(shù),如GPRS模塊初始化函數(shù)、撥號(hào)連接函數(shù)與斷開連接函數(shù)、數(shù)據(jù)接收和發(fā)送函數(shù),以及重啟模塊函數(shù)等。
(1)GPRS模塊初始化函數(shù)。模塊開機(jī)啟動(dòng)之后,需要通過AT命令來設(shè)置模塊波特率,打開回顯,檢查SIM工作是否正常,檢查GSM網(wǎng)絡(luò)注冊(cè)情況等,這些都需要在模塊的初始化函數(shù)中完成,以保證模塊后續(xù)工作過程能夠正常。
(2)撥號(hào)連接函數(shù)與斷開連接函數(shù)。當(dāng)模塊完成初始化后需要與中心服務(wù)器終端建立網(wǎng)絡(luò)連接,這個(gè)連接過程需要通過撥號(hào)連接函數(shù)來完成,模塊在關(guān)機(jī)之前要注銷GPRS網(wǎng)絡(luò),由斷開連接函數(shù)來完成。
(3)數(shù)據(jù)接收和發(fā)送函數(shù)。單片機(jī)通過串口與模塊相連,它將GPRS模塊中發(fā)送或接收的數(shù)據(jù)以及相應(yīng)的AT命令編寫成相應(yīng)的數(shù)據(jù)接收和發(fā)送函數(shù),通過無線模塊來實(shí)現(xiàn)模塊與上位機(jī)的無線數(shù)據(jù)傳輸。
(4)重啟模塊函數(shù)。在模塊的一系列設(shè)置過程中,可能由于噪聲等外界因素的影響使得模塊在某種狀態(tài)下出現(xiàn)故障,不能正常工作,在這種情況下,需要重啟模塊,從模塊的初始化等一系列的設(shè)置工作開始。
各監(jiān)控前端通過監(jiān)控器獲取監(jiān)控信息,并對(duì)監(jiān)控信息進(jìn)行提取做出準(zhǔn)確的判斷,根據(jù)具體的監(jiān)控信息經(jīng)過特定的數(shù)字化壓縮編碼,通過ADSL上傳Internet公網(wǎng);監(jiān)控中心主機(jī)同樣通過ADSL接入Internet公網(wǎng),訪問各監(jiān)控前端IP地址并讀取相關(guān)數(shù)據(jù),經(jīng)專用配套上位機(jī)軟件解碼后實(shí)時(shí)顯示監(jiān)控信息,根據(jù)具體監(jiān)控信息做出相關(guān)的人為設(shè)置和處理。
從上述軟件分析中可以看出,網(wǎng)絡(luò)連接中關(guān)鍵的一個(gè)問題是IP的獲取。下面就基于動(dòng)態(tài)IP的GPRS遠(yuǎn)程監(jiān)控系統(tǒng)實(shí)現(xiàn)相應(yīng)調(diào)整和改進(jìn)進(jìn)行說明[9-11]。
上位機(jī)軟件通過 ADSL撥號(hào)接入,其IP由DHCP服務(wù)器動(dòng)態(tài)分配,只能通過網(wǎng)卡的MAC地址進(jìn)行定位,目前通過專業(yè)的網(wǎng)站能夠直接獲取電腦連接服務(wù)器的IP。通過人為的輸入中心服務(wù)器IP地址給上位機(jī),上位機(jī)以短信發(fā)送的方式將監(jiān)控中心的IP地址直接發(fā)送給GPRS模塊,利用GPRS模塊中設(shè)計(jì)的下位機(jī)軟件IP譯碼,即可讓GPRS模塊獲得中心服務(wù)器的IP,以實(shí)現(xiàn)GPRS模塊和監(jiān)控中心的連接并及時(shí)獲取當(dāng)前的監(jiān)控信息。對(duì)于這樣的方案必須配備專用的上位機(jī)軟件,支持通過Internet網(wǎng)絡(luò)直接給SIM卡發(fā)送短信,也可通過手機(jī)直接給監(jiān)控終端以短信形式發(fā)送IP地址給模塊,即可解決IP問題。當(dāng)成功實(shí)現(xiàn)上位機(jī)與GPRS模塊的連接后,就可以實(shí)現(xiàn)兩者之間的數(shù)據(jù)傳輸,斷開連接可以通過上位機(jī)給GPRS發(fā)送AT命令來解決。建立動(dòng)態(tài)IP連接的流程圖如圖4所示。
圖4 建立動(dòng)態(tài)IP連接的流程圖
在實(shí)驗(yàn)過程中路由器作為服務(wù)器,上位機(jī)與GPRS模塊建立連接的過程如下:
(1)通過路由器作為服務(wù)器,將路由器后面配備的上位機(jī)軟件打開,偵聽端口工作。
(2)將查到的路由IP通過網(wǎng)絡(luò)以短信形式發(fā)送給下位機(jī)終端。
(3)將該電腦的IP掛到路由器虛擬服務(wù)上,設(shè)置端口號(hào)。
(4)GPRS模塊連接上位機(jī)軟件設(shè)置的IP就是路由的IP和虛擬服務(wù)器上開放的端口號(hào)。
(5)通過 AT命令 AT%IPOPEN="TCP","61.144.177.202",300,返回的結(jié)果為 CONNECT就實(shí)現(xiàn)了模塊與上位機(jī)的正常連接,設(shè)置的端口號(hào)應(yīng)該與服務(wù)器開放的端口號(hào)一致。
為了實(shí)現(xiàn)遠(yuǎn)程監(jiān)控和無線數(shù)據(jù)的傳輸,必須使上位機(jī)軟件與監(jiān)控終端連接成功。上位機(jī)軟件設(shè)計(jì)采用Visual Basic開發(fā),該軟件可提供一個(gè)可視化的、方便的、直觀的監(jiān)控界面,能夠及時(shí)了解監(jiān)控終端的數(shù)據(jù)情況,并快捷地處理異常和排除故障,可以實(shí)時(shí)地與GPRS模塊通信,實(shí)現(xiàn)遠(yuǎn)程控制。中心服務(wù)器的軟件設(shè)計(jì)本質(zhì)上也是網(wǎng)絡(luò)通信編程。
開機(jī)啟動(dòng)GTM900-C模塊,裝入移動(dòng)的SIM卡后,經(jīng)過一定的時(shí)延(大約3 s),模塊開機(jī)正常啟動(dòng),信號(hào)指示燈以1 s的間隔閃爍。當(dāng)下位機(jī)終端監(jiān)測(cè)到異常信息就發(fā)出報(bào)警信息,實(shí)現(xiàn)穩(wěn)定實(shí)時(shí)的數(shù)據(jù)傳輸。
基于動(dòng)態(tài)IP的GPRS遠(yuǎn)程監(jiān)控系統(tǒng),繼承了固定IP的GPRS遠(yuǎn)程監(jiān)控的優(yōu)點(diǎn),能夠?yàn)橛脩籼峁?shí)時(shí)、高效的網(wǎng)絡(luò)接入方式,保證監(jiān)控前端和監(jiān)控中心能夠雙向、實(shí)時(shí)、對(duì)等地傳輸數(shù)據(jù),還能減少固定IP租用的昂貴成本,在實(shí)際應(yīng)用中有較大的優(yōu)勢(shì)??紤]到移植的需要,在設(shè)計(jì)過程中應(yīng)該將模塊的驅(qū)動(dòng)程序模塊化,只需稍加改動(dòng)就能使該系統(tǒng)廣泛適用于環(huán)境監(jiān)測(cè)、交通監(jiān)控和移動(dòng)辦公等各個(gè)行業(yè)。
[1] 王磊,馮占軍.基于GPRS網(wǎng)絡(luò)的嵌入式無線數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].測(cè)控技術(shù),2007,26(9):17-19.
[2] 郭愛煌,李廣宇,陳志雄.基于GPRS的無線數(shù)據(jù)傳輸嵌入式系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)工程,2009,35(18):260-262.
[3] 郝記生,張曦煌.基于GPRS的無線數(shù)據(jù)傳輸[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(20):5224-5226.
[4] 文藝,遲永斌,袁建忠.GPRS無線數(shù)據(jù)傳輸?shù)目刂破髟O(shè)計(jì)[J].煤礦機(jī)械,2009,30(11):222-224.
[5] 繆愛國.基于GPRS的無線終端的設(shè)計(jì)與實(shí)現(xiàn)[D].南京:東南大學(xué)圖書館,2005.
[6] 付揚(yáng),趙麗麗.基于GPRS的嵌入式遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)技術(shù)與應(yīng)用,2009(1):127-130.
[7] 李群芳,張世軍,黃建.單片機(jī)微型計(jì)算機(jī)與接口技術(shù)[M].北京:電子工業(yè)出版社,2007:104-112.
[8] 王小偉,余先濤,戴延浩.基于CAN總線的接觸網(wǎng)隔離開關(guān)監(jiān)控系統(tǒng)設(shè)計(jì)[J].武漢理工大學(xué)學(xué)報(bào):信息與管理工程版,2010,32(5):703-706.
[9] 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)[M].北京:電子工業(yè)出版社,2008:117-126.
[10] 龔建偉,熊光明.Visual C++/Turbo C串口通信編程實(shí)踐[M].北京:電子工業(yè)出版社,2004:1-15.
[11] SHIVENDRA S P,MAO S W,RYOO J D,et al.TCP/IP基礎(chǔ)教程:基于實(shí)驗(yàn)的方法[M].陳涓,譯.北京:人民郵電出版社,2006:12-18.