При конфигурировании модели для генерации кода можно определить и настроить параметры для настройки, например, для калибровки. Типы параметров, которые можно настроить, перечислены в этой таблице.
| Тип параметра | Описание |
|---|---|
| Аргумент параметра модели | Параметр блокировки в рабочей области модели, настраиваемый в качестве аргумента модели. Каждому экземпляру модели, включающему аргумент параметра модели, может быть присвоено уникальное значение. |
| Параметр модели | Параметр, определенный в модели, например параметр в рабочем пространстве модели. |
| Внешний параметр | Параметр, определенный как объект в основной рабочей области или в словаре данных. |
| Постоянный | Постоянный параметр. |
Чтобы настроить параметр для генерации кода, необходимо связать параметр с объектом данных. Например, перед конфигурированием переменной MATLAB для создания кода в обозревателе моделей преобразуйте переменную в объект параметра.
При открытии модели в приложении Embedded Coder параметры модели, аргументы параметров модели и константы, связанные с объектами данных, отображаются в редакторе Сопоставления кодов. В редакторе можно настроить параметры для генерации кода. Если модель использует внешние параметры, их можно добавить в редактор сопоставлений кодов, щелкнув значок Refresh ссылка справа от имени параметра. Эта связь инициирует схему обновления и в режиме редактора добавляет внешние параметры, используемые моделью.
Сконфигурируйте данные параметров для:
Сделайте данные доступными для взаимодействия во время выполнения созданного кода.
Минимизируйте объем данных, хранящихся в памяти.
Управление тем, где генератор кода помещает данные параметров в память.
Передача данных параметров в интерфейс модели, чтобы другие компоненты и системы могли получить доступ к этим данным.
Улучшение читаемости и прослеживаемости созданного кода.
Чтобы управлять возможностью настройки параметров в модели, можно получить доступ к параметру конфигурации модели Поведение параметра по умолчанию с помощью 'Auto' will be tunable/inline ссылка на вкладке «Значения по умолчанию» редактора сопоставлений кодов. Например, эту ссылку можно использовать для настройки параметров в следующих случаях:
Уточнение параметров во время быстрого прототипирования
Калибровка параметров
Оптимизация параметров для производственного кода
Для создания кода в примерах показано, как настроить параметры модели и аргументы параметров модели для модели. rtwdemo_configinterface. Можно настроить сопоставления кода с помощью редактора сопоставлений кода или интерфейса программирования сопоставлений кода (coder.mapping.api.CodeMapping).
По умолчанию параметры в модели отображаются в сгенерированном коде как поля глобальных структур данных с именем:
для параметров моделиmodel_P
для аргументов параметра моделиmodel_InstP
для постоянных параметровmodel_ConstP
На основе требований к интерфейсу кода решите, следует ли настраивать генерацию данных параметров. Если настройки не настроены, генератор кода определяет необходимость исключения или изменения представления параметров в сгенерированном коде в целях оптимизации. При настройке настроек решите:
Настройка конфигурации по умолчанию
Если модель включает значительное количество параметров категории, которые должны быть настраиваемыми (например, более 10), более эффективно настроить параметры этой категории с помощью настройки по умолчанию, а затем переопределить эту настройку для особых случаев. Если модель включает несколько параметров данной категории, которые имеют уникальные требования к источнику, именованию или размещению, рассмотрите возможность индивидуальной настройки параметров.
Объявление и обработка данных параметров модели в сгенерированном коде
Как отдельные глобальные переменные
Считывание данных параметров модели из глобальных переменных, определенных во внешнем коде
Как вызовы функций доступа. Требуется встроенный кодер ®
Дополнительные сведения об этих параметрах см. в разделе Управление данными и функциональным интерфейсом в сгенерированном коде.
Другие соображения для параметров модели включают в себя необходимость:
Параметры имен в сгенерированном коде с использованием имен параметров в модели или уникальных идентификаторов кода.
Поддержка условий препроцессора, определяемых флагами или параметрами компилятора. Требуется встроенный кодер. См. раздел Использование исполнительных моделей для создания кода, использующего условия препроцессора C.
Включить static квалификатор типа в определениях и объявлениях глобальных переменных, например, для предотвращения конфликтов имен. Требуется встроенный кодер. См. раздел Предотвращение конфликтов имен путем настройки элемента данных как статического.
Включить const, volatile, или const и volatile квалификатор типа в определениях и объявлениях глобальных переменных. Требуется встроенный кодер. См. раздел Защита глобальных данных с помощью квалификаторов типа const и volative.
Создать макрос (#define) или код, использующий макрос, определенный во внешнем файле заголовка. Требуется встроенный кодер. См. раздел Определения макросов (# define).
Создайте глобальную структуру данных с указанным именем. Требуется встроенный кодер. См. раздел Упорядочение данных по структурам в сгенерированном коде.
Поместите данные параметров в определенную область памяти. Требуется встроенный кодер. См. раздел Управление данными и размещением функций в памяти путем вставки прагматиков.
Список требований к интерфейсу, относящихся к параметрам, имеющим соответствующие классы хранения и свойства класса хранения, см. в разделе Выбор класса хранения и свойств класса хранения для хранилищ данных.
Требования к параметрам для примера модели rtwdemo_configinterface являются:
По умолчанию параметры модели сохраняются в созданном коде для настройки. Не оптимизируйте код, встроив параметры.
Представление параметров модели как отдельных глобальных переменных, определенных и объявленных с помощью const и volatile квалификаторы типа.
Применить префикс mp_ к именам переменных, представляющих параметры модели.
Включить постоянные параметры UPPER и LOWER чтобы иметь различные значения для каждого экземпляра модели.
Для каждого экземпляра аргумента параметра модели по умолчанию выделяйте область памяти, представляемую в виде уникально именованного поля в экспортируемой структуре.
Аргументы параметров модели отображаются как аргументы отдельных функций модели в сгенерированном коде. Включите генератор кода для оптимизации аргументов параметров модели, которые не используются блоками в модели.
Для этого примера настройте параметры модели и аргументы параметров модели в rtwdemo_configinterface в соответствии с этими требованиями к созданию кода.
Настройки генерации кода по умолчанию для параметров могут уменьшить усилия по подготовке модели к генерации кода, особенно если модель имеет значительное количество параметров, с которыми необходимо взаимодействовать во время выполнения сгенерированного кода. Один раз выберите настройки конфигурации, и генератор кода применит эти настройки к параметрам в модели. Simulink ® сохраняет конфигурацию по умолчанию как часть модели.
Рекомендуется настроить параметры генерации кода по умолчанию для параметров модели, если модель использует несколько параметров для одной и той же категории, не имеющих уникальных требований, или использует общий словарь встроенного кодера.
В этом примере показано, как использовать редактор сопоставления кодов для настройки параметров модели по умолчанию и аргументов параметров модели для rtwdemo_configinterface модели. Настройте параметры модели так, чтобы они были настраиваемыми, определялись и объявлялись в создаваемом коде как отдельные глобальные переменные, имеющие квалификаторы типов const и volatile. Настройте аргументы параметров модели для использования настроек по умолчанию, в которых генератор кода выделяет область памяти, представляемую в виде уникально именованного поля в экспортированной структуре, для каждого экземпляра аргумента.
Открыть rtwdemo_configinterface модели. Сохраните копию модели в доступном для записи расположении.

Откройте приложение Embedded Coder.
На вкладке Код C выберите Интерфейс кода > Сопоставления кодов по умолчанию.
В редакторе Сопоставления кодов выберите Аргументы параметров модели. Оставьте для класса хранения значение Default. Генератор кода выделяет отдельную область памяти для каждого экземпляра аргумента.
В редакторе сопоставлений кодов в разделе «Параметры» выберите категорию «Параметры модели». Текст ссылки 'Auto' will be inlined указывает, что генератор кода по умолчанию настроен на встроенные параметры модели. Для этого примера необходимо, чтобы параметры модели были настраиваемыми. Щелкнуть 'Auto' will be inlined.
В диалоговом окне Параметры конфигурации модели (Model Configuration Parameters) задайте для параметра конфигурации модели Поведение параметра по умолчанию (Default parameter behavior) значение Tunable. Сохраните изменения и закройте диалоговое окно. В редакторе сопоставлений кодов текст ссылки изменяется на 'Auto' will be tunable.
В окне Сопоставления кода (Code Mappings), в котором по-прежнему выбрана категория Параметры модели (Model parameters), установите класс хранения в значение ConstVolatile.

Сохраните модель.
Для генерации кода можно сконфигурировать отдельные параметры. Например, если модель имеет два параметра одной категории с уникальными требованиями к созданию кода, настройте параметры по отдельности. Кроме того, если настроить параметры по умолчанию для категории параметров, можно переопределить эти параметры для определенных параметров.
Если модель удовлетворяет хотя бы одному из этих критериев, рассмотрите возможность настройки параметров генерации кода по отдельности.
Использует несколько параметров одной и той же категории, которые имеют уникальные требования к источнику, именованию или размещению.
Использует несколько параметров той же категории.
Имеет конфигурацию по умолчанию для категории параметров, и необходимо переопределить конфигурацию для некоторых конкретных параметров.
В этом примере показано, как с помощью редактора сопоставлений кодов применить настройки класса хранения по умолчанию для параметров модели к параметрам K1, Table1, и Table2 в модели rtwdemo_configinterface. Для этих параметров и аргументов параметров модели настраиваются идентификаторы кода. LOWER и UPPER. Можно указать идентификаторы генерации кода, например для интеграции, без изменения конструкции модели.
Если это еще не сделано, выполните шаги в разделе Настройка параметров генерации кода по умолчанию.
В редакторе сопоставлений кодов перейдите на вкладку «Параметры». Разверните «Аргументы параметра модели». По умолчанию класс хранения для каждого параметра модели имеет значение Auto, что означает, что генератор кода может исключить или изменить представление соответствующего кода в целях оптимизации. Если оптимизация невозможна, генератор кода применяет конфигурацию модели по умолчанию. В этом примере оставьте для класса хранения значение Auto.
Разверните узел «Параметры модели». По умолчанию класс хранения для каждого параметра имеет значение Auto. Использовать конфигурацию модели по умолчанию, определяющую класс хранения ConstVolatile.
Чтобы избежать оптимизации и заставить генератор кода использовать конфигурацию по умолчанию, задайте для класса хранения значение Model default.
Чтобы переопределить конфигурацию по умолчанию, укажите класс хранения, соответствующий требованиям к созданию кода для этого параметра.
В редакторе сопоставлений кодов в разделе «Параметры модели» выберите параметры K1, Table1, и Table2. Задайте для класса хранения значение Model default: ConstVolatile.

Настройка идентификаторов кода для параметров модели с именами, включающими префикс mp_. В редакторе сопоставлений кодов выберите параметр модели K1. В инспекторе свойств разверните узел «Код». Задайте для свойства класса хранения Identifier значение mp_K1. Для параметров Table1 и Table2, задайте для параметра Identifier значение mp_Table1 и mp_Table2.

Сохраните модель.
Создайте и просмотрите код. Например, найдите определения данных для параметра модели mp_K1 в rtwdemo_configinterface.c.
const volatile int8_T mp_K1 = 2;
Найдите, где используется параметр в пошаговой функции точки входа.
if (mode) {
output = (real_T)mp_K1 * dout_Table1;
} else {
output = dstate_X;
}
Struct Класс храненияВ этом примере показано, как использовать Struct класс хранения для организации значений параметров блока в структуру в сгенерированном коде. Класс хранения применяется непосредственно к отдельным элементам данных в модели.
Чтобы создать пользовательскую структуру данных параметров в созданном коде, рассмотрите возможность создания соответствующей структуры в Simulink. См. раздел Упорядочение данных по структурам в сгенерированном коде.
Создайте пример модели с тремя блоками констант и тремя блоками аутпорта. Назовите модель ex_struct_param.

Откройте Редактор данных модели (Model Data Editor). На вкладке Моделирование (Modeling) щелкните Редактор данных модели (Model Data Editor).
В Редакторе данных модели (Model Data Editor) выберите вкладку Параметры (Parameters).
В модели выберите верхний блок «Константа».
В редакторе данных модели используйте столбец Значение (Value), чтобы задать значение константы равным p1. Рядом с p1нажмите кнопку действия
и выберите Создать.
В диалоговом окне «Создание новых данных» задайте для параметра «Значение» значение Simulink.Parameter(1.0) и нажмите кнопку «Создать».
Simulink добавляет Simulink.Parameter объект с именем p1 в рабочее пространство модели.
В диалоговом окне свойств для p1нажмите «OK».
Если не требуется настраивать другие параметры, можно перейти на закладку Создание кода. Затем нажмите кнопку Настроить в приложении Coder, чтобы открыть приложение Embedded Coder и редактор сопоставлений кода.
Используйте Редактор данных модели (Model Data Editor), чтобы задать другие значения констант, используя объекты параметров с именами p2 (значение 2.0) и p3 (значение 3.0).
Откройте приложение Embedded Coder.
На вкладке Код C выберите Интерфейс кода > Сопоставления кодов отдельных элементов.
В редакторе сопоставлений кодов перейдите на вкладку «Параметры».
Разверните узел «Параметры модели».
Задание класса хранения для параметров p1, p2, и p3 кому Struct.
Выбор параметра p1. В инспекторе свойств в группе «Код» задайте свойству StructName значение my_struct. Для параметров p2 и p3, задать StructNameto my_struct.
Сохраните модель.
Создайте и проверьте код.
Файл ex_struct_param.h определяет тип структуры, my_struct_type.
/* Type definition for custom storage class: Struct */
typedef struct my_struct_tag {
real_T p1;
real_T p2;
real_T p3;
} my_struct_type;
Файл ex_struct_param.c определяет глобальную переменную my_struct.
/* Definition for custom storage class: Struct */
my_struct_type my_struct = {
/* p1 */
1.0,
/* p2 */
2.0,
/* p3 */
3.0
};
Для автоматизации конфигурирования параметров для генерации кода используйте интерфейс программирования для отображения кода. Например, при создании пользовательских библиотек блоков или части тестовой среды приложения используйте интерфейс программирования для автоматизации настройки данных.
В этом примере показано, как настроить настройки по умолчанию для параметров модели и аргументов параметров модели для rtwdemo_configinterface модели. Настройте параметры модели так, чтобы они были настраиваемыми, определялись и объявлялись в создаваемом коде как отдельные глобальные переменные, имеющие квалификаторы типов const и volatile. Настройте аргументы параметров модели для использования настроек по умолчанию, в которых генератор кода выделяет область памяти, представляемую в виде уникально именованного поля в экспортированной структуре, для каждого экземпляра аргумента. Применить настройки класса хранения по умолчанию для параметров модели к параметрам K1, Table1, и Table2. Настройте идентификаторы кода для этих параметров.
Откройте пример модели.
open_system('rtwdemo_configinterface');
Задать для параметра конфигурации модели Поведение параметра по умолчанию значение Tunable.
model='rtwdemo_configinterface';
set_param(model,'DefaultParameterBehavior','Tunable');
Создать объект cm путем вызова функции coder.mapping.api.get. Объект сохраняет конфигурацию генерации кода для элементов данных и функций в модели. rtwdemo_configdefaults.
cm = coder.mapping.api.get('rtwdemo_configinterface');Настройка параметров модели по умолчанию путем вызова функции setDataDefault. Для аргументов укажите следующие значения:
Объект, возвращенный coder.mapping.api.get
ModelParameters для категории по умолчанию
Имя свойства StorageClass со значением свойства ConstVolatile
setDataDefault(cm,'ModelParameters','StorageClass','ConstVolatile');
Настройте параметры по умолчанию для аргументов параметров модели. В вызове для setDataDefault, укажите следующие значения для аргументов:
Объект, возвращенный coder.mapping.api.get.
ModelParameterArguments для категории по умолчанию.
Имя свойства StorageClass со значением свойства Default.
setDataDefault(cm,'ModelParameterArguments','StorageClass','Default');
Проверьте конфигурацию по умолчанию для параметров модели и аргументов параметров модели. Выдать вызовы getDataDefault которые указывают объект, возвращенный coder.mapping.api.get, категория ModelParameters или ModelParameterArguments, и StorageClass.
getDataDefault(cm, 'ModelParameters', 'StorageClass')
ans =
'ConstVolatile'
getDataDefault(cm, 'ModelParameterArguments', 'StorageClass')
ans =
'Default'
Применение конфигурации по умолчанию для параметров модели к параметрам K1, Table1, и Table2 .
По умолчанию Simulink устанавливает класс хранения для отдельных параметров равным Auto. Когда класс хранения данных Auto, генератор кода:
Определяет необходимость исключения данных из созданного кода в целях оптимизации.
При сохранении данных определяет способ эффективного представления данных в сгенерированном коде с учетом настроек конфигурации по умолчанию.
Настройка генератора кода для применения настроек параметров модели по умолчанию к параметрам K1, Table1, и Table2. Для каждого параметра вызовите функцию setModelParameter. Укажите объект, возвращенный coder.mapping.api.get, имя параметра, имя свойства StorageClass, и значение свойства Model default.
setModelParameter(cm,'K1','StorageClass','Model default'); setModelParameter(cm,'Table1','StorageClass','Model default'); setModelParameter(cm,'Table2','StorageClass','Model default');
Проверка изменений конфигурации для параметров K1, Table1, и Table2 с помощью вызовов функции getModelParameter.
getModelParameter(cm,'K1','StorageClass')
ans =
'Model default'
getModelParameter(cm,'Table1','StorageClass')
ans =
'Model default'
getModelParameter(cm,'Table2','StorageClass')
ans =
'Model default'Сконфигурируйте идентификаторы кода для параметров модели. Для каждого параметра вызовите функцию setModelParameter. Укажите объект, возвращенный coder.mapping.api.get, имя параметра, имя свойства Identifierи одно из этих значений свойств.
| Параметр модели | Идентификатор кода |
|---|---|
K1 | mp_K1 |
Table1 | mp_Table1 |
Table2 | mp_Table2 |
setModelParameter(cm,'K1','Identifier','mp_K1'); setModelParameter(cm,'Table1','Identifier','mp_Table1'); setModelParameter(cm,'Table2','Identifier','mp_Table2');
Проверьте изменения конфигурации параметров модели с помощью вызовов функции getModelParameter.
getModelParameter(cm,'K1','Identifier')
ans =
'mp_K1'
getModelParameter(cm,'Table1','Identifier')
ans =
'mp_Table1'
getModelParameter(cm, 'Table2', 'Identifier')
ans =
'mp_Table2'
Сохраните модель.
Создайте и просмотрите код. Например, найдите определения данных для параметра модели mp_K1 в rtwdemo_configinterface.c.
const volatile int8_T mp_K1 = 2;
Найдите, где используется параметр в пошаговой функции точки входа.
if (mode) {
output = (real_T)mp_K1 * dout_Table1;
} else {
output = dstate_X;
}
В зависимости от требований к созданию кода выберите один из этих классов хранения, чтобы настроить создание кода для параметров модели. Только для констант Default применяется. Только для аргументов параметров модели Auto, Default, и Model default применить.
| Требования | Класс хранения |
|---|---|
| Активизируйте оптимизацию, потенциально создавая более эффективный код. | Авто (только отдельные сопоставления) |
| Для элементов данных, которые не могут быть оптимизированы, представляют данные как поле стандартной структуры данных. | По умолчанию (только сопоставление по умолчанию) |
| Предотвращение исключения оптимизации хранилища для элемента данных и использование сопоставления по умолчанию для категории элементов данных. | Модель по умолчанию (только отдельные сопоставления), Dictionary Default (Только отдельные сопоставления) |
| Создание структуры, хранящей логические данные в именованных битовых полях. | Bitfield (только индивидуальное сопоставление) |
| Поддержка условий препроцессора, определенных с помощью флага или параметра компилятора. | CompilerFlag |
Создание определения и объявления глобальной переменной с const, volatile, или const и volatile квалификаторы типа. | Const, Volatile и ConstVolatile |
Создать макрос (#define директива) или код, использующий макрос, определенный в файле заголовка во внешнем коде. | Определите, ImportedDefine |
| Создание определения и объявления глобальной переменной. | ExportedGlobal |
| Создание определения и объявления глобальной переменной для указанного файла. | ExportToFile |
Создание определения и объявления глобальной переменной с static квалификатор типа. | FileScope (только сопоставления локального и общего локального хранилища данных) |
| Создайте код, который взаимодействует с данными, вызвав пользовательские функции доступа. | GetSet |
| Создание кода, считывающего и записывающего в глобальную переменную или указатель глобальной переменной, определенный внешним кодом. | ImportedExtern, ImportedExternPointer |
| Создание кода, который считывает и записывает в глобальную переменную, определенную внешним заголовочным файлом. | ImportFromFile |
| Создайте глобальную структуру с именем, которое можно указать. | Структура (только отдельные сопоставления) |
Список доступных классов хранения может включать другие классы хранения для конкретного проекта, определенные в словаре встроенного кодера. При наличии специальных требований, не удовлетворяющих указанным классам хранения, и наличии программного обеспечения Embedded Coder можно определить класс хранения. См. раздел Определение классов хранения, разделов памяти и шаблонов функций для архитектуры программного обеспечения.
Для отдельного параметра модели используйте свойство класса хранения Identifier, чтобы настроить имя переменной, представляющей параметр в сгенерированном коде. С помощью встроенного кодера в зависимости от выбранного класса хранения можно также настроить эти свойства.
| Собственность | Описание | Классы хранения |
|---|---|---|
DefinitionFile | Файл определения источника, содержащий определения глобальных данных, считываемый параметром и внешним кодом | ExportToFile и Volatile |
GetFunction | Параметр появляется в сгенерированном коде как вызов указанного get функция | GetSet |
HeaderFile | Исходный файл заголовка, содержащий объявления для глобальных данных, считываемый параметром и внешним кодом | ExportToFile, GetSet, ImportFromFile, и Volatile |
Memory Section(только конфигурация параметров по умолчанию) | Раздел памяти, содержащий данные, считываемые параметром | Default |
Owner | Генератор кода помещает определение параметров в код, созданный для одной из нескольких моделей, в иерархию модели, в которой используются общие определения. Необходимо выбрать параметр конфигурации модели Использовать владельца из объекта данных для размещения определения данных. См. раздел Управление размещением глобальных определений и деклараций данных в созданных файлах. | ExportToFile и Volatile |
PreserveDimensions | Генератор кода сохраняет размеры данных параметров, которые представлены в сформированном коде в виде многомерного массива. Необходимо установить параметр конфигурации модели Array layout равным Row-major. См. раздел Сохранение измерений многомерных массивов в сгенерированном коде. | ExportToFile, FileScope, ImportFromFile, Localizable и Volatile |
SetFunction | Параметр появляется в сгенерированном коде как вызов указанного set функция. | GetSet |
StructName | Имя структуры в сгенерированном коде параметра. | BitField и Struct |
Редактор сопоставлений кода | coder.mapping.api.CodeMapping