exponenta event banner

Настройка и оптимизация модели с помощью блоков мастера настройки

Программное обеспечение Embedded Coder ® предоставляет библиотеку блоков и сценариев мастера настройки, помогающих настраивать и оптимизировать генерацию кода из моделей.

Библиотека блоков мастера настройки

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

БлокОписание
Пользовательский файл MATLABОбновление активных параметров конфигурации родительской модели с помощью пользовательского файла
ERT (оптимизирован для фиксированной точки)Обновление активных параметров конфигурации родительской модели для генерации кода с фиксированной точкой ERT
ERT (оптимизирован для плавающей точки)Обновление активных параметров конфигурации родительской модели для генерации кода ERT с плавающей запятой
GRT (отладка для фиксированной/плавающей точки)Обновление активных параметров конфигурации родительской модели для генерации кода GRT с фиксированной или плавающей запятой с включенной отладкой
GRT (оптимизирован для фиксированной/плавающей точки)Обновление активных параметров конфигурации родительской модели для генерации кода GRT с фиксированной или плавающей запятой

При добавлении одного из стандартных блоков мастера настройки в модель и двойном щелчке по нему стандартный сценарий файла MATLAB ® настраивает параметры активного набора конфигурации без вмешательства пользователя. Предустановленные блоки оптимально конфигурируют параметры для одного из следующих случаев:

  • Генерация кода фиксированной точки с целью ERT

  • Генерация кода с плавающей запятой с целью ERT

  • Генерация кода с фиксированной или плавающей запятой с включенными параметрами отладки TLC с целью GRT.

  • Генерация кода с фиксированной или плавающей запятой с целью GRT

Пользовательский блок предоставляет пример сценария файла MATLAB, который можно адаптировать к требованиям.

Можно также настроить блоки мастера настройки для вызова процесса построения после настройки модели.

Добавить блок мастера настройки

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

  1. Откройте модель, которую требуется настроить.

  2. Откройте библиотеку блоков встроенного кодера, введя команду rtweclib.

  3. Дважды щелкните значок мастера настройки. Откроется подзаголовок Мастера настройки (Configuration Wizards).

  4. Выберите блок мастера настройки, который требуется использовать, и перетащите его в модель. Эта модель содержит ERT (optimized for fixed-point) Блок мастера настройки.

  5. Если требуется, чтобы блок мастера настройки вызывал процесс сборки после настройки, щелкните правой кнопкой мыши блок мастера настройки в модели и выберите в контекстном меню команду «Маска» > «Параметры маски». Затем выберите процесс сборки Invoke после параметра конфигурации. Не изменяйте параметр «Настройка модели для блока», если не требуется создать пользовательский блок и сценарий. В этом случае см. раздел Создание блока мастера пользовательской настройки.

  6. Нажмите кнопку Применить (Apply) и закройте диалоговое окно Параметры маски (Mask Parameters).

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

Использование блоков мастера настройки для настройки модели

После добавления блока мастера настройки в модель для настройки модели дважды щелкните блок. Сценарий, связанный с блоком, устанавливает параметры активного набора конфигурации, относящиеся к генерации кода (включая выбор целевого объекта). Можно увидеть, что параметры изменились, открыв диалоговое окно Параметры конфигурации (Configuration Parameters) и изучив настройки параметров.

Если выбран параметр Invoke build process after configuration block, сценарий также инициирует процесс создания кода и построения.

Примечание

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

Создать блок мастера пользовательской настройки

Блок мастера пользовательской настройки и соответствующий скрипт файла MATLAB, matlabroot/toolbox/coder/simulinkcoder_core/rtwsampleconfig.m, укажите начальную точку для настройки.

Настройка блока мастера настройки

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

