Несколько методов доступны, которым программа, сгенерированная программным обеспечением Simulink® Coder™, может сохранить данные к MAT-файлу для анализа. Сгенерированный исполняемый файл может сохранить системные состояния, выходные параметры и время симуляции на каждом образцовом шаге времени выполнения. Данные записаны в MAT-файл, названный (по умолчанию)
, где model.mat
model
является именем вашей модели. См. Данные логов для Анализа для примера по регистрации данных.
Регистрация данных доступна только для системных конечных файлов, которые имеют доступ к файловой системе. Кроме того, только целевые исполняемые файлы RSim способны к доступу к данным о рабочем пространстве MATLAB.
Для ограничений журналирования MAT-файла смотрите, что MAT-файл параметра конфигурации регистрирует (Simulink Coder).
Этот пример показывает, как данные, сгенерированные копией модели slexAircraftExample
, регистрируются к файлу myAircraftExample.mat
. Обратитесь к Рабочему процессу Процесса сборки для Систем реального времени для получения инструкций относительно подготовки копии slexAircraftExample
asmyAircraftExample
в рабочей папке, если вы так уже не сделали.
Когда вы конфигурируете генератор кода, чтобы произвести код, который включает поддержку регистрации данных во время выполнения, генератор кода может включать текст для имен блока в путях к блоку, включенных в файл журнала. Если текст включает символы, которые не представлены в кодировании набора символов для модели, генератор кода заменяет символы на escape-последовательности XML. Например, генератор кода заменяет японскую полноширинную букву Katakana ア на escape-последовательность ア
. Для получения дополнительной информации смотрите Интернационализацию и Генерацию кода (Simulink Coder).
Чтобы сконфигурировать регистрацию данных, откройте диалоговое окно Configuration Parameters и выберите панель Data Import/Export. Процесс совпадает с конфигурированием модели Simulink, чтобы сохранить вывод в рабочую область MATLAB®. Для каждой возвращаемой переменной рабочей области вы задаете и включаете, программное обеспечение Simulink Coder задает параллельную переменную MAT-файла. Например, если вы сохраняете время симуляции в переменную tout
, ваша сгенерированная программа регистрирует те же данные к переменной под названием rt_tout
. Можно изменить префиксный rt_
на суффикс (_rt
) или устранить его полностью. Вы делаете это установкой Configuration Parameters> Code Generation> Interface> Advanced parameters> MAT-file variable name modifier.
Simulink позволяет вам регистрировать данные сигнала отовсюду в модели. В Редакторе Simulink выберите сигналы, что вы хотите регистрировать и затем в выпадающей кнопке Simulation Data Inspector, выберите Log Selected Signals. Однако программное обеспечение Simulink Coder не использует этот метод сигнала, входящего в систему сгенерированный код. Чтобы регистрировать сигналы в сгенерированном коде, необходимо или использовать опции Data Import/Export, описанные ниже, или включать В Файл или В блоки Рабочей области в модели.
Если вы включаете 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 путем выбора Simulation> Model 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 Динамики Самолета, затем запустите модель путем выбора Simulation> Run в окне модели. Получившееся отображение осциллографа показывают ниже.
Проверьте, что время симуляции и выходные параметры были сохранены в базовое рабочее пространство в MAT-файлах. В посдказке MATLAB введите:
whos yout
Name Size Bytes Class Attributes yout 1x1 10756 struct
Проверьте, что alpha, rad
регистрировался путем графического вывода времени симуляции по сравнению с той переменной. В Командном окне введите:
plot(yout.time,yout.signals.values)
Получившийся график показывают ниже.
Во второй части этого примера вы создаете и запускаете исполняемый файл Simulink Coder модели myAircraftExample
, которая выводит MAT-файл, содержащий время симуляции, и выводит вас ранее исследованный. Даже при том, что у вас уже есть сгенерированный код для модели myAircraftExample
, необходимо теперь регенерировать тот код, потому что вы изменили модель путем включения регистрации данных. Шаги ниже объясняют эту процедуру.
Чтобы постараться не перезаписывать данные о рабочей области с данными из выполнений симуляции, генератор кода изменяет идентификаторы для переменных, регистрируемых Simulink. Можно управлять этими модификациями.
Установите Configuration Parameters> Code Generation> Interface> Advanced parameters> 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
. Для получения дополнительной информации смотрите Выполнение Внешние Команды, Скрипты и Программы (MATLAB).
Панель Data Import/Export позволяет сгенерированной программе сохранить системные состояния, выходные параметры и время симуляции на каждом образцовом шаге времени выполнения. Данные записаны в MAT-файл, названный (по умолчанию)
.model.mat
Перед использованием этой функции регистрации данных необходимо изучить, как сконфигурировать модель Simulink, чтобы возвратить выходной параметр к рабочему пространству MATLAB. Это обсуждено в Данных моделирования Экспорта (Simulink).
Для каждой возвращаемой переменной рабочей области, которую вы задаете и включаете, генератор кода задает переменную MAT-файла. Например, если ваша модель сохраняет время симуляции в переменную tout
рабочей области, ваша сгенерированная программа регистрирует те же данные к переменной, названной (по умолчанию) rt_tout
.
Код, сгенерированный генератором кода, регистрирует следующие данные:
Корневые блоки Выходного порта
Именем переменной MAT-файла по умолчанию для системы выходные параметры является rt_yout
.
Порядок сортировки массива rt_yout
основан на номере порта блока Outport, начиная с 1.
Непрерывные и дискретные состояния в модели
Именем переменной MAT-файла по умолчанию для системных состояний является rt_xout
.
Время симуляции
Именем переменной MAT-файла по умолчанию для времени симуляции является rt_tout
.
По умолчанию, префиксы программного обеспечения генерации кода текст rt_
к именам переменных для системы выходные параметры, состояния и время симуляции, чтобы сформировать имена переменных MAT-файла. Чтобы изменить этот префикс для модели, выберите префикс (rt_
), суффикс (_rt
) или никакой модификатор (none
) для Configuration Parameters> Code Generation> Interface> Advanced parameters> MAT-file variable name modifier. Другие системные конечные файлы не могут поддержать этот параметр.
Можно задать параметры компилятора, чтобы заменить следующие атрибуты MAT-файла в сгенерированном коде:
Атрибут MAT-файла | Значение по умолчанию | Параметр компилятора |
---|---|---|
Имя |
|
|
Размер буфера регистрации данных | 1 024 байта |
|
Допустимый синтаксис опции может отличаться среди компиляторов. Например, Microsoft® Visual C ++® компиляторы обычно принимает
, а также /DSAVEFILE=filename
.-DSAVEFILE=filename
Для make-файла шаблона (TMF) базирующаяся цель добавьте параметр компилятора к полю Make command на панели Code Generation диалогового окна Configuration Parameters. Например:
Для основанной на наборе инструментальных средств цели, такой как GRT или ERT, добавьте параметр компилятора в настройки Build configuration на панели Code Generation диалогового окна Configuration Parameters. Установите Build configuration на Specify
и добавьте параметр компилятора в строку C Compiler Tool/Options таблица. Например:
Чтобы добавить параметр компилятора в пользовательский набор инструментальных средств, можно изменить и повторно указать пользовательский набор инструментальных средств с помощью процедур, показанных в примере, Добавляющем Пользовательский Набор инструментальных средств (MATLAB Coder). Например, чтобы добавить параметр компилятора в исходный файл 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), после изменения пользовательского набора инструментальных средств, вы сохраняете настройку в MAT-файл и обновляете целевой реестр.
Код, сгенерированный генератором кода также данные логов из этих источников:
Определите объем блоков, которым включили параметр Log data to workspace
Необходимо задать имя переменной и формат данных в диалоговом окне каждого блока Scope.
К Рабочей области блокируется в модели
Необходимо задать имя переменной и формат данных в каждом диалоговом окне блока To Workspace.
Переменные записаны в model.mat
, наряду с переменными, регистрируемыми от панели Workspace I/O.
Вы можете также данные логов к блоку To File. Сгенерированная программа создает отдельный MAT-файл (отличный от model.mat
) для каждого блока To File в модели. Файл содержит время блока и входную переменную (переменные). Необходимо задать имя файла, имена переменных, десятикратное уменьшение и шаг расчета в диалоговом окне блока To File.
Модели, на которые ссылаются блоки Model, не выполняют регистрацию данных в том контексте за исключением состояний, которые можно включать в состояние, регистрируемое для топ-моделей. Код, сгенерированный программным обеспечением Simulink Coder для моделей, на которые ссылаются, не выполняет регистрацию данных к MAT-файлам.
При регистрации данных в однозадачных и многозадачных системах вы заметите различия в журналировании
Ненепрерывные корневые блоки Выходного порта
Дискретные состояния
В многозадачном режиме журналирование состояний и выходные параметры сделаны после первого выполнения задачи (а не в конце первого временного шага). В однозадачном режиме код, сгенерированный процедурой сборки, регистрирует состояния и выходные параметры после первого временного шага.
Смотрите Регистрацию данных в Однозадачном и Многозадачном Образцовом Выполнении (Simulink Coder) для получения дополнительной информации о различиях между однозадачной и многозадачной регистрацией данных.
Быстрая цель симуляции (RSim) предоставляет улучшенные возможности журналирования. Смотрите Ускоряют, Совершенствовали, и Тестовая Гибридная Динамическая система на Хосте - компьютере при помощи Системного Конечного файла RSim (Simulink Coder) для получения дополнительной информации.