Существует несколько методов, с помощью которых программа, созданная программным обеспечением Simulink ® Coder™, может сохранять данные в MAT-файл для анализа. Созданный исполняемый файл может сохранять состояния системы, выходные данные и время моделирования на каждом шаге времени выполнения модели. Данные записываются в MAT-файл с именем (по умолчанию ), где model.matmodel - имя модели. Руководство по регистрации данных см. в разделе Данные журнала для анализа.
Примечание
Ведение журнала данных доступно только для целевых системных файлов, имеющих доступ к файловой системе. Кроме того, доступ к данным рабочей области MATLAB могут получить только целевые исполняемые файлы RSim.
Ограничения ведения журнала MAT-файлов см. в параметре конфигурации Ведение журнала MAT-файлов.
В этом примере показано, как данные генерируются копией модели. slexAircraftExample зарегистрирован в файле myAircraftExample.mat. Инструкции по настройке копии см. в разделе Создание рабочего процесса для систем реального времени slexAircraftExample какmyAircraftExample в рабочей папке, если это еще не сделано.
Примечание
При настройке генератора кода для создания кода, который включает поддержку регистрации данных во время выполнения, генератор кода может включать текст для имен блоков в пути блоков, включенные в файл журнала. Если текст содержит символы, которые не представлены в кодировке набора символов для модели, генератор кода заменяет символы escape-последовательностями XML. Например, генератор кода заменяет японскую полноширинную букву Katakana ア на escape-последовательность ア. Дополнительные сведения см. в разделе Интернационализация и создание кода.
Чтобы настроить ведение журнала данных, откройте диалоговое окно Параметры конфигурации (Configuration Parameters) и выберите панель Импорт/экспорт данных (Data Import/Export). Процесс аналогичен настройке модели Simulink для сохранения выходных данных в рабочей области MATLAB ®. Для каждой заданной и включенной переменной возврата рабочего пространства программа Simulink Coder определяет параллельную переменную MAT-файла. Например, при экономии времени моделирования переменной tout, созданная программа регистрирует те же данные в переменной с именем rt_tout. Можно изменить префикс rt_ в суффикс (_rt), или полностью устранить его. Для этого необходимо задать параметр конфигурации модели MAT-файл-модификатор имени переменной.
Simulink позволяет регистрировать данные сигналов из любой точки модели. В редакторе Simulink выберите сигналы, которые требуется зарегистрировать, а затем в раскрывающемся списке Simulation Data Inspector выберите Log Selected Signals. Однако генератор кода не использует этот способ регистрации сигнала в сгенерированном коде. Для регистрации сигналов в сгенерированном коде используйте описанные ниже параметры импорта/экспорта данных или включите в модель блоки В файл (To File) или В рабочую область (To Workspace).
Примечание
При включении MAT-файла и регистрации сигналов (на панели Импорт/экспорт данных (Data Import/Export)) и выборе сигналов для регистрации (в редакторе Simulink) при построении модели появляется следующее предупреждение:
Warning: MAT-file logging does not support signal logging. When your model code executes, the signal logging variable 'rt_logsout' will not be saved to the MAT-file.
В этом примере изменяется myAircraftExample модель для сохранения времени моделирования и вывода системы в файл myAircraftExample.mat. Затем данные загружаются в базовое рабочее пространство и выводятся на печать по одному из выходных данных. myAircraftExample модель должна быть сконфигурирована, как описано в разделе Рабочий процесс процесса построения для систем реального времени.
Для использования функции регистрации данных:
Откройте окно myAircraftExample модель, если она еще не открыта.
Откройте диалоговое окно «Параметры конфигурации».
Выберите панель Импорт/экспорт данных. Панель Импорт/экспорт данных (Data Import/Export) позволяет указать, какие данные экспорта должны быть сохранены в рабочей области и какие имена переменных для них следует использовать.
Задать для параметра Format значение Structure with time. При выборе этого формата Simulink сохраняет состояния модели и выводит в структурах, имена которых указаны в рабочей области или области файла Сохранить в (Save to). По умолчанию структуры: xout для состояний и yout для вывода. Структура, используемая для сохранения выходных данных, имеет два поля верхнего уровня: time и signals. time содержит вектор времени моделирования и signals содержит массив подструктур, каждая из которых соответствует выходному порту модели.
Выберите Вывод (Output). Это позволяет Simulink сохранять данные выходного сигнала во время моделирования как переменную с именем yout. При выборе параметра «Вывод» генератор кода создает код, регистрирующий корневой блок вывода (alpha, rad) в MAT-файл.
Установить прореживание в значение 1.
Если выбраны другие параметры, очистите их. На рисунке ниже показано, как должно отображаться диалоговое окно.

