Несколько методов доступны, которым программа, сгенерированная программным обеспечением Simulink® Coder™, может сохранить данные к MAT-файлу для анализа. Сгенерированный исполняемый файл может сохранить системные состояния, выходные параметры и время симуляции на каждом шаге времени выполнения модели. Данные записаны в MAT-файл, названный (по умолчанию)
, где model
.matmodel
имя вашей модели. См. Данные логов для Анализа для примера по регистрации данных.
Примечание
Регистрация данных доступна только для системных конечных файлов, которые имеют доступ к файловой системе. Кроме того, только целевые исполняемые файлы RSim способны к доступу к данным о рабочем пространстве MATLAB.
Для ограничений логгирования MAT-файла смотрите, что MAT-файл параметра конфигурации регистрирует.
В этом примере показано, как данные сгенерированы копией модели slexAircraftExample
регистрируется к файлу myAircraftExample.mat
. Обратитесь к Рабочему процессу Процесса сборки для Систем реального времени для получения инструкций относительно подготовки копии slexAircraftExample
asmyAircraftExample
в рабочей папке, если вы так уже не сделали.
Примечание
Когда вы конфигурируете генератор кода, чтобы произвести код, который включает поддержку регистрации данных во время выполнения, генератор кода может включать текст для имен блока в путях к блоку, включенных в файл журнала. Если текст включает символы, которые не представлены в кодировании набора символов для модели, генератор кода заменяет символы на escape-последовательности XML. Например, генератор кода заменяет японскую полноширинную букву Katakana ア на escape-последовательность ア
. Для получения дополнительной информации смотрите Интернационализацию и Генерацию кода.
Чтобы сконфигурировать регистрацию данных, откройте диалоговое окно Configuration Parameters и выберите панель Data Import/Export. Процесс совпадает с конфигурированием модели Simulink, чтобы сохранить выход в рабочую область MATLAB®. Для каждой возвращаемой переменной рабочей области вы задаете и включаете, программное обеспечение Simulink Coder задает параллельную переменную MAT-файла. Например, если вы сохраняете время симуляции в переменную tout
, ваша сгенерированная программа регистрирует те же данные к переменной под названием rt_tout
. Можно изменить префиксный rt_
к суффиксу (_rt
), или устраните его полностью. Вы делаете это путем установки параметра конфигурации модели MAT-file variable name modifier.
Simulink позволяет вам регистрировать данные сигнала отовсюду в модели. В Редакторе Simulink выберите сигналы, что вы хотите регистрировать и затем в выпадающей кнопке Simulation Data Inspector, выберите Log Selected Signals. Однако генератор кода не использует этот метод сигнала, входящего в систему сгенерированный код. Чтобы регистрировать сигналы в сгенерированном коде, используйте параметры Data Import/Export, описанные ниже, или включайте 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
модель, если это не уже открыто.
Откройте диалоговое окно Configuration Parameters.
Выберите панель Data Import/Export. Панель Data Import/Export позволяет вам задать, который данные о выходном порте должны быть сохранены в рабочую область и что имена переменных использовать для нее.
Установите параметр Format на Structure with time
. Когда вы выбираете этот формат, Simulink сохраняет состояния модели и выходные параметры в структурах, которым задали их имена в области Save to workspace or file. По умолчанию структурами является xout
для состояний и yout
для выхода. Структура, используемая, чтобы сохранить выход, имеет два поля верхнего уровня: time
и signals
. time
поле содержит вектор из времен симуляции и signals
содержит массив подструктур, каждая из которых соответствует выходному порту модели.
Выберите Output. Это говорит Simulink сохранять данные о выходном сигнале в процессе моделирования как переменную под названием yout
. Выбор Output позволяет генератору кода создать код, который регистрирует корневой блок Output (alpha, rad
) к MAT-файлу.
Установите Decimation на 1
.
Если другие параметры выбраны, очистите их. Фигура ниже показов, как диалоговое окно должно появиться.
Нажмите Apply и OK, чтобы указать ваши изменения и закрыть диалоговое окно.
Сохраните модель.
В окне модели дважды кликните символ осциллографа рядом с блоком Model Динамики Самолета, затем симулируйте модель. Получившееся отображение осциллографа показывают ниже.
Проверьте, что время симуляции и выходные параметры были сохранены в базовое рабочее пространство в 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-file variable name modifier на _rt
. Это добавляет суффиксный _rt
к каждой переменной, которую вы выбрали, чтобы быть зарегистрированными первая часть этого примера.
Нажмите Apply и OK, чтобы указать ваши изменения и закрыть диалоговое окно.
Сохраните модель.
Создайте исполняемый файл.
Когда сборка завершит, запустите исполняемую программу с командой:
!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-file variable name modifier на (rt_
), суффикс (_rt
), или никакой модификатор (none
). Другие системные конечные файлы не могут поддержать этот параметр.
Можно задать параметры компилятора, чтобы заменить следующие атрибуты MAT-файла в сгенерированном коде:
Атрибут MAT-файла | Значение по умолчанию | Параметр компилятора |
---|---|---|
Имя |
| - DSAVEFILE= |
Размер буфера регистрации данных | 1 024 байта | - DDEFAULT_BUFFER_SIZE= |
Примечание
Допустимый синтаксис опции может варьироваться среди компиляторов. Например, Microsoft® Visual C ++® компиляторы обычно принимает/DSAVEFILE=
а такжеfilename
-DSAVEFILE=
.filename
Для make-файла шаблона (TMF) базирующаяся цель, параметр конфигурации модели набора Make command к параметру компилятора. Например:
Для основанного на наборе инструментальных средств системного конечного файла, такого как GRT или ERT, добавьте параметр компилятора в настройку модели. Установите параметр Build configuration на Specify
, и добавьте параметр компилятора в строку C Compiler 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
Необходимо задать имя переменной и формат данных в диалоговом окне каждого блока Scope.
To Workspace блокируется в модели
Необходимо задать имя переменной и формат данных в каждом диалоговом окне блока To Workspace.
Переменные записаны в model.mat
, наряду с переменными, регистрируемыми от панели Workspace I/O.
Вы можете также данные логов с блоком To File. Сгенерированная программа создает отдельный MAT-файл (отличный от model.mat
) для каждого блока To File в модели. Файл содержит время блока и входную переменную (переменные). Необходимо задать имя файла, имена переменных, децимацию и шаг расчета в К диалоговому окну блока Файла.
Примечание
Модели, на которые ссылаются блоки Model, не выполняют регистрацию данных в том контексте за исключением состояний, которые можно включать в состояние, регистрируемое для топ-моделей. Код, сгенерированный программным обеспечением Simulink Coder для моделей, на которые ссылаются, не выполняет регистрацию данных к MAT-файлам.
При регистрации данных в однозадачных и многозадачных системах вы заметите различия в логгировании
Ненепрерывные корневые блоки Выходного порта
Дискретные состояния
В многозадачном режиме логгирование состояний и выходные параметры сделаны после первого выполнения задачи (а не в конце первого временного шага). В однозадачном режиме код, сгенерированный процедурой сборки, регистрирует состояния и выходные параметры после первого временного шага.
Смотрите Регистрацию данных в Однозадачном и Многозадачном Выполнении Модели для получения дополнительной информации о различиях между однозадачной и многозадачной регистрацией данных.
Примечание
Быстрая цель симуляции (RSim) предоставляет улучшенные возможности логгирования. Смотрите Ускоряют, Совершенствовали, и Тестовая Гибридная Динамическая система на Хосте - компьютере при помощи Системного Конечного файла RSim для получения дополнительной информации.