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

Если вы не используете константы для параметров блоков в вашей модели, они появляются в сгенерированном коде как переменные. Можно выбрать, как эти переменные появляются в сгенерированном коде. Для получения дополнительной информации смотрите Параметры блоков в Сгенерированный код.

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

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

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

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

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

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

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

    Примечание

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

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

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

Модель plcdemo_tunable_params_slparamobj иллюстрирует эти шаги. Модель содержит блок Subsystem SimpleSubsystem который имеет три блока Gain с настраиваемыми параметрами, 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. В диалоговом окне Свойств модели» на вкладке «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 который имеет три блока Gain с настраиваемыми параметрами, K1, K2, и K3.

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

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

    2. В диалоговом окне Свойств модели» на вкладке «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, чтобы открыть диалоговое окно Параметров конфигурации.

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

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

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

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

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

    ПеременнаяКласс памятиСгенерированный код (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 и Storage type qualifier установлено на Const.

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

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