Нажмите «Применить» и «ОК», чтобы зарегистрировать изменения и закрыть диалоговое окно.
Сохраните модель.
В окне модели дважды щелкните символ области рядом с блоком Модель динамики летательных аппаратов, а затем смоделируйте модель. Результирующий экран области показан ниже.

Убедитесь, что время моделирования и выходные данные сохранены в базовом рабочем пространстве в MAT-файлах. В приглашении MATLAB введите:
whos yout
Name Size Bytes Class Attributes yout 1x1 10756 struct
Убедитесь, что alpha, rad регистрировался путем расчета времени моделирования по сравнению с этой переменной. В окне команд введите:
plot(yout.time,yout.signals.values)
Полученный график показан ниже.

Во второй части этого примера создается и запускается исполняемая программа, построенная генератором кода для модели. myAircraftExample. Программа выводит MAT-файл, содержащий время моделирования и выходные данные, рассмотренные ранее. Несмотря на то, что вы уже создали код для myAircraftExample теперь необходимо регенерировать этот код, поскольку модель была изменена путем включения регистрации данных. Ниже приводится описание этой процедуры.
Во избежание перезаписи данных рабочей области данными из прогонов моделирования генератор кода изменяет идентификаторы переменных, зарегистрированных Simulink. Этими изменениями можно управлять.
Задайте для параметра конфигурации модели MAT-файл модификатор имени переменной значение _rt. При этом добавляется суффикс _rt для каждой переменной, выбранной для регистрации в первой части этого примера.
Нажмите «Применить» и «ОК», чтобы зарегистрировать изменения и закрыть диалоговое окно.
Сохраните модель.
Создайте исполняемый файл.
По завершении построения запустите исполняемую программу с помощью команды:
!myAircraftExample
Теперь программа создает две строки сообщения, указывающие, что MAT-файл был записан.
** starting the model ** ** created myAircraftExample.mat **
Загрузите данные файла MAT, созданные исполняемым файлом, и просмотрите переменные рабочей области из моделирования и созданной программы путем ввода:
load myAircraftExample.mat whos yout*
Отображение Simulink:
Name Size Bytes Class Attributes yout 1x1 10756 struct yout_rt 1x1 10756 struct
Обратите внимание, что размер и байты структур, полученных в результате выполнения моделирования и сгенерированного кода, одинаковы.
Постройте график вывода сгенерированного кода путем ввода следующей команды в окне команд:
plot(yout_rt.time,yout_rt.signals.values)

