Пакетная линеаризация для получения нескольких передаточных функций для переменных значений параметров

В этом примере показано, как использовать slLinearizer интерфейс для пакетной линеаризации модели Simulink. Вы варьируете значения параметров модели и получаете несколько передаточных функций в разомкнутом и замкнутом циклах от модели.

Можно выполнить тот же анализ, используя linearize команда. Однако, когда вы хотите получить несколько передаточных функций в разомкнутом и замкнутом циклах, особенно для крупномасштабной модели, slLinearizer может быть более эффективным.

Модель каскадного цикла

The scdcascade модель содержит пару каскадных циклов управления с обратной связью. Каждый цикл включает в себя ПИ-контроллер. Модели объекта управления, G1 (внешний контур) и G2 (внутренний цикл), являются моделями LTI.

Используйте slLinearizer интерфейс для начального анализа динамики внутреннего контура. Затем проанализируйте динамику внешнего контура.

mdl = 'scdcascade';
open_system(mdl);

Создание slLinearizer Интерфейс для scdcascade

sllin = slLinearizer(mdl)
 
slLinearizer linearization interface for "scdcascade":

No analysis points. Use the addPoint command to add new points.
No permanent openings. Use the addOpening command to add new permanent openings.
Properties with dot notation get/set access:
      Parameters         : [] 
      OperatingPoints    : [] (model initial condition will be used.)
      BlockSubstitutions : []
      Options            : [1x1 linearize.LinearizeOptions]

Изменение коэффициентов усиления контроллера внутреннего контура

Для анализа внутреннего контура варьируйте усиления блока ПИ-контроллера внутреннего контура, C2. Варьируйте пропорциональную составляющую (Kp2) и интегральная составляющая (Ki2) в области значений 15%.

Kp2_range = linspace(Kp2*0.85,Kp2*1.15,6);
Ki2_range = linspace(Ki2*0.85,Ki2*1.15,4);
[Kp2_grid, Ki2_grid] = ndgrid(Kp2_range,Ki2_range);

params(1).Name = 'Kp2';
params(1).Value = Kp2_grid;
params(2).Name = 'Ki2';
params(2).Value = Ki2_grid;

sllin.Parameters = params;

Kp2_range и Ki2_range задайте значения выборки для Kp2 и Ki2 параметры. Получение передаточной функции для каждой комбинации Kp2 и Ki2, вы используете ndgrid и создайте сетку параметров 6x4 с массивами сетки Kp2_grid и Ki2_grid. Вы конфигурируете Parameters свойство sllin со структурой params. Эта структура задает параметры, которые будут изменяться, и их сетчатые массивы.

Анализируйте общую передаточную функцию замкнутой системы для внутреннего цикла

Общая передаточная функция с обратной связью для внутреннего цикла с открытым внешним контуром равна передаточной функции от u1 на y2. Чтобы исключить эффекты внешнего контура, разорвите цикл на e1, y1m, или y1. В данном примере разорвать цикл на e1.

Добавить u1 и y2 в качестве точек анализа и e1 как постоянное открытие sllin.

addPoint(sllin,{'y2','u1'});
addOpening(sllin,'e1');

Получите передаточную функцию от u1 на y2.

r2yi = getIOTransfer(sllin,'u1','y2');

r2yi, a 6x4 ss массив моделей, содержит передаточную функцию для каждой заданной комбинации параметров. Программа использует начальные условия модели в качестве рабочей точки линеаризации.

Потому что e1 является постоянным открытием sllin, r2yi не включает эффекты внешнего контура.

Постройте график переходной характеристики для r2yi.

stepplot(r2yi);

Для всех моделей переходной характеристики варьируется в 10% области значений. Для большинства моделей времени урегулирования менее 1,5 секунды.

Анализируйте передаточную функцию внутреннего контура на выходе из объекта

Получите передаточную функцию внутреннего контура в y2, при открытом внешнем контуре на e1.

Li = getLoopTransfer(sllin,'y2',-1);

Потому что программное обеспечение принимает положительную обратную связь по умолчанию и scdcascade использует отрицательную обратную связь, вы задаете знак обратной связи используя третий входной параметр. Теперь, Li = -G2C2.

Постройте график отклика bode для Li.

bodeplot(Li);

График величины для всех моделей изменяется в 3dB области значений. График фазы показывает наибольшее изменение, приблизительно 20 степени, в интервале [1 10] рад/с.

Изменение коэффициентов усиления контроллера внешнего контура

Для анализа внешнего контура варьируйте усиления блока ПИ-контроллера внешнего контура, C1. Варьируйте пропорциональную составляющую (Kp1) и интегральная составляющая (Ki1) в области значений 20%.

Kp1_range = linspace(Kp1*0.8,Kp1*1.2,6);
Ki1_range = linspace(Ki1*0.8,Ki1*1.2,4);
[Kp1_grid, Ki1_grid] = ndgrid(Kp1_range,Ki1_range);

params(1).Name = 'Kp1';
params(1).Value = Kp1_grid;
params(2).Name = 'Ki1';
params(2).Value = Ki1_grid;

sllin.Parameters = params;

Подобно рабочему процессу конфигурирования сетки параметров для анализа внутреннего контура, вы создаете структуру, params, задающий сетку параметра 6x4. Перенастройте sllin.Parameters для использования новой сетки параметров. sllin теперь использует значения по умолчанию для Ki2 и Kp2.

Анализ передаточной функции замкнутой системы с ссылки на выход объекта

Удаление e1 из списка постоянных открытий для sllin перед продолжением анализа внешнего контура.

removeOpening(sllin,'e1');

Чтобы получить передаточную функцию с обратной связью от опорного сигнала, r, на выход объекта, y1m, добавить r и y1m как точки анализа на sllin.

addPoint(sllin,{'r','y1m'});

Получите передаточную функцию от r на y1m.

r2yo = getIOTransfer(sllin,'r','y1m');

Постройте график переходной характеристики для r2yo.

stepplot(r2yo);

Значение переходной характеристики в заниженном для всех моделей.

Анализ чувствительности внешнего контура на выходе объекта

Чтобы получить чувствительность внешнего контура на выходе объекта, используйте y1 в качестве точки анализа. Добавить y1 как аналитическая точка к sllin.

addPoint(sllin,'y1');

Получите чувствительность к внешнему контуру в y1.

So = getSensitivity(sllin,'y1');

Постройте график переходной характеристики So.

stepplot(So);

Этот график указывает, что отклонение шагового нарушения порядка на выходе объекта занимает приблизительно 15 секунд y1.

Закройте модель Simulink

bdclose(mdl);