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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Экспортированные возможности

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

  • Имя образца InstP$R$M

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

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

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

Для аргументов параметра, определенных в верхней модели, если аргумент не имеет класса памяти, он inlined. Если он имеет класс памяти, результат кода зависит от значения параметра Code interface packaging:

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

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

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

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

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

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

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

Ограничения

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

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

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

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

Похожие темы