Регистрируйте результаты выполнения программы

Несколько методов доступны, которым программа, сгенерированная программным обеспечением Simulink® Coder™, может сохранить данные к MAT-файлу для анализа. Сгенерированный исполняемый файл может сохранить системные состояния, выходные параметры и время симуляции на каждом образцовом шаге времени выполнения. Данные записаны в MAT-файл, названный (по умолчанию) model.mat, где model является именем вашей модели. См. Данные логов для Анализа для примера по регистрации данных.

Примечание

Регистрация данных доступна только для системных конечных файлов, которые имеют доступ к файловой системе. Кроме того, только целевые исполняемые файлы 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) или устранить его полностью. Вы делаете это установкой 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. 
Чтобы избежать этого предупреждения, снимите флажок Data Import/Export> Signal logging.

В этом примере вы изменяете модель myAircraftExample так, чтобы сгенерированная программа сохранила время симуляции и систему выходные параметры к файлу myAircraftExample.mat. Затем вы загружаете данные в базовое рабочее пространство и строите время симуляции против одних из выходных параметров. Модель myAircraftExample должна быть сконфигурирована, как описано в Рабочем процессе Процесса сборки для Систем реального времени.

Регистрация данных во время симуляции

Использовать функцию регистрации данных:

  1. Откройте модель myAircraftExample, если это не уже открыто.

  2. Откройте диалоговое окно Configuration Parameters путем выбора Simulation> Model Configuration Parameters от окна модели.

  3. Выберите панель Data Import/Export. Панель Data Import/Export позволяет вам задать, который данные о выходном порте должны быть сохранены в рабочую область и что имена переменных использовать для нее.

  4. Установите Format на Structure with time. Когда вы выбираете этот формат, Simulink сохраняет образцовые состояния и выходные параметры в структурах, которым задали их имена в области Save to workspace or file. По умолчанию структурами является xout для состояний и yout для вывода. Структура, используемая, чтобы сохранить вывод, имеет два поля верхнего уровня: time и signals. Поле time содержит вектор времен симуляции, и signals содержит массив подструктур, каждая из которых соответствует образцовому выходному порту.

  5. Выберите опцию Output. Это говорит Simulink сохранять данные о выходном сигнале во время симуляции как переменная под названием yout. Выбор Output позволяет генератору кода создать код, который регистрирует корневой блок Output (alpha, rad) к MAT-файлу.

  6. Установите Decimation на 1.

  7. Если другие опции включены, очистите их. Фигура ниже показов, как диалоговое окно должно появиться.

  8. Нажмите Apply и OK, чтобы указать ваши изменения и закрыть диалоговое окно.

  9. Сохраните модель.

  10. В окне модели дважды кликните символ осциллографа рядом с блоком Model Динамики Самолета, затем запустите модель путем выбора Simulation> Run в окне модели. Получившееся отображение осциллографа показывают ниже.

  11. Проверьте, что время симуляции и выходные параметры были сохранены в базовое рабочее пространство в MAT-файлах. В посдказке MATLAB введите:

    whos yout
    Отображения Simulink:

      Name        Size            Bytes  Class     Attributes
    
      yout        1x1             10756  struct
  12. Проверьте, что alpha, rad регистрировался путем графического вывода времени симуляции по сравнению с той переменной. В Командном окне введите:

    plot(yout.time,yout.signals.values)

    Получившийся график показывают ниже.

Регистрация данных от сгенерированного кода

Во второй части этого примера вы создаете и запускаете исполняемый файл Simulink Coder модели myAircraftExample, которая выводит MAT-файл, содержащий время симуляции, и выводит вас ранее исследованный. Даже при том, что у вас уже есть сгенерированный код для модели myAircraftExample, необходимо теперь регенерировать тот код, потому что вы изменили модель путем включения регистрации данных. Шаги ниже объясняют эту процедуру.

Чтобы постараться не перезаписывать данные о рабочей области с данными из выполнений симуляции, генератор кода изменяет идентификаторы для переменных, регистрируемых Simulink. Можно управлять этими модификациями.

  1. Установите Configuration Parameters> Code Generation> Interface> Advanced parameters> MAT-file variable name modifier к _rt. Это добавляет суффиксный _rt в каждую переменную, которую вы выбрали, чтобы быть зарегистрированными первая часть этого примера.

  2. Нажмите Apply и OK, чтобы указать ваши изменения и закрыть диалоговое окно.

  3. Сохраните модель.

  4. Создайте исполняемый файл.

  5. Когда сборка завершит, запустите исполняемый файл с командой:

    !myAircraftExample
  6. Программа теперь производит две строки сообщения, указывая, что MAT-файл был записан.

    ** starting the model **
    ** created myAircraftExample.mat **
  7. Загрузите данные о MAT-файле, созданные исполняемым файлом, и посмотрите на переменные рабочей области из симуляции и сгенерированной программы путем ввода:

    load myAircraftExample.mat
    whos yout*

    Отображения Simulink:

      Name           Size            Bytes  Class     Attributes
    
      yout           1x1             10756  struct
      yout_rt        1x1             10756  struct
    

    Отметьте размер и байты структур, следующих из симуляции, запущенный и сгенерированный код является тем же самым.

  8. Постройте сгенерированный код, выведенный путем ввода следующей команды в Командном окне:

    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.

Замените имена переменных MAT-файла по умолчанию

По умолчанию, префиксы программного обеспечения генерации кода текст rt_ к именам переменных для системы выходные параметры, состояния и время симуляции, чтобы сформировать имена переменных MAT-файла. Чтобы изменить этот префикс для модели, выберите префикс (rt_), суффикс (_rt) или никакой модификатор (none) для Configuration Parameters> Code Generation> Interface> Advanced parameters> MAT-file variable name modifier. Другие системные конечные файлы не могут поддержать этот параметр.

Замените имя MAT-файла по умолчанию или Buffer Size

Можно задать параметры компилятора, чтобы заменить следующие атрибуты MAT-файла в сгенерированном коде:

Атрибут MAT-файлаЗначение по умолчаниюПараметр компилятора
Имяmodel.mat-DSAVEFILE=filename
Размер буфера регистрации данных1 024 байта-DDEFAULT_BUFFER_SIZE=n

Примечание

Допустимый синтаксис опции может отличаться среди компиляторов. Например, 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-файлам.

Различия в регистрации данных между одним - и многозадачностью

При регистрации данных в однозадачных и многозадачных системах вы заметите различия в журналировании

  • Ненепрерывные корневые блоки Выходного порта

  • Дискретные состояния

В многозадачном режиме журналирование состояний и выходные параметры сделаны после первого выполнения задачи (а не в конце первого временного шага). В однозадачном режиме код, сгенерированный процедурой сборки, регистрирует состояния и выходные параметры после первого временного шага.

Смотрите Регистрацию данных в Однозадачном и Многозадачном Образцовом Выполнении для получения дополнительной информации о различиях между однозадачной и многозадачной регистрацией данных.

Примечание

Быстрая цель симуляции (RSim) предоставляет улучшенные возможности журналирования. Смотрите Ускоряют, Совершенствовали, и Тестовая Гибридная Динамическая система на Хосте - компьютере при помощи Системного Конечного файла RSim для получения дополнительной информации.

Похожие темы