exponenta event banner

Поля устойчивости модели Simulink

В этом примере показано, как вычислять классическое и дисковое усиление и фазовые поля контура управления, смоделированного в Simulink ®. Чтобы вычислить пределы стабильности, линеаризуйте модель, чтобы извлечь отклики с разомкнутым контуром в одной или нескольких интересующих рабочих точках. Затем используйтеallmargin или diskmargin для вычисления классических или дисковых полей стабильности, соответственно.

Контур управления MIMO

Для этого примера используйте модель Simulink airframemarginEx.slx. Эта модель основана на примере «Обрезка и линеаризация планера» (Simulink Control Design).

open_system('airframemarginEx.slx')

Система представляет собой двухканальный контур обратной связи. Установка является подсистемой с одним входом и двумя выходами Airframe Modelи контроллер представляет собой систему с двумя входами и одним выходом, входы которой являются нормальным ускорением az и скорость тангажа q, и чей выход является Fin Deflection сигнал.

Функции передачи шлейфа

Чтобы вычислить пределы усиления и поля фазы для этой системы обратной связи, линеаризуйте модель, чтобы получить функции передачи с разомкнутым контуром на выходах и входе установки. Это можно сделать с помощью точек анализа линеаризации типа переноса цикла. Дополнительные сведения о точках анализа линеаризации см. в разделе Задание части модели для линеаризации (Simulink Control Design).

Создайте точку анализа передачи шлейфа для входа завода, который является первым выходным портом q Control подсистема.

ioInput = linio('airframemarginEx/q Control',1,'looptransfer');

Аналогично, создайте точки анализа для выходных данных завода. Поскольку существует два вывода, укажите эти точки анализа как вектор объектов ввода-вывода линеаризации.

ioOutput(1) = linio('airframemarginEx/Airframe Model',1,'looptransfer');
ioOutput(2) = linio('airframemarginEx/Airframe Model',2,'looptransfer');

Линеаризация модели для получения функций передачи с разомкнутым контуром. В этом примере используется рабочая точка, указанная в модели. Передача контура на входе в установку - SISO, а передача контура на выходах - 2 на 2.

Li = linearize('airframemarginEx',ioInput);   % SISO
Lo = linearize('airframemarginEx',ioOutput);  % MIMO

Классическое усиление и границы фазы

Для вычисления классических полей усиления и полей фазы используйте allmargin. Для функции передачи с разомкнутым контуром, allmargin предполагает цикл отрицательной обратной связи.

Функция передачи с разомкнутым контуром, возвращаемая linearize команда - фактический линеаризованный отклик модели в точке анализа. Таким образом, для отклика с разомкнутым контуром L, отклик с замкнутым контуром всей модели является положительным контуром обратной связи.

Поэтому используйте -L сделать allmargin вычислить пределы устойчивости с положительной обратной связью. Вычислите классический коэффициент усиления и запас по фазе на входе в установку.

Si = allmargin(-Li)
Si = 

  struct with fields:

     GainMargin: [0.1633 17.6572]
    GMFrequency: [1.5750 47.5284]
    PhaseMargin: 44.4554
    PMFrequency: 5.3930
    DelayMargin: 14.3869
    DMFrequency: 5.3930
         Stable: 1

Структура Si содержит информацию о классических полях устойчивости. Например, Li.GMFrequency дает две частоты, при которых фаза отклика с разомкнутым контуром пересекается с -180 ° .Li.GainMargin дает запас усиления на каждой из этих частот. Запас усиления - это величина, на которую коэффициент усиления контура может изменяться на этой частоте при сохранении стабильности замкнутого контура.

Вычислите запас устойчивости на выходе завода.

So = allmargin(-Lo);

Поскольку существует два выходных канала, allmargin возвращает массив, содержащий одну структуру для каждого канала. Каждая запись содержит поля, вычисленные для этого канала с другим закрытым каналом обратной связи. Индексировать в структуру So для получения пределов устойчивости для каждого канала. Например, изучите поля относительно изменений усиления или фазовых изменений в q выход установки, который является вторым выходом.

So(2)
ans = 

  struct with fields:

     GainMargin: [0.3456 17.4301]
    GMFrequency: [3.4362 49.8484]
    PhaseMargin: [-78.2436 52.6040]
    PMFrequency: [1.5686 6.5428]
    DelayMargin: [313.5079 14.0324]
    DMFrequency: [1.5686 6.5428]
         Stable: 1

Коэффициент усиления на основе дисков и поля фазы

Дисковые поля обеспечивают более сильную гарантию стабильности, чем классические поля усиления и фазы. Дисковый анализ запаса моделирует усиление и фазовые вариации как сложную неопределенность реакции системы с разомкнутым контуром. Запас диска является наименьшей такой неопределенностью, которая совместима со стабильностью замкнутого цикла. (Общие сведения о полях диска см. в разделе Анализ стабильности с использованием полей диска.)

Для вычисления дисковых полей используйте diskmargin. Как allmargin, diskmargin команда предполагает наличие системы отрицательной обратной связи. Таким образом, использование -Li для вычисления дисковых полей на входе завода.

DMi = diskmargin(-Li)
DMi = 

  struct with fields:

           GainMargin: [0.4419 2.2628]
          PhaseMargin: [-42.3153 42.3153]
           DiskMargin: 0.7740
           LowerBound: 0.7740
           UpperBound: 0.7740
            Frequency: 4.2515
    WorstPerturbation: [1x1 ss]

