Регистрируйте сигналы в для каждого подсистемы

Подход, который вы используете для данных логов для сигнала в Для Каждой подсистемы, зависит от того, является ли сигнал 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');
logsout
Simulink.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}.Values
3×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}
  

Смотрите также

Блоки

Функции

Похожие темы