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

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

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

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

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

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

  2. Откройте диалоговое окно 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 Динамики Самолета, затем симулируйте модель. Получившееся отображение осциллографа показывают ниже.

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

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

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

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

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

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

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

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

  1. Установите параметр конфигурации модели 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-файла. Чтобы изменить этот префикс для модели, установите параметр конфигурации модели MAT-file variable name modifier на (rt_), суффикс (_rt), или никакой модификатор (none). Другие системные конечные файлы не могут поддержать этот параметр.

Замените имя 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 к параметру компилятора. Например:

Для основанного на наборе инструментальных средств системного конечного файла, такого как GRT или ERT, добавьте параметр компилятора в настройку модели. Установите параметр 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 блокируется в модели

    Необходимо задать имя переменной и формат данных в каждом диалоговом окне блока To Workspace.

Переменные записаны в model.mat, наряду с переменными, регистрируемыми от панели Workspace I/O.

Данные логов с с блоками файла

Вы можете также данные логов с блоком To File. Сгенерированная программа создает отдельный MAT-файл (отличный от model.mat) для каждого блока To File в модели. Файл содержит время блока и входную переменную (переменные). Необходимо задать имя файла, имена переменных, децимацию и шаг расчета в К диалоговому окну блока Файла.

Примечание

Модели, на которые ссылаются блоки Model, не выполняют регистрацию данных в том контексте за исключением состояний, которые можно включать в состояние, регистрируемое для топ-моделей. Код, сгенерированный программным обеспечением Simulink Coder для моделей, на которые ссылаются, не выполняет регистрацию данных к MAT-файлам.

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

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

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

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

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

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

Примечание

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

Похожие темы