Область DMi.GainMargin указывает на то, что коэффициент усиления при разомкнутом контуре на входе в установку может изменяться в любой момент от примерно 0,44 до примерно 2,26 без потери стабильности при разомкнутом контуре. Дисковые поля учитывают вариации на всех частотах.

Для функции передачи цикла MIMO, такой как ответ Lo на выходах установки существуют два типа дисковых полей устойчивости. Поля петли во время являются полями устойчивости в каждом канале с другим замкнутым контуром. Поля множественных контуров - это поля для независимых изменений коэффициента усиления (или фазы) в обоих каналах одновременно. diskmargin вычисляет оба.

[DMo,MMo] = diskmargin(-Lo);

Поля loop-at-a-time возвращаются как массив структуры DMo с одной записью для каждого канала. Например, изучите поля для вариаций усиления или фазовых вариаций в q выход установки с az замкнутый контур и сравните с классическими полями, заданными So(2) выше.

DMo(2)
ans = 

  struct with fields:

           GainMargin: [0.3771 2.6521]
          PhaseMargin: [-48.6811 48.6811]
           DiskMargin: 0.9047
           LowerBound: 0.9047
           UpperBound: 0.9047
            Frequency: 4.4982
    WorstPerturbation: [2x2 ss]

Поле многолучевого режима, MMo, учитывает петлевое взаимодействие, рассматривая одновременные изменения коэффициента усиления (или фазы) по всем каналам обратной связи. Это обычно дает наиболее реалистичную оценку запаса устойчивости для многолучевых систем управления.

MMo
MMo = 

  struct with fields:

           GainMargin: [0.6238 1.6030]
          PhaseMargin: [-26.0867 26.0867]
           DiskMargin: 0.4633
           LowerBound: 0.4633
           UpperBound: 0.4643
            Frequency: 3.6830
    WorstPerturbation: [2x2 ss]

MMo.GainMargin показывает, что коэффициенты усиления в обоих выходных каналах могут изменяться независимо по коэффициентам между примерно 0,62 и 1,60 без нарушения стабильности замкнутого цикла. MMo.PhaseMargin показывает, что стабильность сохраняется для независимых фазовых изменений в каждом канале до ± 26 °. Использоватьdiskmarginplot для графического анализа полей нескольких контуров.

diskmarginplot(-Lo)

Это показывает коэффициент усиления на основе диска и запас по фазе как функцию частоты. MMo значения, возвращенные diskmargin соответствуют самому слабому запасу диска по частоте.

Поля в нескольких операционных точках

При использовании linearize, можно предоставить несколько рабочих точек для создания массива линеаризаций системы. allmargin и diskmargin может работать с массивами линейных моделей для возврата полей в нескольких рабочих точках. Например, выполните линеаризацию системы планера при трех моментальных снимках моделирования.

Snap = [0; 2; 5];
LiSnap = linearize('airframemarginEx',ioInput,Snap);
LoSnap = linearize('airframemarginEx',ioOutput,Snap);

LiSnap представляет собой массив линейных моделей SISO 3 на 1, по одной для передачи цикла на входе установки, получаемом в каждый момент снимка. Аналогично, LoSnap представляет собой массив линейных моделей с 2 входами и 2 выходами, представляющих передачу цикла на выходах установки в каждый момент снимка. Вычислите классический коэффициент усиления и запас по фазе на входах установки в три раза.

SiSnap = allmargin(-LiSnap);

Каждая запись в массиве структуры SiSnap содержит классическую информацию о полях для соответствующего времени снимка. Например, изучите классические поля для второй записи, t = 2 с.

SiSnap(2)
ans = 

  struct with fields:

     GainMargin: [0.0171 18.2489]
    GMFrequency: [0.0502 51.4426]
    PhaseMargin: 93.1051
    PMFrequency: 2.8476
    DelayMargin: 57.0662
    DMFrequency: 2.8476
         Stable: 1

Вычислите маржи дисков на выходах завода.

[DMoSnap,MMoSnap] = diskmargin(-LoSnap);

Поскольку существует два канала обратной связи и три раза снимка, структурный массив, содержащий поля диска цикла в момент времени, имеет размеры 2 на 3. Первое измерение относится к каналам обратной связи, а второе - к моментальным снимкам. Другими словами, DMoSnap(j,k) содержит поля для канала j во время снимка k. Например, изучите поля диска во втором канале обратной связи во время третьего снимка, t = 5 с.

DMoSnap(2,3)
ans = 

  struct with fields:

           GainMargin: [0.1345 7.4338]
          PhaseMargin: [-74.6771 74.6771]
           DiskMargin: 1.5257
           LowerBound: 1.5257
           UpperBound: 1.5257
            Frequency: 24.1993
    WorstPerturbation: [2x2 ss]

Существует только один набор полей многолучевого режима для каждого снимка, поэтому MMoSnap является массивом структуры 3 на 1.

Как и ранее, можно также выводить на график поля нескольких контуров. Теперь существует три кривые, по одной для каждого снимка. Щелкните кривую, чтобы определить, какому времени снимка она соответствует.

diskmarginplot(-LoSnap)

См. также

| | | (Simulink Control Design)

Связанные темы