Hangi PLC Dili Öğrenilmeli? En Sık Kullanılan PLC Programlama Dilleri

IEC’nin 61131-3 standartına göre toplamda 5 adet standartlaştırılmış PLC programlama dili mevcuttur. Bu diller şu şekildedir,

  • Merdiven Diyagramı (Ladder Diagram)
  • Sıralı Fonksiyon Dizisi (Sequential Function Charts)
  • Fonksiyon Blok Diyagramı (Function Block Diagram)
  • Yapısal Metin (Structured Text)
  • Komut Listesi (Instruction List)

Bunları sırasıyla LD, SFC, FBD, ST ve IL olarak kısa bir şekilde ifade edilebilir. Şimdi her biri hakkında ufak örnekler vererek yazımıza devam edelim.

Merdiven Diyagramı (Ladder Diagram)

Bu dil en sık kullanılan ve en kolay dil olmanın yanında basitliği sebebiyle eleştiri konusu olabilir.

 

Merdiven diyagramı resimde görüldüğü gibi tamamen grafik tabanlı bir programlama dili olup kontrol devrelerinde kullanılan röle-mantık panellerinden modellendirilmiştir. Merdiven diyagramı yatay merdiven basamakları üzerine bina edilmiştir. Bu merdiven basamakları en solda ve en sağda iki direk üzerine birleşir. “Ladder” denmesinin sebebi de budur. Şemaya baktığımızda aynı bir merdivene benzemektedir. (Bizim binalarda kullandığımız basamağa İngilizler stair, portatif merdivene ise ladder demektedir.) Bu iki direk merdiven basamakları arasındaki elektriksel bağlantıyı temsil etmektedir. Bu merdiven basamakları üzerinde bulunan giriş (soldakiler) ve çıkış (sağdakiler) birimlerini programlayarak istediğimiz kontrol devresini yapabiliriz.

Merdiven diyagramının en başarılı özelliği merdiven basamaklarındaki kontrol yapılarını kolayca takip edebilme ve düzenleme imkanıdır. Ayrıca bu dilde yaptığımız bir programı başka birisi kolaylıkla okuyabilir. En büyük eksisi ise bazı komutların mevcut olmayışıdır.

Sıralı Fonksiyon Dizisi (Sequential Function Charts) 

Sıralı fonksiyon dizisi yine grafik tabanlı bir programlama dili olsa da yukarıdaki merdiven diyagramı gibi devre şemasına benzemeyip daha çok akış diyagramı özelliği taşımasıdır. Akış diyagramına aşina olanlara öğrenmesi daha kolay gelecek programlama dilinin bir örneği aşağıdaki gibidir.

Sıralı fonksiyon diyagramında programda adımları ve geçişleri kullanarak sonuca ulaşırız. Adımlar programın ana fonksiyonu olarak görev yapar. Bu adım bloklarında programda yürütülecek fonksiyonlar yer almaktadır. Bu adımlar zamanlama veya ayarlama ile ilgili olabilir. Geçişler ise bir adımdan öteki bir adıma geçmek için kullanılan elemanlardır. Bu geçiş aynı akış diyagramında olduğu gibi “True” ya da “False” durumu ile gerçekleştirilir. Yalnız bizim bildiğimiz tek çizgi üzerinden giden akış diyagramından farklı olarak sıralı fonksiyon dizisinin birden fazla dalı mevcut olabilir. Sıralı fonksiyon diyagramının en büyük avantajlarından biri işlemler belli bloklara ayırılıp parça parça olarak ele alınabilir. Böylelikle kolayca üstesinden gelinebilir. Hangi birimde sorun varsa bunu öğrenmek için mantığa doğrudan erişimimiz olur. Tekrarlayan mantık işlemlerini de bloklara kolaylıkla entegre edebiliriz. Bu programlama dilinin dezavantajı her uygulamaya yönelik olmamasıdır.

Fonksiyon Blok Diyagramı (Function Block Diagram)

Bu diyagram bize FPGA tasarımından da tanıdık gelmektedir. Yine grafik tabanlı bir programlama dili olsa da yukarıda zikrettiğimiz akış diyagramından farklı olarak fonksiyon blokları birbirine bağlanarak programlama gerçekleşmektedir.

