Simulink.sdi.Run

Доступ к запущенным сигналам и метаданным

Описание

Simulink.sdi.Run объект содержит метаданные запуска и позволяет вам получать доступ к Simulink.sdi.Signal объекты, которые содержат данные и метаданные для сигналов в запуске. Можно также использовать Simulink.sdi.Run объект импортировать данные в Инспектора Данных моделирования из рабочей области или файла.

Создание

Инспектор Данных моделирования создает Simulink.sdi.Run объекты, когда вы импортируете данные или симулируете модель это данные логов. Можно получить доступ к Run объект в Инспекторе Данных моделирования три пути:

  • Когда необходимо получить доступ к запуску, который соответствует определенному ID запуска, используйте Simulink.sdi.getRun функция.

    Совет

    Используйте Simulink.sdi.getAllRunIDs функция, чтобы получить идентификаторы запуска для всех запусков в Инспекторе Данных моделирования.

  • Когда необходимо получить доступ к последний раз созданному запуску в Инспекторе Данных моделирования используйте Simulink.sdi.Run.getLatest функция.

  • Когда необходимо получить доступ к запуску, который соответствует происходящему или последний раз завершенной симуляции модели, используйте Simulink.sdi.getCurrentSimulationRun функция.

Можно также программно создать Simulink.sdi.Run объект импортировать данные в Инспектора Данных моделирования.

  • Создайте пустой запуск в Инспекторе Данных моделирования, использующем Simulink.sdi.Run.create функция.

  • Создайте пустой запуск в Инспекторе Данных моделирования или импортируйте данные в Инспектора Данных моделирования, использующего Simulink.sdi.createRun.

Совет

Используйте add функционируйте или Simulink.sdi.addToRun функция, чтобы импортировать данные в пустой Run объект.

Свойства

развернуть все

Это свойство доступно только для чтения.

Уникальная числовая идентификация для запуска, возвращенного как целое число.

Запустите имя в виде вектора символов или строки.

По умолчанию, Name свойство пусто, когда вы используете Simulink.sdi.Run.create функция, чтобы создать запуск.

Можно задать имя запуска, когда вы используете Simulink.sdi.createRun функция, чтобы создать запуск.

Когда вы создаете запуск путем симуляции модели, что данные логов, имя запуска сгенерировано согласно называющему запуск правилу в Инспекторе Данных моделирования. Можно изменить называющее запуск правило в Инспекторе Данных моделирования в пользовательском интерфейсе или при помощи Simulink.sdi.setRunNamingRule функция.

Пример: 'Run 1: vdp'

Описание запуска в виде вектора символов или строки. По умолчанию, Description isempty. Используйте Description свойство добавить примечания о значении данных в рамках запуска, как тест или условия симуляции раньше создавало данные.

Пример: 'Initial simulation'

Пометьте для получения дополнительной информации о запуске в виде вектора символов или строки. По умолчанию, Tag isempty. Можно использовать Tag свойство присоединить дополнительную информацию к Run объект. Например, вы могли использовать Tag свойство включать значения параметров использовало для симуляции, которая создала запуск в Run метаданные объекта.

Пример: 'Gain = 2'

Дата и время запуск была создана, возвращенная как datetime объект.

Пример: 07-Dec-2019 13:55:25

Типы данных: datetime

Это свойство доступно только для чтения.

Индекс запуска в Инспекторе Данных моделирования, когда запуск был создан, возвратился как целое число. RunIndex совпадает с номером запуска на имя запуска, когда вы используете индекс запуска в качестве части называющего запуск правила.

Если вы удаляете запуски от Инспектора Данных моделирования, значения RunIndex свойство не может совпадать с индексом ID запуска в векторе, возвращенном Simulink.sdi.getAllRunIDs функция.

Это свойство доступно только для чтения.

Количество сигналов в запуске, возвращенном как целое число.

Имя модели, симулированной, чтобы создать запуск, возвратилось как вектор символов. Model свойство пусто для запусков, созданных путем импортирования данных в Инспектора Данных моделирования.

Режим Simulation использовал в симуляции, которая создала запуск, возвращенный как вектор символов. SimMode свойство пусто для запусков, созданных путем импортирования данных в Инспектора Данных моделирования.

