PID kontrol yardım

Başlatan magnetron, 04 Ocak 2024, 17:42:56

Erol YILMAZ

Selam Firzen hocam, hazır yakalamışken sorayım.

Nadiren PID kontrolcü tasarlıyoruz ve ip gibi çalışıyor.
Daha çok PI kontrolcü yapıyoruz aslında. "D" kısmı bana stabiliteyi bozacak gibi geliyor.
Çalıştığı an, "bir coşku ve bayram havası" oluşup kutlamalar başladığı için,
o Amerikan plazası diliyle anlattığın terimleri hiç sorgulamıyoruz :)

Bu aşamadan önce veya sonra biraz da pratiğe yakın olarak ne yapmalıyız?

Firzen

Alıntı yapılan: Erol YILMAZ - 12 Ocak 2024, 12:45:38Selam Firzen hocam, hazır yakalamışken sorayım.

Nadiren PID kontrolcü tasarlıyoruz ve ip gibi çalışıyor.
Daha çok PI kontrolcü yapıyoruz aslında. "D" kısmı bana stabiliteyi bozacak gibi geliyor.
Çalıştığı an, "bir coşku ve bayram havası" oluşup kutlamalar başladığı için,
o Amerikan plazası diliyle anlattığın terimleri hiç sorgulamıyoruz :)

Bu aşamadan önce veya sonra biraz da pratiğe yakın olarak ne yapmalıyız?

Hocam aslında tüm sıkıntı ilk tasarımla alakalı. Mesela elinizde bir sistem var tasarımı nasıl yapıyorsunuz?
 Modelleme mi yaıpyorsunuz? (S domain de s^2 + s .... şeklinde yoksa State space mi dot(x) = Ax +Bu)
 Yada daha da pratik olarak veri toplayarak mı? Örneğin sisteme işarete gönderiyorum çıktısnı kaydediyor daha sonra modelleme mi yapıyorsunuz?
Bunlardan birini yapıyorsanız P I D parametresini tasarlaması kolay. İşin aslı D parametresini I parametresinden ziyade tasarlaması daha kolaydır. I parametresi çok çok küçük seçildiği için bir yanılmasa oluyor aslında.


Ders notlarımdan bir tane bir örnek koyup açıklama yazacağım buraya.
Kararsız...

Erol YILMAZ

Alıntı yapılan: Firzen - 12 Ocak 2024, 14:01:57Hocam aslında tüm sıkıntı ilk tasarımla alakalı. Mesela elinizde bir sistem var tasarımı nasıl yapıyorsunuz?
 Modelleme mi yaıpyorsunuz? (S domain de s^2 + s .... şeklinde yoksa State space mi dot(x) = Ax +Bu)
 Yada daha da pratik olarak veri toplayarak mı? Örneğin sisteme işarete gönderiyorum çıktısnı kaydediyor daha sonra modelleme mi yapıyorsunuz?

Uygulama genelde şöyle ilerliyor.
Sahada çalışırken ACİLEN bir kontrol algoritmasına ihtiyaç olduğunu anlıyoruz.
Tanıdığımız belki tek kontrol algoritması PID olduğu için C kodunu yazıyoruz.

Ve P-I katsayılarını tecrubelere göre tahmin etmeye çalışıyoruz.
Grafikleri de izleyerek genellikle 3-5 denemeden sonra katsayılar hangi aralıkta olduğunu belli ediyor.
Birkaç minik iterasyon ile sonuca ulaşıyoruz, şeklinde ilerliyor.

sedronjames

Aynen erol yılmaz hocanın dediği gibi oluyor. Sistem modelleme falan yoktu bizde. Nasıl olacak ki motorun parametreleri doğru düzgün belli değildi. Dc motor zaten kendi içerisinde kapalı çevrimde kararlı olduğu için PI katsayılarını falan ayarlamak kolay oluyor. Çıkış grafiğine bakıp tune ediyoruz. Hele ki 3 fazlı sistemlerde falan arada inverter var, onu nasıl modelleyeceğiz. Benim çalıştığım projelerde modelleme yoktu hiç. Karadüzen gidiyorduk.

M_B

