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.
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.
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'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.



