故障检测的扩展卡尔曼滤波器

该示例示出了如何使用用于故障检测的扩展卡尔曼滤波器。该示例使用了一个简单的DC马达的摩擦的在线估计扩展卡尔曼滤波器。在推定摩擦显著变化被检测并指示故障。本示例使用了系统辨识工具箱™功能,并且不需要预知维修工具箱™。

电机型号

电机被建模为一个惯量J与阻尼系数C,由扭矩ü驱动。电机角速度w和加速度 w ^ ˙ 是所测量的输出。

w ^ ˙ = ü - C w ^ / Ĵ

为了估计衰减系数c。使用扩展卡尔曼滤波器,引入的辅助状态的衰减系数,并设置其衍生物为零。

C ˙ = 0

因此,该模型状态中,x = [W C],和测量,Y,方程是:

[ w ^ ˙ C ˙ ] = [ ü - C w ^ / Ĵ 0 ]

ÿ = [ w ^ ü - C w ^ / Ĵ ]

连续时间方程使用所述近似变换到离散时间 X ˙ = X ñ + 1 - X ñ Ť 小号 ,其中Ts是离散采样周期。这使它们在实现的离散时间模型方程pdmMotorModelStateFcn.mpdmMotorModelMeasurementFcn.m职能。

[ w ^ ñ + 1 C ñ + 1 ] = [ w ^ ñ + ü ñ - C ñ w ^ ñ Ť 小号 / Ĵ C ñ ]

ÿ ñ = [ w ^ ñ ü ñ - C ñ w ^ ñ / Ĵ ]

指定电机参数。

J = 10;惯性%TS = 0.01;% 采样时间

指定的初始状态。

X0 = [...0;...% 角速度1];% 摩擦类型pdmMotorModelStateFcn
函数X1 = pdmMotorModelStateFcn(X0,varargin)%PDMMOTORMODELSTATEFCN%%用于与摩擦电动机作为状态%%X1 = pdmMotorModelStateFcn状态更新方程(X0,U,J,TS)%%输入:%X0  - 包含元素[初始状态角速度;摩擦]%U  - 电动机转矩输入%的J  - 电机惯量%TS  - 采样时间%%输出:%×1  - 更新状态%%版权所有2016  -  2017年MathWorks公司,从输入公司%提取数据U = varargin {1};%输入J = varargin {2};%系统innertia TS = varargin {3};%试样时间%状态更新方程X1 = [... X0(1)+ TS / J *(U-X0(1)* X 0(2));X0 ...(2)];结束
类型pdmMotorModelMeasurementFcn
函数y = pdmMotorModelMeasurementFcn(X,varargin)%PDMMOTORMODELMEASUREMENTFCN%%测量方程与摩擦电动机作为状态%%Y = pdmMotorModelMeasurementFcn(X0,U,J,TS)%%输入:%X  - 与元件马达状态[角速度;摩擦]%U  - 电动机转矩输入%的J  - 电机惯量%TS  - 采样时间%%输出:%Y  - 马达的测量包含元素[角速度;角加速度]%%版权所有2016  -  2017年MathWorks公司,从输入公司%提取数据U = varargin {1};%输入J = varargin {2};%系统innertia%输出方程式Y = [...×(1);...(U-X(1)* X(2))/ J];结束

电动机的经验状态(处理)噪音干扰,q和测量噪声的干扰,R。噪声项是附加的。

[ w ^ ñ + 1 C ñ + 1 ] = [ w ^ ñ + ü ñ - C ñ w ^ ñ Ť 小号 / Ĵ C ñ ] + q

