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

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

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

mdl = 'configSatBlockFcn';
open_system(mdl)

В этой модели пределами блока насыщения является –satlimit и satlimit.

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

satlimit = 10;

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

io = getlinio(mdl);
linsys = linearize(mdl,io)
linsys =
 
  D = 
               Constant
   Saturation       0.5
 
Static gain.

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

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

function blocklin = mySaturationLinearizationFcn(BlockData)
% This function customizes the linearization of a saturation block. The
% linearization of the block is as follows
% BLOCKLIN = 0 when |U| > saturation limit
% BLOCKLIN = 1 when |U| < saturation limit
% BLOCKLIN = 0.5 when U = saturation limit

% Get the saturation limit specified in the parameters of the block.
satlimit = BlockData.Parameters.Value;

% Compute the linearization based on the input signal level to the block.
if abs(BlockData.Inputs.Values) > satlimit
    blocklin = 0;
elseif abs(BlockData.Inputs.Values) < satlimit
    blocklin = 1;
else
    blocklin = 0.5;
end

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

Вход к функции, BlockData, структура, которую программное обеспечение автоматически создает каждый раз, когда оно линеаризует блок. Когда вы задаете функцию конфигурирования линеаризации блока, программное обеспечение автоматически передает BlockData к функции. Если ваша функция конфигурирования требует дополнительных параметров, можно сконфигурировать блок, чтобы установить те параметры в BlockData.Parameters поле .

Задайте mySaturationLinearizationFcn как линеаризация для блока Controller.

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

  2. В диалоговом окне Block Linearization Specification выберите линеаризацию блока Specify с помощью одного из следующих.

  3. В выпадающем списке выберите Configuration Function.

  4. В текстовом поле введите имя функции mySaturationLinearizationFcn.

  5. Задайте предел насыщения в качестве параметра для функции. В столбце Значения параметров введите имя переменной satlimit.

  6. В столбце Названия параметра введите соответствующее описательное имя SaturationLimit.

  7. Нажать ОК.

В качестве альтернативы можно задать функцию конфигурирования программно.

satblk = 'configSatBlockFcn/Saturation';
set_param(satblk,'SCDEnableBlockLinearizationSpecification','on')
rep = struct('Specification','mySaturationLinearizationFcn',...
             'Type','Function',...
             'ParameterNames','SaturationLimit',...
	         'ParameterValues','satlimit');
set_param(satblk,'SCDBlockLinearizationSpecification',rep)

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

linsys_cust = linearize(mdl,io)
linsys_cust =
 
  D = 
               Constant
   Saturation       0.5
 
Static gain.

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

Похожие темы