В этом примере показано, как использовать slLinearizer взаимодействуйте через интерфейс, чтобы обработать в пакетном режиме, линеаризуют модель Simulink. Вы варьируетесь значения параметра модели и получаете, несколько открываются - и передаточные функции с обратной связью из модели.
Можно выполнить тот же анализ с помощью linearize команда. Однако, когда это необходимо, чтобы получить несколько открываются - и передаточные функции с обратной связью, особенно для крупномасштабной модели, slLinearizer может быть более эффективным.
scdcascade модель содержит пару каскадных циклов управления с обратной связью. Каждый цикл включает ПИ-контроллер. Модели объекта управления, 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]
Для анализа внутреннего цикла изменяйте усиления блока ПИ-контроллера внутреннего цикла, 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);