Контейнер для журналов сигнальных данных модели
Примечание
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, который ссылается на модель. Остальные свойства ссылаются на объекты, которые содержат данные о сигнале, записанные во время симуляции модели. Объектами могут быть образцы следующих типов объектов:
Контейнер для журналов данных модели
Контейнер для журналов данных подсистемы
Журнал данных для любого сигнала, кроме сигнала mux или шины
Журнал данных для сигнала mux или шины
Имена свойств идентифицируют регистрируемые данные следующим образом:
Для журналов данных о сигнале имя сигнала
Для подсистемы или контейнера журнала модели, имя подсистемы или модели, соответственно
Рассмотрим, для примера, следующую модель.
Как указано значками точек тестирования, эта модель задает, что 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 |
Сигнал, отличный от сигнала шины или Mux | Simulink.Timeseries |
Сигнал шины или сигнал Mux | Simulink.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
объект.
Иерархия сигнала шины сохраняется в записанных данных сигнала. Зарегистрированное имя сигнала в виртуальной шине происходит от имени исходного сигнала. Записанное имя сигнала в невиртуальной шине происходит от применимого объекта шины и может отличаться от имени исходного сигнала. Информацию об этих возможностях см. в разделе «Составные сигналы».
Преобразование записанных данных в формат набора данных, миграция скриптов, которые используют Legacy ModelDataLogs API, Simulink.SubsysDataLogs
, Simulink.Timeseries
, Simulink.TsArray
, who
, whos
, unpack