Устойчивость систем управления
Главный вопрос про любой регулятор: успокоится система или раскачается до разрушения.
Устойчивость — свойство системы возвращаться к равновесию (или оставаться ограниченной) после возмущения; неустойчивая система раскачивается неограниченно.
Регулятор может не просто плохо работать, а сделать систему неустойчивой: ошибка растёт от шага к шагу, амплитуда колебаний увеличивается, привод выходит на упоры. Понимание устойчивости — вопрос безопасности.
Затухание против расходимости
Рассмотрим простейшую дискретную систему $y_{k+1} = \lambda y_k$. Её поведение целиком определяет множитель $\lambda$:
- $|\lambda| \lt 1$ — каждое значение меньше предыдущего, $y \to 0$: устойчиво.
- $|\lambda| = 1$ — на границе: не растёт и не затухает.
- $|\lambda| \gt 1$ — значения растут: неустойчиво.
Это модель того, как ошибка эволюционирует в замкнутом контуре: коэффициенты регулятора задают эффективный $\lambda$, и плохая настройка делает $|\lambda| \gt 1$.
Считаем три режима
def evolve(lam, y0=1.0, steps=6):
y = y0
seq = [round(y, 4)]
for _ in range(steps):
y = lam * y
seq.append(round(y, 4))
return seq
print("lambda=0.7 (устойчиво): ", evolve(0.7))
print("lambda=1.0 (граница): ", evolve(1.0))
print("lambda=1.3 (неустойчиво):", evolve(1.3))Вывод:
lambda=0.7 (устойчиво): [1.0, 0.7, 0.49, 0.343, 0.2401, 0.1681, 0.1176] lambda=1.0 (граница): [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] lambda=1.3 (неустойчиво): [1.0, 1.3, 1.69, 2.197, 2.8561, 3.7129, 4.8268]
Как работает под капотом
Для линейных систем устойчивость определяют полюса (корни характеристического уравнения): в дискретном времени система устойчива, если все полюса лежат внутри единичной окружности ($|\lambda| \lt 1$); в непрерывном — если у всех отрицательная вещественная часть (левая полуплоскость). Колебательность задаёт мнимая часть, скорость затухания — вещественная. Анализ устойчивости (Найквист, Рауса-Гурвица, корневой годограф) — это проверка, где именно лежат полюса при выбранных коэффициентах.
Частые ошибки
- Считать, что больший коэффициент усиления всегда «лучше» — за порогом устойчивости система разносится.
- Игнорировать запаздывание в контуре (задержка датчика/привода) — оно сильно сужает запас устойчивости.
- Проверять устойчивость только в симуляции на коротком интервале — расходимость может проявиться позже.
Итог
- Устойчивая система возвращается к равновесию, неустойчивая — раскачивается.
- Для модели $y_{k+1} = \lambda y_k$ устойчивость задаёт $|\lambda| \lt 1$.
- Полюса внутри единичной окружности (дискретно) или в левой полуплоскости (непрерывно) — критерий устойчивости.
- Большое усиление и запаздывание — главные враги устойчивости.