裴 諭,陸金金,朱金善,田 園
(1.大連海事大學(xué) 船舶電氣工程學(xué)院,遼寧 大連 116026;2.大連海事大學(xué) 航海學(xué)院,遼寧 大連 116026)
散貨是指不加包裝的貨物,如煤炭、谷物、礦砂、鹽、水泥、河沙等大宗貨物。國際海上貨物運(yùn)輸中,由于散貨船貨運(yùn)量大,貨源充足,航線固定,裝卸效率高等因素,散貨船已成為運(yùn)輸船舶中的主力軍。2017年全球1萬載重噸以上的船舶,共計(jì)25 714艘,其中干散貨船9 992艘、占38.85%[1];2019年初,全球干散貨船舶總計(jì)運(yùn)力8.4億載重噸,占貨船總計(jì)運(yùn)力的42.6%[2]??梢娚⒇洿\(yùn)輸在經(jīng)濟(jì)發(fā)展中的作用日益重要。
隨著船舶大型化的發(fā)展,很多散貨船在錨地進(jìn)行駁卸,有些港口泊位前沿水域流速也較大,例如,阿根廷拉普拉塔河、巴拉那河沿岸港口,孟加拉吉大港等港口的最大流速可達(dá) 7~8 kn;我國部分港口流速也較大,如寧波港、舟山港、曹妃甸港等港口的流速可達(dá) 4~5 kn[3]。因此,流速引起的船體下沉,致使水尺計(jì)重過程中六面吃水的讀數(shù)大于靜水中船體的實(shí)際吃水,從而影響到水尺計(jì)重的精度[4]。
散貨船裝卸貨量需要通過檢測船舶吃水變化來計(jì)算,其測量精度是一個(gè)重要問題。以7萬噸級(jí)的滿載散貨船、存在2 cm的吃水誤差為例,由船舶吃水值帶來的誤差就可達(dá)250噸[5],僅這一項(xiàng)誤差就達(dá)3.5‰,占許用誤差總量(5‰)的70%。目前檢測船舶吃水通常采用六面水尺觀測法、超聲波或激光測量距儀得到船舶吃水?dāng)?shù)據(jù),但精度都不夠高,如:水下超聲波檢測船舶吃水,測量精度為2.8 cm[6];基于單波束仰掃回波信號(hào)強(qiáng)度處理的船舶吃水檢測,測量精度為1 cm[7],需要將單波束聲納安裝在在船舶底部;利用激光測距檢測船舶吃水,測量精度為1.5 mm[8];六面水尺觀測法是目前比較常用的方法,通過測量人員乘坐小船或攀爬軟梯進(jìn)行讀數(shù),這種方法有3個(gè)主要的局限性:1)受風(fēng)浪的影響較大,讀數(shù)準(zhǔn)確度較低;2)目測吃水較為不便,觀測人員要從軟梯爬到吃水處讀取,既有一定的危險(xiǎn)又不準(zhǔn)確;3)速度慢、效率低,不便于持續(xù)掌握船舶吃水(下沉量)的動(dòng)態(tài)變化。觀測吃水的精度為1 cm或0.6英寸。并且安裝方式過于復(fù)雜,需要增加操作,實(shí)時(shí)性差。
在此背景下,本文提出一種基于高精度壓力傳感器MS5837的船舶吃水監(jiān)測系統(tǒng)的設(shè)計(jì),通過測量壓力變化間接檢測船舶吃水變化,測量精度可達(dá)0.1 mm。本系統(tǒng)可安裝在龍骨板下緣,也可以安裝在船舷水尺附近。因后者安裝實(shí)施較為簡單、靈活,故本文也將圍繞后者進(jìn)行說明。
監(jiān)測系統(tǒng)原理如圖1所示,上位機(jī)位于甲板上,以Cortex-A9處理器為核心,搭載了Linux操作系統(tǒng),并且?guī)в蠰CD觸摸屏用于人機(jī)交互,同時(shí)可以進(jìn)行數(shù)據(jù)存儲(chǔ),帶有USB接口可將數(shù)據(jù)取出以供后續(xù)研究。上位機(jī)內(nèi)置大功率12 V鋰電池,可供整個(gè)系統(tǒng)連續(xù)工作24小時(shí)以上。下位機(jī)可安裝在龍骨板下緣或船舷水尺附近,包含主板和多種傳感器以及固定裝置,封裝在不同的防水殼體內(nèi),通過防水電纜相連。其中,壓力傳感器是本系統(tǒng)核心;電磁鐵和永磁鐵將壓力傳感器固定在船舷上以消除波浪和流對傳感器的擾動(dòng)。
圖1 監(jiān)測系統(tǒng)原理圖
若將下位機(jī)壓力傳感器安裝在龍骨板下緣,則水深測量值h即為船舶吃水深度;若將其安裝在船舷水尺附近,則需結(jié)合下位機(jī)壓力傳感器相對于船體龍骨板下緣的垂直距離hOFF,得到船舶吃水深度為“hDRAFT=h+hOFF”。一般情況下,把下位機(jī)壓力傳感器固定在船舶空載吃水hLIGHT(hLIGHT為船舶空載時(shí)水線面與船體龍骨板下緣的垂直距離)處,則船舶吃水為“hDRAFT=h+hLIGHT”。
針對本系統(tǒng)的應(yīng)用場景,可忽略hOFF,在裝卸貨開始前,將壓力傳感器固定在水面以下h1處,裝卸貨完成時(shí)測得水深為h2,則吃水變化為“Δh=h2-h1”。為了方便比較數(shù)據(jù),可以將h1設(shè)置成固定值,即深度h的參考點(diǎn)。此處引入海平面?zhèn)鞲衅?,該傳感器到主板之間的電纜長度是L1,壓力傳感器到主板之間的電纜長度是L2,滿足L2>L1,確保壓力傳感器位于水面以下。首次測量時(shí),將電纜一端的下位機(jī)緊貼著船舷往下放,當(dāng)海平面?zhèn)鞲衅鞯奶筋^接觸到海水時(shí),其輸出的電壓信號(hào)會(huì)產(chǎn)生突變,此時(shí)壓力傳感器所處深度為L2-L1,數(shù)值上等于參考點(diǎn)深度h1。由于電纜長度在出廠時(shí)已經(jīng)確定,所以h1的值也確定。
下位機(jī)中的主板是以STC8A8K單片機(jī)為核心的一塊電路板,STC8A8K其機(jī)器周期約是傳統(tǒng)8051單片機(jī)的1/12,運(yùn)行速度比后者快約12倍,內(nèi)置5個(gè)定時(shí)器,并且提供了豐富的數(shù)字外設(shè),如多路UART接口、 IIC和ADC接口等。設(shè)計(jì)的下位機(jī)主板通過I2C接口來讀取MS5837的數(shù)據(jù),I2C是一種多向控制總線,多個(gè)芯片可以連接到同一總線結(jié)構(gòu)下,同時(shí)每個(gè)芯片都可以作為實(shí)時(shí)數(shù)據(jù)傳輸?shù)目刂圃?,這種方式簡化了信號(hào)傳輸總線接口。此外,通過ADC接口來讀取海平面?zhèn)鞲衅鬏敵龅碾妷褐?;通過RS485接口來和和上位機(jī)通信;通過STC8A8K單片機(jī)的2路數(shù)字量IO口,經(jīng)2路繼電器來控制電磁鐵的通斷電。下位機(jī)經(jīng)電纜由上位機(jī)的12 V鋰電池供電。STC8A8K的UART接口為TTL電平,這里采用兩片MAX485來進(jìn)行TTL和RS485之間的電平轉(zhuǎn)換,從而上下位機(jī)之間可以進(jìn)行較長距離的全雙工通信。
下位機(jī)主板的功能模塊如圖2所示。
圖2 下位機(jī)功能模塊圖
本監(jiān)測系統(tǒng)下位機(jī)采用兩片MAX485來進(jìn)行TTL和RS485之間的電平轉(zhuǎn)換,一路接單片機(jī)的RXD引腳,另一路接單片機(jī)的TXD引腳。此外,單片機(jī)使用兩路IO口來分別使能傳輸,當(dāng)/RE為邏輯0時(shí),芯片工作在接收狀態(tài),當(dāng)DE為邏輯1時(shí),器件處于發(fā)送狀態(tài),從而啟停數(shù)據(jù)的傳輸。
圖3 RS485工作原理圖
根據(jù)不同船舶的吃水深度范圍的要求,可選擇MS5837的不同型號(hào),例如本系統(tǒng)選用的MS5837-02ba,工作范圍可達(dá)水下20 m,精度為0.01 mbar,這種基于 MEMS 的傳感器包含一個(gè)高線性壓力傳感器,該傳感器具有超低功率 24 位數(shù)字輸出 (I2C),可用于高分辨率測量。本系統(tǒng)中,將MS5837焊接在一個(gè)直徑2 cm的圓形電路板上,用膠密封在一個(gè)316不銹鋼圓柱腔體內(nèi),MS5837的4各引腳通過電纜從腔體的另一端引出。海平面?zhèn)鞲衅魇亲灾频膫鞲衅?,圖4所示,防水殼的一端固定兩根316不銹鋼鋼針,兩根鋼針各自連接兩根導(dǎo)線,接到單片機(jī)的一路ADC口,該接口另接一個(gè)分壓電阻至Vcc,基于空氣和海水的不同導(dǎo)電率,當(dāng)鋼針從空氣進(jìn)入海水中后,ADC引腳和GND引腳之間的阻抗會(huì)產(chǎn)生突變,從而ADC引腳的電壓突變STC8A8K檢測到這個(gè)電平的突變立刻通知上位機(jī),壓力傳感器MS5837已經(jīng)到達(dá)指定的初始位置。
圖4 海平面?zhèn)鞲衅鞴ぷ髟韴D
STC8A8K的兩路IO口各接一個(gè)MOS管M3400,將電流放大從而驅(qū)動(dòng)繼電器,這也是為了保護(hù)單片機(jī)避免大電流沖擊導(dǎo)致運(yùn)行不穩(wěn)定或者損壞,因?yàn)殡姶盆F的工作電流達(dá)5 A,通電瞬間會(huì)對系統(tǒng)有較大的沖擊。
主板上的STC8A8K、MS5837等芯片需要3.3 V電源供電,而其它元器件需要5 V電源供電,這里采用金升陽公司的DC/DC降壓模塊7805L將12 V電平轉(zhuǎn)換成5 V,該降壓模塊效率高達(dá)75%以上,體積小,所需外圍器件少,非常適合移動(dòng)設(shè)備。此外,采用AMS1117將5 V轉(zhuǎn)成3.3 V,該芯片采用SOT-23封裝,輸出電壓浮動(dòng)范圍在1%以內(nèi),其最大可提供800 mA的帶負(fù)載能力,完全滿足主板上STC8A8K、MS5837等芯片的供電需求。
上位機(jī)采用QT進(jìn)行應(yīng)用軟件開發(fā),軟件設(shè)計(jì)主要包括人機(jī)交互和后臺(tái)程序設(shè)計(jì)。Qt是一個(gè)跨平臺(tái)C++圖形用戶界面應(yīng)用程序開發(fā)框架,提供了豐富的類庫,此外,不同于Visual Studio,Qt提供了一種稱為 signals/slots 的安全類型來替代回調(diào),這使得各個(gè)對象之間的協(xié)同工作變得十分簡單。Qt對應(yīng)的集成開發(fā)環(huán)境為Qt Creator,兩者共同構(gòu)成的Qt SDK,包含了開發(fā)跨平臺(tái)應(yīng)用程序所需的全部功能。
從人機(jī)交互的角度,用戶可以在UI界面上設(shè)置采樣時(shí)間,點(diǎn)擊“start”,上位機(jī)開始讀取下位機(jī)發(fā)送過來的壓力、深度、溫度信息,將這些信息顯示在LCD屏上,同時(shí)也存在上位機(jī)本地的數(shù)據(jù)文件中。點(diǎn)擊“stop”后停止通信,用戶可以將U盤插入上位機(jī)的USB接口,點(diǎn)擊操作界面中的“copy”,即可將數(shù)據(jù)文件復(fù)制到U盤中,以便后續(xù)研究。
上位機(jī)的UI界面功能由Qt提供的QWidget類來實(shí)現(xiàn),在Qt Creator的開發(fā)環(huán)境中可以在QWidget中方便地添加按鈕、文本框等控件類的成員,設(shè)計(jì)者可以用少量代碼即可實(shí)現(xiàn)交互功能。后臺(tái)程序主要實(shí)現(xiàn)串口通信,放在QObject類中實(shí)現(xiàn),在QObject的成員函數(shù)run()中不斷地讀取下位機(jī)的下位機(jī)的信息,成功讀取一幀數(shù)據(jù)后,發(fā)送signal給QWidget的slot函數(shù),該函數(shù)將讀到的數(shù)據(jù)顯示和存儲(chǔ)。
下位機(jī)的程序流程如圖5所示,首先進(jìn)行串口、定時(shí)器和傳感器的初始化,然后讀取大氣壓強(qiáng),接著判斷采樣時(shí)間是否已到,若否,就等待,若是,則根據(jù)接收到的用戶設(shè)置信息來修改繼電器狀態(tài)和采樣時(shí)間,然后讀取壓強(qiáng)和溫度并計(jì)算海水深度,最后將壓強(qiáng)、溫度和水深等數(shù)據(jù)發(fā)送至上位機(jī)。
圖5 軟件流程圖
MS5837-02ba內(nèi)部含有壓力和溫度檢測模塊,下位機(jī)程序讀取壓強(qiáng)和溫度并結(jié)合本系統(tǒng)相關(guān)參數(shù)計(jì)算壓力傳感器所處位置的水深,后文簡稱水深,以及海水密度等物理量,然后將所得數(shù)據(jù)發(fā)送給上位機(jī),并且可以借助大氣壓強(qiáng)進(jìn)行水深測量的調(diào)零。
下位機(jī)給上位機(jī)發(fā)送數(shù)據(jù)的時(shí)間間隔可由上位機(jī)來設(shè)置,后文將此發(fā)送間隔稱為采樣時(shí)間,本系統(tǒng)采樣時(shí)間最小可以設(shè)置為100 ms。
其中,讀取壓強(qiáng)、溫度和計(jì)算水深是本系統(tǒng)軟件設(shè)計(jì)的重點(diǎn)。本文所提水深以海平面為零,向下為正方向。
2.2.1 讀取數(shù)據(jù)并計(jì)算壓強(qiáng)和溫度
首先從壓力傳感器中讀取標(biāo)定數(shù)據(jù)C1~C6,該數(shù)據(jù)為工廠在基準(zhǔn)溫度為20 ℃時(shí)預(yù)設(shè)的參數(shù),分別代表壓力靈敏度、壓力偏移、壓力靈敏度溫度系數(shù)、壓力補(bǔ)償溫度系數(shù)、基準(zhǔn)溫度和溫度系數(shù)。
然后讀取當(dāng)前MS5837的壓強(qiáng)和溫度原始數(shù)據(jù)D1和D2,該數(shù)據(jù)為24位二進(jìn)制數(shù),是不可直接使用的壓強(qiáng)和溫度數(shù)值,需要處理,由:
dT=D2-C5*28
(1)
得到當(dāng)前溫度與基準(zhǔn)溫度的差值,由:
TEMP=2000+dT*C6/22
(2)
得到實(shí)際溫度TEMP(℃)。MS5837輸出的壓強(qiáng)數(shù)據(jù)受溫度的影響,需要修正,由:
OFF=C2*217+(C4*dT)/26
(3)
得到溫度偏移量,然后結(jié)合:
SENS=C1*216+(C3*dT)/27
(4)
計(jì)算溫度靈敏度系數(shù),最后由:
P1=(D1*SENS/221-OFF)/21
(5)
得到實(shí)際壓強(qiáng)P1(mbar)。
當(dāng)壓力傳感器所處環(huán)境溫度高于20 ℃時(shí),P1即為壓強(qiáng)真實(shí)值;當(dāng)返回溫度低于20 ℃時(shí),需要修正測量結(jié)果,由:
Ti=11*dT2/235
(6)
OFFi=31*(TEMP-2000)2/23
(7)
SENSi=63*(TEMP-2000)2/25
(8)
TEMP2=(TEMP-Ti)/100
(9)
得到實(shí)際溫度TEMP2( ℃),由:
P2=(D1*SENS2/221-OFF2)/215/100
(10)
得到實(shí)際壓強(qiáng)P2(mbar)。
2.2.2 算法優(yōu)化
式(1)~(10)中的變量都是32位,而STC8A8K的開發(fā)環(huán)境對變量的支持最大為32位。為了避免乘法或加法運(yùn)算可能導(dǎo)致的數(shù)據(jù)溢出,現(xiàn)以溫度高于20 ℃的情況為例,可將計(jì)算公式(1)、(3)~(5)合為一式,得到式(11):
P1=(D1/28)*(C1/28)/23-(C2*23)+(D1/28)*
(C3/28)*(dT/28)/218-(C4/28)*(dT/28)/24
(11)
上式同時(shí)節(jié)省了運(yùn)行時(shí)間,理論上,依次計(jì)算式(1)、(3)~(5)需要95個(gè)機(jī)器周期,而式(11)僅需63個(gè)機(jī)器周期。為作進(jìn)一步優(yōu)化,可用移位運(yùn)算替換乘除運(yùn)算,將式(11)改寫為(12):
P1=(D1>>8)*(C1>>8)>>3-(C2<<3)+
(D1>>8)*(C3>>8)*(dT>>8)>>
18-(C4>>8)*(dT>>8)>>4
(12)
由式(12)計(jì)算得到壓強(qiáng)P1僅需40個(gè)機(jī)器周期,這大大節(jié)省了運(yùn)行時(shí)間。
2.2.3 計(jì)算船舶吃水變化
將下位機(jī)安裝在船舷水尺附近,測得裝貨前壓力傳感器所處位置水深為h1,裝貨后所處水深為h2,由:
h=h2-h1
(13)
得到吃水變化。
配置下位機(jī)串口3使其工作在模式0,此模式一幀信息為10位:1位起始位,8位數(shù)據(jù)位,1位停止位,波特率可變,不使用流控制,無奇偶校驗(yàn)位。使用定時(shí)器3作為波特率發(fā)生器,波特率設(shè)置為115 200。上位機(jī)和下位機(jī)之間的數(shù)據(jù)都是ASCII碼。數(shù)據(jù)傳輸格式如表1、2所示。
表1 下位機(jī)發(fā)送信息的數(shù)據(jù)格式
表2 上位機(jī)發(fā)送信息的數(shù)據(jù)格式
為了檢驗(yàn)本文設(shè)計(jì)的吃水監(jiān)測系統(tǒng)的效果,我們在??坑诖筮B港的系泊船“育鯤”輪上進(jìn)行了實(shí)測。工作人員將下位機(jī)和傳感器沿著船舷放到海平面,當(dāng)傳感器接觸到海平面時(shí),會(huì)返回給上位機(jī)信號(hào),此時(shí)點(diǎn)擊上位機(jī)觸摸屏上的開始按鈕,則監(jiān)測系統(tǒng)開始正常運(yùn)行。之后將傳感器繼續(xù)向下,放到海平面以下幾十厘米處,將電磁鐵貼在船體,系統(tǒng)正常工作,上位機(jī)實(shí)時(shí)顯示此時(shí)的水深信息。
圖6(a)為“育鯤”輪外舷船中吃水實(shí)測數(shù)據(jù)曲線。在0 s時(shí),將本系統(tǒng)的下位機(jī)沿著船舷緩慢向下移動(dòng)9 s左右下位機(jī)的壓力傳感器到達(dá)海平面臨界點(diǎn)并繼續(xù)向下移動(dòng),12 s左右到達(dá)指定位置,13 s時(shí),下位機(jī)壓力傳感器穩(wěn)定。將圖6(a)中0~13 s的曲線細(xì)節(jié)放大,如圖6(b),是下位機(jī)壓力傳感器從開始工作到達(dá)到指定位置時(shí)的水深變化曲線。
圖6 水深測量數(shù)據(jù)曲線
觀察圖6(a),可以發(fā)現(xiàn)下位機(jī)固定后,受波浪和流的影響,波形存在小范圍的變化,這種微小的變化主要是由于船體周圍流速的變化導(dǎo)致船體下沉的細(xì)微變化,這說明該系統(tǒng)不僅能夠滿足散貨船水尺計(jì)重時(shí)對船舶吃水精確測量的要求,而且還可以廣泛應(yīng)用于船舶航行時(shí)(尤其在受限水域航行時(shí))對船體下沉量的監(jiān)控,從而為保障船舶在受限水域航行時(shí)的通航安全提供技術(shù)支持。
本文利用高精度壓力傳感器,結(jié)合液體壓強(qiáng)與深度的關(guān)系解決了船舶吃水測量精度低、觀測不便、安裝費(fèi)力等問題,并將水深信號(hào)轉(zhuǎn)換為便于存儲(chǔ)與分析的數(shù)字信號(hào),建立采集時(shí)刻的數(shù)據(jù)庫,可以供后續(xù)研究使用。對比其它船舶吃水檢測系統(tǒng)可知,本系統(tǒng)可得到更精確的測量數(shù)據(jù),測量精度為0.1 mm,且數(shù)據(jù)存儲(chǔ)功能也為后續(xù)開展散貨船水尺計(jì)重及船舶通航安全等方面的研究提供了方便。設(shè)計(jì)的吃水監(jiān)測系統(tǒng)不僅可以測量水深,同時(shí)可以實(shí)時(shí)測量水溫、壓力、海水密度等參數(shù)值。整個(gè)監(jiān)測系統(tǒng)軟硬件結(jié)合,安裝方便,功能強(qiáng)大,測量精度高,實(shí)時(shí)性更強(qiáng),并通過實(shí)驗(yàn)室測試以及實(shí)船測試都得到了很好的效果。