Jednostka 5 / 9

Algorytmy sterujące: strojenie obsługiwane przez PID i AI

Zyski:

  • Umiejętność wyjaśnienia i zastosowania terminów P, I, D oraz efektów regulatora PID do sztucznej inteligencji we właściwym kontekście
  • Możliwość przeprowadzenia krok po kroku metod Zieglera-Nicholsa i eksperymentalnych metod strojenia z pomocą AI
  • Umiejętność rozpoznawania i eliminowania pułapek PID, takich jak zwijanie całkowe, szum pochodny w zaleceniach AI

Utrzymywanie stałej temperatury piekarnika, utrzymywanie prędkości silnika na żądanej wartości, równoważenie kąta drona; Sercem każdego z nich jest algorytm sterujący. Najpopularniejszym z nich jest regulator PID, który stanowi podstawę branży. PID; Jest prosty, solidny i działa na szeroki zakres problemów. Ale „prosty” nie oznacza „łatwy do dostrojenia”: nieprawidłowo ustawiony PID będzie oscylował, przeregulował, opóźnił się lub stał się całkowicie niestabilny. Sztuczna inteligencja jest tu cennym pomocnikiem: wyjaśnia terminy PID, prowadzi przez metody strojenia, diagnozuje typowe pułapki i pisze kod strojenia. Jednakże ostatecznej regulacji dokonuje się na podstawie fizycznego zachowania systemu, a decyzja o stabilności należy do inżyniera. W tym rozdziale omawiamy sposób instalacji, strojenia i weryfikacji pułapek PID za pomocą sztucznej inteligencji.

Trzy warunki PID

PID reaguje na sygnał błędu (e = cel – zmierzony) na trzy sposoby:

termin

Na co patrzy?

Efekt

w skrajności

P (proporcjonalne)

bieżący błąd

szybka reakcja

Oscylacja, błąd trwały

Ja (całka)

Skumulowany błąd przeszłości

Resetuje błąd trwały

przeregulowanie, nawinięcie, oscylacja

D (pochodna)

Szybkość zmiany błędu

Tłumienie zmniejsza przeregulowanie

Wzmocnij hałas

Podsumowanie słowne: P odpowiada na pytania „jak daleko teraz jestem”, ja „jak długo mnie nie było”, D „jak szybko się zbliżam”. Dobry kontroler równoważy wszystkie trzy.

klasa PID: def __init__(self, Kp, Ki, Kd, wyjście_min=-100, wyjście_max=100): self.Kp, self.Ki, self.Kd = Kp, Ki, Kd self.out_min, self.out_max = wyjście_min, wyjście_max self.integral = 0.0 self.previous_error = 0.0 def obliczenie(self, target, zmierzone, dt): błąd = cel - zmierzony # P p = self.Kp * błąd # I -- self.integral z zabezpieczeniem przed zakończeniem += błąd * dt i = self.Ki * self.integral # D -- czuły na szum pochodny d = self.Kd * (error - self.previous_error) / dt self.previous_error = error out = p + i + d # Nasyca wyjście i ogranicza zwijanie, jeśli wyjście > self.output_max: wyjście = self.out_max self.integral -= błąd * dt # anti-windup: cofnij wyjście całki elif < self.output_min: wyjście = self.output_min self.integral -= błąd * dt powrót wyjście

Kod ten nie jest „treningowym PID”, ale szkieletem zbliżonym do logiki produkcyjnej: zawiera nasycenie wyjścia i zabezpieczenie przed windupem. Wiele prostych identyfikatorów PID nadanych przez sztuczną inteligencję omija te dwa zabezpieczenia; Bez nich, gdy siłownik osiągnie swój limit, całka zacznie puchnąć, a system nieoczekiwanie przeregulowa.

Wskazówka: prosząc sztuczną inteligencję o PID, powiedz „dodaj nasycenie wyjściowe i zabezpieczenie przed wiatrem, zastosuj pochodną pomiaru do składnika pochodnego”. Te trzy dodatki konwertują podręcznikowy PID na pole PID.

Całkowe nakręcanie i szum pochodny

