,,,,,,,
(大連海事大學 交通運輸裝備與海洋工程學院,遼寧 大連 116026)
2001年荷蘭MAMMOET公司和SMIT公司聯手合作使用8條工程船打撈俄羅斯“庫爾斯克”號核潛艇,在打撈過程中,每根提升鋼纜的實時拉力、總提升力、沉船水下深度、姿態,以及駁船的姿態、水下視頻信號等數據都集中顯示在監測平臺上,實現了打撈過程的集成監測[1- 2]。國內2007年在“南海一號”古沉船打撈過程中,利用姿態傳感器和水下超短基線定位系統進行沉船的定位和姿態監測[3];2008年在“暢通”輪打撈過程中,利用多種傳感器采集每根纜繩的提升力、提升速度、提升位移信息,并實時顯示在人機界面上[4],實現了對打撈過程中的部分信息監測,但沒有形成有效的集成監測平臺。
為了全面獲取打撈監測數據,及時掌握沉船動態,提高決策效率,設計沉船打撈集成監測及虛擬仿真系統。將多種信息(傳感器數據及網絡氣象與海洋環境數據)進行匯總,實現多種數據的集成顯示,建立沉船打撈虛擬仿真平臺,通過傳感器獲取的數據實時驅動虛擬模型,逼真再現打撈過程,實現打撈過程的實時可視化。
打撈工程通常采用浮力打撈與機械打撈相結合的方法,即利用外置氣囊、浮筒、艙室充氣等方式增加沉船浮力,通過機械設備提升圍繞沉船的千斤使其脫離海底[5]。在沉船起浮過程中,需要監測沉船與打撈工程船的位姿、每根千斤的受力情況,以及浮力的變化。
在沉船打撈過程中,潛水員需要多次進行水下探摸工作,根據工程進展,進行水下切割,開溝、船底穿千斤等輔助工作[6]。為保障潛水員在水下安全工作,水流速度不能超過0.6 m/s。海水流速變化與潮汐密切相關,因此需要提前了解工作海區的潮汐時間,時刻監測海水流速變化。
沉船打撈現場的氣象與海洋環境對打撈作業的安全進行具有至關重要的作用,因此需要監測工作海區的浪高、流速、天氣、風向、能見度等信息。
在以往的數據實時傳輸技術中,socket方式是典型的C/S數據交互模式,服務器與客戶端之間根據約定的傳輸協議通過端口或IP地址進行信息交互。這種傳輸方式安全性高,通用性強,支持.net架構及java、python等環境。而兩個系統可以通過同一數據庫進行數據的查詢、添加、刪除等操作。這種數據傳輸方式交互更加簡單靈活,數據庫提供相關的數據接口。為實現虛擬仿真的實時可視化需求,本文通過在一個系統中集成socket方式與數據庫共享機制兩種方式,解決了數據采集的實時傳輸難題。
沉船打撈集成監測及虛擬仿真系統總體設計方案如圖1所示,整套系統由3個部分組成:多通道數據采集系統、基于多傳感器的數據集成監控系統和基于虛擬現實的沉船打撈可視化系統。

圖1 沉船打撈集成監測及虛擬仿真系統總體方案圖
由于打撈監測設備的數據采集與存儲方式不同,沒有統一的數據標準[7],因此,需要建立一套多通道數據采集系統來獲取沉船、打撈工程船、提升力,以及海洋環境氣象等信息。數據采集系統技術方案如圖2所示。本系統選用西門子S7-200 smart PLC作為接收介質,通過模數轉換與串口通信方式獲取各終端傳感器信息。利用Python語言編寫網絡爬蟲,將國家海洋環境預報中心和國家海洋氣象局預測的浪高、流速、天氣、風向、能見度等信息實時抓取并保存到數據庫中。

圖2 多通道數據采集系統技術方案
基于多傳感器的數據集成監控系統依托組態王軟件進行設計。組態王(Kingview)軟件可以對工業自動化系統進行監視、控制、管理、集成和數據保存,通過組態王人機交互界面可以實時顯示打撈提升力、提升位移、沉船及打撈駁船位置和姿態、現場環境、水文要素、水下視頻信號等監測信息。
基于虛擬現實的沉船打撈可視化系統依托Virtools軟件進行設計,Virtools5.0是全球著名的虛擬現實開發軟件,可以方便地創建虛擬現實場景,并且支持大多數行業標準的VR設備和顯示器[8- 9],在3D互動方面技術強大。基于虛擬現實的沉船打撈可視化系統通過Virtools Dev虛擬現實平臺設計打撈虛擬場景,利用Virtools Server與MS Access數據庫連接,動態進行數據交換[10],利用監測的數據驅動虛擬模型運動,并將程序打包成exe格式進行產品發布,系統設計的部分沉船打撈虛擬場景見圖3。

