PID Döngü Komutu (S7-200)
Konusu 'Otomasyon' forumundadır ve oguzturk tarafından 1 Nisan 2008 başlatılmıştır.
PID Döngü komutu (PID), LOOP numarasına sahip bir PID döngüsünü tablo alanında (TBL) girilen değerlere göre işletir.
ENO = 0 yapan hata koşulları:
0006 (endirekt adresleme)
Etkilenen özel hafıza bitleri:
PID (Proportional, Integral, Derivative) döngü komutu bir PID hesaplama yapmak üzere sağlanmıştır. Lojik yığının tepe değerinin 1 veya enerji akışının olması durumunda PID işlemi gerçekleşir. Komutun iki operandı bulunmaktadır: Döngü tablosunun başlangıç adresinin girildiği TBL ve 0 ila 7 arasında bir sabit olan döngü numarası (LOOP).
Bir programda en fazla sekiz adet PID komutu kullanılabilir. Aynı döngü numarasına sahip iki veya daha fazla PID komutu kullanılması durumunda (tablo adresleri farklı olsa bile), PID hesaplamalarıçakışır ve çıkış belirsiz hale gelir.
Döngü tablosu döngüye kumanda etmek ve izlemek için gerekli dokuz adet parametreyi içerir: Proses değişkeninin anlık (actual) ve bir önceki değeri, ayar değeri (setpoint), çıkış, örnekleme zamanı, kazanç, integral zamanı, türev zamanı ve integral toplamı.
PID döngüsünün belli bir örnekleme zamanında işlenmesini sağlamak için PID komutu ya zaman kontrollu interrupt ile veya ana programdan bir zaman rölesi yardımıyla çalıştırılmalıdır. Bu örnekleme zamanı PID komutuna döngü tablosu yoluyla da bildirilmelidir.
STEP 7-Micro/WIN, kapalıçevrim kumandasının kolayca gerçekleştirilmesi için PID sihirbazını sunar. Tools > Instruction Wizard menü komutunu seçin ve açılan pencereden PID seçimini yapın.
oguzturk, 1 Nisan 2008
Durağan durumda, PID kontrolörü hatayı (e) sıfır yapmak amacıyla çıkışı değiştirir. Hatanın ölçüsü istenen/ayar değeri (setpoint) ile gerçekleşen değer/proses değişkeni (actual value) arasındaki farktır. PID kontrol prensibi, çıkış sinyalini (M(t)), oransal (P), integral (I) ve türevsel (D) terimlerin toplamı biçiminde ifade etmeye dayanır:
Bu fonksiyonu sayısal bir bilgisayarda gerçekleştirmek için, hata değerinin periyodik örnekleme noktalarında ölçülmesi ve çıkışın da birbirini takip eden değerler dizisi olarak oluşturulması gerekir. Buna karşılık gelen sayısal bilgisayar çözümüşöyledir:
Bu denklemden, integral teriminin ilk örnekten son örneğe kadar tüm hata terimlerinin bir fonksiyonu olduğu görülür. Türevsel terimin anlık örnekle bir önceki örneğin farkı, oransal terimin ise sadece anlık örneğin bir fonksiyonu olduğu farkedilebilir. Sayısal bir bilgisayarda tüm hata terimlerini saklamak pratik olmadığı gibi gerekli de değildir.
Sayısal bilgisayar, çıkış değerini ilk örneklemeden başlayarak tüm örneklemeler için hesaplamak durumunda olduğundan, hatanın bir önceki değeri ile integral terimin bir önceki değerini saklamak yeterlidir. Sayısal bilgisayar çözümünün tekrarlanan doğası gereği, herhangi bir örnekleme zamanında çözülmesi gereken denklem şu şekilde basitleştirilebilir:
S7–200, yukarda verilen basitleştirilmiş denklemin bir başka çeşidini kullanmaktadır. Bu denklem şöyledir:
Oransal terim MP, çıkışın duyarlılığını kontrol eden kazanç (KC) ile hatanın (e) herhangi bir örnekleme zamanındaki çarpımıdır. Hata ise, istenen değerle (SP) gerçekleşen değer (PV) arasındaki farktır. S7-200 tarafından oransal terim denklemi aşağıdaki şekilde çözülür:
PID Denkleminin İntegral Terimi
İntegral terim MI, zaman boyunca hataların toplamıdır. S7-200, integral terim denklemini aşağıdaki şekilde çözer​
İntegral toplamı (MX), önceki integral terimlerin o ana kadarki toplam değeridir. MIn’nın her hesaplanmasından sonra MX’in üzerine MIn yazılır. İstenirse bu değer eksiltilebilir veya ayarlanabilir (detaylar için bkz “Değişkenler ve Aralıklar”). Genellikle ilk döngü hesaplamasından önce başlangıççıkış değeri (Minitial), MX’e yazılır. İntegral teriminin içinde birtakım sabitler de yer alır: Kazanç (KC), PID hesaplamasının yapılacağıçevrim süresi olan örnekleme zamanı (TS) ve integral terimin çıkışüzerinde ne oranda etki edeceğininin ölçüsü olan integral zamanı veya reset (TI).
Türevsel terim MD, hatanın değişimiyle orantılıdır. S7-200, türevsel terimi hesaplamak için aşağıdaki denklemi kullanır:
Hata yerine gerçekleşen değerin bir sonraki türevsel terim hesaplanması için saklanması gerekir. İlk örneklemede PVn - 1‘in PVn’e eşit olduğu varsayılır (yani türevsel terim sıfır olur).
PID Tiplerinin Seçimi (P, PI, PD, ID Kontrol)
Bazı proseslerde, yalnızca bir veya iki kontrol yönteminin kullanılması gerekli olabilir. Örneğin yalnızca oransal (P) veya oransal+integral (PI) kontrol uygun olabilir. PID tipinin seçilmesi, sabit parametrelerinin uygun şekilde ayarlanmasıyla olur.
Eğer integral etki istemiyorsanız (örneğin P, PD kontrol), integral süresi olarak “sonsuz” girilmelidir. İntegral etki seçilmemesine rağmen, integral toplamı MX’in başlangıç değeri nedeniyle integral terimi sıfır olmayabilir.
Eğer türevsel etki istemiyorsanız (örneğin P, PI kontrol), türev zamanına 0.0 girmelisiniz.
Eğer oransal etki istemiyorsanız (örneğin I, ID kontrol), kazanç olarak 0.0 girmelisiniz. Döngü kazancı integral ve türevsel terimlerin hesaplanmasında kullanıldığından, döngü kazancı olarak 0.0 girildiğinde integral ve türevsel terimleri hesaplanırken kazanç faktörünün 1.0 olduğu varsayılır.
Döngü Girişlerinin Dönüştürülmesi ve Normalize Edilmesi
Bir PID döngüsünün iki giriş değişkeni vardır: İstenen değer ve gerçekleşen değer. İstenen değer, genellikle sabit bir değerdir. Örneğin, klimalı bir odanın sıcaklığının olmasının istendiği değer gibi. Gerçekleşen değer, döngüçıkışıyla ilintili bir değer olup döngüçıkışının kontrol edilen sistem üzerindeki etkisini ölçer. Klima kontrolu örneğinde, gerçekleşen değer, odanın sıcaklığınıölçen bir sıcaklık dönüştürücüsünden gelen bilgi olabilir.
Hem istenen, hem de gerçekleşen değerler gerçek dünyaya ait değişkenler olup büyüklükleri, işaretleri, birimleri farklı olabilir. Bu farklı değerlerin PID komutu tarafından işlenebilmesi için, normalize edilmiş reel sayı dönüşümlerinin yapılması gereklidir.
İlk adımda 16 bitlik tamsayı değer reel sayı formatına dönüştürülmelidir. Aşağıdaki komut dizisi tamsayı değerinin ne şekilde reel sayıya dönüştürülebileceğini göstermektedir.
ITD AIW0, AC0 //Bir analog girişi double word’e dönüştür
DTR AC0, AC0 //32 bitlik tamsayı değerini reel sayıya dönüştür
Sonraki adım, reel sayı değerinin 0.0 ila 1.0 arasındaki bir değere normalize edilmesidir. Aşağıdaki denklem ile istenen veya gerçekleşen değer ölçeklendirilebilir:
Aşağıdaki komut dizisi, bir önceki örneğin devamı olarak AC0’da yer alan bipolar değerin ne şekilde normalize edileceğini göstermektedir:
/R 64000.0, AC0 //Akümülatördeki değeri normalize et
+R 0.5, AC0 //Değere ofset ekle
MOVR AC0, VD100 //Normalize edilmiş değeri döngü tablosundaki yerine taşı
Döngüçıkışı, örneğin klima kontrol değeri olabilir. Bu çıkış 0.0 ila 1.0 arasında normalize edilmiş bir reel sayıdır. Çıkışın bir analog çıkış noktasında kullanılabilmesi için 16 bitlik tamayı değerine dönüştürülmesi gereklidir. Bu işlem istenen ve gerçekleşen değerlerin normalize edilmesinin tam tersidir. İlk adımda döngüçıkışını aşağıdaki formülü kullanarak ölçeklendirilmiş bir reel sayıya dönüştürün:
Aşağıdaki komut dizisi döngüçıkışının ne şekilde ölçeklendirilebileceğini göstermektedir:
MOVR VD108, AC0 //Döngüçıkışını akümülatöre taşır
-R 0.5, AC0 //Bu komutu eğer değer bipolar ise ekleyin
*R 64000.0, AC0 //Değeri akümülatöre ölçeklendirir
Ardından, ölçeklendirilmiş reel sayı değeri 16 bitlik tamsayıya dönüştürülmelidir. Aşağıdaki komut dizisi bu dönüşümü göstermektedir:
ROUND AC0, AC0 //Reel sayıyı 32 bitlik tamsayıya yuvarlar (dönüştürür)
DTI AC0, LW0 //Değeri 16 bit haline getirir
MOVW LW0, AQW0 //değeri analog çıkışa yazar
Ters ve Direkt Etkili Döngüler
Kazanç negatifse döngü ters etkilidir (reverse acting) ve kazanç pozitifse direkt etkilidir (forward acting). (I veya D kontrolu için-ki bu durumda kazanç 0.0’dır- integral ve türev zamanları için pozitif değerler girmek direkt etkili, negatif değerler girmek ters etkili döngüye yol açar.)
Gerçekleşen değer ve istenen değerler PID hesaplamanın girdileridir. Dolayısıyla, bu değişkenlere ait alanlar PID komutu tarafından okunur ve doğal olarak değiştirilmez.
Çıkış değeri PID hesaplaması sonucunda oluşur, dolayısıyla her PID hesaplamasının sonucunda tablodaki çıkış alanı güncellenir. Çıkış değeri 0.0 ila 1.0 arasında sıkışmış durumdadır. Çıkış alanındaki değer, otomatik (yani PID çıkışının oluşturduğu değer) konumdan manuel (yani kullanıcının istediği değer) konuma geçerken başlangıç değeri oluşturması için kullanıcının programında bir girdi olarak kullanılabilir. (Aşağıdaki “Otomatik/Manuel Çalışma” bölümüne bakınız).
Eğer integral terim kullanılıyorsa, integral toplamı (bias) değeri PID hesaplaması sonucunda güncellenir ve bu güncel değer bir sonraki PID hesaplamasında girdi olarak kullanılır. Hesaplanan çıkış değeri sınırlar dışına taşarsa (çıkışın 0.0’dan küçük ve 1.0’dan büyük olması gerektiği hesaplanırsa), bias değeri aşağıdaki formüle göre ayarlanır:
İntegral toplamının yukardaki şekilde ayarlanması, hesaplanan çıkış uygun aralığa geri geldiği zaman sistem cevabının daha düzgün olmasını sağlar. Hesaplanan bias, bu şekilde 0.0 ila 1.0 arasında sıkıştırılmış olur ve PID döngü hesaplamasının sonunda tablodaki yerine bu şekilde yazılır. Döngü tablosunda saklanan bu değer bir sonraki PID hesaplamasında kullanılır.
Döngü tablosundaki bias değeri, bazıçok özel uygulamalarda ortaya çıkabilecek problemleri gidermek için PID işleminden önce kullanıcı tarafından değiştirilebilir. Ancak, bu değerin değiştirilmesinde dikkatli olunmalı ve tabloya girilecek değerin 0.0 ila 1.0 arasında bir reel sayı olmasına dikkat edilmelidir.
Proses değişkeninin bir önceki hesaplamadaki değeri PID hesaplamanın türevsel kısmında kullanılmak üzere tabloda yer alır. Bu değeri değiştirmemelisiniz.
S7-200 PID döngülerinde parametrik çalışma konumu seçimi imkanı bulunmamaktadır. PID hesaplaması, komuta enerji akışı olduğunda gerçekleştiğinden “otomatik” konum PID komutu işlendiğinde, “manuel” konum ise komut işlenmediğinde geçerlidir.
PID komutunda enerji akışının geçmişini takip eden bir bit vardır (tıpkı sayıcıya yükselen kenarla saydırılması gibi). Bu biti kullanarak komut, 0’dan 1’e dönüşümü sezer ve bu durumda, manuel konumdan otomatik konuma geçisin yumuşak olması için bir dizi işlem yapar. Manuel konumdan otomatik konuma geçişin yumuşak olması için manueldeyken verilen çıkış değerinin PID tablosuna (Mn bölümüne) girdi olarak yazılması gerekir. O’dan 1’e geçişin PID komutu tarafında sezilmesinden sonra, sözü edilen geçiş için aşağıdaki işlemleri PID komutu kendiliğinden yapar:
İstenen değer (SPn) = gerçekleşen değer (PVn) kabul eder
Bir önceki gerçekleşen değer (PVn-1) = gerçekleşen değer (PVn) kabul eder
Bias (integral toplamı) (MX) = çıkış değeri (Mn) kabul eder
PID geçmişini takip eden bitin varsayılan değeri “set” konumundadır. Bir başka deyişle, STOP’dan RUN’a geçişte veya ilk enerji verildiğinde manuelden otomatiğe geçildiği düşünülmez.
Alarm Durumları ve Özel İşlemler
PID komutu basit, fakat güçlü bir komut olup sadece PID hesaplaması yapar. Alarm verilmesi veya başka özel işlemler yapılması gerekiyorsa S7-200’ün diğer komutları kullanılarak bu işlemler gerçekleştirilmelidir. Örneğin, gerçekleşen değer, alt ve üst alarm limit değerleriyle karşılaştırılabilir ve alarm durumunda PID çıkışı yerine bir emniyet değeri çıkışa aktarılabilir.
Eğer tablo başlangıç adresi veya döngü adresi operandları izin verilen sınırlar dışındaysa, derleme sırasında CPU hata verecek ve derleme başarısız olacaktır.
Çoğu tablo giriş değerlerinin izin verilen sınırlar içinde olup olmadığı, PID komutu tarafından kontrol edilmez. Gerçekleşen değer ve istenen değerin (ve eğer müdahale ediyorsanız bias ve önceki gerçekleşen değerin) 0.0 ila 1.0 aralığında reel sayılar olduğundan emin olmanız, programınızda gereken önlemleri almanız gereklidir.
Eğer PID hesaplamaları sırasında herhangi bir matematiksel hatayla karşılaşılırsa, SM1.1 biti (taşma veya geçersiz karakter) set edilir ve PID komutunun işlenmesi sona erdirilir. (Tablodaki değerlerin güncellenmesi tamamlanmamış olabilir. Bu nedenle bu değerleri dikkate almamanız gerekir.)
Döngü tablosu 36 bayt uzunluğundadır ve formatı Tablo 6–42’de gösterilmiştir.
PID Program Örneği
Bu örnekte, bir su deposundaki su seviyesi sabit tutulmaya çalışılmaktadır. Depodan su, sürekli, ama gelişigüzel bir şekilde kullanılmaktadır. Motor hız kontrol cihazı (örneğin MicroMaster) tarafından kumanda edilen bir pompa, depoya su eklemekte ve böylece deponun boşalmasını engellemeye ve belli bir seviyede sabit tutulmasını sağlamaya çalışmaktadır.
Bu sistemde istenen değer, su seviyesi olup depo seviyesinin %75’idir. Gerçekleşen değer bir seviye transmitteri tarafından sağlanmakta olup %0 (depo boş) ve %100 (depo tam dolu) arasında oransal bir sinyal vermektedir. Sistemin çıkışı, pompanın nominal hızının %0 ila %100’ü arasında çıkış sağlayan oransal bir değerdir.
İstenen değer sabit olduğundan, önceden hesaplanıp tabloya girilmiştir (Sabit olmayıp da yüzde olarak girilen bir değer olması durumunda gereken dönüşümler daha önce ele alınmıştı). Gerçekleşen değer, tranmitterden gelen unipolar analog değer olarak ölçülmektedir. Döngüçıkışı unipolar bir analog çıkışa (örneğin 0-20 mA) aktarılmakta olup buradan hız kontrol cihazına bağlantı yapılmıştır. Hem analog giriş, hem de analog çıkış için “span” (ölçüm aralığı) 32,000’dir (unipolar=tek yönlü olduğu için).
Enerji saklama (depolama) kapasitesinin yüksek olduğu sistemlerde türevsel kontrol uygun sonuç vermediği için, bu örnekte de sadece oransal ve integral kontrol kullanılmıştır. Döngü kazancı ve zaman sabitleri mühendislik hesapları (veya Ziegler-Nichols yöntemiyle) belirlenmiştir. Bu sabitler: KC = 0.25, TS = 0.1 saniye ve TI = 30 dakikadır.
Pompa hızı, depo %75 doluncaya kadar manuel olarak ayarlanmakta olup daha sonra su çıkışına izin veren vana açılmaktadır. Bu sırada, pompa manuel kontroldan otomatik kontrola geçirilmektedir. I0.0 girişi, manuel/otomatik seçim anahtarı olup 0 = manuel ve 1 = otomatik anlamına gelmektedir. Manuel kumandada iken, pompa hızı operatör tarafından (örneğin TD200 kullanarak) VD108’e yazılmaktadır ve bu değer 0.0 ila 1.0 arasında bir reel sayıdır. (Bu değerin hızın yüzdesi olarak girilmesi durumunda yapılması gereken dönüşümler daha önce anlatılmıştı).
teşekkurler usta paylaşım için
ot-gu, 30 Ocak 2009
resimlerin bazıları ölmüş, yenilerseniz sevinirim arkadaşlar
OrKuN, 26 Ağustos 2009