Для начала создайте копию примера сценария для последующей настройки:

  1. Чтобы сохранить пользовательский сценарий, создайте папку. Эта папка не должна находиться нигде в структуре папок MATLAB (то есть не должна находиться под matlabroot).

    Пример ссылается на эту папку как /my_wizards.

  2. Добавьте папку к пути MATLAB. Сохраните путь для будущих сеансов.

  3. Копирование примера сценария rtwsampleconfig.m в папке matlabroot/toolbox/rtw/rtw (открыто) для /my_wizards созданную вами папку. Затем переименуйте сценарий. В этом примере используется имя my_configscript.m.

  4. Откройте пример сценария в редакторе MATLAB. Выполните прокрутку до конца файла и введите следующую строку кода:

    disp('Custom Configuration Wizard Script completed.');

    Эта инструкция используется позже в качестве теста, чтобы убедиться, что пользовательский блок выполнил сценарий.

  5. Сохраните сценарий и закройте редактор MATLAB.

Следующая задача - создать библиотеку Simulink и добавить в нее пользовательский блок.

  1. Откройте библиотеку блоков Embedded Coder и поддиапазон Configuration Wizards, как описано в разделе Добавление блока мастера настройки.

  2. На вкладке «Библиотека» выберите «Создать» > «Библиотека». На начальной странице Simulink выберите пустую библиотеку. Откроется пустое окно библиотеки.

  3. Выберите блок пользовательских файлов MATLAB во вложенной библиотеке мастеров настройки и перетащите его в пустое окно библиотеки.

  4. Чтобы отличить пользовательский блок от исходного, отредактируйте метку файла Custom MATLAB под блоком.

  5. На вкладке «Библиотека» выберите «Сохранить» > «Сохранить как». Сохранить библиотеку в /my_wizards под выбранным именем библиотеки. На этом рисунке библиотека сохраняется как ex_custom_button и блок помечен my_wizard MATLAB-file.

Следующая задача - связать пользовательский блок с пользовательским сценарием:

  1. Щелкните правой кнопкой мыши блок в модели и выберите в контекстном меню команду «Маска» > «Параметры маски». В меню Настроить модель для (Configure the model for) установлено значение Custom. Когда Custom выбрано, поле правки функции конфигурации включено, чтобы можно было ввести имя пользовательского сценария.

  2. В поле Функция конфигурации введите имя пользовательского сценария. (Не вводите .m расширение имени файла, которое является неявным.)

  3. По умолчанию процесс сборки Invoke после сброса параметра конфигурации. Этот параметр позволяет изменить значение по умолчанию для пользовательского блока. Пока оставьте этот параметр сброшенным.

  4. Нажмите кнопку Применить (Apply) и закройте диалоговое окно Параметры маски (Mask Parameters).

  5. Сохраните библиотеку.

  6. Закройте библиотеку блоков Embedded Coder и поддиапазон Configuration Wizards. Оставьте пользовательскую библиотеку открытой для использования в следующей задаче.

Протестируйте блок и сценарий в модели.

  1. Откройте окно vdp путем ввода команды:

    vdp
  2. Откройте диалоговое окно Параметры конфигурации (Configuration Parameters) и просмотрите параметры, щелкнув Создание кода (Code Generation) в списке на левой панели диалогового окна.

  3. Обратите внимание, что vdp настраивается по умолчанию для цели GRT. Закройте диалоговое окно «Параметры конфигурации».

  4. Выберите пользовательский блок из пользовательской библиотеки. Перетащите блок в vdp модель.

  5. В vdp дважды щелкните на пользовательском блоке.

  6. В окне MATLAB появится тестовое сообщение, ранее добавленное в сценарий:

    Custom Configuration Wizard Script completed.

    Тестовое сообщение указывает, что пользовательский блок выполнил сценарий.

  7. Снова откройте диалоговое окно Параметры конфигурации (Configuration Parameters) и снова просмотрите панель Создание кода (Code Generation). Модель теперь настроена для цели ERT.

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

Создать сценарий мастера настройки

Создайте пользовательский сценарий мастера настройки путем копирования и изменения примера сценария. rtwsampleconfig.m.

Функция конфигурирования.  Сценарий примера реализует одну функцию без возвращаемого значения. Функция принимает один аргумент cs:

