劉江莉,宮尚軍,張 磊,朱志松,姚興田
(南通大學(xué) 機械工程學(xué)院,江蘇 南通 226019)
船舶液位監(jiān)控系統(tǒng)是實現(xiàn)船舶自動化的一個重要系統(tǒng),關(guān)系到船舶在裝卸貨及航行中的安全問題。船舶在裝卸貨物的過程中,船體會發(fā)生一定程度的傾斜,為了保證船舶的平衡,需要對壓載水艙內(nèi)的液位進行調(diào)節(jié)。工作人員根據(jù)壓載水艙的液位以及船舶的吃水狀態(tài)計算出相應(yīng)的配載,手動控制或者自動控制壓載水泵和閥門的開啟狀態(tài),對壓載艙進行壓水和排水[1]。液位監(jiān)控系統(tǒng)自動化的應(yīng)用節(jié)省了勞動力,提高了船員操作效率。高精度的液位監(jiān)測系統(tǒng)則是船舶裝卸和航行安全的重要保證。因此,液位監(jiān)測系統(tǒng)的首要問題是如何使測量的液位更精確、更可靠。
在液位監(jiān)測的過程中,由于環(huán)境的不確定因素干擾以及單傳感器自身的局限性,使得測量的液位值往往不完整或帶有較大的不確定性,甚至含有異常噪聲點。針對液位測量的誤差,本文提出一種基于卡爾曼濾波的多傳感器融合算法,對液位測量值進行濾波,提高液位測量的精度,獲得了穩(wěn)定可靠的輸出值。
船舶液位監(jiān)控系統(tǒng)主要由信號采集單元、下位機PLC、閥門控制單元、上位機監(jiān)控軟件以及歷史數(shù)據(jù)庫組成。信號采集單元中的傳感器用于對艙內(nèi)液位、吃水深度、壓力、溫度等參數(shù)進行采集。本系統(tǒng)的PLC 選用西門子S7-1 200,用于對多個傳感器采集的信號進行運算處理,根據(jù)不同的數(shù)據(jù)類型輸出相應(yīng)的信號。閥門控制單元根據(jù)PLC 發(fā)出的命令,由閥門和壓載泵完成對應(yīng)的動作。上位機選用組態(tài)王6.55 進行開發(fā),采用TCP/IP 協(xié)議通過交換機與下位機進行通訊,并動態(tài)監(jiān)控整個系統(tǒng)。歷史數(shù)據(jù)庫由MySQL 數(shù)據(jù)庫設(shè)計開發(fā),采用ODBC 協(xié)議與上位機連接。圖1 為系統(tǒng)的結(jié)構(gòu)圖。
圖1 液位監(jiān)控系統(tǒng)結(jié)構(gòu)簡圖Fig.1 Structure diagram of liquid level monitoring system
船舶液位監(jiān)控系統(tǒng)實時監(jiān)測各壓載艙內(nèi)液位的高度以及吃水深度,通過監(jiān)測艙內(nèi)液位的變化從而調(diào)控壓載系統(tǒng)的進排水量。因此,只有保證船舶吃水和壓載艙內(nèi)液位等參數(shù)的精度及可靠,才能確保船舶實現(xiàn)準(zhǔn)確、安全及平穩(wěn)的控制。
船舶吃水測量的方法由傳感器的安裝方位決定。本文采用六角吃水測量法,將傳感器分別安裝在船舶左右兩舷的首中尾6 個角,左右吃水的測量由安裝在船舯左右舷底部壓載艙底的傳感器測得,首尾吃水的測量由安裝在首尖艙和隔離空艙底的傳感器測得[2]。船舶的橫傾角通過船左右吃水差得出,方法如圖2 所示。
圖2 船舯左右吃水橫傾角計算Fig.2 Calculation of the yaw angle around the ship
圖中H1為 船中左側(cè)液位的高度,H2為船中右側(cè)液位的高度,M為船中左右兩側(cè)的液位傳感器測量的水平距離,船舶的橫傾角β的計算方法如下式:
船舶縱傾角度的計算方法同理。從上述公式可看出船舶橫縱傾角度計算的真實值取決于船舷吃水測量的精度。
船舶液位監(jiān)測過程中,對液位的測量會不可避免地出現(xiàn)誤差,改進測量方法消除誤差則是液位監(jiān)測系統(tǒng)中重要的一環(huán)。對測得的數(shù)據(jù)比較分析后發(fā)現(xiàn),液位測量誤差的來源有2 個方面,一是傳感器設(shè)備產(chǎn)生的誤差,二是測量環(huán)境的不確定因素帶來的誤差。
傳感器在傳感器單元中,受到供電電路的電磁、電纜信號等干擾,可能會產(chǎn)生靜態(tài)性偏差、零點漂移及靈敏度漂移等問題,因而傳感器的初始標(biāo)定值存在一定的誤差,需要對傳感器進行預(yù)處理,作二次標(biāo)定以補償其新增不確定度[3]。
針對液位傳感器的預(yù)處理流程如圖3 所示,包括標(biāo)定、轉(zhuǎn)換、分值濾波和微值濾波幾個過程。
圖3 數(shù)據(jù)的預(yù)處理過程Fig.3 Data preprocessing
圖中XIN為輸入值,KX為 比例系數(shù)偏移,Z為零點偏移,CvSn為轉(zhuǎn)換值。
對傳感器在不同情況下測得的幾組數(shù)據(jù)進行標(biāo)定[4]。在實驗水艙中,采用雷達(dá)液位計對0.5 m 高的液位進行測量,其電流輸出值為5 mA;對0.8 m 高的液位進行測量,輸出值為5.6 mA。標(biāo)定公式如下式:
對標(biāo)定后的轉(zhuǎn)換值CvSn,進行峰值或微值濾波處理[5]。峰值濾波指對超過設(shè)定峰值(DP)的變化值忽略。微值濾波則是對小于設(shè)定不靈敏區(qū)的值(AP)不做處理。
通過對傳感器進行預(yù)處理,可將測量誤差降至最低,也能減少部分測量過程中的隨機誤差,且對傳感器輸出值進行標(biāo)定,也能及時檢測傳感器故障,提高傳感器測量輸出數(shù)據(jù)的可靠性。
環(huán)境的因素則是由于船舶受到風(fēng)浪的干擾以及在裝卸貨物時船體的傾斜導(dǎo)致液面的波動幅度較大,使得測得的誤差較大。
考慮到液面的波動是無法避免的,因此,需要對測得的液位信號進行濾波,將影響液位監(jiān)測的液面波動、觀測噪聲等濾除,實時獲得精確可靠的液位監(jiān)測。在中央處理單元采用濾波程序?qū)Σ杉臄?shù)據(jù)進行處理,本文采用卡爾曼濾波器對傳感器測量結(jié)果進行濾波,卡爾曼濾波是基于貝葉斯定理,利用遞歸迭代進行濾波的方法,主要用來預(yù)測和更新。
由卡爾曼濾波原理,隨機線性離散系統(tǒng)的方程為:
式中:x(k)為 系統(tǒng)的狀態(tài)向量;A為 狀態(tài)轉(zhuǎn)移矩陣;y(k)為觀測真值;H為觀測矩陣;w(k),v(k)分別為過程噪聲和觀測噪聲[6]。
壓載系統(tǒng)對艙內(nèi)液位高度進行調(diào)節(jié),操控壓載泵和閥門對水艙內(nèi)進水,記采樣時間為t0,s(k)為液位在采樣時刻kt0處的高度,記在時刻kt0處的液位速度為s˙(k),由動力學(xué)公式:
定義在采樣時刻kt0處 系統(tǒng)的狀態(tài)x(k)為液位的高度和速度,可得到液位高度的狀態(tài)方程為:
觀測方程為:
式中:w(k)∈Rm為過程噪聲,即由海風(fēng)和海浪等不確定因素引起的隨機加速度,v(k)∈Rm為傳感器的觀測噪聲,且都是高斯白噪聲,均值為零,方差矩陣分別為Qk和Rk。
液位的預(yù)測過程為:
根據(jù)液位的預(yù)測方程,將液位的初始狀態(tài)以及初始協(xié)方差輸入卡爾曼濾波器后,可不斷得到液位變化的真實值,濾波效果理想[7]。
雖然傳感器測得的液位高度經(jīng)過卡爾曼濾波后能夠得到一個較為穩(wěn)定、精確的值,但在實際船舶液位監(jiān)測的過程中,傳感器測得的液位數(shù)據(jù)在傳輸交換過程中不僅有可能出現(xiàn)時滯,且單個傳感器在液位測量的過程中可能會出現(xiàn)故障或者受到干擾導(dǎo)致得到的液位測量值與真實值相差較大。因而在本實驗系統(tǒng)中需采用多傳感器測量液位[8],以減少信息處理過程中可能出現(xiàn)的偏差,提高液位估計精度,在對艙內(nèi)液位建模時還需將液位監(jiān)測系統(tǒng)作為時滯系統(tǒng)進行處理。
多傳感器融合算法作為智能測量的關(guān)鍵技術(shù)之一,其融合方式有多種,本文采用分布式融合算法,如圖4所示。首先單個傳感器測得的數(shù)據(jù)經(jīng)過局部濾波器進行處理,得出各個傳感器的狀態(tài)估計值,然后采用最小二乘估計對估計狀態(tài)進行融合。分布式融合估計改變了全局最優(yōu)估計的數(shù)據(jù)處理結(jié)構(gòu),將整個系統(tǒng)分成幾個小系統(tǒng)進行處理,提高了計算機實時并行處理速度[9]。
圖4 分布式融合算法結(jié)構(gòu)圖Fig.4 Structure diagram of distributed fusion algorithm
考慮傳感器測量的液位值在觀測中存在一步隨機時滯的非理想情況[10],多傳感器線性離散系統(tǒng)模型如下:
式中:k為離散時間;x(k)∈Rn為液位狀態(tài)向量;r為系統(tǒng)本身的延遲時間;yi(k)∈Rm為第i個傳感器的液位觀測;w(k)∈Rm為過程噪聲,即由海風(fēng)和海浪等不確定因素引起的隨機加速度,vi(k)∈Rmi為第i個傳感器的觀測噪聲,且都是高斯白噪聲,均值為零,方差矩陣分別為Qk和Rk;A,hi為 已知的維數(shù)矩陣;L表示傳感器的個數(shù)[8]。
采用二維隨機變量 εki(k>1) 表示在k時刻第i個傳感器的觀測數(shù)據(jù)yi(k) 是否到達(dá)狀態(tài)估計器[11];εki取值0 或1,服從伯努利分布,且滿足分布特性:
假設(shè)系統(tǒng)狀態(tài)x0和噪聲wk,vk均不相關(guān);wk和vk相互獨立。
對系統(tǒng)狀態(tài)擴展,狀態(tài)擴展形式:
式中:A,Γ,Hi為常矩陣;(A,Hi) 完全可觀,且A為穩(wěn)定矩陣。
卡爾曼濾波的過程主要為預(yù)測與更新,在k時刻,數(shù)據(jù)正確到達(dá)濾波器時,液位狀態(tài)的估計值與誤差方差應(yīng)取根據(jù)誤差推得的更新值;當(dāng)新的觀測數(shù)據(jù)由于時滯無法到達(dá)時,需要的液位狀態(tài)的估計值與誤差方差應(yīng)取上一時刻的預(yù)測狀態(tài)和預(yù)測誤差方差[12]。
1)第i個傳感器的局部最優(yōu)卡爾曼濾波
2)任意2 個傳感器之間的估計誤差互協(xié)方差
預(yù)測互協(xié)方差:
更新互協(xié)方差:
式中:i,j=1,2,···,L;I為單位矩陣;εk為0 或1 的隨機值。
3)多傳感器分布式加權(quán)最優(yōu)融合估計
式 中:eT=[In,···,In];P(k|k)是Pij(k|k) 第 (i,j)元素的nL*nL分塊矩陣。
最優(yōu)融合誤差陣:
在實驗中將液位的初始高度以及液位變化的初始速度賦值給初始狀態(tài),給出估算的初始協(xié)方差,輸入并啟動最優(yōu)卡爾曼濾波器即可得到穩(wěn)定且精確的真實液位值[13]。
在實驗室內(nèi)模擬船舶的壓載艙設(shè)計實驗水艙,實現(xiàn)液位監(jiān)測系統(tǒng)的功能并采集水艙進出水時液位的數(shù)據(jù),進行算法處理,輸出液位的精確值[14]。船舶裝卸貨物時,壓載艙根據(jù)船舶的傾斜角度調(diào)節(jié)相應(yīng)壓載艙的艙內(nèi)液位。在本文實驗中,將調(diào)節(jié)壓載水前的液位高度作為初始高度值,將水泵抽水的速率轉(zhuǎn)換成液位上升高速度。對一側(cè)水艙內(nèi)的液位的測量采用2 個雷達(dá)液位計進行觀測,在水艙晃動的情況下分別做進水處理和無進出水處理。
在Matlab 中進行仿真,首先在實驗水艙液位不變的情況下,只對其做晃動處理,取80 個采樣點。液位高度初始值為0.512 m,且由式(17)~式(22)可求得單傳感器的局部狀態(tài)最優(yōu)卡爾曼估計值,如圖5 和圖6 所示,即單傳感器在不同位置測得的數(shù)據(jù)的卡爾曼濾波。由式(25)得到分布式的矩陣加權(quán)最優(yōu)融合估計,如圖7 所示。
由圖5~圖7 可得,傳感器測得的實時液位值上下波動,與實際值的誤差較大,而雷達(dá)液位計經(jīng)過卡爾曼濾波器處理過的估計值趨于真實值,且較為穩(wěn)定;而單傳感器測得的數(shù)據(jù)過于片面,不能全面表現(xiàn)出整個艙內(nèi)的液位。從濾波融合估計值來看,波動基本處于實際液位值0.512 m 的±4 mm 左右,能準(zhǔn)確表達(dá)艙內(nèi)液位的狀態(tài)。
圖5 傳感器1 的液位測量值與濾波值Fig.5 Sensor 1 level measurement and filtered value
圖6 傳感器2 的液位測量值與濾波值Fig.6 Sensor 2 level measurement and filtered value
圖7 分布式加權(quán)融合卡爾曼濾波Fig.7 Distributed weighted fusion Kalman filtering
在實驗水艙進水時對水艙做晃動處理,取100 個采樣點,液位高度初始值為0.512 m,仿真結(jié)果如圖8~圖10 所示。
圖8 傳感器1 的測量值與濾波值Fig.8 Sensor 1 measured and filtered values
圖9 傳感器2 的測量值與濾波值Fig.9 Sensor 2 measured and filtered values
圖10 分布式加權(quán)融合卡爾曼濾波Fig.10 Distributed weighted fusion Kalman filtering
由圖10 可見,液位波動的測量值經(jīng)過最優(yōu)融合卡爾曼濾波器處理后表示的更加穩(wěn)定,輸出值趨于真實值,最大波動不超過6 mm,且運行一段時間后輸出基本趨于平穩(wěn)。因此,可看出濾波融合的效果良好。同時,經(jīng)過多次測量比較,采用本系統(tǒng)測量的液位值平均誤差在0.5%以內(nèi),滿足系統(tǒng)設(shè)計要求,可見采用分布式最優(yōu)加權(quán)融合卡爾曼濾波器的濾波效果良好。表1為試驗所用的100 組數(shù)據(jù)計算的誤差。
由表1 可得,本文實驗中液位監(jiān)測的方法雖然在測量前對傳感器進行了預(yù)處理,可測量后的誤差仍然較大。在單傳感器測量下,采用卡爾曼濾波產(chǎn)生的誤差較小,而多傳感器濾波融合后的誤差最小。由此可見,多傳感器融合算法具有較高的精度。因此,在精度要求高的液位監(jiān)控系統(tǒng)中可考慮采用本文提出的多傳感器融合方法。
表1 液位測量精度比較Tab.1 Comparison of liquid level measurement accuracy
本文針對船舶液位監(jiān)測過程中液位測量易出現(xiàn)的誤差,且考慮到單傳感器測量數(shù)據(jù)容易產(chǎn)生偏差,提出一種在時滯系統(tǒng)下的基于卡爾曼濾波的多傳感器融合算法,給出了多傳感器分布式加權(quán)最優(yōu)融合估計和最優(yōu)融合誤差。對液位變化過程進行建模,使用此方法對傳感器測得值進行處理,提高液位輸出值的精確度和穩(wěn)定性。通過仿真和實驗證明,本文采用的對測量數(shù)據(jù)的處理方法使得到的液位輸出值相比于常用方法更加精確可靠,具有一定的實用性。