ÿ ñ = [ w ^ ñ ü ñ - C ñ w ^ ñ / Ĵ ] + [R

过程和测量噪声具有零均值,E [Q] = E [R] = 0和协方差Q = E [QQ']R = E [RR']。摩擦状态具有高的过程噪音干扰。这反映了我们预计的摩擦,电机的正常运行期间各不相同,希望过滤器来跟踪这种变化的事实。的加速度和速度状态的噪声低,但在速度和加速度测量值是相对嘈杂。

指定过程噪声方差。

Q = [...1E-6 0;...% 角速度0 1E-2];% 摩擦

指定测量噪声协方差。

R = [...1E-4 0;...%速度测量0 1E-4];%加速度测量

创建扩展卡尔曼滤波

创建一个扩展卡尔曼滤波器来估计模型的状态。我们特别感兴趣的阻尼状态,因为在这种状态值急剧变化指示故障事件。

创建extendedKalmanFilter对象,并指定状态转换和测量功能的雅可比矩阵。

EKF = extendedKalmanFilter(...@pdmMotorModelStateFcn,...@pdmMotorModelMeasurementFcn,...X0,...'StateCovariance',[1 0;0 1000],...[1 0 0;0 1 0;0 0 100],...'ProcessNoise',Q,...'MeasurementNoise',R,...'StateTransitionJacobianFcn',@pdmMotorModelStateJacobianFcn,...'MeasurementJacobianFcn',@pdmMotorModelMeasJacobianFcn);

扩展卡尔曼滤波器具有作为输入参数前面定义的状态转换和测量功能。初始状态值X0,初始状态协方差,并且过程和测量噪声协方差也输入扩展卡尔曼滤波器。在这个例子中,确切的雅可比功能可以从状态转换函数来导出F和测量功能H

X F = [ 1 - Ť 小号 C ñ / Ĵ - Ť 小号 w ^ ñ / Ĵ 0 1 ]

X H = [ 1 0 - C ñ / Ĵ - w ^ ñ / Ĵ ]

状态雅可比在定义pdmMotorModelStateJacobianFcn.m函数和测量雅可比在定义pdmMotorModelMeasJacobianFcn.m功能。

类型pdmMotorModelStateJacobianFcn
功能雅克= pdmMotorModelStateJacobianFcn(X,varargin)%PDMMOTORMODELSTATEJACOBIANFCN%%电机模型状态方程的雅可比。见pdmMotorModelStateFcn为%的模型方程。%%雅克= pdmMotorModelJacobianFcn(X,U,J,TS)%%输入:%X  - 状态包含元素[角速度;摩擦]%U  - 电动机转矩输入%的J  - 电机惯量%TS  - 采样时间%%输出:%雅克 - 雅可比状态计算在x%的%版权所有2016  -  2017年MathWorks公司%模型属性J = varargin {2};TS = varargin {3};%雅可比雅克= [... 1-TS / J * X(2)-Ts / J *×(1);... 0 1];结束
类型pdmMotorModelMeasJacobianFcn
函数J = pdmMotorModelMeasJacobianFcn(X,varargin)%PDMMOTORMODELMEASJACOBIANFCN%%马达模型的测量方程的雅可比。请参阅%pdmMotorModelMeasurementFcn的模型方程。%%雅克= pdmMotorModelMeasJacobianFcn(X,U,J,TS)%%输入:%X  - 状态包含元素[角速度;摩擦]%U  - 电动机转矩输入%的J  - 电机惯量%TS  - 采样时间%%输出:%雅克 - 测量雅可比计算在x%的%版权所有2016  -  2017年MathWorks公司%系统参数J = varargin {2};%系统innertia%雅可比J = [... 1 0;-x(2)/ J -x(1)/ D];结束

模拟

为了模拟工厂,创建一个循环并引入电机故障(电机小说戏剧性的变化)。内的模拟循环中,使用扩展卡尔曼滤波器来估算电机的状态和以特异性跟踪摩擦状态来检测何时存在摩擦统计学显著变化。

电动机是模拟与反复加速和减速电机的脉冲串。这种类型的电动机操作的是典型的在生产线上的拾取器的机器人。

t = 0时:TS:20;%时,与TS采样周期20秒U =双(MOD(T,1)<0.5)-0.5;%脉冲串,期间1中,50%的占空比NT = numel(T);时间点的数量%为nx =尺寸(x0,1);国家的数量%ySig =零([2,NT]);%电机测量输出xSigTrue =零([NX,NT]);%不可测电机状态xSigEst =零([NX,NT]);%估算的电机状态x std处=零([NX NX NT]);估计状态%标准偏差ySigEst =零([2,NT]);%估算模型的输出结果fMean =零(1,NT);%平均推定摩擦FSTD =零(1,NT);推定摩擦的%标准偏差FKUR =零(2,NT);推定摩擦的峭度%fChanged =假(1,NT);%标志指示摩擦变化检测

当模拟电动机,添加过程和测量噪声类似构建扩展卡尔曼滤波器时使用的Q和R噪声协方差的值。用于摩擦,使用一个更小的噪声值,因为摩擦是当故障发生时,除了主要恒定。人工诱导模拟过程中的故障。

RNG('默认');QV = CHOL(Q);%标准偏差过程噪声QV(结束)= 1E-2;%以下的摩擦噪声RV = CHOL(R);%标准偏差测量噪声

模拟使用状态更新方程模型和过程噪声模型状态添加。十秒钟进入模拟,迫使电机摩擦的变化。使用该模型测量功能来模拟电动机传感器,和测量噪声的模型输出添加。

对于CT = 1:numel(t)的%型号输出更新Y = pdmMotorModelMeasurementFcn(X0,U(CT),J,TS);Y = Y +器Rv * randn(2,1);%添加测量噪声ySig(:,CT)= Y;%型号状态更新xSigTrue(:,CT)= X0;X1 = pdmMotorModelStateFcn(X0,U(CT),J,TS);%诱导摩擦变化如果T(CT)== 10 X1(2)= 10;%的阶跃变化结束X1N = X1 + QV * randn(NX,1);%添加过程噪声X1N(2)= MAX(X1N(2),0.1);摩擦%下限X0 = X1N;%为下一仿真迭代商店状态
在10.450000显著摩擦变化

从电机测量估算电机状态,使用预测正确扩展卡尔曼滤波器的命令。

使用扩展卡尔曼滤波%状态估计x_corr =正确(EKF,Y,U(CT),J,TS);%正确基于电流测量的状态估计。xSigEst(:,CT)= x_corr;x std处(:,:,CT)= CHOL(ekf.StateCovariance);预测(EKF,U(CT),J,TS);%预测下一状态给定当前状态和输入。

为了检测在摩擦的变化,使用4第二移动窗口计算推定摩擦平均值和标准偏差。初始7-第二周期之后,锁定所述计算平均值和标准偏差。这最初计算平均值预期无过错的摩擦平均值。在7秒后,如果所估计的摩擦是从预期无过错平均值大于3个标准差远时,它表明在一个摩擦变化显著。为了减少在推定摩擦噪声和多变性的影响,进行比较来结合的3-标准偏差时使用所估计的摩擦的平均值。

如果T(CT)<7估计小说%计算平均值和标准差。IDX = MAX(1,CT-400):最大(1,CT-1);%TS =0.01秒fMean(CT)=平均值(xSigEst(2,IDX));FSTD(CT)= STD(xSigEst(2,IDX));其他%存放计算的平均值和标准差不重新计算%。fMean(CT)= fMean(CT-1);FSTD(CT)= FSTD(CT-1);%使用预期摩擦平均值和标准偏差检测%摩擦力的变化。estFriction =平均(xSigEst(2,MAX(1,CT-10):CT));fChanged(CT)=(estFriction> fMean(CT)+ 3 * FSTD(CT))||(estFriction 结束如果fChanged(CT)&&〜fChanged(CT-1)%检测在摩擦变化信号中的上升沿| fChanged |。fprintf中(“显着的摩擦变化在%F \ N”,T(CT));结束

使用估计状态来计算估计的输出。计算测量和估计的输出之间的误差,并计算误差的统计数据。的错误统计可以被用于检测所述的摩擦的变化。这在后面更详细讨论的。

ySigEst(:,CT)= pdmMotorModelMeasurementFcn(x_corr中,u(CT),J,TS);IDX = MAX(1,CT-400):CT;FKUR(:,CT)= [...峰度(ySigEst(1,IDX)-ySig(1,IDX));...峰度(ySigEst(2,IDX)-ySig(2,IDX))];结束

扩展卡尔曼滤波性能

需要注意的是摩擦变化10:45秒内检测。我们现在描述这个故障检测规则是如何衍生的。首先检查模拟结果和过滤性能。

图中,副区(211),曲线图(T,ySig(1,:),T,ySig(2,:));标题(“马达输出”)图例(“测量角速度”“测量的角度加速”'位置''西南')副区(212),曲线图(T,U);标题(“电机输入 - 转矩”

该模型的输入 - 输出响应的指示它难以直接从所测量的信号来检测所述的摩擦的变化。扩展卡尔曼滤波器使我们估计的状态,尤其是摩擦状态。比较真实的模型状态和估计状态。所估计的状态被示出与对应于3个标准偏差的置信区间。

图中,副区(211),曲线图(T,xSigTrue(1,:),T,xSigEst(1,:),...[吨楠吨],[xSigEst(1,:)+ 3 *挤压(x std处(1,1,:))”,南,xSigEst(1,:) -  3 *挤压(x std处(1,1,:))'])轴([0 20 -0.06 0.06]),图例(“真值”'估计的价值'“置信区间”)标题(“马达状态 - 速度”)副区(212),曲线图(T,xSigTrue(2,:),T,xSigEst(2,:),...[吨楠吨],[xSigEst(2,:)+ 3 *挤压(x std处(2,2,:)) '楠xSigEst(2,:) -  3 *挤压(x std处(2,2,:))'])轴([0 20 -10 15])标题(“马达状态 - 摩擦”);

注意,滤波器估计跟踪的真正价值,而置信区间保持有界。检查估计误差更深入地了解过滤器的行为。

图中,副区(211),曲线图(T,xSigTrue(1,:) -  xSigEst(1,:))标题(“速度状态错误”)副区(212),曲线图(T,xSigTrue(2,:) -  xSigEst(2,:))标题(“摩擦状态错误”

该误差图表明,在10秒摩擦改变后的滤波器适应并降低了估计误差为零。但是,错误地块不能用于故障检测,因为他们依靠知道真实状态。测量的状态值进行比较,以对加速度和速度的估计状态值可以提供的检测机构。

图副区(211),曲线图(T,ySig(1,:) -  ySigEst(1,:))标题(“速度测量错误”)副区(212),曲线图(T,ySig(2,:) -  ySigEst(2,:))标题(“加速度测量错误”

加速度误差曲线图显示引入到故障时约10秒,平均误差微小的差别。查看错误统计,看看故障是否可以从计算错误进行检测。预计加速度和速度误差是正态分布的(噪声模型都是高斯)。因此,加速度误差的峰度可以帮助确定何时从对称的误差分布的变化,以在误差分布的不对称是由于摩擦的变化和产生的变化。

图中,副区(211),曲线图(T,FKUR(1,:))标题(“速度误差峰度”)副区(212),曲线图(T,FKUR(2,:))标题(“加速度误差峰度”

忽略前4秒时估计仍会聚并且被收集的数据,中的错误的峰度与约3的微小变化(预期峰度值为高斯分布)相对恒定。因此,误差统计信息不能被用于自动地检测在本申请中的摩擦的变化。使用错误的峰度也很难在这个应用程序过滤器正在适应并不断推动误差为零,只给一个很短的时间窗口,在误差分布从零有所不同。

因此,在本申请中,使用在估算的摩擦的变化提供给在电机自动检测故障的最佳方式。从已知的无故障数据的摩擦估计(均值和标准差)提供预期的摩擦界限,很容易在这些边界受到侵犯时检测。下面的情节突出了这种故障检测方法。

图图(吨,xSigEst(2,:),[吨楠吨],[fMean + 3 * FSTD,南,fMean-3 * FSTD])标题(“摩擦变化检测”)图例(“估算的摩擦”“无过错摩擦界限”)轴([0 20 -10 20])格

摘要

这个例子展示了如何使用扩展卡尔曼滤波器来估计摩擦以简单的直流电动机和用于故障检测的摩擦力估计。

相关话题