主要内容

故障检测使用一个扩展的卡尔曼滤波器

这个例子展示了如何使用一个扩展卡尔曼滤波器进行故障检测。网上的例子使用扩展卡尔曼滤波器估计摩擦的一个简单的直流电机。重大的变化估计摩擦检测和指示故障。这个示例使用从系统辨识工具箱™功能,并且不需要预测维修工具箱™。

汽车模型

汽车模型作为惯性和阻尼系数c J,由转矩驱动。电机角速度和加速度 w ˙ 测量输出。

w ˙ = ( u - - - - - - c w ) / J

估计阻尼系数c使用扩展卡尔曼滤波,引入一个辅助状态的阻尼系数和设置它的导数为零。

c ˙ = 0

因此,模型状态,x = (w; c)和测量,y,方程是:

( w ˙ c ˙ ] = ( ( u - - - - - - c w ) / J 0 ]

y = ( w ( u - - - - - - c w ) / J ]

连续时间方程转化为离散时间使用近似 x ˙ = x n + 1 - - - - - - x n T 年代 ,其中t是离散的采样周期。这给了离散时间模型方程中实现pdmMotorModelStateFcn.mpdmMotorModelMeasurementFcn.m功能。

( w n + 1 c n + 1 ] = ( w n + ( u n - - - - - - c n w n ) T 年代 / J c n ]

y n = ( w n ( u n - - - - - - c n w n ) / J ]

指定电机参数。

J = 10;%的惯性t = 0.01;%样品时间

指定初始状态。

x0 = [0;%角速度1);%的摩擦类型pdmMotorModelStateFcn
函数x1 = pdmMotorModelStateFcn (x0,变长度输入宗量)% pdmMotorModelStateFcn % %状态更新方程一个马达与摩擦状态% % x1 = pdmMotorModelStateFcn (x0, u, J, Ts)输入% %:% x0,初始状态元素(角速度;摩擦]% u -电动机转矩输入% -电动机惯性% Ts % %输出采样时间:% x1 -更新州% % 2016 - 2017版权MathWorks, Inc . %提取数据从输入u =变长度输入宗量{1};输入J =变长度输入宗量% {2};%系统innertia Ts =变长度输入宗量{3};% %样本时间状态更新方程x1 = […x0 (1) + Ts / J * (u-x0 (1) * x0 (2));…x0 (2)];结束
类型pdmMotorModelMeasurementFcn
变长度输入宗量函数y = pdmMotorModelMeasurementFcn (x) % pdmMotorModelMeasurementFcn % %测量方程的电动机与摩擦状态% % y = pdmMotorModelMeasurementFcn (x0, u, J, Ts)输入% %:% x -运动状态与元素(角速度;摩擦]% u -电动机转矩输入% -电动机惯性% Ts % %输出采样时间:% y -电机测量元素(角速度;角加速度)% % 2016 - 2017版权MathWorks, Inc . %提取数据从输入u =变长度输入宗量{1};输入J =变长度输入宗量% {2};%系统innertia %输出方程y = […x (1);…(u-x (1) * (2) x) / J];结束

运动经历状态(过程)噪音干扰,q,噪声和测量噪声干扰,r。条件是附加的。

( w n + 1 c n + 1 ] = ( w n + ( u n - - - - - - c n w n ) T 年代 / J c n ] +

y n = ( w n ( u n - - - - - - c n w n ) / J ] + r

过程和测量噪声为零的意思是,E[问]= E [r] = 0和协方差Q = E (qq)R = E (rr)。摩擦状态有很高的过程噪声干扰。这反映了一个事实,我们预计摩擦改变电动机在正常运行和希望滤波器跟踪这种变化。加速度和速度状态噪声低,但速度和加速度测量相对嘈杂的。

指定过程噪声协方差。

Q = [1 e-6 0;%角速度0 1依照];%的摩擦

指定的测量噪声协方差。

R = (1 0的军医;%速度测量0 1的军医];%加速度测量

创建一个扩展的卡尔曼滤波器

创建一个扩展卡尔曼滤波器来估计模型的状态。我们特别感兴趣的阻尼状态因为戏剧性的变化在这个状态值表示一个错误事件。

创建一个extendedKalmanFilter对象,并指定的雅克比状态转换和测量功能。

卡尔曼滤波器= extendedKalmanFilter (@pdmMotorModelStateFcn,@pdmMotorModelMeasurementFcn,x0,“StateCovariance”,(1 0;0 1000),[1 0 0;0 1 0;0 0 100),…“ProcessNoise”问,“MeasurementNoise”R“StateTransitionJacobianFcn”@pdmMotorModelStateJacobianFcn,“MeasurementJacobianFcn”,@pdmMotorModelMeasJacobianFcn);

扩展卡尔曼滤波器有作为输入参数前面定义的状态转换和测量功能。初始状态值x0、初始状态协方差和过程和测量噪声协方差也扩展卡尔曼滤波器的输入。在这个例子中,准确的雅可比矩阵函数可以从状态转换函数f,和测量功能h:

x f = ( 1 - - - - - - T 年代 c n / J - - - - - - T 年代 w n / J 0 1 ]

