A параметров блоков, MATLAB® переменная, или Simulink.Parameter
объект настраивается, если он появляется в сгенерированном коде как данные, хранящиеся в памяти, такие как глобальная переменная. Для примера, когда вы применяете класс памяти ExportedGlobal
к объекту параметра, объект параметра появляется настраиваемым в сгенерированном коде. Когда вы задаете Default parameter behavior Tunable
Объекты переменного MATLAB и параметра появляются настраиваемыми в сгенерированном коде. По определению аргументы модели также кажутся настраиваемыми.
При определенные обстоятельства генератор кода не может поддерживать настраиваемость параметра, переменной, объекта или выражения. В этом случае генератор кода вводит числовое значение, препятствуя изменению значения во время выполнения кода.
Чтобы обнаружить эти условия в вашей модели, установите параметр конфигурации модели Detect loss of tunability (см. Обнаружение потери настраиваемости) равным warning
или error
.
Можно задать параметры блоков значения как выражения, которые используют Simulink.Parameter
объекты или переменные рабочей области. Для примера можно использовать выражение 5 * gainParam
. Общие сведения об использовании выражений для задания параметров блоков значений см. в разделах Использование математических выражений, Функции MATLAB и Пользовательские функции. Для ограничений относительно выражений, которые вы используете, чтобы задать значения Simulink.Parameter
объекты, см. Генерация кода объектов параметра со значениями выражений.
A tunable workspace variable является Simulink.Parameter
переменная объекта или рабочей области, которая появляется настраиваемой в сгенерированном коде. Например, объект или переменная настраиваются, если вы применяете класс памяти, отличный от Auto
или если вы задаете Default parameter behavior Tunable
.
Выражение, которое содержит одну или несколько настраиваемых переменных рабочей области, аргументов модели или настраиваемых параметров маски, называется tunable expression. Выражение настраивается, потому что генератор кода пытается сохранить выражение в коде. Поскольку генератор кода сохраняет выражение, можно изменить значения данных параметра во время выполнения кода.
Генератор кода сокращает определенные выражения до встроенного числового значения в сгенерированном коде. Inlining отображает переменные рабочей области в выражении nontunable. Чтобы избежать потери настраиваемости из-за неподдерживаемых выражений, соблюдайте следующие рекомендации:
Выражения с участием комплексного (i
) переменные рабочей области или объекты параметра не поддерживаются.
Некоторые операторы и функции заставляют генератор кода уменьшать выражения и удалять настраиваемость. Чтобы определить, вызывает ли оператор или функция потерю настраиваемости, используйте информацию из этой таблицы.
Категория | Операторы или функции |
---|---|
1 |
|
2 |
|
3 |
|
4 |
|
Используйте операторы из категории 1 без потери настраиваемости.
Используйте операторы из категории 2 в выражениях, пока хотя бы один операнд является скаляром. Для примера поддерживаются скалярные/скалярные и скалярные/матричные операнды, но матричные/матричные комбинации не поддерживаются.
Можно использовать настраиваемые переменные рабочей области в качестве аргументов для функций категории 3. Если вы используете другие функции, генератор кода удаляет настраиваемость аргументов.
Операторы категории 4 не поддерживаются.
Блоки Fcn и If не поддерживают настраиваемые выражения для генерации кода или в ссылочных моделях.
Можно записать код инициализации маски, который создает и изменяет переменные. Если вы используете эти переменные в выражении, выражение не настраивается.
Можно задать тип данных для Simulink.Parameter
объекты или переменные рабочей области, образующие выражения. Пока тип данных этих переменных и объектов и тип данных соответствующих параметров блоков совпадают или double
, генератор кода может сохранить настраиваемость.
Если генератор кода сохраняет настраиваемость выражения параметра, которое включает в себя по меньшей мере один элемент целого типа, симуляция и выполнение сгенерированного кода могут привести к результатам, которые численно несогласованны. Оценка выражения в сгенерированном коде приводит к переполнению, в то время как выражение насыщается во время симуляции. Для получения дополнительной информации см. «Численная согласованность модели» и «Сгенерированный код Результатов симуляции».
Эти блоки имеют Realization
параметр, который влияет на настраиваемость их числовых параметров:
Transfer Fcn
State-Space
Discrete State-Space
Чтобы задать Realization
параметр, необходимо использовать командную строку:
set_param(gcb,'Realization','auto')
Для Realization
параметр, можно выбрать следующие опции:
general
: Числовые параметры блока появляются настраиваемыми в сгенерированном коде.
sparse
Сгенерированный код представляет параметры блока как преобразованные значения, которые повышают эффективность. Параметры не настраиваются.
auto
: Значение по умолчанию. Если один или несколько параметров блока настраиваются (для примера, потому что вы используете настраиваемый объект параметра, чтобы задать значение параметров), то блок использует general
реализация. В противном случае блок использует sparse
реализация.
Чтобы настроить значения параметров одного из этих блоков во время симуляции режима external mode, блок должен использовать general
реализация.
Как описано в разделе Организация данных в структуры в Сгенерированном коде, можно создать структуры данных параметров в сгенерированном коде.
Если структура параметра настраивается, числовые поля структуры настраиваются в сгенерированном коде. Однако, если поле содержит неотключаемую сущность, такой как многомерный массив, поля структуры не настраиваются.
Вы не можете объявить отдельные подструктуры или поля в структуре параметра настраиваемыми. Вы не можете использовать Simulink.Parameter
объект как значение поля структуры. Вместо этого необходимо хранить всю структуру в объекте параметра.