exponenta event banner

Просмотр и доступ к данным регистрации сигналов

Данные регистрируемого сигнала можно просматривать во время моделирования, с помощью инспектора данных моделирования или для приостановленного или остановленного моделирования с помощью других интерфейсов визуализации. См. раздел Решение о том, как визуализировать данные моделирования.

Кроме того, можно получить доступ к данным регистрации сигналов программным способом с помощью команд MATLAB ®, как описано в этом разделе.

Совет

Если данные регистрации для сигнала, отмеченного в модели для регистрации сигнала, не отображаются, проверьте конфигурацию регистрации. Используйте селектор регистрации сигналов, чтобы включить регистрацию для сигнала, регистрация которого переопределена. Дополнительные сведения см. в разделах Просмотр конфигурации регистрации сигналов и переопределение настроек регистрации сигналов.

Объект регистрации сигналов

Simulink ® сохраняет данные регистрации сигналов в Simulink.SimulationData.Dataset объект, который является переменной рабочей области MATLAB. Имя переменной регистрации сигнала по умолчанию: logsout. Имя переменной можно изменить. Дополнительные сведения см. в разделе Указание имени для данных регистрации сигналов.

Можно указать, должны ли данные для отдельных сигналов в наборе данных использовать MATLAB. timeseries или timetable элементы. Установите параметр конфигурации Формат сигнала набора данных (для получения дополнительной информации см. Формат сигнала набора данных).

Более ранние версии, чем R2016a, также поддерживают ModelDataLogs формат. Дополнительные сведения см. в разделе Перенос сценариев, использующих устаревший API ModelDataLogs.

Программный доступ к данным

Вы можете использовать Simulink.SimulationData.Dataset API для программного доступа к данным регистрации сигналов. К доступу Dataset элементы объекта, используйте индексирование с фигурными скобками. Например, можно получить доступ к первому элементу topOut регистрация сигналов Dataset объект с использованием индекса 1. Этот пример основан на использовании настройки по умолчанию timeseries для элементов набора данных. Для получения подробной информации о timeseries и timetable форматировать данные, см. раздел Формат сигнала набора данных.

open_system(docpath(fullfile(docroot,'toolbox','simulink',...
'examples','ex_bus_logging')));
open_system(docpath(fullfile(docroot,'toolbox','simulink',...
'examples','ex_mdlref_counter_bus')));
sim('ex_bus_logging')
topOut
Simulink.SimulationData.Dataset 'topOut' with 4 elements

                         Name          BlockPath                                
                         ____________  ________________________________________ 
    1  [1x1 Signal]      COUNTERBUS    ex_bus_logging/COUNTERBUSCreator        
    2  [1x1 Signal]      OUTPUTBUS     ex_bus_logging/CounterA                 
    3  [1x1 Signal]      INCREMENTBUS  ex_bus_logging/IncrementBusCreator      
    4  [1x1 Signal]      inner_bus     ...erA|ex_mdlref_counter_bus/Bus Creator

  - Use braces { } to access, modify, or add elements using index.
element1 = topOut{1}
element1 = 

  Simulink.SimulationData.Signal
  Package: Simulink.SimulationData

  Properties:
              Name: 'COUNTERBUS'
    PropagatedName: ''
         BlockPath: [1x1 Simulink.SimulationData.BlockPath]
          PortType: 'outport'
         PortIndex: 1
            Values: [1x1 struct]


  Methods, Superclasses
element1.Values
ans = 

      data: [1x1 timeseries]
    limits: [1x1 struct]

Поиск определенных элементов в Dataset объект, используйте find способ. Чтобы вернуть имена Dataset элементы объекта, используйте getNames способ.

Совет

Вызов функции для каждого указанного MATLAB timeseries объект, вы можете использовать Simulink.SimulationData.forEachTimeseries функция. Например, можно использовать эту функцию, чтобы упростить повторную выборку каждого элемента структуры timeseries объекты, полученные путем регистрации сигнала шины.

Обработка пробелов и новых строк в записанных именах

В этом примере показаны три сигнала, иллюстрирующие способ регистрации имен сигналов:

  • Сигнал с именем, содержащим пробел

  • Сигнал с именем, содержащим новую строку

  • Безымянный сигнал, инициируемый блоком с именем, содержащим новую линию

Смоделировать модель, а затем просмотреть результаты регистрации сигналов в logsout переменная. Вы можете видеть, что имена в Dataset объект использует пробел, в котором имя сигнала содержало пробел, и новую строку, в которой имя содержало новую строку. Безымянный сигнал имеет пустой символьный массив в качестве имени.

logsout
logsout = 

Simulink.SimulationData.Dataset 'logsout' with 3 elements

                         Name  BlockPath                              
                         ____  ______________________________________ 
    1  [1x1 Signal]      x y   ex_signal_names_with_spaces/Sine Wave 
    2  [1x1 Signal]      a b   ex_signal_names_with_spaces/Sine Wave1
    3  [1x1 Signal]      ''    ex_signal_names_with_spaces/Sine Wave2

  - Use braces { } to access, modify, or add elements using index.

Можно получить доступ к сигналу с именем, которое содержит пробел по имени или по индексу. Нужно просто включить пробел в имя, которое вы передаете getElement функция. Для доступа к сигналу с именем, содержащим новую строку, используйте индекс.

>> logsout{2}
ans = 

  Simulink.SimulationData.Signal
  Package: Simulink.SimulationData

  Properties:
              Name: 'a↵b'
    PropagatedName: ''
         BlockPath: [1×1 Simulink.SimulationData.BlockPath]
          PortType: 'outport'
         PortIndex: 1
            Values: [1×1 timeseries]

Доступ к зарегистрированным сигнальным данным в ModelDataLogs Формат

Перед R2016a можно зарегистрировать сигналы в ModelDataLogs формат. Начиная с R2016a, нельзя регистрировать данные в ModelDataLogs формат. Регистрация сигналов использует Dataset формат.

Однако можно использовать данные, зарегистрированные в предыдущей версии, используя ModelDataLogs формат.

Дополнительные сведения см. в разделе Simulink.ModelDataLogs.

См. также

| | | | | | | |

Связанные темы