exponenta event banner

generateSimulationEnsemble

Создание данных ансамбля с помощью модели Simulink

Описание

[status,E] = generateSimulationEnsemble(simin) генерирует данные для имитационного ансамбля путем запуска модели Simulink ®, указанной вsimin. Этот входной аргумент является вектором Simulink.SimulationInput объекты, которые также задают другие параметры для перехода от моделирования к моделированию с целью создания ансамбля. Функция записывает файлы журнала данных моделирования в текущую папку. Каждый файл содержит соответствующий Simulink.SimulationInput и все переменные, которые модель сконфигурирована для регистрации для моделирования. Выходные аргументы указывают, генерируют ли какие-либо моделирования ошибки и возвращают ли такие ошибки. Использовать simulationEnsembleDatastore создание хранилища данных ансамбля для взаимодействия с моделируемыми данными.

Общие сведения об ансамблях данных см. в разделе Ансамбли данных для контроля состояния и предиктивного обслуживания.

пример

[status,E] = generateSimulationEnsemble(simin,location) также указывает путь к расположению, в котором будут храниться результаты моделирования.

[status,E] = generateSimulationEnsemble(simin,location,Name,Value) использует дополнительные параметры, указанные одним или несколькими Name,Value аргументы пары.

Примеры

свернуть все

Создание хранилища данных имитационного ансамбля, представляющего машину, работающую в условиях отказа, путем моделирования модели машины Simulink ® с изменением параметра отказа.

Загрузите модель Simulink. Эта модель является упрощенной версией модели коробки передач, описанной в разделе Использование Simulink для генерации данных о неисправностях. В этом примере моделируется только один режим отказа - отказ зубчатого колеса.

mdl = 'TransmissionCasingSimplified';
open_system(mdl)

Неисправность зубьев зубьев моделируется как нарушение в Gear Tooth fault подсистема. Величина возмущения контролируется переменной модели ToothFaultGain, где ToothFaultGain = 0 соответствует отсутствию отказа зуба зуба (исправная работа). Для генерации совокупности данных об отказах используется generateSimulationEnsemble для моделирования модели при различных значениях ToothFaultGain, в диапазоне от -2 до нуля. Эта функция использует массив Simulink.SimulationInput объекты для настройки модели Simulink для каждого участника ансамбля. Каждое моделирование генерирует отдельного члена ансамбля в собственном файле данных. Создать такой массив и использовать setVariable назначение значения коэффициента усиления при отказе зуба для каждого прогона.

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

for ct = numel(toothFaultValues):-1:1
    simin(ct) = Simulink.SimulationInput(mdl);
    simin(ct) = setVariable(simin(ct),'ToothFaultGain',toothFaultValues(ct));
end

В этом примере модель уже сконфигурирована для регистрации определенных значений сигнала. Vibration и Tacho (см. раздел Экспорт данных сигнала с использованием регистрации сигнала (Simulink)). generateSimulationEnsemble далее конфигурирует модель следующим образом:

  • Сохранение зарегистрированных данных в файлы в указанной папке.

  • Используйте timetable формат регистрации сигналов.

  • Хранить каждый Simulink.SimulationInput объект в сохраненном файле с соответствующими записанными данными.

Укажите местоположение для созданных данных. Для этого примера сохраните данные в папке с именем Data в текущей папке. Индикатор status равно 1 (true) если все моделирования завершены без ошибок.

mkdir Data
location = fullfile(pwd,'Data');
[status,E] = generateSimulationEnsemble(simin,location);
[22-Apr-2021 20:12:51] Running simulations...
[22-Apr-2021 20:13:12] Completed 1 of 5 simulation runs
[22-Apr-2021 20:13:29] Completed 2 of 5 simulation runs
[22-Apr-2021 20:13:52] Completed 3 of 5 simulation runs
[22-Apr-2021 20:14:24] Completed 4 of 5 simulation runs
[22-Apr-2021 20:14:41] Completed 5 of 5 simulation runs

Внутри Data проверьте один из файлов. Каждый файл представляет собой MAT-файл, содержащий следующие переменные MATLAB ® :

  • SimulationInput- Simulink.SimulationInput , который использовался для настройки модели для генерации данных в файле. Это можно использовать для извлечения информации об условиях (например, неисправных или исправных), при которых выполнялось моделирование.

  • logsout - A Dataset объект, содержащий все данные, которые модель Simulink сконфигурирована для регистрации.

  • PMSignalLogName - имя переменной, содержащей записанные данные ('logsout' в этом примере). simulationEnsembleDatastore использует это имя для синтаксического анализа данных в файле.

  • SimulationMetadata - другая информация о моделировании, которое сгенерировало данные, зарегистрированные в файле.

