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