Доступ к сигналам запуска и метаданным
Simulink.sdi.Run содержит метаданные выполнения и позволяет получить доступ к Simulink.sdi.Signal объекты, содержащие данные и метаданные для сигналов в прогоне. Также можно использовать Simulink.sdi.Run объект для импорта данных в инспектор данных моделирования из рабочей области или файла.
Инспектор данных моделирования создает Simulink.sdi.Run объекты при импорте данных или моделировании модели, регистрирующей данные. Вы можете получить доступ к Run объект в инспекторе данных моделирования тремя способами:
Если требуется получить доступ к прогону, соответствующему определенному идентификатору прогона, используйте 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 объект.
ID - Идентификатор запускаЭто свойство доступно только для чтения.
Уникальный числовой идентификатор для прогона, возвращаемый как целое число.
Name - Имя прогонаИмя запуска, указанное как символьный вектор или строка.
По умолчанию Name пустое свойство при использовании Simulink.sdi.Run.create для создания прогона.
Можно указать имя прогона при использовании Simulink.sdi.createRun для создания прогона.
При создании прогона путем моделирования модели, регистрирующей данные, имя прогона создается в соответствии с правилом именования прогона в инспекторе данных моделирования. Правило именования прогона можно изменить в инспекторе данных моделирования в интерфейсе пользователя или с помощью Simulink.sdi.setRunNamingRule функция.
Пример: 'Run 1: vdp'
Description - Описание прогонаОписание прогона, указанное как символьный вектор или строка. По умолчанию Description пуст. Используйте Description для добавления примечаний о значимости данных в ходе выполнения, например, о тестовых или расчетных условиях, используемых для создания данных.
Пример: 'Initial simulation'
Tag - Информационный тегТег для дополнительной информации о выполнении, указанный как символьный вектор или строка. По умолчанию Tag пуст. Вы можете использовать Tag для присоединения дополнительной информации к Run объект. Например, можно использовать Tag для включения значений параметров, используемых для моделирования, которое создало прогон в Run метаданные объекта.
Пример: 'Gain = 2'
DateCreated - Выполнить метку времени созданияdatetime объектДата и время создания прогона, возвращенного как datetime объект.
Пример: 07-Dec-2019 13:55:25
Типы данных: datetime
RunIndex - Индекс выполнения в инспекторе данных моделированияЭто свойство доступно только для чтения.
Индекс прогона в инспекторе данных моделирования при создании прогона, возвращаемый как целое число. RunIndex соответствует номеру прогона в имени прогона при использовании индекса прогона в качестве части правила именования прогона.
При удалении прогонов из инспектора расчетных данных значение RunIndex свойство может не соответствовать индексу идентификатора выполнения в векторе, возвращаемом Simulink.sdi.getAllRunIDs функция.
SignalCount - Количество сигналов в работеЭто свойство доступно только для чтения.
Количество сигналов в прогоне, возвращаемых в виде целого числа.
Model - Модель, смоделированная для создания прогонаИмя модели, моделируемой для создания прогона, возвращаемое в виде символьного вектора. Model пустое свойство для прогонов, созданных путем импорта данных в инспектор данных моделирования.
SimMode - Режим моделированияРежим моделирования, используемый при моделировании, в котором был создан прогон, возвращаемый как символьный вектор. SimMode пустое свойство для прогонов, созданных путем импорта данных в инспектор данных моделирования.
StartTime - Время запускаПервый момент времени, совместно используемый всеми сигналами в прогоне, возвращаемый как скаляр.
StopTime - Время остановки запускаПоследний момент времени, совместно используемый всеми сигналами в ходе выполнения, возвращен в виде скаляра.
SLVersion - Версия программного обеспечения, используемая для моделирования модели, создавшей запускВерсия Simulink ®, использованная для моделирования, создавшего прогон, возвращена в виде символьного вектора. SLVersion пустое свойство для прогонов, созданных путем импорта данных в инспектор данных моделирования.
ModelVersion - Версия модели, смоделированной для создания прогонаВерсия модели, которая была смоделирована для создания прогона, возвращенная в виде символьного вектора. Версия модели сохраняется в свойствах модели. ModelVersion пустое свойство для прогонов, созданных путем импорта данных в инспектор данных моделирования.
UserID - Учетная запись системыСистемная учетная запись, используемая для моделирования, в результате которого был создан прогон, возвращен в виде символьного вектора. UserID пустое свойство для прогонов, созданных путем импорта данных в инспектор данных моделирования.
MachineName - Наименование машины, используемой для моделированияИмя машины, использованной для выполнения моделирования, создавшего прогон, возвращаемое в виде символьного вектора. MachineName пустое свойство для прогонов, созданных путем импорта данных в инспектор данных моделирования.
Platform - Операционная система на компьютере, используемая для моделированияОперационная система на компьютере, используемом для моделирования, возвращается в виде символьного вектора. Platform пустое свойство для участков, не соответствующих моделированию.
Пример: 'PCWIN64'
TaskName - Имя задачиИмя задачи моделирования, соответствующее выполнению, возвращаемое в виде символьного вектора. TaskName пустое свойство, если прогон не был создан с использованием работников Toolbox™ параллельных вычислений.
SolverType - Тип решателя, используемого в моделировании, создавшем запуск'Variable-Step' | 'Fixed-Step'Тип решателя, использованного в моделировании, который создал прогон, возвращенный как 'Variable-Step' или 'Fixed-Step'. SolverType пустое свойство для прогонов, созданных путем импорта данных в инспектор данных моделирования.
SolverName - имя решателя, используемого в моделировании, создавшем запуск;Имя решателя, использованного в моделировании для создания прогона, возвращаемого в виде символьного вектора. SolverName пустое свойство для прогонов, созданных путем импорта данных в инспектор данных моделирования.
Пример: ode45
SolverStepSize - Размер шага решателя, используемый при моделированииРазмер шага, используемый решателем во время моделирования, возвращаемый как символьный вектор. Если при моделировании использовался решатель с фиксированным шагом, SolverStepSize свойство указывает фиксированный размер шага, используемый в моделировании. Если при моделировании использовался решатель с переменным шагом, SolverStepSize свойство указывает максимальный размер шага, используемый при моделировании.
Пример: '0.4'
Status - Состояние моделированияСтатус моделирования, возвращаемый как символьный вектор. Когда моделирование выполняется, Status свойство - 'Running'. Когда моделирование приостановлено или завершено, Status свойство принимает значение из StopEvent области Simulink.SimulationMetadata объект StopEvent собственность. StopEvent свойство имеет одно из следующих значений:
ReachedStopTime - Моделирование завершено без сообщений об ошибках, не включая ошибки, указанные в StopFcn обратный вызов, который выполняется после остановки моделирования.
ModelStop - Блок или решатель остановил моделирование перед временем остановки моделирования.
StopCommand - Нажмите кнопку Stop или set_param вызов функции завершил моделирование.
DiagnosticError - Сообщение об ошибке завершило моделирование.
KeyboardControlC - A Ctrl+C ввод с клавиатуры завершил моделирование.
PauseCommand - Кнопка паузы или set_param вызов функции приостановил моделирование.
ConditionalPause - Условная точка останова приостановила моделирование.
PauseTime - Указанное время паузы приостановило моделирование.
StepForward - Моделирование приостановлено после перехода вперед при переходе к моделированию.
StepBackward - Моделирование приостановлено после шага назад при переходе к моделированию.
TimeOut - Моделирование остановлено после того, как время выполнения моделирования превысило время ожидания, указанное с помощью 'TimeOut' пара имя-значение для sim функция.
StopEventSource - Блокировать выданное событие остановкиSimulink.SimulationData.BlockPathБлок, выдавший событие остановки, остановившее моделирование, возвращенный как Simulink.SimulationData.BlockPath объект.
StopEventDescription - Переведенное описание остановки моделированияПереведенное описание остановки моделирования, возвращаемое в виде символьного вектора. StopEventDescription содержит описание события остановки и связанное с ним время моделирования, если применимо. StopEventDescription свойство принимает значение из StopEventDescription области Simulink.SimulationMetadata объект ExecutionInfo собственность.
Пример: 'Pause command issued at time 100'
ExecutionErrors - Ошибки, возникшие во время моделированияОшибки, возникшие во время моделирования, возвращенные в виде символьного вектора.
ExecutionWarnings - Предупреждения, возникшие во время моделированияПредупреждения, возникшие во время моделирования, возвращенные в виде символьного вектора.
ModelInitializationTime - Время инициализации модели для моделирования, создавшего запускВремя, необходимое для инициализации модели для моделирования, создавшего прогон, возвращаемое как двойное. ModelInitializationTime пустое свойство для прогонов, созданных путем импорта данных в инспектор данных моделирования.
ModelExecutionTime - Время выполнения моделирования, создавшего прогонВремя выполнения моделирования, которое создало прогон, возвращенное как двойное. ModelExecutionTime пустое свойство для прогонов, созданных путем импорта данных в инспектор данных моделирования.
ModelTerminationTime - Время завершения моделирования, создавшего прогонВремя завершения моделирования, которое создало прогон, возвращенное как двойное. ModelTerminationTime пустое свойство для прогонов, созданных путем импорта данных в инспектор данных моделирования.
ModelTotalElapsedTime - Общее время моделирования для моделирования, создавшего прогонОбщее время моделирования, при котором был создан прогон, возвращенное как двойное. ModelTotalElapsedTime пустое свойство для прогонов, созданных путем импорта данных в инспектор данных моделирования.
UserString - Пользовательская строкаУказанная пользователем строка, соответствующая моделированию, возвращается в виде символьного вектора. Часто, UserString содержит краткое описание моделирования. Вы указываете UserString для моделирования в Simulink.SimulationInput объект для моделирования.
add | Добавление сигналов к Simulink.sdi.Run объект |
export | Экспорт выполнения в базовое рабочее пространство или файл |
getAllSignalIDs | Получение всех идентификаторов сигналов в Simulink.sdi.Run объект |
getAllSignals | Получить все сигналы в Simulink.sdi.Run объект |
getDatasetRef | Создание объекта Simulink.sdi.DatasetRef для прогона |
getSignalByIndex | Получить сигнал в Simulink.sdi.Run объект по индексу |
getSignalIDByIndex | Получить идентификатор сигнала для сигнала с заданным индексом в Simulink.sdi.Run объект |
getSignalIDsByName | Получение идентификаторов сигналов внутри Simulink.sdi.Run объект с использованием имени сигнала |
getSignalsByName | Сигналы доступа в Simulink.sdi.Run объект с использованием имени сигнала |
isValidSignalID | Проверьте, соответствует ли идентификатор сигнала сигналу в Simulink.sdi.Run объект |
В этом примере показано, как получить доступ к Simulink.sdi.Run для запуска инспектора данных моделирования, созданного с помощью сигналов регистрации. От Simulink.sdi.Run объект, который вы можете получить Simulink.sdi.Signal объекты, содержащие записанные данные сигнала и метаданные. Вы можете использовать Signal объекты и plotOnSubPlot для печати данных в инспекторе расчетных данных.
Создание прогона моделирования и доступ к Run Объект
ex_vdp модель регистрирует два сигнала. Чтобы создать прогон моделирования, содержащий записанные данные, смоделируйте модель.
sim('ex_vdp');Инспектор данных моделирования отслеживает выполнение, присваивая уникальный числовой идентификатор выполнения каждому выполнению, созданному путем моделирования, импорта данных или открытия сеанса. Для доступа к объекту прогона только что выполненного моделирования используйте Simulink.sdi.getAllRunIDs и возьмите идентификатор последнего прогона в возвращенном векторе.
runIDs = Simulink.sdi.getAllRunIDs; runID = runIDs(end);
После получения идентификатора прогона можно использовать 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 с различными временными константами входного фильтра и показывает несколько способов доступа к данным с помощью программного интерфейса Simulation Data Inspector.
Установка
Сначала убедитесь, что инспектор данных моделирования пуст, а поддержка панели инструментов параллельных вычислений настроена на автоматический импорт запусков, созданных на локальных рабочих. Затем создайте вектор значений параметров фильтра для использования в каждом моделировании.
% 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
Просмотреть метаданные запуска и импортировать данные можно с помощью пользовательского интерфейса инспектора данных моделирования. Дополнительные сведения см. в разделе Просмотр данных в инспекторе данных моделирования.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.