李建勇,伍光勝,劉艷中
(廣東省大氣探測技術中心,廣州 510080)
為了使氣象探測資料具有一定的地域代表性,自動氣象站一般都安裝到省內各地,分布上具有分散性和流動性的特點。按照業務化的要求,常規天氣下自動氣象站每5分鐘就要上傳一次報文,如果是災害性天氣或公共突發事件氣象應急過程中,自動氣象站就要求每分鐘上傳一組觀測資料。根據自動氣象站站點分布和資料傳輸的特點,自動氣象站一般則采用無線通信業務(如GPRS或CDMA)作為通信組網方式。在網絡數據傳輸應用中,TCP協議會產生大量的網絡狀態確認和數據確認而消耗系統資源,UDP協議采用面向非連接的傳輸策略,會大大提高UDP協議的傳輸速度和效率,但UDP協議不提供數據傳送保證機制,這就降低了資料傳輸的可靠性。因此,這就需要設計一個具有可靠UDP協議(Reliable UDP,簡稱RUDP)的通信終端,本文就通信終端的硬件和軟件設計及關鍵技術作相關論述。
GPRS(General Packet Radio Service)無線傳輸業務以其成本低廉、性能可靠等優點,被無線通信系統廣泛采用。截止到2012年底,廣東省已建成由1900余個自動氣象站網組成的中尺度資料探測系統。網絡邏輯圖如圖1所示,系統由自動氣象站、數據通信終端單元(Data Communication terminal Unit,DCU)、數 據 處 理 中 心 (Data Process Center,DPC)以及GPRS網絡組成。自動氣象站主要負責采集氣溫、雨量、風向、風速等氣象要素,并形成數據報文;DCU將自動氣象站生成的數據傳輸到GPRS信網絡;DPC對接收的報文進行分析處理。為了保證數據的安全,避免在傳輸過程中的泄漏,數據處理中心采用APN專線接入GPRS網絡,在GGSN(網關支持節點)與移動公司互聯路由器之間采用GRE隧道,使用私網IP地址進行連接。按照業務化的要求,自動氣象站每5分鐘向數據處理中心上傳1份報文,加密觀測時每分鐘要上傳1份報文。探測資料實行全省統一采集、處理,該種組網方式大大提升了全省自動氣象站探測網資料的采集處理能力[1]。DCU作為數據上傳、命令下達的雙向通信設備,在系統中起著重要作用,它的性能直接影響業務系統運行效率。市場上絕大多數數據通信終端為了滿足不同用戶的不同需求,基本都采用的是透明UDP傳輸協議。為了增強數據傳輸的可靠性,提高探測設備的來報率,在不改變原有自動氣象站軟件的情況下,就要對原本的通信協議進行改進。

圖1 系統網絡邏輯結構
DCU應具備串口通信功能,能夠收發自動氣象站數據和DPC的控制命令。此外DCU還應具有自動登錄GPRS網絡、自動檢測網絡在線狀態、下線時自動撥號、按照設置的周期向數據處理中心發送注冊信息,以及按照設定的端口和協議向指定IP地址發送用戶協議數據等功能。
DCU硬件上可以分為電源、GPRS模塊、單片機和外圍部件4部分。電源主要為GPRS模塊和系統芯片提供電源;單片機主要內嵌了TCP/IP協議,負責將采集器數據打包成用戶協議,控制GPRS模塊將數據發送到通信網絡;GPRS模塊負責無線通信;外圍部件包括串口、SIM卡座接口等,完成接口的轉換。電路原理圖如圖2所示。
單片機選用W77E58芯片,其自帶的32KB ROM和1KB的SRAM,雙串口、雙指針、13個中斷源、3個16位定時器,能夠滿足硬件設計。I2C總線芯片選用CAT24WC64,用于存儲設備設置參數,如通信波特率等。串行口通信芯片MAX202將通信信號轉換成RS232電平,實現與自動氣象站的通信。GPRS模塊采用MC35i模塊,它是Siemens公司新一代無線通信GSM模塊,內嵌的軟件部分執行應用接口和所有GSM協議站的功能,它主要由GSM基帶處理器(GSM Baseband Processor)、GSM射頻部分、電源模塊(ASIC)、閃存、ZIF連接器、天線接口6部分組成[2]。

