GPRS 通用無(wú)線分組業(yè)務(wù) (General Packet Radio Service)是利用包交換的概念發(fā)展的一套無(wú)線傳輸方式。GPRS網(wǎng)絡(luò)是基于現(xiàn)有的GSM(全球移動(dòng)通信系統(tǒng))網(wǎng)絡(luò)實(shí)現(xiàn)的。在現(xiàn)有的GSM網(wǎng)絡(luò)中需要增加一些節(jié)點(diǎn),如GGSN(GPRS網(wǎng)關(guān)支持節(jié)點(diǎn))和SGSN(GPRS服務(wù)支持節(jié)點(diǎn))。SGSN的主要作用是記錄移動(dòng)終端的當(dāng)前位置信息,并且在移動(dòng)終端與GGSN之間完成移動(dòng)分組數(shù)據(jù)的發(fā)送和接收。GGSN主要起網(wǎng)關(guān)作用,可以與多種不同的數(shù)據(jù)網(wǎng)絡(luò)連接,如ISDN(綜合業(yè)務(wù)數(shù)字網(wǎng))、PSPDN(包交換公用數(shù)據(jù)網(wǎng))和LAN(局域網(wǎng))等。GGSN可以把GSM網(wǎng)中的GPRS分組數(shù)據(jù)包 進(jìn)行協(xié)議轉(zhuǎn)換,從而把這些分組數(shù)據(jù)包傳送到遠(yuǎn)端的TCP/IP或X.25網(wǎng)絡(luò)。
GPRS網(wǎng)不但具有覆蓋范圍廣、數(shù)據(jù)傳輸速度快、通信質(zhì)量高、永遠(yuǎn)在線和按流量計(jì)費(fèi)等優(yōu)點(diǎn),而且其本身就是一個(gè)分組型數(shù)據(jù)網(wǎng),支持TCP/IP協(xié)議,無(wú)需經(jīng)過(guò)PSTN(公用電話交換網(wǎng))等網(wǎng)絡(luò)的轉(zhuǎn)接,可直接與Internet網(wǎng)互通。因此GPRS業(yè)務(wù)在無(wú)線上網(wǎng)、環(huán)境監(jiān)測(cè)、交通監(jiān)控、移動(dòng)辦公等行業(yè)中具有無(wú)可比擬的性價(jià)比優(yōu)勢(shì)。
系統(tǒng)設(shè)計(jì)目的:客戶端將數(shù)據(jù)采集器中采集到的數(shù)據(jù),通過(guò)RS232串口發(fā)送到GPRS數(shù)據(jù)傳輸終端;GPRS數(shù)據(jù)傳輸終端將數(shù)據(jù)轉(zhuǎn)換成TCP/IP包發(fā)送到GPRS網(wǎng)絡(luò)上,再經(jīng)過(guò)服務(wù)轉(zhuǎn)換進(jìn)入到Internet;監(jiān)控中心從Internet上獲取采集數(shù)據(jù)的TCP/IP包后,通過(guò)程序?qū)⒉杉瘮?shù)據(jù)的TCP/IP包還原成采集數(shù)據(jù),從而完成了從采集現(xiàn)場(chǎng)通過(guò)GPRS和Internet傳輸數(shù)據(jù)到監(jiān)控中心的整個(gè)通訊過(guò)。核心設(shè)計(jì)在于單片機(jī)與GPRS模塊的連接和通信軟件的編寫(xiě)。
1、系統(tǒng)設(shè)計(jì)方案一
GPRS無(wú)線數(shù)據(jù)傳輸系統(tǒng)由客戶端軟件、GPRS數(shù)據(jù)傳輸終端、GPRS網(wǎng)絡(luò)、服務(wù)器端軟件四部分組成(如圖 1所示)。客戶端軟件通過(guò)RS232串口對(duì)GPRS數(shù)據(jù)傳輸終端進(jìn)行收發(fā)控制,將采集數(shù)據(jù)發(fā)送到GPRS網(wǎng)絡(luò),再經(jīng)過(guò)服務(wù)轉(zhuǎn)換進(jìn)入到Internet網(wǎng)絡(luò),服務(wù)器端軟件接收通過(guò)GPRS網(wǎng)絡(luò)上傳的數(shù)據(jù),進(jìn)行處理并存儲(chǔ)到數(shù)據(jù)庫(kù);服務(wù)器端軟件采用Web頁(yè)面方式。
圖 1 系統(tǒng)結(jié)構(gòu)圖
系統(tǒng)各部分的說(shuō)明如下:
(1) 客戶端軟件。將采集數(shù)據(jù)通過(guò)串口發(fā)送到GPRS數(shù)據(jù)傳輸終端。
(2) GPRS數(shù)據(jù)傳輸終端。采用標(biāo)準(zhǔn)的RS232 接口,可以通過(guò)單片機(jī),使用相應(yīng)的AT命令對(duì)GPRS模塊進(jìn)行控制, 并連接到GPRS網(wǎng)絡(luò)。
(3) GPRS網(wǎng)絡(luò)。支持TCP/IP協(xié)議,可以直接與Internet互通。
(4) 服務(wù)器端軟件。服務(wù)器端軟件采用普通Internet上的主機(jī)方式;作為T(mén)CP服務(wù)器端應(yīng)具有靜態(tài)公網(wǎng)IP,開(kāi)放了偵聽(tīng)端口,可從外部訪問(wèn),其上運(yùn)行TCP端口監(jiān)聽(tīng)程序,接收來(lái)自GPRS客戶端的TCP數(shù)據(jù)包,并向GPRS客戶端發(fā)送回應(yīng)數(shù)據(jù)。
服務(wù)器端軟件主要任務(wù)是完成對(duì)通信數(shù)據(jù)的接收、分析和存儲(chǔ)。首先服務(wù)器端啟動(dòng)監(jiān)聽(tīng)線程,監(jiān)聽(tīng)TCP端口,接收到數(shù)據(jù)包后對(duì)獲取的數(shù)據(jù)包進(jìn)行分析,然后將分析后的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)(程序流程如圖 2所示)。服務(wù)器端軟件應(yīng)具有以下功能:① 監(jiān)聽(tīng)TCP端口;② 接收數(shù)據(jù)包分析數(shù)據(jù)、存儲(chǔ)數(shù)據(jù),發(fā)送接收應(yīng)答幀;③ 顯示接收到的數(shù)據(jù)。
圖2 服務(wù)器端軟件主程序流程圖
2、系統(tǒng)設(shè)計(jì)方案二
GPRS無(wú)線數(shù)據(jù)傳輸系統(tǒng)由客戶端軟件、GPRS數(shù)據(jù)傳輸終端、GPRS網(wǎng)絡(luò)、GPRS數(shù)據(jù)接收終端、服務(wù)器端軟件五部分組成(如圖 3所示)??蛻舳塑浖ㄟ^(guò)RS232串口對(duì) GPRS數(shù)據(jù)傳輸終端進(jìn)行收發(fā)控制,將采集數(shù)據(jù)發(fā)送到GPRS網(wǎng)絡(luò),再經(jīng)過(guò)服務(wù)轉(zhuǎn)換進(jìn)入到Internet網(wǎng)絡(luò)傳輸?shù)紾PRS數(shù)據(jù)接收終端,服務(wù)器端軟件從GPRS數(shù)據(jù)接收終端讀取數(shù)據(jù)并進(jìn)行處理和存儲(chǔ)到數(shù)據(jù)庫(kù)。
圖 3 系統(tǒng)結(jié)構(gòu)圖
系統(tǒng)各部分的說(shuō)明如下:
(1) 客戶端軟件。將采集數(shù)據(jù)通過(guò)串口發(fā)送到GPRS數(shù)據(jù)傳輸終端。
(2) GPRS數(shù)據(jù)傳輸終端。采用標(biāo)準(zhǔn)的RS232 接口,可以通過(guò)單片機(jī),使用相應(yīng)的AT命令對(duì)GPRS模塊進(jìn)行控制, 并連接到GPRS網(wǎng)絡(luò)。
(3) GPRS網(wǎng)絡(luò)。支持TCP/IP協(xié)議,可以直接與Internet互通。
(4) GPRS數(shù)據(jù)接收終端。GPRS數(shù)據(jù)接收終端和GPRS數(shù)據(jù)傳輸終端相對(duì)應(yīng),當(dāng)采集數(shù)據(jù)由GPRS數(shù)據(jù)傳輸終端上傳后,在另一端便是由GPRS數(shù)據(jù)接收終端來(lái)接收GPRS數(shù)據(jù)傳輸終端上傳的數(shù)據(jù)。
(5) 服務(wù)器端軟件。服務(wù)器端軟件采用C/S方式;通過(guò)串口接收來(lái)自GPRS數(shù)據(jù)接收終端的數(shù)據(jù)(程序流程如 圖 4所示)。服務(wù)器端軟件應(yīng)具有以下功能:① 串口通信;② 數(shù)據(jù)分析、存儲(chǔ);③ 顯示接收到的數(shù)據(jù)。
圖 4 服務(wù)器端軟件主程序流程圖
系統(tǒng)軟件采用C語(yǔ)言編寫(xiě),在MPLAB環(huán)境下編譯。由于本系統(tǒng)是遠(yuǎn)程管理終端的一個(gè)模塊,因此在程序的編寫(xiě)中要遵守一定的協(xié)議,這樣才能保證正確通信。程序的主體是如何控制GR47的AT命令對(duì)GR47進(jìn)行初始設(shè)置和對(duì)信息數(shù)據(jù)的處理。程序總體上可以分為以下幾個(gè)塊:GPRS連接的初始設(shè)置、短消息的判斷處理、無(wú)數(shù)據(jù)傳輸時(shí)的心跳處理、數(shù)據(jù)判斷轉(zhuǎn)發(fā)等。主程序是把這些程序塊有機(jī)結(jié)合到一起,相互控制,無(wú)限循環(huán)。
2.1連接的建立
GPRS模塊連接到Internet和GPRS網(wǎng)絡(luò)的實(shí)現(xiàn)過(guò)程如下:
(1)單片機(jī)軟件控制GR47模塊開(kāi)機(jī),等待此模塊正常啟動(dòng)。
(2)通過(guò)單片機(jī)和GR47模塊連接的串口,向GR47模塊寫(xiě)入相應(yīng)的AT設(shè)置命令,進(jìn)行初始化,使模塊成功粘附在GPRS網(wǎng)絡(luò)上,獲得網(wǎng)絡(luò)運(yùn)行商分配的動(dòng)態(tài)IP地址,與目的終端建立連接。
2.1.1基本設(shè)置
(1) GPRS ISP 碼。
AT+IISP1=*99***1# //全國(guó)通用
(2) 登錄用戶名。
AT+IUSRN=WAP//GPRS網(wǎng)絡(luò)登錄名
(3) 登錄密碼。
AT+IPWD=WAP// GPRS網(wǎng)絡(luò)登錄密碼
(4) MODEM 類型。
AT+IMTYP=2 //定義GPRS MODEM
(5) 初始化命令。
AT+IMIS=“AT+CGDCONT=1,ip,CMNET”
(6) 域名服務(wù)器。
AT+IDNS1=211.136.18.171
//DNS服務(wù)器地址,全國(guó)通用
(7) 擴(kuò)展碼(XRC)。
AT+IXRC=0
2.1.2 SOCKET設(shè)置
(1) 建立一個(gè)TCP通信。
AT+ISTCP:218.66.16.173,1024
建立SOCKET連接,218.66.16.173為應(yīng)用服務(wù)中心計(jì)算機(jī)端IP地址(實(shí)際地址由實(shí)際情況決定),1024 為端口號(hào)(端口號(hào)由中心SOCKET端口監(jiān)聽(tīng)程序設(shè)置決定)。 如果連接成功,LT8030返回I/xxx。xxx為L(zhǎng)T8030中本次SOCKET連接的句柄號(hào)。中心監(jiān)聽(tīng)程序會(huì)顯示連接的終端IP地址。如果連接失敗,LT8030返回I/ERROR(xxx)。xxx為錯(cuò)誤代碼。
(2) 發(fā)送數(shù)據(jù)。
AT+ISSND%:xxx,
發(fā)送數(shù)據(jù),xxx為句柄,
(3) 查詢SOCKET狀態(tài)。
AT+ISST:xxx
查詢SOCKET狀態(tài),xxx為句柄。 LT8030返回I/
(4) 接收數(shù)據(jù)。
AT+ISRCV:xxx
xxx為句柄。該指令會(huì)讀取LT8030通過(guò)該句柄從中心接收到的,存在Buffer 里的數(shù)據(jù);Buffer最大可存儲(chǔ)30K的數(shù)據(jù)。
(5) 關(guān)閉SOCKET通道。
AT+ISCLS:xxx
關(guān)閉SOCKET通道,xxx為句柄。
2.2、數(shù)據(jù)的處理
數(shù)據(jù)包在數(shù)據(jù)中心服務(wù)器和GPRS服務(wù)器中的傳輸是基于IP數(shù)據(jù)包的,但明文傳送IP包不可取,因此大多選用PPP(點(diǎn)對(duì)點(diǎn)協(xié)議)進(jìn)行傳輸,實(shí)現(xiàn)通過(guò)GPRS模塊的數(shù)據(jù)和Internet網(wǎng)絡(luò)的透明傳輸。GR47內(nèi)部集成了TCP/IP協(xié)議棧,所以用戶對(duì)IP協(xié)議相關(guān)的程序就不必編寫(xiě),可以直接通過(guò)GR47傳遞數(shù)據(jù)。
(1)模塊與Internet上PC機(jī)的數(shù)據(jù)傳輸:要求PC機(jī)具有公網(wǎng)的IP地址和開(kāi)放的端口以及監(jiān)視傳輸報(bào)文的運(yùn)行軟件。這樣,模塊與Internet傳輸數(shù)據(jù)時(shí),報(bào)文就會(huì)顯示。在模塊成功聯(lián)入網(wǎng)絡(luò)后,單片機(jī)只要將要發(fā)送的數(shù)據(jù)通過(guò)串口發(fā)給GR47,GR47就會(huì)把數(shù)據(jù)轉(zhuǎn)發(fā)給相應(yīng)的IP地址的PC機(jī)。
(2)短消息數(shù)據(jù)的處理:GR47具有GSM的功能,可以與手機(jī)發(fā)送和接收短消息。短消息采用PDU格式,在程序中需要判斷短消息的到來(lái)和讀取短信內(nèi)容,并根據(jù)內(nèi)容執(zhí)行相應(yīng)的功能,最后把結(jié)果構(gòu)造成PDU格式返回給相應(yīng)的發(fā)送者。
(3)GPRS通信心跳信息:網(wǎng)絡(luò)連接建立后,在設(shè)定周期內(nèi)無(wú)數(shù)據(jù)通信時(shí),GPRS模塊向數(shù)據(jù)服務(wù)中心發(fā)送心跳信息,數(shù)據(jù)服務(wù)中心收到心跳信息后,回應(yīng)應(yīng)答信號(hào)。
(4)重要數(shù)據(jù)的存儲(chǔ):程序中把一些重要的常用和易變的數(shù)據(jù)如計(jì)算機(jī)服務(wù)器的IP地址、端口號(hào)、終端地址、SIM卡號(hào)等存入單片機(jī)的EEPROM中。需要時(shí)從EEPROM中讀出或向EEPROM重新寫(xiě)入數(shù)據(jù)進(jìn)行設(shè)置。
2.3、主程序流程
主程序流程大致如下:首先進(jìn)行單片機(jī)設(shè)置變量的初始化,一般均為0;進(jìn)行單片機(jī)相應(yīng)配置單元的初始化,比如設(shè)定端口方向、設(shè)置中斷優(yōu)先級(jí)、定時(shí)器初始化等;然后由單片機(jī)控制GR47的電源,以決定是否開(kāi)機(jī);待開(kāi)機(jī)成功后,查詢網(wǎng)絡(luò)是否注冊(cè)成功;成功后即可建立模塊與PC機(jī)服務(wù)器的連接,并進(jìn)行數(shù)據(jù)傳輸和短消息處理;根據(jù)需要發(fā)送一定格式的心跳信息。(如圖 6所示)
圖6主程序流程圖