Цикла формы и запаса устойчивости Спецификаций

В этом примере показано, как задать формы цикла и запасы устойчивости при настройке систем управления с помощью systune или looptune.

Фон

The systune и looptune команды настраивают параметры систем управления с фиксированной структурой, удовлетворяющие различным требованиям во временной и частотной областях. The TuningGoal пакет является репозиторием для таких требований проекта.

Цикл

The TuningGoal.LoopShape требование используется для формирования коэффициента усиления (ов) разомкнутой системы, конструкторского подхода, известного как формирование цикла. Для примера,

s = tf('s');
R1 = TuningGoal.LoopShape('u',1/s);

указывает, что реакция без разомкнутого контура, измеренная в местоположении «u», должна выглядеть как чистый интегратор (насколько это касается усиления). В MATLAB используйте AnalysisPoint блок, чтобы отметить местоположение «u», см. пример «Building Tunable Models» для получения дополнительной информации. В Simulink используйте addPoint метод slTuner интерфейс для маркировки «u» как точки интереса.

Как и в случае с другими спецификациями усиления, можно просто задать асимптоты нужной формы цикла с помощью нескольких частотных точек. Например, чтобы задать форму цикла с перекрестием усиления на 1 рад/с, склон -20 дБ/декада до 1 рад/с и наклон -40 дБ/декада после 1 рад/с, просто укажите, что коэффициент усиления на частотах 0.1,1,10 должен быть 10,1,0,01, соответственно.

LS = frd([10,1,0.01],[0.1,1,10]);
R2 = TuningGoal.LoopShape('u',LS);

bodemag(LS,R2.LoopGain)
legend('Specified','Interpolated')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Specified, Interpolated.

Требования к форме цикла являются ограничениями на отклике без разомкнутого контура L. В целях настройки они преобразуются в ограничения усиления с обратной связью на функции чувствительности S=1/(1+L) и дополнительная функция чувствительности T=L/(1+L). Использование viewGoal чтобы визуализировать форму целевого цикла и соответствующие ограничения по усилению на S (зеленый) и T (красный).

viewGoal(R2)

Figure contains an axes. The axes contains an object of type line. These objects represent Target loop shape, S bound, T bound.

Минимальное и максимальное усиление цикла

Вместо TuningGoal.LoopShape, можно использовать TuningGoal.MinLoopGain и TuningGoal.MaxLoopGain для задания минимальных или максимальных значений для коэффициента усиления цикла в конкретной частотной полосе. Это полезно, когда фактическая форма цикла около перекрестия лучше всего оставить алгоритму настройки, чтобы выяснить. Например, следующие требования определяют минимальное усиление цикла внутри полосы пропускания и характеристики свертывания вне полосы пропускания, но не определяют фактическую частоту среза или форму цикла рядом с перекрестием.

MinLG = TuningGoal.MinLoopGain('u',5/s);  % integral action
MinLG.Focus = [0 0.2];

MaxLG = TuningGoal.MaxLoopGain('u',1/s^2);  % -40dB/decade roll off
MaxLG.Focus = [1 Inf];

viewGoal([MinLG MaxLG])

Figure contains 2 axes. Axes 1 contains an object of type line. These objects represent Min loop gain, inv(S) bound. Axes 2 contains an object of type line. These objects represent Max loop gain, T bound.

The TuningGoal.MaxLoopGain требование основывается на том, что коэффициент усиления в разомкнутом и замкнутом контурах сопоставим, когда коэффициент усиления в цикле невелик (|L|1). В результате это может быть неэффективно при сохранении коэффициента усиления цикла ниже некоторого значения, близкого к 1. Например, предположим, что гибкие режимы вызывают скачки усиления сверх частоты среза и что вы должны держать эти скачки ниже 0,5 (-6 дБ). Вместо использования TuningGoal.MaxLoopGain, вы можете непосредственно ограничить коэффициент усиления L использование TuningGoal.Gain с циклом, открывающимся на «u».

MaxLG = TuningGoal.Gain('u','u',0.5);
MaxLG.Opening = 'u';

Если реакция разомкнутого контура нестабильна, убедитесь, что дополнительно отключили неявное ограничение устойчивости, сопоставленное с этим требованием.

MaxLG.Stabilize = false;

Фиг.1 показывает это требование, оцененное для отклика без разомкнутого контура с гибкими режимами.

Фигура 1: Ограничение усиления на L

Запасы устойчивости

The TuningGoal.Margins требование использует понятие дискового запаса для обеспечения минимальных сумм усиления и запасов по фазе на заданном циклом открывающем (ых) сайте (ах). Для циклов обратной связи MIMO это требование гарантирует стабильность для изменений усиления или фазы в каждом канале обратной связи. Коэффициент усиления или фаза могут изменяться во всех каналах одновременно и на разную величину в каждом канале. Для получения дополнительной информации см. запасы устойчивости в настройке системы управления». Например, следующий код применяет±6 дБ запаса по амплитуде и 45 степени запаса по фазе в местоположении «u».

R = TuningGoal.Margins('u',6,45);

В MATLAB используйте AnalysisPoint блок для маркировки местоположения «u» (для получения дополнительной информации см. раздел «Создание настраиваемых моделей»). В Simulink используйте addPoint метод slTuner интерфейс для маркировки «u» как точки интереса (см., Создают и конфигурируют интерфейс slTuner к Модель (Simulink Control Design)). Запасы устойчивости обычно измеряются на входах объекта управления или на выходах объекта управления или на обоих уровнях.

Целевые значения коэффициента запаса по амплитуде и фазе преобразуются в нормализованное ограничение усиления для некоторой соответствующей передаточной функции с обратной связью. Желаемые границы достигаются на частотах, где коэффициент усиления меньше 1. Использование viewGoal для проверки сконфигурированного требования.

viewGoal(R)

Figure contains 2 axes. Axes 1 is empty. This object represents Required margins. Axes 2 is empty. This object represents Required margins.

Затененная область указывает, где нарушается ограничение. После настройки, для настроенной модели T, можно использовать viewGoal(R,T) для просмотра настроенных частотно-зависимых полей на этом графике.

См. также

| | |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте