符鳳平,馮新建,葉 幫
(貴州省安順市氣象局,貴州 安順 561000)
地(市)級地面自動站資料異地備份監控系統
符鳳平,馮新建,葉 幫
(貴州省安順市氣象局,貴州 安順 561000)
系統采用C/S軟件體系結構、Visual Basic 6.0編程語言、API函數等技術,實現對地面自動站資料異地備份情況的實時監控、報表輸出及自動補傳功能。充分利用已建成的省、地、縣光纖通信網絡,實現對所屬地面自動站資料的異地備份情況進行多級實時監控,并將監控結果中未正常備份的自動站資料信息分類進行報表輸出。自動監測分鐘數據文件存放資料的最新時刻,輸出監測信息報表。臺站業務人員根據報表信息,對未正常或未及時備份的自動站資料,可按照分時段或按日期選擇,及時進行缺誤資料的自動補傳。系統應業務需求而設計,操作簡便,運行穩定,在Windows XP和Windows Server 2003操作系統環境下均運行正常。自投入業務運行以來,有效提高了地面自動站資料異地備份完整率和及時率。
異地備份;實時監控;API函數;Excel報表
自地面自動站在各級氣象臺站投入業務運行以來,為天氣預報業務、氣象服務提供了豐富實時的觀測資料。為了更好地利用地面自動站系統資源,充分發揮地面自動站的現代化效益,相關技術人員在這方面作了大量的開發工作,如由貴州省氣象局與黔西南州氣象局聯合開發的《地面自動氣象站資料自動備份及處理系統》,系統充分利用已建成的省、地、縣光纖通信網絡,采用FTP文件傳輸方式,分別在省、地、縣三級建立相應的處理程序及FTP服務器,實現地面自動站資料的異地備份。自該系統投入業務運行以來,在對地面自動站氣象資料的管理、完整性、準確性和安全性等方面發揮了重要作用,為天氣預報服務和氣象科研提供了準確可靠的氣象數據。
為了更好地完善自動站資料的管理,使自動站資料異地備份更加完整與及時,開發了適合地市級以下氣象部門使用的《市(縣)級地面自動站資料異地備份監控系統》(以下簡稱《異地備份監控系統》),系統主要包括地(市)級地面自動站資料異地備份監控子系統和縣級地面自動站資料異地備份監控子系統,充分利用已建成的省、地、縣光纖通信網絡,實現對所屬地面自動站資料的異地備份情況進行多級實時監控,并將監控結果中未正常備份的自動站資料信息以Excel表格形式分類進行報表輸出。自動監測分鐘數據文件存放資料的最新時刻,將相關信息輸出到報表中,以便補傳。對未正?;蛭醇皶r備份的自動站資料,實現分時段或按日期選擇進行補傳。地縣級業務人員可根據報表信息,及時進行缺誤資料的自動補傳,大大簡化繁瑣的人工操作。業務管理部門可及時掌握自動站資料備份情況,根據該表提供信息,督促資料補傳,確保地面自動站資料備份更加及時與完整。系統按照業務需求設計,具有一定的實用性。
《異地備份與處理系統》全名為《地面自動氣象站資料自動備份及處理系統》,2009年3月在貴州省各級氣象臺站投入業務運行。該系統主要由縣級、地(市)級、省級3部分的多個程序組成??h級主要包括地面自動氣象站資料自動備份及報警程序、氣象自記紙掃描備份程序,地(市級)主要包括地面自動氣象站資料自動處理及報警程序、FTP服務器軟件,省級主要包括地面自動氣象站資料監測報警程序、FTP服務器軟件。
利用已建成的省、地、縣光纖通信網絡,采取FTP文件傳輸方式進行地面自動站資料的異地備份。各縣級氣象臺站使用自動備份程序和氣象自記紙掃描備份程序,將地面自動站資料自動備份到市級FTP服務器。在市級服務器端,每個縣級地面自動站擁有一個和本地相同的目錄,目錄結構和各自動站主目錄結構相同。市級氣象臺站通過使用自動處理傳輸程序,將地面自動站資料自動備份到省級FTP服務器。在省級服務器端,目錄結構按照地面自動站資料類型建立,與市、縣兩級不同,如自記紙文件目錄為paper,即所有臺站的自記紙文件需傳輸到該目錄;分鐘數據Z文件目錄為Z,即所有臺站的Z分鐘數據傳輸到該目錄。
縣級地面自動站資料異地備份的資料幾乎包括自動站主目錄下的所有內容,即OSSMO 2004(自動站默認安裝目錄)目錄下所有子目錄AwsSource、BaseData、ErrorTxt、Log、Paper、ReportFile、SYNOP、SysConfig、temp、輻射 H、輻射 R 等。
市級地面自動站資料異地備份資料主要包括市屬各縣自動站的所有資料,主要包括分鐘數據、自記紙、A、J、B、輻射H和輻射R、系統日志等,市級服務器和縣級自動站存放資料的目錄結構及文件名相同,但省、市兩級服務器存放自動站資料的目錄結構不同,少數資料文件名有所改變,如log目錄下的 NF和 OSSMO文件,如原文件名分別為“NF20110527.log”和“OSSMO-201105.log”,備份到省級服務器后,文件分別更名為“NF20110527-57806.log”和“OSSMO-201105-57806.log”。
在局域網和省、地、縣光纖通信網絡保持暢通的前提下,采取C/S軟件結構,以Visual Basic 6.0語言為開發工具,利用VB網絡通信技術和API函數編制而成。經過業務測試,在 Windows XP和Windows Server 2003操作系統環境下均運行正常。
系統主要包括地(市)級異地備份監控子系統和縣級異地備份監控子系統。圖1為對市級服務器異地備份資料的監控信息表,圖2為系統輸出的分鐘數據信息監控表。

