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

Советник Генерации кода рассматривает ваше основанное на модели на целях, которые вы задаете. Если предопределенный КПД, трассируемость, Меры безопасности и отладка целей не удовлетворяют ваши требования, можно создать пользовательские цели.

Создать пользовательские цели:

  • Создайте цель и добавьте параметры и проверки к этой новой цели.

  • Создайте цель на основе существующей цели, затем добавьте, измените и удалите параметры и проверки в той новой цели.

Задайте параметры в пользовательских целях

Когда вы создаете пользовательскую цель, вы задаете значения параметров конфигурации, которые рассматривает Советник Генерации кода. Можно использовать следующие методы:

  • addParam — Добавьте параметры и задайте значения, которые Советник Генерации кода рассматривает в Check model configuration settings against code generation objectives.

  • modifyInheritedParam — Измените наследованные значения параметров, которые Советник Генерации кода рассматривает в Check model configuration settings against code generation objectives.

  • removeInheritedParam — Удалите наследованные параметры из новой цели, которая основана на существующей цели. Когда вы выбираете несколько целей, если другая выбранная цель включает этот параметр, Советник Генерации кода рассматривает значение параметров в Check model configuration settings against code generation objectives.

Задайте регистрации пользовательских целей

Цели включают проверку Check model configuration settings against code generation objectives по умолчанию. Когда вы создаете пользовательскую цель, вы задаете список дополнительных проверок, которые сопоставлены с пользовательской целью. Можно использовать следующие методы:

  • addCheck — Добавьте проверки в Советника Генерации кода. Когда вы выбираете пользовательскую цель, Советник Генерации кода отображает проверку, если вы не задаете дополнительную цель с более высоким приоритетом, который исключает проверку.

    Например, добавьте проверку в Советника Генерации кода, чтобы включать собственную проверку в автоматический процесс проверки модели.

  • excludeCheck — Исключите проверки от Советника Генерации кода. Когда вы выбираете несколько целей, если вы задаете дополнительную цель, которая включает эту проверку как более высокую приоритетную цель, Советник Генерации кода отображает эту проверку.

    Например, исключите проверку от Советника Генерации кода, когда проверка займет много времени к процессу.

  • removeInheritedCheck — Удалите наследованные проверки из новой цели, которая основана на существующей цели. Когда вы выбираете несколько целей, если другая выбранная цель включает эту проверку, Советник Генерации кода отображает проверку.

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

Определите проверки и параметры в существующих целях

Когда вы основываете новую цель на существующей цели, можно определить, какие проверки и параметры существующая цель содержит. Советник Генерации кода содержит список регистраций каждой цели.

Например, Efficiency цель включает проверки, которые вы видите в Советнике Генерации кода.

  1. Откройте rtwdemo_rtwecintro модель.

  2. Задайте основанную на ERT цель.

  3. На вкладке C Code нажмите C/C++ Code Advisor.

  4. В Системном окне Селектора выберите модель или подсистему, которую вы хотите рассмотреть, и затем нажать OK.

  5. В Советнике Генерации кода, на панели Code Generation Objectives, выбирают цели генерации кода. Когда вы выбираете цели на левой панели, Советник Генерации кода обновляет список проверок, это работает на вашей модели. В данном примере выберите Execution efficiency. В Available objectives дважды кликните Execution efficiency. Execution efficiency добавляется к Selected objectives - prioritized.

На левой панели Советник Генерации кода перечисляет проверки на Execution efficiency цель. Первая проверка, Check model configuration settings against code generation objectives, перечисляет параметры и значения, заданные целью. Например, Советник Генерации кода отображает список параметров и рекомендуемых значений в Execution efficiency цель. Видеть список параметров и значений:

  1. Запустите Check model configuration settings against code generation objectives.

  2. Нажмите Modify Parameters.

  3. Повторно выполните проверку.

В результатах проверки Советник Генерации кода отображает список параметров и рекомендуемых значений для Execution efficiency цель.

Шаги, чтобы создать пользовательские цели

Создать пользовательскую цель:

  1. Создайте sl_customization.m файл.

    • Задайте пользовательские цели в одном sl_customization.m файл только или программное обеспечение генерируют ошибку. Эта проблема верна, даже если у вас есть больше чем один sl_customization.m файл на вашем пути MATLAB®.

    • За исключением matlabroot/ работают папка, не помещайте sl_customization.m файл в вашей корневой папке MATLAB или ее подпапках. В противном случае программное обеспечение игнорирует индивидуальные настройки, которые задает файл.

  2. Создайте sl_customization функция, которая берет отдельный аргумент. Когда программное обеспечение вызывает функцию, значение этого аргумента является менеджером по индивидуальной настройке Simulink®. В функции:

    • Чтобы создать указатель на цель генерации кода, используйте ObjectiveCustomizer конструктор.

    • Чтобы указать функцию обратного вызова для пользовательских целей, используйте ObjectiveCustomizer.addCallbackObjFcn метод.

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

    Например:

    function sl_customization(cm)
    %SL_CUSTOMIZATION objective customization callback
    
    objCustomizer = cm.ObjectiveCustomizer;
    index = objCustomizer.addCallbackObjFcn(@addObjectives);
    objCustomizer.callbackFcn{index}();
    
    end

  3. Создайте функцию обратного вызова MATLAB что:

    Следующий пример показывает, как создать объективный Reduce RAM Example. Reduce RAM Example включает пять параметров и три проверки, которые рассматривает Советник Генерации кода.

    function addObjectives
    
    % Create the custom objective
    obj = rtw.codegenObjectives.Objective('ex_ram_1');
    setObjectiveName(obj, 'Reduce RAM Example');
    
    % Add parameters to the objective
    addParam(obj, 'DefaultParameterBehavior', 'Inlined');
    addParam(obj, 'BooleanDataType', 'on');
    addParam(obj, 'OptimizeBlockIOStorage', 'on');
    addParam(obj, 'EnhancedBackFolding', 'on');
    addParam(obj, 'BooleansAsBitfields', 'on');
    
    % Add additional checks to the objective
    % The Code Generation Advisor automatically includes 'Check model
    % configuration settings against code generation objectives' in every
    % objective.
    addCheck(obj, 'mathworks.design.UnconnectedLinesPorts');
    addCheck(obj, 'mathworks.design.Update');
    
    %Register the objective
    register(obj);
    
    end

    Следующий пример показывает вам, как создать объективный My Traceability Example на основе существующей цели Трассируемости. Пользовательская цель изменяет, удаляет и добавляет параметры, которые рассматривает Советник Генерации кода. Это также добавляет и удаляет проверки от Советника Генерации кода.

    function addObjectives
    
    % Create the custom objective from an existing objective
    obj = rtw.codegenObjectives.Objective('ex_my_trace_1', 'Traceability');
    setObjectiveName(obj, 'My Traceability Example');
    
    % Modify parameters in the objective
    modifyInheritedParam(obj, 'GenerateTraceReportSf', 'Off');
    removeInheritedParam(obj, 'ConditionallyExecuteInputs');
    addParam(obj, 'MatFileLogging', 'On');
    
    % Modify checks in the objective
    addCheck(obj, 'mathworks.codegen.SWEnvironmentSpec');
    removeInheritedCheck(obj, 'mathworks.codegen.CodeInstrumentation');
    
    %Register the objective
    register(obj);
    
    end

  4. Если вы ранее открыли Советника Генерации кода, закройте модель, из которой вы открыли Советника Генерации кода.

  5. Обновите менеджера по индивидуальной настройке. В командной строке MATLAB введите sl_refresh_customizations.

  6. Откройте свою модель и рассмотрите новые цели.

Похожие темы