RJ45 1 - PLC Protokolleri, Master/Slave ve Client/Server konusu
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.
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
Yorum Gönder