Метод Циглера-Никольса
Готовый рецепт настройки от Циглера и Никольса — и его границы.
Метод Циглера-Никольса — эмпирические правила, дающие стартовые коэффициенты ПИД по двум измеренным параметрам: критическому усилению и периоду колебаний.
Идея метода
В 1942 году инженеры Джон Циглер и Натаниэль Никольс предложили практический рецепт настройки, который используется до сих пор. Идея: довести систему до границы устойчивости и по характеристикам колебаний на этой границе вычислить коэффициенты. Метод даёт не идеальную, но рабочую отправную точку, которую потом подкручивают вручную.
Процедура (метод критического усиления)
- Обнулите $K_i$ и $K_d$, оставьте только $K_p$.
- Постепенно увеличивайте $K_p$, пока система не выйдет на устойчивые незатухающие колебания постоянной амплитуды. Это критическое усиление $K_u$.
- Измерьте период этих колебаний $T_u$.
- Подставьте $K_u$ и $T_u$ в таблицу Циглера-Никольса.
| Регулятор | $K_p$ | $K_i$ | $K_d$ |
| P | $0.5 K_u$ | — | — |
| PI | $0.45 K_u$ | $0.54 K_u/T_u$ | — |
| PID | $0.6 K_u$ | $1.2 K_u/T_u$ | $0.075 K_u T_u$ |
Как работает под капотом: вычисляем коэффициенты
Допустим, эксперимент дал критическое усиление $K_u=20$ и период колебаний $T_u=3$ секунды. Посчитаем коэффициенты для всех типов регуляторов по таблице.
Ku, Tu = 20.0, 3.0
rules = {
"P": (0.5*Ku, None, None),
"PI": (0.45*Ku, 0.54*Ku/Tu, None),
"PID": (0.6*Ku, 1.2*Ku/Tu, 0.075*Ku*Tu),
}
print("регулятор Kp Ki Kd")
for name,(Kp,Ki,Kd) in rules.items():
ki = f"{Ki:6.2f}" if Ki is not None else " -- "
kd = f"{Kd:6.2f}" if Kd is not None else " -- "
print(f"{name:5} {Kp:6.2f} {ki} {kd}")Вывод:
регулятор Kp Ki Kd P 10.00 -- -- PI 9.00 3.60 -- PID 12.00 8.00 4.50
Метод за пару минут даёт разумные стартовые коэффициенты. ПИД получился с $K_p=12$, $K_i=8$, $K_d=4.5$ — отправная точка, от которой настройщик пляшет дальше. Существует и второй вариант метода — по отклику на ступень (по запаздыванию и наклону), удобный, когда систему опасно раскачивать до границы устойчивости.
Границы и предупреждения
Циглер-Никольс — не панацея. Его настройки обычно дают заметное перерегулирование (около 25%), что неприемлемо для многих задач. Метод требует довести систему до колебаний, что опасно или недопустимо для реальных установок (представьте раскачку реактора). Он плохо работает для объектов с большим запаздыванием. Поэтому в индустрии его используют как стартовую точку, а финальную настройку доводят вручную или современными методами оптимизации.
Современные альтернативы
За 80 лет после Циглера и Никольса появилось множество методов настройки. Правила Коэна-Куна учитывают запаздывание объекта и дают лучший результат для процессов с большим dead time. Метод лямбда-настройки (IMC) позволяет напрямую задать желаемую скорость отклика и вычислить коэффициенты под неё — он мягче и предсказуемее Z-N. Современные контроллеры умеют автонастройку (auto-tuning): сами проводят тест-эксперимент и вычисляют коэффициенты. Наконец, оптимизационные методы перебирают коэффициенты, минимизируя интегральный критерий ошибки (ISE, IAE). Но Циглер-Никольс остаётся в каждом учебнике как первый, простой и интуитивный рецепт — точка отсчёта, относительно которой оценивают всё остальное.
Частые ошибки
- Принимать Z-N настройку как финальную. Это лишь старт; почти всегда нужна доводка под требования по перерегулированию.
- Раскачивать опасный объект до границы. Для реальных установок используйте вариант метода по отклику на ступень, без вывода на колебания.
- Путать параллельную и стандартную формы при подстановке. Таблица Z-N выше — для параллельной формы ($K_p$, $K_i$, $K_d$).
Итоги
- Циглер-Никольс даёт стартовые коэффициенты по критическому усилению $K_u$ и периоду $T_u$.
- Настройки склонны к перерегулированию ~25% и требуют ручной доводки.
- Метод требует довести систему до колебаний — это не всегда безопасно; есть вариант по отклику на ступень.