PID Kontrölde Formüllerin Anlamları?

İnsan beyni çok güzel PID kontrol yapar ama biz farkında degiliz, mesela;
Sabit 100km/saat le bir arabayı sürmek istersek, düz bir yolda 0 dan 100km/h çıkarmak için uygun viteste gaza arttırarak ayagımızı basarız(Oransal kontrol), ibre 100km/h ı gösterdiğinde artık ayagımızı o konumda sabitleriz(Set deger istediğimiz değere geldi, oraya kadar gelirken ayagımızın aldıgı yolu beynimiz biliyor ve orda tutuyor (integal sistemde artık etkili, oransal etki yok hata yok çünkü, istediğimiz hızdayız)
Daha sonra yukarı eğimli bir yola geldiğimizde aktuel(mevcut) değer yani ibre hızla aşağı düşer beyin hemen mevcut sistemin ataletine bakarak gaza daha fazla basma komutunu verir( Hatadaki değişim yüksek olduğundan burda beynin verdiği tepki türevin göstergesidir, integral ve oransal etkide toplamda elini taşın altına koyar fakat türev daha etkilidir).
 
Son düzenleme:
Bunlara ilaveten S7 PLC lerin hazır PID kutusunu kullanmayı pek önermem çünkü yanlış sonuçlar veriyor. Bunun yerine kendi PID algoritmanızı yazarsanız çok daha sağlıklı sonuçlara alırsınız.
 
PID bir kontrol yöntemidir. Piyasada en çok kullanılan kontrol yapısı olduğundan konu hakkında çok fazla fikri olmayan biri buna somut anlamlar yükleyebilir. Aslında sorun nasıl pid katsayıları hesaplanır değil elimdeki sistemi nasıl kontrol edeceğim olmalıdır. Kontrol elektroniğin önemli bir alanı olup en genel anlamda sistemlerin istenilen davranışı istenilen yada beklenilenin altında hata ile genellikle otomatik olarak gerçekleştirmesini sağlamayı amaç edinmiştir.

Yukarıda elimden geldiğince ve kısaca kontol nedir açıklamaya çalıştım. Bir kontrol probleminde ilk olarak (genelde) elindeki sistemin bir modeline ihtiyaç duyarsın. Bunun için bir çok yöntem olmakla beraber genellikle çok kolay bir şey değildir. ( Bu konuda ayrıntılı bilgi talep edersen başka kaynaklar önererek yardımcı olmaya çalışabilirim) Daha sonra sistemden beklediğin davranışa karar verir ve bu kriterleri sağlayan uygun kontrolör yapısını seçersin.( Bir çok endustriyel yapıda oldugu gibi senin sistemin için PID kontrolör büyük ihtimal yeterli olacaktır.) Daha sonra istediğin davranış kriterlerini sağlayan kontrolör katsayılarını belirlersin. Bu işlemleri yeterli kontrol bilgisi olmadan elde yapmak mumkun olmayacaktır. Aslında yeterli kontrol bilgisi olmadan yapman mumkun olmayacak desek daha dogru olur. Ancak matlab simulink yada (kök eğrisi biliyorsan) sisotools kullanarak deneme yanılma ile yapabilirsin :D

PID paramametrelerinden de kısaca bahsedeyim. PID (proportional-integral-derivative) açılımından da anlaşılacağı gibi oransal - integral ve türev kontrolleri sağlar. Birim geri beslemeli blok diyagramı yorumlayabildiğini umarak devam ediyorum.

Sisteme vereceğimiz referans giriş(çıkışın ulaşmasını istediğimiz değer)'den sistem çıkışını ölçerek elde ettiğimiz geri besleme değerini çıkararak bir hata ifadesi elde ederiz. Bu hata ifadesi kontrolör (PID) girişi olur ve bunun oransal türevsel ve integral işlemlerine tabi tutarak elde ettiğimiz değeri sisteme kontrol işareti olarak veririz. Bu kontrol işaretinin sistemden beklenen referansı en iyi (istenilen-en kısa-en az aşımlayada aşımsız vs vs) bir şekilde çıkışta oluşturmasını bekleriz. İşte bu PID kontrolör sisteme nasıl bir kontrol işareti versinki sistem çıkışı arzu edildiği gibi olsun. Sonuç olarak PID verilen hata işaretini bir kazanç ile çarparak elde ettiği değeri ,sonra bir kazanç ve integral işlemine tabi tutarak elde ettiği değeri ve son olarak bir kazanç ve türev işlemine tabi tutarak elde ettiği değerleri toplayarak sisteme verir. Az önce kullandıgım üç kazanç ifadesi her sistem için ayrı olarak hesaplanır ve Kp (oransal) Kd (türev) Ki (integral) ile gösterilir.

Ayrıca kontrolör tasarlama işi doğrusal sistemlerde sağladığı kolaylıklar nedeniyle sistemin transfer fonksiyonu bulunarak S düzleminde kolayca yapılır. S düzleminde PID ifadesi :
Kp + Kd*s + Ki/s veya (Kp*s+Kd*s^2+Ki)/s yada Kc[1+(1/Td)s +Ti/s] şeklinde gösterilir. Üçüde aynı şeydir.
Aynı zamanda PID ayrık olarak Z düzleminde, t(zaman) domeninde ve fark denklemleri ile de gösterilir. Ama ben yoruldum :D istersen devam ederim sonra.
Ve son olarak bu kazanç,türev,integral işlemi analog bir devre ile(opamp kapasite enduktans vs kullanarak) , bir mikrokontrolör(PIC vs kullanarak) ve PLC ile gerçeklenebilir.
PIC'i C programlama diliyle yazmak oldukça kolaydır. PLC de ise SCL ,STL veya LAD gibi diller mevcuttur. Siemens s7 300/400 plc lerde hazır PID blokları da bulunmaktadır ki sadece katsayıları girersin. Kontrol için DSP de kullanılabilir ve simulinkteki dizaynı oldugu gibi entegrenin içine gömebiliyorsunuz hiç bir programlamaya gerek kalmadan. Tabi PLC ve DSP senin sistemin için abartıya kaçar galiba.

Kolay gelsin.

Yukarda verdiğin katsayılar ise tam olarak anlamış olmasamda galiba Ziegler-Nichols katsayılarıdır ki kolayca PID katsayılarını hesaplamak için geliştirilmiş bir yöntem olup basit uygulamalarda istenilen sonuçları verdiği söylenir. Ama ben pek bilmediğim gibi tercih ve tavsiye etmem.

gerçekten çok guzel ve kısa bır acıklama yapmıssınız ustad:)
aslında benım gıbı kontrol sıstemlerıne cok aşina olmayan uygulamcılar dedıgınız gıbı pıd kontrole somut anlamlar yukleyerek uygulamayı nasıl yapabılecegını aramakta :D
uygulamaya daır kucuk ornekler verebılırsenız aslında,azda olsa bı fıkır sahıbı olabılırız dıye dusunuorum :)
tskler...
 
