единица 5 / 9

Алгоритми за управление: PID и AI поддържана настройка

Печалби:

  • Възможност за обяснение и прилагане на P, I, D термините и ефектите на PID контролера към AI с правилния контекст
  • Възможност за извършване на Ziegler-Nichols и експериментални методи за настройка стъпка по стъпка с помощта на AI
  • Възможност за разпознаване и елиминиране на PID прихващания като интегрално навиване, производен шум в препоръките на AI

Поддържане на температурата на фурната постоянна, задвижване на скоростта на двигателя на желаната стойност, балансиране на ъгъла на дрон; В основата на всички тях е алгоритъм за управление. Най-често срещаният от тях е PID контролерът, който е гръбнакът на индустрията. PID; Той е прост, здрав и работи при широк кръг от проблеми. Но „прост“ не означава „лесен за настройка“: неправилно настроен PID ще осцилира, ще превиши, ще закъснее или ще стане напълно нестабилен. Изкуственият интелект е ценен помощник тук: той обяснява термините на PID, напътства през методите за настройка, диагностицира типични клопки и пише кода за настройка. Окончателната настройка обаче се прави чрез разглеждане на физическото поведение на вашата система и решението за стабилност принадлежи на инженера. В този раздел ние разглеждаме как да инсталирате, настройвате и проверявате PID прихващания с AI.

Три термина на PID

PID реагира на сигнала за грешка (e = цел − измерен) по три начина:

срок

Какво гледа?

Ефект

в крайност

P (пропорционално)

текуща грешка

бърза реакция

Трептене, постоянна грешка

I (интеграл)

Натрупана минала грешка

Нулира постоянната грешка

превишаване, навиване, колебание

D (производно)

Скорост на промяна на грешката

Демпфирането намалява превишението

Усилване на шума

Вербално обобщение: P отговаря на въпросите „колко съм сега“, I „от колко време ме нямаше“, D „колко бързо се приближавам“. Добрият контролер балансира и трите.

клас 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 calculate(self, target, измерено, dt): грешка = цел - измерено # P p = self.Kp * грешка # I -- self.integral със защита срещу навиване += грешка * dt i = self.Ki * self.integral # D -- чувствителен към производен шум d = self.Kd * (грешка - self.previous_error) / dt self.previous_error = error out = p + i + d # Насищане на изхода и ограничаване на навиването, ако output > self.output_max: output = self.out_max self.integral -= грешка * dt # anti-windup: отменя интегралния elif изход < self.output_min: изход = self.output_min self.integral -= грешка * dt връща изход

Този код не е "обучителен PID", а скелет, близък до производствената логика: той включва насищане на изхода и защита срещу навиване. Много прости PID, дадени от AI, заобикалят тези две защити; Без тях, когато задвижващият механизъм достигне своята граница, интегралът ще се издуе и системата ще прескочи неочаквано.

Съвет: Когато питате AI за PID, кажете „добавете насищане на изхода и анти-навиване, приложете производна при измерване към производен термин“. Тези три добавки преобразуват PID от учебника в полето PID.

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

Две класически клопки са най-честите причини за повреда на PID:

Интегрално навиване: Когато задвижващият механизъм се насити (напр. моторът вече е на пълна мощност), грешката продължава и интегралният член продължава да расте. Този раздут интеграл води до голямо превишение, когато системата достигне целта. Решение: спиране или връщане назад на интеграла, когато изходът е наситен (анти-windup, демонстрирано в кода по-горе).

Производен шум: Терминът D приема производната на грешката; Производната на шумно измерване е много по-шумна и ще вибрира задвижващия механизъм. Решения: вземане на производната от измерването (производна на измерването вместо грешката), добавяне на нискочестотен филтър към производния член.

# Намаляване на производния шум: производна на измерване + filterd_raw = -(измерено - self.previous_measured) / dt вместо грешка

AI е добър в идентифицирането на тези капани; Ако кажете „Моят PID превишава значително, когато достигне целта“, той препоръчва навиване. Но вие проверявате, като измервате дали корекцията работи на вашата система.

Обстановка с Ziegler-Nichols

Класически метод за намиране на печалби (Kp, Ki, Kd) от нулата е Ziegler-Nichols. Нейната същност: започва се само с P и се увеличава Kp, докато системата премине в продължително колебание; Изчислете Kp, Ki, Kd от таблицата с критичното усилване Ku и периода на трептене Tu в тази точка.

контролер

kp

Ти

Td

П.

0,5·Ku

П.И.

0,45·Ku

Вт/1.2

PID

0,6·Ku

Tu/2

Tu/8

