楊世英 孟彩菊 靳玉貞 安凱杰 韓凱宇
摘要:地震預警站點正常運行是地震烈度速報與預警系統快速高效產出的基礎,針對目前監控運維系統尚未全面覆蓋的現狀,基于對地震預警站點設備通信方式的分析,運用Python中socket、requests模塊編寫程序獲取地震預警站點設備狀態,實現了對地震預警站點智能電源和數據采集器的有效監控,可有效避免了設備“病態運行”引發的斷記、波形異常甚至發生風險的情況,提高地震預警站點的實時運行率和數據完整率。本文所探討的內容對于具有同類需求的工作具有一定的參考價值。
關鍵詞:中心站;地震預警站點;監控;Python
中圖分類號:TP311? ? ?文獻標識碼:A
文章編號:1009-3044(2023)36-0123-04
開放科學(資源服務)標識碼(OSID)
0 引言
1868年美國J. D. Cooper最早提出地震預警的構想,限于當時的技術水平,直到大約100年后,隨著科技的進步,美國、日本、美國、墨西哥、意大利等多個國家先后建成地震預警系統,開展地震預警實踐,并取得一些成功經驗和減災實效。
地震預警(Earthquake Early Warning,簡稱“EEW”)的基本思想是利用布設在震中附近的密集地震臺網和低延時實時通信傳輸線路對地震進行實時監測,利用地震 P 波傳播速度大于更大破壞性的 S波和面波,以及電磁波傳播速度遠遠大于地震波波速的原理,在盡可能短的時間內估算地震影響范圍和程度,搶在破壞性地震波到達目標區域之前發布警報,以減少人員傷亡和減輕地震災害損失[1-2]。
我國于2015年開啟國家地震烈度速報與預警工程(以下簡稱“預警工程”)。國家預警工程山西子項目于2021年底基本建設完成,2022年4月進入內部測試運行,2023年5月獲項目法人批復進入試運行。
預警工程系統主要由臺站觀測系統、通信網絡系統、數據處理系統、緊急地震信息服務系統及技術保障系統等組成。其中,臺站觀測系統是實現地震烈度速報與預警功能的首要環節與基礎。臺站觀測系統中的地震預警站點分為基準站、基本站和一般站[3-4]。
1 站網概況
太原地震監測中心站(以下簡稱“太原站”)負責山西中部(太原、晉中、呂梁、陽泉4個地級市)295個地震預警站點的運維工作,太原站轄區地震預警站點分布如圖1所示。其中224個一般站主要委托鐵塔公司共同維護,71個基準站和基本站的運維任務由太原站負責。
一個典型的基準站的技術系統如圖2所示。其中地震計、加速度計、數據采集器(以下簡稱數采)構成觀測系統;交流電、太陽能、智能電源、蓄電池組、環境監控、視頻監控、防雷接地等構成供電系統;路由器、運營商傳輸鏈路構成通信系統[5-6]。
不同地震預警站點的技術系統與圖2略有不同,如基本站僅列裝加速度計、部分地震預警站點僅有市電或光伏單路電能來源。
供電系統的核心是智能電源,智能電源工作機制是,由市電和(或)光伏為兩組電池充電,兩組電池輪流輸出12V供給數采等負載,智能電源同時采集地震預警站點內的動環信息。
觀測系統的核心是數采,數采作用是將地震預警站點的地震動信號傳輸到匯聚中心,同時收集自身及傳感器的狀態信息。
通信系統的核心是路由器,實現數據的分組選路和轉發。
2 地震預警站點監控現狀分析
地震預警站點實行中心站、地震臺和國家級中心三級監控運維。中心站負責轄區地震預警站點的監控運維。
臺網中心要求各級單位建立24小時值班制度,使用運維監控系統每天對地震預警站點的網絡、供電、數據通斷、數據延時、數據質量、專業設備零位、智能電源供電和溫濕度等動環狀態及地震預警站點參數變化情況進行檢查和監控(震臺網函〔2023〕38號附件1:測震站網站點運維管理細則)。
目前,在太原站使用和部署的監控系統包括網強網管系統、華為公司定制軟件—監控與運維分系統、JOPENS系統的monitor模塊以及省地震臺人工分析波形后的共享文檔通知?;緦崿F了地震預警站點“網絡、數據通斷、數據延時、數據質量的監控”。
對于臺網中心要求的“供電、專業設備零位、智能電源供電和溫濕度等動環狀態及地震預警站點參數變化情況進行檢查和監控”,即對各地震預警站點的智能電源和數采進行監控和參數檢查,以上系統不能實現。
中心站主要通過客戶端軟件、瀏覽器逐個登錄各地震預警站點的智能電源或數采進行查看,由于中心站地震預警站點數量較多,通過這種方式任務繁重效率低下,難以實現日常巡查。部分廠家提供了“集成管理軟件”“批量獲取參數軟件”等,但因需配備Linux服務器、功能有待改進、獲取的參數不足等原因不能實現有效監控。
運行中易發生智能電源充放電“病態運行”的狀況,如充放電模塊故障,交流、光伏、電池斷路等,如未被及時發現,將導致電池過度放電直至耗盡,從而引起長時間斷記。另外,動環狀態異常(如紅外、煙感、水侵等)時,若不能及時被發現也可能會造成設備損毀引起斷記。數采的“病態運行”如未被及時發現得不到及時處置,輕則影響觀測數據的質量,重則導致數據喪失使用價值。另外數采的參數配置方面如量程、標定的誤設等或可引發一定風險。故對智能電源和數采的監控和參數檢查是重要的[7]。
根據臺網中心對監控的要求以及對智能電源、數采進行監控的重要性,針對當前工作現狀,本文擬使用Python編制“地震預警站點設備監控程序”,實現對智能電源和數采的監控和參數檢查。
3 編程實現
太原站地震預警站點使用的智能電源有遠航RH-C1000系列,數采有泰德公司的TDE-324FI(CI)、港震公司的EDAS-24GN-EEW和深研院的HG-D6(D3)。以上設備分別可使用客戶端軟件和(或)瀏覽器方式進行訪問,故編程實現分為Socket和HTTP兩種方式,本文擬采用近年流行的簡潔、易讀、擴展性強的Python編程語言實現[8]。
3.1 Socket方式
智能電源、港震數采、泰德數采可使用Socket方式訪問。以智能電源為例,廠家未提供通信協議。先運行Wireshark(一個數據抓包和分析工具軟件),然后打開客戶端軟件連接一個地震預警站點的智能電源,并點擊“實時數據”,最后用Wireshark對通信數據流分析并進行追蹤分析,結果如下:
客戶端軟件與智能電源的通信采用了UDP協議,使用9999端口,客戶端發送“ReqCommBSN=00000 000;”智能電源回應 “ACKCommBSN=RH.XXXXX;”,客戶端發送“RW_RT= RH.XXXXX;1;?;”,智能電源回應實時數據包如下(RH.XXXXX為智能電源序列號):
RTD;ID=RH.XXXXX;CI=0;DT=20230815014356;VF=2;PVA=0_00.3_+0_00.0_0;PVB=1_14.6_+0_00.5_0;AV=218;BA=1_0;BB=1_2;PT=+24.0;EA=9999.9_00;EB=9999.9_00;AP=000;SVI1=1_12.2_00.5;SVI2=1_12.4_00.5;SVI3=1_12.4_00.0;SVI4=1_12.4_00.0;SVI5=1_12.3_00.0;SVI6=1_12.4_00.0;VAB=12.8_14.6;A1=00.0_999.9_00;A2=00.0_999.9_00;A3=00.0_999.9_00;A4=00.0_999.9_00;A5=00.0_999.9_00;A6=00.0_999.9_00;B1=00.0_999.9_00;B2=00.0_999.9_
以上數據包含了相應序列號的智能電源的數據時間、充電來源、光伏、交流、電池等數十項狀態參數及報警值。
Python的socket類可向智能電源發送命令并獲取返回數據,使用socket類的關鍵命令行示例如下:
#1、創建socket套接字,綁定本地端口設定智能電源IP地址及端口
from socket import *
udpSocket = socket(AF_INET,SOCK_DGRAM)
bindAddress = ("",9999)
udpSocket.bind(bindAddress)
sendAddress = ("21.33.XX.XX",9999)
#2-1、向智能電源發送命令行
sendData = "RW_RT=RH.XXXXX;1;?;"
udpSocket.sendto(sendData.encode(),sendAddress)
#2-2、接收智能電源返回的數據
receiveData = udpSocket.recvfrom(1024)
#3、關閉socket套接字
udpSocket.close()
3.2 HTTP方式
對于泰德、深研院通過瀏覽器登錄的數采,可采用Python的requests庫獲取數采的狀態及配置信息。以泰德數采為例,廠家提供了接口說明文檔,如設備系統資源使用狀態的請求地址為http://10.14.X.X/service/sysusedstatusservice.php,數采返回的文本[{"cpu":"44","mem":"32","rootdisk":"51.2","usbdisk":"67.7"}]是一個字典類型數據,給出數采系統使用狀態中的CPU溫度、內存、系統盤、U盤使用率。Python的requests支持HTTP請求、Cookie保持會話、文件上傳產、自動響應內容編碼、國際化的URL和POST數據自動編碼。Requests在Python內置模塊的基礎上進行了高度的封裝。Requests實現以上功能的關鍵命令行代碼示例如下:
import requests , json
url="http://10.14. X.X /service/sysusedstatusservice.php"
response = requests.get(url)
data = json.loads(response.text)
深研院等廠家的數采,需要登錄才能獲取頁面的數據??墒褂胷equests庫先構造POST請求參數并發送POST請求,獲取返回的cookie信息;然后使用cookie信息進行后續操作。
3.3 監控分析
在通過以上方式獲地震預警站點設備數據后,需進行簡單分析判斷,對于智能電源,所有地震預警站點均需關注充放電狀態、電池組電壓、動環信息,位置偏僻的改造基準站,還需關注交流電的通斷。對于數采,對比獲取的參數與之前保存的正確值是否一致,關注GNSS對鐘狀態,定時標定狀態、傳感器零位等。以便發現設備“病態運行”,及時處置避免造成斷記、波形等故障甚至引發風險。程序運行中的頁面如圖3,可自動對數十個地震預警站點的設備進行查詢并給出異常信息和超出設定閾值的告警內容,實際應用中可根據需要定期運行,以做到對轄區地震預警站點設備狀況的掌握,程序也可以自動定時執行,并使用微信公眾平臺發送警告信息[9]。
4 應用成效
“地震預警站點設備監控程序”應用之前,多次發生地震預警站點由于市電中斷后太陽能供電不足或智能電源充放電異常引起電池過度放電直至耗盡,智能電源處于待機(或死機)狀態,即使市電恢復后也無法啟動工作,需上站進行處置,從而引起長時間斷記。數次發生傳感器或零位偏移較大引起波形異常需上站調零處理。還發生過傳感器雨后長時間浸泡于水中未及時發現險些損毀的情況。
“地震預警站點設備監控程序”應用之后,在日常使用中已及時發現部分地震預警站點的“病態運行”,如2023年8月4日 YSJXM、KY001站點在普降大雨后市電中斷至次日仍未恢復;2023年8月23日JZ001交流中斷至次日仍未恢復,由于該站點光伏硅晶板遮擋嚴重,造成電池電壓下降較多。2023年8月23日JS001充放電異常(顯示充電中,但無充電電流)導致電池電壓降較多。
以上地震預警站點通過及時處置使智能電源得以恢復正常運行,避免了發生電池虧電引發長時間斷記的可能。
“地震預警站點設備監控程序”實現了對地震預警站點數采的健康狀態、傳感器零位、參數配置等的監控與檢查,防范了風險的發生。目前暫未監控到“病態運行”或參數配置錯誤。
5 結束語
本文介紹了太原站轄區站網概況,分析了地震預警站點監控現狀,針對目前運維監控系統無法實現對“供電、專業設備零位、智能電源供電和溫濕度等動環狀態及地震預警站點參數變化情況進行檢查和監控”的情況,使用Python編程語言,編制了“地震預警站點設備監控程序”。該程序可使中心站掌握轄區地震預警站點的智能電源和數采的狀態的參數配置,有效避免設備“病態運行”引發的斷記、波形異常甚至發生風險的可能。文中詳細介紹了獲取智能電源和數采狀態的編程方法和示例代碼。編制的程序和編程實現的方法對其他中心站和有類似需求的工作具有一定的參考價值。
本文主要關注對觀測系統的監控以及發現設備“病態運行”狀態。至于故障處理和維修方法未予討論,可參閱省地震臺編制的故障處理流程或文獻[5]等內容。
參考文獻:
[1] 中國地震局監測預報司.測震學原理與方法[M].北京:地震出版社,2017.
[2] 楊陳,郭凱,張素靈,等.中國地震臺網現狀及其預警能力分析[J].地震學報,2015,37(3):508-515.
[3] 丁大業,董春麗,宮卓宏,等.山西地震預警新建基準站數據質量評估[J].山西地震,2023(2):15-22.
[4] 趙國峰,高楠,楊大克.國家地震烈度速報與預警工程建設進展[J].地震地磁觀測與研究,2022,43(3):165-171.
[5] 李曉銳,劉國俊,陳永新,等.地震預警站網典型故障及波形異常分析處理[J].山西地震,2023(2):32-36.
[6] 李奎,阿布都熱依木江·巴克,毛玉劍,等.地震預警臺站斷記自動告警程序的實現及應用[J].山西地震,2022(4):28-33.
[7] 董一兵,朱音杰,王仁濤,等.基于開源WebGIS的測震臺站運維管理系統的設計與實現[J].震災防御技術,2017,12(2):399-408.
[8] 布蘭登·羅德. Python網絡編程[M].北京:人民郵電出版社,2020.
[9] 賈寧,孫哲,韶丹.地震速報微信自動推送系統設計[J].地震地磁觀測與研究,2016,37(2):165-170.
【通聯編輯:李雅琪】