勵臣儒 李從初 姚浩立 楊豪 徐振宇
(寧波市氣象網絡與裝備保障中心,浙江 寧波 315012)
天氣雷達是監控臺風、暴雨、冰雹、龍卷等突發性、災害性強對流天氣的主要工具。寧波作為東部的沿海城市,每年汛期的臺風天氣對雷達都是一次巨大考驗。2019年年初,寧波的單偏振多普勒天氣雷達通過技術升級改造為雙偏振多普勒天氣雷達。雙偏振天氣雷達提高了氣象、非氣象回波的識別能力,能夠更好地描述目標粒子的尺寸、形狀及降水分類,能夠更好地識別融化層等優勢。
對于寧波雷達機務人員來說,雙偏振的升級還解決了他們的一大難題——硬件重啟。由于寧波雷達站的偏遠性和保障人員的局限性,雷達站的觀測模式很早以前便以無人值守為主。以前如果出現如RDA電腦死機藍屏無法遠程重啟的情況,機務人員需上山重啟維護,中間耗時較長,而現在雙偏振雷達的配電系統配備了一套遠程控制系統,可通過軟件對雷達系統實現一鍵開關機。
隨著雷達技術的發展,日后對雷達的監控會更趨向于數據和通信兩方面。如果能在遠端及時了解雷達運行狀態信息、產品傳輸等情況,就可以大大提高雷達維護人員的故障反應速度,提高雷達運行效率,從而保障和提升資料傳輸質量,設計出能實時監控雷達運行狀態、通信情況、產品生成的技術迫在眉睫。
如圖1所示,雷達軟件系統主要由RDA(Radar Data Acquisition)、RPG(Radar Products Generator)、PUP(Principal User Processor)3部分組成,所有服務器目前均使用Linux系統。

圖1 雷達軟件系統
RDA為雷達數據采集和監控部分,是整個系統的基礎部分。雷達的所有運行參數、狀態等信息都能在RDA上看到,并存有日志文件。雙偏振升級以后,RDA新增流傳輸功能,實時傳輸數據到浙江省氣象局(以下簡稱省局)。
RPG主要負責數據傳輸、系統總控和產品生成。目前寧波RPG數據存檔有3路:當地保存,寧波市氣象局(以下簡稱市局)資源池備份,還有一路則是通過FTP方式上傳至省局。除此以外,還將雷達的狀態文件進行FTP上傳。
PUP主要傳輸和展示雷達產品。寧波現有3臺注冊過的PUP,直連RPG實時讀取數據,一臺用于氣象臺業務使用;一臺負責直傳省局考核使用;還有一臺則負責產品的備份。其他PUP則可通過獲取共享資源池里的數據進行使用。
雖說目前系統采用Linux系統,整體穩定性大幅提升,但仍有因各種原因,在運行過程中出現程序自動關閉或系統死機等情況,導致數據無法及時獲取與上傳。
目前寧波針對雷達的監控主要為:
1)RDA、RPG、PUP服務器的網絡通信監控,主要通過不間斷的Ping功能實現。
2)雷達產品在當地數據庫的監控。
3)值班員每日一次的雷達運行參數記錄。
4)雷達站現場的視頻監控,主要是對機房和天線罩內外部的監控。
結合日常值班情況和現狀分析,目前存在的問題為:
1)上傳至省局的產品傳輸由于省局FTP目錄設置原因無法監控,負責上傳省局的PUP軟件曾出現過漏發一份產品的情況,由于當地備份PUP軟件正常運行導致業務人員沒有及時發現產品丟失。
2)缺少對雷達實時運行狀態的監控。
綜上所述,計劃設計一個包含雷達運行狀態、軟件通信情況和產品傳輸狀態的軟件。通過對雷達系統的分析,雷達主要的運行參數都保存在RDA電腦上的日志文件中,雷達軟件的通信則可通過Ping各個服務器IP的形式來判斷通信情況,產品的傳輸則通過監控PUP的FTP日志,比較日志文件中各個產品的最新上傳時間和當前時間的時間差來判斷產品是否正常傳輸到省局FTP目錄中。整個軟件設計以白色為底,如某模塊出現數據問題或者通信問題則通過改變背景顏色來凸顯。
現狀分析:
1)市局業務數據庫多數采用SQL Server,需做數據庫同步軟件。
2)軟件中的多個部分涉及文件內容的提取及編輯,如Text文件的內容提取及數據庫數據對比。
3)雷達軟件系統都采用Linux系統。
考慮到現狀,最終采用Python作為主要開發語言,并使用Tkinter作為圖形界面框架,UI如圖2所示。

