Ünite 5 / 9

Kontrol Algoritmaları: PID ve AI Destekli Ayar

Kazanimlar:

  • PID kontrolcünün P, I, D terimlerini ve etkilerini AI'a doğru bağlamla açıklatıp uygulayabilme
  • Ziegler-Nichols ve deneysel ayar yöntemlerini AI yardımıyla adım adım yürütebilme
  • Integral windup, türev gürültüsü gibi PID tuzaklarını AI önerilerinde tanıyıp gidermeyi doğrulayabilme

Bir fırının sıcaklığını sabit tutmak, bir motorun hızını istenen değerde sürmek, bir dronun açısını dengelemek; hepsinin kalbinde bir kontrol algoritması vardır. Bunların en yaygını, endüstrinin bel kemiği olan PID kontrolcüdür. PID; basit, sağlam ve çok geniş bir problem yelpazesinde çalışır. Ama "basit" olması "ayarlaması kolay" anlamına gelmez: yanlış ayarlanmış bir PID salınım yapar, aşar, geç oturur ya da tümden kararsızlaşır. Yapay zeka burada değerli bir yardımcıdır: PID'in terimlerini açıklar, ayar yöntemlerinde yol gösterir, tipik tuzakları teşhis eder ve ayar kodunu yazar. Ancak nihai ayar, sisteminizin fiziksel davranışına bakılarak yapılır ve kararlılık kararı mühendise aittir. Bu ünitede PID'i AI ile nasıl kuracağınızı, ayarlayacağınızı ve tuzaklarını nasıl doğrulayacağınızı işliyoruz.

PID'in Üç Terimi

PID, hata sinyaline (e = hedef − ölçülen) üç şekilde tepki verir:

Terim

Neye bakar

Etkisi

Aşırısında

P (oransal)

Şu anki hata

Hızlı tepki

Salınım, kalıcı hata

I (integral)

Birikmiş geçmiş hata

Kalıcı hatayı sıfırlar

Aşım, windup, salınım

D (türev)

Hatanın değişim hızı

Sönümleme, aşımı azaltır

Gürültüyü yükseltir

Sözel özet: P "şimdi ne kadar uzaktayım", I "ne zamandır uzaktayım", D "ne kadar hızlı yaklaşıyorum" sorularına tepki verir. İyi bir kontrolcü üçünü dengeler.

class PID: def __init__(self, Kp, Ki, Kd, cikis_min=-100, cikis_max=100): self.Kp, self.Ki, self.Kd = Kp, Ki, Kd self.cikis_min, self.cikis_max = cikis_min, cikis_max self.integral = 0.0 self.onceki_hata = 0.0 def hesapla(self, hedef, olculen, dt): hata = hedef - olculen # P p = self.Kp * hata # I -- windup korumasi ile self.integral += hata * dt i = self.Ki * self.integral # D -- turev gurultuye duyarli d = self.Kd * (hata - self.onceki_hata) / dt self.onceki_hata = hata cikis = p + i + d # Cikisi doyur (saturate) ve windup'i sinirla if cikis > self.cikis_max: cikis = self.cikis_max self.integral -= hata * dt # anti-windup: integrali geri al elif cikis < self.cikis_min: cikis = self.cikis_min self.integral -= hata * dt return cikis

Bu kod bir "eğitim PID"i değil, üretim mantığına yakın bir iskelettir: çıkış doygunluğu (saturation) ve anti-windup içerir. AI'ın verdiği pek çok basit PID bu iki korumayı atlar; onlar olmadan aktüatör limitine dayandığında integral şişer ve sistem beklenmedik aşım yapar.

İpucu: AI'dan PID isterken "çıkış doygunluğu ve anti-windup ekle, türev terimine ölçüm türevi (derivative on measurement) uygula" deyin. Bu üç ekleme, ders kitabı PID'ini saha PID'ine dönüştürür.

Integral Windup ve Türev Gürültüsü

İki klasik tuzak, PID'in en sık başarısızlık nedenidir:

Integral windup: Aktüatör doyduğunda (örneğin motor zaten tam güçte) hata devam eder ve integral terimi büyümeye devam eder. Sistem hedefe ulaşınca bu şişmiş integral, büyük bir aşıma yol açar. Çözüm: çıkış doyduğunda integrali durdurmak veya geri almak (anti-windup, yukarıdaki kodda gösterildi).

Türev gürültüsü: D terimi hatanın türevini alır; gürültülü bir ölçümün türevi çok daha gürültülüdür ve aktüatörü titretir. Çözümler: türevi ölçümden alma (hata yerine ölçümün türevi), türev terimine alçak geçiren filtre ekleme.

# Turev gurultusunu azaltma: hata yerine olcum turevi + filtred_ham = -(olculen - self.onceki_olculen) / dt # olcum tureviself.d_filtreli = 0.8 * self.d_filtreli + 0.2 * d_ham # alcak gecirend = self.Kd * self.d_filtreli

AI bu tuzakları teşhis etmede iyidir; "PID'im hedefe ulaşınca büyük aşım yapıyor" derseniz windup'ı önerir. Ama düzeltmenin sisteminizde işe yarayıp yaramadığını ölçerek doğrularsınız.

Ziegler-Nichols ile Ayar

Kazançları (Kp, Ki, Kd) sıfırdan bulmak için klasik bir yöntem Ziegler-Nichols'tır. Özü: yalnızca P ile başlayıp sistem sürekli salınıma girene kadar Kp'yi artırmak; bu noktadaki kritik kazanç Ku ve salınım periyodu Tu ile tablodan Kp, Ki, Kd hesaplamak.

Kontrolcü

Kp

