Единица 5 / 9

Алгоритмы управления: настройка с поддержкой ПИД и AI

Прибыль:

  • Способность объяснять и применять термины P, I, D и эффекты ПИД-регулятора к ИИ в правильном контексте.
  • Способность шаг за шагом применять методы Циглера-Николса и экспериментальные настройки с помощью ИИ.
  • Способность распознавать и устранять ловушки ПИД, такие как интегральное завершение, производный шум в рекомендациях ИИ.

Поддержание постоянной температуры духовки, поддержание скорости двигателя на желаемом уровне, балансировка угла дрона; В основе всех них лежит алгоритм управления. Наиболее распространенным из них является ПИД-регулятор, который является основой отрасли. ПИД; Он прост, надежен и помогает решить широкий круг задач. Но «простой» не означает «легкий в настройке»: неправильно установленный ПИД-регулятор будет колебаться, выходить за пределы диапазона, задерживаться или станет совершенно нестабильным. Искусственный интеллект здесь является ценным помощником: он объясняет термины PID, объясняет методы настройки, диагностирует типичные ошибки и пишет код настройки. Однако окончательная настройка производится на основе физического поведения вашей системы, а решение о стабильности остается за инженером. В этом модуле мы расскажем, как устанавливать, настраивать и проверять ловушки ФИД с помощью искусственного интеллекта.

Три термина PID

ПИД-регулятор реагирует на сигнал ошибки (e = целевой − измеренный) тремя способами:

срок

На что он смотрит?

Эффект

в крайнем случае

П (пропорциональный)

текущая ошибка

быстрый ответ

Колебания, постоянная ошибка

Я (целый)

Накопленная прошлая ошибка

Сбрасывает постоянную ошибку

перерегулирование, заводка, колебание

Д (производная)

Скорость изменения ошибки

Демпфирование уменьшает перерегулирование

Усиливайте шум

Устное резюме: П отвечает на вопросы «на каком расстоянии я сейчас нахожусь», Я «как долго я отсутствовал», Д «насколько быстро я приближаюсь». Хороший контроллер уравновешивает все три.

class PID: def __init__(self, Kp, Ki, Kd, output_min=-100, output_max=100): self.Kp, self.Ki, self.Kd = Kp, Ki, Kd self.out_min, self.out_max = output_min, output_max self.integral = 0,0 self.previous_error = 0,0 def вычислить(self, target, измеренное, dt): ошибка = цель - измерено # P p = self.Kp * error # I -- self.integral с защитой от завершения += error * dt i = self.Ki * self.integral # D -- производная чувствительность к шуму d = self.Kd * (error - self.previous_error) / dt self.previous_error = error out = p + i + d # Насыщаем выход и ограничиваем завершение, если выход > self.output_max: выход = self.out_max self.integral -= error * dt # антизавершение: отменить интегральный вывод elif < self.output_min: вывод = self.output_min self.integral -= error * dt return вывод

Этот код не является «обучающим PID», а представляет собой скелет, близкий к производственной логике: он включает в себя насыщение вывода и антизавершение. Многие простые PID, заданные ИИ, обходят эти две защиты; Без них, когда привод достигнет своего предела, интеграл увеличится, и система неожиданно выйдет за пределы допустимого диапазона.

Совет: при запросе у AI ПИД-регулятора скажите: «Добавьте выходное насыщение и защиту от завершения, примените производную при измерении к производному». Эти три дополнения преобразуют PID из учебника в PID поля.

Интегральный вывод и производный шум

Две классические ловушки являются наиболее распространенными причинами отказа ПИД:

Интегральный запуск: Когда привод достигает насыщения (например, двигатель уже работает на полную мощность), ошибка сохраняется, и интегральная составляющая продолжает расти. Этот завышенный интеграл приводит к большому перерегулированию, когда система достигает цели. Решение: остановка или откат интеграла, когда выходной сигнал насыщен (антизавершение, продемонстрированное в приведенном выше коде).

Производный шум: термин D принимает производную ошибки; Производная измерения с шумом намного более шумная и вызывает вибрацию привода. Решения: взять производную от измерения (производная измерения вместо ошибки), добавить фильтр нижних частот к производной.

# Уменьшение шума производной: производная измерения + filterd_raw = -(measured - self.previous_measured)/dt вместо ошибки

ИИ хорошо выявляет эти ловушки; Если вы скажете: «Мой ПИД-регулятор сильно превышает заданное значение», он рекомендует завершить работу. Но вы проверяете, измерив, работает ли исправление в вашей системе.

Сеттинг с Зиглер-Николсом

Классический метод определения выигрышей (Kp, Ki, Kd) с нуля — метод Циглера-Николса. Суть его: начинать только с Р и увеличивать Кр до тех пор, пока система не перейдет в установившееся колебание; Рассчитайте Kp, Ki, Kd по таблице с критическим коэффициентом усиления Ku и периодом колебаний Tu в этой точке.

контроллер

КП

Ти

Тд

П.

0,5·Ку

П.И.

0,45·Ку

Ту/1.2

ПИД

0,6·Ку

Ту/2

Ту/8

