Simulink.ModelDataLogs

Контейнер для журналов сигнальных данных модели

Описание

Примечание

The ModelDataLogs класс поддерживается для обратной совместимости. Начиная с R2016a, вы не можете войти данные в ModelDataLogs формат. Логгирование сигналов использует Dataset формат. В R2016a или более поздней версии, когда вы симулируете модель из более раннего релиза, которая использовала ModelDataLogs формат, модель использует Dataset формат для регистрации данных.

Можно преобразовать данные логгирования сигналов из ModelDataLogs на Dataset формат. Преобразование в Dataset формат может облегчить постобработку с другими записанными данными (для примера, записанных состояний), которые также могут использовать Dataset формат. Для получения дополнительной информации смотрите Преобразование записанных данных в формат набора данных.

Если у вас есть унаследованный код, который использует ModelDataLogs, вы можете столкнуться с ситуациями, которые требуют обновления вашего кода или модели. Для получения дополнительной информации об обновлении скриптов смотрите Миграция скриптов, которые используют Legacy ModelDataLogs API.

В релизах перед R2016a, когда Вы устанавливаете Configuration Parameters> Data Import/Export> Signal logging format к ModelDataLogsлоггирование данных создает одну или несколько Simulink.ModelDataLogs объекты, которые содержат записанные данные. Логгирование создает образец этого класса для верхней модели и для каждой модели, на которую ссылается верхняя модель, которая содержит записанные сигналы. The ModelDataLogs объект для верхней модели назначается переменной в базовом рабочем пространстве. Имя переменной задается параметром Configuration Parameters Data Import/export > Signal logging name >. Значение по умолчанию logsout.

A ModelDataLogs объект имеет переменное количество свойств. Первое свойство, Name, задает имя модели, сигнальные данные которой содержит объект, или, если модель является ссылочной моделью, имя блока Model, который ссылается на модель. Остальные свойства ссылаются на объекты, которые содержат данные о сигнале, записанные во время симуляции модели. Объектами могут быть образцы следующих типов объектов:

Имена свойств идентифицируют регистрируемые данные следующим образом:

  • Для журналов данных о сигнале имя сигнала

  • Для подсистемы или контейнера журнала модели, имя подсистемы или модели, соответственно

Рассмотрим, для примера, следующую модель.

Как указано значками точек тестирования, эта модель задает, что Simulink® программное обеспечение должно регистрировать сигналы с именем step и scope в корневой системе и сигнале с именем clk в подсистеме с именем Отложенный выход. После того, как вы симулируете эту модель в релизе раньше R2016a, MATLAB® рабочая область содержит следующую переменную:

Simulink.ModelDataLogs (siglgex):
  Name                   elements  Simulink Class

  scope                     2      TsArray
  step                      1      Timeseries
  ('Delayed Out')           2      SubsysDataLogs

Можно использовать полные имена объектов или Simulink unpack команда для доступа к данным сигнала. Для примера получить доступ к амплитудам clk сигнал в Подсистеме Задержки Выхода в logsout объект, введите

data = logsout.('Delayed Out').clk.Data;

или

>> logsout.unpack('all');
>> data = clk.Data;

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

The Simulink.ModelDataLogs объект содержит объекты сигнальных данных для захвата информации логгирования сигналов для конкретных элементов модели.

Элемент моделиОбъект данных сигнала
Модель верхнего уровня или ссылкаSimulink.ModelDataLogs
Подсистема в моделиSimulink.SubsysDataLogs
Сигнал, отличный от сигнала шины или MuxSimulink.Timeseries
Сигнал шины или сигнал MuxSimulink.TsArray

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

Имена сигналов в журналах данных могут иметь пространства или новые строки в именах, когда сигнал:

  • Называется, и имя включает пространство или символ новой строки.

  • Безымянный и берёт начало в блоке, имя которого включает пространство или символ новой строки.

  • Существует в подсистеме или ссылочной модели, и имя подсистемы, блока Model или любого вышестоящего блока включает пространство или символ новой строки.

Следующая модель показывает сигнал, имя которого содержит пространство, сигнал, имя которого содержит новую линию и неназванный сигнал, который берёт начало в блоке, имя которого содержит новую линию:

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

logsout
logsout =
 
Simulink.ModelDataLogs (model_name):
  Name                   Elements  Simulink Class

  ('x y')                   1      Timeseries
  ('a
b')                   1      Timeseries
  ('SL_Sine
Wave1')         1      Timeseries

Вы не можете получить доступ ни к одному из Simulink.Timeseries объекты в этом журнале с использованием заполнения имени TAB или путем ввода имени в MATLAB. Этот синтаксис не распознан, поскольку пространство или новая строка в каждом имени появляется в анализаторе MATLAB как диафрагма между идентификаторами. Для примера:

logsout.x y
??? logsout.x y
              |
Error: Unexpected MATLAB expression.

Ссылка на Simulink.Timeseries объект, имя которого содержит пространство, заключает элемент, содержащий пространство, в одинарные кавычки:

logsout.('x y')
       Name: 'x y'
     BlockPath: 'model_name/Sine'
     PortIndex: 1
    SignalName: 'x y'
    ParentName: 'x y'
      TimeInfo: [1x1 Simulink.TimeInfo]
          Time: [51x1 double]
          Data: [51x1 double]

Ссылка на Simulink.Timeseries объект, имя которого содержит новую строку, соедините, чтобы создать элемент, содержащий новую строку:

cr=sprintf('\n')
logsout.(['a' cr 'b'])

Те же методы работают, когда пространство или новая строка в журнале данных получают от имени:

  • Исходный блок неназванного записанного сигнала

  • Подсистема или блок Model, который содержит любой записанный сигнал

  • Любой блок, который превосходит такой блок в иерархии модели

Этот код может ссылаться на записанные данные для сигнала:

logsout.(['SL_Sine' cr 'Wave1'])

Для имен с несколькими пространствами, новых строк или обоих, повторите и объедините два метода по мере необходимости, чтобы задать предполагаемое имя MATLAB.

Сигналы шины

ModelDataLogs формат хранит данные каждого зарегистрированного сигнала шины в отдельном Simulink.TsArray объект.

Иерархия сигнала шины сохраняется в записанных данных сигнала. Зарегистрированное имя сигнала в виртуальной шине происходит от имени исходного сигнала. Записанное имя сигнала в невиртуальной шине происходит от применимого объекта шины и может отличаться от имени исходного сигнала. Информацию об этих возможностях см. в разделе «Составные сигналы».

Представлено до R2006a