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

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

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

Поскольку изменения параметра этого примера не влияют на рабочую точку модели, вы обрабатываете в пакетном режиме, линеаризуют модель в одной рабочей точке. Если ваше приложение использует изменения параметра, которые влияют на рабочую точку модели, сначала обрезают модель для каждой комбинации значения параметров. Для примера, который использует linearize команда, смотрите, что Пакет Линеаризует Модель в Нескольких Рабочих точках, Выведенных из Изменений Параметра.

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

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

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

Откройте модель.

mdl = 'scdcascade';
open_system(mdl);

Используйте slLinearizer команда, чтобы создать интерфейс.

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]

Отображение Командного окна показывает информацию о slLinearizer интерфейс. В этом интерфейсе никакие параметры, чтобы еще варьироваться не заданы, таким образом, Paramaeters свойство пусто.

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

Для анализа внутреннего цикла изменяйте усиления блока ПИ-контроллера внутреннего цикла, 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 и создайте 6 x 4 сетки параметра с массивами сетки 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, 6 x 4 массива модели в пространстве состояний, содержит передаточную функцию для каждой заданной комбинации параметра. Программное обеспечение использует начальные условия модели в качестве рабочей точки линеаризации.

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

Постройте переходной процесс для r2yi.

stepplot(r2yi);

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

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

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

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

Поскольку программное обеспечение принимает положительную обратную связь по умолчанию и scdcascade отрицательная обратная связь использования, задайте знак обратной связи с помощью третьего входного параметра. $L_{i} = -G_{2}C_{2}$Теперь. getLoopTransfer команда возвращает массив пространства состояний (ss) модели, один для каждой записи в сетке параметра. SamplingGrid свойство Li совпадает со значениями параметров соответствующему ss модель.

Постройте предвещать ответ для$L_{i}$.

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, это задает 6 x 4 сетки параметра. Реконфигурируйте sllin.Parameters использовать новую сетку параметра. sllin теперь использует значения по умолчанию в Kp2 и Ki2.

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

Удалите 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 как аналитическая точка к sllin.

addPoint(sllin,'y1');

Получите чувствительность внешнего цикла в y1.

So = getSensitivity(sllin,'y1');

Постройте переходной процесс So.

stepplot(So)

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

Получите смещения линеаризации

Когда линеаризация пакета для изменений параметра, можно получить смещения линеаризации, которые соответствуют рабочим точкам линеаризации. Для этого установите StoreOffsets опция линеаризации в slLinearizer интерфейс.

sllin.Options.StoreOffsets = true;

Когда вы вызываете функцию линеаризации использование sllin, можно возвратить смещения линеаризации в info структура.

[r2yi,info] = getIOTransfer(sllin,'u1','y2');

Можно затем использовать смещения, чтобы сконфигурировать блок LPV System. Для этого необходимо сначала преобразовать смещения к требуемому формату. Для примера, который использует linearize команда, см. Приближение LPV Модели Конвертера Повышения.

offsets = getOffsetsForLPV(info);

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

bdclose(mdl);

Смотрите также

| | | | | | |

Похожие темы