Ti

Td

P

0.5·Ku

PI

0.45·Ku

Tu/1.2

PID

0.6·Ku

Tu/2

Tu/8

Ziegler-Nichols adimlari (AI'a yaptirilacak plan):1. Ki=0, Kd=0 al. Sadece P calistir.2. Kp'yi kararli, surekli salinim baslayana kadar YAVASCA artir.3. Bu Kp = Ku (kritik kazanc), salinim periyodu = Tu.4. Tablodan Kp, Ti, Td hesapla; Ki = Kp/Ti, Kd = Kp*Td.5. Bu degerlerle basla, sonra deneysel ince ayar yap.

Dikkat: Ziegler-Nichols sistemi bilerek kararlılık sınırına (sürekli salınım) getirir. Bunu gerçek donanımda yaparken mekanik zorlanma, aşırı akım ve tehlike riski vardır; mümkünse önce simülasyonda yapın, donanımda ise düşük güç limiti ve E-stop ile çalışın. AI'ın önerdiği Ku bir başlangıç noktasıdır, sizin sisteminizde ölçülerek doğrulanır.

AI Destekli Teşhis

PID davranışını AI'a tarif ederek teşhis yaptırabilirsiniz. Semptom → olası neden eşlemesi:

Semptom

Olası neden

AI'ın önereceği yön

Yavaş oturma

Kp/Ki düşük

Kp'yi artır

Kalıcı hata

I yok veya çok düşük

Ki ekle/artır

Aşım + salınım

Kp/Ki yüksek, D yok

Kd ekle, Ki azalt

Aktüatör titriyor

Türev gürültüsü

D'yi filtrele/azalt

Ulaşınca büyük aşım

Integral windup

Anti-windup ekle

Zayıf Prompt / Güçlü Prompt

ZAYIF:"PID kazançlarını ver."(Hangi sistem? davranış nasıl? ölçüm var mı? Rastgele sayılar gelir.)GÜÇLÜ:"Bir DC motor hız kontrolü için PID ayarlıyorum. Şu an Kp=2, Ki=0.5, Kd=0.Basamak girdisinde %35 aşım yapıyor ve hedefe ulaşınca büyük bir ikinciaşım var; oturması uzun sürüyor. Örnekleme 100 Hz. Bu semptomlardan olasınedenleri sırala, hangi kazancı hangi yönde değiştirmemi öner ve büyükaşımın integral windup olup olmadığını nasıl test edeceğimi anlat."

Mini Vaka

Kontrol mühendisi Kerem, bir ekstruder sıcaklık kontrolünü ayarlıyor. AI'ın önerdiği kazançlarla sistem hedefe hızlı ulaşıyor ama her set değişiminde büyük bir aşım yapıp yavaşça oturuyor. Kerem semptomu AI'a anlatıyor; AI integral windup'tan şüpheleniyor çünkü ısıtıcı bir süre tam güçte (doygun) kalıyor. Kerem PID koduna anti-windup ekliyor ve aşım belirgin biçimde azalıyor. Ama şimdi de ısıtıcı çıkışında hafif titreme var; bunu D teriminin sıcaklık sensörü gürültüsünü yükseltmesine bağlıyor ve türeve alçak geçiren filtre ekliyor. Son olarak kazançları Ziegler-Nichols ile kabaca doğrulayıp deneysel ince ayar yapıyor. AI teşhiste hızlı yol gösterdi; ama her düzeltmeyi Kerem gerçek basamak yanıtını ölçerek doğruladı—windup düzeldi mi, titreme geçti mi, ancak grafikle görüldü.

Yaygın Hatalar

  • PID'e çıkış doygunluğu ve anti-windup eklemeyip aktüatör limitinde büyük aşım yaşamak.
  • Türevi gürültülü ölçümün türevinden alıp aktüatörü titretmek.
  • dt'yi sabit varsaymak, oysa örnekleme periyodu değişiyor.
  • Ziegler-Nichols salınım testini güvenlik önlemi olmadan donanımda yapmak.
  • AI'ın verdiği kazançları sisteme özgü doğrulamadan "kesin" kabul etmek.
  • Tek bir kazancı çok büyük adımlarla değiştirip sistemi kararsızlığa itmek.

Özetle

  • PID; P (şimdiki hata), I (birikmiş hata), D (hata değişim hızı) ile tepki verir.
  • Saha PID'i çıkış doygunluğu, anti-windup ve türev filtresi içermelidir.
  • Integral windup büyük aşıma, türev gürültüsü aktüatör titremesine yol açar.
  • Ziegler-Nichols kazanç için başlangıç verir; donanımda güvenlik önlemiyle uygulanır.
  • AI semptomdan nedene teşhiste hızlıdır; düzeltme ölçülerek doğrulanır.
  • dt gerçek ölçülür; kazanç değişiklikleri küçük adımlarla ve gözlemle yapılır.

Uygulama görevi

Bir sistemi (gerçek motor/ısıtıcı ya da Python'da basit bir birinci/ikinci derece model) seçin ve AI'a doygunluk + anti-windup içeren bir PID sınıfı ürettirin. Ardından: (1) yalnızca P ile başlayıp Kp'yi artırarak salınım davranışını gözleyin, (2) kalıcı hatayı gidermek için Ki ekleyin ve aşımın nasıl arttığını görün, (3) anti-windup'ı açıp kapatarak büyük aşım üzerindeki etkisini karşılaştırın. Her adımda basamak yanıtını çizin ve hangi kazancın hangi davranışı değiştirdiğini not edin. Ziegler-Nichols'tan çıkan kazançlarla kendi bulduğunuz kazançları kıyaslayın.