PID

PID

PID FORMÜLÜ

Bu yazımızda PLC ile PID kontrolünün nasıl yapılacağını ve PID algoritmasını anlatacağız. PID otomasyon projelerinin %80’inde kullanılır. PID bir formüldür, belirli zaman aralıklarında çalıştırılarak hesaplanan sonuç çıkışa aktarılır. Formül hakkında bilgi için Vikipedi sitesini ziyaret ediniz.

PID formülünde kullanıcı tarafından belirlenen P oransal, I integral ve D türev parametrelerinin proses değerleri ile işlenmesi sonucunda çıkış değeri elde edilir. Aşağıdaki tabloda PID uygulamasının işlemlerini görebiliriz.

Bu tabloyu anlamaya çalışalım. PID formülü her saniye çalışmış ve Output sütununda çıkış değerini hesaplamıştır.

  • Error: Set değeri ile aktüel değer arasındaki farktır. Aktüel değer set değerinden büyük olursa eksi sonuç üretir. 9-12 saniyeler arasında eksi sonuç üretmiştir.
  • Last error: Bir saniye önceki hata değeridir. Tabloda bir satır yukarıdaki hata değeri ile aynı olduğunu görebilirsiniz.
  • Kp: P ile hatanın çarpımı sonucunda elde edilen değerdir. Hata artı olduğunda çıkışın artmasına, hata eksi olduğunda ise çıkışın azalmasına katkı sağlar 9-12 saniyeler arasında çıkışı azaltmıştır.
  • Ki: Ki değeri PID çalıştığı sürece oluşan hatanın toplamının I ile çarpımıdır. 0-5 saniyelerde hatayı toplayarak artmıştır. 6-8 saniyelerde hata sıfır olduğu için son değerinde kalmıştır. PID kontrolünde istenilen değer yakalandığında son çıkış değeri muhafaza edilir. Böylece aktüel değer istenilen seviyede tutulmaya çalışılır. 9-12 saniyelerde hata eksiye geçmiş fakat Ki hala artıdır. Süre ve hata miktarına bağlı olarak azalmaktadır. Hata ekside kalmaya devam ederse Ki eksi değerlere geçip toplamaya devam edecektir.
  • Kd: Kd PID uygulamalarının sadece 1/4’ünde kullanılır. Yavaş çalışan veya parazit alan sistemlerde kullanılmamalıdır. Son hesaplanan hatadan bir önceki hesaplanan hatanın türev ile çarpılması sonucunda hesaplanır.
  • Output: Hesaplanan Kp, Ki ve Kd değerlerinin toplamıdır. Genellikle 0-100 arasında skala yapılır.

PLC PROGRAMI

Yukarıda açıkladığımız PID algoritmasını şimdi PLC içerisinde çalıştıralım. Aşağıdaki resimde PID için yazılmış PLC kodunu görebilirsiniz. Bu PLC kodunu buradan indirebilirsiniz.

Bu örnekte röle çıkışlı bir PLC kullanılmıştır. Q0.1 ile ısıtıcı kontrol edilmektedir. ID1’ile PT100 okunmaktadır. İstenilen set değeri PT100’den okunan sıcaklık değerine bakılarak sabit tutulmak isteniyor.

Fulmatic 7 PLC‘de PT100 değeri 32 bit INTEGER olarak okunur. PLC kodunun bu bölümünde ID 1 ile okuduğumuz PT100 değerini ilk önce REAL sayı formatına çeviriyoruz. Daha sonra 100’e bölüyoruz. Artık MD4 adresinde test düzeneğimizdeki sıcaklık değerini virgüllü sayı olarak görebiliriz.