График должен быть идентичен графику, созданному в предыдущей части этого примера.
Совет
Для платформ UNIX ® запустите исполняемую программу в окне команд с синтаксисом!./executable_name. При необходимости запустите исполняемую программу из оболочки ОС с синтаксисом ./executable_name. Дополнительные сведения см. в разделе Запуск внешних команд, сценариев и программ.
Панель Импорт/экспорт данных (Data Import/Export) позволяет созданной программе сохранять состояния системы, выходные данные и время моделирования на каждом шаге времени выполнения модели. Данные записываются в MAT-файл с именем (по умолчанию) .model.mat
Перед использованием этой функции регистрации данных необходимо изучить, как настроить модель Simulink для возврата выходных данных в рабочую область MATLAB. Это рассматривается в разделе Экспорт данных моделирования.
Для каждой переменной, возвращаемой в рабочую область, которая определяется и включается, генератор кода определяет переменную MAT-файла. Например, если модель экономит время моделирования для переменной рабочего пространства. tout, созданная программа регистрирует те же данные в переменной с именем (по умолчанию) rt_tout.
Код, сгенерированный генератором кода, регистрирует следующие данные:
Блоки корневого исходящего порта
Имя переменной MAT-файла по умолчанию для системных выходов: rt_yout.
Порядок сортировки rt_yout массив основан на номере порта блока Outport, начиная с 1.
Непрерывные и дискретные состояния в модели
Имя переменной MAT-файла по умолчанию для состояний системы: rt_xout.
Время моделирования
Имя переменной MAT-файла по умолчанию для времени моделирования: rt_tout.
По умолчанию генератор кода задает префиксы текста rt_ к именам переменных для системных выходов, состояний и времени моделирования для формирования имен переменных MAT-файла. Чтобы изменить этот префикс для модели, задайте для параметра конфигурации модели MAT-файл модификатор имени переменной значение (rt_), суффикс (_rt) или без модификатора (none). Другие целевые системные файлы могут не поддерживать этот параметр.
Можно задать параметры компилятора для переопределения следующих атрибутов MAT-файла в сгенерированном коде:
| Атрибут MAT-файла | Дефолт | Параметр компилятора |
|---|---|---|
| Имя | | -DSAVEFILE= |
| Размер буфера регистрации данных | 1024 байта | -DDEFAULT_BUFFER_SIZE= |
Примечание
Допустимый синтаксис параметра может различаться в компиляторах. Например, компиляторы Microsoft ® Visual C++ ® обычно принимают/DSAVEFILE= а также filename-DSAVEFILE=.filename
Для целевого объекта на основе файла шаблона (TMF) установите параметр конфигурации модели Make для параметра компилятора. Например:
![]()
Для целевого файла системы на основе цепочки инструментов, такого как GRT или ERT, добавьте параметр компилятора в конфигурацию модели. Задайте для параметра Build configuration значение Specifyи добавьте параметр компилятора в строку компилятора C таблицы Tool/Options. Например:
![]()
Чтобы добавить параметр компилятора в пользовательскую цепочку инструментов, можно изменить и перерегистрировать пользовательскую цепочку инструментов, используя процедуры, показанные в примере Добавление пользовательских цепочек инструментов в MATLAB ® Coder™ Build Process. Например, чтобы добавить параметр компилятора в исходный файл MATLAB для пользовательской цепочки инструментов, можно определитьmyCompilerOpts следующим образом:
optimsOffOpts = {'/c /Od'};
optimsOnOpts = {'/c /O2'};
cCompilerOpts = '$(cflags) $(CVARSFLAG) $(CFLAGS_ADDITIONAL)';
cppCompilerOpts = '$(cflags) $(CVARSFLAG) $(CPPFLAGS_ADDITIONAL)';
myCompilerOpts = {' -DSAVEFILE=myCodeLog.mat '};
...Затем можно добавить myCompilerOpts флагов для каждой конфигурации и компилятора, к которым она применяется, например:
cfg = tc.getBuildConfiguration('Faster Builds');
cfg.setOption('C Compiler', horzcat(cCompilerOpts, myCompilerOpts, optimsOffOpts));Как показано в разделе Добавление пользовательских схем инструментов в MATLAB ® Coder™ Build Process, после изменения пользовательской схемы инструментов необходимо сохранить конфигурацию в MAT-файле и обновить целевой реестр.
Код, генерируемый генератором кода, также регистрирует данные из следующих источников:
Блоки области, для которых включен параметр блока Log data to workspace
Необходимо указать имя переменной и формат данных в диалоговом окне каждого блока области.
К блокам рабочей области в модели
Необходимо указать имя переменной и формат данных в диалоговом окне «К блоку рабочей области».
Переменные записываются в model.matвместе с переменными, зарегистрированными на панели ввода-вывода рабочей области.
Можно также регистрировать данные в блоке «В файл». Созданная программа создает отдельный MAT-файл (в отличие от model.mat) для каждого блока «В файл» в модели. Файл содержит время блока и входные переменные. В диалоговом окне «Блок в файл» необходимо указать имя файла, имена переменных, прореживание и время выборки.
Примечание
Модели, на которые ссылаются блоки модели, не выполняют протоколирование данных в этом контексте, кроме состояний, которые можно включить в состояние, зарегистрированное для верхних моделей. Код, генерируемый программным обеспечением Simulink Coder для ссылочных моделей, не выполняет регистрацию данных в MAT-файлах.
При регистрации данных в однозадачных и многозадачных системах можно заметить различия в регистрации
Блоки непрерывного корневого исходящего порта
Дискретные состояния
В многозадачном режиме регистрация состояний и выходов производится после первого выполнения задачи (а не в конце первого временного шага). В однозадачном режиме код, генерируемый процедурой построения, регистрирует состояния и выводит после первого временного шага.
Дополнительные сведения о различиях между однозадачным и многозадачным протоколированием см. в разделе Регистрация данных в однозадачной и многозадачной модели.
Примечание
Цель быстрого моделирования (RSim) предоставляет расширенные возможности ведения журнала. Дополнительные сведения см. в разделе Ускорение, уточнение и тестирование гибридной динамической системы на хост-компьютере с помощью целевого файла системы RSim.