Burada görüldüğü gibi yine devrede sol tarafta girişler ve sağ tarafta çıkışlar bulunmaktadır. Bunun ortasındaki bloklar ise mantıksal işlemleri gerçekleştiren fonksiyonlardır. Biz bu fonksiyonlar arasında bağ kurarak programımızı işletiriz. Fonksiyon blokları bilindik ve tekrar edilen işleri yürütmek için birebirdir. Örneğin sayıcı, zamanlayıcı, PID döngüsü gibi belli fonksiyonları kullanarak programımızı yazabiliriz. Programı devre çizimi gibi sayfalar üzerine blokları kullanarak yazarız ve PLC programı baştan itibaren bu sayfaları tarayarak programı oluşturur. Üzerinde çizim yaptığımız sayfanın herhangi bir yerine fonksiyon blokları ekleyebileceğimiz için programı düzenlemek ve programa ilaveler yapmak oldukça kolay olacaktır. Yalnız  bu blokları herhangi bir yerde kullanmamızdan dolayı program dağınık hale gelmekte ve hata ayıklama güçleşmektedir. Fonksiyon blok diyagramının en önemli avantajlarından biri ise onlarca bloku birleştirip tek bir blok haline getirme imkanımızdır. Böylece programı daha kolay kontrol altına alma imkanımız olur.

Yapısal Metin (Structured Text)

Yukarıda görsel programlamada kullanılan temel yöntemler esas alınarak hazırlanmış üç ayrı programlama dilini gördük. Bunlar o yöntemlere aşina olanlar için kolay olsa da C, C++, C# gibi bilgisayar programlama dillerini bilenler için baştan öğrenilmesi gereken ve bazen de gereksiz yere zorluk çekilecek dillerdi. Yapısal Metin dediğimiz programlama türü ise bizim bildiğimiz programlama dilleri gibi metin editörüne yazılır ve işletilir. Bu sayede programlama dili bilenler için daha kolay bir yöntem olmuş olur.

Yapısal metin, C programlama dili gibi bir yüksek seviye bir dil olup karmaşık ve zor görevler için kuvvetli bir araçtır. Algoritmaları ve matematiksel fonksiyonları kullanabilmemizin yanı sıra döngüler gibi tekrarlayıcı görevleri yerine getiririz. Burada giriş ve çıkışların yanı sıra değişkenler de kullanılır. Biz burada görsel programlamanın aksine yapılacak bütün işler için satır satır kod yazmamız gereklidir. FOR, WHILE, IF, ELSE, ELSE IF ve CASE gibi döngü ve karar komutları bulunur. Basic ve C diline aşina olanlar için bu dili öğrenmek daha kolay olacaktır. Yapısal metinin en önemli avantajı kodların iyi organize olabilmesi ve karmaşık matematik işlemlerini yapmaya imkan tanımasıdır. Ayrıca Ladder Diagram gibi başka dillerde mevcut olmayan fonksiyonları kullanma imkanımız vardır. Dezavantaj olarak görsel programlamaya göre daha zor program yazılmasını söyleyebiliriz. ,

Komut Listesi (Instruction List)

Komut listesi doğrudan Assembly programcılarını hedeflemektedir. Komutlar aynı Assembly dilindeki gibi satır satır yazılmakta ve ad olarak da Assembly diline benzemektedir. Biz bu incelediğimiz 5 dilin de hitap ettiği kitlelerin farklı olduğunu görüyoruz. Demek ki seçeceğimiz dilin bizim hangi konuda tecrübe sahibi olduğumuz ile bir alakası vardır.

Görüldüğü gibi Assembly’de kullanılan mnemonikleri (AND, OR, LD, ST, GOTO, CALL) burada görebilmekteyiz. Bütün komutlar komut listesi (instruction list) adı verilen bir listede bulunur. Programcı aynı Assembly’de olduğu gibi bu listeye bakıp uygun komutu seçerek programı yazar. Bu dil Assembly programlamaya aşina olmayanlar için zor olacaktır fakat Assembly bilenler için tam tersi çok kolay olacaktır. Aynı Assembly dilinde olduğu gibi komut listesinde yazdığımız programlar kompakt ve hızlı olmaktadır. Bu yüzden zamanlamanın önemli olduğu yerlerde bunu kullanmamız gerekebilir. Hata söz konusu olduğunda ise hatayı düzeltmek diğer dillere göre daha zor olacaktır.

Sonuç 

Günümüzde merdiven diyagramı (Ladder Diagram) oldukça popüler olup çoğu kişi bunu öğrenmekle yetinmektedir. Fakat her programlama dilinin hitap ettiği kitle farklı, avantajları, dezavantajları ve özellikleri farklıdır. O yüzden sadece tek bir dile bağlı kalmayıp uygulamaya ve size uygun olan bir dili öğrenmeniz en doğrusu olacaktır.

Bizi Facebook grubumuzda takip etmeyi unutmayın. Bilgili ve öğrenmeye hevesli bir topluluk oluşturmak istiyoruz.

https://www.facebook.com/groups/1233336523490761/

UYARI!!

 

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.