PID kontrol bloğunda bulunan parametreleri tanımlıyoruz. Bu parametreler tüm PLC programlarında benzerdir. Fulmatic SOFT yardım sayfalarında daha fazla bilgi bulabilirsiniz. Bazı parametreleri burada açıklamak istiyorum. Bir çoğumuz bir tane PID bloğu kullanarak prosesi çok iyi kontrol edebileceğimizi düşünürüz. Bu doğru değil, yazımın sonunda daha detaylı açıklayacağım.

  • PID: P oransal, I integral ve D türev parametreleri sabit sayı girilebildiği gibi, değişken adresleri de girilebilir. Sabit yerine değişken adresleri girerek prosesi değişen şartlara göre adapte edebiliriz. Örneğin bir kazanı ısıttığımızı varsayalım. Kazanda 100 KG. ürün olduğunda veya 1000 KG. ürün olduğunda farklı PID değerlerine ihtiyacımız olur.
  • PERIOD: Bu sayfanın başında PID formülünün her çalıştığında farklı değerler hesapladığını gördük. PID formülünün çalışma sıklığı ve hep aynı sürede çalışması sonucu etkiler. Periyot parametresi ile bu zamanı sabit tutabiliriz. Hızlı proseslerde 100, yavaş proseslerde 1000 olarak girilmesi uygun olacaktır.
  • TEMP 1: Sayfa başında PID formülü bölümünde anlatılan Ki değeridir. PID bloğunun en kritik değerlerinden biridir. PLC kodu içerisinde değiştirmek isteyebiliriz. Yazımın sonunda daha detaylı açıklayacağım.

PID bloğu hesaplanan çıkış değerini MD24 ile PWM komutuna set değeri olarak verir. MD24 PID bloğunda Q.MIN ve Q.MAX parametreleri ile 0.0-100.0 arasında olacak şekilde seçilmiştir. PWM bloğu periyodu 2000 milisaniyedir. MD24 çıkışın aktif olacağı yüzdeyi belirtir. 1 olduğunda çıkışın aktif olduğu süre 20, pasif olduğu süre 1980 milisaniye olacaktır. Rölelerin çekme ve bırakma zamanı yaklaşık 20 milisaniyedir %1’e tepki vermesi güçtür. Bu nedenle %2’nin altında ve %98 üstünde rölenin çalışmasını sınırladım. Böylece rölenin ömrünü uzatmış olduk. Uygulamanızda transistör çıkışlı PLC ile kontaktör çalıştırdığınızda da aynı şekilde yapmalısınız. Solidstate röle kullanırsanız bu sınırlamalara gerek olmayacaktır.

PID PARAMETRELERİNİN AYARLANMASI

En önemli konuya geldik. Bir çok PLC‘de OTO TUNING özelliği var. Fakat oto tuning ile tespit edilen değerler yeterli olmaz. Hata payı çok yüksektir. Ayrıca en doğru PID değerlerini bulsak dahi prosese etki eden diğer faktörlerden dolayı çoğunlukla hassas çalışmaz. PID özellikli proses kontrol cihazlarını farklı proseslerde kolaylıkla kullanırız. Ve çoğu zaman ideal değerleri yakalarız. Çünkü yalnız PID formülüne göre çalışmazlar, ilave kontroller eklenmiştir. Özellikle yavaş proseslerde tek başına PID’nin doğru çalışması mümkün değildir. Aşağıda yavaş çalışan bir PID örneği ile konuyu açıklayalım. Bu örnekte D türevi kullanmıyoruz. PID uygulamalarının 3/4’ünde kullanılmaz.

İlk önce en uygun P değerini bulmalıyız. I 0.0, D 0.0 olarak set edip uygun P değerini bulmak için birkaç deneme yapmalıyız. Yukarıdaki grafiklerde P sırasıyla 0.3, 0.6 ve 1.0 olarak set edilmiştir. İlk bakışta 2. grafik P 0.6 en iyi sonucu vermiş gibi görünebilir. Sayfa başındaki Excel tablosunu hatırlayın. I set değerine ulaşıncaya kadar hatayı toplayacak ve çıkışı artıracaktır. P 0.6 ve I devreye girdiğinde set değerinin üzerine çıkılacaktır. Set değerinin aşılması sorun değilse P 0.6 uygundur. Set değeri hiç aşılmasın istiyorsanız 1. grafik kullanım için daha uygundur. Set değerine ulaşmak için kalan mesafe integral etkisi ile kapatılabilir. En iyisi set değerine ulaşıncaya kadar P 0.3, ulaştıktan sonra P 0.6 yapılması olacaktır. Böylece ilk yükselişte set değeri aşılmaz, sonrasında ise salınım çok daha az olur. Zira yüksek P değeri salınıma pek izin vermez.

