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