预测性维护相关资料

引言

对预测性维护相关资料进行整理,便于查阅。

预测性维护工作流

使用数字孪生体进行预测性维护

预测性维护工作流

结合Simulink仿真和预测性维护工具箱(Predictive Maintenance Toobbox)

  • 构建数字孪生体
  • 获取数据
  • 数据预处理
  • 创建预测模型
  • 部署算法

预测性维护主要包括两个方向:故障诊断和剩余寿命(RUL)预测。

Data Ensembles for Condition Monitoring and Predictive Maintenance

所需数据主要包括三类:

  • 系统正常运行
  • 系统在故障状态下运行
  • 系统运行的寿命记录(从正常到故障的数据)

小迈步之人工智能(二):大数据跌进人工智能的坑,预测性维护如何实现和落地

主要内容包括:

  • 利用数字孪生仿真目标对象,并产生仿真数据
  • 利用数据进行预处理和特征提取
  • 利用机器学习技术构建设备的故障诊断和剩余寿命预测模型
  • 利用 App Designer 生成用户界面

故障诊断工作流相关

Predictive Maintenance in Hydraulic Pump

Multi-Class Fault Detection Using Simulated Data

Analyze and Select Features for Pump Diagnostics

  • 导入带标签的数据
  • 对数据进行预处理
  • 对数据进行探索和特征提取
  • 选择合适的机器学习分类模型
    • 决策树
    • SVM
    • 朴素贝叶斯分类器
    • 最近邻分类器
    • 集成分类器
      • 提升树
      • 装袋树
      • ...
    • ...

寿命预测工作流相关

Wind Turbine High-Speed Bearing Prognosis

Data Import

数据导入主要通过 fileEnsembleDatastore 函数来完成。

Data Exploration

对初始数据进行初步的探索,包括一些基础特征的变化等等。主要通过各类统计图的观察来初步分析。

Feature Extraction

基于前一步数据探索后的结果对需要、有价值的特征进行提取,主要包括以下特征:

  • 时域(time-domain)
    • Mean
    • Std
    • Skewness
    • Kurtosis
    • Peak2Peak
    • RMS
    • CrestFactor
    • ShapeFactor
    • ImpulseFactor
    • MarginFactor
    • Energy
    • ...
  • 频域
    • spectral kurtosis
      • SKMean
      • SKStd
      • SKSkewness
      • SKKurtosis
      • ...

关于信号频域分析方法的理解,参见:信号频域分析方法的理解(频谱、能量谱、功率谱、倒频谱、小波分析) - Mr.括号的文章 - 知乎

Feature Postprocessing

提取出的特征通常包含噪声,因此需要进行平滑处理。

这里采用的是移动均值平滑(moving mean smothing),对应的 matlab 函数为 movmean 。该方法会引入信号的时间延迟,可以通过在 RUL 预测中选择适当的阈值来减轻延迟影响。

对于时间序列的平滑处理主要包括两种方法:移动平均法(Moving average, MA)和指数平滑法(Exponential Smoothing, ES),具体可参考:

Training Data

创建训练集。通常利用现有数据的部分数据作为训练集。

Feature Importance Ranking

对数据特征的重要性进行排序。这里选择的是单调性(monotonicity)来度量这些特征的重要性。对应的 matlab 函数为 monotonicity

Dimension Reduction and Feature Fusion

利用主成分分析(PCA)对特征进行降维,在进行 PCA 之前,需要对特征数据进行归一化处理。

可通过观察主成分之间的关系,选择合适的健康指标。

Fit Exponenential Degradation Models for Remaining Useful Life (RUL) Estimation

观察健康指标的变化趋势选择合适的衰退模型,这里使用的是指数衰退模型(Exponenential Degradation Models)。利用 predictRULupdate 方法对 RUL 进行预测,并实时更新参数分布。

real-time RUL estimation

RUL Estimation Using RUL Estimator Models

使用 RUL 预测模型的工作流:

  1. 选择合适的 RUL 预测模型
  2. 利用历史数据训练该模型,使用 fit 命令
  3. 利用同种类型组件的历史数据预测待估计 RUL 的测试组件,使用 predictRUL 命令,同时还可以利用该测试组件已产生的数据对预测模型进行更新,使用 update 命令

RUL 预测模型家族:

rul_families

Performance Analysis