I integral değerini bir kaç deneme ile bulabiliriz. P’nin %1’ini I için kullanmak başlangıç için iyi bir seçim olur. I değeri büyük olursa PID formülüne etkisi hızlı olur ve salınımın frekansının artmasına neden olur. I değeri küçük olursa salınım frekansı küçük olur fakat genliği büyük olur. İdeal değeri bulduğumuzda ise prosese etki eden diğer faktörler nedeni ile hala istediğimiz gibi çalışmayabilir. Yukarıda bahsettiğim kritik noktaya şimdi geldik.

Sayfa başında P değerinin hata ile çarpılması sonucunda Kp değerini ve toplam hatanın I ile çarpılması sonucunda da Ki değerini hesaplamıştık. Kp hata artı olduğunda çıkış değerini artırır, eksi olduğunda ise çıkışı azaltır. Ki’de aynı şekilde etki yapar. Fakat Ki sürekli toplayarak çok büyük değerlere ulaşabilir. Set değeri ile aktüel değer aynı olduğunda Ki değeri hala çok büyük olabilir. Ve aktüel değerin set değerinin çok üstüne çıkmasın neden olabilir. Set değeri çok aşıldı ise aynı zamanda çokta düşecek demektir. Bu salınımı kontrol edebilmek için ilave bir kontrole ihtiyacımız vardır.

Sarılmanın önlenmesi (Wind-up) olarak isimlendirilen metodu uygulamalıyız. Wind-up için Ki değerini aktüel değer set değerine yaklaştığında sıfırlamamız gerekir. Böylece Ki değerinin biriktirdiği değerleri sıfırlamış, ve kontrol için daha doğru değerler hesaplaması için alan bırakmış oluruz.

Eklediğimiz bu kod ile ilk önce set değerinin %60’ının buluyoruz. Aktüel değer bulduğumuz değerden büyük olduğunda bir kereliğine MD32 Ki değerini sıfırlar. %60 kesin değildir. Uygulamanıza göre siz belirlemelisiniz. Ayrıca %60’ın altında sürekli sıfırlamakta doğru bir yöntem değildir. Eğer böyle yaparsak sadece P oransal değeri ile çalışmış oluruz. Bu hiçbir zaman %60’a ulaşamamak ile sonuçlanabilir. Bir defa sıfırlamak en doğru yöntemdir.

Sadece Wind-up bir çok sorunu çözebilir ama her zaman yeterli olmayabilir. Uygulamanıza göre farklı yöntemler bulmalısınız. Örneğin aktüel değerin set değerinin %80’ine ulaşıncaya kadar farklı PID değerleri ve sonrasında farklı PID değerleri kullanabilirsiniz. Set değerine ulaştıktan sonra özellikle P değerini büyütebilirsiniz, büyük P salınımı oldukça azaltır. Veya stabil olmuş bir tankta ilave ürün ekleneceği zaman Temp 1 Ki değerini manuel olarak artırabilirsiniz. Sıcaklı belli bir seviye ye ulaşınca manuel olarak Ki değerini azaltabilirsiniz.

Yukarıdaki grafikte P 0.3, I 0.0035 ile ısıtma başlatıldı. Aktüel değer set değerinin %60’ına ulaşınca wind-up noktasında Temp 1 sıfırlandı. Aktüel değer set değerine ulaşıldığında P 2.0 olarak set edildi. İlk bir kaç salınımdan sonra ±0.5 derece hata ile ısıtma sağlandı.

PID otomasyon uygulamalarınızda vazgeçilmez bir kontrol yöntemidir. Tek başına yeterli gelmese bile küçük ilaveler ile iyi çalışır.

Leave a Reply