董一兵,高景春,劉勝國,毛國良,孫貴成,劉 新
地震計和地震數據采集器是測震臺網技術系統的關鍵設備,它們的運行狀態直接決定著臺網的監測質量。在運行過程中,受到外部環境 (供電、GPS等)和儀器自身 (元器件的物理性質、系統軟件等)等多種因素的影響,地震計和地震數據采集器可能出現一些異常情況,例如,地震計發生零位偏移,數據采集器出現時間錯誤等。這些異常如果得不到及時處置,輕則影響觀測數據的質量,重則導致數據喪失使用價值。目前主流的數據采集器均提供了健康狀態信息查詢服務,用戶可以通過專用客戶端軟件查詢數采的電壓、溫度、鐘差、地震計機械零位等狀態參數。現有的研究成果并未充分利用數采的健康狀態服務(陳吉鋒等,2012)。針對這種現實需求,我們為測震臺網設計、開發了一套測震儀器健康狀態數據交換軟件平臺。針對不同類型數據采集器輸出健康狀態信息方式的差異,分門別類地設計開發了客戶端程序,實現了與多種數采的網絡數據通信功能。在開發過程中,引入開源的消息中間件ActiveMQ作為統一交換平臺 (Snyder,2011),為儀器健康狀態的交換共享提供了統一的數據接口,便于實現系統與新業務的無縫集成,增強了系統的彈性和可擴展性。整套方案具有性能優異、易于管理和擴展的特點,具有良好的推廣應用前景。
測震儀器的健康狀態 (State Of Health,簡稱SOH),是關于儀器運行狀態的信息,由數據采集器輸出的一系列物理量及其取值來描述。目前,在各區域測震臺網應用比較普遍的儀器包括:港震機電的EDAS24系列數據采集器和BBVS系列地震計,Guralp的CMG-DM24數據采集器和CMG-3ESPC地震計,Kinemtrics的Q330系列數據采集器和STS系列地震計等。這些儀器廠商對SOH信息的定義、編碼方式和傳輸協議均有所不同。本著求同存異的原則,我們初步擬定了11個比較有共性的SOH參數,分別是:數據采集器的供電電壓、輸出電壓、電瓶電壓、機箱溫度、時間誤差、頻率誤差、內存總空間、內存可用空間,地震計A的垂直向零位、北南向零位、東西向零位。
系統由3個松散耦合的功能模塊構成:①SOH接收與發布模塊,② ActiveMQ消息服務器,③SOH訂閱與應用模塊。其中,模塊 ① 的功能是:與多部數據采集器建立并發連接,定時接收SOH數據,并通過ActiveMQ的消息隊列進行發布。模塊②的功能是:作為統一交換平臺,管理SOH消息隊列,是系統實現分布式應用的關鍵環節。模塊③的功能是:訂閱SOH消息,實現自定義的業務應用。
系統應滿足測震臺網對應用軟件的可靠性、可擴展性、可移植性和安全性等方面的要求。
系統運行的網絡環境如圖1所示。模塊①部署在SOH應用服務器上,模塊②部署在ActiveMQ服務器上,模塊③部署在SOH訂閱客戶端上。系統運行約束見表1。

圖1 系統網絡環境圖Fig.1 System network environment

表1 系統運行約束表Tab.1 Restriction table of system running environment
在程序設計過程中,主要用到了以下技術:
(1)Java TCP/IP Socket編程技術 (Fall,Stevens,2012;Calvert,Donahoo,2008)。目前,不同儀器廠家對數據采集器網絡通信協議的實現方式不同,例如,EDAS24系列數據采集器支持TCP通信協議;CMG-DM24可利用數據通信單元擴展實現UDP通信協議;而Q330HRS的Baler單元則提供了用HTTP協議傳輸健康狀態信息的服務。針對這種差異性,我們的解決方案是為每一種儀器編寫相應的客戶端類,實現通信連接的維護、報文分組的分類解析等功能。
(2)Java并發編程技術 (Goetz et al,2012)。每個地震區域臺網中心都下屬若干個地震臺站,要同時維護與多個臺站的通信連接,有兩種實現方式——多進程方式和多線程方式。在操作系統中,進程是一個重量級的對象,每一個進程都獨占一部分系統資源,線程是輕量級對象,同一進程內的多個線程間共享該進程所保有的資源 (Silberschats et al,2009)。基于易于實現和優化性能的考慮,我們采用多線程方式來實現與多臺站的并發通信連接。
(3)Java消息服務 (Java Messaging Service,簡稱JMS)。JMS是Java平臺上有關面向消息中間件(Message Oriented Middleware)的技術規范(Monson et al,2009)。ActiveMQ是一個完全支持JMS1.1的JMS Provider實現。在系統中,我們利用JMS與ActiveMQ通信,實現SOH消息的交換。
系統的框架結構如圖2所示。其中,SOH接收與發布模塊由各類數采的客戶端程序和SOH發布程序所構成。

