Ограничения для Параметров блоков настраиваемости в сгенерированном коде

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

    abs, acos, asin, atan, atan2, boolean, ceil, cos, cosh, exp, floor, log, log10, sign, sin, sinh, sqrt, tan, tanh, single, int8, int16, int32, uint8, uint16, uint32

    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 объект как значение поля структуры. Вместо этого необходимо хранить всю структуру в объекте параметра.

Похожие темы