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

Если вы не используете константы в параметрах блоков в вашей модели, они появляются в сгенерированном коде как переменные. Можно выбрать, как эти переменные появляются в сгенерированном коде. Например, можно управлять следующими переменными характеристиками:

  • Встраиваются ли переменные в сгенерированном коде

  • Локальны ли переменные для функционального блока, глобальной переменной, или не заданные

Для получения дополнительной информации смотрите Параметры блоков в Сгенерированном коде.

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

  1. Используйте переменные вместо констант для параметров блоков.

  2. Задайте эти параметры в рабочей области MATLAB® одним из следующих способов:

    • Используйте скрипт MATLAB, чтобы создать Simulink.Parameter объект. Запустите скрипт каждый раз, когда модель загружает.

      Simulink® хранит Simulink.Parameter объекты вне модели. Можно затем совместно использовать Simulink.Parameter объекты между многоуровневыми моделями.

    • Используйте диалоговое окно Model Configuration Parameters, чтобы сделать параметры настраиваемыми.

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

    Примечание

    Значение параметров рабочего пространства MATLAB должно иметь совпадающий тип данных, как используется в модели. В противном случае значение переменной в сгенерированном коде обнуляется. Смотрите Ограничения Типа данных параметров Рабочей области.

Сконфигурируйте настраиваемые параметры с Simulink.Parameter Объекты

В этом примере показано, как создать и изменить Simulink.Parameter объект.

Модель plcdemo_tunable_params_slparamobj иллюстрирует эти шаги. Модель содержит блок Subsystem SimpleSubsystem это имеет три блока Усиления с настраиваемыми параметрами, K1, K2, и K3.

  1. Запишите скрипт MATLAB, который задает настраиваемые параметры.

    Следующий скрипт setup_tunable_params.m создает константы K1, K2, и K3 как Simulink.Parameter объекты, значения присвоений, и устанавливают классы памяти для этих констант. Для получения дополнительной информации о классах памяти смотрите Параметры блоков в Сгенерированном коде.

    % tunable parameter mapped to local variable
    K1 = Simulink.Parameter;
    K1.Value = 0.1;
    K1.CoderInfo.StorageClass = 'Model default';
    
    % tunable parameter mapped to global variable
    K2 = Simulink.Parameter;
    K2.Value = 0.2;
    K2.CoderInfo.StorageClass = 'ExportedGlobal';
    
    % tunable parameter mapped to global const
    K3 = Simulink.Parameter;
    K3.Value = 0.3;
    K3.CoderInfo.StorageClass = 'Custom'; 
    K3.CoderInfo.CustomStorageClass = 'Const';
  2. Укажите что скрипт setup_tunable_params.m должен выполниться перед загрузками модели и что рабочее пространство MATLAB должно быть очищено, прежде чем модель закроется.

    1. В окне модели перейдите к вкладке Modeling и выберите Model Properties из выпадающего Model Settings.

    2. В диалоговом окне Model Properties, на вкладке Callbacks, выбирают PreLoadFcn. Введите setup_tunable_params для Model pre-load function.

    3. На вкладке Callbacks выберите CloseFcn. Введите clear K1 K2 K3; для Model close function.

    Каждый раз, когда вы открываете модель, переменные K1, K2, и K3 загружаются в базовое рабочее пространство. Можно просмотреть переменные и их классы памяти в Model Explorer.

  3. Сгенерируйте код и смотрите его.

    ПеременнаяКласс памятиСгенерированный код (3S CoDeSys 2.3)
    K1Model default

    K1 основная переменная локальной функции.

    FUNCTION_BLOCK SimpleSubsystem
    .
    .
    VAR
        K1: LREAL := 0.1;
        .
        .
    END_VAR
    .
    .
    END_FUNCTION_BLOCK
    K2ExportedGlobal

    K2 глобальная переменная.

    VAR_GLOBAL
        K2: LREAL := 0.2;
    END_VAR
    K3CoderInfo.CustomStorageClass установите на Const.

    K3 глобальная константа.

    VAR_GLOBAL CONSTANT
        SS_INITIALIZE: SINT := 0;
        K3: LREAL := 0.3;
        SS_STEP: SINT := 1;
    END_VAR

Сделайте параметры настраиваемыми Используя диалоговое окно параметров конфигурации

В этом примере показано, как сделать параметры настраиваемым использованием диалогового окна Model Configuration Parameters.

Модель plcdemo_tunable_params иллюстрирует эти шаги. Модель содержит блок Subsystem SimpleSubsystem это имеет три блока Усиления с настраиваемыми параметрами, K1, K2, и K3.

  1. Укажите что переменные K1, K2, и K3 должен быть инициализирован перед загрузками модели и что рабочее пространство MATLAB должно быть очищено, прежде чем модель закроется.

    1. Во вкладке Modeling и выбирают Model Properties из выпадающего Model Settings.

    2. В диалоговом окне Model Properties, на вкладке Callbacks, выбирают PreLoadFcn. Введите K1=0.1; K2=0.2; K3=0.3; для Model pre-load function.

    3. На вкладке Callbacks выберите CloseFcn. Введите clear K1 K2 K3; для Model close function.

  2. На вкладке Modeling и выбирают Model Settings, чтобы открыть диалоговое окно Configuration Parameters.

  3. Перейдите к панели Optimization. Укажите, что все параметры должны быть встроены в сгенерированном коде. Выберите Inlined для Default Parameter Behavior.

  4. Чтобы заменить встраивание и сделать отдельные параметры настраиваемыми, нажмите Configure. В диалоговом окне Model Parameter Configuration, от Source list, выбирают Referenced workspace variables.

  5. Ctrl +select параметры и нажимает Add to table >>.

    По умолчанию это диалоговое окно устанавливает все параметры на SimulinkGlobal класс памяти. Установите Storage class и Storage type qualifier как показано в этом рисунке. Для получения дополнительной информации о классах памяти смотрите Параметры блоков в Сгенерированном коде.

  6. Сгенерируйте код и смотрите его.

    ПеременнаяКласс памятиСгенерированный код (3S CoDeSys 2.3)
    K1SimulinkGlobal

    K1 основная переменная локальной функции.

    FUNCTION_BLOCK SimpleSubsystem
    .
    .
    VAR
        K1: LREAL := 0.1;
        .
        .
    END_VAR
    .
    .
    END_FUNCTION_BLOCK
    K2ExportedGlobal

    K2 глобальная переменная.

    VAR_GLOBAL
        K2: LREAL := 0.2;
    END_VAR
    K3CoderInfo.CustomStorageClass и набор Storage type qualifier к Const.

    K3 глобальная константа.

    VAR_GLOBAL CONSTANT
        SS_INITIALIZE: SINT := 0;
        K3: LREAL := 0.3;
        SS_STEP: SINT := 1;
    END_VAR