Programlanabilir Lojik Kontrolör (PLC), endüstride sıkça kullanılan kontrol cihazlarından biridir. Otomatik kumanda sistemlerinin mekanik olarak gerçekleştirdiği işlemleri lojik olarak gerçekleştirmesi sayesinde zaman ve yer avantajı sağlayan PLC, endüstride vazgeçilmez cihazların başında gelir. Ancak, PLC’yi istenilen şekilde programlamak için birden fazla yol bulunmaktadır. Bu yazıda PLC programlamak için kullanılan programlama dillerini inceleyeceğiz. Toplamda 6 adet olan PLC programlama dillerinin herbirinin kendine has avantajları ve dezavantajları bulunmaktadır. Yapılacak projeye uygun dili seçmek, zaman ve kolaylık açısından önemlidir. PLC üreten pek çok firma bulunmaktadır ve bu firmaların çoğu kendi tasarım programını kullanmaktadır. Tasarım programları farklı olsa bile PLC programlamak için kullanılan diller ortak olduğundan, programlama dillerine hakim bir kişi, bu farklılıklara çabuk uyum sağlayacaktır.
PLC’nin genel yapısını ve çalışma mantığını merak ediyorsanız daha önce yazdığım bu yazıya göz atabilirsiniz: PLC Genel Yapısı ve Çalışma Mantığı
Değişkenler Listesi (Variables)
Programda kullanılan değişkenlerin isimlerinin ve değişken türlerinin yazılı olduğu listedir. Kullanılan programlama dili farketmeksizin, değişkenler listesi programın üst kısmında bulunmaktadır.
Plc Programlama Dilleri Nelerdir
1) Merdiven Diyagram (Ladder Diagram)
PLC programlamada en sık kullanılan dillerden biridir ve yapı olarak kumanda devresine benzemektedir. Yatay çizgilerin üzerine lojik giriş-çıkış elemanları eklenerek oluşturulur. Merdiven diyagramdaki bu yatay çizgilerin herbirine “Network” denir. Bu networklerin üzerine açık kontak, kapalı kontak, kontaktör, zaman rölesi vb. mekanik elemanların lojik karşılıkları yerleştirilir ve PLC istenilen şekilde programlanır.
Yukarıdaki görselde kırımızı dikdörtgen içine alınmış kısım Network numaralarını göstermektedir. Programın büyüklüğü ve kullanılan eleman sayısı arttıkça Network sayısı da artacaktır. Merdiven diyagram, görsel bir programlama dili olduğundan programı oluşturmak, takip etmek ve hataları görmek oldukça kolaydır. Yapı olarak kumanda kumanda devresine benzemesinden dolayı güç panoları, kontrol panoları ve haberleşme panoları gibi elektrik – elektronik projelerinde sıklıkla kullanılır. Açma – kapama, periyodik işlemler, sayma işlemleri gerektiren uygulamalarda oldukça kullanışlıdır. Ancak, aritmetik işlemlerin ve karşılaştırma işlemlerinin gerçekleştirilmesinde merdiven diyagram çok kullanışlı değildir.
2) Yapısal Metin (Structured Text)
Yapısal olarak Visual Basic ve C++ dillerinin birleşiminden oluşmaktadır. Bu nedenle yüksek seviyeli programlama dili bilen kişiler için yapısal metin kullanarak PLC programlamak daha kolay olabilir. IF, FOR, CASE .. OF , WHILE gibi komutlar kullanılarak, istenilen program kod şeklinde yazılır. Bu komutlar sayesinde koşullu işlemler, döngüsel işlemler gerçekleştirilebilir. Yapısı sayesinde aritmetik işlemler ve karşılaştırma işlemleri diğer programlara göre daha kolay gerçekleştirilir. Ayrıca, kod şeklinde yazıldığı için programın kapladığı alan, görsel progralama dillerine göre daha azdır.
3) Talimat Listesi (Instruction List)
En düşük seviyeli programlama dilidir. Program, alt alta satırlar halinde, lojik kapılar (AND, OR, NOR, NAND) kullanılarak yazılır. Birbirine seri bağlı olan elemanları belirtmek için AND, birbirine paralel bağlı olan elemanları belirtmek için ise OR komutu kullanılır. Kontakların açık ya da kapalı olduğunu belirtmek için de benzer bir yöntem izlenir. Ancak, bu programlama dili uzun ve karmaşık işlemleri gerçekleştirmek için uygun değildir. Program takibinin zor olması ve diğer programlama dillerinin daha pratik olması nedeniyle, bu programlama dili az kullanılmaktadır.
Yukarıdaki görsellerde görüldüğü gibi, LD dilindeki programlar IL dilinde yazılmıştır. IL dilinde program yazılırken, kapalı kontakları belirtmek için ilgili kontağın bulunduğu satıra “N” harfi (Not – Değil) eklenir.
4) Fonksiyon Blok Diyagram (Function Block Diagram)
Lojik kapılar ve blok diyagram temeli üzerine kurulmuştur. Mantık olarak IL programlama diline benzemektedir. Ancak FBD dilinde kapılar, kod olarak yazılmak yerine görsel olarak oluşturulduğundan devre takibi daha kolaydır.
5) Sürekli Fonksiyon Tablosu (Continuous Function Chart)
PLC’nin grafiksel arayüz kullanılarak programlandığı dildir. Bu programlama dilinde de elemanların bağlantıları lojik kapılar ile ifade edilir. Ancak FBD’den farklı olarak, bloklar sayfa üzerinde istenilen herhangi bir yere yerleştirilebilir. Değişken atamaları yapıldıktan sonra, blokların giriş ve çıkışları istenilen şekilde bağlanır ve PLC programlanır. Aşağıdaki görsellerde görüldüğü gibi, CFC dilinde blokların sağ üst köşesinde, o bloğun sırasını gösteren bir sayı bulunmaktadır. Bu sayede program takibi kolay şekilde yapılabilir.
6) Ardışık Fonksiyon Tablosu (Sequential Function Chart)
Ardışık fonksiyon tablosu, genellikle ardışık, karmaşık veya çok dallı işlemler içeren uygulamalarda kullanılır. Bu programlama dilinde bloklar, sıralı şekildealt alta yerleştirilir. Bu blokların herbirinin içinde yapılması istenen işlemler bulunmaktadır. Bir bloğa işlem atamak için üstüne çift tıklanır ve açılan pencerede işlem herhangi bir programlama diline yazılır. Bloklardan oluşan bu basamak sisteminde program adım adım ilerler. Her adımın belirli bir şartı vardır ve o şart gerçekleşmeden bir sonraki adıma geçilemez. Bu yapısı sayesinde ardışık işlem gerektiren bant sistemleri (yiyecek üretimi, paketleme işlemleri vb.) için oldukça uygundur.
ÖRNEKLER
1) Fabrikada bulunan bir üretim bandının hız kontrolü yapılmak istenmektedir. Start butonuna basıldığında Sistem adlı bir değişken çıkış verecek ve 5 saniye sonra bant hızlanmaya başlayacaktır. Bant 5 saniye boyunca hızlandıktan sonra, 5 saniye boyunca yavaşlayacaktır. Bu işlem 3 kere tekrarlandıktan sonra bant hızlanacak ve sabit bir hızda devam edecektir. Gerekli programı merdiven diyagram (LD) ile çiziniz.
2) Start butonuna basıldığında motor çalışmaya başlayacak ve 10 saniye çalıştıktan sonra duracaktır. Zamanlayıcının zaman değeri; 0‐2s aralığında iken yeşil lamba yanacak, 2‐5s aralığında iken kırmızı lamba yanacak, 5‐7s aralığında iken ise mavi lamba yanacaktır. Geri kalan sürede lambalardan hiçbiri yanmayacaktır. Gerekli programı yapısal metin (ST) dili ile yazınız.
3) Sadece bir buton kullanılarak 3 motor kontrol edilecektir. Butona 1. basılışta M1 motoru devreye girecektir. Butona 2. basılışta M1 motoru devreden çıkacak, M2 motoru devreye girecektir. Butona 3. basılışta M2 motoru devreden çıkacak M3 motoru devreye girecektir. Butona 4. Kez basıldığında M3 motoru devreden çıkacak ve sistem başa dönecektir. Gerekli programı talimat listesi (IL) ile yazınız.
4) 3 motor sıralı olarak, tek bir zaman rölesi kullanılarak çalıştırılacaktır. Start butonuna basıldığında Sistem adlı bir değişken çıkış verecektir. 10 saniye sonra M1 motoru devreye girecektir. M1 motoru 10 saniye boyuca çalıştıktan sonra devreden çıkacak ve M2 motoru devreye girecektir. M2 motoru 10 saniye çalıştıktan sonra devreden çıkacak ve M3 motoru devreye girecektir. M3 motoru da 10 saniye çalıştıktan sonra devreden çıkacak ve sistem başa dönecektir. Stop butonuna basılana kadar bu işlemler periyodik olarak tekrarlanacaktır. Gerekli programı fonksiyon blok diyagram (FBD) dili ile çiziniz.
5) Tek zaman rölesi kullanılarak trafik ışığı uygulaması gerçekleştirilecektir. Start butonuna basıldığında sistem adlı bir değişken çıkış verecektir. Bu çıkışla birlikte trafik ışığı çalışmaya başlayacaktır. Trafik ışığı, stop butonuna basılana kadar periyodik şekilde devam edecektir. Gerekli programı sürekli fonksiyon tablosu (CFC) ile çiziniz. (Kırmızı ışık 29s, Kırmızı ve Sarı ışık birlikte 1s, Yeşil ışık 29s, Sarı ışık 1s çalışmalıdır.)
6) Bir üretim bandında S1 sensörü ürünleri gördüğünde ürünler, 3 farklı Ayırma bölmesine yönlendirilecektir. Ayırma işlemlerinin bittiğini S2 sensörü algılayacak ve Paketleme işlemine geçilecektir. Paketleme işleminin bittiğini S3 sensörü algılacak ve Kontrol işlemine geçilecektir. Bu işlemlerden sonra sistem başa dönecektir. Gerekli programı ardışık fonksion tablou (SFC) dili ile çiziniz.
KAYNAKÇA
- Birol ARİFOĞLU, Ersoy BEŞER, Otomasyon Sistemleri Ders Notları, Kocaeli, 2015
- Fatih ARSLAN, Codesys İle PLC Programlama, İstanbul, 2018
Çizimler için kullanılan programlar:
- Codesys v2.2
- Codesys v3.5