PID Kontrölde Formüllerin Anlamları?

efe43

Üye
Katılım
25 Ara 2006
Mesajlar
419
Puanları
1
Yaş
41
syn arakdaşlar bütün pıd anlatan kitap ve dökümanlarda pıd formulleri mevcut ama bu paremetlerin ne anlama geldiğini anlamadım mesela bir dökümanda şöle yazıyor..
Kp=0.60Kc
Ki=2Kp/Pc
Kd=KpPc/8 bunların ne anlama geldiği ve neyi neye göre hesaplama yapacağız cihalarda kullanılan paremetreler pb it dt bunları biiyorum ama neyi neye göre yazıp yerleştireceğiz bu konuda geniş br anlatım yapacak arakdşlarınbilgi knusunda yardmlarını bekliyorum..şimdiden verdiğiniz bilgiler için teşekkürler

not:elimko e200 pıd yaptırmak istiyorum flow ile vana kontrolu bilginizze
 
Moderatör tarafında düzenlendi:
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.
 
Son düzenleme:
ziegler ve nichols un yöntemiyle PID parametrelerini tesbit edip iyi sonuç alan varmıdır acaba.Bu bence doğmamış çocuğa don biçmeye benziyor. Bu konuda en iyisi deneme yanılma dır.
 
Ziegler Nichols ile çok başarılı sonuçlar alabilinir. Ziegler Nichols deneme yanılma dediğin şeyin yönteme dökülmüş halidir, sisteme makul bir Kp vererek başlar, sistemi osilasyona gitirip tekrar çıkartarak Ki ve Kd değerlerini bulursun. Kafadan deneme yanılmaya girip zaman kaybetmeni önler. İster deneme yanılma ister Ziegler Nichols olsun denemeleri yapabilmen için sistemin kritik olmayan (insan hayatı ve maddi bakımdan) ve kararlı bir sistem olması da gerekli tabi ki.
Yapabiliyorsanız Analog Input-Output kartlı bir PLC kullanıp sisteme birim basamak verip basamak cevabına bakabilir ve basamak cevabını excel'e çekip MATLAB'a atarak sisotool ile sistem transfer fonksiyonunu belirlersiniz. Daha sonra da PID kontrol paramatrelerini çıkartıp, ufak sabunlamalarla sisteme uygulayabilirsiniz.
 
ABYS hocam pic i c ile yazmak kolay demişsiniz. buna ufak bi örnek verebilirmisiniz.
yani bu türevi integrali alıp bir motoru süren bi program örneği verebilirmisiniz.
çünkü ben okuyorum okuyorum bu pid i anlayamıyorum. tamam matematik kısmını anladım ama bununla ilgili program nasıl yazılır onu çözemedim.
 
ABYS hocam pic i c ile yazmak kolay demişsiniz. buna ufak bi örnek verebilirmisiniz.
yani bu türevi integrali alıp bir motoru süren bi program örneği verebilirmisiniz.
çünkü ben okuyorum okuyorum bu pid i anlayamıyorum. tamam matematik kısmını anladım ama bununla ilgili program nasıl yazılır onu çözemedim.

biraz geç oldu ama belki faydalanan olur :D

değişkenler global tanımlanmalı. gerekli olanlara ilk değerler "0" atanmalı.
e : hata
e_1 : hatanın önceki değeri
u : kontrol işareti
ref : referans
sys_out : ölçülen sistem çıkışı
T : örnekleme zamanı (aşağıdaki blok timer ile ayarlanmış, kesmeyle çalışan bir blok halinde düzenlemeli.Her örnekleme zamanında kontrol işareti güncellenmeli)
Ti,Td,Kc= Pid katsayıları
PWM() : kontrol işaretinin pwm olarak elde edildiği fonksiyon.onu buraya yazmadım.

ihtiyaca göre gerekli saturasyonlar sisteme eklenmeli.

Kod:
void PID(){
e=ref-sys_out;			
integral=integral+e*Kc*(T/Ti);						
turev=Kc*(e-e_1)*(Td/T);
u=turev+integral+Kc*e;	
PWM(u);
e_1=e;
}

daha gelişmiş türev integral denklemleri kullanmak için Sayısal Yöntemler çalışılabilir.
 
Son düzenleme:
sayın ABYS ;
kontrol işaretinin pwm olarak edilmesinin nin fonksiyonunu yazabilirmisiniz.
 
sayın ABYS ;
kontrol işaretinin pwm olarak edilmesinin nin fonksiyonunu yazabilirmisiniz.

Kod:
void PWM(float duty){                            // pwm fonksiyonu
	PR2=249;                                // pwm periyodu
	CCPR1L= (int)((duty*100)/249);  // duty_cycle
	CCP1X=0; CCP1Y=0;
	T2CKPS1=0; T2CKPS0=1;
	CCP1M2=1;
	CCP1M3=1;
	TMR2ON=1;
}

Bu kodlar Hi-Tech C compiler içindir. Pic 16f877a da kullanılmıştır. Diğer piclerde registerlar farklı olabilir.
 
sayın abys teşekkür ederim. pic yazılımını hakim değilim. bu kodlerin stl yada scl ye uyarlanması mümkünmü.
 
sayın abys teşekkür ederim. pic yazılımını hakim değilim. bu kodlerin stl yada scl ye uyarlanması mümkünmü.



PWM kodundan bahsediyorsun galiba. Evet hem STL hem SCL ile PWM kodu yazılabilir.Tabi bunların benim yukarda yazdığım kodlar ile bir ilgisi yok. Bahsettiğin diller PLC için, benim yazdığım PIC için. Elimde PLC için hazır PWM kodu yok şuan, benimde pratiğim çok iyi değil şuanda yazabileceğimi sanmıyorum. S7-200'lerin pwm modülü vardı galiba, doğal olarak s7-300/400'lerde de vardır :D. Elinde bunlarla ilgili notlar varsa oradan kolayca yapabileceğini düşünüyorum.

Eğer PID kodundan bahsediyorsan , PID kontrolörün SCL kodunu daha önce foruma eklemiştim. O işini görebililir.
 

Forum istatistikleri

Konular
129,853
Mesajlar
930,787
Kullanıcılar
452,712
Son üye
berkaykara1

Yeni konular

Geri
Üst