趙 炯,王蘇桁,熊肖磊,周奇才
(同濟大學 機械與能源工程學院, 上海 201804)
在我國鐵路網高速發展的背景下,鐵路隧道特別是長大隧道內的災害預防和救援受到了越來越多的關注。由于列車經過隧道時會在隧道內產生較大側向風壓的“活塞效應”,從而對隧道內存放的通信、信號、電力等設備產生不利影響,因此在鐵路隧道內通常都會設有隧道防護門,從而保證軌旁設備的長期穩定運行。
近幾年隧道防護門事故頻發,這是因為在“活塞效應”的循環作用下,隧道防護門可能會出現門板撕裂、門鎖變形甚至門體坍塌等問題,如果隧道防護門脫落并且倒向軌道一側,將會造成嚴重的列車運行事故,因此在“活塞效應”循環作用下確保隧道防護門的可靠性顯得尤為重要。目前,國內針對隧道防護門的使用狀況檢查大部分仍然采用人工巡檢的方式,不僅耗時耗力,并且難以判斷隧道防護門的真實狀況,因此在隧道服役期內對隧道防護門遠程監控系統進行研究成為亟需解決的問題。
本文針對上述情況,設計了基于MQTT(Message Queuing Telemetry Transport)協議的隧道防護門遠程監控系統,可以實現對隧道防護門開閉、風壓以及振動等狀態信息的實時監測,提升了隧道防護門的可靠性。
結合隧道的應用環境特點,選擇具有獨立計算能力的樹莓派(Raspberry Pi)作為中心采集器,通信協議采用輕量級物聯網協議——MQTT協議。依據上述條件設計的鐵路隧道防護門遠程監控系統主要由感知層、通信層和應用層三部分組成,如圖1所示。
第一層為感知層。感知層主要負責實現系統底層的數據采集功能,由樹莓派與多種傳感器組成。考慮到部分隧道地理位置較為偏僻,網絡條件較差甚至無網絡的情況,該采集器需要具有數據本地存儲與分析計算的功能,因此選擇樹莓派作為中心采集器。樹莓派是一種只有信用卡大小的卡片式電腦,具有價格低、體積小的優點,與常見的51單片機和STM32等嵌入式微控制器相比,不僅可以完成IO引腳控制,還能運行Linux操作系統,因此可以完成更復雜的任務管理與調度,支持更上層應用的開發。除此之外,樹莓派還支持I2C、串口以及WiFi等多種通信方式,具有較高的可擴展性。
第二層為通信層。通信層主要負責實現感知層與應用層之間的通信,樹莓派通過WiFi或4G模塊將數據發送到MQTT服務器,再由MQTT服務器將數據轉發到監控平臺進行數據存儲、數據分析以及數據展示等。
第三層為應用層。應用層主要負責搭建監控平臺,首先訂閱感知層所采集到的實時數據并對其進行解析,然后執行存儲、分析、可視化等操作。目前平臺端開發主流的方法是使用框架技術進行開發,因此采用Spring Boot + Spring MVC + MyBatis框架作為主體進行開發,采用Mysql數據庫對數據進行持久化,然后在前端網頁采用Bootstrap框架進行展示。
感知層主要由樹莓派、監控攝像頭、接近開關、風壓傳感器以及振動傳感器組成。
攝像頭主要用于記錄隧道洞室內場景發生變化的情況,考慮到隧道洞室在安裝完成后通常很少有人員出入,因此實時視頻的意義較小,并且在樹莓派上實現實時視頻推流的資源開銷巨大,因此對于圖像采集采用固定時間間隔拍照的方案,將當前圖像與之前保存的圖像進行對比,如果兩次圖像整體變化較小,則認為圖像無變化,不會進行上傳;如果圖像整體變化較大,則會覆蓋之前圖像并進行上傳,其特點為在不使用高消耗的視頻推流技術的條件下,又提供了隧道內獲取的圖像。