圖2 模塊硬件電路
DCU上電初始化后,就會連接配置MC35i模塊,成功后進行撥號,流程如圖3所示。撥號又分為2個階段:第一步首先登陸基站服務器;第二步通過基站服務器的LCP配置、PAP/CHAP認證建立PPP鏈接,取得IP地址獲準登陸到GPRS網絡。取得IP地址后,DCU就可在PPP協議的框架中嵌入TCP/IP協議進行網絡數據的傳輸。

圖3 軟件流程
按照功能層次從下到上軟件設計可以分為串口驅動層、GPRS模塊驅動層、PPP協議層、IP協議層、UDP協議層、RUDP協議層幾部分。串口驅動層是軟件最底層的協議,主要實現打開、關閉串口,讀寫串口數據的功能。GPRS模塊的驅動主要是依靠AT指令來完成,對于MC35i的配置和操作可參見其用戶資料和相關文獻,因比較成熟這里就不再詳細介紹。需要注意的是MC35i模塊在點火之前必須先關閉單片機的相應串行口,否則MC35i會因載波不正常而無法工作,另外由于MC35i讀SIM卡大約需要10s時間,延時時間一定要夠用。PPP(Point to Point Protocol)協議也叫點對點協議,主要任務有鏈路建立、維護、拆除、上層協議協商和認證等[3]。下面分別是打開、關閉串口和通過串口發送一個字符的程序:


在網絡數據傳輸應用中,UDP協議特別適合于頻繁、少量的突發數據傳輸。UDP協議采用面向非連接的傳輸策略,使得UDP協議在數據傳輸過程中避免如TCP協議那樣產生大量的網絡狀態確認和數據確認而消耗系統資源,大大提高了UDP協議的傳輸速度和效率,同時也不存在如TCP協議的海量并發連接問題。對絕大多數基于消息包傳遞的應用程序來說,特別在無線網絡中,基于幀的通信比基于流的通信更為直接和有效[4]。但UDP協議不提供數據傳送保證機制協議,存在可靠性差、傳輸功能單一的缺點。所以在充分利用UDP協議優勢的前提下,為確保自動氣象站資料傳輸的可靠性,提高網絡通信系統的性能,通過對UDP協議結構的改進,解決UDP協議的無連接性、多個數據報突發傳輸時可能出現的數據報無序性及流量控制問題。
在網絡體系結構中,UDP協議處于網絡層和應用層之間的傳輸層,通過在傳輸層與應用層之間加入可靠傳輸協議RUDP,形成5層的協議結構,包括應用層、RUDP層、傳輸層、網絡層和物理層。
RUDP通過對UDP協議結構的擴展,在原8個字節報頭的基礎上增加5個字節,用于對自動氣象站資料進行有序報文封裝、站號標識及報文識別,其結構如下所示。