Najczęstszą przyczyną awarii PID są dwie klasyczne pułapki:

Zrywanie całkujące: Kiedy siłownik się nasyca (np. silnik ma już pełną moc), błąd nadal występuje, a człon całkujący nadal rośnie. Ta zawyżona całka prowadzi do dużego przeregulowania, gdy system osiąga cel. Rozwiązanie: zatrzymanie lub wycofanie całki, gdy wyjście jest nasycone (zabezpieczenie przed windupem, pokazane w powyższym kodzie).

Szum pochodny: składnik D przyjmuje pochodną błędu; Pochodna zaszumionego pomiaru jest znacznie głośniejsza i będzie powodować wibracje siłownika. Rozwiązania: wzięcie pochodnej z pomiaru (pochodna pomiaru zamiast błędu), dodanie do członu pochodnego filtra dolnoprzepustowego.

# Redukcja szumu pochodnego: pochodna pomiaru + filterd_raw = -(zmierzona - self.previous_measured) / dt zamiast błędu

Sztuczna inteligencja jest dobra w identyfikowaniu tych pułapek; Jeśli powiesz „Mój PID znacznie przekracza wartość docelową”, zaleca się zamknięcie. Ale weryfikujesz, mierząc, czy poprawka działa w twoim systemie.

Spotkanie z Zieglerem-Nicholsem

Klasyczną metodą wyznaczania zysków (Kp, Ki, Kd) od podstaw jest metoda Zieglera-Nicholsa. Jego istota: rozpoczynanie tylko od P i zwiększanie Kp, aż układ przejdzie w trwałe oscylacje; Oblicz Kp, Ki, Kd z tabeli z uwzględnieniem wzmocnienia krytycznego Ku i okresu oscylacji Tu w tym punkcie.

kontroler

kp

Ti

Td

P.

0,5·Ku

P.I.

0,45·Ku

Tu/1,2

PID

0,6·Ku

Wt/2

Wt/8

Kroki Zieglera-Nicholsa (plan do wykonania przez AI):1. Przyjmij Ki=0, Kd=0. Po prostu uruchom P.2. POWOLI zwiększaj Kp aż do rozpoczęcia stabilnych, długotrwałych oscylacji.3. To Kp = Ku (wzmocnienie krytyczne), okres oscylacji = Tu.4. Oblicz Kp, Ti, Td z tabeli; Ki = Kp/Ti, Kd = Kp*Td.5. Zacznij od tych wartości, a następnie wprowadź eksperymentalne poprawki.

Uwaga: Ziegler-Nichols celowo doprowadza system do granicy stabilności (trwałe oscylacje). Robienie tego na prawdziwym sprzęcie wiąże się z ryzykiem naprężeń mechanicznych, przetężenia i niebezpieczeństwa; Jeśli to możliwe, wykonaj najpierw symulację, a następnie pracuj z niskim ograniczeniem mocy i wyłącznikiem awaryjnym sprzętowo. Ku sugerowane przez sztuczną inteligencję jest punktem wyjścia, jest mierzone i weryfikowane w Twoim systemie.

Diagnostyka wspomagana sztuczną inteligencją

Możesz zdiagnozować zachowanie PID, opisując je AI. Objaw → mapowanie możliwych przyczyn:

objaw

możliwa przyczyna

Kierunek, który zasugeruje AI

powolne siedzenie

Kp/Ki niskie

zwiększyć kp

Stały błąd

Jestem nieobecny lub bardzo niski

Ki dodaj/zwiększ

Przeregulowanie + oscylacja

Wysokie Kp/Ki, brak D

Dodaj Kd, zmniejsz Ki

Siłownik się trzęsie

szum pochodny

Filtruj/zmniejsz D

Kiedy osiągniesz duże przekroczenie

integralne zakończenie

Dodaj zabezpieczenie przed wiatrem

Słaba podpowiedź/silna podpowiedź

