在傳統(tǒng)的移動網(wǎng)絡中,很多網(wǎng)絡問題需要工程師或者技術人員攜帶儀表駕車路測來發(fā)現(xiàn),。這種測試方法在以往的網(wǎng)絡優(yōu)化測試中已采用多年,存在系統(tǒng)復雜、人員管理不方便,、效率低下等問題,。且每個技術人員或工程師都不可能負責太多的基站小區(qū)優(yōu)化工作和問題分析。為此,建立無線網(wǎng)絡質量自動監(jiān)測系統(tǒng)的工作是有必要的,。
車載終端簡介
車載終端組成
圖1為車載終端的結構圖,車載數(shù)據(jù)終端主要包括單片機(rabbit2000)、GPS模塊,、CDMA 手機模塊,、GSM手機模塊、鐵電存儲器,、電源變換模塊等,。其中,CDMA模塊負責所采集數(shù)據(jù)的無線傳輸。
圖1 車載終端結構圖
車載終端工作原理
車載終端的工作原理可以描述為數(shù)據(jù)采集,、數(shù)據(jù)處理及存儲,、數(shù)據(jù)上傳幾個過程。其中數(shù)據(jù)采集讀取GPS模塊返回的消息,提取經(jīng)緯度信息,通過GSM和CDMA 模塊分別采集CDMA和GSM網(wǎng)絡質量參數(shù);數(shù)據(jù)處理及存儲根據(jù)經(jīng)緯度信息判斷車輛行駛距離,由此距離判斷是否記錄該次采集的數(shù)據(jù),上傳數(shù)據(jù)時再從鐵電中讀取這些數(shù)據(jù);數(shù)據(jù)上傳通過簡單IP實現(xiàn)與監(jiān)控中心的TCP連接,并實時檢測TCP連接狀態(tài),連接中斷則立即重新連接,保證數(shù)據(jù)能實時地上傳給監(jiān)控中心,。
數(shù)據(jù)傳輸?shù)膶崿F(xiàn)
硬件連接
本文中采用了MG815+模塊及UIM卡,硬件連接如圖2所示,。圖中左側為UIM卡連接參考電路,右側為MG815+模塊連接參考電路。由于模塊串口輸出電平為3.8V,而Rabbit串口輸出電平為5V,因此在兩者之間增加了串口電平轉換芯片NC7WZ07,以提升Rabbit和模塊之間串口通信的可靠性,。
圖2 MG815+及UIM卡的硬件連接圖
AT指令
AT(Attention) 指令最初由 Hayes 公司推出,主要用于對調制解調器的控制,現(xiàn)在已演化為一種標準,所有移動模塊都支持 AT 指令,。雖然不同廠家的手機模塊都參照 GSM 協(xié)議,但格式還是有所不同,開發(fā)過程中一定要認真參考廠家給的資料。AT 指令格式如下:
AT指令都以“AT”開頭,以結束,例如 “ATE0rn”
AT指令返回格式:<跟AT指令相關的字符串>,例如,對于上一AT命令的返回為“ATE0rnrnOKrn” ,。
TCP連接的建立
TCP的連接建立經(jīng)過以下過程:
① 建立撥號連接,AT命令為AT+ZPPPOPENrn,。
② 建立TCP連接,AT 命令為AT+ZIPSETUP=SOCKET_NUM, IP_AD, PORT_NUM rn,例如AT+ZIPSETUP=1,211.136.18.171,5000rn。
③ TCP連接成功建立后,可以發(fā)送數(shù)據(jù),AT命令為AT+ZIPSEND=, rrn,例如AT+ZIPSEND=1,4rgoodrn,發(fā)送的數(shù)據(jù)為“good”,。
這里所用到的查詢命令及各命令返回說明包括:
①查詢撥號連接狀態(tài)命令:AT+ZPPPSTATUSrn
返回有三種狀態(tài):撥號連接建立rn+ZPPPSTATUS: OPENEDrnrnOKrn
撥號連接斷開 rn+ZPPPSTATUS: CLOSEDrnr nOKrn
正在撥號 rn+ZPPPSTATUS: * rnrnOKrn
②查詢TCP連接狀態(tài)命令:AT+ZIPSTATUS= SOCKET_NUM rn
返回有三種狀態(tài):TCP連接建立 rn+ZIPSTATUS: ESTABLISHEDrnrnOKrn
TCP連接失敗 rn+ZIPSTATU S:CLOSEDrnrnOKrn
正在建立連接 rn+ZIPSTATUS:SYN_SENTrnrn OKrn
數(shù)據(jù)的發(fā)送和接收
模塊從TCP通道接收到數(shù)據(jù)后,由串口返回消息:+ZIPRECV:0,1,, rn,例如,+ZIPRECV: 0,10,1234567890rn,則TCP通道接收的數(shù)據(jù)為1234567890,。
+ZIPRECV為異步消息,在任意時刻返回,在接收該消息時要注意。
數(shù)據(jù)傳輸?shù)能浖O計
終端與監(jiān)控中心以報文形式交互數(shù)據(jù),報文包括數(shù)據(jù)包(采集的數(shù)據(jù)信息),、心跳包(定時發(fā)送,以維持網(wǎng)絡連接)以及校時請求,以上均由終端主動發(fā)起,監(jiān)控中心回復,。數(shù)據(jù)通信子程序的流程如圖3。
圖3 數(shù)據(jù)通信流程圖
根據(jù)流程圖可知,發(fā)送數(shù)據(jù)后等待監(jiān)控中心的回復消息,設置等待時間,若超時還無回復消息,則退出等待;下次發(fā)送數(shù)據(jù)時重新發(fā)送,。
數(shù)據(jù)傳輸實例
終端發(fā)送的數(shù)據(jù)包如下:
01780102000146003030407 5345460008184101641000105 03010701221632303903.6741N1215 3.1326E27990357079425-70-66-632 004070031040828531405011144 1801194100068722100694210807 02200906902012
數(shù)據(jù)包中0178為報文長度;01為版本號;02為命令字;0001為數(shù)據(jù)包序列號;460030304075345為UIM卡號;460008184101641為SIM卡號;00010503為系統(tǒng)工作狀態(tài)字;01為后面跟1條數(shù)據(jù)(每條長度126),。
0701221632303903.6741N12153.13 26E27990357079425-70-66-63200407003104082853140501114 418011941000687221006942 1080702200906902012為一條數(shù)據(jù),依次為時間、經(jīng)緯度,、C網(wǎng)質量參數(shù)和G網(wǎng)質量參數(shù),。
注意事項
拆包現(xiàn)象
模塊支持在TCP通道一次發(fā)送1024字節(jié)數(shù)據(jù),但模塊內(nèi)部發(fā)送緩沖區(qū)為536字節(jié),使用+ZIPSEND命令一次發(fā)送1024字節(jié)數(shù)據(jù)時,發(fā)送的1024 字節(jié)數(shù)據(jù)拆分為2條socket數(shù)據(jù)先后傳送給監(jiān)控中心服務器,。可通過降低一次發(fā)送的數(shù)據(jù)量來避免此現(xiàn)象,即一次傳輸不多于536字節(jié),。
連包現(xiàn)象
如果兩條+ZIPSEND指令時間間隔過小,或前一包數(shù)據(jù)還未發(fā)送成功時模塊收到新的數(shù)據(jù)發(fā)送命令,則模塊把兩條指令中的數(shù)據(jù)合并為一條socket數(shù)據(jù)發(fā)送,。此時,可以從兩方面解決此問題:一是模塊發(fā)送端每發(fā)送一個數(shù)據(jù)包后,等待監(jiān)控中心返回確認消息后再繼續(xù)其他工作,這樣只能最大限度地防止上述現(xiàn)象的發(fā)生;另一方面是在監(jiān)控中心接收端對上述現(xiàn)象進行容錯處理。
此外,如果監(jiān)控中心發(fā)送兩條數(shù)據(jù)的時間間隔太短,模塊接收數(shù)據(jù)時會出現(xiàn)中心發(fā)送的兩條數(shù)據(jù)合并,以+ZIPRECV消息從串口返回,終端處理TCP數(shù)據(jù)時要考慮此問題,。
異步消息的返回
模塊返回的異步消息主要為TCP通道返回的數(shù)據(jù),。該消息的返回格式在前文中已說明。由于異步消息返回時間的不確定性,該消息會以兩種方式從串口輸出,。一是單獨返回,。二是向模塊發(fā)送AT指令后,異步消息隨該指令的返回值一同返回,例如,當發(fā)AT指令查詢撥號連接狀況時,模塊在TCP通道收到數(shù)據(jù),則返回如下:rn+ZPPPSTATUS:OPENEDrnrnOK rn+ZIPRECV:1,24,002401810 000070312120016rn。在接收和處理異步數(shù)據(jù)時應充分考慮異步消息的這兩種返回情況,以免丟失數(shù)據(jù),。
結語
本文詳細論述了如何通過CDMA模塊MG815+的數(shù)據(jù)傳輸功能實現(xiàn)車載終端與監(jiān)控中心的通信,并給出了軟件設計流程,。最后對實測過程中遇到的問題提出相應解決方案,這對相關開發(fā)人員有很大的參考價值