Доступ к сигналам запуска и метаданным
The Simulink.sdi.Run
объект содержит метаданные запуска и позволяет вам получить доступ к Simulink.sdi.Signal
объекты, которые содержат данные и метаданные для сигналов в запуске. Можно также использовать Simulink.sdi.Run
объект для импорта данных в Данные моделирования Inspector из рабочей области или файла.
Инспектор Данных моделирования создает Simulink.sdi.Run
объекты при импорте данных или моделировании модели, которая регистрирует данные. Вы можете получить доступ к Run
объект в Данные моделирования Inspector тремя способами:
Когда необходимо получить доступ к запуску, соответствующему определенному идентификатору запуска, используйте Simulink.sdi.getRun
функция.
Совет
Используйте Simulink.sdi.getAllRunIDs
функция для получения идентификаторов запуска для всех запусков в Данные моделирования Inspector.
Когда необходимо получить доступ к последним созданным запускам в Данные моделирования Inspector, используйте Simulink.sdi.Run.getLatest
функция.
Когда вы хотите получить доступ к запуску, который соответствует текущему или последнему завершению симуляции модели, используйте Simulink.sdi.getCurrentSimulationRun
функция.
Можно также программно создать Simulink.sdi.Run
объект для импорта данных в Данные моделирования Inspector.
Создайте пустой запуск в Данные моделирования Inspector с помощью Simulink.sdi.Run.create
функция.
Создайте пустой запуск в Данные моделирования Inspector или импортируйте данные в Данные моделирования Inspector с помощью Simulink.sdi.createRun
.
Совет
Используйте add
функцию или Simulink.sdi.addToRun
функция для импорта данных в пустой Run
объект.
ID
- Идентификатор выполненияЭто свойство доступно только для чтения.
Уникальная числовая идентификация для запуска, возвращенная как целое число.
Name
- Имя запускаИмя запуска, заданное как вектор символов или строка.
По умолчанию в Name
свойство пустое, когда вы используете Simulink.sdi.Run.create
функция для создания запуска.
Вы можете задать имя запуска, когда вы используете Simulink.sdi.createRun
функция для создания запуска.
Когда вы создаете запуск путем симуляции модели, которая регистрирует данные, имя запуска генерируется согласно правилу именования прогона в Данные моделирования Inspector. Вы можете изменить правило именования прогона в Данные моделирования Inspector в пользовательском интерфейсе или с помощью 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
- Индекс запуска в Simulation Data InspectorЭто свойство доступно только для чтения.
Индекс запуска в Данные моделирования Inspector, когда запуск был создан, возвращается как целое число. The RunIndex
соответствует номеру запуска в имени запуска, когда вы используете индекс запуска как часть правила именования прогона.
Если вы удаляете запуски из Данных моделирования Inspector, значение RunIndex
свойство может не совпадать с индексом идентификатора запуска в векторе, возвращенном Simulink.sdi.getAllRunIDs
функция.
SignalCount
- Количество сигналов в запускЭто свойство доступно только для чтения.
Количество сигналов в запуске, возвращаемое как целое число.
Model
- Модель, моделируемая для создания запускаИмя модели, смоделированной для создания запуска, возвращаемое как вектор символов. The Model
свойство пусто для запусков, созданных путем импорта данных в Данные моделирования Inspector.
SimMode
- Режим симуляцииРежим симуляции, используемый в симуляции, которая создала запуск, возвращается как вектор символов. The SimMode
свойство пусто для запусков, созданных путем импорта данных в Данные моделирования Inspector.
StartTime
- Время запуска запускаПервая временная точка, разделяемый всеми сигналами в запуске, возвращается как скаляр.
StopTime
- Время остановки запускаПоследняя временная точка, разделяемый всеми сигналами в запуске, возвращается как скаляр.
SLVersion
- Версия программного обеспечения, используемая для симуляции модели, которая создала запускВерсия Simulink® используется для симуляции, которая создала запуск, возвращенный как вектор символов. The SLVersion
свойство пусто для запусков, созданных путем импорта данных в Данные моделирования Inspector.
ModelVersion
- Версия модели, моделируемая для создания запускаВерсия модели, которая была моделирована для создания запуска, возвращенная как вектор символов. Версия модели сохранена в свойствах модели. The ModelVersion
свойство пусто для запусков, созданных путем импорта данных в Данные моделирования Inspector.
UserID
- Системный счетСистемная учетная запись, используемая для выполнения симуляции, создавшего запуск, возвращенная как вектор символов. The UserID
свойство пусто для запусков, созданных путем импорта данных в Данные моделирования Inspector.
MachineName
- Имя машины, используемой для симуляцииИмя машины, используемой для выполнения симуляции, которая создала запуск, возвращенный как вектор символов. The MachineName
свойство пусто для запусков, созданных путем импорта данных в Данные моделирования Inspector.
Platform
- Операционная система на машине, используемая для симуляцииОперационная система на машине, используемой для выполнения симуляции, возвращается как вектор символов. The Platform
свойство пусто для запусков, которые не соответствуют симуляции.
Пример: 'PCWIN64'
TaskName
- Имя задачиИмя симуляции задачи, которая соответствует запуск, возвращаемое как вектор символов. The TaskName
свойство пустое, если запуск не был создан с использованием рабочих Parallel Computing Toolbox™.
SolverType
- Тип решателя, используемого в симуляции, который создал запуск'Variable-Step'
| 'Fixed-Step'
Тип решателя, используемого в симуляции, которая создала запуск, возвращенный как 'Variable-Step'
или 'Fixed-Step'
. The SolverType
свойство пусто для запусков, созданных путем импорта данных в Данные моделирования Inspector.
SolverName
- Имя решателя, используемого в симуляции, который создал запускИмя решателя, используемого в симуляции, которая создала запуск, возвращенное как вектор символов. The SolverName
свойство пусто для запусков, созданных путем импорта данных в Данные моделирования Inspector.
Пример: ode45
SolverStepSize
- Размер шага решателя, используемый в симуляцииРазмер шага, используемый решателем во время симуляции, возвращается как вектор символов. Если в симуляции использовался решатель с фиксированным шагом, SolverStepSize
свойство указывает фиксированный размер шага, используемый в симуляции. Если в симуляции использовался решатель с переменным шагом, SolverStepSize
свойство указывает максимальный размер шага, используемый в симуляции.
Пример: '0.4'
Status
- Состояние симуляцииСтатус симуляции, возвращенный как вектор символов. Когда симуляция выполняется, Status
свойство 'Running'
. Когда симуляция приостановлена или завершается, Status
свойство берёт значение из StopEvent
поле Simulink.SimulationMetadata
StopEvent объекта
свойство. The StopEvent
свойство имеет одно из следующих значений:
ReachedStopTime
- Симуляция завершена без сообщений об ошибках, не включая ошибки, сообщенные в StopFcn
коллбэк, который выполняется после остановки симуляции.
ModelStop
- Блок или решатель остановил симуляцию перед временем остановки симуляции.
StopCommand
- Нажмите кнопку Stop или set_param
вызов функции завершил симуляцию.
DiagnosticError
- Сообщенная ошибка завершила симуляцию.
KeyboardControlC
- A Ctrl+C
ввод клавиатуры завершил симуляцию.
PauseCommand
- Нажмите Pause кнопку или set_param
вызов функции приостановил симуляцию.
ConditionalPause
- Условная точка останова приостановила симуляцию.
PauseTime
- Указанное время паузы приостановило симуляцию.
StepForward
- Симуляция приостановилась после шага вперед во время шага симуляции.
StepBackward
- Симуляция приостановилась после шага назад во время шага симуляции.
TimeOut
- Симуляция остановлена после того, как время выполнения симуляции превысило время тайм-аута, заданное с помощью 'TimeOut'
пара "имя-значение" sim
функция.
StopEventSource
- Блок, выдавший событие остановкиSimulink.SimulationData.BlockPath
Блок, который выдал событие остановки, которое остановило симуляцию, вернулся как Simulink.SimulationData.BlockPath
объект.
StopEventDescription
- Переведенное описание остановки симуляцииПереведено описание остановки симуляции, возвращено как вектор символов. The StopEventDescription
включает описание события остановки и связанного времени симуляции, если применимо. The StopEventDescription
свойство берёт свое значение из StopEventDescription
поле Simulink.SimulationMetadata
ExecutionInfo объекта
свойство.
Пример: 'Pause command issued at time 100'
ExecutionErrors
- Ошибки, возникшие во время симуляцииОшибки, возникшие во время симуляции, возвращаются как вектор символов.
ExecutionWarnings
- Предупреждения, возникшие во время симуляцииПредупреждения, возникшие во время симуляции, возвращаются как вектор символов.
ModelInitializationTime
- Время инициализировать модель для симуляции, которая создала запускВремя, необходимое для инициализации модели для симуляции, которая создала запуск, возвращается как двойной. The ModelInitializationTime
свойство пусто для запусков, созданных путем импорта данных в Данные моделирования Inspector.
ModelExecutionTime
- Время выполнения для симуляции, которая создала запускВремя выполнения для симуляции, которая создала запуск, возвращается как double. The ModelExecutionTime
свойство пусто для запусков, созданных путем импорта данных в Данные моделирования Inspector.
ModelTerminationTime
- Время завершения симуляции, которая создала запускВремя завершения симуляции, создавшего запуск, возвращается как двойной. The ModelTerminationTime
свойство пусто для запусков, созданных путем импорта данных в Данные моделирования Inspector.
ModelTotalElapsedTime
- Общее время симуляции для симуляции, которая создала запускОбщее время симуляции для симуляции, которая создала запуск, возвращается как двойной. The ModelTotalElapsedTime
свойство пусто для запусков, созданных путем импорта данных в Данные моделирования Inspector.
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
объект для запуска Данные Моделирования Inspector, созданный с помощью сигналов регистрации. Из Simulink.sdi.Run
объект, который можно получить Simulink.sdi.Signal
объекты, которые содержат записанные в журнал данные о сигнале и метаданные. Можно использовать Signal
объекты и plotOnSubPlot
функция для построения графика данных в Данные моделирования Inspector.
Создайте прогон симуляции и получите доступ к Run
Объект
The 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);
Просмотр нанесенных на график данных
Чтобы просмотреть только что созданные графики, откройте Данные моделирования Inspector с помощью Simulink.sdi.view
функция.
В этом примере показов, как создать запуск, добавить к нему данные и затем просмотреть данные в Данные моделирования Inspector.
Создание данных для запуска
Создание 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
функция для открытия Данные Моделирования Inspector.
Simulink.sdi.view
Чтобы импортировать данные в Данные моделирования Inspector из рабочей области, создайте 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);
Постройте график данных в Данные моделирования Inspector
Используйте getSignalByIndex
функция для доступа к Simulink.sdi.Signal
объекты, которые содержат сигнальные данные. Можно использовать Simulink.sdi.Signal
свойства объекта, чтобы задать стиль линии и цвет для сигнала и построить его в Данные моделирования Inspector. Задайте 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
-by- 1
subplot размещения в области построения графиков Данных моделирования Inspector. Затем используйте plotOnSubplot
функция для построения графика синусоидального сигнала на верхней подграфике и косинусоидального сигнала на нижней подграфике.
Simulink.sdi.setSubPlotLayout(2,1); plotOnSubPlot(sine_sig,1,1,true); plotOnSubPlot(cos_sig,2,1,true);
Закройте Данные моделирования Inspector и сохраните данные
После завершения проверки данных нанесенного на график сигнала можно закрыть Данные моделирования Inspector и сохранить сеанс в файле MLDATX.
Simulink.sdi.close('sinusoids.mldatx')
Этот пример выполняет параллельные симуляции модели slexAircraftExample
с различными временными константами входного фильтра и показывает несколько способов доступа к данным с помощью программного интерфейса Данные Моделирования Inspector.
Setup
Начните, убедившись, что Данные Моделирования Inspector пусты, а поддержка 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
объекты для доступа к данным с помощью Данных моделирования Inspector. После 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
Получите объекты набора данных из выхода параллельной симуляции
The 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
Обработайте данные параллельного моделирования в Данные моделирования Inspector
Можно также создать локальные Run
объекты для анализа и визуализации данных с помощью Данных моделирования Inspector 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
Можно просмотреть запущенные метаданные и импортировать данные с помощью пользовательского интерфейса Данные Моделирования Inspector. Для получения дополнительной информации смотрите Просмотр данных в Данные моделирования Inspector.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.