圖2 軟件UI設計
Python作為一種跨平臺的計算機程序設計語言,是一種面向對象的動態類型語言,它具有以下幾點優勢。
1)Python的定位是“優雅”“明確”“簡單”,所以Python程序看上去總是簡單易懂。
2)開發效率非常高,Python有非常強大的第三方庫,基本上可通過計算機實現任何功能,Python官方庫里都有相應的模塊進行支持,直接下載調用后,在基礎庫的基礎上再進行開發,大大降低開發周期,避免重復造輪子。
3)高級語言。當使用Python語言編寫程序的時候,無須考慮諸如如何管理你的程序使用的內存一類的底層細節。
4)可移植性。由于它的開源本質,Python已經被移植在許多平臺上(經過改動使它能夠工作在不同平臺上)。如果小心地避免使用依賴于系統的特性,那Python程序無須修改就幾乎可以在市場上所有的系統平臺上運行。
5)可擴展性。如果需要一段關鍵代碼運行得更快或者希望某些算法不公開,Python支持運行由C和C+語言編寫的代碼。
6)可嵌入性。Python可嵌入C/C++程序,從而為程序用戶提供腳本功能。
7)由于其很好的支持線程,能大幅度減少系統資源使用率,數據的分詞處理能力也比較優秀,因此Python目前被大量使用于數據挖掘和數據分析中。
2.2.1 雷達運行狀態
由于RDA服務器內存有限,雷達運行的狀態文件被設置為定期刪除,通過Linux上的Crontab定時任務命令,將狀態文件單向同步至市局存儲池中。Linux的定時任務時間與Windows系統不同,需要自己手動輸入,由5個*號組成,代表的意思是按照分、時、日、月、周的順序來排列的,如果想每1 min都執行一次的話,就采用默認的* * * * *,如果想每5 min執行一次,可以用*/5* * * *,如果是每2 h執行一次的話,那就用* * /2* * * 來設置。
雷達的主要運行參數主要保存在Status的日志文件中,報警信息保存在Alarm文件中,兩者均按天保存,同步主要利用Rsync工具。Rsync是Linux系統下的數據鏡像備份工具,主要優勢如下。
1)可以鏡像保存整個目錄樹和文件系統。
2)可以很容易做到保持原來文件的權限、時間、軟硬鏈接等等。
3)無須特殊權限即可安裝。
4)快速:第一次同步時Rsync會復制全部內容,但在下一次只傳輸修改過的文件。Rsync在傳輸數據的過程中可以實行壓縮及解壓縮操作,因此可以使用更少的帶寬。
5)安全:可以使用SCP、SSH等方式來傳輸文件,當然也可以通過直接的Socket連接。
6)支持匿名傳輸,以方便進行網站鏡像。
同步過程中,利用正則表達式從所有日志文件中單獨篩選這2個文件名的文件進行同步。其次,考慮到數據的重要性,文件大小也不大,因此同步命令設置為實時同步,保證數據的準確性和實時性。
同步完成后,利用Python程序定時從存儲池中提取日志文件,并對其中的內容進行切片處理,如雷達的主要運行參數:機房溫度、發射機溫度、雷達罩內溫度和發射機功率,程序會對整個文件內容進行篩選提取并存入數據庫,軟件再從數據庫中提取對應關鍵詞進行展示。
雷達的數據更新頻率是6 min,為確保提取的數據是最新時次,程序調用了Timer模塊,通過該模塊實現程序每6 min重復運行的功能。
報警信息這個模塊有點特殊,日志中只有報警編碼和英文解釋,為了更直觀地展現給維護人員,軟件建立了報警編碼的數據庫,提供了編碼所對應的中文解釋,軟件可以通過對數據庫的篩選來輸出編碼的中文解釋。
2.2.2 雷達連接狀態
軟件中判斷雷達各個部分的連接狀態主要通過Ping各個IP地址來實現。Python的OS庫中有現成的Ping命令,能控制Ping的次數和時間,并能通過返回的狀態信息是否為0來判斷連接狀態。
由于雷達服務器的重要性和時效性,連接狀態的刷新時間設置為1 min判斷一次,每次發送2個Ping命令包,這樣既能保證時效性,也能確保準確性。前文提到在判斷雷達運行狀態時,軟件設置的刷新時間為6 min,這兩部分的刷新時間設置不同,逐個去運行兩個函數在程序中不太合乎邏輯,因此采用Ptyhon的多線程Threading模塊,在軟件中采用多線程的優勢如下。
1)提高響應性。
2)最小化對系統資源的使用。一個進程的多個線程,可以共享其所在進程所申請的資源如內存空間,因此使用多個線程相比于多個進程進行編程來說,可節約對系統資源的使用。
3)簡化程序的結構。線程可以簡化復雜應用程序的結構。
2.2.3 雷達產品狀態
雖然寧波雷達已經升級為雙偏振雷達,產品數量上增多了,但是由于整個浙江省大部分還是單偏振雷達,因此省里考核的產品仍為單偏振產品。該項目主要監測上傳至省局的產品是否完整和及時,由于省局FTP目錄是設置為實時刷新,一旦目錄中有產品錄入馬上轉移到省局的存儲中,FTP目錄并不保存產品,因此通過監控PUP軟件上的FTP日志文件來判斷產品的傳輸情況。
PUP的產品傳輸情況主要保存在名為Achieve的日志文件中,按天保存。目前共有36個產品在上傳省局目錄中,日志中對每個產品每個時次的上傳情況都有說明。軟件先是將日志文件中的每條記錄通過Python切片處理后,將重要字段存入數據庫:產品名稱、上傳時間、產品生成時間、上傳情況。軟件再從數據庫中調取數據顯示,這塊的刷新時間也是6 min,因此是并入雷達運行狀態的線程中的。
1)機房溫度如果超過20℃,軟件頁面此模塊背景為紅,否則為綠色正常。
2)發射機溫度如果超過55℃,軟件頁面此模塊背景為紅,否則為綠色正常。
3)發射機峰值功率如果低于650 kW,軟件頁面此模塊背景為紅,否則為綠色正常。
4)如果有報警信息,軟件頁面此模塊背景為紅,否則為綠色正常。
5)連接狀態方面如果Ping不通,軟件頁面此模塊背景為紅,否則為綠色正常。
6)產品的上傳時間和當前時間對比,如果超過10 min,軟件頁面此模塊背景為紅,否則為綠色正常。
最終軟件效果如圖3所示,基本達到預期的效果,實現該有的功能。整個軟件包含雷達狀態、連接狀態和產品狀態3個模塊,數據正常模塊的背景色為綠色,反之則為紅色。雷達狀態和產品狀態模塊的更新頻率為6 min一次,連接狀態模塊的更新頻率為1 min一次。目前上傳考核的雷達產品數量不是很多,為直觀展示每個產品的狀態,軟件頁面直接顯示所有產品。為凸顯效果,PUP_氣象臺的IP地址臨時設置為其他未使用的IP地址,因此為斷線紅色狀態,實際情況是在線正常狀態。目前軟件已加入寧波氣象網絡運行科的日常監控使用。

圖3 雷達監控最終效果
該軟件最終實現的軟件成果基本符合預期效果,整個軟件包含雷達狀態信息、雷達軟件系統通信情況、雷達產品情況3塊信息,直觀地將狀態信息呈現給值班人員,協助值班人員在遠端及時發現異常,實現了天氣雷達運行狀態監控的自動化。系統能主動和及時地發現雷達故障,大大提高雷達維護人員的故障反應速度,提高了雷達運行效率和資料傳輸質量。但整個項目還存在需要改進的地方。
1)將雷達硬件遠程重啟的功能結合進來。
2)改進軟件UI,從而更加美觀。
3)將視頻系統結合進來,使值班人員可以看到監控截圖。
4)將報警和聲音、短信、微信推送等功能結合起來,擴寬預警方式的途徑。