黃宏智,呂玉嫦,鐘翠霞
(1.廣東省氣象探測數據中心,廣州 510080;2.廣州市黃埔區氣象局,廣州 510080)
廣東省基于移動4G無線組網集中采集的氣象探測數據有:3200多個區域自動氣象站、31個生物舒適度站、31個土壤水分站、9個交通站以及49個海島自動氣象站。由此可見,4G無線采集已成為廣東省最主要的數據傳輸方式。
在數據應用流程上,廣東省氣象局自動氣象站中心采集軟件負責收集全省各地運行的各種類別自動氣象站上行的原始數據,一路按照指定數據格式形成報文上傳到中國氣象局[1],另外一路通過判別站點歸屬地將原始數據傳輸至對應的市局,再由市局分發至下轄縣(區)局以提供數據服務。
基于上述業務架構,從廣東省的自動氣象站業務數據流程出發,需開發一個自動氣象站4G數據服務中心軟件,連接省局和市局端的數據傳輸,解決區域自動氣象站、生物舒適度站、土壤水分站、生態自動氣象站等多類別站點數據實時分發的難題,使各地級市局和下轄縣(區)局實時獲取各類設備觀測數據,為天氣預報預警服務提供有力的數據支撐。文章著重介紹了自動氣象站4G數據服務中心軟件的模塊結構、數據并發接收、數據報組包及校驗和數據分發等內容。
軟件基于各類別自動氣象站中心采集軟件的分布式部署架構,采用多線程和TCP/UDP通信技術進行設計[2],主要涵蓋3部分內容:1)數據并發接收:針對每類自動氣象站設備創建一條數據接收處理線程,采用TCP通信協議與上位機中心采集軟件建立數據傳輸鏈路,閑時,線程處于監聽狀態,忙時,線程將接收到的數據報存儲在開辟的內存中;2)數據報組報及校驗:對存儲在內存中的零散分報文進行組報,組合完畢的報文應包含正確的相應設備數據格式報頭及報尾,對組合后的報文進行校驗,若通過則進行分發待處理,否則將報文作錯誤處理進行丟棄;3)數據分發:根據配置的區域自動氣象站、生物舒適度站、土壤水分站等數據接收目標IP地址,創建UDP協議數據分發線程,實時將完整報文(部分數據需要格式轉換)分發至各縣(區)局的業務軟件進行顯示處理。
自動氣象站4G數據服務中心軟件的設計基于Microsoft Visual Studio 2010開發平臺,綜合采用多線程并發處理、TCP數據流接收、UDP數據流分發等技術實現市級氣象局對各類自動氣象站數據同步接收及分發至各縣(區)局進行顯示、存儲以及報文制作等。
自動氣象站4G數據服務中心軟件根據設備類型的配置情況,為每類設備創建一條數據接收線程,利用TCP傳輸協議單向接收省局上位機采集中心軟件高速下行的數據流[3]。以區域自動氣象站為例,軟件啟動時,先讀取區域自動氣象站的通信配置參數正確與否,若為正確,則創建TCP數據流監聽線程,將其設置為后臺線程并激活。線程的功能及流程是首先與上位機服務器建立TCP通信連接,然后實時接收上位機服務器下行的數據報[4],并存儲在內存數組中。關鍵代碼說明如下:
①TCP_Client = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
TCP_Client.Connect(ServerIP,ServerPort);
首先創建服務器端監聽Socket,采用IP4尋址協議、流式連接、TCP協議傳輸數據等模式,然后根據配置的IP地址、端口號進行連接服務器。
②byte[] recv_buf = new byte[1000];
int receiveLength = TCP_Client.Receive(recv_buf);
開辟存儲容量為1000字節的緩沖區,循環接收上位機服務器下行的TCP數據流,并把他依序放進緩沖區內。
軟件配置了一個工作時間周期為50 ms的定時器,首先定時依次從接收緩沖區序列中取出子報文,然后對各段子報文進行組包并進行完整性檢驗。以區域自動氣象站的ASCII報文為例,如果組合后的報文包含有報頭特征符“BG”和報尾特征符“ED”,并通過報文長度校驗,則視為完整的一個報文,否則繼續組合下一段子報文。當報文完整性檢驗完畢,接著根據區域自動氣象站的數據字典格式進行各個要素的解析。數據解析時,軟件根據各個要素的標識符,如氣溫變量名稱為AAA,濕度變量名稱為ADA等對報文進行要素報文段定位,然后再檢索提取出該要素的實時值、小時極大值、小時極小值以及極值出現時間等統計量[5]。最后根據部署在縣(區)局自動氣象站數據處理與顯示終端軟件對設備報文格式的要求,將各要素的ASCII值加上報頭報尾封裝成十六進制的報文。
在數據綜合處理模塊對接收到的原始報文進行解析及格式轉換后,立刻啟動數據UDP發送線程,根據配置的縣(區)局接收數據服務器的IP地址清單,以數據流的形式利用UDP協議發送至自動氣象站數據處理與顯示終端、舒適度數據采集系統等業務軟件進行數據顯示、存儲和報文制作等。
數據報的發送采用了一個無連接的傳輸協議:用戶數據報協議(User Datagram Protocol)。UDP是OSI參考模型中一種無連接的傳輸層協議,他主要用于不要求分組順序到達的傳輸中,分組傳輸順序的檢查與排序由應用層完成[6]。
隨著廣東省氣象現代化進程不斷推進和氣象防災減災需求日益增長,越來越多類別的自動氣象站將會在全省各地部署運行,以提供精細化的氣象觀測數據。因此,設計一個高效的自動氣象站4G數據服務中心軟件尤為重要。
目前,自動氣象站4G數據服務中心軟件已在全省21個地級市的氣象局業務應用3 a多,為市、縣(區)氣象局的區域自動氣象站、海島自動氣象站、土壤水分站、生物舒適度站等8類設備提供實時的觀測數據,為當地的氣象預報預警和防災減災服務提供高時空分辨力的數據支撐。同時,市局和縣(區)技術保障人員通過該軟件能夠及時掌握管理區域的各站點設備運行狀態和數據質量,實現對業務質量不規范的站點做到及時維護[7]。