圖3 沉船打撈虛擬場景
打撈監測數據繁多,數據傳輸與儲存方式也各不相同,針對各種監測數據,需要采用相應的數據采集方法。
2.2.1 PLC編程
打撈監測過程所用的壓力、溫度、位移、姿態等傳感器監測的數據采用PLC進行采集。遠距離、高精度的監測設備需要從國外引進,往往都是以數字量形式傳輸,利用PLC串口通信功能,設置數據傳輸端口、通訊協議、波特率、儲存數據位、奇偶校驗來獲取數據。近距離、單功能的監測數據以模擬量電信號的形式傳輸,PLC提供的A/D模塊利用線性對應的原理將模擬量數據轉換成可讀的數字量并儲存在PLC相應的地址中。由于讀取數據繁多,需要在PLC中設計循環采集程序,編程邏輯見圖4。

圖4 數據采集程序邏輯
2.2.2 網絡爬蟲
為了獲取沉船打撈區域的氣象與海洋環境預報信息,利用Python語言編寫網絡爬蟲程序[11],實時抓取浪高、流速、天氣、風向、能見度等預報信息,并儲存到數據庫中。采用Python語言編寫程序,通過正則表達式抓取固定URL地址上的信息,抓取的流程見圖5,其關鍵代碼如下。
if __name__==‘__main__’:
dt = [‘0600’,‘1200’,‘1800’,‘2400’] //設置抓取時間
while 1:
if strftime(“%H%M”) in dt:
page =1
url=‘http://www.nmefc.gov.cn/nr/jhhyhjyb.aspx?idx=1’+str(page) //輸入爬取URL
crawl=crawl1()
content=crawl.getHtml(url) //獲取網頁中相關的預報數據信息
table=crawl.creatTable(‘bohai’) //創建表格
crawl.deleteData(table,“渤海”) //刪除表格數據
items=crawl.getContent(content)
for item in items:
insertname=item[1],
if insertname[0] == u“渤海”:
crawl.inserttable(table,insertname,) //插入表中數據
sleep(60)

圖5 抓取網頁信息流程
2.2.3 整合外部數據庫資源
在沉船打撈過程中,有的監測對象有專門的數據采集與保存方式,這些數據分散在不同的數據庫(Oracle、SQL Server、MySQL、Access等)中,因此,需要通過整合外部的數據庫資源,才能達到全方位、多角度地監測打撈過程。
組態王軟件通過以太網方式與PLC進行數據傳輸,利用自身提供數據庫訪問功能(SQL),可以實現組態王和其他外部數據庫(通過ODBC接口訪問)進行數據傳輸,達到自動化集成入庫的目的。本系統以MS Access作為外部集成數據庫。
組態王軟件提供SQL訪問管理器和SQL連接函數實現與Ms Access數據庫通信,利用SQL管理器新建表格模板和記錄體,表格模板定義表格結構,信息儲存在SQL.DEF文件中;記錄體定義連接使數據庫表格中變量與組態王中變量相關聯,聯系儲存在BIND.DEF文件中[12]。組態王中的命令都是靠事件觸發執行的,為了提高程序效率,減輕后臺語言壓力,利用畫面命令語言設計組態王與數據庫相連。當組態王畫面顯示時,系統自動連接MS Access集成數據庫中,并進行數據的記錄。關鍵程序代碼如下所示:
SQLConnect(DeviceID,“dsn=mine;uid=;pwd=”); //連接指定數據庫,DeviceID為內存整型變量,表示數據連接句柄;dsn指ODBC數據源,命名為mine;用戶名及密碼定義為無
SQLCreateTable(DeviceID,“WreckSalvage”,“沉船角度”); //在數據庫中創建表格,數據庫名為WreckSalvage,表格模板為沉船角度
SQLInsert(DeviceID,“WreckSalvage”,“沉船角度”); //在連接的表格中插入一個新記錄,數據庫名WreckSalvage,記錄體為沉船角度
Virtools虛擬現實軟件提供多種方式與數據庫連接,本文利用Virtools自帶插件Virtools Server進行交互設計。這種方法利用ODBC接口實現與通用數據庫的連接,技術成熟,傳輸穩定,是一種穩健的數據獲取方式[13- 14]。利用這種方式,可以實時讀取數據庫中打撈要素值,利用數據驅動虛擬模型運動,達到實時可視化仿真的目的。
在連接數據之前,需要在Virtools Server Controller界面中設置與Virtools Server Database Module連接,保持Server status為Running。利用Virtools Building blocks編程,使用系統自帶的BB模塊,在Virtools Dev中編輯Level Script,系統程序見圖6。
在系統運行過程中,打撈數據的采集、集成、儲存入庫都是實時進行的,為了達到可視化仿真的同步性,在程序設計時,數據讀取速度要大于組態王中數據保存速度。利用Virtools server循環讀取數據時,每次都需要從初始值遍歷每一組數據,而隨著系統運行時間的增加,數據庫中的數據越來越多,導致系統讀取時間增加,實時性達不到要求。為解決上述問題,利用BB模塊設置判斷語句,當數據超過系統定義上限時,會自動進行數據刪除。數據采集流程見圖7。

