При конфигурировании модели для генерации кода можно идентифицировать и сконфигурировать параметры для приспособляемости, например, для калибровки. Типы параметров, которые можно сконфигурировать, перечислены в этой таблице.
Тип параметра | Описание |
---|---|
Параметр модели | Параметр задан в модели, такой в качестве параметра в рабочем пространстве модели. |
Внешний параметр | Параметр, заданный как объект в базовом рабочем пространстве или в словаре данных. |
Чтобы сконфигурировать параметр для генерации кода, необходимо сопоставить параметр с объектом данных. Например, прежде, чем сконфигурировать переменную MATLAB для генерации кода, в Model Explorer, преобразуют переменную в объект параметра.
Когда вы открываете модель в приложении Simulink Coder, параметры модели, которые сопоставлены с объектами данных, появляются в редакторе Отображений Кода. В редакторе можно сконфигурировать параметры для генерации кода. Если модель использует внешние параметры, можно добавить их в редактор Отображений Кода путем нажатия на Refresh
соединитесь справа от названия параметра. Та ссылка инициирует схему обновления и в представлении редактора, добавляют внешние параметры, которые используются моделью.
Сконфигурируйте данные о параметре к:
Сделайте данные доступными для взаимодействия, в то время как сгенерированный код выполняется.
Минимизируйте объем данных, который хранится в памяти.
Продвиньте данные о параметре интерфейс модели так, чтобы другие компоненты и системы могли получить доступ к тем данным.
Улучшите удобочитаемость и трассируемость сгенерированного кода.
Чтобы управлять, являются ли параметры в модели настраиваемыми, можно получить доступ к параметру конфигурации модели Default parameter behavior при помощи 'Auto' will be tunable/inline
ссылка на редактор Отображений Кода вкладка Data Defaults. Например, можно использовать ту ссылку, чтобы сделать параметры настраиваемыми в этих случаях:
Совершенствуйте установки параметров во время быстрого прототипирования
Калибруйте параметры
Оптимизируйте параметры для производственного кода
Для генерации кода примеры показывают, как сконфигурировать параметры модели и аргументы параметра модели для модели rtwdemo_configrpinterface
. Можно сконфигурировать отображения кода при помощи Code Mappings editor или интерфейса программирования отображений кода (coder.mapping.api.CodeMapping
).
По умолчанию параметры в модели появляются в сгенерированном коде как поля структуры глобальных данных под названием
.Based на ваших требованиях интерфейса кода, решите, настроить ли генерацию данных о параметре. Если вы не конфигурируете индивидуальные настройки, генератор кода определяет, устранить ли или изменить представление параметров в сгенерированном коде в целях оптимизации. Если вы конфигурируете индивидуальные настройки, решаете:model
P
Настроить ли настройку по умолчанию
Если модель включает значительное количество параметров категории, которая должна быть настраиваемой (например, больше чем 10), более эффективно сконфигурировать параметры той категории при помощи настройки по умолчанию, и затем заменить ту установку для особых случаев. Если модель включает несколько параметров данной категории, которые имеют уникальный источник, именование, или требования размещения, рассматривают конфигурирование параметров индивидуально.
Как объявить и обработать данные о параметре модели в сгенерированном коде
Как разделяют глобальные переменные
Считывать данные о параметре модели из глобальных переменных, заданных во внешнем коде
Как вызывает к функциям доступа. Требует Embedded Coder®
Для получения дополнительной информации об этих опциях, смотрите Данные об Управлении и Функциональный Интерфейс в Сгенерированном коде.
Другие факторы для параметров модели включают ли в:
Назовите параметры в сгенерированном коде при помощи названий параметра в модели или при помощи идентификаторов уникального кода.
Поддержите условные выражения препроцессора, заданные флагами компилятора или опциями. Требует Embedded Coder. См. Модели Варианта Использования, чтобы Сгенерировать Код Который Использование C Условные выражения Препроцессора (Embedded Coder).
Включайте static
введите спецификатор в определениях глобальной переменной и объявлениях, например, чтобы предотвратить столкновения имени. Требует Embedded Coder. Смотрите Предотвращают Столкновения Имени путем Конфигурирования Элемента данных как статического (Embedded Coder).
Включайте const
, volatile
, или const
и volatile
введите спецификатор в определениях глобальной переменной и объявлениях. Требует Embedded Coder. Смотрите Защищают Глобальные данные с const и энергозависимыми Спецификаторами Типа (Embedded Coder).
Сгенерируйте макрос (#define
) или код, который использует макрос, заданный во внешнем заголовочном файле. Требует Embedded Coder. Смотрите Макроопределения (#define) (Embedded Coder).
Сгенерируйте структуру глобальных данных с именем, которое вы задаете. Требует Embedded Coder. Смотрите Организуют Данные в Структуры в Сгенерированном коде (Embedded Coder).
Поместите данные о параметре в определенную область памяти. Требует Embedded Coder. Смотрите Данные об Управлении и Функциональное Размещение в Памяти Вставкой Прагм (Embedded Coder).
Для списка интерфейсных требований, которые относятся к параметрам, которые имеют соответствующие классы памяти и свойства класса памяти, смотрите Choose Storage Class and Storage Class Properties для Хранилищ данных.
Требования параметра, например, модель rtwdemo_configrpinterface
:
По умолчанию сохраните параметры модели в сгенерированном коде для настройки. Не оптимизируйте код путем встраивания параметров.
Примените префиксный mp_
к именам переменных, которые представляют параметры модели.
В данном примере сконфигурируйте параметры модели в rtwdemo_configrpinterface
удовлетворять эти требования генерации кода.
Настройки генерации кода по умолчанию для параметров могут уменьшать усилие по подготовке модели для генерации кода, особенно если модель имеет значительное количество параметров, с которыми необходимо взаимодействовать, в то время как сгенерированный код выполняется. Выберите параметры конфигурации однажды, и генератор кода применяет те настройки к параметрам через модель. Simulink® хранит настройку по умолчанию как часть модели.
Рассмотрите конфигурирующие настройки генерации кода по умолчанию для параметров модели, если ваша модель использует несколько параметров для той же категории, которые не имеют уникальных требований.
В этом примере показано, как использовать Code Mappings editor, чтобы сконфигурировать настройки по умолчанию для параметров модели для модели rtwdemo_configrpinterface. Сконфигурируйте параметры модели так, чтобы они были настраиваемыми и были заданы и объявлены в сгенерированном коде как отдельные глобальные переменные.
Открытая модель rtwdemo_configrpinterface. Сохраните копию модели к перезаписываемому местоположению.
Откройте приложение Simulink Coder.
Во вкладке C Code выберите Code Interface> Default Code Mappings.
В редакторе Отображений Кода, под Parameters, избранная категория Model parameters. Текст ссылки 'Auto' will be inlined
указывает, что генератор кода сконфигурирован, чтобы встроить параметры модели по умолчанию. Требование для этого примера является параметрами модели быть настраиваемым. Нажмите 'Auto' will be inlined
.
В диалоговом окне Model Configuration Parameters, параметр конфигурации модели набора Default parameter behavior к Tunable
. Сохраните изменение и закройте диалоговое окно. В редакторе Отображений Кода текст ссылки превращается в 'Auto' will be tunable
.
В Отображениях Кода, с категорией Model parameters, все еще выбранной, устанавливает класс памяти на ExportedGlobal
.
Сохраните модель.
Можно сконфигурировать отдельные параметры для генерации кода. Например, если модель имеет два параметра той же категории, которые имеют требования генерации уникального кода, конфигурируют параметры индивидуально. Или, если вы конфигурируете настройки по умолчанию для категории параметров, можно заменить те настройки для определенных параметров.
Если ваша модель соответствует по крайней мере одному из этих критериев, рассмотрите настройки генерации кода конфигурирования для параметров индивидуально:
Использование несколько параметров той же категории, которые имеют уникальный источник, именование или требования размещения.
Использование несколько параметров той же категории.
Имеет настройку по умолчанию для категории параметров, и необходимо заменить настройку для некоторых определенных параметров.
В этом примере показано, как использовать редактор Отображений Кода, чтобы применить вашу установку класса памяти по умолчанию для параметров модели к параметрам K1
, Table1
, и Table2
в модели rtwdemo_configinterface
. Вы конфигурируете идентификаторы кода для тех параметров. Можно задать идентификаторы генерации кода, например, для интегрирования, не изменяя проект модели.
Если вы уже не сделали так, завершитесь, шаги в Конфигурируют Настройки генерации кода По умолчанию для Параметров.
Расширьте Model Parameters. По умолчанию класс памяти для каждого параметра установлен в Auto
. Используйте настройку по умолчанию модели, которая задает класс памяти ExportedGlobal
.
Чтобы избежать оптимизации и обеспечить генератор кода, чтобы использовать настройку по умолчанию, установите класс памяти на Model default
.
Чтобы заменить настройку по умолчанию, задайте класс памяти, который удовлетворяет требования генерации кода для того параметра.
В редакторе Отображений Кода, под Model Parameters, избранные параметры K1
, Table1
, и Table2
. Установите класс памяти на Model default: ExportedGlobal
.
Сконфигурируйте идентификаторы кода для параметров модели с именами, которые включают префиксный mp_
. В редакторе Отображений Кода выберите параметр модели K1
. В Property Inspector расширьте узел Code. Установите свойство Identifier класса памяти на mp_K1
. Для параметров Table1
и Table2
, установите Identifier на mp_Table1
и mp_Table2
.
Сохраните модель.
Сгенерируйте и просмотрите код. Например, найдите определения данных для параметра модели mp_K1
в rtwdemo_configrpinterface.c
.
int8_T mp_K1 = 2;
Найдите, где параметр используется в функции точки входа шага.
if (mode) { output = (real_T)mp_K1 * dout_Table1; } else { output = dstate_X; }
Чтобы автоматизировать настройку параметров для генерации кода, используйте интерфейс программирования для отображений кода. Например, при создании библиотек пользовательского блока или части тестовой среды приложения, используйте интерфейс программирования, чтобы автоматизировать настройку данных.
В этом примере показано, как сконфигурировать настройки по умолчанию для параметров модели для модели rtwdemo_configrpinterface. Сконфигурируйте параметры модели так, чтобы они были настраиваемыми и были заданы и объявлены в сгенерированном коде как отдельные глобальные переменные. Примените свою установку класса памяти по умолчанию для параметров модели к параметрам K1
, Table1
, и Table2
. Сконфигурируйте идентификаторы кода для тех параметров.
Откройте модель в качестве примера.
open_system('rtwdemo_configrpinterface')
Установите параметр конфигурации модели Default parameter behavior на Tunable
.
model='rtwdemo_configrpinterface';
set_param(model,'DefaultParameterBehavior','Tunable');
Создайте объект cm
путем вызывания функции coder.mapping.api.get
. Объектно-ориентированная память настройка генерации кода для элементов данных в модели rtwdemo_configrpdefaults
.
cm = coder.mapping.api.get('rtwdemo_configrpinterface');
Сконфигурируйте настройки по умолчанию для параметров модели путем вызывания функции setDataDefault
. Для аргументов задайте эти значения:
Объект, возвращенный coder.mapping.api.get
ModelParameters
для категории по умолчанию
Имя свойства StorageClass
со значением свойства ExportedGlobal
setDataDefault(cm,'ModelParameters','StorageClass','ExportedGlobal');
Проверьте свою настройку по умолчанию для параметров модели. Издайте приказы к getDataDefault
это задает объект, возвращенный coder.mapping.api.get
, категория ModelParameters
, и StorageClass
.
getDataDefault(cm,'ModelParameters','StorageClass') ans = 'ExportedGlobal'
Примените настройку по умолчанию для параметров модели к параметрам 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_configrpinterface.c
.
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 (Только отдельные отображения) |
Сгенерируйте определение глобальной переменной и объявление. | ExportedGlobal |
Сгенерируйте код, который читает из и пишет в указатель глобальной переменной или глобальной переменной, заданный вашим внешним кодом. | ImportedExtern, ImportedExternPointer |
Список доступных классов памяти может включать другие специфичные для проекта классы памяти, заданные в Словарь Embedded Coder. Если у вас есть особые требования, которым не отвечают перечисленные классы памяти, и у вас есть программное обеспечение Embedded Coder, можно задать класс памяти. Смотрите Задают Классы памяти, Разделы Памяти и Шаблоны функций для Программной архитектуры (Embedded Coder).
Для отдельного параметра модели используйте свойство класса памяти Identifier сконфигурировать имя для переменной, представляющей параметр в сгенерированном коде.
Редактор Отображений кода | coder.mapping.api.CodeMapping