function rtwsampleconfig(cs)

Аргумент cs является дескриптором для проприетарного объекта, который содержит информацию об активном наборе конфигурации. Программа Simulink получает этот дескриптор и передает его функции настройки при двойном щелчке по блоку мастера настройки.

Пользовательский сценарий должен соответствовать этому прототипу. Код должен использовать cs как объект «черного ящика», который передает информацию в активный набор конфигурации и из него.

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

Имена опций передаются в set_param и get_param в виде векторов символов, задающих внутреннее имя опции. Внутреннее имя опции может отличаться от метки опции в интерфейсе пользователя (например, в диалоговом окне Параметры конфигурации (Configuration Parameters)). Пример конфигурации сопровождает каждый set_param и get_param вызов с комментарием, который соотносит внутренние имена опций с метками опций пользовательского интерфейса. Например:

set_param(cs,'LifeSpan','1'); % Application lifespan (days)

Чтобы получить текущую настройку опции в активном наборе конфигурации, вызовите get_param. Пройти в cs объект в качестве первого аргумента, за которым следует внутреннее имя параметра. Например, следующий фрагмент кода проверяет настройку опции Создать отчет о создании кода:

if strcmp(get_param(cs, 'GenerateReport'), 'on')
    ...

Чтобы задать опцию в активном наборе конфигурации, вызовите set_param. Пройти в cs объект в качестве первого аргумента, за которым следует одна или несколько пар параметр/значение, задающих внутреннее имя опции и ее значение. Например, следующий фрагмент кода отключает параметр Поддерживать абсолютное время (Support absolute time):

set_param(cs,'SupportAbsoluteTime','off');

Выберите целевой объект.  Сценарий мастера настройки должен выбрать целевую конфигурацию. В примере сценария в качестве целевого объекта ERT используется по умолчанию. Сценарий сначала сохраняет переменные вектора символов, которые соответствуют требуемому целевому файлу системы, файлу шаблона и настройкам команды Make:

stf = 'ert.tlc';
tmf = 'ert_default_tmf';
mc  = 'make_rtw';

Вы выбираете системный целевой файл, передавая cs объект и stf символьный вектор к switchTarget функция:

switchTarget(cs,stf,[]);

Установка make-файла шаблона и создание параметров команды с помощью set_param вызовы:

set_param(cs,'TemplateMakefile',tmf);
set_param(cs,'MakeCommand',mc);

Чтобы выбрать цель, пользовательский сценарий должен настроить переменные вектора символов stf, tmf, и mc и передать их вызовам.

Получение информации о целевом объекте и наборе конфигурации.  Следующие служебные функции и свойства предоставляются, чтобы код мог получить информацию о текущем целевом объекте и наборе конфигурации с помощью cs объект:

  • isValidParam(cs, 'option'): option аргумент является внутренним именем параметра. isValidParam возвращает значение true, если option можно получить доступ с помощью get_param в контексте активного набора конфигурации.

  • getPropEnabled(cs, 'option'): option аргумент является внутренним именем параметра. Возвращает значение true, если option включен (то есть доступен для записи).

  • IsERTTarget свойство: Ваш код может определить, является ли выбранный в данный момент целевой объект производным от целевого объекта ERT, проверив IsERTTarget следующим образом:

      isERT = strcmp(get_param(cs,'IsERTTarget'),'on');

Эту информацию можно использовать для определения того, должен ли сценарий настраивать параметры, специфичные для ERT, например:

if isERT
  set_param(cs,'ZeroExternalMemoryAtStartup','off');
  set_param(cs,'ZeroInternalMemoryAtStartup','off');
  set_param(cs,'InitFltsAndDblsToZero','off');
  set_param(cs,'NoFixptDivByZeroProtection','on')
end

Вызов сценария мастера настройки из командной строки

Сценарии мастера настройки можно запустить из командной строки MATLAB.

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

open my_model;
cs = getActiveConfigSet ('my_model');
rtwsampleconfig(cs);
slbuild('my_model');

Связанные темы