Советник Генерации кода рассматривает ваше основанное на модели на целях, которые вы задаете. Если предопределенная эффективность, трассируемость, Меры безопасности и отладка целей не удовлетворяют ваши требования, можно создать пользовательские цели.
Создать пользовательские цели:
Создайте цель и добавьте параметры и проверки к этой новой цели.
Создайте цель на основе существующей цели, затем добавьте, измените и удалите параметры и проверки в той новой цели.
Когда вы создаете пользовательскую цель, вы задаете значения параметров конфигурации, которые рассматривает Советник Генерации кода. Можно использовать следующие методы:
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
включает проверки, которые вы видите в Советнике Генерации кода.
Откройте модель rtwdemo_rtwecintro
.
Задайте основанную на ERT цель.
На образцовой панели инструментов выберите Code> C/C++ Code> Code Generation Advisor.
В Системном окне Селектора выберите модель или подсистему, которую вы хотите рассмотреть, и затем нажать OK.
В Советнике Генерации кода, на панели 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
. Видеть список параметров и значений:
Запустите Check model configuration settings against code generation objectives.
Нажмите Modify Parameters.
Повторно выполните проверку.
В результатах проверки Советник Генерации кода отображает список параметров и рекомендуемых значений для цели Execution efficiency
.
Создать пользовательскую цель:
Создайте файл sl_customization.m
.
Задайте пользовательские цели в одном файле sl_customization.m
только, или программное обеспечение генерирует ошибку. Эта проблема верна, даже если у вас есть больше чем один файл sl_customization.m
на вашем пути MATLAB®.
За исключением папки
, не помещайте файл matlabroot/work
sl_customization.m
в свою корневую папку MATLAB или ее подпапки. В противном случае программное обеспечение игнорирует индивидуальные настройки, которые задает файл.
Создайте функцию 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
Создайте функцию обратного вызова MATLAB что:
Создает объекты цели генерации кода при помощи конструктора rtw.codegenObjectives.Objective
.
Добавляет, изменяет и удаляет параметры конфигурации для каждой цели при помощи addParam
, modifyInheritedParam
и методов removeInheritedParam
.
Включает и исключает проверки на каждую цель при помощи addCheck
, excludeCheck
и методов removeInheritedCheck
.
Цели регистров при помощи метода register
.
Следующий пример показывает, как создать объективный 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
Если вы ранее открыли Советника Генерации кода, закройте модель, из которой вы открыли Советника Генерации кода.
Обновите менеджера по индивидуальной настройке. В командной строке MATLAB введите sl_refresh_customizations
.
Откройте свою модель и рассмотрите новые цели.