Контейнер для журналов данных сигнала модели
Примечание
ModelDataLogs
класс поддерживается для назад совместимости. Начиная в R2016a, вы не можете данные логов в ModelDataLogs
формат. Логгирование сигнала использует Dataset
формат. В R2016a или позже, когда вы симулируете модель от более раннего релиза, который использовал ModelDataLogs
формат, модель использует Dataset
формат к данным логов.
Можно преобразовать данные о регистрации сигнала от ModelDataLogs
к Dataset
формат. Преобразование в Dataset
формат может упростить последующую обработку с другими записанными данными (например, регистрируемые состояния), который может также использовать Dataset
формат. Для получения дополнительной информации смотрите, Преобразуют Записанные данные в Формат Набора данных.
Если у вас есть унаследованный код, который использует ModelDataLogs
, можно столкнуться с ситуациями, которые требуют обновлений кода или модели. Для получения дополнительной информации об обновляющихся скриптах, смотрите, Перемещают Скрипты Тот Устаревший ModelDataLogs API Использования.
В релизах перед R2016a, когда вы устанавливаете Configuration Parameters> Data Import/Export> Signal logging format к ModelDataLogs
, регистрация данных производит один или несколько Simulink.ModelDataLogs
объекты, которые содержат записанные данные. Логгирование создает экземпляр этого класса для топ-модели и для каждой модели, на которую ссылается топ-модель, которая содержит регистрируемые сигналы. ModelDataLogs
объект для топ-модели присвоен переменной в базовом рабочем пространстве. Имя переменной задано Configuration Parameters> Data Import/export> параметр Signal logging name. Значением по умолчанию является logsout
.
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
ФорматSimulink.ModelDataLogs
объект содержит объекты данных сигнала получить информацию о логгировании сигнала для определенных элементов модели.
Элемент модели | Объект данных сигнала |
---|---|
Верхний уровень или модель, на которую ссылаются, | Simulink.ModelDataLogs |
Подсистема в модели | Simulink.SubsysDataLogs |
Сигнал кроме шины или сигнал Мультиплексора | Simulink.Timeseries |
Сигнал шины или сигнал Мультиплексора | 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
объекты в этом логарифмическом использовании ПЕРЕХОДЯТ завершение имени или путем введения имени к 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
объект.
Иерархия сигнала шины сохраняется в регистрируемых данных сигнала. Регистрируемое имя сигнала в виртуальной шине выводит из имени исходного сигнала. Регистрируемое имя сигнала в невиртуальной шине выводит из применимого объекта шины и может отличаться от имени исходного сигнала. Смотрите Составные Сигналы для получения информации о тех возможностях.
Преобразуйте записанные данные в формат набора данных, переместите скрипты, которые используют устаревший ModelDataLogs API, Simulink.SubsysDataLogs
, Simulink.Timeseries
, Simulink.TsArray
, who
, whos
, unpack