Задайте 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 щелкните правой кнопкой мыши блок Насыщение и выберите 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.

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

    Примечание

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

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

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

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

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

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

Похожие темы