В этом примере показано, как задать пользовательскую линеаризацию для блока насыщения с помощью функции.
Откройте 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
, является структурой, которую программное обеспечение создает автоматически, когда вы конфигурируете линеаризацию блока Насыщения, чтобы использовать функцию. Функция строения считывает пределы насыщения из этой структуры данных.
В модели Simulink щелкните правой кнопкой мыши блок Насыщение и выберите 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.
Конфигурирование диалогового окна Спецификация линеаризации блоков обновляет модель, используя указанную функцию линеаризации для линеаризации Блока Насыщения. В частности, это строение автоматически заполняет Parameters
поле BlockData
структура, которая является входным параметром к функции строения.
Примечание
Вы можете добавить параметры функции, нажав. Используется для удаления выбранных параметров.
Задайте предел насыщения, который является параметром, требуемым функцией линеаризации блока Насыщения.
satlimit = 10;
Снова линеаризируйте модель. Теперь при линеаризации используется пользовательская линеаризация блока насыщения.
linsys_cust = linearize(sys,io)
linsys_cust = d = Constant Saturation 0.5 Static gain.
В рабочей точке модели вход в блок насыщения равен 10. Поэтому блок линеаризируется до 0,5, значение линеаризации задано в функции для контура насыщения.