exponenta event banner

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

параметр блока, переменная MATLAB ® илиSimulink.Parameter настраивается, если он отображается в сгенерированном коде как данные, хранящиеся в памяти, например глобальная переменная. Например, при применении класса хранения ExportedGlobal для объекта параметра объект параметра представляется настраиваемым в сгенерированном коде. Если для параметра Поведение по умолчанию (Default parameter behavior) задано значение Tunable, переменные MATLAB и объекты параметров могут настраиваться в сгенерированном коде. По определению аргументы модели также представляются настраиваемыми.

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

Чтобы обнаружить эти условия в модели, задайте для параметра конфигурации модели Обнаружение потери настраиваемости (см. раздел Обнаружение потери настраиваемости) значение warning или error.

Настраиваемые ограничения выражения

Можно указать значения параметров блока в качестве выражений, которые используют Simulink.Parameter объекты или переменные рабочей области. Например, можно использовать выражение 5 * gainParam. Общие сведения об использовании выражений для задания значений параметров блока см. в разделах Использование математических выражений, Функции MATLAB и Пользовательские функции. Для ограничений в отношении выражений, которые используются для установки значений Simulink.Parameter см. раздел Создание кода объектов параметров со значениями выражений.

Настраиваемая переменная рабочей области Simulink.Parameter объект или переменная рабочей области, которая является настраиваемой в созданном коде. Например, объект или переменная настраивается, если применяется класс хранения, отличный от Auto или если для параметра Поведение по умолчанию (Default parameter behavior) задано значение Tunable.

Выражение, содержащее одну или несколько настраиваемых переменных рабочей области, аргументов модели или настраиваемых параметров маски, называется настраиваемым выражением. Это выражение можно настроить, поскольку генератор кода пытается сохранить выражение в коде. Поскольку генератор кода сохраняет выражение, можно изменять значения данных параметра во время выполнения кода.

Генератор кода сводит некоторые выражения к встроенному числовому значению в сгенерированном коде. Вложение делает переменные рабочей области в выражении не настраиваемыми. Чтобы избежать потери возможности настройки из-за неподдерживаемых выражений, соблюдайте следующие рекомендации:

  • Выражения, включающие комплекс (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 параметр, влияющий на возможность настройки их числовых параметров:

  • Перенос Fcn

  • Состояние - пространство

  • Дискретное состояние - пространство

Для установки Realization , необходимо использовать командную строку:

set_param(gcb,'Realization','auto')

Для Realization , можно выбрать следующие опции:

  • generalЧисловые параметры блока могут быть настроены в сгенерированном коде.

  • sparse: Созданный код представляет параметры блока как преобразованные значения, повышающие эффективность. Параметры не могут быть настроены.

  • auto: Значение по умолчанию. Если один или несколько параметров блока являются настраиваемыми (например, поскольку для задания значения параметра используется настраиваемый объект параметра), то блок использует параметр general реализация. В противном случае блок использует sparse реализация.

    Чтобы настроить значения параметров одного из этих блоков во время моделирования внешнего режима, блок должен использовать general реализация.

Структуры параметров

Как описано в разделе Организация данных в структуры в сгенерированном коде, можно создать структуры данных параметров в сгенерированном коде.

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

  • Нельзя объявить отдельные подструктуры или поля в структуре параметров настраиваемыми. Нельзя использовать Simulink.Parameter объект в качестве значения поля структуры. Вместо этого необходимо сохранить всю структуру в объекте параметра.

Связанные темы