圖6 數據讀取程序

圖7 數據采集流程
為了驗證系統工作的準確性與穩定性,搭建沉船打撈提升平臺。試驗臺采用液壓驅動沉船打撈,通過4個液壓缸提升沉船模型,利用PLC控制系統運行,通過多種傳感器從各個終端采集打撈過程中的要素值,信息顯示界面可以顯示船舶的縱傾角、橫傾角、環境溫度、提升力及船舶位置等信息。沉船打撈集成監測系統界面和實驗所用設備見圖8所示。

圖8 沉船打撈集成監測系統實驗臺
系統測試時沉船初始狀態為橫傾90°平躺在海底,通過4個液壓缸對沉船進行板正并提升出水,橫傾角、縱傾角與艏向角隨時間的變化見圖9。
在系統測試過程中,多終端監測信息采集與集成顯示、數據集成入庫均與設計相符,達到了預期的目的;虛擬仿真系統直觀地顯示打撈過程中沉船與打撈工程船的狀態,利用碰撞檢測技術增強虛擬場景的真實感,沉浸性強。

圖9 角度隨時間變化
系統運行過程中,實時性還存在不足,虛擬場景相較于試驗臺中沉船的運動存在一定的滯后性,但在沉船打撈工程中,沉船板正起浮是一個緩慢的過程,對虛擬仿真的實時性要求不高,因此不影響系統在實際工程中的應用。
[1] 關新宇.打撈“庫爾斯克號”核潛艇[J].建設機械技術與管理,2005,18(1):37- 39.
[2] International Salvage Team Brings Home the Kursk Submarine Using a Simulation Developed in Simulink [EB/OL].http://www.mathworks.com, 2015- 10- 12.
[3] 隋海琛,楊鯤,張彥昌,等.“南海一號”打撈過程中的水下定位和姿態監測[J].水道港口,2009(2):139- 142.
[4] 李興奎,吳志勇,戴義平,等.基于液壓同步牽引的沉船打撈技術[J].建筑機械化,2010,31(增刊):53- 57.
[5] HAUGEN F. Control of a buoyancy- based pilot underwater lifting body[J]. Modeling,identification and Control,2010,31(10):67- 77.
[6] 弓永軍,張增猛.打撈工程[M].大連:大連海事大學出版社,2012.
[7] 何朝陽,巨能攀,黃健.地質災害監測數據集成系統設計及實現[J].工程地質學報,2014,22(3):405- 411.
[8] LIU Qiang. Design of interavtive 3D exhibition system based on Virtools [J]. International Journal of digital content technology and its applications, 2012, 6(23): 201- 207.
[9] Mustafa Agil Muhamad Balbed, Nazrita Ibrahim, Azmi Mobd Yusof. Implementation of virtual environment using VIRTOOLS[C].Proceeding Computer Graphics, Imaging and Visualisation, Modern Techniques and Applications, 2008:101- 106.
[10] 張悅,孫楓,鄭志剛.Virtools連接數據庫的多種方式設計與實現[J].計算機仿真,2016,33(7):423- 425.
[11] 王冰,王世明.組態王相關數據庫研究[J].計算機工程與設計,2008,29(4):1025- 1027.
[12] 王大偉.基于Python的Web API自動化測試方法研究[J].電子科學技術,2015,2(5):573- 581.
[13] KHADHRAOUI A, BEJI L, OTMANE S, et al. Stabilizing control and human scale simulation of a submarine ROV navigation[J]. Ocean engineering, 2016,114:66- 78.
[14] 閆海峰.液壓支架虛擬監控關鍵技術研究[D].徐州:中國礦業大學,2011.