Первый момент времени, совместно использованный всеми сигналами в запуске, возвращенном как скаляр.

Последний момент времени, совместно использованный всеми сигналами в запуске, возвращенном как скаляр.

Версия Simulink® используемый для симуляции, которая создала запуск, возвращенный как вектор символов. SLVersion свойство пусто для запусков, созданных путем импортирования данных в Инспектора Данных моделирования.

Версия модели, которая была симулирована, чтобы создать запуск, возвратилась как вектор символов. Версия модели хранится в ее свойствах модели. ModelVersion свойство пусто для запусков, созданных путем импортирования данных в Инспектора Данных моделирования.

Системная учетная запись раньше выполняла симуляцию, которая создала запуск, возвращенный как вектор символов. UserID свойство пусто для запусков, созданных путем импортирования данных в Инспектора Данных моделирования.

Имя машины раньше выполняло симуляцию, которая создала запуск, возвращенный как вектор символов. MachineName свойство пусто для запусков, созданных путем импортирования данных в Инспектора Данных моделирования.

Операционная система на машине, используемой, чтобы выполнить симуляцию, возвратилась как вектор символов. Platform свойство пусто для запусков, которые не соответствуют симуляции.

Пример: 'PCWIN64'

Имя задачи симуляции, которая соответствует запуску, возвратилось как вектор символов. TaskName свойство пусто, если запуск не был создан с помощью рабочих Parallel Computing Toolbox™.

Тип решателя использовал в симуляции, которая создала запуск, возвращенный как 'Variable-Step' или 'Fixed-Step'. SolverType свойство пусто для запусков, созданных путем импортирования данных в Инспектора Данных моделирования.

Имя решателя использовало в симуляции, которая создала запуск, возвращенный как вектор символов. SolverName свойство пусто для запусков, созданных путем импортирования данных в Инспектора Данных моделирования.

Пример: ode45

Размер шага, используемый решателем во время симуляции, возвращенной как вектор символов. Если симуляция использовала решатель фиксированного шага, SolverStepSize свойство указывает на фиксированный размер шага, используемый в симуляции. Если симуляция использовала решатель переменного шага, SolverStepSize свойство указывает на максимальный размер шага, используемый в симуляции.

Пример: '0.4'

Состояние Simulation, возвращенное как вектор символов. Когда симуляция запускается, Status свойством является 'Running'. Когда симуляция приостановлена или завершается, Status свойство принимает значение от StopEvent поле Simulink.SimulationMetadata объект StopEvent свойство. StopEvent свойство имеет одно из этих значений:

  • ReachedStopTime — Симуляция завершается без ошибок, о которых сообщают, не включая ошибки, о которых сообщают в StopFcn коллбэк, который выполняется после симуляции, останавливается.

  • ModelStop — Блок или решатель остановили симуляцию перед временем остановки симуляции.

  • StopCommand — Нажатие кнопки Stop или set_param вызов функции закончил симуляцию.

  • DiagnosticError — Ошибка, о которой сообщают, закончила симуляцию.

  • KeyboardControlCCtrl+C запись клавиатуры закончила симуляцию.

  • PauseCommand — Нажатие кнопки Pause или set_param вызов функции приостановил симуляцию.

  • ConditionalPause — Условная точка останова приостановила симуляцию.

  • PauseTime — Заданное время паузы приостановило симуляцию.

  • StepForward — Симуляция, приостановленная после того, чтобы выходить вперед при продвижении посредством симуляции.

  • StepBackward — Симуляция, приостановленная после продвижения назад при продвижении посредством симуляции.

  • TimeOut — Симуляция, остановленная после времени выполнения симуляции, превысила заданное использование времени тайм-аута 'TimeOut' пара "имя-значение" для sim функция.

Блокируйтесь, который выпустил событие остановки, которое остановило симуляцию, возвращенную как Simulink.SimulationData.BlockPath объект.

Переведенное описание остановки симуляции, возвращенной как вектор символов. StopEventDescription включает описание события остановки и связанного времени симуляции, если применимо. StopEventDescription свойство принимает свое значение от StopEventDescription поле Simulink.SimulationMetadata объект ExecutionInfo свойство.

Пример: 'Pause command issued at time 100'

Ошибки, которые произошли в процессе моделирования, возвратились как вектор символов.

