黃金獻(xiàn), 胡 義, 薄志斌
(武漢理工大學(xué) 能源與動(dòng)力工程學(xué)院, 武漢 430063)
貨物配載是船舶貨運(yùn)中重要的一個(gè)環(huán)節(jié),若配載不當(dāng),會(huì)造成船舶結(jié)構(gòu)重大的損壞,從而發(fā)生沉船等事故。因此《鋼質(zhì)海船入級規(guī)范》規(guī)定,船長為150 m及以上的散貨船、礦砂船和兼用船要求配備經(jīng)認(rèn)可的裝載手冊和裝載儀。[1]目前,國內(nèi)外的裝載儀大多采用的是單機(jī)模式,如文獻(xiàn)[2]中利用vb.net編程語言設(shè)計(jì)單機(jī)版的裝載儀,只是通過計(jì)算機(jī)將人工手算轉(zhuǎn)化成計(jì)算機(jī)程序化計(jì)算。單機(jī)版的裝載儀,船員只能在船上操作,公司無法實(shí)時(shí)監(jiān)測船舶裝載狀態(tài)。文獻(xiàn)[3]提到在裝載儀中加入船體三維可視化功能,但國內(nèi)裝載儀多數(shù)沒有三維可視化功能?;谶@兩點(diǎn),采用Sublime Text 3軟件設(shè)計(jì)裝載在線計(jì)算的頁面,在此基礎(chǔ)上使用Eclipse開源軟件和MySQL 5.5免費(fèi)版數(shù)據(jù)庫開發(fā)后臺(tái)以及在頁面上實(shí)現(xiàn)船體三維可視化旋轉(zhuǎn)功能,實(shí)現(xiàn)船舶與公司共享配載數(shù)據(jù),聯(lián)動(dòng)監(jiān)測與管理。最終將物聯(lián)網(wǎng)和裝載計(jì)算機(jī)進(jìn)行融合,基于數(shù)據(jù)庫技術(shù)和網(wǎng)絡(luò)技術(shù),將船舶貨物的裝載管理和公司的物流管理緊密聯(lián)系起來,推動(dòng)產(chǎn)業(yè)結(jié)構(gòu)調(diào)整和升級。
本軟件的功能組成見圖1。軟件包含完整穩(wěn)性計(jì)算系統(tǒng)、破艙穩(wěn)性計(jì)算系統(tǒng)、強(qiáng)度計(jì)算系統(tǒng)、貨物重量計(jì)算系統(tǒng)、輔助工具系統(tǒng)等5個(gè)子計(jì)算系統(tǒng)。由于船舶在海上航行信號(hào)不好和流量費(fèi)用較貴等原因,軟件設(shè)計(jì)了以下兩種模式:
1) 在網(wǎng)絡(luò)條件允許的情況下,船員可在線進(jìn)行裝載計(jì)算,并將配載結(jié)果和計(jì)算結(jié)果保存到數(shù)據(jù)庫中,岸上人員可登陸直接查看結(jié)果。
2) 在網(wǎng)絡(luò)條件差的情況下,船員可在本地進(jìn)行裝載計(jì)算,只將配載文件保存到數(shù)據(jù)庫中。岸上人員可通過下載配載文件進(jìn)行本地計(jì)算查看結(jié)果。
圖1 軟件功能組成
在登錄界面,用戶點(diǎn)擊注冊會(huì)跳轉(zhuǎn)到注冊頁面,其中在注冊頁面通過jQuery技術(shù)設(shè)置表單校驗(yàn),如密碼前后不一致會(huì)出現(xiàn)提示,登錄頁面也具有相似的校驗(yàn)功能。
為使軟件人性化,設(shè)置中英文頁面的切換,方便不同的用戶使用。用戶登錄英文界面見圖2。
圖2 用戶登錄英文界面
頁面信息輸入包含航次信息輸入和裝載信息輸入。為使頁面簡潔,側(cè)邊導(dǎo)航欄在默認(rèn)情況下不顯示,用戶點(diǎn)擊時(shí)就會(huì)彈出,用戶可在船舶航次信息界面輸入船舶基本信息、航行水域選擇、配載者的姓名與職位、配載日期以及裝載情況說明等。裝載界面可輸入壓載水艙、燃油艙等液艙信息和食品、備品等非液體配載信息。各液艙輸入裝載液體的質(zhì)量、容積或液位高度后,軟件對艙容數(shù)據(jù)進(jìn)行插值計(jì)算得到對應(yīng)的其他艙容信息數(shù)據(jù)。此外,當(dāng)用戶打開一個(gè)已有文件時(shí),輸入頁面就變成顯示頁面,可核實(shí)文件信息顯示是否正確無誤。
根據(jù)配載情況計(jì)算浮態(tài)和完整穩(wěn)性。在頁面上顯示吃水、橫傾角、橫搖周期、重心位置、自由液面修正后的初穩(wěn)心高度、復(fù)原力臂面積。對穩(wěn)性橫交數(shù)據(jù)進(jìn)行插值求解并計(jì)算穩(wěn)性衡準(zhǔn)參數(shù),在頁面顯示穩(wěn)性曲線和結(jié)果,判斷結(jié)果是否在許用衡準(zhǔn)范圍內(nèi),若不在則自動(dòng)報(bào)警提示用戶調(diào)整載況。其計(jì)算流程見圖3。圖3中:Δ為排水量,t;Zg為船舶重心距基線高,m;Xg為重心縱向坐標(biāo),m;Zm為船舶穩(wěn)心距基線高,m;Xb為浮心縱向坐標(biāo),m;Xf為漂心距舯部距離,m;TPC為每厘米吃水噸數(shù),t/cm;MTC為每厘米縱傾力矩,t-m/cm;dM為平均吃水,m;hGM為初穩(wěn)心高度,m;KN為形狀穩(wěn)性力臂,m;GZ為靜穩(wěn)性力臂,m。
圖3 完整穩(wěn)性計(jì)算流程圖
強(qiáng)度計(jì)算系統(tǒng)對強(qiáng)度進(jìn)行計(jì)算,顯示靜水剪力和彎矩以及最大剪力和彎矩的數(shù)值及其對應(yīng)的位置;對強(qiáng)度進(jìn)行校核,判斷是否滿足要求,不滿足就提示用戶調(diào)整載況,并再次計(jì)算校核直到滿足為止。在頁面分別繪制剪力和彎矩曲線。強(qiáng)度計(jì)算流程見圖4。
圖4 強(qiáng)度計(jì)算流程圖
為使用戶便于操作,有較好的容錯(cuò)性,系統(tǒng)設(shè)置一系列提示和報(bào)警功能。如:在頁面退出時(shí)會(huì)提示是否已經(jīng)保存;若配載不在給定范圍內(nèi)會(huì)提示重新配載。系統(tǒng)還設(shè)置了通過插值來查詢靜水力曲線、邦金曲線、艙容曲線、進(jìn)水角曲線等功能。
船舶裝載計(jì)算涉及大量數(shù)據(jù)的調(diào)用,且通過數(shù)據(jù)庫可實(shí)現(xiàn)公司、船舶共享數(shù)據(jù)的功能,因此對數(shù)據(jù)庫的設(shè)計(jì)顯得更為重要。數(shù)據(jù)存儲(chǔ)主要分為3部分。
1) 固定不變的船舶基本信息和各艙室的數(shù)據(jù)。
2) 變化的數(shù)據(jù),如在不同工況下的配載數(shù)據(jù)、液位監(jiān)測數(shù)據(jù)。
3) 船舶貨運(yùn)數(shù)據(jù),為船舶管理提供數(shù)據(jù)接口。
本軟件的網(wǎng)站頁面開發(fā)主要用到超文本標(biāo)記語言(HyperText Markup Language,HTML)、層疊樣式表(Cascading Style Sheets,CSS)、商業(yè)級數(shù)據(jù)圖表(Enterprise Charts,Echarts)、JavaScript、jQuery等技術(shù)。[4]
1) HTML具有簡易性、可拓展性、跨平臺(tái)性、通用性等優(yōu)點(diǎn),HTML中的超文本是指頁面可包含圖片、鏈接等非文字內(nèi)容,標(biāo)記就是使用標(biāo)簽的方法將所需的內(nèi)容包括起來。HTML5是HTML第5次重大修改,其包含HTML、CSS、JavaScript在內(nèi)的一套技術(shù)組合,具備較好的跨瀏覽器性能,代碼更簡潔且還增加一些應(yīng)用程序編程接口(Application Programming Interface,API)的支持如Canvas繪圖功能。
2) CSS主要用來設(shè)置HTML頁面中的文本內(nèi)容,圖片的外形以及版面的布局等外觀顯示樣式。JavaScript是一種腳本語言,由基礎(chǔ)規(guī)范、文檔對象(Document Object Model,DOM)、瀏覽器對象模型(Browser Object Model, BOM)組成,通常被嵌入到HTML頁面增加交互性。其主要應(yīng)用有嵌入動(dòng)態(tài)文本于HTML頁面、對瀏覽器事件做出響應(yīng)、讀寫HTML元素、驗(yàn)證提交的數(shù)據(jù)等。
3) Echarts由百度公司研發(fā)的,基于Canvas純Javascript圖表庫,能提供直觀、生動(dòng)、可交互、可個(gè)性化定制的數(shù)據(jù)統(tǒng)計(jì)圖表。[5]異步JavaScript和XML(Asynchronous Javascript And XML,AJAX)是一種用來在Web瀏覽器與Web服務(wù)器之間來發(fā)送和接收數(shù)據(jù)的技術(shù)。在軟件中利用AJAX異步請求,將頁面的請求傳遞給后臺(tái),再由后臺(tái)操作數(shù)據(jù)庫,將相應(yīng)的數(shù)據(jù)取到并轉(zhuǎn)化為JS對象簡譜(JavaScript Object Notation,JSON)格式轉(zhuǎn)發(fā)給頁面,頁面根據(jù)得到的數(shù)據(jù)插入到Echarts中。在頁面中呈現(xiàn)可交互的穩(wěn)性曲線、剪力和彎矩曲線圖。某一化學(xué)品船滿載到港工況下的完整穩(wěn)性結(jié)果見圖5,該工況的強(qiáng)度結(jié)果見圖6。
圖5 化學(xué)品船滿載到港工況完整穩(wěn)性結(jié)果圖
圖6 化學(xué)品船滿載到港工況強(qiáng)度結(jié)果圖
Web圖形庫(Web Graphics Library,WebGL)是一個(gè)免費(fèi)、跨平臺(tái)的JavaScript API,同時(shí)也是一種3D繪圖標(biāo)準(zhǔn)[6],其將JavaScript和嵌入式系統(tǒng)三維圖形庫(OpenGL for Embedded Systems,OpenGL ES)2.0結(jié)合在一起。相對于其他WEB三維顯示技術(shù),WebGL不需要插件的支持,免去了開發(fā)網(wǎng)頁專用渲染插件的麻煩。WebGL可通過HTML5新特性之一的Canvas標(biāo)簽來實(shí)現(xiàn)。也就是HTML5中的Canvas標(biāo)簽就是承載WebGL的容器。WebGL支持OBJ文件格式[7],但Web瀏覽器不支持原始OBJ格式,需要將OBJ格式轉(zhuǎn)換成與語言無關(guān)的數(shù)據(jù)交換格式JSON格式,頁面中JavaScript能直接讀取JSON格式的數(shù)據(jù)。這為在頁面上船體三維化顯示提供一個(gè)可實(shí)現(xiàn)思路。WebGL直接通過電腦的圖形處理器(Graphics Processing Unit,GPU)來創(chuàng)建顯示三維圖形,其編程過程復(fù)雜且容易出錯(cuò),故本軟件使用WebGL的JavaScript 3D庫Three.js,簡化直接使用WebGL開發(fā)三維顯示技術(shù)的復(fù)雜性,降低學(xué)習(xí)成本。[8]其主要步驟如下:
1) 使用SolidWorks、Pro/E等軟件對船體進(jìn)行三維數(shù)字化建模,并將其保存為OBJ格式。
2) 將OBJ格式轉(zhuǎn)化為JSON格式。
3) 在頁面中加載船體三維模型,設(shè)置three.js中渲染器、場景、照相機(jī)、光源等一系列參數(shù),實(shí)現(xiàn)船體三維模型在頁面上真實(shí)絢麗的3D效果。
4) 最后利用OrbitControls軌道控制器進(jìn)行相應(yīng)的參數(shù)設(shè)置,達(dá)到通過鼠標(biāo)來操作實(shí)現(xiàn)船體三維模型的平移、旋轉(zhuǎn)等功能。船舶三維顯示見圖7。
圖7 船舶三維顯示圖
船舶裝載量的測量是船舶裝載儀的重要組成部分。液艙液位在線監(jiān)測能實(shí)時(shí)讀取液艙液位高度,通過計(jì)算得到液艙裝載液體的重量和重心位置,實(shí)時(shí)計(jì)算船舶的浮態(tài)、穩(wěn)性、強(qiáng)度等并上傳到服務(wù)器的數(shù)據(jù)庫,方便公司隨時(shí)登錄查看船舶狀態(tài),達(dá)到實(shí)時(shí)監(jiān)控的目的。其主要原理是液艙液位在線監(jiān)測通過傳感器的變送器將液艙液位變化轉(zhuǎn)化成電信號(hào)送到采集控制器,控制器和顯示單元之間通信,將采集的數(shù)據(jù)實(shí)時(shí)傳給上位機(jī)和軟件,對傳感器的數(shù)據(jù)進(jìn)行處理和計(jì)算得到液艙裝載液體的重量和重心位置,最終計(jì)算船舶的浮態(tài)、穩(wěn)性和強(qiáng)度等。
為防止通信數(shù)據(jù)出現(xiàn)不可預(yù)知的錯(cuò)誤,需要對傳輸數(shù)據(jù)的完整性和正確性進(jìn)行校驗(yàn)。軟件采用循環(huán)冗余校驗(yàn)碼(Cyclic Redundancy Check,CRC)算法進(jìn)行數(shù)據(jù)校驗(yàn)。CRC[9]的基本思想是在數(shù)據(jù)后面加一組與數(shù)據(jù)有關(guān)的冗余碼,利用除數(shù)和余數(shù)原理來進(jìn)行數(shù)據(jù)的錯(cuò)誤校驗(yàn)。1個(gè)由二進(jìn)制組成的代碼都可與只含有0、1兩個(gè)系數(shù)的多項(xiàng)式建立聯(lián)系。k位信息位可對應(yīng)于1個(gè)(k-1)次多項(xiàng)式M(x),r位冗余位對應(yīng)1個(gè)(r-1)次多項(xiàng)式R(x)。CRC碼由k位信息位和r位冗余位組成即n=k+r位,其對應(yīng)的多項(xiàng)式為
F(x)=xrM(x)+R(x)
(1)
發(fā)送端將計(jì)算出來的CRC值隨數(shù)據(jù)一起發(fā)給接收端,接收端重新計(jì)算CRC值并與接收的CRC值比較,如兩個(gè)值不一樣,則表示數(shù)據(jù)不完整或者出現(xiàn)錯(cuò)誤,該組數(shù)據(jù)應(yīng)該舍棄。如果兩者比較相同,說明數(shù)據(jù)傳輸過程中沒有出錯(cuò),可使用。
計(jì)算剪力和彎矩時(shí),空船重量直接查看裝載手冊中重量分布,貨艙和油水艙等可變重量按站位進(jìn)行分布時(shí),假定重量為梯形分布,求某局部重量在各理論站上的重量分布[2]如下:
設(shè)某局部重量為P(i),其重心距舯部距離為xg(i),分布范圍的前端坐標(biāo)為xf(i),后端坐標(biāo)為xa(i),該項(xiàng)重量分布的長度范圍為l(i)=xf(i)-xa(i)。一般xa(i)、xf(i)都坐落在肋骨線上??勺冎亓糠植加?jì)算見圖8。
圖8 可變重量分布計(jì)算
由靜力等效原理可知,前、后端重量分布為
(2)
(3)
式(2)和式(3)中:a(i)=xg(i)-xa(i),前、后端間各站位處的重量分布采用線性插值求得。
在縱傾值較大時(shí),通過靜水力曲線插值來計(jì)算得到船舶的艏艉吃水誤差較大,需進(jìn)行浮態(tài)的修正。由邦戎曲線可計(jì)算出浮力分布,其求解過程為[10]:由船舶的艏吃水dF和艉吃水dA,可在邦戎圖上作一條縱傾水線W1L1;根據(jù)縱傾水線與各站號(hào)的交點(diǎn)得到吃水深度,再由吃水深度查邦戎曲線圖可得到各站橫剖面積As,i和靜矩My,i;Δx為站間距;各站號(hào)的浮力bi和總浮力B(排水量)由式(4)和式(5)計(jì)算可得
(4)
(5)
記船舶總重量為W,由給定裝載的排水量查靜水力曲線可得dM、Xb、Xf、MTC。如平衡計(jì)算[11]需滿足:
(6)
(7)
此時(shí)則認(rèn)為船舶處于平衡狀態(tài),如不滿足則要進(jìn)行縱傾調(diào)整,直到滿足??v傾調(diào)整后艏艉吃水第一、第二次近似值為
(8)
(9)
式(8)和式(9)中:B1為由縱傾調(diào)整后第一次艏艉吃水近似值計(jì)算得到的浮力;LBP為艏艉柱間長,m。
確定船舶在波浪下的平衡位置有逐步近似法和直接法兩種方法。本軟件適用于運(yùn)輸船舶,采用直接法[12]求得船舶實(shí)際平衡位置,其過程為:根據(jù)中拱、中垂兩種情況分別按邦金曲線比例繪制坦谷波曲線;以靜水線為波軸線,覆蓋上坦谷波,量取波面與靜水線交點(diǎn)的剖面面積;在靜水線上方(中垂)或下方(中拱)ε(一般取1~2 m)遠(yuǎn)處作波軸線,放上坦谷波,量取各理論站的剖面面積;求出實(shí)際平衡位置與理論站交點(diǎn)的剖面面積;根據(jù)平衡條件求出船舶在波浪尾垂線處較靜水下沉(上移)值和縱傾角度變化值;得到船舶靜置在波浪上的實(shí)際位置;利用邦戎曲線量取各站浸水面積,通過式(10)計(jì)算得到浮力分布變化Δb(x)為
Δb(x)=ρgΔ(Fw(x)-Fs(x))
(10)
式(10)中:ρ為水的密度,kg/m3;g為重力加速度,N/kg;FW(x)為波浪下各站浸水面積,m2;Fs(x)為靜水下各站浸水面積,m2。
船舶靜置于波浪上和靜水中,水線面會(huì)發(fā)生改變,進(jìn)而引起浮力沿船長重新分布。波浪附加剪力Nw(x)和彎矩Mw(x)的計(jì)算為
(11)
(12)
在Sublime Text3軟件上使用HTML技術(shù)搭建了整體頁面的布局;CSS對其中的內(nèi)容進(jìn)行修飾、美化;運(yùn)用JavaScript技術(shù)對頁面添加各種動(dòng)態(tài)的功能,驗(yàn)證表單數(shù)據(jù)的完整性,對瀏覽器事件做出響應(yīng),完成裝載儀在線計(jì)算的前臺(tái)頁面開發(fā)。最后結(jié)合Eclipse軟件編寫代碼將數(shù)據(jù)存儲(chǔ)到MySQL數(shù)據(jù)庫。某船航次信息輸入界面見圖9。
圖9 航次信息輸入界面
本軟件設(shè)計(jì)的目的是實(shí)現(xiàn)船舶-公司共享配載數(shù)據(jù),實(shí)時(shí)在線監(jiān)控船舶的狀態(tài)。本文分析船舶裝載儀設(shè)計(jì)所用到的理論知識(shí),運(yùn)用Web前端技術(shù)設(shè)計(jì)網(wǎng)站的頁面,并在頁面上添加了各個(gè)功能選項(xiàng)實(shí)現(xiàn)總體布局,分析在頁面使用WebGL三維技術(shù)的可行性,實(shí)現(xiàn)船體三維模型在頁面顯示,將抽象的數(shù)據(jù)變成三維可視化,直觀的體現(xiàn)船舶裝載情況、水線面等,增加用戶的體驗(yàn)感;同時(shí)軟件還具有液艙液位在線監(jiān)測功能,實(shí)時(shí)讀取液艙液位高度,準(zhǔn)確計(jì)算船舶的浮態(tài)、穩(wěn)性和強(qiáng)度,通過網(wǎng)絡(luò)傳輸,實(shí)現(xiàn)公司對船舶裝載數(shù)據(jù)的監(jiān)測和管理。