刘江莉,宫尚军,张 磊,朱志松,姚兴田
(南通大学 机械工程学院,江苏 南通 226019)
船舶液位监控系统是实现船舶自动化的一个重要系统,关系到船舶在装卸货及航行中的安全问题。船舶在装卸货物的过程中,船体会发生一定程度的倾斜,为了保证船舶的平衡,需要对压载水舱内的液位进行调节。工作人员根据压载水舱的液位以及船舶的吃水状态计算出相应的配载,手动控制或者自动控制压载水泵和阀门的开启状态,对压载舱进行压水和排水[1]。液位监控系统自动化的应用节省了劳动力,提高了船员操作效率。高精度的液位监测系统则是船舶装卸和航行安全的重要保证。因此,液位监测系统的首要问题是如何使测量的液位更精确、更可靠。
在液位监测的过程中,由于环境的不确定因素干扰以及单传感器自身的局限性,使得测量的液位值往往不完整或带有较大的不确定性,甚至含有异常噪声点。针对液位测量的误差,本文提出一种基于卡尔曼滤波的多传感器融合算法,对液位测量值进行滤波,提高液位测量的精度,获得了稳定可靠的输出值。
船舶液位监控系统主要由信号采集单元、下位机PLC、阀门控制单元、上位机监控软件以及历史数据库组成。信号采集单元中的传感器用于对舱内液位、吃水深度、压力、温度等参数进行采集。本系统的PLC 选用西门子S7-1 200,用于对多个传感器采集的信号进行运算处理,根据不同的数据类型输出相应的信号。阀门控制单元根据PLC 发出的命令,由阀门和压载泵完成对应的动作。上位机选用组态王6.55 进行开发,采用TCP/IP 协议通过交换机与下位机进行通讯,并动态监控整个系统。历史数据库由MySQL 数据库设计开发,采用ODBC 协议与上位机连接。图1 为系统的结构图。
图1 液位监控系统结构简图Fig.1 Structure diagram of liquid level monitoring system
船舶液位监控系统实时监测各压载舱内液位的高度以及吃水深度,通过监测舱内液位的变化从而调控压载系统的进排水量。因此,只有保证船舶吃水和压载舱内液位等参数的精度及可靠,才能确保船舶实现准确、安全及平稳的控制。
船舶吃水测量的方法由传感器的安装方位决定。本文采用六角吃水测量法,将传感器分别安装在船舶左右两舷的首中尾6 个角,左右吃水的测量由安装在船舯左右舷底部压载舱底的传感器测得,首尾吃水的测量由安装在首尖舱和隔离空舱底的传感器测得[2]。船舶的横倾角通过船左右吃水差得出,方法如图2 所示。
图2 船舯左右吃水横倾角计算Fig.2 Calculation of the yaw angle around the ship
图中H1为 船中左侧液位的高度,H2为船中右侧液位的高度,M为船中左右两侧的液位传感器测量的水平距离,船舶的横倾角β的计算方法如下式:
船舶纵倾角度的计算方法同理。从上述公式可看出船舶横纵倾角度计算的真实值取决于船舷吃水测量的精度。
船舶液位监测过程中,对液位的测量会不可避免地出现误差,改进测量方法消除误差则是液位监测系统中重要的一环。对测得的数据比较分析后发现,液位测量误差的来源有2 个方面,一是传感器设备产生的误差,二是测量环境的不确定因素带来的误差。
传感器在传感器单元中,受到供电电路的电磁、电缆信号等干扰,可能会产生静态性偏差、零点漂移及灵敏度漂移等问题,因而传感器的初始标定值存在一定的误差,需要对传感器进行预处理,作二次标定以补偿其新增不确定度[3]。
针对液位传感器的预处理流程如图3 所示,包括标定、转换、分值滤波和微值滤波几个过程。
图3 数据的预处理过程Fig.3 Data preprocessing
图中XIN为输入值,KX为 比例系数偏移,Z为零点偏移,CvSn为转换值。
对传感器在不同情况下测得的几组数据进行标定[4]。在实验水舱中,采用雷达液位计对0.5 m 高的液位进行测量,其电流输出值为5 mA;对0.8 m 高的液位进行测量,输出值为5.6 mA。标定公式如下式:
对标定后的转换值CvSn,进行峰值或微值滤波处理[5]。峰值滤波指对超过设定峰值(DP)的变化值忽略。微值滤波则是对小于设定不灵敏区的值(AP)不做处理。
通过对传感器进行预处理,可将测量误差降至最低,也能减少部分测量过程中的随机误差,且对传感器输出值进行标定,也能及时检测传感器故障,提高传感器测量输出数据的可靠性。
环境的因素则是由于船舶受到风浪的干扰以及在装卸货物时船体的倾斜导致液面的波动幅度较大,使得测得的误差较大。
考虑到液面的波动是无法避免的,因此,需要对测得的液位信号进行滤波,将影响液位监测的液面波动、观测噪声等滤除,实时获得精确可靠的液位监测。在中央处理单元采用滤波程序对采集的数据进行处理,本文采用卡尔曼滤波器对传感器测量结果进行滤波,卡尔曼滤波是基于贝叶斯定理,利用递归迭代进行滤波的方法,主要用来预测和更新。
由卡尔曼滤波原理,随机线性离散系统的方程为:
式中:x(k)为 系统的状态向量;A为 状态转移矩阵;y(k)为观测真值;H为观测矩阵;w(k),v(k)分别为过程噪声和观测噪声[6]。
压载系统对舱内液位高度进行调节,操控压载泵和阀门对水舱内进水,记采样时间为t0,s(k)为液位在采样时刻kt0处的高度,记在时刻kt0处的液位速度为s˙(k),由动力学公式:
定义在采样时刻kt0处 系统的状态x(k)为液位的高度和速度,可得到液位高度的状态方程为:
观测方程为:
式中:w(k)∈Rm为过程噪声,即由海风和海浪等不确定因素引起的随机加速度,v(k)∈Rm为传感器的观测噪声,且都是高斯白噪声,均值为零,方差矩阵分别为Qk和Rk。
液位的预测过程为:
根据液位的预测方程,将液位的初始状态以及初始协方差输入卡尔曼滤波器后,可不断得到液位变化的真实值,滤波效果理想[7]。
虽然传感器测得的液位高度经过卡尔曼滤波后能够得到一个较为稳定、精确的值,但在实际船舶液位监测的过程中,传感器测得的液位数据在传输交换过程中不仅有可能出现时滞,且单个传感器在液位测量的过程中可能会出现故障或者受到干扰导致得到的液位测量值与真实值相差较大。因而在本实验系统中需采用多传感器测量液位[8],以减少信息处理过程中可能出现的偏差,提高液位估计精度,在对舱内液位建模时还需将液位监测系统作为时滞系统进行处理。
多传感器融合算法作为智能测量的关键技术之一,其融合方式有多种,本文采用分布式融合算法,如图4所示。首先单个传感器测得的数据经过局部滤波器进行处理,得出各个传感器的状态估计值,然后采用最小二乘估计对估计状态进行融合。分布式融合估计改变了全局最优估计的数据处理结构,将整个系统分成几个小系统进行处理,提高了计算机实时并行处理速度[9]。
图4 分布式融合算法结构图Fig.4 Structure diagram of distributed fusion algorithm
考虑传感器测量的液位值在观测中存在一步随机时滞的非理想情况[10],多传感器线性离散系统模型如下:
式中:k为离散时间;x(k)∈Rn为液位状态向量;r为系统本身的延迟时间;yi(k)∈Rm为第i个传感器的液位观测;w(k)∈Rm为过程噪声,即由海风和海浪等不确定因素引起的随机加速度,vi(k)∈Rmi为第i个传感器的观测噪声,且都是高斯白噪声,均值为零,方差矩阵分别为Qk和Rk;A,hi为 已知的维数矩阵;L表示传感器的个数[8]。
采用二维随机变量 εki(k>1) 表示在k时刻第i个传感器的观测数据yi(k) 是否到达状态估计器[11];εki取值0 或1,服从伯努利分布,且满足分布特性:
假设系统状态x0和噪声wk,vk均不相关;wk和vk相互独立。
对系统状态扩展,状态扩展形式:
式中:A,Γ,Hi为常矩阵;(A,Hi) 完全可观,且A为稳定矩阵。
卡尔曼滤波的过程主要为预测与更新,在k时刻,数据正确到达滤波器时,液位状态的估计值与误差方差应取根据误差推得的更新值;当新的观测数据由于时滞无法到达时,需要的液位状态的估计值与误差方差应取上一时刻的预测状态和预测误差方差[12]。
1)第i个传感器的局部最优卡尔曼滤波
2)任意2 个传感器之间的估计误差互协方差
预测互协方差:
更新互协方差:
式中:i,j=1,2,···,L;I为单位矩阵;εk为0 或1 的随机值。
3)多传感器分布式加权最优融合估计
式 中:eT=[In,···,In];P(k|k)是Pij(k|k) 第 (i,j)元素的nL*nL分块矩阵。
最优融合误差阵:
在实验中将液位的初始高度以及液位变化的初始速度赋值给初始状态,给出估算的初始协方差,输入并启动最优卡尔曼滤波器即可得到稳定且精确的真实液位值[13]。
在实验室内模拟船舶的压载舱设计实验水舱,实现液位监测系统的功能并采集水舱进出水时液位的数据,进行算法处理,输出液位的精确值[14]。船舶装卸货物时,压载舱根据船舶的倾斜角度调节相应压载舱的舱内液位。在本文实验中,将调节压载水前的液位高度作为初始高度值,将水泵抽水的速率转换成液位上升高速度。对一侧水舱内的液位的测量采用2 个雷达液位计进行观测,在水舱晃动的情况下分别做进水处理和无进出水处理。
在Matlab 中进行仿真,首先在实验水舱液位不变的情况下,只对其做晃动处理,取80 个采样点。液位高度初始值为0.512 m,且由式(17)~式(22)可求得单传感器的局部状态最优卡尔曼估计值,如图5 和图6 所示,即单传感器在不同位置测得的数据的卡尔曼滤波。由式(25)得到分布式的矩阵加权最优融合估计,如图7 所示。
由图5~图7 可得,传感器测得的实时液位值上下波动,与实际值的误差较大,而雷达液位计经过卡尔曼滤波器处理过的估计值趋于真实值,且较为稳定;而单传感器测得的数据过于片面,不能全面表现出整个舱内的液位。从滤波融合估计值来看,波动基本处于实际液位值0.512 m 的±4 mm 左右,能准确表达舱内液位的状态。
图5 传感器1 的液位测量值与滤波值Fig.5 Sensor 1 level measurement and filtered value
图6 传感器2 的液位测量值与滤波值Fig.6 Sensor 2 level measurement and filtered value
图7 分布式加权融合卡尔曼滤波Fig.7 Distributed weighted fusion Kalman filtering
在实验水舱进水时对水舱做晃动处理,取100 个采样点,液位高度初始值为0.512 m,仿真结果如图8~图10 所示。
图8 传感器1 的测量值与滤波值Fig.8 Sensor 1 measured and filtered values
图9 传感器2 的测量值与滤波值Fig.9 Sensor 2 measured and filtered values
图10 分布式加权融合卡尔曼滤波Fig.10 Distributed weighted fusion Kalman filtering
由图10 可见,液位波动的测量值经过最优融合卡尔曼滤波器处理后表示的更加稳定,输出值趋于真实值,最大波动不超过6 mm,且运行一段时间后输出基本趋于平稳。因此,可看出滤波融合的效果良好。同时,经过多次测量比较,采用本系统测量的液位值平均误差在0.5%以内,满足系统设计要求,可见采用分布式最优加权融合卡尔曼滤波器的滤波效果良好。表1为试验所用的100 组数据计算的误差。
由表1 可得,本文实验中液位监测的方法虽然在测量前对传感器进行了预处理,可测量后的误差仍然较大。在单传感器测量下,采用卡尔曼滤波产生的误差较小,而多传感器滤波融合后的误差最小。由此可见,多传感器融合算法具有较高的精度。因此,在精度要求高的液位监控系统中可考虑采用本文提出的多传感器融合方法。
表1 液位测量精度比较Tab.1 Comparison of liquid level measurement accuracy
本文针对船舶液位监测过程中液位测量易出现的误差,且考虑到单传感器测量数据容易产生偏差,提出一种在时滞系统下的基于卡尔曼滤波的多传感器融合算法,给出了多传感器分布式加权最优融合估计和最优融合误差。对液位变化过程进行建模,使用此方法对传感器测得值进行处理,提高液位输出值的精确度和稳定性。通过仿真和实验证明,本文采用的对测量数据的处理方法使得到的液位输出值相比于常用方法更加精确可靠,具有一定的实用性。