\alpha-\lambda 图用于预后性能分析(prognosis performance analysis),其中 \alpha 界限设为 20\%。估计的 RUL 介于真实 RUL 的 \alpha 界限之间的概率被计算作为模型的性能度量:

{\rm Pr}(r^*(t)-\alpha r^*(t)<r^*(t)+\alpha r^*(t)|\Theta(t))

其中 r(t)t 时刻估计的 RUL,r^*(t) 表示在 t 时刻真实的 RUL,\Theta(t)t 时刻估计的模型参数。

alpha-lambda plot
alpha20 probability

matlab 相关方法

编程建模

编程建模基础知识

  • 加载模型
    • load_system(<modelname>)
  • 创建模型并指定参数设置
    • new_model(<modelname>)
    • set_param(<modelname>, <Variable>, <Value>)
  • 打开模型时通过编程方式加载变量
    • set_param(<modelname>, 'PreloadFcn', <variable=value>)
  • 以编程方式添加和连接模块
    • add_block
    • add_line
    • delete_line
    • ...
  • 通过编程方式命名信号
  • 自动排列模型布局
    • Simulink.BlockDiagram.arrangeSystem
    • Simulink.BlockDiagram.routeLine
  • 在多个窗口中打开同一个模型
    • open_system(<modelname>, 'window')
  • 获取 Simulink 标识符
    • Simulink.ID.getSID(<model/block>)
  • 以编程方式指定颜色

控制仿真状态:

set_param(<modelname>, 'SimulationCommand', <command>)

<command> 可以是 startpausecontinuestop

如果使用 start 参数启动仿真,则必须使用 stop 参数来停止仿真。

<command> 还可以是:

  • update:在仿真运行时动态更新以更改的工作区变量
  • WriteDataLogs:将所有数据记录变量写入基础工作区

检查仿真的状态:

get_param(<modelname>, 'SimulationStatus')

将返回 stoppedinitialzingrunningpausedcompiledupdatingterminatingexternal

常用 matlab 特性

对于大数据,防止数据溢出内存,可以使用 tall 类型,推迟运算,使用 gather 函数进行运算获取结果。具体参见:Deferred Evaluation of Tall Arrays

timer:定时器。

生成和使用模拟数据集合

Generate and Use Simulated Data Ensemble

Manage System Data

载入模型

mdl = 'TransmissionCasingSimplified';
open_system(mdl)

生成模拟数据集合

toothFaultValues  = -2:0.5:0; % 5 ToothFaultGain values

% 设置多组仿真
for ct = numel(toothFaultValues):-1:1
    tmp = Simulink.SimulationInput(mdl);
    tmp = setVariable(tmp,'ToothFaultGain',toothFaultValues(ct));
    simin(ct) = tmp;
end

mkdir Data
location = fullfile(pwd,'Data');
[status,E] = generateSimulationEnsemble(simin,location);

模拟数据集合存储

ensemble = simulationEnsembleDatastore(location)

% ensemble.DataVariables
% ensemble.SelectedVariables

读取数据

ensemble.SelectedVariables = ["Vibration";"SimulationInput"];
data1 = read(ensemble)
% data1=1×2 table
%         Vibration               SimulationInput
%     _________________    ______________________________
%
%     {581x1 timetable}    {1x1 Simulink.SimulationInput}

data2 = read(ensemble)
% data2=1×2 table
%         Vibration               SimulationInput
%     _________________    ______________________________
%
%     {594x1 timetable}    {1x1 Simulink.SimulationInput}

% 可以设置一次性读取数据的大小
ensemble.ReadSize = 2;

ensemble.SelectedVariables = ["Vibration";"ToothFault"];
data3 = read(ensemble)

% data3=2×2 table
%         Vibration        ToothFault
%     _________________    __________
%
%     {581x1 timetable}      false
%     {594x1 timetable}      false

read(<ensemble>) 函数类似于 Python 中的 next,模拟数据集合相当于 Pyhon 中的生成器。

可通过 reset(<ensemble>) 来将整体数据置于未读状态,从而能够从头读取数据。

追加集合成员数据

reset(ensemble);
sT = false;
while hasdata(ensemble)
    data = read(ensemble);
    SimInputVars = data.SimulationInput{1}.Variables;
    TFGain = SimInputVars.Value;
    sT = (abs(TFGain) < 0.1);
    writeToLastMemberRead(ensemble,'ToothFault',sT);
end
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342