常 城,白若冰,王衛(wèi)平,古云鶴,張 璐,杜睿攀
(陜西省地震局,陜西 西安 710068)
為連續(xù)并精確觀測地殼形變數據,自中國地震局“十五”數字化地震觀測網絡項目建設完成后,各地震臺大都采用DSQ型水管傾斜儀和VS型垂直擺傾斜儀作為地震前兆地傾斜儀器。此類儀器采用的位移傳感器有一定的量程范圍,當儀器經過一段時間的觀測或受到某些因素影響后,就會超出傳感器量程(通常為±2 000 mV),導致儀器觀測精度大幅降低甚至無法正常觀測,此時就需要儀器運維人員對儀器進行手動調零,使儀器恢復到正常工作狀態(tài)。由于電力和網絡故障,儀器通信偶爾也會中斷。對于上述情況的處理以陜西省地震局為例,臺站值班人員大多會對儀器狀態(tài)進行定期檢查或根據經驗預判,發(fā)現儀器即將超出量程或通信發(fā)生故障時及時對儀器進行調零和查修等操作。但這樣會增加值班人員的工作量,且實際工作中經常會由于值班人員經驗不足或未及時查看儀器狀態(tài)等原因不能及時發(fā)現儀器超量程或通信中斷,或者是發(fā)現超量程或通信中斷后也無法及時趕到儀器觀測室進行相應操作,導致儀器會中斷觀測或產生幾個小時甚至幾天的無效數據,影響數據的完整性和連續(xù)性。
為提高形變儀器觀測質量,減少運維人員工作量,近年來多位學者通過編寫桌面軟件實現對此類形變儀器的超量程和通信實時監(jiān)控,并通過聲音和郵箱等方式進行報警[1-3]。此外,也有部分學者利用企業(yè)微信平臺進行監(jiān)控并報警[4]。但目前此類軟件大多只對儀器進行被動監(jiān)控,無法依據數據變化趨勢對超量程日期進行提前大致預估,運維人員也無法根據大致的超量程日期進行運維工作統籌安排。因此,有必要編寫地震地傾斜儀器超量程可預估與通信監(jiān)控軟件,對地傾斜儀器超量程和通信等狀態(tài)進行監(jiān)控,并根據觀測數據對儀器超量程日期進行預估,以便運維人員可以更靈活安排日常巡檢工作,提高觀測數據質量[5]。
軟件基于Qt框架編寫,該框架是一個跨平臺的C++圖形用戶界面應用程序開發(fā)框架,具有簡單易用、性能強大以及軟件開源等優(yōu)勢,適合圖形界面程序開發(fā)。
陜西省地震局地傾斜儀器主要有DSQ型水管儀和VS型垂直擺傾斜儀等,這兩種型號的儀器可以通過訪問儀器網頁實現實時運行狀態(tài)查看、參數設置以及啟動標定等操作。本軟件通過定時訪問網頁獲取儀器工作狀態(tài),并進行超量程和通信狀態(tài)判斷。若數據超過設置閾值(默認為±1 800 mV)或通信中斷,則通過彈窗、聲音、郵件或短信等方式向值班人員報警。若數據和通信正常,則保存數據,同時與先前保存的數據一并進行計算,預估儀器超量程日期,并顯示在軟件主界面,以供值班人員查看。
軟件分為界面模塊、儀器狀態(tài)獲取模塊、配置文件存取模塊、儀器數據存取模塊、數據擬合計算模塊以及超量程與通信報警模塊等。其中,軟件界面模塊主要負責顯示監(jiān)控儀器信息和各項設置操作交互;儀器狀態(tài)獲取模塊負責對開啟監(jiān)控的儀器定期進行輪詢并獲取狀態(tài)數據;配置文件存取模塊負責對儀器型號、IP地址及報警郵箱設置等參數進行存??;儀器數據存取模塊負責對定時讀取的儀器狀態(tài)數據進行保存及預估計算時對已保存數據進行讀取;數據擬合計算模塊負責對儀器超量程日期進行預估;超量程與通信報警模塊負責對儀器超量程和通信中斷狀態(tài)進行彈窗、聲音或郵件等方式報警。
軟件流程如圖1所示。
圖1 軟件流程圖
根據地傾斜儀器等形變儀器的工作原理和地殼形變規(guī)律,結合經驗判斷,在無明顯干擾及地殼形變異常的情況下,觀測數據曲線應清晰體現固體潮信息,總體變化趨勢應趨于線性。在儀器進行過調零操作后的一段時間內,定期讀取儀器端點讀數并進行記錄,根據記錄到的數據采用最小二乘法對曲線大致變化趨勢進行擬合,即可預估儀器超量程日期。據此原理,可通過程序實現對儀器狀態(tài)數據的定期記錄,并在每次記錄后自動進行后續(xù)運算,得出儀器超量程日期預估值并顯示在軟件主界面,供運維人員參考。
2.2.1 儀器狀態(tài)獲取
在日常運維中,DSQ型水管儀和VS型垂直擺等儀器一般可以通過訪問實時數據網頁獲取端口電壓讀數,編寫儀器狀態(tài)獲取模塊可模擬訪問網頁對儀器實時數據進行提取。
軟件首先通過Qt框架中的QNetworkRequest發(fā)起對儀器運行狀態(tài)網頁的網絡協議請求,其次通過QNetworkAccessManager發(fā)送網絡請求,創(chuàng)建網絡響應,最后通過QnetworkReply獲取響應并讀取網頁數據。若無法建立通信或讀取數據為空白,則判斷儀器通信中斷并進行報警。若通信正常,則進行下一步數據獲取。通過在瀏覽器開發(fā)者工具中使用調試代碼“document.charset”得知網頁編碼為GBK格式,則獲取網頁代碼時需使用相同編碼格式進行處理或轉換。拉取全部網頁代碼后,通過分析可知網頁中“<html>”字符表明其為HTML文檔,包含標題“<title>”和主體“<body>”。需要提取的儀器端點讀數則在主體中“南”、“北”等對應端點名稱字符后,其中間隔著一定長度的字體格式等代碼。程序會使用indexOf和mid兩個函數進行數據篩選和提取,indexOf函數可以查找網頁中的關鍵字并返回關鍵字所在位置,mid函數可以截取從指定位置開始指定長度的數據。先使用indexOf函數查找網頁中“北”、“南”、“斜”等關鍵字,定位至所需關鍵字后,再用mid函數根據所需端點讀數與關鍵字中間隔的字符數截取關鍵字后對應的數據,即可獲得儀器端點讀數。獲取各端點讀數和儀器時間后,轉換為double和QDate Time類型,方便后續(xù)計算。
2.2.2 超量程預估日期計算
軟件每隔1 h獲取儀器端點讀數,若判斷未超出預設閾值,則將讀取的時間和數據保存至文件中,此數據為儀器各端點小時值采樣。用最小二乘法將該段時間內端點數據進行線性擬合,即可得到此區(qū)間的擬合直線近似方程。軟件讀取保存在數據文件中的端點讀數后,將QDate Time類型的時間數據轉換為時間戳格式,進行最小二乘法擬合計算,得出數據曲線整體變化趨勢擬合線性方程,然后代入設定好的超量程閾值求解,即可預估儀器超量程日期,并在軟件主界面顯示,如圖2所示。
圖2 超量程預估日期顯示
由于采取的算法為線性擬合,因此隨著讀取的儀器端點數據量的累積,計算得出的超量程預估日期也將更加準確。軟件為小時采樣,儀器出現少量突跳點和臺階等異常數據也只影響個別采樣點,擬合結果也基本可保持穩(wěn)定。
當儀器出現長時間大幅數據異常變化影響端點曲線變化趨勢或運維人員進行調零操作過后,值班人員可手動對軟件超量程預估模塊進行重置,軟件會從重置時拋棄歷史數據重新開始讀取儀器數據,保存并使用新數據進行擬合計算。
軟件主界面如圖3所示,包含儀器列表、狀態(tài)顯示、超量程預估日期顯示以及報警設置等區(qū)域。首次運行時會提示先選擇臺站,軟件會從device.ini配置文件中讀取選擇臺站轄區(qū)內的地傾斜儀器和主要參數等信息,并在儀器列表中顯示儀器與其工作狀態(tài)。選擇列表中儀器后,下方會顯示儀器運行狀態(tài)數據及超量程預估日期,日期預估需先讀取并累積5~7天數據供擬合計算。右下方可以設置彈窗、聲音或郵箱等報警方式的開關,也可在此處試聽報警聲音或設置報警郵箱地址。
圖3 軟件主界面
根據圖3,點擊“臺站選擇”按鈕可重新選擇監(jiān)控儀器臺站,點擊“儀器參數修改”按鈕對儀器IP地址、報警閾值以及監(jiān)控開關等進行設置,點擊“刷新”按鈕可對超量程預估日期進行刷新,點擊“重置”按鈕可對儀器監(jiān)控狀態(tài)和超量程預估日期進行重置。
當軟件監(jiān)控到儀器超出預設閾值或通信中斷時,則會觸發(fā)已開啟的報警手段,提醒值班人員及時查看儀器狀態(tài),并進行相應操作,如圖4、圖5及圖6所示。
圖4 儀器超量程彈窗報警
圖5 儀器超量程郵件報警
圖6 儀器通信中斷報警
為防止軟件誤關閉,點擊軟件右上角關閉按鈕后,軟件默認最小化至系統托盤。如需退出軟件,可在系統托盤上點擊右鍵選擇退出。退出軟件后,前期保存的儀器數據不進行自動清除,若在短期無較大影響或人工調零情況下再次打開軟件,即可根據保存的數據直接進行儀器超量程預估,無需重新積累數據。
軟件可用于地震臺網和中心地震臺等值班人員和運維人員對地傾斜儀器的監(jiān)控和超量程預估日期的查看,具有操作簡便和界面簡潔明了等特點。以寶雞上王DSQ型水管儀為例,圖7為北端2020年4月20日—6月1日分鐘值原始數據,可見在無明顯干擾和地殼形變異常等情況下,端點讀數大致趨近一條直線。
圖7 寶雞上王DSQ水管儀北端2020年4月20日—6月1日分鐘值原始數據
使用軟件對該儀器進行監(jiān)控,設置超量程閾值為±1 500 mV,并記錄每次超量程預估日期計算后的結果。儀器實際端點讀數為-1 500 mV時的日期為6月2日,若取誤差為±5天,則在開始監(jiān)控7天后軟件即可對儀器超量程日期進行較為準確的預估,并且結果穩(wěn)定,與實際超量程日期始終在誤差范圍內,如圖8所示。由此可知軟件在對形變地傾斜儀器超量程日期監(jiān)控報警及預估方面有一定實際意義。
圖8 寶雞上王DSQ水管儀北端超量程預估日期
通過在寶雞中心地震臺實際部署和應用地震地傾斜儀器超量程可預估與通信監(jiān)控軟件,可以發(fā)現其對儀器超量程及通信中斷監(jiān)控報警及時,超量程日期預估較為準確,可有效提升觀測數據質量,減少值班人員工作量,有一定實際應用價值。未來將對軟件進行進一步優(yōu)化和監(jiān)控手段升級,繼續(xù)完善軟件各項功能。