Шаги Циглера-Николса (план будет составлен ИИ): 1. Возьмем Ki=0, Kd=0. Просто запустите п.2. МЕДЛЕННО увеличивайте Kp до тех пор, пока не начнутся устойчивые устойчивые колебания.3. Это Кр = Ку (критический коэффициент усиления), период колебаний = Ту.4. Рассчитайте Кр, Ти, Тд по таблице; Ki = Kp/Ti, Kd = Kp*Td.5. Начните с этих значений, затем вносите экспериментальные изменения.

Внимание: Циглер-Николс намеренно доводит систему до предела устойчивости (устойчивые колебания). При выполнении этих действий на реальном оборудовании существует риск механического напряжения, перегрузки по току и других опасностей; Если возможно, сначала сделайте это в моделировании, а затем работайте с низким пределом мощности и аппаратным аварийным остановом. Ку, предложенный ИИ, является отправной точкой, он измеряется и проверяется в вашей системе.

Диагностика с использованием искусственного интеллекта

Вы можете диагностировать поведение PID, описав его ИИ. Симптом → возможное сопоставление причин:

симптом

возможная причина

Направление, которое подскажет ИИ

медленное сидение

Kp/Ki низкий

увеличить кп

Постоянная ошибка

I отсутствует или очень низкий

Ки добавить/увеличить

Перерегулирование + колебание

Kp/Ki высокий, нет D

Добавьте Kd, уменьшите Ki

Привод трясется

производный шум

Фильтровать/уменьшить D

Когда вы достигнете большого превышения

интегральное завершение

Добавить антизавершение

Слабая подсказка/Сильная подсказка

СЛАБЫЙ: «Укажите коэффициенты ПИД-регулятора». (Какая система? Как поведение? Есть ли какие-либо измерения? Приходят случайные числа.) СИЛЬНЫЙ: «Я настраиваю ПИД-регулятор для управления скоростью двигателя постоянного тока. В настоящее время Kp = 2, Ki = 0,5, Kd = 0. Он превышает 35 % на входе шага, и когда он достигает цели, происходит большое секундное отклонение; для стабилизации требуется много времени. Выборка 100 Гц. Перечислите возможные причины этих симптомов, которые звучат так: «Посоветуйте, в каком направлении мне следует изменить это, и скажите, как проверить, является ли перерегулирование интегральным сбоем».

Мини-кейс

Инженер по управлению Керем регулирует температуру экструдера. Благодаря приросту, предложенному ИИ, система быстро достигает цели, но при каждом изменении набора она делает большое превышение и медленно успокаивается. Керем объясняет ИИ симптом; AI подозревает интегральный сбой, поскольку нагреватель некоторое время остается на полной мощности (насыщении). Керем добавляет в ПИД-код защиту от завершения, и перерегулирование значительно уменьшается. Но теперь на выходе отопителя появилось небольшое мерцание; Он объясняет это тем, что член D усиливает шум датчика температуры, и добавляет к производной фильтр нижних частот. Наконец, он грубо проверяет результаты с помощью Циглера-Николса и выполняет экспериментальную точную настройку. ИИ обеспечивает быструю диагностику; Но Керем подтверждал каждое исправление, измеряя фактическую реакцию на переход — было ли исправлено заведение или исчезло мерцание, это можно было увидеть только графически.

Распространенные ошибки

  • Не удалось добавить к ПИД-регулятору насыщение на выходе и защиту от запуска, а также возникло сильное превышение предела привода.
  • Берем производную от производной зашумленного измерения и вибрируем привод.
  • Предполагая, что dt является постоянным, тогда как период выборки варьируется.
  • Выполнение теста Циглера-Николса на оборудовании без соблюдения мер безопасности.
  • Принятие доходов, полученных с помощью ИИ, как «окончательных» без проверки конкретной системы.
  • Изменение одного коэффициента усиления с очень большими шагами и доведение системы до нестабильности.

В заключение

  • ПИД; Он реагирует P (текущая ошибка), I (накопленная ошибка), D (скорость изменения ошибки).
  • Поле PID должно включать выходное насыщение, антизавершающий и производный фильтры.
  • Большое перерегулирование встроенного завода, производный шум вызывает вибрацию привода.
  • Циглер-Николс начинает набирать обороты; Это реализовано с помощью мер безопасности на аппаратном уровне.
  • ИИ быстро ставит диагноз от симптома до причины; Поправку проверяют измерением.
  • dt фактическое измеренное; Изменения в доходах происходят небольшими шагами и наблюдением.

Задача приложения

Выберите систему (настоящий двигатель/нагреватель или простую модель первого/второго порядка на Python) и попросите ИИ сгенерировать класс ПИД-регулятора с насыщением + антизавершением. Затем: (1) наблюдайте за поведением колебаний, начав только с P и увеличивая Kp, (2) добавьте Ki, чтобы устранить постоянную ошибку, и посмотрите, как увеличивается перерегулирование, (3) сравните влияние на большое перерегулирование при включении и выключении защиты от заводки. Постройте переходную характеристику на каждом этапе и отметьте, какой коэффициент усиления какое поведение меняет. Сравните выигрыши от Циглера-Николса с успехами, которые вы получили сами.