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

Параметры блоков, переменная 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

    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 и Если блоки не поддерживают настраиваемые выражения для генерации кода или в моделях, на которые ссылаются.

  • Можно записать код инициализации маски, который создает и изменяет переменные. Если вы используете те переменные в выражении, выражение не является настраиваемым.

  • Можно задать тип данных для объектов Simulink.Parameter или переменных рабочей области, которые составляют выражения. Пока тип данных этих переменных и объектов и тип данных соответствующих параметров блоков являются тем же самым или double, генератор кода может сохранить приспособляемость.

Если генератор кода сохраняет приспособляемость выражения параметра, которое включает по крайней мере один элемент целочисленного типа, симуляция и выполнение сгенерированного кода могут привести к результатам, которые численно противоречивы. Оценка выражения в сгенерированном коде приводит к переполнению, в то время как выражение насыщает во время симуляции. Для получения дополнительной информации смотрите Числовую Непротиворечивость Результатов симуляции Типового кодекса и Сгенерированного кода.

Линейная приспособляемость параметров блоков

Эти блоки имеют параметр Realization, который влияет на приспособляемость их числовых параметров:

  • Передайте Fcn

  • Пространство состояний

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

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

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

Для параметра Realization можно выбрать эти опции:

  • общий: числовые параметры блока кажутся настраиваемыми в сгенерированном коде.

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

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

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

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

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

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

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

Похожие темы