張 清 何金偉 楊炳華
摘 要:準確、迅速的數(shù)據(jù)傳輸是人工影響天氣作業(yè)指揮系統(tǒng)的重要保證,要求精簡高效的通信協(xié)議支持。根據(jù)《XR-08型人工影響天氣作業(yè)指揮通信終端》的電路結(jié)構(gòu)和流程分析,結(jié)合GSM/GPRS與Internet網(wǎng)絡資源特點,自定義終端注冊流程、數(shù)據(jù)幀結(jié)構(gòu)和指令編碼方法,設計了一種適應GSM/GPRS遠程數(shù)據(jù)傳輸?shù)膽脤油ㄐ艆f(xié)議,并給出協(xié)議編碼規(guī)范、幀結(jié)構(gòu)和實現(xiàn)框架,創(chuàng)新地將GSM/GPRS和Internet網(wǎng)絡同時引入到人工影響天氣作業(yè)指揮服務中。
關鍵詞:通信協(xié)議;TCP/IP;GPRS;人工影響天氣
中圖分類號:TP319
人工影響天氣作業(yè)指揮系統(tǒng)是支撐人工影響天氣業(yè)務的技術保障系統(tǒng),用科學指揮是現(xiàn)代人工增雨、防雹作業(yè)的必然要求。在實施人工影響天氣作業(yè)過程中,準確、迅速的信息傳輸是提高作業(yè)的科學性、準確性和時效性的基本保證。利用遠程數(shù)據(jù)傳輸,以遠程通信管理指揮中心計算機和各作業(yè)點通信終端,來實現(xiàn)指揮中心和各作業(yè)點之間指令和資料的上傳下達,作業(yè)現(xiàn)場安全監(jiān)控。在遠程數(shù)據(jù)傳輸中,需要精簡高效的通信協(xié)議支持。以下結(jié)合人工影響天氣作業(yè)指揮系統(tǒng)的通信構(gòu)架,系統(tǒng)闡述其遠程通信協(xié)議設計。
1 系統(tǒng)通信要求
1.1 系統(tǒng)通信構(gòu)架
人工影響天氣作業(yè)指揮系統(tǒng)采用基于GSM/GPRS網(wǎng)絡的數(shù)據(jù)傳輸模式,指揮中心通過Internet,采用TCP/IP協(xié)議連接到GPRS網(wǎng)絡,通過GPRS對各作業(yè)點進行指令和資料的下達,各作業(yè)點通信終端采用嵌入式ARM系統(tǒng)設計,利用GPRS上傳作業(yè)數(shù)據(jù)、位置信息、現(xiàn)場圖像。
區(qū)域中心服務器在指揮中心和作業(yè)點之間起橋梁作用,區(qū)域中心服務器具有固定IP,指揮中心能夠訪問公網(wǎng),其結(jié)構(gòu)如圖1所示。
1.2 協(xié)議結(jié)構(gòu)
移動通信網(wǎng)絡傳輸層協(xié)議包括TDMA900/1 800 MHz數(shù)字公用陸地蜂窩移動通信網(wǎng)相關通信標準和協(xié)議,支持短消息分組數(shù)據(jù)協(xié)議和互聯(lián)網(wǎng)IP協(xié)議。應用層協(xié)議標識包括應用系統(tǒng)的設備編號、業(yè)務數(shù)據(jù)類型、數(shù)據(jù)內(nèi)容等。SMPP為短消息點對點協(xié)議,TCP/UDP采用TCP/UDP協(xié)議,PPP協(xié)議為點對點協(xié)議,XR[CD*2]08 應用層協(xié)議定義了在應用層數(shù)據(jù)傳輸?shù)囊?guī)程,如圖2所示。
2 通信協(xié)議設計與實現(xiàn)
應用層協(xié)議定義和規(guī)范了通信終端與指揮中心、通信終端與服務器、指揮中心與服務器的通信協(xié)議,其中包含了終端注冊、指令、資料和圖像傳輸。協(xié)議的實現(xiàn)在終端上用C語言編程,基于嵌入式Linux操作系統(tǒng),指揮中心與服務器程序采用Delphi語言。
2.1 終端注冊
2.1.1 終端注冊流程
指揮中心向區(qū)域中心服務器注冊:由指揮中心指揮臺(以下簡稱指揮臺)通過Internet將其ID端口號和所屬的各作業(yè)點的ID號傳送到區(qū)域中心服務器,區(qū)域中心服務器記錄到數(shù)據(jù)庫。
通信終端向區(qū)域中心服務器注冊:XR[CD*2]08通信終端登陸GPRS網(wǎng)絡后,向區(qū)域中心服務器的固定IP地址發(fā)送注冊信息,區(qū)域中心服務器通過通信終端注冊的ID號在數(shù)據(jù)庫中查找其所屬指揮臺的ID號;然后通過找到的ID號在數(shù)據(jù)庫查找指揮臺的IP地址和端口號,發(fā)送給XR[CD*2]08通信終端,這樣終端就得到了指揮臺的IP地址和端口號并記錄下來。
通信終端向指揮臺注冊:XR[CD*2]08通信終端通過指揮臺的IP地址和端口號向指揮臺發(fā)送注冊信息,建立連接。
通過以上三個步驟,系統(tǒng)完成注冊過程。
2.1.2 終端注冊數(shù)據(jù)幀結(jié)構(gòu)
終端注冊過程的信息交換采用數(shù)據(jù)幀進行傳輸,其幀結(jié)構(gòu)定義如下。
標志頭[HJ0]數(shù)據(jù)源け曛局±嘈酮け曛臼據(jù)[HJ0][HJ][HT5SS]
標志頭:用于注冊過程數(shù)據(jù)幀的鑒別;
內(nèi)容:“WXRY”;
字長:4 B。
數(shù)據(jù)源標志:用于區(qū)分通信終端與指揮中心;
內(nèi)容: “1” :通信終端“2”:指揮中心;
字長:1 B。
幀類型:用于區(qū)分該幀信息是主動發(fā)送還是響應幀,不論指揮中心還是通信終端。
內(nèi)容: “1”:主動信息“2”:響應信息;
字長:1 B;
數(shù)據(jù):具體數(shù)據(jù)內(nèi)容,字長可變。
2.2 指令傳輸
2.2.1 幀結(jié)構(gòu)
通信終端與指揮中心之間信息交換采用數(shù)據(jù)幀進行傳輸,其幀結(jié)構(gòu)定義如下。[HJ1][HJ]
[HT6K]
標志頭[HJ0]單/多幀け曛局鞫/回復け曛維IMID(可選)指令編碼參數(shù)[HJ0][HJ][HT5SS]
標志頭:用于指揮中心與通信終端之間的鑒別;
內(nèi)容:“BXR”;
字長:3 B。
單/多幀標志:用于區(qū)分該數(shù)據(jù)是單幀數(shù)據(jù)還是多幀數(shù)據(jù);
內(nèi)容: “1” 為單幀,“2”為多幀;
字長:1 B。
主動/響應標志:用于區(qū)分該幀信息是主動發(fā)送還是響應幀,不論指揮中心還是XR[CD*2]08通信終端;
內(nèi)容: “1”為主動信息,“2”為響應信息;
字長:1 B。
SIMID:指揮中心根據(jù)它來識別是哪個通信終端發(fā)出的信息,若指揮中心向通信終端發(fā)送,則不填此項,因為指揮中心根據(jù)與通信終端建立連接后儲存了通信終端的IP地址和端口號,通過其就能找到通信終端。[HJ*2/3][HJ]
內(nèi)容: SIM卡識別碼;[HJ*2/3][HJ]
字長: 20 B;[HJ*2/3][HJ]
指令編碼:[HJ*2/3][HJ]
內(nèi)容: “A”[CD*2]“Z”,
字長: 1 B。
參數(shù):根據(jù)需要可選。
[BT4+*4]2.2.2 指令編碼方法
指令編碼定義了主動發(fā)送幀和響應幀的具體幀格式如表1所示。[LM]
2.3 資料和圖像的傳輸
由于資料和圖像數(shù)據(jù)量一般比較大,得分多幀傳送。幀格式同指令傳送,含起始幀、數(shù)據(jù)幀、結(jié)束幀。
2.3.1 起始幀傳送格式和數(shù)據(jù)結(jié)構(gòu)
起始幀傳送格式如表2所示。
單/多幀け曛局鞫/回復け曛局噶瞠け嗦氬問
發(fā)送方“2”“1”“S”起始幀數(shù)據(jù)結(jié)構(gòu)
接收方“2”“2”“S”無[HJ0][HJ][HT5SS]
起始幀數(shù)據(jù)結(jié)構(gòu):
[JY]//數(shù)據(jù)類型(雷達回波、現(xiàn)場圖象、地圖、軟件),雷達回波=1
BYTE infoStruct;256];[JY]//數(shù)據(jù)說明信息
} StartFrame;
//發(fā)送方發(fā)送后等待接收方響應;接收方收到后根據(jù)StartFrame.Size申請數(shù)據(jù)存放緩沖區(qū),保存開始幀;根據(jù)幀數(shù)建接收表,初始化為‘0;發(fā)送響應幀
[BT4]2.3.2 數(shù)據(jù)幀傳送格式和數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)幀傳送格式見表3。
[HT6H][STHZ][JZ]表3 數(shù)據(jù)幀傳送格式[STBZ][HT6K]
[HJ0]單/多幀け曛局鞫/回復け曛局噶瞠け嗦氬問
發(fā)送方“2”“1”“S”數(shù)據(jù)幀數(shù)據(jù)結(jié)構(gòu)[HJ0][HJ][HT5SS]
數(shù)據(jù)幀數(shù)據(jù)結(jié)構(gòu):
//接收方收到后根據(jù)DataFrame.FrameNo將Data;StartFrame.FrameSize-1]送入緩沖區(qū),
//將接收表相應位置置為‘1
//為了保證傳輸速率,接收方不需回復。
2.3.3 結(jié)束幀傳送格式
發(fā)送方根據(jù)接收方發(fā)送的接收表,確定對方是否收到所有的數(shù)據(jù),若有丟包情況,則重新傳丟失幀,傳送格式見表4。
[HJ0]單/多幀け曛局鞫/回復け曛局噶瞠け嗦氬問
發(fā)送方“2”“1”“E”StartFrame.ID
接收方“2”“2”“E”StartFrame.ID,接收表