Устойчивость: почему обратная связь раскачивает систему

Что значит «устойчивая система» и почему обратная связь способна раскачать объект.

Устойчивость — свойство системы возвращаться к равновесию после возмущения, а не уходить вразнос. Неустойчивая система с любого толчка расходится в бесконечность.

Интуиция устойчивости

Шарик на дне миски устойчив: толкните его — он покатается и вернётся в центр. Шарик на вершине купола неустойчив: малейший толчок — и он скатывается прочь, не возвращаясь. Системы управления бывают такими же. Устойчивая система после любого ограниченного возмущения успокаивается. Неустойчивая — раскачивается всё сильнее, пока что-нибудь не сломается или не сработает ограничение. Устойчивость — это требование №1: неустойчивая система бесполезна и опасна, как бы точно она ни попадала в уставку «в среднем».

Почему обратная связь может навредить

Парадокс: обратная связь, которая обычно помогает, способна сделать устойчивый объект неустойчивым. Причина — задержка. Регулятор реагирует на ошибку, но его воздействие доходит до выхода не мгновенно (динамика, запаздывание). Если регулятор слишком «резкий», он продолжает давить, когда выход уже перелетел цель, потом резко тянет назад, перелетает в другую сторону — и так с нарастающей амплитудой. Получается раскачка. Это та же причина, по которой трудно вести машину, глядя в зеркало с задержкой: вы корректируете слишком поздно и виляете всё сильнее.

# Слишком "резкий" регулятор с задержкой -> раскачка (неустойчивость)
def simulate(Kp, delay):
    setpoint, y = 1.0, 0.0
    history = [0.0]*delay      # выход доходит до регулятора с задержкой
    log = []
    for step in range(25):
        measured = history[-delay]     # регулятор видит СТАРЫЙ выход
        u = Kp * (setpoint - measured)
        y = y + 0.5*u                  # объект-интегратор
        history.append(y)
        if step % 4 == 0:
            log.append(round(y, 2))
    return log

print("умеренный Kp=0.8:", simulate(0.8, 3))
print("резкий   Kp=2.5:", simulate(2.5, 3))

Вывод:

умеренный Kp=0.8: [0.4, 1.52, 0.88, 0.89, 1.12, 0.96, 0.98]
резкий   Kp=2.5: [1.25, 1.56, -2.03, 11.98, -32.06, 91.55, -231.08]

При умеренном Kp выход немного поколебался, но остался ограниченным и сходится к 1.0 — система устойчива. При резком Kp=2.5 с той же задержкой амплитуда колебаний растёт от шага к шагу со сменой знака: 1.56, потом -2.03, потом 11.98, потом -32, 91, -231 — система пошла вразнос. Это и есть неустойчивость, порождённая обратной связью с задержкой. Вывод: усиление регулятора нельзя задирать бесконечно.

Как работает под капотом: полюса и устойчивость

На языке прошлого раздела устойчивость читается по полюсам замкнутой системы. Система устойчива тогда и только тогда, когда все полюса лежат в левой полуплоскости (отрицательная действительная часть). Полюс с положительной действительной частью означает слагаемое вида exp(+a·t) — экспоненциальный рост, расходимость. Полюс точно на мнимой оси — незатухающие колебания (граница устойчивости). Увеличивая усиление регулятора, мы двигаем полюса замкнутой системы; в какой-то момент они переходят в правую полуплоскость — система теряет устойчивость.

   рост амплитуды           затухание
   (неустойчиво)            (устойчиво)
        /\    /\               /\
       /  \  /  \             /  \  _
      /    \/    \           /    \/ \___
  ___/            \___   ___/
  полюс справа           полюс слева

Предельные циклы

В реальности неустойчивая система не уходит в бесконечность — её останавливают физические пределы: привод насыщается, механика упирается в упор. Тогда вместо расходящихся колебаний возникает предельный цикл — устойчивые колебания постоянной амплитуды, когда система мечется между ограничениями. Термостат с гистерезисом, который щёлкает «вкл-выкл», — простейший пример намеренного предельного цикла. Но непреднамеренный предельный цикл — это симптом болезни: слишком большое усиление, люфт или сухое трение. Если ваша система «жужжит» вокруг уставки, не успокаиваясь, ищите причину автоколебаний, а не пытайтесь задавить их ещё большим усилением.

Частые ошибки

  • Гнаться за быстродействием, забыв про устойчивость. Большое усиление ускоряет реакцию, но за гранью устойчивости превращает систему в генератор колебаний.
  • Недооценивать задержку. Чистое запаздывание (dead time) — главный враг устойчивости; даже небольшое усиление может раскачать систему с большой задержкой.
  • Считать «колебания = плохая настройка». Иногда колебания — признак приближения к границе устойчивости; лечится снижением усиления или добавлением демпфирующей D-составляющей.

Итоги

  • Устойчивая система возвращается к равновесию, неустойчивая — расходится с любого толчка.
  • Обратная связь с задержкой при большом усилении может раскачать даже устойчивый объект.
  • Критерий: все полюса замкнутой системы должны лежать в левой полуплоскости.
Проверьте себя
1. Какая система называется устойчивой?
AТа, что быстро реагирует
BТа, что после возмущения возвращается к равновесию, а не расходится
CТа, у которой нет статической ошибки
DТа, что не колеблется вообще
2. Почему обратная связь может сделать объект неустойчивым?
AИз-за шума датчика
BИз-за задержки: резкий регулятор давит с опозданием и раскачивает систему
CИз-за слишком точной модели
DОбратная связь не может навредить
3. Где должны лежать полюса замкнутой системы для устойчивости?
AВ правой полуплоскости
BВсе в левой полуплоскости (отрицательная действительная часть)
CНа мнимой оси
DВ начале координат