Доступ к запущенным сигналам и метаданным
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
объект.
ID
— Запустите IDЭто свойство доступно только для чтения.
Уникальная числовая идентификация для запуска, возвращенного как целое число.
Name
— Запустите имяЗапустите имя в виде вектора символов или строки.
По умолчанию, Name
свойство пусто, когда вы используете Simulink.sdi.Run.create
функция, чтобы создать запуск.
Можно задать имя запуска, когда вы используете Simulink.sdi.createRun
функция, чтобы создать запуск.
Когда вы создаете запуск путем симуляции модели, что данные логов, имя запуска сгенерировано согласно называющему запуск правилу в Инспекторе Данных моделирования. Можно изменить называющее запуск правило в Инспекторе Данных моделирования в пользовательском интерфейсе или при помощи Simulink.sdi.setRunNamingRule
функция.
Пример: 'Run 1: vdp'
Description
— Запустите описаниеОписание запуска в виде вектора символов или строки. По умолчанию, Description
isempty. Используйте Description
свойство добавить примечания о значении данных в рамках запуска, как тест или условия симуляции раньше создавало данные.
Пример: 'Initial simulation'
Tag
— Информационный тегПометьте для получения дополнительной информации о запуске в виде вектора символов или строки. По умолчанию, Tag
isempty. Можно использовать Tag
свойство присоединить дополнительную информацию к Run
объект. Например, вы могли использовать Tag
свойство включать значения параметров использовало для симуляции, которая создала запуск в Run
метаданные объекта.
Пример: 'Gain = 2'
DateCreated
— Запустите метку времени созданияdatetime
объектДата и время запуск была создана, возвращенная как datetime
объект.
Пример: 07-Dec-2019 13:55:25
Типы данных: datetime
RunIndex
— Индекс запущенных в Инспекторе Данных моделированияЭто свойство доступно только для чтения.
Индекс запуска в Инспекторе Данных моделирования, когда запуск был создан, возвратился как целое число. RunIndex
совпадает с номером запуска на имя запуска, когда вы используете индекс запуска в качестве части называющего запуск правила.
Если вы удаляете запуски от Инспектора Данных моделирования, значения RunIndex
свойство не может совпадать с индексом ID запуска в векторе, возвращенном Simulink.sdi.getAllRunIDs
функция.
SignalCount
— Количество сигналов в запускеЭто свойство доступно только для чтения.
Количество сигналов в запуске, возвращенном как целое число.
Model
— Модель, симулированная, чтобы создать запускИмя модели, симулированной, чтобы создать запуск, возвратилось как вектор символов. Model
свойство пусто для запусков, созданных путем импортирования данных в Инспектора Данных моделирования.
SimMode
— Режим SimulationРежим Simulation использовал в симуляции, которая создала запуск, возвращенный как вектор символов. SimMode
свойство пусто для запусков, созданных путем импортирования данных в Инспектора Данных моделирования.
StartTime
— Запустите время началаПервый момент времени, совместно использованный всеми сигналами в запуске, возвращенном как скаляр.
StopTime
— Запустите время остановкиПоследний момент времени, совместно использованный всеми сигналами в запуске, возвращенном как скаляр.
SLVersion
— Версия программного обеспечения использовала для симуляции модели, которая создала запускВерсия Simulink® использовала для симуляции, которая создала запуск, возвращенный как вектор символов. SLVersion
свойство пусто для запусков, созданных путем импортирования данных в Инспектора Данных моделирования.
ModelVersion
— Версия модели, симулированной, чтобы создать запускВерсия модели, которая была симулирована, чтобы создать запуск, возвратилась как вектор символов. Версия модели хранится в ее свойствах модели. ModelVersion
свойство пусто для запусков, созданных путем импортирования данных в Инспектора Данных моделирования.
UserID
— Системная учетная записьСистемная учетная запись раньше выполняла симуляцию, которая создала запуск, возвращенный как вектор символов. UserID
свойство пусто для запусков, созданных путем импортирования данных в Инспектора Данных моделирования.
MachineName
— Имя машины используется для симуляцииИмя машины раньше выполняло симуляцию, которая создала запуск, возвращенный как вектор символов. MachineName
свойство пусто для запусков, созданных путем импортирования данных в Инспектора Данных моделирования.
Platform
— Операционная система на машине используется для симуляцииОперационная система на машине, используемой, чтобы выполнить симуляцию, возвратилась как вектор символов. Platform
свойство пусто для запусков, которые не соответствуют симуляции.
Пример: 'PCWIN64'
TaskName
— Имя задачиИмя задачи симуляции, которая соответствует запуску, возвратилось как вектор символов. TaskName
свойство пусто, если запуск не был создан с помощью рабочих Parallel Computing Toolbox™.
SolverType
— Тип решателя использовал в симуляции, которая создала запуск'Variable-Step'
| 'Fixed-Step'
Тип решателя использовал в симуляции, которая создала запуск, возвращенный как 'Variable-Step'
или 'Fixed-Step'
. SolverType
свойство пусто для запусков, созданных путем импортирования данных в Инспектора Данных моделирования.
SolverName
— Имя решателя использовало в симуляции, которая создала запускИмя решателя использовало в симуляции, которая создала запуск, возвращенный как вектор символов. SolverName
свойство пусто для запусков, созданных путем импортирования данных в Инспектора Данных моделирования.
Пример: ode45
SolverStepSize
— Размер шага решателя используется в симуляцииРазмер шага, используемый решателем во время симуляции, возвращенной как вектор символов. Если симуляция использовала решатель фиксированного шага, SolverStepSize
свойство указывает на фиксированный размер шага, используемый в симуляции. Если симуляция использовала решатель переменного шага, SolverStepSize
свойство указывает на максимальный размер шага, используемый в симуляции.
Пример: '0.4'
Status
— Состояние SimulationСостояние Simulation, возвращенное как вектор символов. Когда симуляция запускается, Status
свойством является 'Running'
. Когда симуляция приостановлена или завершается, Status
свойство принимает значение от StopEvent
поле Simulink.SimulationMetadata
объект StopEvent
свойство. StopEvent
свойство имеет одно из этих значений:
ReachedStopTime
— Симуляция завершается без ошибок, о которых сообщают, не включая ошибки, о которых сообщают в StopFcn
коллбэк, который выполняется после симуляции, останавливается.
ModelStop
— Блок или решатель остановили симуляцию перед временем остановки симуляции.
StopCommand
— Нажатие кнопки Stop или set_param
вызов функции закончил симуляцию.
DiagnosticError
— Ошибка, о которой сообщают, закончила симуляцию.
KeyboardControlC
— Ctrl+C
запись клавиатуры закончила симуляцию.
PauseCommand
— Нажатие кнопки Pause или 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 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
Можно просмотреть метаданные запуска и импортировать данные с помощью Инспектора Данных моделирования пользовательский интерфейс. Для получения дополнительной информации, Данные о виде на море в Инспекторе Данных моделирования.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.