Подход, который вы используете для данных логов для сигнала в Для Каждой подсистемы, зависит от того, является ли сигнал a:
Сигнал нешины — Журнал непосредственно в Для Каждой подсистемы
Шина или массив сигнала шин — Использование один из этих подходов:
Используйте блок Bus Selector, чтобы выбрать сигналы, вы хотите регистрировать и отметить те сигналы для логгирования сигнала. Этот подход работает хорошо на многие модели.
Присоедините сигнал к блоку Outport и регистрируйте сигнал за пределами Для Каждой подсистемы. Используйте этот подход, когда это необходимо, чтобы регистрировать целый сигнал шины, и тот сигнал шины включает много сигналов элемента шины.
Примечание
Вы не можете регистрировать сигналы шины непосредственно в Для Каждой подсистемы.
Вы не можете регистрировать сигнал в модели, на которую ссылаются, которая является в Для Каждой подсистемы, если любое из этих условий существует:
Для Каждой подсистемы находится в симуляции модели в быстром режиме Accelerator.
Для Каждой подсистемы самой находится в модели, на которую ссылается блок Model в режиме Accelerator.
Данные для каждого регистрируемого сигнала в Для Каждой подсистемы сохранены в отдельном Dataset элемент как Simulink.SimulationData.Signal объект. Формат регистрируемых данных сигнала зависит от того, как вы устанавливаете параметр конфигурации Dataset signal format:
Если установкой является timeseries, затем каждый объект сигнала содержит массив MATLAB®
timeseries объекты. Массив сохраняет данные из различного Для Каждой итерации отдельными.
Если установкой является timetable, затем каждый объект сигнала содержит массив ячеек MATLAB timetable объекты. Размерности этого массива совпадают с количеством Для Каждого итерации. Например, если Для Каждой подсистемы имеет три итерации, то записанные данные имеют 3x1 массив timeseries или timetable объекты. Для вложенного Для Каждого подсистемы каждый слой вложения добавляет другую размерность в записанные данные.
Этот пример регистрирует сигнал во вложенном Для Каждой подсистемы.
Откройте ex_loginsideforeach_nested модель.
open_system(docpath(fullfile(docroot,'toolbox','simulink',... 'examples','ex_loginsideforeach_nested.slx')))

В Simulink® Редактор, откройте For Each Subsystem1 блокируйтесь, и в той подсистеме, откройте For Each Subsystem2 блок.

Симулируйте модель и исследуйте данные о регистрации сигнала на первую итерацию главной подсистемы и третью итерацию нижней подсистемы. 2x3
timeseries результаты двух итераций в первом Для Каждого уровня и трех итераций на втором (вложенном) уровне
sim('ex_loginsideforeach_nested'); logsout.get('nestedDelay')
ans =
Simulink.SimulationData.Signal
Package: Simulink.SimulationData
Properties:
struct with fields:
Name: 'nestedDelay'
PropagatedName: ''
BlockPath: [1×1 Simulink.SimulationData.BlockPath]
PortType: 'outport'
PortIndex: 1
Values: [2×3 timeseries]Возвратите значения nestedDelay объект.
logsout.get('nestedDelay').Values(1,3)timeseries
Common Properties:
Name: 'nestedDelay'
Time: [5x1 double]
TimeInfo: [1x1 tsdata.timemetadata]
Data: [1x1x5 double]
DataInfo: [1x1 tsdata.datametadata]Этот пример регистрирует два сигнала шины в Для Каждой подсистемы. Для одного сигнала шины вы используете блок Bus Selector и затем регистрируете каждый выбранный сигнал. Для другого сигнала шины вы используете блоки Outport и журнал за пределами Для Каждой подсистемы.
Откройте ex_for_each_log_bus модель.
open_system(docpath(fullfile(docroot,'toolbox','simulink',... 'examples','ex_for_each_log_bus.slx')))

В Редакторе Simulink откройте For Each Subsystem блок.

Регистрировать сигналы в limits соедините шиной сигнал, сигнал переходится с блоком Bus Selector, и каждый из сигналов элемента шины отмечен для логгирования сигнала.
Регистрировать целый COUNTERBUS сигнал, сигнал шины соединяется с блоком Outport. Выходной сигнал Для Каждой подсистемы отмечен для логгирования сигнала. Чтобы иметь сигнал шины пересекают контур подсистемы, блок Bus Creator, который создает COUNTERBUS сигнал имеет набор параметров Output data type к Bus: COUNTERBUS и флажок Output as nonvirtual bus устанавливается.
Симулируйте модель и исследуйте логгирование сигнала выход. Фокусируйтесь на одном из сигналов элемента шины, регистрируемых в Для Каждой подсистемы и на сигнале шины, регистрируемом за пределами Для Каждой подсистемы.
sim('ex_for_each_log_bus');
logsoutSimulink.SimulationData.Dataset 'logsout' with 3 elements
Name BlockPath
________________________ ________________________________________
1 [1x1 Signal] OutsideForEach ex_for_each_log_bus/For Each Subsystem
2 [1x1 Signal] <lower_saturation_limit> ...g_bus/For Each Subsystem/Bus Selector
3 [1x1 Signal] <upper_saturation_limit> ...g_bus/For Each Subsystem/Bus Selector
- Use braces { } to access, modify, or add elements using index.
Возвратите значения lower_saturation_limit объект.
logsout{2}.Values3×1 timeseries array with properties:
Events
Name
UserData
Data
DataInfo
Time
TimeInfo
Quality
QualityInfo
IsTimeFirst
TreatNaNasMissing
LengthВозвратите значения OutsideForEach объект.
logsout{1}.Values ans =
3×1 struct array with fields:
data
limitsЕсли Dataset форматом сигнала является timetable, затем выход является массивом ячеек timetable объекты. Например:
out = sim('ex_for_each_log_bus','DatasetSignalFormat','timetable'); out.logsout{2}.Values
ans =
3x1 cell array
{11x1 timetable}
{11x1 timetable}
{11x1 timetable}