Yazmaç ve Veri Tipi Dönüştürücü
İki Modbus yazmacını dört bayt sırasıyla float32, int32 ve uint32 olarak yorumlayın; değeri yazmaçlara geri çevirin.
| Bayt sırası | Bayt (A B C D) | uint32 | int32 | float32 |
|---|
Cihazın belgesindeki bayt sırasına uyan satırı kullanın. Emin değilseniz, bilinen bir değeri (ör. 22,5) okutup hangi satırın doğru çıktığına bakın.
Yazmaç 1 tek başına (16 bit)
- uint16
- –
- int16
- –
| Bayt sırası | Yazmaç 1 | Yazmaç 2 | Hat üzerindeki baytlar |
|---|
16 bit tiplerde yalnızca Yazmaç 1 kullanılır.
Neden dört farklı bayt sırası var?
Modbus yazmaçları 16 bitliktir ve her yazmaç büyük uçlu (önce yüksek bayt) iletilir. 32 bitlik bir değer (float32, int32) ise iki ardışık yazmaca bölünür, ancak standart bu iki yazmacın hangi sırayla dolacağını belirtmez. Üreticiler farklı seçmiştir; bu yüzden bir değer “ABCD”, “CDAB”, “BADC” ya da “DCBA” olarak saklanabilir:
- ABCD — büyük uçlu: yüksek yazmaç önce
- CDAB — yazmaçlar yer değiştirmiş (word swap); birçok PLC ve sayaç bunu kullanır
- BADC — her yazmacın baytları yer değiştirmiş (byte swap)
- DCBA — tam küçük uçlu
Doğru sırayı bulmanın en güvenli yolu, değeri bildiğiniz bir ölçümü okuyup tabloda hangi satırın makul sonuç verdiğine bakmaktır. Yanlış sıra genellikle çok büyük, çok küçük ya da NaN bir float32 üretir.
Sık sorulan sorular
float32 neden iki yazmaç kaplar?
float32, IEEE 754 tek duyarlıklı 32 bitlik bir sayıdır; bir Modbus yazmacı yalnızca 16 bittir. Bu yüzden değer iki ardışık yazmaca bölünür ve ilk yazmacın adresi okuma isteğinde verilir.
int16 ile uint16 arasındaki fark nedir?
Aynı 16 bit, uint16’da 0–65535, int16’da ise −32768…32767 olarak yorumlanır (iki’nin tümleyeni). 0x8000 ve üzeri değerler int16’da negatif olur.
Girdiğim yazmaçlar bir yere gönderiliyor mu?
Hayır. Dönüşüm tamamen tarayıcınızda yapılır.
İlgili içerikler: Modbus · PLC · Modbus TCP ve RTU Rehberi: Yazmaçlar, Fonksiyon Kodları, Sık Hatalar
Bu hesabı gerçek bir projede otomatikleştirmek mi istiyorsunuz?
Verinin makineden panoya otomatik akması için HighByte Intelligence Hub ve GoodData ile birlikte bir mimari tasarlayalım.