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