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

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

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

Совет

Если вы не видите данные регистрации для сигнала, который вы пометили в модели для логгирования сигналов, проверьте строение регистрации. Используйте селектор регистрации сигналов, чтобы включить ведение журнала для сигнала, логгирование которого переопределено. Для получения дополнительной информации смотрите View the Signal Logging Configuration and Override Signal Logging Settings.

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

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

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

Релизы раньше, чем R2016a, также поддерживали ModelDataLogs формат. Для получения дополнительной информации смотрите Миграция скриптов, которые используют Legacy 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.

См. также

| | | | | | | |

Похожие темы