圖2 系統框架結構圖Fig.2 Fram structure of the system
系統完整的業務流程可歸納為以下幾個主要步驟:
①系統初始化;
②數采客戶端程序與數采進行通信,對接收到的報文分組進行解析,將解出的SOH數據交給SOH發布程序;
③SOH發布程序將SOH數據格式化為SOH消息,并交給AMQ消息服務器;
④SOH訂閱與顯示模塊從AMQ消息服務器訂閱SOH消息,并進行處理;
⑤繼續執行步驟2。
在開發SOH接收與發布模塊時,需先行分析儀器的通信協議和數據格式,掌握每一種數采輸出SOH數據的內容和方式,以此為基礎來設計業務邏輯。模塊將按照配置文件的內容進行初始化,配置文件采用XML格式,詳細說明見表2。

表2 配置文件說明表Tab.2 Description of configuration file
2.3.1 數采客戶端的設計與實現
數采客戶端的主要功能是:與數采進行通信、接收SOH數據。下面分別介紹EDAS24系列數據采集器、CMG-DM24以及Q330HRS客戶端程序的設計和實現技術。
(1)EDAS24系列數據采集器 (EDAS-24GN和EDAS-24IP)利用TCP協議傳輸SOH數據。程序在處理與數采的通信連接時,采用的是長連接的方式,即在成功建立起通信連接之后長期保持該連接。之所以采用這種方式,主要基于以下考慮:TCP連接的建立和釋放過程需要占用一定的系統資源 (謝希仁,2008),頻繁的連接和釋放操作將給數采帶來較大的負擔,對數采的穩定運行造成一定影響。經過實際測試,長連接方式比短連接方式更加安全、可靠,有利于保障數采的正常穩定運行。在獲取SOH數據時,采用請求/響應方式,即客戶端程序向數采發送查詢請求,數采輸出響應。EDAS24系列數采客戶端的業務流程如下:
①程序初始化;
②測試數采網絡地址的可達性;
③與數采建立控制連接,獲得數據端口;
④與數采建立數據連接;
⑤通過數據連接發送查詢幀,獲得響應幀,從中解析出SOH數據;
⑥將SOH數據交給SOH發布程序;
⑦繼續執行步驟②。
(2)CMG-DM24數據采集器的TCP/IP通信功能需要借助DCM來實現。DCM通常利用UDP協議傳輸數據。與TCP不同,UDP是一種無連接的服務,與EDAS24系列數采所采用的通信方式相比,Guralp的通信方式使得數采不必花費額外的開銷來維護通信連接、保證通信質量,在通信鏈路質量良好的情況下,這有利于數采的穩定運行,同時也簡化了客戶端程序的業務邏輯。它的SOH數據由狀態流和地震計零位流分別傳輸,其中,用ID“00”來標識狀態流,數據采用ASCII格式編碼;用ID“M8”、“M9”和“MA”分別標識地震計的垂直向、北南向和東西向零位流,數據采用GCF格式編碼。與EDAS24系列不同的是,CMG-DM24不支持通過請求/響應方式獲取SOH數據的方式,故在程序設計時只能采用數采主動傳輸、客戶端程序被動接收的方式。CMG-DM24客戶端的業務流程如下:
①程序初始化;
②測試DCM網絡地址的可達性;
③將DCM通信端口與本地端口相綁定;
④接收DCM的UDP數據報,從中解析出SOH數據;
⑤將SOH數據交給SOH發布程序;
⑥繼續執行步驟②。
(3)Q330HRS由數據采集器 (Q330S)和通信單元 (Baler)兩部分集成。其中,Baler提供了通過HTTP協議定時傳輸SOH數據的服務。HTTP協議定義了Web服務器和Web瀏覽器之間通信的規則 (Gourley et al,2002),我們可以利用這個服務來設計客戶端程序。Q330HRS客戶端的業務流程如下:
①程序初始化;
②測試Baler網絡地址的可達性;
③與 Baler建立 HTTP Socket連接,解析出SOH數據;
④將SOH數據交給SOH發布程序;
⑤繼續執行步驟②。
2.3.2 SOH發布程序的設計與實現
SOH發布程序的主要功能是:按照JMS規范,將接收到的SOH數據格式化為SOH消息,并將其傳遞給ActiveMQ消息服務器。程序在處理與ActiveMQ的通信連接時,采用的是長連接的方式。SOH消息包括消息屬性和消息體。其中,消息屬性的說明見表3,消息體采用XML格式,詳細說明見表4。