gerçekten çok guzel ve kısa bır acıklama yapmıssınız ustad:)
aslında benım gıbı kontrol sıstemlerıne cok aşina olmayan uygulamcılar dedıgınız gıbı pıd kontrole somut anlamlar yukleyerek uygulamayı nasıl yapabılecegını aramakta :D
uygulamaya daır kucuk ornekler verebılırsenız aslında,azda olsa bı fıkır sahıbı olabılırız dıye dusunuorum :)
tskler...

:D doğrusal zamanla değişmeyen tek giriş tek çıkışlı sistemlerin kontrolünü her biri bir yarı dönemlik üç derste öğreniyoruz. Yukardaki açıklama çok kısa aslında :D

bir örnek vermeye çalışayım. İntegral etkili bir sistem örneği olsun (yani giriş verdiğiniz sürece sürekli çıkış değeri artan sistemler, örneğin konum kontrolü gibi bir arabaya aynı yönde kuvvet uyguladığınız sürece sürekli konumu artar.)

Neyse örnek bir kap olsun. musluk ile doldurulmaya çalışılan ve tabandaki deliktende boşalan bir su kabı. Tabanındaki deliğin debisi musluğun debisinden düşük olsun. Bu durumda sistem çıkışı suyun yüksekliği olsun ve bu yükseklik sabit tutulmak istensin. Bu durumda "h" yüksekliği sürekli artacaktır. "h" yüksekliğine bir sensör koyarsınız ve sensör sinyal geldiğinde musluğu kapatan bir motor koyarsanuz. Bu kötü bir "on-off " kontrol olur. Çünkü o yüksekliğe ulaştığında musluk sürekli açılıp kapanacaktır.(değeri geçer, geçince musluk kapanır, kapanınca değerin altına iner, altına içince musluk açılır bu böyle gider). Bunun yerine ne yapılır. 2 sensör koyarsınız. Biri "h" a diğeride (h+x)'e. Su seviyesi (h+x)'e geldiğinde musluk kapanır. Su seviyesi "h"a düştüğünde tekrar musluk açılır. Bu daha mantıklı bir on-off kontrol. Ancak bu durumda da sistem çıkışı belli bir değer aralığında artıp artıp azalır. Musluğun açık veya kapalı iki durumu olduğunu ve açıkken sabit debide aktığı bir durum ele aldık.

