Анализ данных является основой любого мониторинга состояния и прогнозирующего технического обслуживания. Predictive Maintenance Toolbox™ обеспечивает инструменты под названием ensemble datastores для создания, маркировки и управления часто большие наборы комплексных данных, необходимые для прогнозирующего проекта алгоритма обслуживания.
Данные могут прибыть из измерений в системах с помощью датчиков, таких как акселерометры, манометры, термометры, высотомеры, вольтметры и тахометры. Например, у вас может быть доступ к результатам измерений от:
Операция нормальной системы
Система, действующая в дефектном условии
Пожизненная запись работы системы (данные run-to-failure)
Для проекта алгоритма можно также использовать симулированные данные, сгенерированные путем выполнения модели Simulink® системы при различной работе и условиях отказа.
Есть ли с помощью результатов измерений, сгенерированных данных или обоих, у вас часто много сигналов, передвигающихся на отрезок времени или несколько отрезков времени. У вас могут также быть сигналы от многих машин (например, измерения от 100 отдельных механизмов все произведенные к тем же техническим требованиям). И у вас могут быть данные, представляющие и здоровую операцию и условия отказа. В любом случае разработка алгоритмов для прогнозирующего обслуживания требует организации и анализа больших объемов данных при отслеживании системы и подготавливает данные, представляет.
Хранилища данных ансамбля могут помочь вам работать с такими данными, хранятся ли они локально или в удаленном месте, таком как "облачное" хранилище с помощью Amazon S3™ (Простой Сервис Устройства хранения данных), Устройство хранения данных Windows Azure® Blob и Hadoop® Distributed File System (HDFS™).
Основной модуль для организации и управления многоаспектные наборы данных в Predictive Maintenance Toolbox является ансамблем данных. ensemble является набором наборов данных, созданных путем измерения или симуляции системы при различных условиях.
Например, рассмотрите систему коробки передач передачи, в которой у вас есть акселерометр, чтобы измерить вибрацию и тахометр, чтобы измерить вращение вала механизма. Предположим, что вы запускаете механизм в течение пяти минут и записываете измеренные сигналы как функцию времени. Вы также записываете возраст механизма, измеренный в управляемых милях. Те измерения дают к следующему набору данных.
Теперь предположите, что у вас есть флот многих идентичных механизмов, и вы записываете данные от всех них. Выполнение так дает к семейству наборов данных.
Этим семейством наборов данных является ensemble, и каждой строкой в ансамбле является member ансамбля.
Члены в ансамбле связаны в этом, они содержат те же переменные данных. Например, в проиллюстрированном ансамбле, все члены включают те же четыре переменные: идентификатор механизма, вибрация и сигналы тахометра и возраст механизма. В том примере каждый член соответствует различной машине. Ваш ансамбль может также включать тот набор переменных данных, зарегистрированных от той же машины в разное время. Например, следующий рисунок показывает ансамбль, который включает несколько наборов данных от того же механизма, зарегистрированного как возрасты механизма.
На практике данные для каждого члена ансамбля обычно хранимы в отдельном файле данных. Таким образом, например, у вас может быть один файл, содержащий данные для механизма 01 на уровне 9 500 миль, другой файл, содержащий данные для механизма 01 на уровне 21 250 миль, и так далее.
Во многих случаях у вас нет действительных данных об отказе из вашей системы, или только ограниченных данных от системы в условиях отказа. Если у вас есть модель Simulink, которая аппроксимирует поведение фактической системы, можно сгенерировать ансамбль данных путем симуляции модели неоднократно при различных условиях и логгирования данных моделирования. Например, вы можете:
Варьируйтесь значения параметров, которые отражают присутствие или отсутствие отказа. Например, используйте очень низкоомное значение, чтобы смоделировать короткое замыкание.
Введение отказов сигнала. Дрейф датчика и воздействия в измеренном влиянии сигнала значения результатов измерений. Можно симулировать такое изменение путем добавления соответствующего сигнала в модель. Например, можно добавить смещение к датчику, чтобы представлять дрейф или смоделировать воздействие путем введения сигнала в некотором местоположении в модели.
Варьируйтесь системная динамика. Уравнения, которые управляют поведением компонента, могут измениться для нормальной и дефектной операции. В этом случае различная динамика может быть реализована как варианты того же компонента.
Например, предположите, что у вас есть модель Simulink, которая описывает систему коробки передач. Модель содержит параметр, который представляет дрейф в датчике вибрации. Вы симулируете эту модель в различных значениях дрейфа датчика и конфигурируете модель, чтобы регистрировать вибрацию и сигналы тахометра для каждой симуляции. Эти симуляции генерируют ансамбль, который покрывает область значений условий работы. Каждый член ансамбля соответствует одной симуляции и записывает те же переменные данных под определенным набором условий.
generateSimulationEnsemble
команда помогает вам сгенерировать такие наборы данных из модели, в которой можно симулировать условия отказа путем варьирования некоторого аспекта модели.
Переменные в вашем ансамбле служат различным целям, и соответственно могут быть сгруппированы в несколько типов:
'DataVariables' Основное содержание членов ансамбля, включая результаты измерений и производные данные, которые вы используете в анализе и разработке прогнозирующих алгоритмов обслуживания. Например, в проиллюстрированных ансамблях коробки передач, Vibration
и Tachometer
переменные данных. Переменные данных могут также включать полученные значения, такие как среднее значение сигнала или частота пиковой величины в спектре сигнала.
Independent variables — Переменные, которые идентифицируют или заказывают членам в ансамбле, таким как метки времени, номер операционных часов или идентификаторы машины. В ансамбле измеренных данных коробки передач, Age
независимая переменная.
Condition variables — Переменные, которые описывают условие отказа или условия работы члена ансамбля. Условные переменные могут записать присутствие или отсутствие состояния отказа или другие условия работы, такие как температура окружающей среды. В ансамбле симулированных данных коробки передач, SensorDrift
условная переменная. Условные переменные могут также быть полученными значениями, такими как одно скалярное значение, которое кодирует, несколько дают сбой и условия работы.
На практике ваши переменные данных, независимые переменные и условные переменные являются всеми отличными наборами переменных.
С Predictive Maintenance Toolbox вы справляетесь и взаимодействуете с данными ансамбля с помощью объектов ensemble datastore. В MATLAB® данные timeseries часто хранимы как вектор или timetable
. Другие данные могут храниться как скалярные значения (такие как возраст механизма), логические значения (такой как, присутствует ли отказ или не), строки (такие как идентификатор), или таблицы. Ваш ансамбль может содержать любой тип данных, который полезен, чтобы записать для вашего приложения. В ансамбле вы обычно храните данные для каждого члена в отдельном файле. Объекты datastore ансамбля помогают вам организовать, пометить и обработать данные ансамбля. То, какой datastore ансамбля возражают, что вы используете, зависит от того, работаете ли вы с результатами измерений по диску или генерируете симулированные данные из модели Simulink.
simulationEnsembleDatastore
объекты — Управляют данными, сгенерированными из модели Simulink с помощью generateSimulationEnsemble
.
fileEnsembleDatastore
объекты — Управляют любыми другими данными ансамбля, хранимыми на диске, таком как результаты измерений.
Объекты datastore ансамбля содержат информацию о данных, хранимых на диске, и позволяют вам взаимодействовать с данными. Вы делаете настолько использующие команды, такие как read
, который извлекает данные из ансамбля в рабочее пространство MATLAB и writeToLastMemberRead
, который записывает данные ансамблю.
Когда вы работаете с ансамблем, программное обеспечение отслеживает, которого члена ансамбля оно последний раз читало. Когда вы вызываете read
, программное обеспечение выбирает следующий член, который будет читать, и обновляет LastMemberRead
свойство ансамбля отразить тот член. Когда вы затем вызываете writeToLastMemberRead
, программное обеспечение пишет в тот член.
Например, рассмотрите ансамбль симулированных данных коробки передач. Когда вы генерируете этот ансамбль, использующий generateSimulationEnsemble
, данные из каждой запущенной симуляции регистрируются к отдельному файлу на диске. Вы затем создаете simulationEnsembleDatastore
возразите что точки против данных в тех файлах. Можно установить свойства объекта ансамбля разделить переменные на группы, такие как независимые переменные или условные переменные.
Предположим, что вы теперь считываете некоторые данные из объекта ансамбля, ensemble
.
data = read(ensemble);
В первый раз вы вызываете read
на ансамбле программное обеспечение назначает некоторый член ансамбля как первый член, который будет читать. Программное обеспечение читает выбранные переменные от того члена в рабочее пространство MATLAB в table
названный data
. (Выбранные переменные являются переменными, которые вы задаете в SelectedVariables
свойство ensemble
.) Обновления программного обеспечения свойство ensemble.LastMemberRead
с именем файла того члена.
Пока вы не вызываете read
снова, обозначение last-member-read остается с членом ансамбля, которому программное обеспечение присвоило его. Таким образом, например, предположите, что вы обрабатываете data
чтобы вычислить некоторую выведенную переменную, такую как частота пикового значения в вибрации сигнализируют о спектре, VibPeak
. Можно добавить полученное значение члену ансамбля, которому оно соответствует, который является все еще последним чтением члена. Для этого сначала расширьте список переменных данных в ensemble
включать новую переменную.
ensemble.DataVariables = [ensemble.DataVariables; "VibPeak"]
Эта операция эквивалентна добавлению нового столбца ансамблю, как показано на следующем рисунке. Новая переменная первоначально заполняется в каждом ансамбле отсутствующим значением. (См. missing
для получения дополнительной информации.
Теперь используйте writeToLastMemberRead
заполнить значение новой переменной для последнего чтения члена.
newdata = table(VibPeak,'VariableNames',{'VibPeak'}); writeToLastMemberRead(ensemble,newdata);
В ансамбле присутствует новое значение, и обозначение последнего чтения члена остается на том же члене.
В следующий раз вы вызываете read
на ансамбле это определяет следующий член, который будет читать и возвращает выбранные переменные от того члена. Обозначение последнего чтения члена переходит к тому члену.
hasdata
команда говорит вам, были ли все члены ансамбля считаны. reset
команда очищает обозначение "чтения" от всех членов, таких что следующий вызов read
работает с первым членом ансамбля. Операция сброса очищает LastMemberRead
свойство ансамбля, но это не изменяет другие свойства ансамбля, такие как DataVariables
или SelectedVariables
. Это также не изменяет данных, которые вы записали обратно ансамблю. Для примера, который показывает больше взаимодействий с ансамблем сгенерированных данных, смотрите, Генерируют и Смоделированный ансамбль данных Использования.
Несмотря на то, что предыдущее обсуждение использовало симулированный ансамбль в качестве примера, обозначение последнего чтения члена ведет себя тот же путь в ансамблях результатов измерений, которыми вы управляете с fileEnsembleDatastore
. Однако, когда вы работаете с результатами измерений, необходимо предоставить информацию, чтобы сказать read
и writeToLastMemberRead
управляет, как ваши данные хранятся и организованный на диске.
Вы делаете так путем установки свойств fileEnsembleDatastore
возразите против функций, что вы пишете. Установите ReadFcn
свойство к указателю функции, которая описывает, как считать переменные данных из файла данных. Когда вы вызываете read
, это использует эту функцию, чтобы получить доступ к следующему файлу ансамбля и считать из него переменные, заданные в SelectedVariables
свойство datastore ансамбля. Точно так же вы используете WriteToMemberFcn
свойство fileEnsembleDatastore
объект обеспечить функцию, которая описывает, как записать данные члену ансамбля.
Для примеров, которые показывают эти взаимодействия с ансамблем результатов измерений по диску, см.:
Ансамбли в Predictive Maintenance Toolbox являются специализированным видом datastore MATLAB (см. Начало работы с Datastore (MATLAB)). read
и writeToLastMemberRead
команды имеют поведение, которое характерно для хранилищ данных ансамбля. Кроме того, следующие команды datastore MATLAB работают с хранилищами данных ансамбля то же самое, как они делают с другими хранилищами данных MATLAB.
hasdata
— Определите, имеет ли datastore ансамбля члены, которые еще не были считаны.
reset
— Восстановите datastore ансамбля к состоянию, где никакие члены еще не были считаны. В этом состоянии нет никакого текущего элемента. Используйте эту команду, чтобы перечитать данные, которые вы уже считали из ансамбля.
tall
— Преобразуйте datastore ансамбля в длинную таблицу. (См. Длинные массивы для Данных, которые не помещаются в память, (MATLAB)).
progress
— Определите, какой процент datastore ансамбля был считан.
partition
— Разделите datastore ансамбля в несколько хранилищ данных ансамбля для параллельных вычислений. (Для хранилищ данных ансамбля используйте partition(ds,n,index)
синтаксис.
numpartitions
— Определите количество разделов datastore.
По умолчанию, read
команда возвращает данные от одного члена ансамбля за один раз. Чтобы обработать данные больше чем от одного члена ансамбля за один раз, установите ReadSize
из ансамбля datastore возражают против значения, больше, чем 1. Например, если вы устанавливаете ReadSize
к 3, затем каждый вызов read
возвращает таблицу с тремя строками и назначает три члена ансамбля как последнее чтение члена. Для получения дополнительной информации смотрите fileEnsembleDatastore
и simulationEnsembleDatastore
страницы с описанием.
Некоторые функции, такие как много функций статистического анализа, могут работать с данными в длинных таблицах, которые позволяют вам работать с данными, которые не помещаются в память, который поддерживается datastore. Можно преобразовать данные из datastore ансамбля в длинную таблицу для использования с такими аналитическими командами с помощью tall
команда.
При работе с большими данными ансамбля, такими как длинные сигналы timeseries, вы обычно обрабатываете их член членом в ансамбле, использующем read
и writeToLastMemberRead
. Вы обрабатываете данные, чтобы вычислить некоторую функцию данных, которые могут служить полезным индикатором состояния для того члена ансамбля.
Как правило, ваш индикатор состояния является скалярным значением или некоторым другим значением, которое занимает меньше места в памяти, чем исходный необработанный сигнал. Таким образом, если вы записали такие значения в свой datastore, можно использовать tall
и gather
извлекать индикаторы состояния в память для дальнейшей статистической обработки, такой столь же учебный классификатор.
Например, предположите, что каждый член вашего ансамбля содержит данные о вибрации timeseries. Для каждого члена вы считываете данные ансамбля и вычисляете индикатор состояния, который является скалярным значением, полученным на процесс анализа сигнала. Вы записываете полученное значение обратно члену. Предположим, что полученное значение находится в переменной ансамбля под названием Indicator
и метка, содержащая информацию о члене ансамбля (таком как условие отказа), находится в переменной под названием Label
. Чтобы выполнить последующий анализ на ансамбле, можно считать индикатор состояния и метку в память, не читая в больших данных о вибрации. Для этого установите SelectedVariables
свойство ансамбля к переменным вы хотите читать. Затем используйте tall
составлять длинную таблицу выбранных переменных и gather
считать значения в память.
ensemble.SelectedVariables = ["Indicator","Label"]; featureTable = tall(ensemble); featureTable = gather(featureTable);
Получившаяся переменная featureTable
обычная таблица, находящаяся в рабочем пространстве MATLAB. Можно обработать его с любой функцией, которая поддерживает тип данных table MATLAB.
Для примеров, которые иллюстрируют использование tall
и gather
чтобы управлять данными ансамбля для прогнозирующего анализа обслуживания, см.:
После организации ваших данных в ансамбле следующий шаг в прогнозирующем проекте алгоритма обслуживания должен предварительно обработать данные, чтобы убрать или преобразовать его. Затем вы обрабатываете данные далее, чтобы извлечь индикаторы состояния, которые являются функциями данных, которые можно использовать, чтобы различать здоровый от дефектной операции. Для получения дополнительной информации см.:
fileEnsembleDatastore
| generateSimulationEnsemble
| read
| simulationEnsembleDatastore