表3 SOH消息屬性說明表Tab.3 Description of SOH message properties

表4 SOH消息體說明表Tab.4 Description of SOH message body
為了對系統方案進行全面的測試,我們開發了測震臺站儀器狀態監視程序,將其作為系統的SOH訂閱和應用模塊。在河北測震臺網搭建了測試環境 (表5),接入了30個運行中的測震臺站。經過若干個月的試運行和觀察總結,我們認為系統整體表現穩定,功能和性能均達到了預期的設計要求,證明了系統方案的可行性。圖3是該監視程序運行時的截圖。

表5 系統測試環境說明表Tab.5 Description of sysytem testing environment

圖3 測震臺站儀器狀態監視程序Fig.3 Monitoring program of the state of seismic station instrument
介紹了測震儀器健康狀態交換平臺的設計與實現。本系統的創新主要表現在:第一,通過儀器適配器程序的研制和多線程技術,實現了與多種地震數據采集器的并發式網絡通信以及SOH數據的統一接收;第二,通過引進ActiveMQ消息中間件,實現了SOH數據的統一交換,為消息訂閱程序的開發提供了統一數據的接口,增強了系統的彈性和可擴展性;第三,經測試證明,本系統作為一套完整的解決方案,具有性能優異、易于管理和易于擴展的特點,在測震臺網的應用將有利于保障臺網的運行質量。
目前系統的功能和性能均達到了設計預期效果,但是我們認為系統仍有很大的上升空間。例如,可以考慮為SOH接收和發布模塊增加人機交互界面,用來監控和調整線程的運行狀態,這有利于提高程序的靈活性和健壯性;另外,本文所介紹的SOH監視程序只是系統應用的一種模式,本系統更重要的意義在于:在實踐過程中,利用AMQ提供的統一數據接口,不斷探索SOH數據應用的新思路、新方法,推動現有成果的應用和轉化。軟件工程學認為:軟件生命周期的結束意味著一個新的生命周期的開始 (Sommerville,2010)。因此,不斷增強系統的功能、優化系統的性能,是我們下一個階段的工作任務。
陳吉鋒,陳軍輝,應昶,等.2012.無人職守地震臺站遠程監控系統的設計與實現[J].地震研究,35(3):429-433.
謝希仁.2008.計算機網絡(第五版)[M].北京:電子工業出版社.
Calvert K L,Donahoo M J.2008.TCP/IP Sockets in Java,Second Edition:Practical Guide for Programmers[M].California:Morgan Kaufmann.
Fall K R,Stevens W R.2012.TCP/IP Illustrated Volume 1(Second Edition)[M].New Jersey:Addison-Wesley Educational Publishers Inc.
Goetz B,Peierls T,Bloch J,et al.2012.Java Concurrency in Practice[M].Texas:Pearson Education,Inc.
Gourley D,Totty B,Sayer M,et al.2002.HTTP[M].California:O'Reilly Media,Inc.
Monson H R,Richards M,Chappell D A.2009.Java Message Service(Second Edition)[M].California:O'Reilly Media,Inc.
Silberschats A,Galvin P B,Gagne G.2009.Operation System Concepts(8th Edition)[M].New York:John Wiley& Sons Ltd.
Snyder B.2011.ActiveMQ in Action[M].New York:Manning Publications.
Sommerville I.2010.Software Engineering(9th Edition)[M].Texas:Pearson Education.