Ancak daha hassas ve tam olarak istenen bir "h" değerine hem hızlı bir şekilde ulaşmasını hem aşım yapmamasını hemde tabandaki delikte oluşabilecek debi değişikliklerinin sonucu değiştirmemesi için ne yapılır. Bu durumda bir PID kontrol algoritması kullanılabilir. Yukarıdakinin yerine. PID algoritması kullanmak için ise iki şeye daha ihtiyaç var. Musluğun maksimum ve minimum debi arasında sürekli değerler alabilmesine ve "h" yüksekliğinin tam olarak ölçülmesine.

öncelikle bir hata değeri hesaplarız. istediğimiz "h" değerinden o andaki "h" değerini çıkararak. Bu hata değerinini bir oranla çarparak musluğu çeviren motora kontrol işareti olarak veririz. Bunun adı "P" kontrol yani oransal kontrol. Böylece hata oranı sıfır olana kadar sisteme enerji veriririz(yani istenen "h" ve sistem çıkışı "h" eşit olana kadar). O enerjide musluktan akan debiyi belirler. Bu "P" kontrolörde hatayı çarptığımız bir K katsayısı hesaplarız. Bu K katsayısı sistemin bu işi istediğimiz gibi ( istediğimiz hızde vs) yapmasını sağlar. Ancak bazen yetersiz kalır. Yani hata bilgisi bu sistemi istediğimiz gibi kontrol etmeye yetersiz gelebilir. Bu durumda PD, PI veya PID kullanırız. D: türev , I: integral.

doğal olarak PID : oransal, integral, türevsel kontrol gibi bir anlama gelir. Bu türev ve integral; hatanın türevi (yani hızı) ve integrali (yani o ana kadar yapılan toplam hata) bilgilerinide kullanır. Böylece sisteme vereceği enerjiyi senin isteklerini gerçekleştirmek üzere daha uygun belirlemeni sağlar.

Not1: bazen PID de yeterli gelmeyebilir :D
Not2: istediğiniz sonucu veren PID katsayılarını hesaplamak için biraz kontrol teorisi bilmek lazım
Not3: PID algoritma yada matematiksel ifade olarak elde edilir ve daha sonra mikrokontrolörler,plcler bazen analog devreler gibi cihazlarla gerçeklenir. (Bir çok yerde algoritmayı sizin programlamanızı gerektirmeyecek sadece parametreleri girebileceğiniz hazır PID blokları/fonksiyonları vardır. örneğin Simatic Manager)

Umarım açıklayıcı olmuştur.
 
Son düzenleme:
ne yalan soyleyım PID teorısını arastırdıgım bı cok dokumandan daha gercekcı ve yararlı bı yaklasım olmus ustad ellerıne saglık:)
pıyasada bı cok PID kontrol cıhazı bulunmakta ve sıstemı kurup baslangıcta ıstenılen degeri girdiğinizde içerisinde katsayıları hesaplayıp yeterli hassasiyette PID kontrol yapabilmekte ısıtıcı motor kontrol vb...ama daha kritik noktalarda katsayıları belırlemek ve bazende algorıtmayı olusturmak gerekıyor.
ama örneğiniz gercekten aydınlatıcı ve daha somut olmus teşekkür ederiz üstad:D
 
Moderatör tarafında düzenlendi:
Verilen bilgilere ek olarak oransal, integral ve türevsel kontrolörün sistemi nasıl etkilediğini
anlatmaya çalışacağım.

(hata=çıkışın olması istenen referans değeri - mevcut çıkış değeri, olduğu hatırlansın)

Oransal kontrolörün kontrol işareti üretebilmesi için mutlaka hata işaretine ihtiyaç vardır.
u=hata*p. Buradaki u kontrol işareti, hata ve p oransal katsayısı çarpılarak elde edilir.
Eğer hata yoksa oransal kontrolör çıkış üretemez. İşte bu sebeple de sürekli hal hatalarını oransal kontrolör ile tam olarak yokedemeyiz.(integral kontrolör ile sürekli halde de hataları yokederiz, ileride bahsedeceğim)

