PID kp kd ki değerlerini otomatik hesaplatma

Katılım
23 Tem 2018
Mesajlar
16
Puanları
1
Yaş
27
Merhabalar,

Tamamen merakımdan konuyu açıyorum daha öncesine baktım bulamadım belki vardır.

PID katsayıları otomatik hesaplatma nasıl yapılır bilgisi olan var mı? Bazı metotlara baktım ZİEGLER-NİCHOLS yöntemi kullanışlı ve kolay geldi ama bunun için bile kullanıcıya ihtiyaç doğuyor bunu nasıl otomatik yaparım düşünemedim.
Bazı kütlesel debiler var örneğin girişinde totalde 20 l/dk hava olsun. Ben 10 git dersem 10 gider 5 l/dk git dersem 5 gider. Sistem ne olursa olsun kendisi onu ayarlıyor. Bunu tahminimce PID ile yapıyordur. Ama sisteme göre kp kd ki değerleri hemen nasıl hesaplıyor yapıyor anlam veremedim.
 
Bunu aslında bir plc'de rahatlıkta görebilirdin. Atıyorum belli bir sıcaklık verdin bu 80 derece olsun. Bu sıcaklığa setpoint diyelim. Birde bunun çıkış kısmı var. Bu da analog bir vanayı açıp kapayacak. Eğer sen bunu yapmak istersen hesapları var plc'nin sana verdiği alan oraları doldurup izleyebilirsin. Ayrıca birde plc otomatik yapıyor. Buna Auto-tune deniliyor genellikle. Bu o sıcaklığa gelene kadar ki süreye bakıyor. Sonra o sıcaklığı geçtikten sonra ki tekrar setpoint denilen sıcaklığa ulaşana kadar ki süreye bakılıyor. O iki sıcaklık arasında ki en iyi süreyi ayarlarak büyük zahmetten kurtarıyor seni. Fakat bazen bunu test edeceğin yerlerde bunu deneme şansın malesef olmuyor. Önce teorik hesaplayıp sonra plc geçebiliyorsun.
 
"Sonra o sıcaklığı geçtikten sonra ki tekrar setpoint denilen sıcaklığa ulaşana kadar ki süreye bakılıyor. O iki sıcaklık arasında ki en iyi süreyi ayarlarak büyük zahmetten kurtarıyor seni. "
Deltanın AS200 serisi plc de PID Auto-tune yapmıştım fakat doğruluk sağlayamamıştım kendim kp kd ki değerlerini manuel girmiştim o da deneme yanılma yöntemi ileydi.. Ben sadece bunu otomatik nasıl bulduruyorlar kod ile yapılmış bir örneği var mıdır bunları merak ettim
 
OSCAT library diye açık kaynak kodlu kütüphane var, EK'te pdf ini ekledim buradaki fb lerden birinde (CONTROL_SET2) hesaplama geçiyor.
Kod:
FUNCTION_BLOCK CONTROL_SET2
VAR_INPUT
    KS : REAL;
    TU : REAL;
    TG : REAL;
    PI : BOOL;
    PID : BOOL;
END_VAR
VAR_INPUT CONSTANT
    P_K : REAL := 1.0;
    PI_K : REAL := 0.9;
    PI_TN : REAL := 3.33;
    PID_K : REAL := 1.2;
    PID_TN : REAL := 2.0;
    PID_TV : REAL := 0.5;
END_VAR
VAR_OUTPUT
    KP : REAL;
    TN : REAL;
    TV : REAL;
    KI : REAL;
    KD : REAL;
END_VAR
VAR
    TX : REAL;
END_VAR

Kod:
IF TU > 0.0 AND KS > 0.0 THEN
   TX := TG / TU / KS;
END_IF;

IF pi AND PID THEN
    KP := 0.0;
    TN := 0.0;
    TV := 0.0;
ELSIF PID THEN
    KP := PID_K * TX;
    TN := PID_TN * TU;
    TV := PID_TV * TU;
ELSIF PI THEN
    KP := PI_K * TX;
    TN := PI_TN * TU;
ELSE
    KP := P_K * TX;
END_IF;

(* KI and KD are calculated *)
IF TN > 0.0 THEN KI := KP / TN; ELSE KI := 0.0; END_IF;
KD := KP * TV;
*)
 

Ekli dosyalar

  • oscat_basic333_en.pdf
    4.3 MB · Görüntüleme: 7
Son düzenleme:
Matlab PID toolbox içinde otomatik hesaplıyor katsayıları sanırım aynı şekilde Optimization ile de çözüm yöntemler var ben skandal çalışmalarda optimizasyon ile çözüm yaptırdım katsayıları bulmak için hep.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için onları kabul etmelisiniz. Daha fazla bilgi edin…