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

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

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

Совет

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

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

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

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

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

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

Можно использовать 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.

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

| | | | | | | |

Похожие темы