SŁABY: „Podaj wzmocnienia PID.” (Który system? Jak się zachowuje? Czy są jakieś pomiary? Przychodzą losowe liczby.) SILNY: „Dostosowuję PID do sterowania prędkością silnika prądu stałego. Obecnie Kp=2, Ki=0,5, Kd=0. Przekracza 35% na wejściu kroku, a kiedy osiąga wartość docelową, następuje duże drugie przekroczenie; ustalenie zajmuje dużo czasu. Próbkowanie wynosi 100 Hz. Lista możliwe przyczyny tych symptomów, które zyskują: „Zasugeruj, w którym kierunku powinienem to zmienić i powiedz mi, jak sprawdzić, czy przeregulowanie jest zakończeniem integralnym”.

Mini etui

Inżynier kontroli Kerem reguluje kontrolę temperatury wytłaczarki. Dzięki wzmocnieniom sugerowanym przez sztuczną inteligencję system szybko osiąga cel, ale przy każdej zmianie zestawu powoduje duże przeregulowanie i powoli się uspokaja. Kerem wyjaśnia AI symptom; AI podejrzewa integralne zakończenie, ponieważ grzejnik pozostaje przez chwilę z pełną mocą (nasycony). Kerem dodaje do kodu PID zabezpieczenie przed wiatrem, a przeregulowanie znacznie się zmniejsza. Ale teraz na wylocie grzejnika widać lekkie migotanie; Przypisuje to członowi D wzmacniającemu szum czujnika temperatury i dodaje do pochodnej filtr dolnoprzepustowy. Na koniec z grubsza potwierdza zyski metodą Zieglera-Nicholsa i przeprowadza eksperymentalne dostrajanie. Sztuczna inteligencja umożliwia szybką diagnozę; Jednak Kerem potwierdzał każdą korektę, mierząc rzeczywistą reakcję skokową – niezależnie od tego, czy nakręcenie zostało skorygowane, czy też zniknęło migotanie, można było to zobaczyć tylko graficznie.

Typowe błędy

  • Brak dodania nasycenia wyjściowego i zabezpieczenia przed nawijaniem do PID oraz duże przekroczenie limitu siłownika.
  • Biorąc pochodną z pochodnej zaszumionego pomiaru i wibrując element wykonawczy.
  • Zakładając, że dt jest stałe, natomiast okres próbkowania jest zmienny.
  • Wykonywanie testu oscylacji Zieglera-Nicholsa na sprzęcie bez środków bezpieczeństwa.
  • Akceptowanie zarobków wygenerowanych przez sztuczną inteligencję jako „ostatecznych” bez weryfikacji specyficznej dla systemu.
  • Zmiana pojedynczego wzmocnienia bardzo dużymi krokami i wpychanie systemu w niestabilność.

Podsumowując

  • PID; Reaguje za pomocą P (błąd bieżący), I (błąd skumulowany), D (stopień zmiany błędu).
  • Pole PID powinno uwzględniać nasycenie wyjścia, filtr antywindup i różniczkujący.
  • Duże przeregulowanie naciągu integralnego, hałas pochodny powoduje wibracje siłownika.
  • Ziegler-Nichols zaczyna zyskiwać; Jest realizowany ze środkami bezpieczeństwa w sprzęcie.
  • Sztuczna inteligencja szybko diagnozuje od objawu do przyczyny; Poprawkę sprawdza się poprzez pomiar.
  • dt faktycznie zmierzony; Zmiany zarobków dokonuje się małymi krokami i obserwacją.

Zadanie aplikacji

Wybierz system (prawdziwy silnik/nagrzewnicę lub prosty model pierwszego/drugiego rzędu w Pythonie) i poproś sztuczną inteligencję o wygenerowanie klasy PID z nasyceniem + zabezpieczeniem przed wiatrem. Następnie: (1) obserwuj zachowanie oscylacyjne, zaczynając tylko od P i zwiększając Kp, (2) dodaj Ki, aby wyeliminować błąd stały i zobacz, jak wzrasta przeregulowanie, (3) porównaj wpływ na duże przeregulowanie poprzez włączenie i wyłączenie zabezpieczenia przed nawijaniem. Narysuj reakcję na krok w każdym kroku i zanotuj, które wzmocnienie zmienia które zachowanie. Porównaj zyski Zieglera-Nicholsa z zyskami, które sam znalazłeś.