勵臣儒 李從初 姚浩立 楊豪 徐振宇
(寧波市氣象網(wǎng)絡(luò)與裝備保障中心,浙江 寧波 315012)
天氣雷達(dá)是監(jiān)控臺風(fēng)、暴雨、冰雹、龍卷等突發(fā)性、災(zāi)害性強對流天氣的主要工具。寧波作為東部的沿海城市,每年汛期的臺風(fēng)天氣對雷達(dá)都是一次巨大考驗。2019年年初,寧波的單偏振多普勒天氣雷達(dá)通過技術(shù)升級改造為雙偏振多普勒天氣雷達(dá)。雙偏振天氣雷達(dá)提高了氣象、非氣象回波的識別能力,能夠更好地描述目標(biāo)粒子的尺寸、形狀及降水分類,能夠更好地識別融化層等優(yōu)勢。
對于寧波雷達(dá)機務(wù)人員來說,雙偏振的升級還解決了他們的一大難題——硬件重啟。由于寧波雷達(dá)站的偏遠(yuǎn)性和保障人員的局限性,雷達(dá)站的觀測模式很早以前便以無人值守為主。以前如果出現(xiàn)如RDA電腦死機藍(lán)屏無法遠(yuǎn)程重啟的情況,機務(wù)人員需上山重啟維護,中間耗時較長,而現(xiàn)在雙偏振雷達(dá)的配電系統(tǒng)配備了一套遠(yuǎn)程控制系統(tǒng),可通過軟件對雷達(dá)系統(tǒng)實現(xiàn)一鍵開關(guān)機。
隨著雷達(dá)技術(shù)的發(fā)展,日后對雷達(dá)的監(jiān)控會更趨向于數(shù)據(jù)和通信兩方面。如果能在遠(yuǎn)端及時了解雷達(dá)運行狀態(tài)信息、產(chǎn)品傳輸?shù)惹闆r,就可以大大提高雷達(dá)維護人員的故障反應(yīng)速度,提高雷達(dá)運行效率,從而保障和提升資料傳輸質(zhì)量,設(shè)計出能實時監(jiān)控雷達(dá)運行狀態(tài)、通信情況、產(chǎn)品生成的技術(shù)迫在眉睫。
如圖1所示,雷達(dá)軟件系統(tǒng)主要由RDA(Radar Data Acquisition)、RPG(Radar Products Generator)、PUP(Principal User Processor)3部分組成,所有服務(wù)器目前均使用Linux系統(tǒng)。
圖1 雷達(dá)軟件系統(tǒng)
RDA為雷達(dá)數(shù)據(jù)采集和監(jiān)控部分,是整個系統(tǒng)的基礎(chǔ)部分。雷達(dá)的所有運行參數(shù)、狀態(tài)等信息都能在RDA上看到,并存有日志文件。雙偏振升級以后,RDA新增流傳輸功能,實時傳輸數(shù)據(jù)到浙江省氣象局(以下簡稱省局)。
RPG主要負(fù)責(zé)數(shù)據(jù)傳輸、系統(tǒng)總控和產(chǎn)品生成。目前寧波RPG數(shù)據(jù)存檔有3路:當(dāng)?shù)乇4?寧波市氣象局(以下簡稱市局)資源池備份,還有一路則是通過FTP方式上傳至省局。除此以外,還將雷達(dá)的狀態(tài)文件進行FTP上傳。
PUP主要傳輸和展示雷達(dá)產(chǎn)品。寧波現(xiàn)有3臺注冊過的PUP,直連RPG實時讀取數(shù)據(jù),一臺用于氣象臺業(yè)務(wù)使用;一臺負(fù)責(zé)直傳省局考核使用;還有一臺則負(fù)責(zé)產(chǎn)品的備份。其他PUP則可通過獲取共享資源池里的數(shù)據(jù)進行使用。
雖說目前系統(tǒng)采用Linux系統(tǒng),整體穩(wěn)定性大幅提升,但仍有因各種原因,在運行過程中出現(xiàn)程序自動關(guān)閉或系統(tǒng)死機等情況,導(dǎo)致數(shù)據(jù)無法及時獲取與上傳。
目前寧波針對雷達(dá)的監(jiān)控主要為:
1)RDA、RPG、PUP服務(wù)器的網(wǎng)絡(luò)通信監(jiān)控,主要通過不間斷的Ping功能實現(xiàn)。
2)雷達(dá)產(chǎn)品在當(dāng)?shù)財?shù)據(jù)庫的監(jiān)控。
3)值班員每日一次的雷達(dá)運行參數(shù)記錄。
4)雷達(dá)站現(xiàn)場的視頻監(jiān)控,主要是對機房和天線罩內(nèi)外部的監(jiān)控。
結(jié)合日常值班情況和現(xiàn)狀分析,目前存在的問題為:
1)上傳至省局的產(chǎn)品傳輸由于省局FTP目錄設(shè)置原因無法監(jiān)控,負(fù)責(zé)上傳省局的PUP軟件曾出現(xiàn)過漏發(fā)一份產(chǎn)品的情況,由于當(dāng)?shù)貍浞軵UP軟件正常運行導(dǎo)致業(yè)務(wù)人員沒有及時發(fā)現(xiàn)產(chǎn)品丟失。
2)缺少對雷達(dá)實時運行狀態(tài)的監(jiān)控。
綜上所述,計劃設(shè)計一個包含雷達(dá)運行狀態(tài)、軟件通信情況和產(chǎn)品傳輸狀態(tài)的軟件。通過對雷達(dá)系統(tǒng)的分析,雷達(dá)主要的運行參數(shù)都保存在RDA電腦上的日志文件中,雷達(dá)軟件的通信則可通過Ping各個服務(wù)器IP的形式來判斷通信情況,產(chǎn)品的傳輸則通過監(jiān)控PUP的FTP日志,比較日志文件中各個產(chǎn)品的最新上傳時間和當(dāng)前時間的時間差來判斷產(chǎn)品是否正常傳輸?shù)绞【諪TP目錄中。整個軟件設(shè)計以白色為底,如某模塊出現(xiàn)數(shù)據(jù)問題或者通信問題則通過改變背景顏色來凸顯。
現(xiàn)狀分析:
1)市局業(yè)務(wù)數(shù)據(jù)庫多數(shù)采用SQL Server,需做數(shù)據(jù)庫同步軟件。
2)軟件中的多個部分涉及文件內(nèi)容的提取及編輯,如Text文件的內(nèi)容提取及數(shù)據(jù)庫數(shù)據(jù)對比。
3)雷達(dá)軟件系統(tǒng)都采用Linux系統(tǒng)。
考慮到現(xiàn)狀,最終采用Python作為主要開發(fā)語言,并使用Tkinter作為圖形界面框架,UI如圖2所示。
圖2 軟件UI設(shè)計
Python作為一種跨平臺的計算機程序設(shè)計語言,是一種面向?qū)ο蟮膭討B(tài)類型語言,它具有以下幾點優(yōu)勢。
1)Python的定位是“優(yōu)雅”“明確”“簡單”,所以Python程序看上去總是簡單易懂。
2)開發(fā)效率非常高,Python有非常強大的第三方庫,基本上可通過計算機實現(xiàn)任何功能,Python官方庫里都有相應(yīng)的模塊進行支持,直接下載調(diào)用后,在基礎(chǔ)庫的基礎(chǔ)上再進行開發(fā),大大降低開發(fā)周期,避免重復(fù)造輪子。
3)高級語言。當(dāng)使用Python語言編寫程序的時候,無須考慮諸如如何管理你的程序使用的內(nèi)存一類的底層細(xì)節(jié)。
4)可移植性。由于它的開源本質(zhì),Python已經(jīng)被移植在許多平臺上(經(jīng)過改動使它能夠工作在不同平臺上)。如果小心地避免使用依賴于系統(tǒng)的特性,那Python程序無須修改就幾乎可以在市場上所有的系統(tǒng)平臺上運行。
5)可擴展性。如果需要一段關(guān)鍵代碼運行得更快或者希望某些算法不公開,Python支持運行由C和C+語言編寫的代碼。
6)可嵌入性。Python可嵌入C/C++程序,從而為程序用戶提供腳本功能。
7)由于其很好的支持線程,能大幅度減少系統(tǒng)資源使用率,數(shù)據(jù)的分詞處理能力也比較優(yōu)秀,因此Python目前被大量使用于數(shù)據(jù)挖掘和數(shù)據(jù)分析中。
2.2.1 雷達(dá)運行狀態(tài)
由于RDA服務(wù)器內(nèi)存有限,雷達(dá)運行的狀態(tài)文件被設(shè)置為定期刪除,通過Linux上的Crontab定時任務(wù)命令,將狀態(tài)文件單向同步至市局存儲池中。Linux的定時任務(wù)時間與Windows系統(tǒng)不同,需要自己手動輸入,由5個*號組成,代表的意思是按照分、時、日、月、周的順序來排列的,如果想每1 min都執(zhí)行一次的話,就采用默認(rèn)的* * * * *,如果想每5 min執(zhí)行一次,可以用*/5* * * *,如果是每2 h執(zhí)行一次的話,那就用* * /2* * * 來設(shè)置。
雷達(dá)的主要運行參數(shù)主要保存在Status的日志文件中,報警信息保存在Alarm文件中,兩者均按天保存,同步主要利用Rsync工具。Rsync是Linux系統(tǒng)下的數(shù)據(jù)鏡像備份工具,主要優(yōu)勢如下。
1)可以鏡像保存整個目錄樹和文件系統(tǒng)。
2)可以很容易做到保持原來文件的權(quán)限、時間、軟硬鏈接等等。
3)無須特殊權(quán)限即可安裝。
4)快速:第一次同步時Rsync會復(fù)制全部內(nèi)容,但在下一次只傳輸修改過的文件。Rsync在傳輸數(shù)據(jù)的過程中可以實行壓縮及解壓縮操作,因此可以使用更少的帶寬。
5)安全:可以使用SCP、SSH等方式來傳輸文件,當(dāng)然也可以通過直接的Socket連接。
6)支持匿名傳輸,以方便進行網(wǎng)站鏡像。
同步過程中,利用正則表達(dá)式從所有日志文件中單獨篩選這2個文件名的文件進行同步。其次,考慮到數(shù)據(jù)的重要性,文件大小也不大,因此同步命令設(shè)置為實時同步,保證數(shù)據(jù)的準(zhǔn)確性和實時性。
同步完成后,利用Python程序定時從存儲池中提取日志文件,并對其中的內(nèi)容進行切片處理,如雷達(dá)的主要運行參數(shù):機房溫度、發(fā)射機溫度、雷達(dá)罩內(nèi)溫度和發(fā)射機功率,程序會對整個文件內(nèi)容進行篩選提取并存入數(shù)據(jù)庫,軟件再從數(shù)據(jù)庫中提取對應(yīng)關(guān)鍵詞進行展示。
雷達(dá)的數(shù)據(jù)更新頻率是6 min,為確保提取的數(shù)據(jù)是最新時次,程序調(diào)用了Timer模塊,通過該模塊實現(xiàn)程序每6 min重復(fù)運行的功能。
報警信息這個模塊有點特殊,日志中只有報警編碼和英文解釋,為了更直觀地展現(xiàn)給維護人員,軟件建立了報警編碼的數(shù)據(jù)庫,提供了編碼所對應(yīng)的中文解釋,軟件可以通過對數(shù)據(jù)庫的篩選來輸出編碼的中文解釋。
2.2.2 雷達(dá)連接狀態(tài)
軟件中判斷雷達(dá)各個部分的連接狀態(tài)主要通過Ping各個IP地址來實現(xiàn)。Python的OS庫中有現(xiàn)成的Ping命令,能控制Ping的次數(shù)和時間,并能通過返回的狀態(tài)信息是否為0來判斷連接狀態(tài)。
由于雷達(dá)服務(wù)器的重要性和時效性,連接狀態(tài)的刷新時間設(shè)置為1 min判斷一次,每次發(fā)送2個Ping命令包,這樣既能保證時效性,也能確保準(zhǔn)確性。前文提到在判斷雷達(dá)運行狀態(tài)時,軟件設(shè)置的刷新時間為6 min,這兩部分的刷新時間設(shè)置不同,逐個去運行兩個函數(shù)在程序中不太合乎邏輯,因此采用Ptyhon的多線程Threading模塊,在軟件中采用多線程的優(yōu)勢如下。
1)提高響應(yīng)性。
2)最小化對系統(tǒng)資源的使用。一個進程的多個線程,可以共享其所在進程所申請的資源如內(nèi)存空間,因此使用多個線程相比于多個進程進行編程來說,可節(jié)約對系統(tǒng)資源的使用。
3)簡化程序的結(jié)構(gòu)。線程可以簡化復(fù)雜應(yīng)用程序的結(jié)構(gòu)。
2.2.3 雷達(dá)產(chǎn)品狀態(tài)
雖然寧波雷達(dá)已經(jīng)升級為雙偏振雷達(dá),產(chǎn)品數(shù)量上增多了,但是由于整個浙江省大部分還是單偏振雷達(dá),因此省里考核的產(chǎn)品仍為單偏振產(chǎn)品。該項目主要監(jiān)測上傳至省局的產(chǎn)品是否完整和及時,由于省局FTP目錄是設(shè)置為實時刷新,一旦目錄中有產(chǎn)品錄入馬上轉(zhuǎn)移到省局的存儲中,FTP目錄并不保存產(chǎn)品,因此通過監(jiān)控PUP軟件上的FTP日志文件來判斷產(chǎn)品的傳輸情況。
PUP的產(chǎn)品傳輸情況主要保存在名為Achieve的日志文件中,按天保存。目前共有36個產(chǎn)品在上傳省局目錄中,日志中對每個產(chǎn)品每個時次的上傳情況都有說明。軟件先是將日志文件中的每條記錄通過Python切片處理后,將重要字段存入數(shù)據(jù)庫:產(chǎn)品名稱、上傳時間、產(chǎn)品生成時間、上傳情況。軟件再從數(shù)據(jù)庫中調(diào)取數(shù)據(jù)顯示,這塊的刷新時間也是6 min,因此是并入雷達(dá)運行狀態(tài)的線程中的。
1)機房溫度如果超過20℃,軟件頁面此模塊背景為紅,否則為綠色正常。
2)發(fā)射機溫度如果超過55℃,軟件頁面此模塊背景為紅,否則為綠色正常。
3)發(fā)射機峰值功率如果低于650 kW,軟件頁面此模塊背景為紅,否則為綠色正常。
4)如果有報警信息,軟件頁面此模塊背景為紅,否則為綠色正常。
5)連接狀態(tài)方面如果Ping不通,軟件頁面此模塊背景為紅,否則為綠色正常。
6)產(chǎn)品的上傳時間和當(dāng)前時間對比,如果超過10 min,軟件頁面此模塊背景為紅,否則為綠色正常。
最終軟件效果如圖3所示,基本達(dá)到預(yù)期的效果,實現(xiàn)該有的功能。整個軟件包含雷達(dá)狀態(tài)、連接狀態(tài)和產(chǎn)品狀態(tài)3個模塊,數(shù)據(jù)正常模塊的背景色為綠色,反之則為紅色。雷達(dá)狀態(tài)和產(chǎn)品狀態(tài)模塊的更新頻率為6 min一次,連接狀態(tài)模塊的更新頻率為1 min一次。目前上傳考核的雷達(dá)產(chǎn)品數(shù)量不是很多,為直觀展示每個產(chǎn)品的狀態(tài),軟件頁面直接顯示所有產(chǎn)品。為凸顯效果,PUP_氣象臺的IP地址臨時設(shè)置為其他未使用的IP地址,因此為斷線紅色狀態(tài),實際情況是在線正常狀態(tài)。目前軟件已加入寧波氣象網(wǎng)絡(luò)運行科的日常監(jiān)控使用。
圖3 雷達(dá)監(jiān)控最終效果
該軟件最終實現(xiàn)的軟件成果基本符合預(yù)期效果,整個軟件包含雷達(dá)狀態(tài)信息、雷達(dá)軟件系統(tǒng)通信情況、雷達(dá)產(chǎn)品情況3塊信息,直觀地將狀態(tài)信息呈現(xiàn)給值班人員,協(xié)助值班人員在遠(yuǎn)端及時發(fā)現(xiàn)異常,實現(xiàn)了天氣雷達(dá)運行狀態(tài)監(jiān)控的自動化。系統(tǒng)能主動和及時地發(fā)現(xiàn)雷達(dá)故障,大大提高雷達(dá)維護人員的故障反應(yīng)速度,提高了雷達(dá)運行效率和資料傳輸質(zhì)量。但整個項目還存在需要改進的地方。
1)將雷達(dá)硬件遠(yuǎn)程重啟的功能結(jié)合進來。
2)改進軟件UI,從而更加美觀。
3)將視頻系統(tǒng)結(jié)合進來,使值班人員可以看到監(jiān)控截圖。
4)將報警和聲音、短信、微信推送等功能結(jié)合起來,擴寬預(yù)警方式的途徑。