Чтобы настроить реализацию специфичных для экземпляра параметров в сгенерированном коде, можно сконфигурировать упаковку этих параметров в модели, где они заданы. Сконфигурируйте отображение значения по умолчанию и отдельное отображение для специфичных для экземпляра параметров при помощи одного из этих классов памяти:
'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
— Параметр сгенерирован в структуре, переданной как часть первого аргумента функции.
Чтобы понять поведение мгновенно-специфичных параметров в сгенерированном коде для моделей, на которые ссылаются, откройте модель ex_arg_code_ref
.
Сначала считайте модель, на которую ссылаются, сконфигурированной, чтобы поддержать только один экземпляр с образцовым аргументом gainArg
, заданным для блока Gain и образцовым аргументом coeffArg
, заданным для блока Discrete Filter. Отображение значения по умолчанию для образцовых аргументов не имеет класса памяти. В файле ex_arg_code_ref.h
существует определение типа и объявление для специфичных для экземпляра параметров.
Когда топ-модель ссылается на эту модель и предоставляет значения для специфичных для экземпляра параметров, код для топ-модели задает специфичные для экземпляра параметры при помощи значений, обеспеченных топ-моделью.
Теперь рассмотрите, сконфигурирована ли модель, на которую ссылаются, чтобы поддержать несколько экземпляров. ex_arg_code_ref.h
содержит то же определение типа, как одно экземпляр, но сам для модели также содержит указатель на экземпляр той структуры данных. Нет никакого объявления указателя к автономной глобальной переменной той структуры.
Топ-модель объявляет первичную структуру, включая экземпляр этой подструктуры, и инициализирует указатель в сам структура для модели, на которую ссылаются.
Когда вы конфигурируете специфичный для экземпляра параметр для генерации кода, эти ограничения применяются:
Отображение значения по умолчанию для аргументов параметра не может быть снова использовано для локальных параметров или глобальных параметров.
Во время генерации кода необходимо обеспечить значение для каждого экземпляра параметра в иерархии модели - ссылки. Отказ предоставить значение приводит к ошибке генерации кода.
Специфичные для экземпляра значения параметров должны быть конечными.
Аргументы параметра с non-Auto
классом памяти не поддержаны для генерации Кода С++ с интерфейсом класса C++ кода.