Задайте D-матричную систему для линеаризации блока Используя функцию

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

  1. Откройте модель Simulink®.

    sys = 'configSatBlockFcn';
    open_system(sys)

    В этой модели пределами блока насыщения является -satlimit и satlimit. Текущее значение переменной satlimit рабочей области 10.

  2. Линеаризуйте модель в рабочей точке модели с помощью линейных аналитических точек, заданных в модели. Выполнение так возвращает линеаризацию блока насыщения.

    io = getlinio(sys);
    linsys = linearize(sys,io)
    linsys =
     
      D = 
                   Constant
       Saturation         1
     
    Static gain.
    

    В рабочей точке модели вход с блоком насыщения равняется 10. Это значение является правильным на контуре насыщения. В этом значении блок насыщения линеаризует к 1.

  3. Предположим, что вы хотите, чтобы блок линеаризовал к переходному значению 0,5, когда вход падает на контур насыщения. Запишите функцию, которая задает линеаризацию блока насыщения, чтобы вести себя этот путь. Сохраните функцию в путь MATLAB®.

    function blocklin = mySaturationLinearizationFcn(BlockData)
    % This function customizes the linearization of a saturation block
    % based on the block input signal level, U:
    % BLOCKLIN = 0 when |U| > saturation limit
    % BLOCKLIN = 1 when |U| < saturation limit
    % BLOCKLIN = 1/2 when U = saturation limit
    
    % Get saturation limit.
    satlimit = BlockData.Parameters.Value;
    
    % Compute linearization based on the input signal 
    % level to the block.
    if abs(BlockData.Inputs(1).Values) > satlimit
        blocklin = 0;
    elseif abs(BlockData.Inputs(1).Values) < satlimit
        blocklin = 1;
    else
        blocklin = 1/2;
    end

    Эта функция конфигурирования задает линеаризацию блока насыщения на основе уровня входного сигнала блока. Для входных значений вне пределов насыщения блок линеаризует, чтобы обнулить. В пределах блок линеаризует к 1. Прямо на граничных значениях, блок линеаризует к интерполированному значению 0,5. Вход к функции, BlockData, структура, которую автоматически создает программное обеспечение, когда вы конфигурируете линеаризацию блока Saturation, чтобы использовать функцию. Функция конфигурирования читает пределы насыщения из той структуры данных.

  4. В модели Simulink щелкните правой кнопкой по блоку Saturation и выберите Linear Analysis> Specify Selected Block Linearization.

    Диалоговое окно Block Linearization Specification открывается.

  5. Проверяйте Specify block linearization using one of the following. Выберите Configuration Function из списка.

    Сконфигурируйте функцию линеаризации:

    1. Введите имя, которое вы дали своей функции насыщения. В этом примере именем функции является mySaturationLinearizationFcn.

    2. Задайте параметры функции. mySaturationLinearizationFcn требует предельного значения насыщения, которое пользователь должен задать перед линеаризацией.

      Введите имя переменной satlimit в Parameter Value. Введите соответствующее описательное имя в столбце Parameter Name, SaturationLimit.

    3. Нажмите OK.

    Конфигурирование диалогового окна Block Linearization Specification обновляет модель, чтобы использовать заданную функцию линеаризации в линеаризации Блока Насыщения. А именно, эта настройка автоматически заполняет Parameters поле BlockData структура, которая является входным параметром к функции конфигурирования.

    Примечание

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

     Альтернатива кода

  6. Задайте предел насыщения, который является параметром, требуемым функцией линеаризации блока Saturation.

    satlimit = 10;
  7. Линеаризуйте модель снова. Теперь линеаризация использует пользовательскую линеаризацию блока насыщения.

    linsys_cust = linearize(sys,io)
    linsys_cust =
     
      d = 
                   Constant
       Saturation       0.5
     
    Static gain.
    

    В рабочей точке модели вход с блоком насыщения равняется 10. Поэтому блок линеаризует к 0,5, значение линеаризации, заданное в функции для контура насыщения.

Похожие темы