• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    地震前兆觀測設備模擬通信軟件關鍵技術研究*

    2010-01-09 03:01:30單維鋒
    地震研究 2010年4期
    關鍵詞:原語前兆觀察者

    單維鋒,李 軍

    (防災科技學院,河北三河 065201)

    地震前兆觀測設備模擬通信軟件關鍵技術研究*

    單維鋒,李 軍

    (防災科技學院,河北三河 065201)

    遵循“中國數(shù)字地震觀測網(wǎng)絡技術規(guī)程”相關標準,設計了一套基于 Java語言的前兆觀測設備模擬通信軟件。介紹了通信指令原語、數(shù)據(jù)包格式定義以及模擬通信軟件的總體設計,詳述了模擬通信軟件中的幾個關鍵技術,包括如何同時模擬多個前兆設備,應用觀察者設計模式實時更新設備狀態(tài)信息,使用套接字技術和多線程技術啟動或停止模擬設備,通過“心跳”線確認遠端 Socket是否關閉等。該軟件可以模擬大多數(shù) “十五”前兆觀測設備的通信原語,一方面為臺站技術人員以及地震專業(yè)學生了解前兆設備的功能、通信指令、以及數(shù)據(jù)包的數(shù)據(jù)格式提供了一個模擬環(huán)境,有效地提高了教學效果和培訓質量,另一方面也為開發(fā)前兆設備相關軟件提供了模擬支撐環(huán)境。

    前兆觀測設備;模擬通信軟件;套接字;多線程;觀察者設計模式

    0 引言

    地震前兆臺網(wǎng)的主要任務就是獲取重力、地磁、形變、地電、流體等地球物理和地球化學觀測數(shù)據(jù),為地震預報、科學研究和社會應用提供基礎數(shù)據(jù)。在地震行業(yè)領域,地震前兆觀測是日常獲取地震觀測信息的重要手段之一。

    地震前兆觀測設備的種類很多,如數(shù)字水位儀、氣象三要素觀測儀、地電儀和相對重力儀等。各種觀測設備的觀測物理量、采樣率、數(shù)據(jù)存儲等方面不盡相同(中國地震局,2005)。

    隨著 “十五”國家建設項目的推進,網(wǎng)絡化前兆儀器安裝相繼完成,全國各省級地震局的臺網(wǎng)中心甚至臺站都已經(jīng)接入互聯(lián)網(wǎng)(何案華等,2008)。為了采集、傳輸、存儲和管理各種前兆觀測數(shù)據(jù),各省局臺網(wǎng)中心或臺站根據(jù)現(xiàn)有設備特點開發(fā)了多種計算機管理系統(tǒng),以提高工作效率(牛從達等,2005)。目前,前兆觀測設備的數(shù)據(jù)匯集工作由中國地震前兆臺網(wǎng)數(shù)據(jù)管理系統(tǒng)(以下簡稱管理系統(tǒng))完成,該系統(tǒng)還負責臺站、區(qū)域中心、國家中心和學科臺網(wǎng)中心之間的數(shù)據(jù)同步交換并對地震專業(yè)用戶提供數(shù)據(jù)服務。

    由于管理系統(tǒng)的高度自動化和智能化,不利于專業(yè)人員了解設備的內部工作原理、數(shù)據(jù)格式和通信協(xié)議。操作人員嚴重依賴于管理系統(tǒng)獲取數(shù)據(jù)或監(jiān)控設備狀態(tài)。一旦管理系統(tǒng)出現(xiàn)問題,操作人員很難找到錯誤、手動獲取數(shù)據(jù)、查看設備狀態(tài)或直接控制設備。

    此外,在對相關技術人員培訓、教學以及設備通信軟件開發(fā)過程中,也需要了解設備的工作原理、數(shù)據(jù)格式和通信指令等內容。由于涉及的設備種類非常多,搭建真實的實驗環(huán)境不僅費用昂貴,而且還需要合適的實驗場地。

    因此,研究和開發(fā)一套前兆觀測設備模擬通信軟件(以下簡稱模擬軟件)就非常必要。模擬軟件可以模擬大多數(shù) “十五”地震前兆觀測設備,遵從 “中國數(shù)字地震觀測網(wǎng)絡技術規(guī)程——地震前兆臺網(wǎng)專用設備網(wǎng)絡通信”標準(地殼運動監(jiān)測工程研究中心,2005)(以下簡稱通信規(guī)程),能夠根據(jù)客戶端發(fā)送的指令,模擬不同設備產(chǎn)生相應格式的數(shù)據(jù)包并發(fā)送給客戶端。利用模擬軟件,可以模擬多種前兆設備的通信指令原語、返回相應數(shù)據(jù)包,有利于教師、受訓人員和學生了解設備的通信原理、通信指令以及數(shù)據(jù)格式等信息,通過模擬軟件有效地避免了對實際觀測設備的頻繁訪問,降低了對正常運行設備的干擾。

    1 前兆觀測設備通信指令原語及數(shù)據(jù)包格式

    模擬軟件主要實現(xiàn)客戶端與設備端通信指令原語的模擬??蛻舳讼蛟O備端發(fā)送通信指令和相關參數(shù),設備端收到指令原語后,進行解釋并執(zhí)行相應動作、返回執(zhí)行結果。指令原語主要分為數(shù)據(jù)傳輸類、設備控制類和設備監(jiān)視類。數(shù)據(jù)傳輸類原語包括獲取整體測量數(shù)據(jù)、當前測量數(shù)據(jù)和實時測量數(shù)據(jù)等原語。設備控制類原語包括設置工作參數(shù)、設備重新啟動等。設備監(jiān)視類原語包括獲取設備狀態(tài)信息、運行日志、工作參數(shù)等原語(地殼運動監(jiān)測工程研究中心,2005)。

    例如,獲取當前測量數(shù)據(jù)通信指令原語格式定義如下:

    get /length+ ID+dat+5

    指令原語含義:客戶端通過指令獲取設備端最近整 5分鐘采樣的樣本,如果沒有采樣樣本,取最近的 1個樣本。

    其中,“get”為命令關鍵字;“ ID”為設備標識符,即出廠時廠家給設備分配的唯一 ID號,通信規(guī)程規(guī)定命令中的 ID號必須和設備本身的 ID號完全一致,才可以執(zhí)行該命令(王秀英等,2008)。

    “l(fā)ength”為指令長度字,即除指令原語固有格式外指令的字節(jié)數(shù)總和;“dat”為數(shù)據(jù)傳輸命令字;“+”為分隔符。

    指令必須通過 TCP/IP協(xié)議發(fā)送,因此在發(fā)送該指令前,必須通過 81端口建立到特定設備的Socket連接,然后再發(fā)送具體命令。

    當設備接收到上述命令后,會將最新整 5分鐘采樣的樣本或最近一個樣本按如下格式打包,并通過 TCP/IP協(xié)議發(fā)回給客戶端。

    $數(shù)據(jù)包信息長度 數(shù)據(jù)包內容 ack

    其中,“$”為返回信息起始符;“數(shù)據(jù)包信息長度”是指數(shù)據(jù)包的具體內容的字節(jié)總數(shù),不含“數(shù)據(jù)包信息長度”本身和以“ ”表示的分隔符;“數(shù)據(jù)包內容”是設備端最新整 5分鐘采樣的樣本,如果沒有采樣樣本,取最近的 1個樣本;“ ”為換行符,用于分隔各個信息;若該儀器不支持該命令,返回“$err ”字符串。

    通信規(guī)程僅僅規(guī)定了各種設備必須提供的命令以及命令格式,并沒有規(guī)定各具體設備內部數(shù)據(jù)格式。設備采樣率和測項不同,不同設備同一命令返回的數(shù)據(jù)也不同,如水溫儀獲取當前測量數(shù)據(jù)指令的返回數(shù)據(jù)如下:

    $79

    79 105601 11006 431320060705 01 01 4313 15.9684 15.9684 15.9684 15.9684 15.9684

    ack

    其中,79表示數(shù)據(jù)的字節(jié)數(shù);105601表示起始時間為 10點 56分 01秒;11006是臺站代碼;431320060705為設備 ID編號;第一個 01為采樣率,表示分采;第二個 01表示通道數(shù)為 1個;4313為測量分項代碼,即井表層水溫;15.968 4、15.968 4、15.968 4、15.968 4、15.968 4分別為最近 5個觀測數(shù)據(jù)的值。

    如果是磁通門磁力儀設備,則返回的數(shù)據(jù)包含變化記錄垂直分量、變化記錄水平分量等 4個測項數(shù)據(jù)。

    所以,在實際模擬軟件開發(fā)過程中,必須實際測試每種模擬設備的具體數(shù)據(jù)格式,有針對性地進行模擬。

    2 模擬軟件的總體設計

    模擬軟件分設備端模擬軟件子系統(tǒng)和客戶端模擬軟件子系統(tǒng)。設備端模擬軟件子系統(tǒng)主要模擬實現(xiàn)各種前兆觀測設備接收客戶端模擬軟件發(fā)送的各種通信指令,并對指令進行分析,進而執(zhí)行相關指令,將運行結果按照規(guī)定的數(shù)據(jù)包格式打包,并發(fā)送給客戶端模擬軟件。客戶端模擬軟件子系統(tǒng)主要完成連接設備端模擬軟件、發(fā)送各種通信指令原語、收到指令后解析觀測數(shù)據(jù)。模擬軟件的工作流程如圖 1所示。

    當某個具體設備啟動后,設備一直處于偵聽狀態(tài),如果此時有客戶端發(fā)送連接請求,設備將產(chǎn)生一個新的工作線程用來處理與該客戶端的交互??蛻舳耸紫劝l(fā)送登錄指令,服務器端根據(jù)指令中的用戶名和密碼查找數(shù)據(jù)庫,判斷是否正確,如果用戶名和密碼都正確,則返回 “$ack ”字符串,表示登錄成功;返回 “$err ”字符串,表示失敗。登錄成功后,工作線程繼續(xù)等待接受客戶端的其他指令請求,并根據(jù)不同的指令,模擬執(zhí)行不同的操作,并將模擬執(zhí)行產(chǎn)生的數(shù)據(jù)按照規(guī)定的格式打包,并發(fā)送回客戶端。直至客戶端關閉連接或設備端關閉或者設備端空閑超時自動關閉。

    圖1 模擬軟件工作流程Fig.1 Workflow of simulation system

    3 模擬軟件關鍵技術分析

    3.1 同時模擬多個前兆設備

    模擬軟件可以同時模擬多個設備,每個設備可以同時接受多個客戶端的連接。通過前文的分析可知,模擬設備具有一些共同的功能,如啟動、停止、用戶登錄、獲取當前數(shù)據(jù)、獲取配置參數(shù)、獲取運行日志等。將這些功能封裝在一個 ITen-FiveDevice的接口中。對于一些共同的操作,如登錄、啟動、停止等功能在 TenFiveDeviceAbstract類中實現(xiàn),而大部分設備具有的不同的具體功能實現(xiàn)則由每個具體的設備類(如:DSQ、G M4、WYY等)負責進行重載,相關類圖如圖 2所示。

    圖2 模擬設備類圖Fig.2 Diagram of s imulation devices

    3.2 實時更新模擬設備狀態(tài)

    模擬軟件為用戶提供了一個可視化操作界面,用戶可以方便的操作各種模擬設備,包括啟動、停止、添加、刪除、修改設備等。模擬軟件啟動時,先從數(shù)據(jù)庫中加載所有的設備信息到內存中,每個設備就是一個 Device對象,所有設備組成一個鏈表結構 DeviceList。模擬設備在運行過程中,用戶連接數(shù)、運行狀態(tài)等信息會隨著客戶端的連接與斷開或發(fā)出的各種通信指令不同而發(fā)生變化,界面上的信息需要和各設備內存結構中的信息保持一致。在此,采用觀察者設計模式,使界面上的設備狀態(tài)和內存中的設備對象狀態(tài)保持一致。觀察者設計模式的工作原理是讓多個觀察者對象同時監(jiān)聽某個主題對象(被觀察者),當這個主題對象的狀態(tài)發(fā)生變化時,它會通知所有觀察者對象,使這些觀察者對象能夠自動更新各自的行為或狀態(tài)。觀察者模式的優(yōu)點在于,它在觀察者和被觀察者之間建立一種抽象、松散的耦合關系,并且支持廣播通信,被觀察者會向所有登記過的觀察者發(fā)送通知消息。

    在 J2SDK中的 java.util包中,為 Java程序設計人員提供了實現(xiàn)觀察者模式的幾個類和接口,主要有 java.util.Observer接口和 java.util.Observable類(盧葦,楊少波,2008)。java.util.Observer接口是觀察者對象接口,它定義了一個 update方法,用于在收到被觀察者對象發(fā)出的消息后,定義如何更新自己的狀態(tài)或行為。java.util.Observable類是一個被觀察對象或數(shù)據(jù),通過其提供的 addObserver方法注冊一個觀察對象,通過 notifyObservers方法通知所有的觀察者調用自身的 update方法更新自身狀態(tài)或行為。

    在本模擬軟件中,DeviceList對象可以被視為一個被觀察對象,它繼承了 Observable類,DataT-able封裝了界面上的 JTable控件,用于顯示 DeviceList對象中各設備對象相關信息,實現(xiàn)了 Observer接口,是一個觀察者。觀察者模式相關類及其之間的關系如圖 3所示。

    圖3 觀察者模式相關類及其關系Fig.3 Relative classes and their relationship of observer design pattern

    當模擬設備啟動、停止時,或者因為超時而自動斷開時都會導致設備的狀態(tài)發(fā)生改變(即 Device對象的 status屬性發(fā)生改變),當有一個客戶端連接或斷開時,也會導致設備的客戶端連接數(shù)目(clientNumber屬性)發(fā)生變化。當這些操作發(fā)生時,將 Device對象的 operation屬性設置為 update,并調用如下代碼通知觀察者進行更新:

    setChanged();//設置改變

    notifyObservers(device);//通知更新

    被觀察者發(fā)送更新通知(notifyObservers方法)時,將Device對象作為參數(shù)傳遞給觀察者。觀察者DataTable對象接收到更新通知后,自動調用 update方法,更新界面上設備相關信息。

    3.3 多次啟動、停止設備監(jiān)聽

    在模擬軟件實現(xiàn)中,管理員可以隨時在設備端管理界面上停止、啟動某個設備。啟動一個設備即建立一個監(jiān)聽套接字,然后調用其 accept方法,在指定的端口進行監(jiān)聽,等待客戶端的連接,如果連接成功,就新創(chuàng)建并啟動一個線程,在線程內部處理和客戶端的交互。模擬設備的啟動方法的算法描述如下。

    在本模擬系統(tǒng)中,如果設備對象 Device直接繼承 Thread類,而將上述模擬設備的啟動方法內容置于其 run方法內,雖然可以啟動設備進行監(jiān)聽,但是當停止監(jiān)聽后無法重新啟動。原因在于一個線程執(zhí)行完指定的任務后就消亡了,無法調用線程對象的 start方法再次啟動該線程(Sun Microsystems,2003)。

    因此,在模擬軟件中,將監(jiān)聽任務單獨實現(xiàn)在 TenFiveDeviceServerThread類中,它繼承了 Runnable接口,將啟動方法放在 TenFiveDeviceServerThread類的 run方法中,并且其構造函數(shù)中包含一個類型為 Device的參數(shù),與相應的設備進行關聯(lián)。

    Device類的 startServer方法算法如下:首先,構造一個 TenFiveDeviceServerThread對象;然后,構造一個線程對象,并啟動該線程;最后,更新界面狀態(tài)。

    當需要停止設備監(jiān)聽時,可以調用 Device對象的 stopServer方法。

    由此可見,設備(Device類)包括一個 Ten-FiveDeviceServerThread對象,而一個 TenFiveDeviceServerThread對象包括多個客戶端工作線程對象(TenFiveWorkThread),每個工作線程對象內有一個命令解析對象 parser,負責對收到的客戶端命令進行解析并調用設備相應的方法,打包模擬數(shù)據(jù)。其 UML關系圖見圖 4。

    3.4 通過 “心跳”線判斷遠端 Socket是否斷開

    模擬軟件客戶端和設備端通過 Socket建立連接,當設備端停止模擬時,客戶端軟件的界面狀態(tài)需要實時更新。在整個通信過程中,客戶端主動請求設備端,而設備端一直處于被動響應模式。當設備端停止時,客戶端并不能立刻知道設備端的狀態(tài),只有在下一次請求時才會出現(xiàn)異常。因此,在客戶端和設備端之間應該建立一條“心跳”線來檢測兩者之間鏈路是否暢通。Java中的 Socket類提供了一個 sendUrgentData方法(Sun Microsystems,2003),它會往輸出流發(fā)送一個字節(jié)的數(shù)據(jù),用于測試對方 Socket是否已經(jīng)關閉。只要對方Socket的 SO_OOB INL INE屬性(默認值)沒有打開,就會自動舍棄這個字節(jié),因此設備端不需要添加任何處理該消息的相關代碼。在模擬軟件中,當 Socket連接成功后,會啟動一個定時器,每隔 1秒鐘就通過 sendUrgentData方法發(fā)送一個字節(jié)數(shù)據(jù),確認設備端是否關閉,如果設備端已經(jīng)關閉,sendUrgentData方法將會拋出異常,在異常處理代碼中關閉客戶端相關連接即可。

    圖4 設備、線程類 UML圖Fig.4 UML diagram of device

    4 應用效果分析

    設備端模擬軟件子系統(tǒng)能夠實現(xiàn)設備的添加、修改、刪除以及查看詳細信息,在設備列表中,選擇一個具體設備后,可以啟動或停止監(jiān)聽??蛻舳四M軟件子系統(tǒng)通過指定模擬設備的 IP地址和端口號連接到一個運行中的模擬設備,然后發(fā)送登錄、獲取數(shù)據(jù)等指令,并將返回數(shù)據(jù)顯示在界面上。

    模擬軟件能夠模擬絕大部分通信指令。模擬的設備包括水管傾斜儀、豎直擺鉆孔傾斜儀、測氡儀、數(shù)字式溫度計等多種 “十五”設備。設備端模擬軟件子系統(tǒng)界面如圖 5所示,客戶端模擬軟件子系統(tǒng)界面如圖 6所示。

    圖5 設備端模擬軟件子系統(tǒng)界面Fig.5 U Iof device side of simulative system

    圖6 客戶端模擬軟件子系統(tǒng)界面Fig.6 U Iof client side of simulative system

    5 結語

    該模擬軟件界面友好、簡單實用、易于操作,能夠模擬大部分 “十五”前兆觀測設備,為臺站工作人員、教師、學生學習和了解前兆設備通信協(xié)議、設備功能、觀測數(shù)據(jù)格式提供了模擬環(huán)境支持,同時也為各種前兆設備相關通信軟件的開發(fā)提供模擬支撐環(huán)境,在實際開發(fā)中,可以直接連接該模擬軟件,避免對實際觀測設備的頻繁訪問,具有較大的應用價值。

    地殼運動監(jiān)測工程研究中心 .2005.中國數(shù)字地震觀測網(wǎng)絡技術規(guī)程——地震前兆臺網(wǎng)專用設備網(wǎng)絡通信 [M].北京:地震出版社.

    何案華,趙剛,王軍,等 .2008.串口前兆儀器的因特網(wǎng)接入方案與配套軟件開發(fā)[J].地震研究,31(3):279-283.

    盧葦,楊少波 .2008.J2EE項目實訓——UML及設計模式 [M].北京:清華大學出版社 .

    倪泰山,闕云彩,李祥,等 .2009.基于B/S結構的地震臺站綜合信息管理系統(tǒng)的設計與實現(xiàn)[J].地震研究,32(1):89-93.

    牛從達,王峰,李倩,等 .2005.云南分布式地震觀測數(shù)據(jù)庫系統(tǒng)的設計與實現(xiàn)[J].地震研究,28(4):398-402.

    王秀英,周振安,劉愛春 .2008.“十五”地震前兆觀測設備網(wǎng)絡通信規(guī)程應用探討[J].大地測量與地球動力學,28(4):131-135.

    中國地震局 .2005.中國地震前兆臺網(wǎng)技術規(guī)程[M].北京:地震出版社.

    SunMicrosystems.Class Thread[EB/OL].(2003-01-01)[2010-05- 22]. http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Thread.html.

    SunMicrosystems.sendUrgentData[EB/OL].(2003-01-01)[2010-05-22].http://java.sun.com/j2se/1.4.2/docs/api/java/net/Socket.html#sendUrgentData(int).

    Research on Key Technologies of Simulative Commun ication System of Earthquake Precursory Observation Devices

    S HAN W ei-feng,L I Jun
    (Institute of D isaster Prevention,Sanhe065201,Hebei,China)

    A ccording to“Stipulation on N et Comm unication for D evices in China Geophysical and Geochem ical O bservatory N e tw ork”,a sim ulative comm unication system of precursory observation devices based on java programm ing language is designed.Firstly,the paper introduces the comm unication prim itives,data package form at and high-level architecture.Secondly,several key technologies of sim ulative comm unication system are argued in detail,such as how to sim ultaneously sim ulate m ultiple p recursor equipm ent,updating devices'status using observer pattern,using socket and m ultithreading technologies to start/stop s im ulative device,using “heart”m essage to judge w hether the rem ote socket is closed or not.The s im ulative comm unication system realizes m ost comm unication pr im itives and provides a sim ulative environm ent for students to understand the functions,comm unication prim itives and data package form at of precursory observation devices,w hich enhances the teaching effects and training quality,on the other hand it provides a support environm ent for developm ent of sim ulation softw are.

    precursory observation devices,sim ulative comm unication softw are,socket,m ultithreading,observer design patten

    TP311.52

    A

    1000-0666(2010)04-0365-06

    2010-03-15.

    中國地震局教師科研基金(20090101)和防災科技學院防災減災青年科技基金(200905)聯(lián)合資助 .

    猜你喜歡
    原語前兆觀察者
    觀察者
    揚子江(2024年3期)2024-05-10 06:59:24
    測試原語:存儲器故障最小檢測序列的統(tǒng)一特征
    冷靜而又理性的觀察者——德國華人作家劉瑛訪談
    哪些現(xiàn)象是地震前兆
    密碼消息原語通信協(xié)議介紹及安全分析
    右肝區(qū)不適或疼痛是肝癌表現(xiàn)的前兆嗎
    肝博士(2015年2期)2015-02-27 10:49:46
    騰沖地電場震前的前兆異常分析
    地震研究(2014年3期)2014-02-27 09:30:57
    基于原語自動生成的安全協(xié)議組合設計策略及應用研究
    全國前兆臺網(wǎng)“九五”系統(tǒng)臺站接入的設計與實施*
    地震研究(2013年3期)2013-12-14 09:30:56
    觀察者模式在Java 事件處理中的應用研究*
    微處理機(2013年4期)2013-07-20 09:40:34
    贵南县| 宁都县| 得荣县| 特克斯县| 望都县| 卓资县| 新乡县| 胶州市| 兖州市| 山西省| 桦甸市| 扬州市| 泉州市| 奉新县| 商河县| 澜沧| 乐都县| 金阳县| 彭泽县| 通化县| 卢湾区| 永吉县| 罗平县| 平江县| 进贤县| 尚义县| 曲靖市| 东明县| 北宁市| 杂多县| 咸丰县| 农安县| 神农架林区| 唐河县| 河曲县| 剑阁县| 黑山县| 林口县| 石棉县| 玉龙| 汉沽区|