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