李曉銳,常 姣,劉國俊,張 娜,姚林鵬
(1.山西省地震局夏縣中心地震臺,山西 夏縣 044400;2.山西省地震局,山西 太原 030021;3.太原大陸裂谷動力學國家野外科學觀測研究站,山西 太原 030021)
Earthworm系統(tǒng)是由USGS(美國地質調查局)資助開發(fā)的一套開源地震數(shù)據(jù)處理系統(tǒng),該系統(tǒng)具有模塊化、跨平臺、高擴展性、魯棒性等特點,用戶可以根據(jù)需求,加載相應模塊,實現(xiàn)特定功能[1]。
目前,山西區(qū)域測震臺網(wǎng)使用的專用軟件是中國地震局自行開發(fā)研制的臺網(wǎng)數(shù)據(jù)處理系統(tǒng)Jopens,Jopens系統(tǒng)的流服務模塊(Jopens/SSS)可以向用戶提供實時波形數(shù)據(jù)服務。實時波形數(shù)據(jù)流的使用和共享遵循中國地震局自主開發(fā)的實時數(shù)據(jù)流交換協(xié)議NetSeis/IP。文章以C語言為編程語言,按照Earthworm系統(tǒng)模塊的編寫要求,設計并實現(xiàn)了從Jopens/SSS流服務器接入實時數(shù)據(jù)流的功能,為Earthworm系統(tǒng)在山西測震臺網(wǎng)的應用研究奠定基礎。
netseisip2ew模塊是Earthworm系統(tǒng)實時的數(shù)據(jù)接入模塊,屬于數(shù)據(jù)獲取功能部分,主要實現(xiàn)了三大功能:遵循NetSeisIP協(xié)議與Jopens/SSS流服務器建立TCP/IP連接,并從其中獲取實時波形miniSEED數(shù)據(jù)流;解析獲取的實時波形miniSEED數(shù)據(jù)流,對用戶指定SCNL(S:臺站代碼;C:分量代碼;N:臺網(wǎng)代碼;L:位置代碼)的miniSEED數(shù)據(jù)包通過steim2算法解壓縮[2]和數(shù)據(jù)包重組,生成符合Earthworm通信協(xié)議的TYPE_TRACEBUF消息;將生成的TYPE_TRACEBUF消息推送至預先設置的一塊共享內存(即:Earthworm系統(tǒng)的WAVE_RING消息環(huán))中。netseisip2ew模塊在整個Earthworm系統(tǒng)中的位置如圖1所示,scn2scnl模塊實現(xiàn)消息協(xié)議的轉換,wave_serverV實現(xiàn)波形服務器功能,Swarm軟件實現(xiàn)實時波形的可視化顯示[3],可以驗證netseisip2ew模塊是否工作正常。此外,netseisip2ew模塊還需實現(xiàn)Earthworm系統(tǒng)對其模塊的基本功能要求,如,狀態(tài)信息報告、“節(jié)拍”信號發(fā)送等。
圖1 Earthworm系統(tǒng)配置簡圖Fig.1 Earthworm system configuration diagram
在Earthworm系統(tǒng)中,所有功能模塊都是通過startstop系統(tǒng)控制模塊來啟動和結束的,模塊在啟動時首先讀取相應的配置文件(*.d),根據(jù)配置文件獲取的信息來控制實現(xiàn)相應功能。為了實現(xiàn)netseisip2ew模塊的三大功能,按照Earthworm系統(tǒng)模塊的編寫要求設計netseisip2ew模塊的總體流程(見第32頁圖2)。
圖2 netseisip2ew模塊總體流程圖Fig.2 Overall flow chart of netseisip2ew module
模塊的關鍵功能是實現(xiàn)遵循NetSeis/IP協(xié)議與Jopens/SSS流服務器建立TCP/IP連接。Jopen/SSS流服務使用用戶名和密碼認證的方式訪問,共分為服務端和專用客戶端兩部分。NetSeisIP協(xié)議的服務模型如圖3所示[4]。
圖3 NetSeis/IP協(xié)議服務模型Fig.3 NetSeis/IP protocol service model
要實現(xiàn)與Jopen/SSS流服務器的連接,需要分如下幾步:(1) 由客戶端發(fā)起TCP/IP連接;(2) 通過用戶名和密碼登錄Jopen/SSS流服務器;(3) 設置數(shù)據(jù)流類型;(4) 設置傳輸模式(程序為實時RT模式);(5) 建立數(shù)據(jù)連接;(6) 通知Jopen/SSS流服務器發(fā)送實時數(shù)據(jù)流(見圖4)。
圖4 關鍵功能流程圖Fig.4 Flow chart of key functions
netseisip2ew模塊代碼編譯完成后,配置Earthworm系統(tǒng)的startstop_unix.d,使得系統(tǒng)啟動相應的功能模塊,在Linux系統(tǒng)終端輸入“startstop”命令,啟動Earthworm系統(tǒng),正常啟動后的界面如第33頁圖5所示。看到啟動了所需的4個Earthworm功能模塊,各模塊狀態(tài)均正常(Alive)。啟動Swarm-2.6.3軟件,配置連接Earthworm系統(tǒng)的wave_server波形服務器,可以看到實時數(shù)據(jù)波形圖(見第33頁圖6),證明netseisip2ew模塊功能正常,可滿足設計需求。
圖5 Earthworm系統(tǒng)正常啟動狀態(tài)Fig.5 Normal startup state of Earthworm system
圖6 實時波形展示圖Fig.6 Real time waveform display
按照Earthworm系統(tǒng)對功能模塊編寫規(guī)范的要求,采用C語言為主要編程語言,設計并實現(xiàn)了從Jopen/SSS流服務器接收實時波形數(shù)據(jù)流,并將波形數(shù)據(jù)經(jīng)處理后輸出到Earthworm系統(tǒng)等功能的netseisip2ew模塊。netseisip2ew模塊為Earthworm系統(tǒng)提供了數(shù)據(jù)源,為Earthworm系統(tǒng)在山西測震臺網(wǎng)中的應用研究奠定基礎。