Теперь можно создать хранилище данных ансамбля моделирования с использованием созданных данных. Получающееся simulationEnsembleDatastore объект указывает на сгенерированные данные. Объект перечисляет переменные данных в ансамбле, и по умолчанию для чтения выбираются все переменные. Осмотрите DataVariables и SelectedVariables свойства ансамбля для подтверждения этих обозначений.

ensemble = simulationEnsembleDatastore(location)
ensemble = 
  simulationEnsembleDatastore with properties:

           DataVariables: [4x1 string]
    IndependentVariables: [0x0 string]
      ConditionVariables: [0x0 string]
       SelectedVariables: [4x1 string]
                ReadSize: 1
              NumMembers: 5
          LastMemberRead: [0x0 string]
                   Files: [5x1 string]

ensemble.DataVariables
ans = 4x1 string
    "SimulationInput"
    "SimulationMetadata"
    "Tacho"
    "Vibration"

ensemble.SelectedVariables
ans = 4x1 string
    "SimulationInput"
    "SimulationMetadata"
    "Tacho"
    "Vibration"

Теперь вы можете использовать ensemble для чтения и анализа сгенерированных данных в хранилище данных ансамбля. Посмотрите simulationEnsembleDatastore для получения дополнительной информации.

Входные аргументы

свернуть все

Конфигурации моделирования, указанные как вектор Simulink.SimulationInput (Simulink) объекты. Конфигурации моделирования определяют параметры для каждого сформированного элемента ансамбля, такие как:

  • Запускаемая модель Simulink

  • Значения переменных модели

  • Параметры блока

  • Исходное состояние модели

Таким образом, например, можно создать вектор из Simulink.SimulationInput объекты, в которых все конфигурации моделирования идентичны, за исключением параметров, моделирующих наличие и серьезность неисправностей в системе. Затем можно использовать вектор для создания совокупности смоделированных данных, представляющих диапазон здоровых и неисправных рабочих условий.

Путь к папке для хранения данных моделирования, указанный как строка или символьный вектор. Если вы не предоставите location, функция использует текущую папку (путь, возвращенный pwd).

В указанной папке функция записывает один MAT-файл на моделирование. Каждый файл содержит следующие переменные:

  • SimulationInput- Simulink.SimulationInput , который использовался для настройки модели для создания данных в этом файле. Этот объект можно использовать для извлечения информации об условиях (например, неисправных или исправных), при которых выполнялось моделирование.

  • SimulationMetadata - Другая информация о моделировании, которое сгенерировало записанные данные в файле.

  • A Dataset объект, содержащий все данные о сигнале и состоянии, которые модель Simulink сконфигурирована для регистрации. По умолчанию эта переменная называется logsout, но имя конфигурируется в модели.

  • PMSignalLogName - имя переменной, содержащей записанные данные ('logsout' по умолчанию). simulationEnsembleDatastore использует это имя для синтаксического анализа данных в файле.

Дополнительные сведения о регистрации данных см. в разделе Экспорт данных сигнала с использованием регистрации сигнала (Simulink).

Пример: pwd + "\simResults"

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'UseParallel',true

Выполнять ли моделирование параллельно, определяемое как пара, разделенная запятыми, состоящая из 'UseParallel' и:

  • false - Не выполнять моделирование параллельно.

  • true - Параллельный пул используется для параллельного выполнения нескольких моделирований (требуется Toolbox™ параллельных вычислений).

Отображение хода моделирования в командном окне MATLAB ®, указанном как разделенная запятыми пара, состоящая из 'ShowProgress' и:

  • true - Отображение строки хода моделирования каждый раз при завершении отдельного прогона моделирования.

  • false - Не отображать ход моделирования.

Выходные аргументы

свернуть все

Состояние ошибки моделирования, возвращенное как логическое значение:

  • 1 (true), если все моделирования выполняются без ошибок

  • 0 (false) в противном случае

Ошибки моделирования, возвращаемые в виде массива структуры с полями:

  • 'SimulationInput'Simulink.SimulationInput для прогона моделирования, вызвавшего ошибку

  • 'ErrorDiagnostic' - Строка, содержащая ошибку

Расширенные возможности

Представлен в R2018a