Set değer ve aktuel değer arasındaki farka hata dersek
P oransal kazanç o anki hatanın belirli bir katıyla çıkışı kontrol eden değişkendir
I integral(toplamsal) etkisi demektir, bu da mevcut hata ve daha önceki hataların toplamıyla çıkışa etki eden değerdir.
D türevsel(değişim miktarı) etkisidir, bu da
mevcut hatanın bir önceki hatayla değişiminin(farkının) miktarıyla çıkışa etki eden değerdir.
Çıkış bu üç etkinin toplamıyla kontrol edilir.
Kod:
previous_error = setpoint - process_feedback //Bir önceki örneklemedeki hata
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
Hata sıfıra yaklaştıkça(aktuel değer set değeri yaklaştıkça) P ve D nin etkisi azalır neden dersen P hatanın bir katıydı hata yok olmaya yakın, D ise hatada değişimi arar o da azalmış, I integral (lisede öğretilen ama neden öğrendiğimizi anlamadığımız) devrede, sistem çıkışı integral etkisi altına girer ve integralle aktuel deger kumanda altında kalır. Integralin devrede olması demek aktuel değerin set degere kadar gelirken harcadığı süre içerisinde girişten aldığı hata örneklerinin toplanmasıyla oluşan kontrol değeridir.
Hata sıfıra yakınken(sistem oturmuşken), sıcaklıktan örnek verecek olursak, oturmuş bir sıcaklığı, ani bir soğutmada soğumanın ne kadar hızlı olduğuyla D türev kontrolü alır ve sistemi hatanın değişim miktarının oranıyla tepki vererek ısıtır, soğuma hızı azaldığında(
hatanın değişim miktarı sıfıra gittiğinden türevin etkisi azalır) ve tekrar P ve I kontrolü ele alarak set değere sistemi oturtur.
D katsayısı sistemin dinamikliğini belirler, sistemdeki aktuel değerin tepe noktalarında etkisi yok denecek kadar azdır, o yüzdendir ki matematiksel olarak, bir fonk.da birinci türevi sıfıra eşitlemek fonksiyoun maksimum veya minimum yaptığı noktaları bulmaya yarar(matematikten hatırlayın 2nci derece denklemler konusu). Kısaca bu türev olayı aktuel değerin değişim hızı ne kadar fazlaysa o kadar fazla kontrolü eline alır. Sizin için dinamiklik önemli degilse P-I kontrollede işinizi halledersiniz.
Sistem ilk startı aldığı durumda ise P nin hata fazla old. için etkisi fazladır, I daha hataları toplama işlemine yeni başlamıştır, D ise aktuel değerin set degere yaklaşma hızıyla orantılı oldugundan sistemin dinamik cevap vermesine göre etkisini gösterir.
Kısaca üç adet cambazı bir ipte tutma tekniğidir ve PID katsayıları otomatik bulan ayarlar(Autotunning deniyo) bu tip PID kontrol cihazlarıyla veya PLC yazılımlarıylada bu katsayılar bulunabiliyor.
Basit uygulamalar için PID bloğu aşağıdaki örnekte verilmiştir.
Kod:
FUNCTION FC100 : VOID
VAR_INPUT
SP:REAL;
PV:REAL;
Kp:REAL;
Ti:REAL;
Ts:REAL;
LowLimit:REAL;
UpLimit:REAL;
END_VAR
VAR_OUTPUT
INTEGER_OUT:INT;
END_VAR
VAR_IN_OUT
REAL_OUT:REAL;
END_VAR
VAR_TEMP
e_n:REAL;
e_n_1:REAL;
MvDiff:REAL;
END_VAR
BEGIN
e_n:=SP-PV;
MvDiff:= ((e_n-e_n_1)+((e_n*Ts)/Ti))*Kp;
REAL_OUT:=MvDiff+REAL_OUT;
INTEGER_OUT:=REAL_TO_INT(REAL_OUT);
IF REAL_OUT<LowLimit THEN
REAL_OUT:=LowLimit;
ELSIF REAL_OUT>UpLimit THEN
REAL_OUT:=UpLimit;
END_IF;
END_FUNCTION
https://www.kontrolkalemi.com/forum/konu/pid-kontrölde-formüllerin-anlamları.25621/page-2
Engineers-Excel.com: PID Loop Simulator
PIDTuningOptimization - ControlsWiki
CTM: PID Tutorial
MATLAB Central - File detail - PID Controller Matlab Code
MATLAB Central - File detail - Temperature Control with the Use of PID