exponenta event banner

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

  4. В модели Simulink щелкните правой кнопкой мыши блок насыщения и выберите «Линейный анализ» > «Задать линеаризацию выбранного блока».

    Откроется диалоговое окно Спецификация линеаризации блоков (Block Linearization Specification).

  5. Установите флажок «Указать линеаризацию блока», используя одно из следующих значений. В списке выберите Configuration Function.

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

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

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

      Введите имя переменной satlimit в поле «Значение параметра». Введите соответствующее описательное имя в столбце «Имя параметра». SaturationLimit.

    3. Нажмите кнопку ОК.

    Настройка диалогового окна Спецификация линеаризации блоков обновляет модель для использования указанной функции линеаризации для линеаризации блока насыщения. В частности, эта конфигурация автоматически заполняет Parameters области BlockData структура, которая является входным аргументом для функции конфигурации.

    Примечание

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

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

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

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

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

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

Связанные темы