Предупреждения, которые произошли в процессе моделирования, возвратились как вектор символов.

Время, требуемое инициализировать модель для симуляции, которая создала запуск, возвратилось как двойное. ModelInitializationTime свойство пусто для запусков, созданных путем импортирования данных в Инспектора Данных моделирования.

Время выполнения для симуляции, которая создала запуск, возвратилось как двойное. ModelExecutionTime свойство пусто для запусков, созданных путем импортирования данных в Инспектора Данных моделирования.

Время, чтобы отключить симуляцию, которая создала запуск, возвратилось как двойное. ModelTerminationTime свойство пусто для запусков, созданных путем импортирования данных в Инспектора Данных моделирования.

Общее время симуляции для симуляции, которая создала запуск, возвратилось как двойное. ModelTotalElapsedTime свойство пусто для запусков, созданных путем импортирования данных в Инспектора Данных моделирования.

Заданная пользователями строка, которая соответствует симуляции, возвратилась как вектор символов. Часто, UserString предоставляет краткое описание симуляции. Вы задаете UserString для симуляции в Simulink.SimulationInput объект для симуляции.

Функции объекта

addДобавьте сигналы в Simulink.sdi.Run объект
exportЭкспорт запущен к базовому рабочему пространству или файлу
getAllSignalIDsПолучите все идентификаторы сигнала для сигналов в Simulink.sdi.Run объект
getAllSignalsПолучите все сигналы в Simulink.sdi.Run объект
getDatasetRefСоздайте Simulink.sdi.DatasetRef object для запуска
getSignalByIndexПолучите сигнал в Simulink.sdi.Run объект индексом
getSignalIDByIndexПолучите ID сигнала для сигнала в заданном индексе в Simulink.sdi.Run объект
getSignalIDsByNameПолучите идентификаторы сигнала для сигналов в Simulink.sdi.Run объект с помощью имени сигнала
getSignalsByNameДоступ к сигналам в Simulink.sdi.Run объект с помощью имени сигнала
isValidSignalIDПроверяйте, соответствует ли ID сигнала сигналу в Simulink.sdi.Run объект

Примеры

свернуть все

Этот пример демонстрирует, как получить доступ к Simulink.sdi.Run объект для Инспектора Данных моделирования, запущенного созданный путем логгирования сигналов. От Simulink.sdi.Run объект можно получить Simulink.sdi.Signal объекты, которые содержат регистрируемые данные сигнала и метаданные. Можно использовать Signal объекты и plotOnSubPlot функция, чтобы отобразить данные на графике в Инспекторе Данных моделирования.

Создайте запущенную симуляцию и доступ к Run Объект

ex_vdp модель регистрирует два сигнала. Чтобы создать симуляцию, запущенную содержащий записанные данные, симулируйте модель.

sim('ex_vdp');

Инспектор Данных моделирования отслеживает запуски путем присвоения уникального числового ID запуска каждому запуску, созданному симуляцией, импортирования данных или открытия сеанса. Чтобы получить доступ к объекту запуска для симуляции, вы только выполнили, используйте Simulink.sdi.getAllRunIDs функционируйте и возьмите последний ID запуска в возвращенном векторе.

runIDs = Simulink.sdi.getAllRunIDs;
runID = runIDs(end);

Если у вас есть ID запуска для запуска, можно использовать Simulink.sdi.getRun функция, чтобы получить Simulink.sdi.Run объект, который соответствует запуску. Можно использовать Run возразите, чтобы проверять метаданные, сопоставленные с запуском, включая количество сигналов в запуске.

vdpRun = Simulink.sdi.getRun(runID);

vdpRun.SignalCount
ans = int32
    2

Отобразите данные на графике Используя Signal Объекты

Используйте getSignalByIndex функционируйте, чтобы получить доступ к сигналам от Run объект, fuelRun.

signal1 = getSignalByIndex(vdpRun,1);
signal2 = getSignalByIndex(vdpRun,2);

Используйте Simulink.sdi.setSubPlotLayout функция, чтобы задать размещение 3 на 1.

Simulink.sdi.setSubPlotLayout(2,1)

Прежде, чем отобразить данные на графике, используйте Simulink.sdi.clearAllSubPlots функционируйте, чтобы очистить любые данные, которые уже отображены на графике.

