Этот пример показывает, как задать пользовательскую линеаризацию для блока насыщения с помощью функции.
Откройте модель Simulink®.
sys = 'configSatBlockFcn';
open_system(sys)
В этой модели пределами блока насыщения является -satlimit
и satlimit
. Текущее значение переменной satlimit
рабочей области равняется 10.
Линеаризуйте модель в образцовой рабочей точке с помощью линейных аналитических точек, заданных в модели. Выполнение так возвращает линеаризацию блока насыщения.
io = getlinio(sys); linsys = linearize(sys,io)
linsys = D = Constant Saturation 1 Static gain.
В образцовой рабочей точке вход к блоку насыщения равняется 10. Это значение является правильным на контуре насыщения. В этом значении блок насыщения линеаризует к 1.
Предположим, что вы хотите, чтобы блок линеаризовал к переходному значению 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, чтобы использовать функцию. Функция конфигурирования читает пределы насыщения из той структуры данных.
В модели Simulink щелкните правой кнопкой по блоку Saturation и выберите Linear Analysis> Specify Selected Block Linearization.
Диалоговое окно Block Linearization Specification открывается.
Проверяйте Specify block linearization using one of the following. Выберите Configuration Function из списка.
Сконфигурируйте функцию линеаризации:
Введите имя, которое вы дали своей функции насыщения. В этом примере именем функции является mySaturationLinearizationFcn
.
Задайте параметры функции. mySaturationLinearizationFcn
требует предельного значения насыщения, которое пользователь должен задать перед линеаризацией.
Введите имя переменной satlimit
в Parameter Value. Введите соответствующее описательное имя в столбце Parameter Name, SaturationLimit
.
Нажмите OK.
Конфигурирование диалогового окна Block Linearization Specification обновляет модель, чтобы использовать заданную функцию линеаризации для линеаризации Блока Насыщения. А именно, эта настройка автоматически заполняет поле Parameters
структуры BlockData
, которая является входным параметром к функции конфигурирования.
Можно добавить параметры функции путем нажатия. Используйте, чтобы удалить выбранные параметры.
Задайте предел насыщения, который является параметром, требуемым функцией линеаризации блока Saturation.
satlimit = 10;
Линеаризуйте модель снова. Теперь, линеаризация использует пользовательскую линеаризацию блока насыщения.
linsys_cust = linearize(sys,io)
linsys_cust = d = Constant Saturation 0.5 Static gain.
В образцовой рабочей точке вход к блоку насыщения равняется 10. Поэтому блок линеаризует к 0,5, значение линеаризации, заданное в функции для контура насыщения.