@Firzen hocam,
Benimde bu konu ile ilgili sıkıntım var.
Şu an bir silecek motoru tabir edilen Reduktorlu motor ve ona bağlı AS5600 magnetik acı ölçüm entegresi ile motoru istediğim acıda durdurmak icin
çalışma yapıyorum.  PID kutuphane olarak ise
https://github.com/Majid-Derhambakhsh/PID-Library/tree/main/PID%20(c%20version) kullanıyorum.
PID değerlerini deneme yanılma yöntemiyle veriyorum.
SetPoint noktamı gecip tekrar geliyor. Benim istediğim ise set noktamı gecmeden yavaşca durdurmak.
Böyle bir tasarımda yapmamız gereken aşama tikler nelerdir. ( Not: İşin matematiğine boğulmadan ).

Not:
1sn de bir PID hesaplaması yapılıyor.
Motor PID cıkış değerine göre PWM olarak sürüluyor.




İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Firzen

#35
Alıntı yapılan: Erol YILMAZ - 12 Ocak 2024, 14:10:05Uygulama genelde şöyle ilerliyor.
Sahada çalışırken ACİLEN bir kontrol algoritmasına ihtiyaç olduğunu anlıyoruz.
Tanıdığımız belki tek kontrol algoritması PID olduğu için C kodunu yazıyoruz.

Ve P-I katsayılarını tecrubelere göre tahmin etmeye çalışıyoruz.
Grafikleri de izleyerek genellikle 3-5 denemeden sonra katsayılar hangi aralıkta olduğunu belli ediyor.
Birkaç minik iterasyon ile sonuca ulaşıyoruz, şeklinde ilerliyor.

Yani aslında grafikten (veriden) yola çıkarak P I D parametrelerini beliyorsun. Güzel, bu durumda yine tavsiyem "System Identification (sistem tanımlama)" olacak. Şimdi nasıl çalışıyor konusuna gelirsek : "https://www.picproje.org/index.php?topic=73440.0" Sene 2018'de bu konu hakkında kısaca bir bilgi vermişim. Burada Matlab kullandık ama aynı işi Python ile yapabiliyoruz. Güzelliği şu sistemi tanımladıktan sonra Katsayıları bulmamız inanılmaz kolay oluyor. (Notlarımı bir toparlayayım buraya da ekleyeceğim.)



13 Ocak 2024, 04:37:01
Alıntı yapılan: M_B - 12 Ocak 2024, 16:17:01@Firzen hocam,
Benimde bu konu ile ilgili sıkıntım var.
Şu an bir silecek motoru tabir edilen Reduktorlu motor ve ona bağlı AS5600 magnetik acı ölçüm entegresi ile motoru istediğim acıda durdurmak icin
çalışma yapıyorum.  PID kutuphane olarak ise
https://github.com/Majid-Derhambakhsh/PID-Library/tree/main/PID%20(c%20version) kullanıyorum.
PID değerlerini deneme yanılma yöntemiyle veriyorum.
SetPoint noktamı gecip tekrar geliyor. Benim istediğim ise set noktamı gecmeden yavaşca durdurmak.
Böyle bir tasarımda yapmamız gereken aşama tikler nelerdir. ( Not: İşin matematiğine boğulmadan ).

Not:
1sn de bir PID hesaplaması yapılıyor.
Motor PID cıkış değerine göre PWM olarak sürüluyor.




Hiç matematik olmadan diyorsan önce P katsayını manuel olarak belirle bir aşıma kadar ulaşsın. Ardından çok çok az miktarda D parametresi ver. D parametresi P parametresinden en az 10 kat düşük olsun başta. Bu senin sistemde overshoot (aşım)'unu azaltacaktır. Problem ise ardından steady-state error. Onun içinde I parametresini yine çok çok az değerden başlat ve çok az miktarda arttırarak git.
Kararsız...

Firzen

Arkadaşlar sorulara bakıyorum da herkes matematikten korkuyor. Demek istediklerinizi çok iyi anlıyorum ama bence bir ara forumda bir başlık açıp hafif bir kurs yapalım. Çünkü bu durum çok sıkıntı. Bir S-Domeninde modelleme bilmek size PID haricinde veya çok giriş çok çıkışlı ve giriş çıkışların birbirine bağlı olduğu sistemlerde nasıl bir kontrolör tasarlanması gerektiğini gösterecektir. Herkes mühendis olmak zorunda değil ama en azından temel bir sistem tanıma, Kalman filtresi ve kontrolör tasarım ve seçimini (bence) yapabilmeliyiz. Aramızda psikopat derece MCU tasarımcıları Power Electronic'ler var. Onlar'da bu ilk MCU şu bu işine girdiklerinde ama çok electronic olmasın deyip o zincirlerini kırmış insanlardır.
Kararsız...