Стъпки на Ziegler-Nichols (планът ще бъде направен от AI):1. Вземете Ki=0, Kd=0. Просто стартирайте P.2. БАВНО увеличете Kp, докато започне стабилна, продължителна осцилация.3. Това Kp = Ku (критично усилване), период на трептене = Tu.4. Изчислете Kp, Ti, Td от таблицата; Ki = Kp/Ti, Kd = Kp*Td.5. Започнете с тези стойности, след това направете експериментални корекции.

Внимание: Ziegler-Nichols умишлено довежда системата до нейната граница на стабилност (продължителни колебания). Съществува риск от механично напрежение, свръхток и опасност, когато правите това на реален хардуер; Ако е възможно, първо го направете в симулация, след това работете с ниска граница на мощността и E-stop в хардуера. Ku, предложен от AI ​​е отправна точка, той се измерва и проверява във вашата система.

AI-асистирана диагностика

Можете да диагностицирате поведението на PID, като го опишете на AI. Симптом → картографиране на възможна причина:

симптом

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

Посоката, която AI ще предложи

бавно седене

Kp/Ki ниско

увеличаване на kp

Постоянна грешка

I отсъства или е много нисък

Ki добавяне/увеличаване

Превишаване + трептене

Kp/Ki високо, без D

Добавете Kd, намалете Ki

Актуаторът се тресе

производен шум

Филтриране/намаляване на D

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

интегрално навиване

Добавяне на защита срещу навиване

Слаба подкана / Силна подкана

СЛАБО: „Дайте печалбите на PID.“ (Коя система? Как е поведението? Има ли измервания? Идват произволни числа.) СИЛНО: „Настройвам PID за управление на скоростта на DC мотор. В момента Kp=2, Ki=0,5, Kd=0. Той превишава 35% на стъпковия вход и когато достигне целта, има голямо второ превишаване; отнема много време, за да се установи. Извадката е 100 Hz. Избройте възможните причини от тези симптоми, които получават "Предложете в коя посока трябва да го променя и ми кажете как да тествам дали превишаването е интегрално навиване."

Мини калъф

Контролният инженер Керем регулира контрола на температурата на екструдер. С печалбите, предложени от изкуствения интелект, системата достига целта бързо, но при всяка промяна на настройката прави голямо превишаване и бавно се установява. Керем обяснява симптома на AI; AI подозира интегрално навиване, защото нагревателят остава на пълна мощност (наситен) за известно време. Kerem добавя анти-windup към PID кода и превишаването намалява значително. Но сега има леко трептене на изхода на нагревателя; Той приписва това на термина D, който усилва шума на температурния сензор и добавя нискочестотен филтър към производното. И накрая, той грубо потвърждава печалбите с Ziegler-Nichols и извършва експериментална фина настройка. AI има бърза диагностика; Но Керем потвърждаваше всяка корекция чрез измерване на действителната реакция на стъпката - независимо дали навиването е коригирано или трептенето е изчезнало, това може да се види само графично.

Често срещани грешки

  • Неуспешно добавяне на насищане на изхода и защита срещу навиване към PID и изпитване на голямо превишаване на ограничението на задвижващия механизъм.
  • Вземане на производната от производната на шумното измерване и вибриране на задвижващия механизъм.
  • Ако приемем, че dt е постоянен, докато периодът на вземане на проби варира.
  • Извършване на теста за колебания на Ziegler-Nichols върху хардуер без предпазни мерки.
  • Приемане на генерираните от AI печалби като „окончателни“ без специфична за системата проверка.
  • Промяна на едно усилване с много големи стъпки и тласкане на системата към нестабилност.

В обобщение

  • PID; Той реагира с P (текуща грешка), I (натрупана грешка), D (степен на промяна на грешката).
  • PID на полето трябва да включва насищане на изхода, филтър против навиване и производен филтър.
  • Голямо превишаване на интегралното навиване, производен шум причинява вибрации на задвижващия механизъм.
  • Зиглер-Никълс започва да печели; Реализира се с мерки за сигурност в хардуера.
  • AI е бърз в диагностицирането от симптом до причина; Корекцията се проверява чрез измерване.
  • dt действително измерено; Промените в приходите се правят с малки стъпки и наблюдение.

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

Изберете система (истински двигател/нагревател или прост модел от първи/втори ред в Python) и накарайте AI да генерира PID клас с насищане + анти-навиване. След това: (1) наблюдавайте поведението на трептене, като започнете само с P и увеличите Kp, (2) добавете Ki, за да елиминирате постоянната грешка и вижте как се увеличава превишаването, (3) сравнете ефекта върху голямото превишаване чрез включване и изключване на защитата от навиване. Начертайте реакцията на стъпката на всяка стъпка и отбележете кое усилване кое поведение променя. Сравнете печалбите от Ziegler-Nichols с печалбите, които сте открили сами.