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

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

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

Совет

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

Объект журналирования сигнала

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

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

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

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

Можно использовать API Simulink.SimulationData.Dataset, чтобы получить доступ к данным регистрации сигнала программно. К элементам объекта 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 для данных регистрации сигнала.

logsout
Simulink.SimulationData.Dataset 'logsout' with 3 elements

                         Name  BlockPath            
                         ____  ____________________ 
    1  [1x1 Signal]      ''    untitled/Sine  Wave2
    2  [1x1 Signal]      x y   untitled/Sine Wave  
    3  [1x1 Signal]      x y   untitled/Sine Wave1 

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

Чтобы получить доступ к сигналу с пробелом или новой строкой, используйте индекс. Например, чтобы получить доступ к сигналу x y:

>> logsout.getElement{2}
ans = 

  Simulink.SimulationData.Signal
  Package: Simulink.SimulationData

  Properties:
              Name: 'x  y'
    PropagatedName: ''
         BlockPath: [1x1 Simulink.SimulationData.BlockPath]
          PortType: 'outport'
         PortIndex: 1
            Values: [1x1 timeseries]

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

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

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

Для получения дополнительной информации смотрите Simulink.ModelDataLogs.

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

| | | | | | | |

Похожие темы

Была ли эта тема полезной?