字節1~8 9 1 0 1 1 1 2 1 3 1 4~6 5 5 3 6 U D P報頭命令標識I D高位I D低位數據包流水號高位數據包流水號低位用戶數據,可變長度,一般小于1 K B
① 第9個字節“命令”指DCU與DPC通信的握手標識,不同的標識表示UDP包是注冊包(DCU上線時發出)、心跳包(DCU在線定時測試通信鏈路)還是用戶數據包等。
② 第10個字節“ID高位”和第11個字節“ID低位”指DCU標識0~65 535,用于區別不同安裝地點的自動氣象站發送的信息。
③ 第12個字節“數據包序列號高位”和第13個字節“數據包序列號低位”指每個自動氣象站發送到DPC的數據包流水號,從0~65 535重復執行,用于使UDP報文從無序變為有序。
④ 從第14個字節開始到第65 536個字節為自動氣象站的監測數據,根據自動氣象站每次觀測的數據量、無線傳輸網絡的特性及UDP協議的特點,用戶數據長度一般可設計小于1KB。
當DCU完成與無線網絡有關PPP通信鏈路的操作協商后,IP通信鏈路被創建。DCU向通信服務系統發出長度為13字節的RUDP注冊包,在DPC進行登記后,就可以進行基于RUDP協議報文的資料傳輸,同時通過定時器的注冊包連續無回應次數K來判斷通信鏈路是否建立成功,其工作流程如圖4所示。為了避免通信鏈路不穩定或斷鏈時進行無效的數據傳輸,在每次完成緩沖隊列的數據傳輸前,都要進行鏈路RUDP心跳包(13字節)測試。在數據等待隊列為空時,通過啟動定時器的次數M決定是否發送心跳包來保持DCU的PPP鏈路持續連接。當永久連接的鏈路出現錯誤時,通過定時器的心跳包連續無回應次數N來決定是否關閉通信鏈路。

圖4 RUDP協議的工作流程
在圖4的RUDP協議工作模式中,定時器1、定時器2、定時器3和K、M、N為何值時,RUDP協議工作在最佳狀態?在不同帶寬的通信網絡中,其取值可能不太一樣。如基于GPRS業務的自動氣象站資料傳輸網絡中,從DPC服務器到DCU的PING時間最大延時為3s,則對于小數據量注冊包和心跳包的定時器1及定時器2的等待時間可設定為6s左右,連續沒有收到ACK包的K、N值可設定為3次;對于每分鐘產生300字節的氣象觀測數據包,定時器3及定時器4的等待時間可設定為12s左右,M可在定時器3連續累計時間3~5min取值,視網絡情況及需要,若為3min,則 M為180/12=15。
基于RUDP的自動氣象站資料傳輸采用消息收發同步以及流量控制。探測數據傳遞的序號采用兩個字節無符號整數表示,取值范圍為0~65 535,形成一個大的循環隊列,發送數據大小相同且可設為一次探測數據的大小,有效地控制了發送數據的速度,防止在大流量時出現網絡過度擁塞的現象。在可靠數據傳遞協議中保證數據可靠傳遞的基本就是要使用確認技術。在RUDP的設計中為了更好地控制流量,達到最大限度地利用網絡資源的目的,采用捎帶確認、累計確認和超時確認方式相結合的方式來實現確認。
通過對數據通信終端系統的設計,研究了基于UDP協議的可靠應用傳輸協議。廣東省區域站監測網絡中1800多個自動氣象站全部使用該DCU,實際應用中取得了良好的效果,來報率達到99.7%以上。測試和應用表明,該技術解決了基于無線網絡無人值守,及實時性、突發性UDP數據傳輸的不穩定性、無序性等問題,實現了大規模突發浪涌氣象數據的實時傳輸,滿足氣象現代化業務的發展需求。
[1] 敖振浪,伍光勝,李建勇,等.基于GPRS技術的氣象站數據采集系統[J].廣東氣象,2007,29(4):1-4.
[2] Siemens.Siemens MC35iHardware Interface Description V04.00,2003.
[3] 杜建波.基于GPRS的實時在線環境監測研究與實現[D].沈陽:沈陽理工大學,2009:16-18.
[4] 伍光勝,宋信忠,鄭明輝.多線程技術及其應用的研究[J].計算機應用研究,2001,18(1):33-36.
[5] 施偉年,凌海宏.GPRS網絡上的兩種數據傳輸協議[J].電力系統通信,2004(8):20-22.
[6] 黃超.WINDOWS網絡編程[M].北京:人民郵電出版社,2003:264-301.
[7] 馮林,彭尉,滕弘飛.車輛監控系統中通信服務器性能優化設計與實現[J].計算機工程與應用,2005,41(6):199-201.