RJ45 1 - PLC Protokolleri, Master/Slave ve Client/Server konusu

   
Rengi, dili, ırkı olmayan bildiğimiz ethernet kablosu
(pardon farklı renklerde olabiliyor)

Profinet, Ethernet/IP, Ascii TCP, Modbus TCP, hepsi de uçlarına RJ45 konektörü çakılmış ethernet kablosunu kullanır. Bu kabloları Cat 5 veya Cat 6 network kablosu olarak piyasadan temin edebiliriz. Almanyalı Siemens PLC nin meşhuur yeşil kablosu da aynıdır, fazladan, üstü shield veya zırh denilen ince tellerden oluşan örgü ile kaplanmıştır.


Profinet  Siemens plc ler tarafından kullanılan protokoldür. Fabrikada plc, motor sürücü, rfid okuyucu, giriş/çıkış modülleri gibi cihazlar arasında çok hızlı iletişim sağlayan endüstriyel bir protokoldür. Genelde UDP paketlerini kullanır. Gerektiğinde TCP/IP kullanır. Cihazı plc ye tanıtmak için Tia Portal da program yazarken, GSD dosyası diye bilinen dosya gerekmektedir.


Ethernet/IP Allen Bradley, Schneider Electric, Omron plc ler tarafından kullanılır. Yine endüstriyel ve çok hızlı bir protokoldür. TCP veya UDP paketlerini kullanır. Cihazı plc ye tanıtmak için EDS dosyası diye bilinen dosya gerekmektedir.


Ascii TCP PLC işleriyle uğraşanların pek bilmediği, benim gibi etiket yazıcılarla uğraşanların bildiği basit bir protokoldür. Barkod okuyucu, barkod/etiket yazıcı, terazi gibi cihazlarda kullanılır. Siemens plc için GSD dosyasına ihtiyaç yoktur. Örneğin bir PC, barkod yazıcıya ascii karakterlerden oluşan komutlar yollar ve yazıcı etiketi basar. Ascii karakterler, Windows ta Notepad (Not defteri) uygulaması içine yazabildiğimiz karakterlerdir. 
C#, Python gibi dillerle PC ve yazıcı arasında bağlantı kurulabilir. C# ile Modbus TCP bağlantısı için harici kütüphane dosyası gerektiği halde, Ascii TCP de harici dosyalara gerek kalmadan bağlantı kolayca kurulur. C# tamam da, peki PLC den nasıl yazıcıya bağlanıp etiket yazdırırız ? Bu sorunun cevabını da bir sonraki RJ45 yazısında vereceğim.


Modbus TCP  Dikkat ettiysen "bir marka plc, sadece bir çeşit protokol kullanabilir" diye birşey söylemedim. Modbus TCP, RJ45 girişi olan markadan bağımsız olarak hemen hemen her plc tarafından desteklenmektedir. Profinet ve Ethernet/IP ye göre daha yavaş fakat daha fazla cihazda kullanılan endüstriyel bir protokoldür. RS485 kablo ile çalışan Modbus RTU nun ethernet kablosuyla çalışan güncel versiyonudur. C#, Python gibi dillerle PC ve cihaz arasında bağlantı kurulabilir. IPhone veya Android aplikasyonları vardır. Örneğin apple store veya google play de "Klemsan Device Reader" aplikasyonunu bulabilirsiniz. Klemsan ın kendi cihazları için yaptığı modbus tcp master bir aplikasyondur. Modbus yazınca da telefonda çalışan birçok aplikasyon bulabilirsiniz. Bu web sitesi modbus tcp ile ilgili iyi bir kaynaktır : www.simplymodbus.ca/index.html

Profinet gerçek zamanlı bilgi alışverişi sağlarken Modbus TCP ise Master/Slave olarak çalışır. Şöyle ki master, bir slave den bilgi ister örneğin, bu mesaj master dan bütün slave lere gider ama sadece mesaj içinde kendi kimlik bilgisi olan slave, "aaa bana sesleniyor galiba.." deyip master a cevap yollar. Bu kimlik bilgisine Modbus ID denir. 