Diyelim ki bir aracı belirli bir çizgiyi takip etmesi için kontrol etmek istiyoruz. Burada referans değerimiz aracın takip edeceği çizgi olsun. Bu çizginin konum bilgisi ölçülüp aracın mevcut konumu ile karşılaştırılsın ve hata işareti elde edilsin. Kontrol işaretimizi de direksiyonu hareket ettiren bir motora uygulanan gerilim olarak düşünelim. [normalde kontrol işareti kuvvenlendirilerek, sisteme uygulanır. Yani kontrol algoritması(p, pi, pd,pid) bir işlemcide(mikroişlemci, dsp, plc, pc ya analog işlemci opamp vs.) üretildikten sonra elde edilen kontrol işareti güç katında(güç elektroniği devresi) kuvvetlendirildikten sonra sisteme uygulanır. ]

Eğer aracımız herhangi bir nedenle çizgi dışına çıkarsa(mesela çizgi sağa kıvrılsın ya da araca yandan rüzgar essin vs.) burada hata işareti oluşacak böylece kontrolör direksiyonu döndürecek kontrol işaretini üreterek aracın çizgiye oturmasını sağlayacaktır. Asıl mesele şudur, araç çizgiden 10 derece saptığında direksiyon 60 derece mi dönmeli ya da 20 derece mi dönmelidir. İşte bu etki oransal katsayı ile sağlanır. Oransal katsayı hatayı kuvvetlendirdiği için sistemin mevcut çıkışı ile o anki durumu karşılaştırarak sisteme verilecek enerjiye karar verir. Araç çizgi dışına çıktığı anda kontrolör aracı çizgiye oturtmak üzere direksiyonu döndüren motoru hareket ettirmek isteyecektir. Kontrolörün ilk anda direksiyonu 20 derece çevirdiğini farz edelim, daha sonra araç çizgiye biraz yaklaşacaktır, dolayısı ile de hata işareti azalacağından kontrol işareti oransal katsayı p ile orantılı olarak azalacak ve direksiyon yavaş yavaş 19 18... derece şeklinde döndürülerek ederek aracın çizgiye oturması sağlanacaktır. Oransal kontrolün etkisi hızlıdır. Ve sisteme verilecek enerjinin büyüklüğü ve hassasiyeti p, katsayısı ile belirlenir.

İşte kontrol aslında insan beyninin doğal yaptığı şeyi otomatik olarak yaptırmaya çalışmaktır.

Bir de bu işlemin 100 km/sa ile giden bir araçta on - off kontrol ile yapıldığını düşünelim. Araç çizgi dışına çıkınca direksiyonu tam sağa ya da tam sola kırsın, herhalde araba takla atar.

Oransal kontrolör hata büyük iken hızlı cevap verir ve hatayı giderir ancak hata azaldığından kontrol işareti de küçüleceğinden burada oransal etki azalacaktır.

Türevsel etkiye gelince, türev deyince akla gelmesi gereken şey değişimdir. Yani türevsel kontrolör hatanın değişimine bakar. Eğer hata değişimi varsa çıkış üretir, hata değişimi yoksa çıkış üretmez. Bir sabitin türevinin "0" olması ya da f(x)=2*x fonksiyonunun türevinin 2 olması bu fonksiyonların değişimini ifade etmektedir. Mesela f(t)=5 fonksiyonunu ele alalım. Burada t=0-sonsuz arasında değer almasına rağmen çıkış hep 5tir. Dolayısı ile değişim yoktur. f(x)=2*x fonksiyonunda ise her x değeri için çıkış 2 kat değerindedir. x 'e göre türev 2dir, fonksiyon girişin 2 katı şeklinde değişmektedir. Hani lisede fonksiyonların türev alma kurallarını öğretip de mantığını öğretmedikleri, ne işe yarar denilen türevin mantığını bilmek, türevsel etkiyi anlamak için gereklidir.

Araba örneğine geri dönersek, referans çizgi aniden sola doğru kıvrılsın. Araç çizgiden çıktığı anda burada hata işaretinde bir değişim olacaktır. Burada hata eğrisini gözönüne alırsanız bu eğrinin eğimi(yani türevi), türevsel katsayı ile çarpılıp motoru döndürecektir.
Türevsel katsayı hata değişimi büyükse sisteme verilen enerjiyi arttıracak, hata değişimi azaldıkça enerjiyi azaltacak, hata değişimi yoksa enerji vermeyecektir. Mesela PD (d:derivative türevsel, p:proportional oransal) kontrolde hem oransal hem de türevsel kontrolörün çıkışları toplanarak kontrol işareti elde edilir. D tek başına kullanılmaz.

İntegral kontrolör ise hatanın alanını hesaplar. Yani toplaya toplaya giderek, hata işareti olmasa bile kontrol işaretini üretebilir. Böylece sürekli hal hatalarını da yok eder. Ancak kontrolörü yavaşlatır ve zamanla şiştiği için kararsızlığı arttırabilir.