Simulink.sdi.clearAllSubPlots

Постройте один сигнал на каждом подграфике. Чтобы построить сигналы на первом подграфике, можно установить checked свойство для сигнала. Чтобы построить сигналы на подграфиках кроме первого подграфика, используйте plotOnSubPlot функция.

signal1.Checked = true;
plotOnSubPlot(signal2,2,1,true);

Просмотрите отображенные на графике данные

Чтобы просмотреть графики, вы только создали, откройте Инспектора Данных моделирования, использующего Simulink.sdi.view функция.

В этом примере показано, как создать запуск, добавьте данные в него, и затем просмотрите данные в Инспекторе Данных моделирования.

Создайте данные для запуска

Создайте timeseries объекты содержать данные для синуса сигнализируют и сигнал косинуса. Дайте каждый timeseries возразите описательному имени.

time = linspace(0,20,100);

sine_vals = sin(2*pi/5*time);
sine_ts = timeseries(sine_vals,time);
sine_ts.Name = 'Sine, T=5';

cos_vals = cos(2*pi/8*time);
cos_ts = timeseries(cos_vals,time);
cos_ts.Name = 'Cosine, T=8';

Создайте запуск и добавьте данные

Используйте Simulink.sdi.view функционируйте, чтобы открыть Инспектора Данных моделирования.

Simulink.sdi.view

Чтобы импортировать данные в Инспектора Данных моделирования из рабочей области, создайте Simulink.sdi.Run объект с помощью Simulink.sdi.Run.create функция. Добавьте информацию о запуске к его метаданным с помощью Name и Description свойства Run объект.

sinusoidsRun = Simulink.sdi.Run.create;
sinusoidsRun.Name = 'Sinusoids';
sinusoidsRun.Description = 'Sine and cosine signals with different frequencies';

Используйте add функция, чтобы добавить данные вы создали в рабочей области к пустому запуску.

add(sinusoidsRun,'vars',sine_ts,cos_ts);

Отобразите данные на графике в инспекторе данных моделирования

Используйте getSignalByIndex функционируйте, чтобы получить доступ к Simulink.sdi.Signal объекты, которые содержат данные сигнала. Можно использовать Simulink.sdi.Signal свойства объектов, чтобы задать стиль линии и цвет для сигнала и построить его в Инспекторе Данных моделирования. Задайте LineColor и LineDashed свойства для каждого сигнала.

sine_sig = getSignalByIndex(sinusoidsRun,1);
sine_sig.LineColor = [0 0 1];
sine_sig.LineDashed = '-.';

cos_sig = sinusoidsRun.getSignalByIndex(2);
cos_sig.LineColor = [0 1 0];
cos_sig.LineDashed = '--';

Используйте Simulink.sdi.setSubPlotLayout функция, чтобы сконфигурировать 2- 1 размещение подграфика в Инспекторе Данных моделирования область графического вывода. Затем используйте plotOnSubplot функционируйте, чтобы построить сигнал синуса на главном подграфике и сигнал косинуса на более низком подграфике.

Simulink.sdi.setSubPlotLayout(2,1);

plotOnSubPlot(sine_sig,1,1,true);
plotOnSubPlot(cos_sig,2,1,true);

Закройте инспектора данных моделирования и сохраните свои данные

Когда вы закончили смотреть нанесенные на график данные сигнала, можно закрыть Инспектора Данных моделирования и сохранить сеанс в файл MLDATX.

Simulink.sdi.close('sinusoids.mldatx')

Этот пример выполняет параллельные симуляции модели slexAircraftExample с различными входными постоянными времени фильтра и показывает несколько способов получить доступ к данным с помощью Инспектора Данных моделирования программируемый интерфейс.

Настройка

Запустите путем гарантирования, что Инспектор Данных моделирования пуст, и поддержка Parallel Computing Toolbox сконфигурирована, чтобы импортировать запуски, созданные на локальных рабочих автоматически. Затем создайте вектор из значений параметров фильтра, чтобы использовать в каждой симуляции.

% Make sure the Simulation Data Inspector is empty, and PCT support is
% enabled. 
Simulink.sdi.clear
Simulink.sdi.enablePCTSupport('local')

% Define Ts values
Ts_vals = [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1]; 

Инициализируйте параллельных рабочих

