李建勇,伍光勝,劉艷中
(廣東省大氣探測技術(shù)中心,廣州 510080)
為了使氣象探測資料具有一定的地域代表性,自動氣象站一般都安裝到省內(nèi)各地,分布上具有分散性和流動性的特點。按照業(yè)務(wù)化的要求,常規(guī)天氣下自動氣象站每5分鐘就要上傳一次報文,如果是災(zāi)害性天氣或公共突發(fā)事件氣象應(yīng)急過程中,自動氣象站就要求每分鐘上傳一組觀測資料。根據(jù)自動氣象站站點分布和資料傳輸?shù)奶攸c,自動氣象站一般則采用無線通信業(yè)務(wù)(如GPRS或CDMA)作為通信組網(wǎng)方式。在網(wǎng)絡(luò)數(shù)據(jù)傳輸應(yīng)用中,TCP協(xié)議會產(chǎn)生大量的網(wǎng)絡(luò)狀態(tài)確認(rèn)和數(shù)據(jù)確認(rèn)而消耗系統(tǒng)資源,UDP協(xié)議采用面向非連接的傳輸策略,會大大提高UDP協(xié)議的傳輸速度和效率,但UDP協(xié)議不提供數(shù)據(jù)傳送保證機制,這就降低了資料傳輸?shù)目煽啃?。因此,這就需要設(shè)計一個具有可靠UDP協(xié)議(Reliable UDP,簡稱RUDP)的通信終端,本文就通信終端的硬件和軟件設(shè)計及關(guān)鍵技術(shù)作相關(guān)論述。
GPRS(General Packet Radio Service)無線傳輸業(yè)務(wù)以其成本低廉、性能可靠等優(yōu)點,被無線通信系統(tǒng)廣泛采用。截止到2012年底,廣東省已建成由1900余個自動氣象站網(wǎng)組成的中尺度資料探測系統(tǒng)。網(wǎng)絡(luò)邏輯圖如圖1所示,系統(tǒng)由自動氣象站、數(shù)據(jù)通信終端單元(Data Communication terminal Unit,DCU)、數(shù) 據(jù) 處 理 中 心 (Data Process Center,DPC)以及GPRS網(wǎng)絡(luò)組成。自動氣象站主要負(fù)責(zé)采集氣溫、雨量、風(fēng)向、風(fēng)速等氣象要素,并形成數(shù)據(jù)報文;DCU將自動氣象站生成的數(shù)據(jù)傳輸?shù)紾PRS信網(wǎng)絡(luò);DPC對接收的報文進行分析處理。為了保證數(shù)據(jù)的安全,避免在傳輸過程中的泄漏,數(shù)據(jù)處理中心采用APN專線接入GPRS網(wǎng)絡(luò),在GGSN(網(wǎng)關(guān)支持節(jié)點)與移動公司互聯(lián)路由器之間采用GRE隧道,使用私網(wǎng)IP地址進行連接。按照業(yè)務(wù)化的要求,自動氣象站每5分鐘向數(shù)據(jù)處理中心上傳1份報文,加密觀測時每分鐘要上傳1份報文。探測資料實行全省統(tǒng)一采集、處理,該種組網(wǎng)方式大大提升了全省自動氣象站探測網(wǎng)資料的采集處理能力[1]。DCU作為數(shù)據(jù)上傳、命令下達的雙向通信設(shè)備,在系統(tǒng)中起著重要作用,它的性能直接影響業(yè)務(wù)系統(tǒng)運行效率。市場上絕大多數(shù)數(shù)據(jù)通信終端為了滿足不同用戶的不同需求,基本都采用的是透明UDP傳輸協(xié)議。為了增強數(shù)據(jù)傳輸?shù)目煽啃?,提高探測設(shè)備的來報率,在不改變原有自動氣象站軟件的情況下,就要對原本的通信協(xié)議進行改進。
圖1 系統(tǒng)網(wǎng)絡(luò)邏輯結(jié)構(gòu)
DCU應(yīng)具備串口通信功能,能夠收發(fā)自動氣象站數(shù)據(jù)和DPC的控制命令。此外DCU還應(yīng)具有自動登錄GPRS網(wǎng)絡(luò)、自動檢測網(wǎng)絡(luò)在線狀態(tài)、下線時自動撥號、按照設(shè)置的周期向數(shù)據(jù)處理中心發(fā)送注冊信息,以及按照設(shè)定的端口和協(xié)議向指定IP地址發(fā)送用戶協(xié)議數(shù)據(jù)等功能。
DCU硬件上可以分為電源、GPRS模塊、單片機和外圍部件4部分。電源主要為GPRS模塊和系統(tǒng)芯片提供電源;單片機主要內(nèi)嵌了TCP/IP協(xié)議,負(fù)責(zé)將采集器數(shù)據(jù)打包成用戶協(xié)議,控制GPRS模塊將數(shù)據(jù)發(fā)送到通信網(wǎng)絡(luò);GPRS模塊負(fù)責(zé)無線通信;外圍部件包括串口、SIM卡座接口等,完成接口的轉(zhuǎn)換。電路原理圖如圖2所示。
單片機選用W77E58芯片,其自帶的32KB ROM和1KB的SRAM,雙串口、雙指針、13個中斷源、3個16位定時器,能夠滿足硬件設(shè)計。I2C總線芯片選用CAT24WC64,用于存儲設(shè)備設(shè)置參數(shù),如通信波特率等。串行口通信芯片MAX202將通信信號轉(zhuǎn)換成RS232電平,實現(xiàn)與自動氣象站的通信。GPRS模塊采用MC35i模塊,它是Siemens公司新一代無線通信GSM模塊,內(nèi)嵌的軟件部分執(zhí)行應(yīng)用接口和所有GSM協(xié)議站的功能,它主要由GSM基帶處理器(GSM Baseband Processor)、GSM射頻部分、電源模塊(ASIC)、閃存、ZIF連接器、天線接口6部分組成[2]。
圖2 模塊硬件電路
DCU上電初始化后,就會連接配置MC35i模塊,成功后進行撥號,流程如圖3所示。撥號又分為2個階段:第一步首先登陸基站服務(wù)器;第二步通過基站服務(wù)器的LCP配置、PAP/CHAP認(rèn)證建立PPP鏈接,取得IP地址獲準(zhǔn)登陸到GPRS網(wǎng)絡(luò)。取得IP地址后,DCU就可在PPP協(xié)議的框架中嵌入TCP/IP協(xié)議進行網(wǎng)絡(luò)數(shù)據(jù)的傳輸。
圖3 軟件流程
按照功能層次從下到上軟件設(shè)計可以分為串口驅(qū)動層、GPRS模塊驅(qū)動層、PPP協(xié)議層、IP協(xié)議層、UDP協(xié)議層、RUDP協(xié)議層幾部分。串口驅(qū)動層是軟件最底層的協(xié)議,主要實現(xiàn)打開、關(guān)閉串口,讀寫串口數(shù)據(jù)的功能。GPRS模塊的驅(qū)動主要是依靠AT指令來完成,對于MC35i的配置和操作可參見其用戶資料和相關(guān)文獻,因比較成熟這里就不再詳細(xì)介紹。需要注意的是MC35i模塊在點火之前必須先關(guān)閉單片機的相應(yīng)串行口,否則MC35i會因載波不正常而無法工作,另外由于MC35i讀SIM卡大約需要10s時間,延時時間一定要夠用。PPP(Point to Point Protocol)協(xié)議也叫點對點協(xié)議,主要任務(wù)有鏈路建立、維護、拆除、上層協(xié)議協(xié)商和認(rèn)證等[3]。下面分別是打開、關(guān)閉串口和通過串口發(fā)送一個字符的程序:
在網(wǎng)絡(luò)數(shù)據(jù)傳輸應(yīng)用中,UDP協(xié)議特別適合于頻繁、少量的突發(fā)數(shù)據(jù)傳輸。UDP協(xié)議采用面向非連接的傳輸策略,使得UDP協(xié)議在數(shù)據(jù)傳輸過程中避免如TCP協(xié)議那樣產(chǎn)生大量的網(wǎng)絡(luò)狀態(tài)確認(rèn)和數(shù)據(jù)確認(rèn)而消耗系統(tǒng)資源,大大提高了UDP協(xié)議的傳輸速度和效率,同時也不存在如TCP協(xié)議的海量并發(fā)連接問題。對絕大多數(shù)基于消息包傳遞的應(yīng)用程序來說,特別在無線網(wǎng)絡(luò)中,基于幀的通信比基于流的通信更為直接和有效[4]。但UDP協(xié)議不提供數(shù)據(jù)傳送保證機制協(xié)議,存在可靠性差、傳輸功能單一的缺點。所以在充分利用UDP協(xié)議優(yōu)勢的前提下,為確保自動氣象站資料傳輸?shù)目煽啃裕岣呔W(wǎng)絡(luò)通信系統(tǒng)的性能,通過對UDP協(xié)議結(jié)構(gòu)的改進,解決UDP協(xié)議的無連接性、多個數(shù)據(jù)報突發(fā)傳輸時可能出現(xiàn)的數(shù)據(jù)報無序性及流量控制問題。
在網(wǎng)絡(luò)體系結(jié)構(gòu)中,UDP協(xié)議處于網(wǎng)絡(luò)層和應(yīng)用層之間的傳輸層,通過在傳輸層與應(yīng)用層之間加入可靠傳輸協(xié)議RUDP,形成5層的協(xié)議結(jié)構(gòu),包括應(yīng)用層、RUDP層、傳輸層、網(wǎng)絡(luò)層和物理層。
RUDP通過對UDP協(xié)議結(jié)構(gòu)的擴展,在原8個字節(jié)報頭的基礎(chǔ)上增加5個字節(jié),用于對自動氣象站資料進行有序報文封裝、站號標(biāo)識及報文識別,其結(jié)構(gòu)如下所示。
字節(jié)1~8 9 1 0 1 1 1 2 1 3 1 4~6 5 5 3 6 U D P報頭命令標(biāo)識I D高位I D低位數(shù)據(jù)包流水號高位數(shù)據(jù)包流水號低位用戶數(shù)據(jù),可變長度,一般小于1 K B
① 第9個字節(jié)“命令”指DCU與DPC通信的握手標(biāo)識,不同的標(biāo)識表示UDP包是注冊包(DCU上線時發(fā)出)、心跳包(DCU在線定時測試通信鏈路)還是用戶數(shù)據(jù)包等。
② 第10個字節(jié)“ID高位”和第11個字節(jié)“ID低位”指DCU標(biāo)識0~65 535,用于區(qū)別不同安裝地點的自動氣象站發(fā)送的信息。
③ 第12個字節(jié)“數(shù)據(jù)包序列號高位”和第13個字節(jié)“數(shù)據(jù)包序列號低位”指每個自動氣象站發(fā)送到DPC的數(shù)據(jù)包流水號,從0~65 535重復(fù)執(zhí)行,用于使UDP報文從無序變?yōu)橛行颉?/p>
④ 從第14個字節(jié)開始到第65 536個字節(jié)為自動氣象站的監(jiān)測數(shù)據(jù),根據(jù)自動氣象站每次觀測的數(shù)據(jù)量、無線傳輸網(wǎng)絡(luò)的特性及UDP協(xié)議的特點,用戶數(shù)據(jù)長度一般可設(shè)計小于1KB。
當(dāng)DCU完成與無線網(wǎng)絡(luò)有關(guān)PPP通信鏈路的操作協(xié)商后,IP通信鏈路被創(chuàng)建。DCU向通信服務(wù)系統(tǒng)發(fā)出長度為13字節(jié)的RUDP注冊包,在DPC進行登記后,就可以進行基于RUDP協(xié)議報文的資料傳輸,同時通過定時器的注冊包連續(xù)無回應(yīng)次數(shù)K來判斷通信鏈路是否建立成功,其工作流程如圖4所示。為了避免通信鏈路不穩(wěn)定或斷鏈時進行無效的數(shù)據(jù)傳輸,在每次完成緩沖隊列的數(shù)據(jù)傳輸前,都要進行鏈路RUDP心跳包(13字節(jié))測試。在數(shù)據(jù)等待隊列為空時,通過啟動定時器的次數(shù)M決定是否發(fā)送心跳包來保持DCU的PPP鏈路持續(xù)連接。當(dāng)永久連接的鏈路出現(xiàn)錯誤時,通過定時器的心跳包連續(xù)無回應(yīng)次數(shù)N來決定是否關(guān)閉通信鏈路。
圖4 RUDP協(xié)議的工作流程
在圖4的RUDP協(xié)議工作模式中,定時器1、定時器2、定時器3和K、M、N為何值時,RUDP協(xié)議工作在最佳狀態(tài)?在不同帶寬的通信網(wǎng)絡(luò)中,其取值可能不太一樣。如基于GPRS業(yè)務(wù)的自動氣象站資料傳輸網(wǎng)絡(luò)中,從DPC服務(wù)器到DCU的PING時間最大延時為3s,則對于小數(shù)據(jù)量注冊包和心跳包的定時器1及定時器2的等待時間可設(shè)定為6s左右,連續(xù)沒有收到ACK包的K、N值可設(shè)定為3次;對于每分鐘產(chǎn)生300字節(jié)的氣象觀測數(shù)據(jù)包,定時器3及定時器4的等待時間可設(shè)定為12s左右,M可在定時器3連續(xù)累計時間3~5min取值,視網(wǎng)絡(luò)情況及需要,若為3min,則 M為180/12=15。
基于RUDP的自動氣象站資料傳輸采用消息收發(fā)同步以及流量控制。探測數(shù)據(jù)傳遞的序號采用兩個字節(jié)無符號整數(shù)表示,取值范圍為0~65 535,形成一個大的循環(huán)隊列,發(fā)送數(shù)據(jù)大小相同且可設(shè)為一次探測數(shù)據(jù)的大小,有效地控制了發(fā)送數(shù)據(jù)的速度,防止在大流量時出現(xiàn)網(wǎng)絡(luò)過度擁塞的現(xiàn)象。在可靠數(shù)據(jù)傳遞協(xié)議中保證數(shù)據(jù)可靠傳遞的基本就是要使用確認(rèn)技術(shù)。在RUDP的設(shè)計中為了更好地控制流量,達到最大限度地利用網(wǎng)絡(luò)資源的目的,采用捎帶確認(rèn)、累計確認(rèn)和超時確認(rèn)方式相結(jié)合的方式來實現(xiàn)確認(rèn)。
通過對數(shù)據(jù)通信終端系統(tǒng)的設(shè)計,研究了基于UDP協(xié)議的可靠應(yīng)用傳輸協(xié)議。廣東省區(qū)域站監(jiān)測網(wǎng)絡(luò)中1800多個自動氣象站全部使用該DCU,實際應(yīng)用中取得了良好的效果,來報率達到99.7%以上。測試和應(yīng)用表明,該技術(shù)解決了基于無線網(wǎng)絡(luò)無人值守,及實時性、突發(fā)性UDP數(shù)據(jù)傳輸?shù)牟环€(wěn)定性、無序性等問題,實現(xiàn)了大規(guī)模突發(fā)浪涌氣象數(shù)據(jù)的實時傳輸,滿足氣象現(xiàn)代化業(yè)務(wù)的發(fā)展需求。
[1] 敖振浪,伍光勝,李建勇,等.基于GPRS技術(shù)的氣象站數(shù)據(jù)采集系統(tǒng)[J].廣東氣象,2007,29(4):1-4.
[2] Siemens.Siemens MC35iHardware Interface Description V04.00,2003.
[3] 杜建波.基于GPRS的實時在線環(huán)境監(jiān)測研究與實現(xiàn)[D].沈陽:沈陽理工大學(xué),2009:16-18.
[4] 伍光勝,宋信忠,鄭明輝.多線程技術(shù)及其應(yīng)用的研究[J].計算機應(yīng)用研究,2001,18(1):33-36.
[5] 施偉年,凌海宏.GPRS網(wǎng)絡(luò)上的兩種數(shù)據(jù)傳輸協(xié)議[J].電力系統(tǒng)通信,2004(8):20-22.
[6] 黃超.WINDOWS網(wǎng)絡(luò)編程[M].北京:人民郵電出版社,2003:264-301.
[7] 馮林,彭尉,滕弘飛.車輛監(jiān)控系統(tǒng)中通信服務(wù)器性能優(yōu)化設(shè)計與實現(xiàn)[J].計算機工程與應(yīng)用,2005,41(6):199-201.