В этом примере показано, как использовать slLinearizer интерфейс для пакетной линеаризации модели Simulink. Можно изменять значения параметров модели и получать из модели несколько функций передачи с разомкнутым и замкнутым контуром.
Можно выполнить тот же анализ с помощью linearize команда. Однако при необходимости получения нескольких функций передачи с разомкнутым и замкнутым контуром, особенно для крупномасштабной модели, slLinearizer может быть более эффективным.
scdcascade модель содержит пару каскадных контуров управления с обратной связью. Каждый контур включает в себя PI-контроллер. Модели завода, G1 (внешний контур) и G2 (внутренняя петля), являются моделями LTI.
Используйте slLinearizer интерфейс для первоначального анализа динамики внутреннего цикла. Затем проанализируйте динамику внешнего контура.
mdl = 'scdcascade';
open_system(mdl);

slLinearizer Интерфейс для scdcascadesllin = 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]
Для анализа внутреннего контура варьируйте коэффициенты усиления блока контроллера PI внутреннего контура, 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.
Постройте график реакции bode для Li.
bodeplot(Li);

График величины для всех моделей изменяется в 3dB диапазоне. График фазы показывает наибольшее изменение, приблизительно 20 градусов, в интервале [1 10] рад/с.
Для анализа внешнего контура варьируйте коэффициенты усиления блока контроллера PI внешнего контура, 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);