系統主要包含地(市)級、縣級兩個監控子系統。縣級監控子系統實現對本地備份到市級服務器上的資料進行實時監控,對未正常備份的資料信息進行報表輸出,提供資料補傳功能。地(市)級監控子系統實現對所屬各自動站資料的備份情況進行兩級實時監控,將監控結果中未正常備份的自動站資料以報表形式輸出。自動監測分鐘數據文件存放資料的最新時刻,將監測信息輸出到報表中,以便補傳。同時對未正?;蚣皶r備份的自動站資料,實現分時段或按照選擇日期進行補傳。兩級實時監控主要包括本地監控和遠程監控,本地監控指對所屬各自動站備份到地(市)級FTP服務器的資料進行監控,遠程監控指對所屬各自動站備份到省級FTP服務器的資料進行監控。地(市)級監控子系統主要實現功能見圖3所示:

圖3 地(市)級監控子系統主要實現功能
對于地(市)級和縣級兩個子系統,在實現各個功能相同的模塊時,采用技術方法相同,如對于縣級子系統,資料監控部分主要實現對本站異地備份到地(市)級服務器上的所有資料進行實時監控,但由于各級目錄結構和文件名不同,造成編程代碼有所不同。這里主要以地(市)級監控子系統為例,簡述各模塊的實現方法。
3.4.1 資料監控 對于地(市)級監控子系統,主要實現對各縣備份到地(市)級的地面自動站資料以及地(市)級備份到省局服務器的地面自動站資料進行實時監控,即實現兩級監控:本地監控和遠程監控。監控結果分別以紅、黃、綠3種顏色的圓形按鈕清晰地顯示于系統界面,其中紅顏色表示文件未備份成功,黃顏色表示文件存在但其長度為零,綠顏色表示文件備份正常。
由于資料類型不同,更新時間不同,部分資料每月一份文件,如A、J、B等,部分資料每日有更新,如自記紙、分鐘數據等文件。為縮短程序運行時間或對網絡資源的占據時間,對日變化資料可單獨實現監控。
3.4.1.1 本地監控 本地監控主要實現對各縣備份到地(市)級服務器的資料進行監控。利用局域網絡,將各縣備份到地(市)服務器的地面自動站資料目錄進行只讀共享,只要本系統運行于局域網內任何一臺計算機上,即可實現對自動站資料備份情況進行監控。
在進行此部分的程序設計時,首先建立一個存放自動站站號的文本文件zm.txt,每行一個站號,然后編制函數,實現對各圓形按鈕顏色的判斷與定義。使用循環語句讀取文件zm.txt,每讀取一行,即讀取一個站號,就對屬于該站的所有資料備份情況進行判斷。當資料文件不存在時,讀取相應圓形按鈕的紅顏色函數。當資料文件長度為零時,讀取相應圓形按鈕的黃顏色函數。當資料文件存在且長度不為零時,讀取相應圓形按鈕的綠顏色函數。讀完文件,即實現對所有臺站資料的監控。顏色讀取函數主要根據資料和顏色類別而建立,使用選擇判斷語句Select Case,根據站號設置按鈕顏色,從而得出監控結果。
3.4.1.2 遠程監控 遠程監控模塊主要實現對地(市)級備份到省級FTP服務器上的自動站資料備份情況進行實時監控,此部分功能主要使用API函數實現。首先使用InternetOpen設置網絡連接環境,然后使用InternetConnect與省級FTP異地備份服務器進行連接,再使用循環語句讀取站號文本文件,每讀取一個站號,就分別運用FtpSetCurrentDirectory和 FtpFindFirstFile 2個API函數,對與該站有關的所有資料進行監控判斷。當改變監控目錄時,需事先利用API函數InternetCloseHandle關閉FtpFindFirstFile函數創建的句柄 。
3.4.2 報表輸出 分別對本地和遠程服務器上的自動站異地備份資料按時段輸出有誤信息報表,自動監控分鐘數據文件最新時次的相關信息并寫入報表。報表輸出格式為Excel文件,這里的有誤信息主要指文件未上傳、文件存在但其長度為零的自動站資料相關信息,報表分為為5欄,分別為日期、站名、文件類型、文件名、監控情況等。
本地監控基于局域網,實現對自動站目錄各類資料的監控統計。遠程監控基于省、地、縣光纖通信網絡,實現對遠程FTP異地備份服務器存放資料的監控統計。此模塊在程序設計時,主要采取以下技術方法:
①自動生成Excel報表文件名。
②設置變量j作為報表行參數,賦初值為3,表示從表格的第3行開始填寫信息。
③建立excel_1函數,首先創建excel對象,打開excel文件,設置活動工作表,然后填寫監控信息。每當讀取一個站號,就對其所有自動站資料進行判斷,當有文件未上傳、文件存在但其長度為零時,調用該函數寫入相應的自動站資料相關信息。
④建立baobiao函數,設置報表初始狀態,如單元格的列寬、顏色、標題、列名等,并根據報表行參數j值添加表格的網格線。
⑤使用雙層循環語句。外層循環使用For…Next語句,設定日期變量i,其值表示從選擇當前日期所屬月的1號到當前日期。內層循環使用Do While…Loop語句,讀取站號文本文件,每當讀取一行文件內容,即讀取一個站號,就對其所有自動站資料進行判斷,讀完文件,即對i值所在當天所有站資料監控完畢,然后監控下一天的信息。
⑥在實現遠程監控信息報表輸出時,建立一函數自動調用執行DOS下的FTP命令,避免使用shell函數調用FTP命令時帶來異步執行問題[2]。
3.4.3 資料補傳
分為當天資料上傳和時段內資料上傳兩部分。選擇系統界面中的“當天資料上傳”按鈕,將自動上傳當前選擇日期下所有自動站資料到省級服務器相應目錄。選擇“時段內資料上傳”按鈕,將自動上傳從當前選擇日期所在月的1號到當前日期的所有自動站資料到省級服務器相應目錄。此模塊主要采用以下技術方法:
①調用DOS下的FTP命令
調用MS-DOS方式下的FTP命令,連接遠程服務器成功后,利用PUT命令進行各類資料的補傳。當上傳的資料需要更換文件名時,采用“PUT sfile dfile”的命令形式,其中sfile表示本地文件名,dfile表示上傳后更改的文件名。將所有操作命令寫入一個文本文檔中,然后通過調用自定義的函數,即可執行所有DOS命令操作。
②使用多層循環語句
對于時段內資料上傳,其實現方法也使用雙層循環語句。外層循環使用For…Next語句,設定日期變量i,其值表示從選擇當前日期所屬月的1號到當前日期。內層循環使用Do While…Loop語句,每當讀取站號文件一行內容,即讀取一個站號,可補傳該站所有資料,讀完文件,即對i值所在當天所有站資料上傳完畢,然后補傳下一天的信息。
3.4.4 分鐘數據監控
自動站分鐘數據一共分為6類,如W、Z、P、R、T、U等文件,位于AwsSource子目錄下,每類分鐘數據每個月形成一個文件,其內容每小時更新一次。為了使分鐘數據備份完整,系統實現對分鐘數據信息最新時次的自動監控,并將監控信息輸出到報表中。此模塊主要采取以下技術方法:讀取站號文件zm.txt,每讀取一站,即分別讀取該站6個分鐘數據文件。讀取每個分鐘數據文件時,需要分別打開文件,從文件內容中查找120個“-”字符的起始位置,如果查找結果為5,則說明資料備份不完整,讀取相關信息如日期、時次、站名、文件名等,將其寫入Excel報表文件。如果結果不為5,則不讀取任何信息。
系統本著業務需要而設計,安裝操作較為簡便,運行安全穩定。自投入業務運行半年以來,經過多次檢驗,均能準確成功地實現各部分功能如資料監控、報表輸出、自動補傳等,提高了地面自動站資料的異地備份完整率和及時率,為各項氣象業務服務和氣象科研開發提供及時、準確、可靠的資料,有效改善資料缺失給各項工作帶來的不便。
各地面氣象自動站所處地理位置比較分散,為使地面自動站資料異地備份更加完整與及時,提高資料備份效率,不僅需要各有關部門之間的相互配合,而且在軟件開發方面也需要不斷完善,使其自動化程度更高,操作和維護更為簡便。
[1] 卞志強.Visual Basic網絡程序設計[M].北京:人民郵電出版社,2003:352.
[2] 羅剛君.Excel VBA程序開發[M].北京:電子工業出版社,2009:205.
P415.1+2
B
1003-6598(2011)06-0040-04
2011-11-17
符鳳平(1969-),女,高工,主要從事信息網絡與技術保障工作。