Aslında mantığı tam olarak anlamak için kontrol teorisindeki matematiksel ifadelere yorum getirmek ve biraz düşünmek lazım. Umarım bu bilgiler kafanızda bir kapı aralamaya yardımcı olur.
 
Arkadaşlar anlatılanlar teorik olarak güzel.Okuduğumuza göre ne basiti ıntegral ve türevi sıfır yapalım. Sadece p kontrolde out=kazanç x set değeri- proses değeri formülde ki çıkış
Nereye ait çıkış.Yani plc nin analog çıkışına yazılan bilgimidir yoksa ona etki eden br değermidir.Teşekkürler.
 
Integral ve türev değerlerini sıfırlarsanız ve sadece oransal katsayı ile çalışırsanız sisteminizde sürekli hal kalıcı hataya sahip olursunuz. yani sistem tam olarak set değerine oturamaz ve bir band limiti içerisinde sürekli bir hata değeri ile ilerler. e sizin sistem hatanızsa bu hata oransal katsayı k ile çarpılır ve k*e kadar set değerinin altı veya üstünde ilerler. Bu hatayı sıfıra indirmek için integral değeri de beraberinde uygulanmalıdır. Integral değeri hatayı sürekli toplayarak, feedback ile giriş değerini değiştirerek hatayı ileriki zamanda sıfıra çekmeye çalışır. PLC programı içerisinde yazdığınız PID veya PI algoritması ile aldığınız giriş sinyali sürekli PI çevrimine tabi tutularak çıkışı buna göre değiştirir. Tabii bu çıkış analog olursa, örneğin bir ısıtıcı rezistörünün direnç değerini sürekli değiştirerek ortam ısısını istenilen set değere hata sıfır olacak şekilde oturtmaya çalışır. Eğer sadece oransal kontrol yapsaydınız ısı değerindeki e hatasını sürekli olarak k katsayısı ile çarparak set değerine oturtamayacaktı. Yani siz 100 derece isterken sürekli 90 derecede kalacaktı.
 
300px-Pid-feedback-nct-int-correct.png

PID Kontrol Blok Diyagramı

300px-PI_controller.png

PI Kontrol Blok Diyagramı

Kod:
previous_error = setpoint - process_feedback

integral = 0
start:
  error          = setpoint - actual_position    //Hata üretilir
  integral       = integral + (error*dt)  //Hata ve bir önceki örneklemedeki hatalar toplanır
  derivative     = (error - previous_error)/dt   //Hatadaki değişim miktarı belirlenir
output   = (Kp*error) + (Ki*integral) + (Kd*derivative) //Çıkış bu değişkenlerin toplamıyla
  previous_error = error                         //Her çevrimde o andaki hata değeri saklanır
  wait(dt)                                       //Örnekleme zamanı kadar beklenir
goto start                                       //Bir sonraki çevrim için start a gidilir

PID_Compensation_Animated.gif


Yukarıdaki kodu wikipediadan aldım, anladığım kadarıyla kod pc tabanlı sistemler için verilmiş, PLC için düşünürsek(PLC de sürekli tarama işlemi oldugundan) "start" ve "goto start" arasındaki döngüyü "dt" zaman periyodunda çalıştırmak gerekli, bu kısmı Siemens S7 300-400 serisi için OB35 kullanılabilir, döngüye girmeden önce "integral" değeri sıfırlanmış, PLC tarafında bu değişkenlere sürekli sıfır basmamak için PID ye ilk start (çıkan kenarda) sıfırlayabiliriz ya da set point değiştiginde bu degerler sıfırlanabilir. SCL dili kullanarak bu kod PLC tarafına daha rahat adapte edilebilir.
Tabi matematiksel işlemler bitince "output" çıkışını scale yapıp kanala göndermek gerekiyor.

Kaynak:PID controller - Wikipedia, the free encyclopedia

https://www.kontrolkalemi.com/forum/konu/pid-nedir.20698/
 
selam sayın abysbana ldr yazılmış pıd örnekleri lazım benim yapacagım iş delta plc yle ısı kontrol ve onabağlı fan motorlarının sürücüyle kontrolunu sağlamak örnek ben plc ya sıcaklık alt limit ve üst limit verecem ona göre 0-10volt cıkış alacam ve bu alt limitle üst limiti hmı den operatör degeer girebilecek suanlık sadece pıd e örnek programlar arıyorum umarım bana yardımcı olabilirsiniz şimdiden sağolun
 

Forum istatistikleri

Konular
129,833
Mesajlar
930,576
Kullanıcılar
452,658
Son üye
yılmaz_yılan

Yeni konular

Geri
Üst