exponenta event banner

Simulink. ModelDataLogs

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

Описание

Примечание

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

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

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

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

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

  • Simulink.ModelDataLogs

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

  • Simulink.SubsysDataLogs

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

  • Simulink.Timeseries

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

  • Simulink.TsArray

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

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

  • Имя сигнала для файлов регистрации данных сигнала

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

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

Как указано значками тестовой точки, эта модель указывает, что программное обеспечение Simulink ® должно регистрировать сигналы с именемstep и scope в корневой системе и сигнале с именем clk в подсистеме с именем Delayed Out. После моделирования этой модели в более ранней версии, чем 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 Формат

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 объекты в этом журнале с помощью функции TAB name completion или путем ввода имени в 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