Master/Slave  veya  Client/Server konusu


Aslında bu iki tabir tcp/ip bağlantısı söz konusu olduğunda aynıdır. Her zaman ağdaki diğer cihazlara bağlantı talebini (request), client veya master başlatır. Server ise pasif olarak dinlemede kalır. Server, asla ağda iletişimi başlatamaz. Kim master, kim slave duruma göre değişebilir. Örneğin, modbus rtu ile bağlanan bir PLC ve HMI düşünelim. İnsan mantıken PLC daha akıllı heralde master, plc olur diye düşünebilir. Ama bu yanlış bir düşünce olur. HMI master, PLC ise slave dir bu durumda. Burda client, server tabirini düşünürsek konuyu daha rahat anlayabiliriz. 


Master(usta)= Client(istemci)     Slave(köle)= Server(sunucu)


Birkaç örnek vermek gerekirse :

HMI-PLC örneğinde, PLC nin hiçbirşey den haberi yoktur, HMI a kim ne zaman geldi hangi butona bastı, bunları ancak HMI ona modbus komutları ile bildirince haberi olmaktadır. PLC master olarak ayarlansaydı, sürekli HMI ı sorgulayacaktı biri sana dokundu mu diye, bu da hiç pratik olmazdı.

Bir PLC, üç tane motor sürücüye bağlıdır ve onları yönetmektedir. Burada PLC master, sürücüler ise slave oluyor. 

Bir Web server,  birçok kullanıcıya yani istemciye hizmet vermektedir. Google chrome dan birşey aratınca sunucu ile bağlantı kurulur ve sonuçlar pc mizde listelenir. Chrome istemcidir.

Konveyör takibi yapan bir robot düşünelim, yani konveyördeki ürünleri alıp bir yere koyuyor mesela. Enkoder pals larını bir plc saysın ve robota iletsin. Burada plc client, robot ise modbus tcp server olur..

Ama diyelim ki enkoder modbus server yeteneğine sahip ve plc ye gerek yok. Bu durumda robot, client olur.

Barkod yazıcı, her zaman "biri bir şey yollasa da  bassam" diyerek, server olarak sıkılmadan usanmadan bekler, PC yani client bağlantı talebi yollar, bağlantı kurulur, ona etiket bilgilerini yollar, o da etiketi basar. PC, yazıcıya sorgulama komutları da yollayabilir, yazıcı cevap verir, bağlantı, client yani PC tarafından kapatılana dek açık kalır.

Barkod okuyucu, markaya göre değişebilir belki ama benim gördüklerim, hem server hem de client olabilmektedir, tövbe tövbee demeyin gerçek bu.. Aynı anda birini olabiliyor, ayarlarından birini seçmek gerekiyor tabi ki.. Barkod okuyucu yalnız değil bu konuda, robotlar ve plc ler de aynı şekilde hem client hem de server olabiliyor.

Diyelim ki beş tane barkod okuyucuyu bir PC içindeki C# programı ile haberleştirmek istiyoruz, yani okunan barkodlar PC ye gelsin istiyoruz. Okuyucunun önce server olduğunu düşünelim. Bu durumda C#, her okuyucuya ayrı ayrı bağlantı talebi yollamalıdır. C#, beş bağlantıyı da aynı anda açık tutmalıdır, çünkü her an birinden barkod bilgisi gelebilir. Bu senaryoda, daha kolay C# kodu yazılabileceğinden, okuyucuların client olması daha uygun olur. C# dilinde, bir server kodu yazılarak, tüm okuyuculardan gelen bilgiler alınabilecektir. Dediğim gibi bağlantı talebini ilk olarak hep client yapar. Server, client ın talebini kabul ederse bağlantı kurulmuş olur. Bağlantı kurulduktan sonra server client a veya client server a bilgi yollayabilir..


Yorumlar

Bu blogdaki popüler yayınlar

VBA - Mscomm (seri port) ile veri loglama

RJ45 2 - Novexx barkod yazıcıya, S7-1200 plc ile etiket yazdırma

Uzak I/O modülü olarak PLC kullanmak