M_B

Alıntı yapılan: Firzen - 13 Ocak 2024, 04:40:50Arkadaşlar sorulara bakıyorum da herkes matematikten korkuyor. Demek istediklerinizi çok iyi anlıyorum ama bence bir ara forumda bir başlık açıp hafif bir kurs yapalım. Çünkü bu durum çok sıkıntı. Bir S-Domeninde modelleme bilmek size PID haricinde veya çok giriş çok çıkışlı ve giriş çıkışların birbirine bağlı olduğu sistemlerde nasıl bir kontrolör tasarlanması gerektiğini gösterecektir. Herkes mühendis olmak zorunda değil ama en azından temel bir sistem tanıma, Kalman filtresi ve kontrolör tasarım ve seçimini (bence) yapabilmeliyiz. Aramızda psikopat derece MCU tasarımcıları Power Electronic'ler var. Onlar'da bu ilk MCU şu bu işine girdiklerinde ama çok electronic olmasın deyip o zincirlerini kırmış insanlardır.
Olur hocam,
Hatta önden söyleyin hangi konulara göz atalım calışalım.
Teşekkürler.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

mr.engineer

Alıntı yapılan: Firzen - 13 Ocak 2024, 04:40:50Arkadaşlar sorulara bakıyorum da herkes matematikten korkuyor. Demek istediklerinizi çok iyi anlıyorum ama bence bir ara forumda bir başlık açıp hafif bir kurs yapalım. Çünkü bu durum çok sıkıntı. Bir S-Domeninde modelleme bilmek size PID haricinde veya çok giriş çok çıkışlı ve giriş çıkışların birbirine bağlı olduğu sistemlerde nasıl bir kontrolör tasarlanması gerektiğini gösterecektir. Herkes mühendis olmak zorunda değil ama en azından temel bir sistem tanıma, Kalman filtresi ve kontrolör tasarım ve seçimini (bence) yapabilmeliyiz. Aramızda psikopat derece MCU tasarımcıları Power Electronic'ler var. Onlar'da bu ilk MCU şu bu işine girdiklerinde ama çok electronic olmasın deyip o zincirlerini kırmış insanlardır.

İşin teorisine de girerek bir PID tasarımının baştan sona nasıl yapıldığının anlatıldığı bir kurs çok iyi olur. Ücretli de olsa olur ben şahsen kesin katılırım.

sedronjames

Alıntı yapılan: M_B - 12 Ocak 2024, 16:17:01@Firzen hocam,
Benimde bu konu ile ilgili sıkıntım var.
Şu an bir silecek motoru tabir edilen Reduktorlu motor ve ona bağlı AS5600 magnetik acı ölçüm entegresi ile motoru istediğim acıda durdurmak icin
çalışma yapıyorum.  PID kutuphane olarak ise
https://github.com/Majid-Derhambakhsh/PID-Library/tree/main/PID%20(c%20version) kullanıyorum.
PID değerlerini deneme yanılma yöntemiyle veriyorum.
SetPoint noktamı gecip tekrar geliyor. Benim istediğim ise set noktamı gecmeden yavaşca durdurmak.
Böyle bir tasarımda yapmamız gereken aşama tikler nelerdir. ( Not: İşin matematiğine boğulmadan ).

Not:
1sn de bir PID hesaplaması yapılıyor.
Motor PID cıkış değerine göre PWM olarak sürüluyor.






nacizhane fikrim 1 sn çoook uzun bir periyot. imkanın varsa bu periyodu iyice kısalt. 1ms veya 10 ms yap. hocamın dediği parametre ayarlarını da yaparak aşımsız bir kontrol sağlayabilirsin.

arci03

Merhaba PID konusunda pic basic le bir proje yapmaya çalışıyorum amacım kutu içerisindeki sıcaklığı sabitlemek aklıma gelen her yöntemi densemde sabitlemeyi başaramadım sabitlemekten kastım 37,7 derecede durmasını istiyorum ama ya yükseliyor yada düşüyor dengeye gelmeye başlayınca bu sefer kapıyı açarak dengeyi bozduğumda ise tamamen saçmalıyor ve hata değerleri çok yükselip salınım yapmaya başlıyor.fiki ve öneri verirmisiniz. kazanç değerlerini deneme yanılma ile buluyorum

Erol YILMAZ

