MODBUS-ASCII Nedir?

MODBUS, 1970'lerin sonunda programlanabilir lojik kontrollerin (PLC'ler) ile kullanılmak üzere geliştirilen bir iletişim protokolüdür. O zamandan beri de facto bir standart iletişim protokolü haline gelmiştir ve şimdi endüstriyel elektronik cihazları bağlamanın yaygın olarak kullanılabilir bir yoludur.
MODBUS, veri aktarımı için ASCII (American Standard Code for Information Interchange - Bilgi Değişimi için Amerikan Standart Kodu) veya RTU (Remote Terminal Unit - Uzaktan Terminal Ünitesi) modunu kullanabilir.
MODBUS-ASCII formatı, insan tarafından okunabilir ve hata ayıklaması daha kolaydır, ancak RTU modundan daha verimsizdir. Her 8 bitlik veri baytı iki ASCII karakteri olarak gönderilir, bu da gönderilmesi gereken veri miktarını artırır. Bunun yanı sıra, MODBUS-ASCII modu, hata denetimi için Uzunluk Kırmızılığı Kontrolü (LRC) kullanır, bu da MODBUS-RTU tarafından kullanılan Döngüsel Kırmızılık Kontrolü (CRC) kadar sağlam değildir.
MODBUS-ASCII'da, mesajlar iki nokta üst üste (":") karakteriyle başlar ve Satır Sonu (CRLF) karakteriyle biter. Bir mesaj içindeki her veri baytı, veri baytının onaltılık değerini kodlayan 2 ASCII karakteri tarafından temsil edilir. Hata denetimi, bir çeşit kontrol toplamı olan LRC aracılığıyla yapılır.
MODBUS-ASCII'nın basitliği, uygulanmasını ve hata ayıklamasını düzgün bir şekilde yapmayı kolaylaştırır ve verilerin insan tarafından okunabilir olması bazı durumlardaki önemli bir avantaj olabilir. Ancak, verimsizliği ve daha zayıf hata kontrolü, gürültülü ortamlarda veya yüksek veri hızlarına ihtiyaç duyulan durumlarda bir dezavantaj olabilir.
Örnek kod:
MODBUS-ASCII'da, bir istek veya yanıt mesajı belirli bir yapıya sahiptir:
:IDFCDDDDCRCCCRLF
:: Her MODBUS-ASCII mesajı bir : karakteriyle başlar.
ID: Bu, cihazın adresini (ID'sini) belirtir.
FC: İşlev Kodu (Function Code), yürütülmesi istenen işlemi belirtir.
DDDD: Bu, veri alanıdır. İşlem koduna bağlı olarak farklı anlamlar taşır.
CRCC: Bu, hata denetimi için Longitudinal Redundancy Check (LRC) değeridir.
CRLF: Bu, mesajın sonunu belirten bir 'Carriage Return' ve 'Line Feed' karakteridir.
Örneğin, bir MODBUS-ASCII mesajı şu şekilde olabilir:
:010300000001FD
Bu mesajı çözümlemek için:
:: MODBUS-ASCII mesajının başlangıcı
01: Cihaz adresi 1
03: İşlev Kodu 3 (Holding Register'dan okuma)
0000: Başlangıç adresi (0. adres)
0001: Okunacak kayıt sayısı (1 kayıt)
FD: Bu, LRC hata denetimidir. Bu, mesajdaki tüm baytların toplamının tersini alarak ve 1 ekleyerek hesaplanır (2'nin tamamlayıcısı olarak da bilinir).
CRLF: Bu örnekte gösterilmez, ancak gerçek bir mesajda, her mesaj bir 'Carriage Return' ve 'Line Feed' karakteri ile biter.
Lütfen unutmayın ki, bu ASCII mesajı verinin hex halinde olduğu için her bir karakter çifti bir baytı temsil eder. Ve hata denetimi için kullanılan LRC'nin hesaplanması, verinin doğru bir şekilde iletilip iletilmediğini denetler. Bir yanıtlama mesajında, veri alanı, istenen kayıtların değerlerini içerir. Bu örnekteki yanıt, istenen kayıtta okunan değerleri içerir.
Sepete Henüz Ürün eklemediniz!
