Анализ данных является сердцем любого мониторинга условия и прогнозирующей деятельности по обслуживанию. Predictive Maintenance Toolbox™ предоставляет инструменты, называемые ensemble datastores, для создания, маркировки и управления часто большими, комплексным данным наборами, необходимыми для прогнозирующих проектов алгоритма обслуживания.
Данные могут быть получены из измерений в системах с помощью датчиков, таких как акселерометры, давление измерители, термометры, высотомеры, вольтметры и тахометры. Например, вы можете иметь доступ к измеренным данным от:
Нормальная операция системы
Система, работающая в неисправном условии
Жизненная запись операции системы (run-to-failure данные)
Для проекта алгоритма можно также использовать моделируемые данные, сгенерированные при запуске Simulink® модель вашей системы в различных рабочих и отказных условиях.
Независимо от того, используете ли вы измеренные данные, сгенерированные данные или оба, у вас часто есть много сигналов, варьирующихся в течение временного интервала или нескольких временных интервалов. Вы также можете иметь сигналы от многих машин (для примера, измерения от 100 отдельных двигателей все изготовленные к тем же спецификациям). И у вас могут быть данные, представляющие как нормальную операцию, так и условия отказа. В любом случае, разработка алгоритмов прогнозирующего обслуживания требует организации и анализа больших объемов данных с одновременным отслеживанием систем и условий, которые данные представляют.
Ensemble datastores могут помочь вам работать с такими данными, будь то локально или в удаленном месте, таком как облачное хранилище с помощью Amazon S3™ (Simple Storage Service), Windows Azure® Хранилище больших двоичных объектов и Hadoop® Распределенная файловая система (HDFS™).
Основным модулем для организации и управления многогранными наборами данных в Predictive Maintenance Toolbox является ансамбль данных. ensemble является сбором наборов данных, созданным путем измерения или симуляции системы при меняющихся условиях.
Например, рассмотрим систему коробки передач, в которой у вас есть акселерометр для измерения вибрации и тахометр для измерения вращения вала двигателя. Предположим, что вы запускаете двигатель в течение пяти минут и записываете измеренные сигналы как функцию времени. Вы также записываете возраст двигателя, измеренный в милях. Эти измерения дают следующий набор данных.
Теперь предположим, что у вас есть парк из многих одинаковых двигателей, и вы записываете данные со всех из них. Это дает семейство наборов данных.
Это семейство наборов данных является ensemble, и каждая строка в ансамбле является member ансамбля.
Представители ансамбля связаны тем, что они содержат одни и те же переменные данных. Например, в проиллюстрированном ансамбле все представители включают те же четыре переменные: идентификатор двигателя, сигналы вибрации и тахометра и возраст двигателя. В этом примере каждый представитель соответствует другой машине. Ваш ансамбль может также включать этот набор переменных данных, записанных с той же машины в разное время. Например, следующий рисунок показывает ансамбль, который включает в себя несколько наборов данных из того же двигателя, записанного с возрастом двигателя.
На практике данные для каждого представителя ансамбля обычно хранятся в отдельном файле данных. Таким образом, например, у вас может быть один файл, содержащий данные для двигателя 01 на 9500 милях, другой файл, содержащий данные для двигателя 01 на 21250 милях и так далее.
Во многих случаях у вас нет реальных данных об отказе от вашей системы или только ограниченные данные от системы в условиях отказа. Если у вас есть модель Simulink, которая аппроксимирует поведение фактической системы, можно сгенерировать ансамбль данных, неоднократно симулируя модель при различных условиях и регистрируя данные моделирования. Для образца можно:
Измените значения параметров, которые отражают наличие или отсутствие отказа. Для примера используйте очень низкое значение сопротивления, чтобы смоделировать короткое замыкание.
Сбой инъекционного сигнала. Дрейф датчика и нарушений порядка в измеренном сигнале влияют на значения измеренных данных. Можно симулировать такие изменения, добавив соответствующий сигнал к модели. Для примера можно добавить смещение к датчику, чтобы представлять дрейф, или смоделировать нарушение порядка, вводя сигнал в некотором месте в модели.
Изменение динамики системы. Уравнения, которые управляют поведением компонента, могут измениться для нормальной и дефектной операции. В этом случае различная динамика может быть реализована как варианты одного и того же компонента.
Например, предположим, что у вас есть модель Simulink, которая описывает систему коробки передач. Модель содержит параметр, который представляет дрейф в датчике вибрации. Вы симулируете эту модель при разных значениях дрейфа датчика и конфигурируете модель, чтобы записать сигналы вибрации и тахометра для каждой симуляции. Эти симуляции генерируют ансамбль, который охватывает область значений условий работы. Каждый представитель ансамбля соответствует одной симуляции и записывает одни и те же переменные данных при определенном наборе условий.
generateSimulationEnsemble
команда помогает вам сгенерировать такие наборы данных из модели, в которой можно моделировать условия отказа путем изменения некоторого аспекта модели.
Переменные в вашем ансамбле служат разным целям, и соответственно могут быть сгруппированы в несколько типов:
Data variables - Основное содержимое представителей ансамбля, включая измеренные данные и полученные данные, которые вы используете для анализа и разработки прогнозирующих алгоритмов обслуживания. Для примера, в проиллюстрированных ансамблях коробки передач, Vibration
и Tachometer
являются переменными данных. Переменные данных могут также включать в себя выведенные значения, такие как среднее значение сигнала или частота пиковой величины в спектре сигнала.
Independent variables - переменные, которые идентифицируют или упорядочивают представителей ансамбля, такие как временные метки, количество часов работы или идентификаторы машин. В ансамбле измеренных данных коробки передач, Age
является независимой переменной.
Condition variables - Переменные, которые описывают условие отказа или рабочее условие представителя ансамбля. Переменные состояния могут регистрировать наличие или отсутствие состояния отказа или других условий работы, таких как температура окружающей среды. В ансамбле имитированных данных коробки передач, SensorDrift
является переменной условия. Переменные условия также могут быть производными от значений, таких как одно скалярное значение, которое кодирует множественный отказ и рабочие условия.
На практике ваши переменные данных, независимые переменные и переменные условия являются отдельными наборами переменных.
С помощью Predictive Maintenance Toolbox вы управляете и взаимодействуете с данными ансамбля с помощью ensemble datastore объектов. В MATLAB®данные timeseries часто хранятся в виде вектора или timetable
. Другие данные могут храниться в виде скалярных значений (таких как возраст двигателя), логических значений (таких как наличие отказа или нет), строк (таких как идентификатор) или таблиц. Ваш ансамбль может содержать любой тип данных, который полезно записать для вашего приложения. В ансамбле данные для каждого представителя обычно хранятся в отдельном файле. Объекты Ensemble datastore помогают вам организовывать, маркировать и обрабатывать данные ансамбля. Какой объект ensemble 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);
В ансамбле новое значение присутствует, а обозначение last- представителя read остается на том же представителе.
При следующем звонке read
в ансамбле он определяет следующий представителя, который будет считываться, и возвращает выбранные переменные от этого представителя. Обозначение last- представителя read переходит к этому представителю.
hasdata
команда сообщает, все ли представители ансамбля были прочитаны. reset
команда очищает обозначение «read» от всех представителей, так что следующий вызов для read
действует на первый представителя ансамбля. Операция сброса очищает LastMemberRead
свойство ансамбля, но оно не изменяет других свойств ансамбля, таких как DataVariables
или SelectedVariables
. Он также не меняет никаких данных, которые вы написали обратно в ансамбль. Пример, показывающий больше взаимодействий с ансамблем сгенерированных данных, см. в разделе «Генерация и использование смоделированного ансамбля данных».
Хотя в предыдущем обсуждении в качестве примера использовался моделируемый ансамбль, обозначение last- представителя read ведет себя так же в ансамблях измеренных данных, с которыми вы справляетесь fileEnsembleDatastore
. Однако, когда вы работаете с измеренными данными, вы должны предоставить информацию, чтобы сообщить read
и writeToLastMemberRead
командует, как ваши данные хранятся и организованы на диске.
Вы делаете это, задавая свойства fileEnsembleDatastore
объект функциям, которые вы пишете. Установите ReadFcn
свойство для указателя на функцию, которая описывает, как считать переменные данных из файла данных. Когда вы звоните read
, она использует эту функцию для доступа к следующему файлу ансамбля и для чтения из него переменных, заданных в SelectedVariables
свойство ансамбля datastore. Точно так же вы используете WriteToMemberFcn
свойство fileEnsembleDatastore
объект для предоставления функции, которая описывает, как записать данные в представитель ансамбля.
Для примеров, которые показывают эти взаимодействия с ансамблем измеренных данных на диске, смотрите:
Ensembles in Predictive Maintenance Toolbox являются специализированным видом datastore MATLAB (см. Начало работы с Datastore). read
и writeToLastMemberRead
команды имеют поведение, специфическое для ансамблевых хранилищ данных. Кроме того, следующие команды MATLAB datastore работают с ансамблевыми хранилищами данных так же, как и с другими хранилищами данных MATLAB.
hasdata
- Определить, есть ли у ансамбля datastore представители, которые еще не были прочитаны.
reset
- Восстановите ансамбль datastore в состоянии, где еще не было прочитываемы ни одних представителей. В этом состоянии нет текущего представителя. Используйте эту команду для перечитывания данных, уже прочитанных из ансамбля.
tall
- Преобразование ансамбля datastore в длинная таблица. (См. Раздел «Длинные массивы данных за пределами памяти»).
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. Вы можете обработать его с помощью любой функции, которая поддерживает тип данных таблицы MATLAB.
Для примеров, которые иллюстрируют использование tall
и gather
для манипулирования данными ансамбля для прогнозирующего анализа обслуживания смотрите:
После организации ваших данных в ансамбле, следующим шагом в проекте алгоритма прогнозирующего обслуживания является предварительная обработка данных для очистки или преобразования. Затем вы обрабатываете данные далее, чтобы извлечь индикаторы состояния, которые являются функциями данных, которые можно использовать, чтобы отличить исправность от дефектной операции. Для получения дополнительной информации смотрите:
fileEnsembleDatastore
| generateSimulationEnsemble
| read
| simulationEnsembleDatastore