Печалби:
- Възможност за обяснение и прилагане на 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 с печалбите, които сте открили сами.