Alıntı yapılan: arci03 - 16 Ocak 2024, 18:49:22Merhaba PID konusunda pic basic le bir proje yapmaya çalışıyorum amacım kutu içerisindeki sıcaklığı sabitlemek aklıma gelen her yöntemi densemde sabitlemeyi başaramadım sabitlemekten kastım 37,7 derecede durmasını istiyorum ama ya yükseliyor yada düşüyor dengeye gelmeye başlayınca bu sefer kapıyı açarak dengeyi bozduğumda ise tamamen saçmalıyor ve hata değerleri çok yükselip salınım yapmaya başlıyor.fiki ve öneri verirmisiniz. kazanç değerlerini deneme yanılma ile buluyorum

Bence P katsayısını 4 te 1'e düşür... I katsayısını da duruma göre kıs, D yi iptal edebilirsin.

alikeskinkilic

#42
Alıntı yapılan: arci03 - 16 Ocak 2024, 18:49:22Merhaba PID konusunda pic basic le bir proje yapmaya çalışıyorum amacım kutu içerisindeki sıcaklığı sabitlemek aklıma gelen her yöntemi densemde sabitlemeyi başaramadım sabitlemekten kastım 37,7 derecede durmasını istiyorum ama ya yükseliyor yada düşüyor dengeye gelmeye başlayınca bu sefer kapıyı açarak dengeyi bozduğumda ise tamamen saçmalıyor ve hata değerleri çok yükselip salınım yapmaya başlıyor.fiki ve öneri verirmisiniz. kazanç değerlerini deneme yanılma ile buluyorum

sanırım kuluçka projesi.ısınmanın nispeten uzun sürdüğü koşullarda şöyle bir yöntem deneyebilirsiniz Sadece P veya P ve D kullanarak istenilen sıcaklığa olabildiğince hızlı yaklaşıp (artık katkı vermediğini yada çok az verdiğini hatadaki değişimleri, hızını v.b takip ederek bulabilirsiniz) tam tükenme aşamasında yada kendinizin belirleyeceği bir limite geldiğinde I devreye girerse birikmiş hata çok fazla yükselmeden tabiri doğrumu bilmem hafif gazla yoluna devam eder böylece salınım en aza indirilebilir.üstten taşma fazla olmadan hallolabilir.ısıtıcı sistemlerde sistem çıkış vermediğinde de belli bir miktar yükselme eğilimi zaten vardır yararı olabilir.siz genede bir bilene danışın bir miktar kalman,fuzzy falan lazım da olabilir.
Hep meraktan

Firzen

Alıntı yapılan: arci03 - 16 Ocak 2024, 18:49:22Merhaba PID konusunda pic basic le bir proje yapmaya çalışıyorum amacım kutu içerisindeki sıcaklığı sabitlemek aklıma gelen her yöntemi densemde sabitlemeyi başaramadım sabitlemekten kastım 37,7 derecede durmasını istiyorum ama ya yükseliyor yada düşüyor dengeye gelmeye başlayınca bu sefer kapıyı açarak dengeyi bozduğumda ise tamamen saçmalıyor ve hata değerleri çok yükselip salınım yapmaya başlıyor.fiki ve öneri verirmisiniz. kazanç değerlerini deneme yanılma ile buluyorum


Düzgün oturmamasının nedeni sistemin sıcaklık girdi çıktısının farklı time domainlerinde vermiş olduğu cevap aslında. Sıcaklık, kimyasal işlemler process control ile çözülür. Yani zaman geçikmeli (e^st). Bunun içinde PID control yapına e^st ekleyip çözmen lazım. Sensör verisi içinde en basit hali ile complementary filter yeterli.

Process Control - Padé Approximations (https://www.youtube.com/watch?v=3TK8Fi_I0h0&ab_channel=MATLAB)
Sensor için de - Complementary Filter (https://www.youtube.com/watch?v=BUW2OdAtzBw&ab_channel=Phil%E2%80%99sLab)


@alikeskinkilic şaşırttın Kalman, Fuzzy falan. Benim akademik konular. Bir ara Plaza ağzıyla nasıl gömülü sistemlere uyguladım falan konuşalım...
Kararsız...

alikeskinkilic

 :)  :)  dediğm gibi hocam ben strafordan kuluçkaya ısıtıcı olarak akkor lamba takıp civciv çıkaran taraftayım hala. bilginize çok saygı duymakla beraber hala birşey anlamıyorum bahsettiklerinizden.
Hep meraktan