圖1 鐵路隧道防護門遠程監控系統總體架構
接近開關安裝于鎖盒內,用于記錄隧道防護門的開閉情況,在門體上側會有指示燈提示防護門開閉情況,并且在發生變化時會將該防護門的開關信息上傳到服務器端。
風壓傳感器與振動傳感器安裝于防護門前面板處,用于采集列車經過時的風壓以及振動數據。由于鐵路隧道防護門大都是在“活塞效應”的循環載荷作用下引起的疲勞破壞,在遭到破壞前通常都沒有特定的物理量來進行判斷,因此可以通過采集大量的振動數據,先在服務器端對振動數據進行分析,提取出用于判斷隧道防護門健康狀況的特征量,再對隧道防護門的真實狀態進行評估。
采集程序運行后會開辟多個進程,按功能主要可分為四類:數據采集線程、數據傳輸線程、數據分析線程以及數據清理線程。其中數據采集線程主要用于獲取傳感器所采集到的數據并存儲到本地數據庫中;數據傳輸線程主要用于從數據庫中加載剛剛采集到的數據并發送至MQTT服務器端;數據分析線程用于對本地數據庫中的數據進行分析,從而判斷隧道防護門的實時狀況;數據清理線程主要用于對數據庫中過期信息進行及時清理,以免因為存儲了過量數據而導致系統崩潰。這種劃分多個線程的方式實現了數據采集與數據發送等功能的解耦,避免了由于網絡較差的場合導致采集到的大量未發送數據堆積內存中致使內存溢出,并且充分利用了樹莓派多核CPU的計算能力,提高了數據的采集、發送以及分析的效率。
在樹莓派通電啟動后會自動執行該采集程序運行腳本,其采集流程如圖2所示。

圖2 數據采集流程
該程序首先對樹莓派進行初始化,確保樹莓派可以通過IO、I2C以及串口等方式與傳感器正確通信并獲取到數據,如果初始化失敗,則會將錯誤日志存入數據庫中并且將該錯誤日志進行上傳和打印。在初始化成功后,監控攝像頭采集線程以及接近開關采集線程是長期運行的,不受其他線程的影響,并且在采集到數據后會直接上傳。對于風壓傳感器以及振動傳感器,由于采集頻率較高并且只有列車經過時才能采集到有效數據,為了降低功耗,在樹莓派初始化成功后,風壓數據采集線程進入低速采集模式,每秒采集10次,當風壓大于0.1 kPa時,則會喚醒振動數據采集線程,并且自身進入高速采集模式,每秒采集數據約1 000次,持續1 min,然后再次判斷最后一次采集到的風壓數據是否大于0.1 kPa,如果仍大于,則繼續采集,否則,則結束本次采集流程,接著喚醒數據分析線程對剛剛采集到的數據進行分析,如果得到錯誤或報警信息則先存入本地數據庫報警信息表中,再將采集到的數據以及錯誤及報警信息上傳至MQTT服務器端進行轉發,最后恢復到風壓傳感器低速采集模式。
MQTT協議是由IBM開發的即時通訊協議,它是一種輕量級消息傳遞協議,通常與基于服務器的發布-訂閱模式一起使用,在TCP/IP之上運行。在發布-訂閱模式中,發布消息的客戶端與其他一個或多個接收消息的客戶端分離。客戶端可以發布特定主題的消息,并且只有訂閱了該主題的客戶端才能接收已發布的消息。
發布-訂閱模式需要代理服務器, 所有客戶端都與服務器建立連接。 通過服務器發送消息的客戶端稱為發布者,在服務器上訂閱了特定主題的客戶端稱為訂閱者。 服務器過濾傳入的消息,并將其分發給該消息主題的訂閱者,因此,發布者和訂閱者都需要與服務器建立連接。
本系統中,在Linux服務器上搭建Mosquitto物聯網MQTT消息服務器作為通信層的核心,其管理界面如圖3所示。該模式實現了感知層與應用層之間的解耦,并且消息隊列還具有削峰的作用,可以避免同一時間采集到的大量數據涌入監控平臺導致監控平臺服務器宕機。

圖3 Mosquitto服務器管理界面
監控平臺主要負責對該隧道防護門遠程監控系統進行綜合管理,分為前端和后端兩個部分。
在后端采用Spring Boot結合SSM框架進行搭建,Spring Boot能快速構建項目、對主流開發框架無配置集成、獨立運行項目、無須外部依賴Servlet容器、提供運行時的應用監控,極大地提高了開發和部署效率。
在前端網頁采用Bootstrap框架進行展示,Bootstrap具有簡潔且靈活的特點,它將HTML、CSS、JavaScript封裝成一個個組件,可以快速搭建一個適合本控制系統的前端框架。使用Bootstrap制作的平臺兼容性好,并且通過響應式布局設計可以提供更良好的視覺體驗。監控平臺登錄界面如圖4所示,數據展示界面如圖5所示。

圖4 監控平臺登錄界面 圖5 數據展示界面
針對“活塞效應”下鐵路隧道防護門的可靠性問題,提出了一種適用于鐵路隧道防護門的遠程監控系統,該系統可以實時有效地對隧道防護門進行數據采集、數據分析,然后將數據上傳至服務器端進行中心化展示和處理。該系統具有極高的可擴展性以及兼容性,能夠適應多種隧道場景下的采集、通信要求,并且高度解耦,便于系統的擴展與模塊化處理。通過該系統,可以對隧道防護門的實時狀態進行分析與預警,為隧道防護門的可靠性提供安全保障。