吳天華,閔 銳,吳恩啟,孫海力
(1.上海理工大學(xué)機(jī)械工程學(xué)院,上海 200093;2.上海隧道工程股份有限公司機(jī)械制造分公司,上海 200137)
近年來(lái),我國(guó)對(duì)地鐵、隧道等基建項(xiàng)目的投入不斷增大,對(duì)盾構(gòu)機(jī)設(shè)備產(chǎn)生了大量需求[1-3]。然而,盾構(gòu)機(jī)在地下掘進(jìn)過(guò)程中,盾殼承受了土體壓力等載荷,盾尾又是盾殼最薄弱的部分,最容易產(chǎn)生形變,引發(fā)漏漿現(xiàn)象,影響工程施工進(jìn)程[4]。因此運(yùn)用信息手段對(duì)盾尾形變狀況進(jìn)行實(shí)時(shí)監(jiān)測(cè)具有重要的現(xiàn)實(shí)意義。
傳統(tǒng)監(jiān)測(cè)系統(tǒng)大多通過(guò)本地設(shè)備檢測(cè)盾構(gòu)機(jī)。例如,Wu 等[5]開發(fā)了盾構(gòu)機(jī)刀盤振動(dòng)監(jiān)測(cè)系統(tǒng),采集施工過(guò)程中刀盤的振動(dòng)信息并進(jìn)行顯示。Lan 等[6]基于渦輪傳感器開發(fā)了一套盾構(gòu)機(jī)檢測(cè)系統(tǒng),能夠在線監(jiān)測(cè)圓盤切割機(jī)的運(yùn)行參數(shù)。Tang 等[7]結(jié)合氣體檢測(cè)、氣體提取和無(wú)線通信技術(shù),提出了隧道掘進(jìn)過(guò)程中生物氣體引發(fā)的瓦斯爆炸問(wèn)題的預(yù)防和控制方法。然而,此類監(jiān)測(cè)系統(tǒng)僅供用戶在工程現(xiàn)場(chǎng)進(jìn)行實(shí)地監(jiān)測(cè),不便于數(shù)據(jù)存儲(chǔ)和轉(zhuǎn)移,靈活性較低。
隨著信息技術(shù)不斷發(fā)展,許多學(xué)者將互聯(lián)網(wǎng)技術(shù)應(yīng)用于盾構(gòu)機(jī)監(jiān)測(cè)系統(tǒng)中。例如,孟祥波等[8]結(jié)合軟硬件設(shè)備實(shí)現(xiàn)了一套基于互聯(lián)網(wǎng)的盾構(gòu)機(jī)遠(yuǎn)程監(jiān)控系統(tǒng)。黃惠群等[9]提出基于OPC 接口技術(shù)的監(jiān)測(cè)系統(tǒng),通過(guò)匯總不同品牌和類型的盾構(gòu)機(jī)信息,實(shí)現(xiàn)了多臺(tái)盾構(gòu)機(jī)設(shè)備的集群監(jiān)測(cè)。肖敏等[10]采用B/S 架構(gòu),通過(guò)ASP.NET 技術(shù)實(shí)現(xiàn)了遠(yuǎn)程實(shí)時(shí)動(dòng)態(tài)監(jiān)控。趙炯等[11]為了解決B/S 模式負(fù)載、網(wǎng)頁(yè)延遲過(guò)大的問(wèn)題,使用Redis 技術(shù)使系統(tǒng)具有高效的數(shù)據(jù)處理能力。孫振川等[12]通過(guò)建立行業(yè)Hadoop 集群生態(tài)架構(gòu),利用大數(shù)據(jù)技術(shù)解決了傳統(tǒng)隧道掘進(jìn)工程信息化平臺(tái)兼容性和擴(kuò)展性較弱的問(wèn)題。然而,此類監(jiān)測(cè)系統(tǒng)大多通過(guò)盾構(gòu)機(jī)設(shè)備接口,利用軟件技術(shù)將設(shè)備數(shù)據(jù)上傳至互聯(lián)網(wǎng)平臺(tái)上實(shí)現(xiàn)遠(yuǎn)程在線監(jiān)測(cè),僅局限性于只收集盾構(gòu)機(jī)設(shè)備的本地信息,無(wú)法采集挖掘過(guò)程中的結(jié)構(gòu)性形變數(shù)據(jù),并且系統(tǒng)框架構(gòu)結(jié)構(gòu)復(fù)雜、成本較高。
為此,本文以盾構(gòu)機(jī)盾尾變的形變程度為研究對(duì)象,針對(duì)隧道掘進(jìn)工程引起的數(shù)據(jù)傳輸、數(shù)據(jù)處理及數(shù)據(jù)可視化等難題,結(jié)合現(xiàn)場(chǎng)實(shí)際監(jiān)測(cè)狀況,利用多線程設(shè)計(jì)、云服務(wù)器、Python 可視化等技術(shù)[13-15],基于B/S 模式搭建了一套盾構(gòu)機(jī)盾尾形變遠(yuǎn)程監(jiān)測(cè)系統(tǒng)。經(jīng)過(guò)長(zhǎng)時(shí)期的實(shí)驗(yàn)測(cè)試和工程檢驗(yàn)表明,系統(tǒng)耦合性低、靈活性強(qiáng)、運(yùn)行高效、穩(wěn)定,提供了良好的可視化交互界面,彌補(bǔ)了傳統(tǒng)監(jiān)測(cè)界面單調(diào)、異地通訊困難的不足,提升了信息傳輸速率。
盾構(gòu)機(jī)盾尾形變遠(yuǎn)程監(jiān)測(cè)系統(tǒng)根據(jù)實(shí)際工程需求分為數(shù)據(jù)采集模塊、云計(jì)算中心和可視化模塊3 個(gè)子系統(tǒng),如圖1 所示。具體的,數(shù)據(jù)采集模塊主要由應(yīng)變傳感器、應(yīng)變采集儀和本地PC 機(jī)構(gòu)成。其中,應(yīng)變傳感器用來(lái)測(cè)量盾尾表面各測(cè)點(diǎn)處的應(yīng)變值;應(yīng)變采集儀收集各測(cè)點(diǎn)的測(cè)量數(shù)值,然后通過(guò)光纖將數(shù)據(jù)發(fā)送至工程現(xiàn)場(chǎng)PC 機(jī);本地PC 機(jī)上自主開發(fā)的TCP 通訊程序能夠?qū)?yīng)變采集數(shù)據(jù)發(fā)送至云計(jì)算中心。云計(jì)算中心負(fù)責(zé)數(shù)據(jù)的濾波去噪、數(shù)值計(jì)算和結(jié)構(gòu)存儲(chǔ)等數(shù)據(jù)處理操作。可視化層中的Web應(yīng)用通過(guò)數(shù)據(jù)庫(kù)接口動(dòng)態(tài)獲取實(shí)時(shí)數(shù)據(jù),并可視化實(shí)時(shí)顯示盾尾的形變數(shù)據(jù),提供歷史查詢、預(yù)警等功能。
Fig.1 System framework圖1 系統(tǒng)框架
為實(shí)現(xiàn)現(xiàn)場(chǎng)數(shù)據(jù)與云計(jì)算中心的實(shí)時(shí)通訊,通過(guò)Socket 網(wǎng)絡(luò)接口建立TCP 連接。TCP 連接具有超時(shí)重傳和有序傳輸?shù)奶攸c(diǎn),適合穩(wěn)定交互工程數(shù)據(jù)。Socket 在通信機(jī)制中被稱為套接字,由IP 地址和端口號(hào)組成,通過(guò)Sock?et 建立服務(wù)器和客戶端的TCP 網(wǎng)絡(luò)連接,整個(gè)連接過(guò)程被稱為“三次握手”[16],如圖2 所示。在連接建立后,通過(guò)數(shù)據(jù)采集模塊將現(xiàn)場(chǎng)采集的原始數(shù)據(jù)傳送至云計(jì)算中心。
Fig.2 Socket communication process圖2 Socket通訊流程
由于工程現(xiàn)場(chǎng)通常存在多個(gè)需要同時(shí)進(jìn)行數(shù)據(jù)交互的監(jiān)測(cè)點(diǎn),傳統(tǒng)阻塞式服務(wù)器程序以隊(duì)列方式依次排隊(duì)處理數(shù)據(jù),效率較低。多線程的并發(fā)服務(wù)器充分利用了系統(tǒng)的計(jì)算、讀寫和網(wǎng)絡(luò)傳輸性能,能夠大幅度提升數(shù)據(jù)吞吐量和處理效率。多線程技術(shù)設(shè)計(jì)并發(fā)式服務(wù)器的具體結(jié)構(gòu)如圖3所示。
Fig.3 Parallel server process structure圖3 并發(fā)式服務(wù)器進(jìn)程結(jié)構(gòu)
由圖3 可見(jiàn),在主服務(wù)器進(jìn)程綁定套接字后,可為每一個(gè)新申請(qǐng)的連接創(chuàng)建從線程,多個(gè)從線程能夠相對(duì)單獨(dú)地執(zhí)行相同業(yè)務(wù)。并且,由于Python 是一種具有良好兼容性和跨平臺(tái)性的腳本語(yǔ)言,提供了Socket 和Socketserver 兩個(gè)模塊開發(fā)網(wǎng)絡(luò)服務(wù)器。其中,Socket模塊是單線程設(shè)計(jì),適用于單點(diǎn)連接;Socketserver 模塊則適用于多線程多連接。本文選擇Python 的Socketserver 網(wǎng)絡(luò)模塊結(jié)合Thread?ing 多線程模塊開發(fā)服務(wù)器程序,以提供快速、有效地多線程通信管道。
出于對(duì)工程數(shù)據(jù)安全性的考慮,需要對(duì)整個(gè)數(shù)據(jù)傳輸過(guò)程進(jìn)行加密。首先,上位機(jī)向服務(wù)器發(fā)送指定的ID 驗(yàn)證信息,服務(wù)器程序在確認(rèn)ID 有效后建立連接。然后,服務(wù)器讀取現(xiàn)場(chǎng)PC 機(jī)傳輸?shù)淖止?jié)流形式的原始數(shù)據(jù)。最后,對(duì)數(shù)據(jù)進(jìn)行處理得到盾尾測(cè)點(diǎn)的有效形變數(shù)值,并將其保存至數(shù)據(jù)庫(kù)的相應(yīng)字段中。為了避免頻繁的數(shù)據(jù)交互而造成端口數(shù)據(jù)通道擁堵的情況,在每次循環(huán)結(jié)束前使用time()函數(shù)設(shè)置30s 的系統(tǒng)延遲。服務(wù)器程序流程如圖4所示。
Fig.4 Server program flow圖4 服務(wù)器程序流程
在實(shí)際測(cè)量過(guò)程中,由于盾尾形變數(shù)據(jù)的時(shí)間跨度較長(zhǎng),短時(shí)間內(nèi)不顯著。本文在數(shù)據(jù)處理過(guò)程中采用逐段數(shù)據(jù)平均法進(jìn)行預(yù)處理。具體的,取固定時(shí)間段(通常為1min)作為樣本周期,將連續(xù)時(shí)間段內(nèi)的數(shù)據(jù)按小段時(shí)間等分為一組子序列,然而實(shí)際測(cè)量的數(shù)據(jù)樣本通常存在數(shù)值極大的粗差,因此采用中值濾波法對(duì)序列進(jìn)行處理。該方法既縮小了數(shù)據(jù)規(guī)模,又對(duì)數(shù)據(jù)進(jìn)行了一定程度的濾波,提升了數(shù)據(jù)處理效率。
由于MySQL 是目前最主流的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),具有體積小、速度快、成本低等優(yōu)點(diǎn)[17]。系統(tǒng)采用開源型數(shù)據(jù)庫(kù)MySQL 存儲(chǔ)數(shù)據(jù)。其中,數(shù)據(jù)采集模塊上傳的原始數(shù)據(jù)存儲(chǔ)在原始表中,內(nèi)容主要包括測(cè)點(diǎn)編號(hào)、傳感器方位、采集設(shè)備編號(hào)、盾尾應(yīng)變數(shù)據(jù)、記錄時(shí)間等,相關(guān)字段如表1所示。
為滿足系統(tǒng)的實(shí)時(shí)性要求,Web 會(huì)以較高頻率刷新數(shù)據(jù),通過(guò)數(shù)據(jù)接口與數(shù)據(jù)庫(kù)進(jìn)行頻繁交互,若數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)不合理,則會(huì)在一定程度上增加查詢時(shí)間。例如,當(dāng)讀取原始表時(shí),由于MySQL 數(shù)據(jù)庫(kù)的自身特性,表格冗余信息較多會(huì)降低數(shù)據(jù)的搜索速度。為此,在設(shè)計(jì)查詢表結(jié)構(gòu)時(shí)以固定間隔的時(shí)間戳屬性為表格主鍵,并與計(jì)算處理后得到的n個(gè)測(cè)點(diǎn)的形變數(shù)值組成二級(jí)查詢表(見(jiàn)表2),以提升數(shù)據(jù)查詢效率。
由表2 可知,根據(jù)測(cè)點(diǎn)編號(hào)和時(shí)間戳可確定某一時(shí)刻的盾構(gòu)機(jī)盾尾被監(jiān)測(cè)位置的形變情況,并且每隔一定時(shí)間間隔,Web前端會(huì)更新最新數(shù)據(jù),達(dá)到實(shí)時(shí)監(jiān)測(cè)目的。
系統(tǒng)基于B/S 模式,采用Python 語(yǔ)言的開源框架Dash開發(fā)了Web 系統(tǒng),Dash 使用Python 語(yǔ)言構(gòu)建了高度自定義的數(shù)據(jù)可視化應(yīng)用程序,融合了Flask、Plotly.js 和React.js技術(shù)。其中,F(xiàn)lask 是基于工具箱Werkzeug 的輕量級(jí)Web應(yīng)用框架[18];Plotly.js 提供了強(qiáng)大的圖表庫(kù),適合大規(guī)模數(shù)據(jù)展示;React.js 提供網(wǎng)頁(yè)的UI 設(shè)計(jì)規(guī)范,采用聲明式設(shè)計(jì),具有靈活、高效的優(yōu)點(diǎn)。
Dash 應(yīng)用流程如圖5所示,具體流程為:
(1)利用Dash 的Layout 組件進(jìn)行網(wǎng)頁(yè)整體布局,DIV、IMG、Table等html標(biāo)簽由React進(jìn)行動(dòng)態(tài)渲染。
Table 1 Original table storage structure表1 原始表存儲(chǔ)結(jié)構(gòu)
Table 2 Secondary query table structure表2 二級(jí)查詢表結(jié)構(gòu)
Fig.5 Dash application process圖5 Dash應(yīng)用流程
(2)編寫回調(diào)函數(shù)(Callback)對(duì)圖表進(jìn)行個(gè)性化設(shè)置,回調(diào)函數(shù)與html標(biāo)簽通過(guò)關(guān)鍵字ID 進(jìn)行關(guān)聯(lián)。
(3)通過(guò)MySQL 數(shù)據(jù)庫(kù)API 接口獲取各圖、表所需的初始數(shù)據(jù)。
(4)通過(guò)HTTP 請(qǐng)求傳遞JSON 格式的數(shù)據(jù)包至瀏覽器,利用Plotly.js和CSS文件進(jìn)行圖形渲染。
網(wǎng)站構(gòu)建完成后,為了使外部網(wǎng)絡(luò)瀏覽到監(jiān)測(cè)界面,需要將Dash 部署到云服務(wù)器上。本文采用Nginx 作為HTTP 代理服務(wù)器,WSGI 協(xié)議作為服務(wù)器網(wǎng)關(guān)接口,Web應(yīng)用程序會(huì)分配視圖函數(shù)一個(gè)URL。當(dāng)用戶通過(guò)瀏覽器訪問(wèn)時(shí),首先對(duì)該域名進(jìn)行DNS 解析,再將函數(shù)返回值顯示至瀏覽器上,整個(gè)通信過(guò)程基于HTTP 協(xié)議[19],具體工作原理如圖6所示。
Fig.6 Working principle of HTTP protocol圖6 HTTP協(xié)議工作原理
以溫州市甌江口隧道工程為例,在盾構(gòu)機(jī)盾尾處的某一縱向觀測(cè)斷面設(shè)置7 處監(jiān)測(cè)點(diǎn)進(jìn)行數(shù)據(jù)采樣,截面近似圓形,7 處測(cè)量點(diǎn)等間隔分布在圓周上。2020 年7 月14日,對(duì)系統(tǒng)監(jiān)測(cè)狀況進(jìn)行測(cè)試,Dash 搭建的盾尾形變可視化主界面如圖7所示。
Fig.7 Overall interface圖7 總體界面
由圖7 可見(jiàn),系統(tǒng)可直觀顯示監(jiān)測(cè)點(diǎn)的形變量位置信息、形變量實(shí)時(shí)折線圖、形變量直方圖及歷史數(shù)據(jù)表格等實(shí)時(shí)信息和統(tǒng)計(jì)數(shù)據(jù)。其中,頁(yè)面左上角為實(shí)時(shí)形變監(jiān)測(cè)圖,設(shè)置了下拉框便于用戶檢測(cè)7 個(gè)監(jiān)測(cè)點(diǎn)的實(shí)時(shí)數(shù)據(jù),根據(jù)盾尾20min 內(nèi)的形變數(shù)據(jù)繪制了實(shí)時(shí)波形和三次樣條擬合曲線,以便于用戶直觀觀察盾尾形變值的變化趨勢(shì);頁(yè)面右上角的互動(dòng)插件可將當(dāng)前時(shí)刻的曲線圖保存到本地,圖中還標(biāo)出了安全預(yù)警線,當(dāng)超過(guò)安全預(yù)警線時(shí),后臺(tái)程序會(huì)自動(dòng)發(fā)送郵件提醒工作人員及時(shí)進(jìn)行處理;頁(yè)面右側(cè)提供了形變數(shù)據(jù)的直方圖統(tǒng)計(jì)報(bào)告和測(cè)點(diǎn)方位指示器,設(shè)置了滑動(dòng)方式的頁(yè)面交互控件,測(cè)點(diǎn)方位指示器顯示了該測(cè)量點(diǎn)在盾尾截面所處的方位,歷史數(shù)據(jù)查詢功能設(shè)計(jì)為表單形式,在選定日期、時(shí)間后即可在滑動(dòng)表格中查看所有測(cè)點(diǎn)的具體形變數(shù)值。
利用Python 的Socket 模塊定義TCP 請(qǐng)求函數(shù),模擬客戶端向服務(wù)器發(fā)起連接操作,測(cè)試單線程和多線程網(wǎng)絡(luò)模型的性能差異,設(shè)置請(qǐng)求總數(shù)從5~100 次不等,實(shí)驗(yàn)結(jié)果如圖8所示。
Fig.8 Comparison of network model optimization圖8 網(wǎng)絡(luò)模型優(yōu)化比較
由圖8 實(shí)驗(yàn)結(jié)果可見(jiàn),多線程網(wǎng)絡(luò)模型完成100 次連接請(qǐng)求的總耗時(shí)為72ms,相較于單線程網(wǎng)絡(luò)模型約提升了10倍。
為檢驗(yàn)網(wǎng)站在短時(shí)間內(nèi)應(yīng)對(duì)大量用戶同時(shí)進(jìn)行訪問(wèn)的并發(fā)性能,使用Web 壓力測(cè)試工具對(duì)網(wǎng)站進(jìn)行壓力測(cè)試,模擬100 個(gè)用戶并發(fā)進(jìn)行訪問(wèn),在3s 內(nèi)向網(wǎng)站持續(xù)發(fā)送Get請(qǐng)求,測(cè)試結(jié)果如圖9所示。
Fig.9 Response time histogram圖9 響應(yīng)時(shí)間直方圖
由圖9 可見(jiàn),網(wǎng)站在高負(fù)載下,仍然保持通信穩(wěn)定,信息傳遞的延遲較低,服務(wù)器后臺(tái)平均每秒可處理649 次請(qǐng)求,平均響應(yīng)時(shí)間為150ms。
針對(duì)盾構(gòu)法施工過(guò)程中的實(shí)際需求,提出一種盾構(gòu)機(jī)盾尾形變遠(yuǎn)程監(jiān)測(cè)系統(tǒng)。實(shí)踐結(jié)果表明,該系統(tǒng)不僅實(shí)現(xiàn)了對(duì)盾尾形變數(shù)據(jù)進(jìn)行傳輸、存儲(chǔ)、處理、顯示等功能,還通過(guò)Dash 框架的可視化技術(shù)搭建了Web 平臺(tái),實(shí)現(xiàn)了數(shù)據(jù)的可視化交互。
在經(jīng)過(guò)網(wǎng)絡(luò)壓力測(cè)試和實(shí)際工程中的長(zhǎng)期檢驗(yàn)表明,系統(tǒng)通信穩(wěn)定,延遲較低,能夠滿足用戶快速、直觀地了解盾尾形變狀況,滿足了跨地域、跨終端的日常監(jiān)測(cè)需求。
此外,由于本文采用了解耦設(shè)計(jì),后續(xù)可根據(jù)實(shí)際需求,靈活定制盾尾變形監(jiān)測(cè)系統(tǒng)的迭代功能,以便于將系統(tǒng)應(yīng)用于數(shù)據(jù)分析、參數(shù)優(yōu)化、故障預(yù)警等方面。