Сконфигурируйте упаковку аргументов параметра в сгенерированном коде

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

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

Сконфигурируйте отображение значения по умолчанию для аргументов параметра модели при помощи одного из этих классов памяти:

  • Default — Каждый экземпляр параметра выделяется часть памяти в экспортируемой структуре, атрибуты которой заданы правилами именования идентификатора.

  • Класс структурированного хранилища — Каждый экземпляр параметра выделяется часть памяти, как задано определением кода того класса памяти.

Индивидуально задайте класс памяти для аргументов параметра модели при помощи одного из этих классов памяти:

  • Auto — Параметр появляется как отдельный аргумент функции модели в сгенерированном коде. Если блок в модели не ссылается на параметр, это может быть оптимизировано далеко генератором кода.

  • Model default — Каждый экземпляр параметра выделяется часть памяти, как задано определением кода класса памяти по умолчанию. Задайте этот класс памяти по умолчанию посредством отображения по умолчанию модели.

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

Для аргумента параметра с non-Auto класс памяти:

  • На блоке Model можно задать значение на экземпляр как любой литерал, числовой MATLAB® переменная или Simulink.Parameter объект.

  • Если значением на экземпляр является Simulink.Parameter объект, объект должен иметь класс памяти Auto.

  • Если значение на экземпляр является выражением, оцененное значение выражения используется, чтобы статически инициализировать параметр.

Если вы не задаете или отдельный класс памяти по умолчанию для аргумента параметра, генератор кода применяет класс внутренней памяти, InstP, к параметру. Instp класс памяти имеет эти свойства:

  • Экспортируемый осциллограф

  • Правилом именования типа является $R_InstP$M

  • Именем экземпляра является InstP$R$M

Поведение генерации кода

Поскольку одно экземпляр сослался на модели, аргументы параметра находятся в автономной глобальной структуре. Топ-модель задает структуру. Модель, на которую ссылаются, объявляет и использует структуру.

Поскольку мультиэкземпляр сослался на модели, аргументы параметра являются частью иерархически вложенной структуры, которую топ-модель объявляет и задает. Модель, на которую ссылаются, имеет доступ к своим значениям параметров через указатель в его сам структура. Сам структура указывает на подструктуру структуры, что топ-модель задает.

Для аргументов параметра, заданных в топ-модели, если аргумент не имеет класса памяти, он встраивается. Если это имеет класс памяти, получившийся код зависит от значения интерфейса Code упаковочный параметр:

  • Nonreusable function — Параметр сгенерирован в структуре, заданной в топ-модели.

  • Reusable function — Параметр сгенерирован в структуре, переданной как часть первого аргумента функции.

Чтобы изучить поведение специфичных для экземпляра параметров в сгенерированном коде, рассмотрите эту модель, на которую ссылаются, которая задает два аргумента параметра, gainArg и coeffArg.

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

Когда топ-модель ссылается на эту модель и предоставляет значения для специфичных для экземпляра параметров, код для топ-модели задает специфичные для экземпляра параметры при помощи значений, введенных топ-моделью.

Теперь рассмотрите, сконфигурирована ли модель, на которую ссылаются, чтобы поддержать несколько экземпляров. ex_arg_code_ref.h содержит то же определение типа, как одно экземпляр, но сам для модели также содержит указатель на экземпляр той структуры данных. Нет никакого объявления указателя к автономной глобальной переменной той структуры.

Топ-модель объявляет первичную структуру, включая экземпляр этой подструктуры, и инициализирует указатель в сам структура для модели, на которую ссылаются.

Ограничения

Когда вы конфигурируете специфичный для экземпляра параметр для генерации кода, эти ограничения применяются:

  • Отображение значения по умолчанию для аргументов параметра модели не может быть снова использовано для параметров модели или внешних объектов параметра.

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

  • Аргументы параметра с non-Auto класс памяти не поддерживается для генерации Кода С++ с интерфейсом класса C++ кода.

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте