Simulink. ModelDataLogs

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

Описание

Примечание

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

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

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

В релизах, прежде чем R2016a, если вы устанавливаете Параметры конфигурации> Импорт/Экспорт Данных> формат журналирования Сигнала к ModelDataLogs, программное обеспечение Simulink®, создал экземпляры класса Simulink.ModelDataLogs, чтобы содержать журналы сигнала при моделировании модели. Журналирование создало экземпляр этого класса для топ-модели и для каждой модели, на которую ссылается топ-модель, которая содержит сигналы, которые будут регистрироваться. Журналирование присвоило объект ModelDataLogs для топ-модели к переменной в базовом рабочем пространстве. Имя переменной является именем, заданным в Параметрах конфигурации> Импорт/экспорт Данных> Сигнал, регистрирующий параметр имени. Значением по умолчанию является logsout.

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

  • Simulink.ModelDataLogs

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

  • Simulink.SubsysDataLogs

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

  • Simulink.Timeseries

    Данные регистрируют для любого сигнала кроме сигнала шины или мультиплексора

  • Simulink.TsArray

    Данные регистрируют для сигнала шины или мультиплексора

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

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

  • Поскольку подсистема или модель регистрируют контейнер, имя подсистемы или модели, соответственно

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

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

Simulink.ModelDataLogs (siglgex):
  Name                   elements  Simulink Class

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

Можно использовать полностью определенные имена объектов или команду unpack Simulink, чтобы получить доступ к данным сигнала. Например, чтобы получить доступ к амплитудам сигнала clk в Задержанном подсистема в объекте logsout, войти

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

или

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

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

Объект Simulink.ModelDataLogs содержит объекты данных сигнала получить информацию о журналировании сигнала для определенных элементов модели.

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

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

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

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

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

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

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

Следующий пример показывает, как обработать пробелы или новые строки на регистрируемые имена, если модель использует 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 в этом завершении имени ВКЛАДКИ использования журнала или путем введения имени к 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'])

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

  • Инициирующий блок регистрируемого сигнала без имени

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

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

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

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

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

Соедините шиной сигналы

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

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

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

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