x h = ( 1 0 - - - - - - c n / J - - - - - - w n / J ]

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

类型pdmMotorModelStateJacobianFcn
变长度输入宗量函数江淮= pdmMotorModelStateJacobianFcn (x) % pdmMotorModelStateJacobianFcn % %电动机模型状态方程的雅可比矩阵。看到pdmMotorModelStateFcn %模型方程。% %江淮= pdmMotorModelJacobianFcn (x, u, J, Ts)输入% %:% x -状态与元素(角速度;摩擦]% u -电动机转矩输入% -电动机惯性% Ts % %输出采样时间:%江淮-国家雅可比矩阵计算x % % 2016 - 2017版权MathWorks, Inc . %模型属性J =变长度输入宗量{2};Ts =变长度输入宗量{3};%雅可比矩阵江淮= […1 - t / J * (2) ts / J * x (1);…0 1];结束
类型pdmMotorModelMeasJacobianFcn
变长度输入宗量函数J = pdmMotorModelMeasJacobianFcn (x) % pdmMotorModelMeasJacobianFcn % %电动机模型测量方程的雅可比矩阵。看到% pdmMotorModelMeasurementFcn为模型方程。% %江淮= pdmMotorModelMeasJacobianFcn (x, u, J, Ts)输入% %:% x -状态与元素(角速度;摩擦]% u -电动机转矩输入% -电动机惯性% Ts % %输出采样时间:%江淮——计算雅可比矩阵测量x % % 2016 - 2017版权MathWorks, Inc . %系统参数J =变长度输入宗量{2};%系统innertia %雅可比矩阵J = […1 0;J - x - x (2) / (1) / J];结束

模拟

模拟工厂,创建一个循环,并引入故障电机(马达小说的戏剧性的变化)。在模拟循环,利用扩展卡尔曼滤波器估计运动状态和专门跟踪摩擦状态检测摩擦当有显著变化。

电机模拟脉冲序列,反复加速和减慢马达。这种类型的电动机操作是典型的选择机器人在生产线。

