İçeriğe geç

Ücretsiz araç

Modbus hesaplama araçları

Modbus RTU CRC'sini hesaplayın ve istek çerçevesi oluşturun, 40001 gibi referansları protokol ofsetine çevirin, register değerlerini dört bayt sırasında float ve tamsayı olarak çözün.

Çerçeve oluştur

Sonuç

CRC-16/MODBUS

–

Hatta gönderim sırası (düşük bayt önce)

–

CRC eklenmiş çerçeve

–

Çerçeve oluştur

–

CRC ve RTU çerçevesi

Modbus RTU'da her çerçeve, iletim hatalarını yakalamak için CRC-16/MODBUS ile biter. Hesaplayıcı girilen baytların CRC'sini verir ve hatta gönderildiği sırayı (önce düşük bayt) gösterir. Çerçeve oluşturucu; slave ID, fonksiyon kodu, adres ve adet ya da değerden okuma ve yazma isteklerini hazırlar. Değerler Modbus uygulama protokolü (v1.1b3) sınırlarına göre denetlenir: slave 1–247 (0 yalnızca yazmada yayın), adres 0–65535, okumada FC01/02 için en çok 2000, FC03/04 için en çok 125 adet, FC15 için 1968 coil, FC16 için 123 register; sınır dışı bir değer sessizce kırpılmaz, alanın altında hata olarak gösterilir. Doğrulama için: "123456789" metninin CRC-16/MODBUS değeri 0x4B37, 01 03 00 00 00 0A isteğinin CRC baytları C5 CD'dir.

Adres çevirici

Cihaz dokümanları registerları çoğu zaman 40001 gibi Modicon referanslarıyla verir; protokolde ise adres 0 tabanlı bir ofsettir. Çevirici referansı tabloya, ofsete ve kullanılacak fonksiyon kodlarına çevirir; ters yönde tablo ve ofsetten 5 ve 6 haneli referansı üretir. Okuduğunuz değer bir register kayıksa ilk bakılacak yer bu 1 farkıdır.

Değer çözücü

16 bitten büyük değerler birden fazla register'a yayılır ve bayt sırası cihazdan cihaza değişir. Çözücü 1, 2 ya da 4 register'ı UINT16, INT16, UINT32, INT32, FLOAT32 ve FLOAT64 olarak dört sırada birden gösterir; kodlayıcı ise bir değerin hangi registerlarla gönderileceğini hesaplar. Sahada bunu nasıl ele aldığımızı PLC'den veri okuma rehberimizde ve Modbus TCP ve RTU entegrasyonu sayfamızda anlatıyoruz. Diğer araçlar araçlar sayfasında.

Araç bilgi amaçlıdır; sahada cihaz dokümanı ve bilinen bir değerle doğrulama yapılmalıdır.

Sıkça sorulan sorular

Merak edilenler

Modbus CRC nasıl hesaplanır?

Modbus RTU, CRC-16/MODBUS kullanır: başlangıç değeri 0xFFFF, polinom 0xA001 (0x8005'in ters çevrilmiş hali). CRC, slave ID'den son veri baytına kadar tüm baytlar üzerinden hesaplanır ve çerçevenin sonuna önce düşük bayt, sonra yüksek bayt olarak eklenir. Örneğin 01 03 00 00 00 0A için CRC baytları C5 CD'dir.

40001 ile 0 adresi arasındaki fark nedir?

40001, holding register tablosunun ilk elemanının Modicon referans numarasıdır; ilk hane tabloyu (4 = holding register) gösterir, kalan kısım 1 tabanlı register numarasıdır. Protokolde ise adres 0 tabanlıdır, bu yüzden 40001 hatta 0 ofsetiyle ve 03 fonksiyon koduyla okunur. Cihaz dokümanı hangi gösterimi kullandığını belirtmelidir; bir kayma varsa genellikle bu 1 farkından kaynaklanır.

Float değer neden yanlış okunuyor?

32 bitlik bir float iki register'a yayılır ve cihazlar bu iki register'ı ve içlerindeki baytları farklı sıralarla gönderebilir: ABCD, CDAB, BADC ya da DCBA. Değer çözücü aynı registerları dört sırada da gösterir; makul görünen sonuç cihazın kullandığı sıradır. Doğrulamak için bilinen bir değeri (ör. ekranda görünen sıcaklık) karşılaştırın.

5 haneli ve 6 haneli Modbus adresi farkı nedir?

5 haneli gösterim (40001–49999) her tabloda en fazla 9999 adresi kapsar. Protokol 65536 adrese izin verdiği için 6 haneli gösterim (400001–465536) kullanılır. İkisi de aynı ofseti anlatır: 40001 ile 400001 aynı register'dır.

Girdiğim veriler bir yere gönderiliyor mu?

Hayır. Tüm hesaplamalar tarayıcınızda yapılır; hiçbir değer sunucuya gönderilmez.

Sonraki adım

Üretim verilerinizi nasıl değerlendirebileceğimizi konuşalım.

Tesisinizi, makinelerinizi ve hedefinizi anlatın. Entegrasyon mühendislerimizle görüşerek projenizin kapsamını birlikte belirleyin.

Ödüller ve referanslar

Endüstriyel yazılım deneyimimiz, referanslarımız ve ödüllerimiz

Referanslarımızı inceleyin →