Используйте gcp, чтобы создать пул локальных рабочих, чтобы идти параллельно симуляции, если у вас уже нет того. В spmd блок кода, загрузите slexAircraftExample модель и выбор сигнализируют, чтобы регистрировать. Избегать проблем параллелизма данных с помощью sim в parfor, создайте временную директорию для каждого рабочего, чтобы использовать во время симуляций.

p = gcp;
Starting parallel pool (parpool) using the 'local' profile ...
connected to 4 workers.
spmd
    
    % Load system and select signals to log
    load_system('slexAircraftExample')
    Simulink.sdi.markSignalForStreaming('slexAircraftExample/Pilot', 1, 'on')
    Simulink.sdi.markSignalForStreaming('slexAircraftExample/Aircraft Dynamics Model', 4, 'on')
    
    % Create temporary directory on each worker
    workDir = pwd;
    addpath(workDir)
    tempDir = tempname;
    mkdir(tempDir)
    cd(tempDir)
    
end

Запуск параллельной симуляции

Используйте parfor запускать эти семь параллельных симуляций. Выберите значение для Ts для каждой симуляции, и изменяют значение Ts в рабочем пространстве модели. Затем запустите симуляцию и создайте массив Simulink.sdi.WorkerRun объекты получить доступ к данным с Инспектором Данных моделирования. После parfor цикл, используйте другой spmd сегмент, чтобы удалить временные директории от рабочих.

parfor index = 1:7
    
    % Select value for Ts
    Ts_val = Ts_vals(index);
    
    % Change the filter time constant and simulate
    modelWorkspace = get_param('slexAircraftExample','modelworkspace');
    modelWorkspace.assignin('Ts',Ts_val)
    sim('slexAircraftExample')
    
    % Create a worker run for each simulation
    workerRun(index) = Simulink.sdi.WorkerRun.getLatest
    
end

spmd
        
    % Remove temporary directories
    cd(workDir)
    rmdir(tempDir, 's')
    rmpath(workDir)
    
end

Получите объекты набора данных от параллельной симуляции Выход

getDataset метод помещает данные из WorkerRun в Dataset возразите, таким образом, можно легко постобработать.

ds(7) = Simulink.SimulationData.Dataset;

for a = 1:7
    ds(a) = workerRun(a).getDataset;
end
ds(1)
ans = 
Simulink.SimulationData.Dataset '' with 2 elements

                         Name        BlockPath                                
                         __________  ________________________________________ 
    1  [1x1 Signal]      alpha, rad  ...rcraftExample/Aircraft Dynamics Model
    2  [1x1 Signal]      Stick       slexAircraftExample/Pilot               

  - Use braces { } to access, modify, or add elements using index.

Получите объекты DatasetRef от параллельной симуляции Выход

Для больших рабочих процессов данных используйте getDatasetRef метод, чтобы сослаться на данные, сопоставленные с WorkerRun.

for b = 1:7
    datasetRef(b) = workerRun(b).getDatasetRef;
end

datasetRef(1)
ans = 
  DatasetRef with properties:

           Name: 'Run 3: slexAircraftExample'
            Run: [1×1 Simulink.sdi.Run]
    numElements: 2

Данные моделирования параллели процесса в инспекторе данных моделирования

Можно также создать локальный Run объекты анализировать и визуализировать ваши данные с помощью Инспектора Данных моделирования API. Этот пример добавляет тег, указывающий на значение постоянной времени фильтра для каждого запуска.

for c = 1:7
    
    Runs(c) = workerRun(c).getLocalRun;
    Ts_val_str = num2str(Ts_vals(c));
    desc = strcat('Ts = ', Ts_val_str);
    Runs(c).Description = desc;
    Runs(c).Name = strcat('slexAircraftExample run Ts=', Ts_val_str);
    
end

Очистите репозитории рабочего

Очистите файлы, используемые рабочими к свободному дисковое пространство для других симуляций, вы хотите работать на своем пуле рабочего.

Simulink.sdi.cleanupWorkerResources

Альтернативы

Можно просмотреть метаданные запуска и импортировать данные с помощью Инспектора Данных моделирования пользовательский интерфейс. Для получения дополнительной информации, Данные о виде на море в Инспекторе Данных моделирования.

Представленный в R2012b