В этом примере показано, как использовать 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);