В этом примере показано, как использовать slLinearizer
взаимодействуйте через интерфейс, чтобы обработать в пакетном режиме, линеаризуют модель Simulink. Вы варьируетесь значения параметра модели и получаете, несколько открываются - и передаточные функции с обратной связью из модели.
Можно выполнить тот же анализ с помощью linearize
команда. Однако, когда это необходимо, чтобы получить несколько открываются - и передаточные функции с обратной связью, специально для крупномасштабной модели, slLinearizer
может быть более эффективным.
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
, 6x4 ss
массив моделей, содержит передаточную функцию для каждой заданной комбинации параметра. Программное обеспечение использует начальные условия модели в качестве рабочей точки линеаризации.
Поскольку e1
постоянное открытие sllin
, r2yi
не включает эффекты внешнего цикла.
Постройте переходной процесс для r2yi
.
stepplot(r2yi);
Переходной процесс для всех моделей варьируется по 10%-й области значений. Время урегулирования для большинства моделей меньше 1,5 секунд.
Получите передаточную функцию внутреннего цикла в y2
, с внешним циклом открываются в e1
.
Li = getLoopTransfer(sllin,'y2',-1);
Поскольку программное обеспечение принимает положительную обратную связь по умолчанию и scdcascade
отрицательная обратная связь использования, вы задаете знак обратной связи с помощью третьего входного параметра. Теперь Li = -G2C2
.
Постройте предвещать ответ для Li
.
bodeplot(Li);
График величины для всех моделей варьируется по области значений на 3 дБ. График фазы показывает большую часть изменения, приблизительно 20 градусов, в [1 10] rad/s интервал.
Для анализа внешнего цикла изменяйте усиления блока ПИ-контроллера внешнего цикла, 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);
Переходной процесс в underdamped для всех моделей.
Чтобы получить чувствительность внешнего цикла на объекте выход, используйте y1
как аналитическая точка. Добавьте y1
как аналитическая точка к sllin
.
addPoint(sllin,'y1');
Получите чувствительность внешнего цикла в y1
.
So = getSensitivity(sllin,'y1');
Постройте переходной процесс So
.
stepplot(So);
Этот график показывает, что требуется приблизительно 15 секунд, чтобы отклонить воздействие шага на объекте выход, y1
.
Закройте модель Simulink
bdclose(mdl);