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

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

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

Чтобы обнаружить эти условия в вашей модели, установите параметр конфигурации модели Detect loss of tunability (см., Обнаруживают потерю приспособляемости (Simulink)) к warning или error.

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

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

tunable workspace variable является Simulink.Parameter переменная объектной или рабочей области, которая кажется настраиваемой в сгенерированном коде. Например, объект или переменная являются настраиваемыми, если вы применяете класс памяти кроме Auto или если вы устанавливаете Default parameter behavior на Tunable.

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

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

  • Выражения, включающие комплекс (i) объекты переменных рабочей области или объекты параметра не поддержаны.

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

    КатегорияОператоры или функции

    1

    + - .* ./ < > <= >= == ~= & |

    2

    * /

    3

    absacosasinatanatan2, booleanпотолокпотому чтодубинкаexpполжурналlog10знак, sinsinhsqrttantanhединственныйint8int16int32uint8uint16uint32

    4

    : .^ ^ [] {} . \ .\ ' .' , ;

    • Используйте операторы от категории 1 без потери приспособляемости.

    • Используйте операторы от категории 2 в выражениях, целый по крайней мере один операнд является скаляром. Например, скалярные/скалярные и скалярные/матричные комбинации операнда поддерживаются, но матричные/матричные комбинации не поддержаны.

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

    • Операторы в категории 4 не поддержаны.

  • Fcn и блоки If не поддерживают настраиваемые выражения для генерации кода или в моделях, на которые ссылаются.

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

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

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

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

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

Похожие темы