t = 0: Ts: 20;%,20年代Ts采样周期u =双(mod (t, 1) < 0.5) -0.5;%脉冲序列,循环周期1,50%的进口关税元=元素个数(t);%的时间点nx =大小(x0, 1);%的状态数ySig = 0((2元));%测量电机输出(nx xSigTrue = 0 (nt);%无节制的运动状态(nx xSigEst = 0 (nt);%估计电机状态xstd = 0 ((nx nx nt));%的标准偏差估计ySigEst = 0((2元));%估计模型输出fMean = 0(1元);%的意思估计摩擦fSTD = 0(1元);%的标准偏差估计摩擦fKur = 0(2元);%的峰度估计摩擦fChanged = false (nt);%国旗表明摩擦变化检测

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

rng (“默认”);Qv =胆固醇(Q);%对过程噪声标准差Qv(结束)= 1飞行;%小摩擦噪声房车=胆固醇(R);%为测量噪声标准差

使用状态更新方程,模拟模型和过程噪声添加到模型状态。十秒到仿真,力马达摩擦的变化。使用模型度量函数来模拟汽车传感器,并添加测量噪声对模型输出。

ct = 1:元素个数(t)%模型输出更新y = pdmMotorModelMeasurementFcn (x0, u (ct), J, Ts);y = y +房车* 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;%存储状态下模拟迭代

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

%使用扩展卡尔曼滤波状态估计x_corr =正确(卡尔曼滤波器,y, u (ct), J, Ts);%的状态估计基于当前测量。xSigEst (:, ct) = x_corr;xstd (:,:, ct) =胆固醇(ekf.StateCovariance);预测(ekf, u (ct), J, Ts);%预测下一个状态给定的当前状态和输入。

检测摩擦的变化,计算出平均值和标准偏差估计摩擦使用4第二移动窗口。最初的7秒阶段后,锁计算平均值和标准偏差。这最初的意思是预期的无过错的平均值计算摩擦。7秒后,如果摩擦力大于3个标准差远估计预期的无过错平均值,这意味着一个重大改变摩擦。减少噪音和变异性的影响的估计摩擦,使用的均值估计摩擦当比较3个标准差。

如果t (ct) < 7%计算平均值和标准偏差估计的小说。idx = max (ct - 400):马克斯(1,ct-1);% t = 0.01秒fMean (ct) =意味着(xSigEst (2, idx));fSTD (ct) =性病(xSigEst (2, idx));其他的%存储计算平均值和标准偏差%验算。fMean (ct) = fMean (ct-1);fSTD (ct) = fSTD (ct-1);%使用预期的平均值和标准偏差检测的摩擦%摩擦的变化。estFriction =意味着(xSigEst(2,马克斯(1,ct-10): ct));fChanged (ct) = (estFriction > fMean (ct) + 3 * fSTD (ct) | | (estFriction < fMean (ct) 3 * fSTD (ct));结束如果fChanged (ct) & & ~ fChanged (ct-1)%检测摩擦变化信号的前沿| fChanged |。流(明显的摩擦变化% f \ n 't (ct));结束
重大的摩擦变化为10.450000

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

ySigEst (:, ct) = pdmMotorModelMeasurementFcn (x_corr u (ct), J, Ts);idx = max (ct - 400): ct;fKur (:, ct) = (idx峰度(ySigEst (1) -ySig (idx));idx峰度(ySigEst (2) -ySig (2, idx)));结束

扩展卡尔曼滤波器的性能

请注意,摩擦变化检测到10.45秒。我们现在描述故障检测规则是派生的。首先检查仿真结果和过滤性能。

图中,次要情节(211),情节(t, ySig (1:), t, ySig (2:));标题(电机输出的)传说(测量角速度的,测量角加速度的,“位置”,“西南”)次要情节(212)、情节(t, u);标题(“电机输入转矩”)

图包含2轴对象。坐标轴对象1与电动机输出标题包含2线类型的对象。这些对象代表测量角速度、角加速度来衡量。坐标轴对象与电动机输入标题2——转矩包含一个类型的对象。

投入产出模型的反应表明,很难直接从测量信号检测摩擦的变化。扩展卡尔曼滤波器使我们能够估计美国,特别是摩擦状态。比较真实的模型状态和状态估计。与置信区间估计的状态显示对应3个标准差。

图中,次要情节(211),情节(t, xSigTrue (1:), t, xSigEst (1:)[t南t]、[xSigEst(1:) + 3 *挤压(xstd(1 1:))”,南xSigEst(: 1) 3 *挤压(xstd(1 1:))的])轴(20 -0.06 - 0.06[0]),传说(“真实价值”,“估计价值”,置信区间的)标题(“运动状态——速度”)次要情节(212)、图(t, xSigTrue (2:), t, xSigEst (2:)[t南t]、[xSigEst(2:) + 3 *挤压(xstd(2, 2,:))的南xSigEst(2:) 3 *挤压(xstd(2, 2,:))的])轴([0 -10 15])标题(“运动状态——摩擦”);

图包含2轴对象。坐标轴对象1与标题汽车状态——速度包含3线类型的对象。这些对象代表真实价值,估计价值,置信区间。坐标轴对象2与标题汽车状态-摩擦包含3线类型的对象。

注意滤波器估计跟踪真实值,并且置信区间仍然有限。检查估计错误提供更多的洞察过滤器的行为。

图中,次要情节(211),情节(t, xSigTrue (1:) -xSigEst(1:))标题(“速度状态错误”)次要情节(212)、图(t, xSigTrue (2:) -xSigEst(2:))标题(的摩擦状态错误)

图包含2轴对象。坐标轴对象与标题1速度状态误差包含一个类型的对象。坐标轴对象与标题2摩擦状态误差包含一个类型的对象。

错误情节显示过滤器适应摩擦在10秒后,减少了估计误差为零。然而,错误情节不能用于故障检测,因为他们依赖于知道真实的状态。比较测量状态值来估计状态值加速度和速度可以提供一个检测机制。

图次要情节(211),情节(t, ySig (: 1) -ySigEst(1:))标题(“速度测量误差”)次要情节(212)、图(t, ySig (2:) -ySigEst(2:))标题(加速度测量误差的)

图包含2轴对象。坐标轴对象1标题速度测量误差包含一个类型的对象。坐标轴对象2标题加速度测量误差包含一个类型的对象。

加速度误差图显示了一个小的差异在平均误差大约10秒钟介绍了故障。查看错误统计数据是否可以检测出故障的计算错误。加速度和速度误差预计将正态分布(高斯噪声模型都是)。因此,峰度加速度误差可能有助于识别误差分布变化从对称不对称时由于摩擦变化和产生的误差分布的变化。

图中,次要情节(211),情节(t, fKur(1:))标题(“速度误差峰度”)次要情节(212)、图(t, fKur(2:))标题(“峰度加速度误差”)

图包含2轴对象。坐标轴对象1标题速度误差峰度包含一个类型的对象。坐标轴对象2标题加速度误差峰度包含一个类型的对象。

忽略第一个4秒的时候估计还融合和数据被收集,与小错误是相对稳定的峰度变化约3(预期的峰度值为高斯分布)。因此,错误数据不能用于自动检测摩擦这个应用程序的变化。使用错误的峰度也很难在这个应用程序中过滤器和不断适应驾驶的错误为零,只给一个短的时间窗口的错误分布不同于零。

因此在这个应用程序中,使用估计摩擦的变化提供了最好的方法自动检测汽车故障。摩擦估计从已知的无过错(平均值和标准偏差)数据提供预期范围的摩擦,很容易检测到这些边界是违反了。以下情节突出了这种故障检测的方法。

图绘制(t, xSigEst (2:), [t南t], [fMean + 3 * fSTD,南fMean-3 * fSTD])标题(摩擦变化检测的)传说(“估计摩擦”,“无过错摩擦边界”轴([0 -10 20])网格

图包含一个坐标轴对象。坐标轴对象与标题摩擦变化检测包含2线类型的对象。这些对象代表估计摩擦,摩擦无过错。

总结

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

相关的话题