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