TWIDO Plc ile MODBUS RTU Haberleşmesi

Endüstriyel tip uygulamalarda kullanılan cihazlar arası veri alışverişi nasıl yapılıyor? Bilindiği üzere birçok farklı haberleşme protokolü var. Bunları modbus, canbus, profibus vs gibi sıralayabiliriz. Mosbus bunların içinde bildiğim kadarıyla en yaygın olanı. RS485 yapısı kullanılarak haberleşme yapılıyor. Fakat gördüğüm kadarıyla da hız bakımından yavaş kalıyor. Diğer haberleşme tipleri belki bu problemin üstesinden gelebiliyordur.

Aşağıda twido plc programlama yazılımı olan twidosoft ile modbus rtu haberleşme port ayarlarının nasıl yapılacağı ve herhangi bir mosbus slave cihazdan nasıl veri okunup, ilgili cihaza nasıl veri yazılacağını anlatmaya çalışacağım.

Öncelikle oluşturduğumuz yeni projemizde öncelikle kullanacağımız kontrolörümüzün tipini seçmemiz gerekiyor. Ben aşağıdaki şekilden görüldüğü gibi TWDLCAA24DRF model PLC seçtim. Hemen altında bu PLC ile kullanılabilecek Hardware yapısı açıldı. Fabrika ayarı olarak PORT 1: REMOTE LINK olarak ayarlıdır. Biz bu PORT 1 bağlantısını PLC programlamak için kullanacağmız için üzerinde gelip sol tıkladığımızda açılan EDIT CONTROLLER COMM SETUP seçeneğini seçerek açılan pencereden protokol tipini MODBUS olarak değiştiriyoruz.
Şekil 1: Application Browser
Bize ikinci bir port daha lazım. Bu portu da slave cihazlarla haberleşme için kullanabilelim. Şekil 1’de görülen HARDWARE üzerine sağ tıklayınca çıkan ADD OPTION seçeneğini sağ tıklayınca aşağıdaki şekilde görülen pencere açılacak.
Şekil 2: Add Option
Bu pencereden de PLC ye opsiyonel olarak alıp taktığımız TWDNAC485T RS485 portumuzu işaretleyip ekliyoruz ve HARDWARE altında 2. portumuzda aktif duruma geliyor. Yine port 2 üzerinde sağ tıklayarak EDIT CONTROLLER COMM SETUP diyoruz Açılan pencereden şekil 4’te görüldüğü gibi modbus ayarlarını yapıyoruz. Unutmayın!! Bu port slave cihazlarla haberleşme yapılacak port olduğundan bu pencerede yapılacak ayarlar, kullanılacak olan slave cihazlarla uyumlu olacak şekilde yapılmalıdır. Örneğin Stop Bit sayısı 1 veya 2 olabilir, Parity değeri tek, çift veya hiç olmayabilir.
Şekil 3: Application Browser
Şekil 4: Controller Comm Setup
Kendi yaptığım bir uygulamada PLC, 6 adet servo motor sürücü ve 6 adet servo motor kullandım. PLC ile tüm pozisyonlama verilerinin gönderimini ve tüm kontrolleri gerçekleştirdim. Sistemde 11 farklı pozisyon vardır ve sistem şu şekilde işliyordu: PLC önce tüm sürücülerden hazır bilgisi aldıktan sonra Modbus ile ilk pozisyonlama değerlerinin tüm sürücülere sırayla gönderiyor, hareketi başlatıyor, hareket tamamlanıyor, tüm sürücülerden hareketlerin tamamlandığı sinyali alınıyor. Hareketler hatasız tamamlanmışsa ikinci pozisyon değerleri gönderiliyor. 11 adet pozisyonlama yapıldıktan sonra başa dönülüyor.

Burada önemli olan ise modbus ile veri gönderirken verilerin karışmaması. Yani sırayla veri gönderiyorsunuz ama haberleşme yapısından dolayı verilerin gönderilmesi için bir süreye ihtiyaç duyuluyor. Bu süreleri uygun ayarlamak ve gönderme sıralamasını iyi ayarlamak gerekiyor. Bu tip çoklu mesaj göndermeli sistemlerde Sayıcı kullanmak en mantıklısı. Örneğin 100ms aralıklarla artan bir sayıcımız olsun. Bu sayıcımızda 20 ye kadar sayıyor olsun. Sayıcı 0 ile 5 arasındaysa 1. slave cihaza, 5 ile 10 arasındaysa 2. slave cihaza veri göndersin.
Şekil 5: Sabit değerler
Şekil 6: Birinci sürücü değerleri
Şekil 7: Sayıcı
Şekil 8: MSG Reset
Şekil 5'te haberleşme sırasında EXCH komutunun ihtiyaç duyduğu ortak değerlerin atanması yapılıyor. Şekil 6'da ise C0 sayıcısının değeri 0 ile 3 arasında ise modbus adresi %MW2'de "2" olarak belirtilmiş birinci slave cihaza %MW6 ve %MW7 de görülen iki adet pozisyonlama verisi gönderiliyor. Bu sayıcı aralığı aynı oranda attrırılarak diğer slave cihazlara da veri gönderiliyor. Şekil 8'de ise C0 sayıcısı dolduğunda haberleşme kontrolcüsü olan %MSG bloğuna reset atılıyor.