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

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

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

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

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

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

  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, возражает, присваивает значения и устанавливает классы памяти для этих констант. Для получения дополнительной информации о классах памяти смотрите Параметры блоков в Сгенерированном коде.

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

    1. В окне модели выберите File> Model Properties> Model Properties.

    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
    K3ExportedGlobal и набор CoderInfo.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. Выберите File> Model Properties> Model Properties.

    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. Выберите Simulation> Model Configuration Parameters.

  3. Перейдите к панели Optimization. Укажите, что все параметры должны быть встроены в сгенерированном коде. Выберите Inlined for 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
    K3ExportedGlobal и набор Storage type qualifier к Const.

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

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