ModBus RTU 3,5T Süresinin Hesaplaması

Başlatan baran123, 08 Ocak 2018, 05:41:49

baran123

Selamlar
ModBus RTU Haberleşme yaparken kafamı karıştıran bir nokta oldu.

Bildiğimiz üzere 2 Frame arasına 3,5T lik yani 3,5Bytelık bekleme konulur.
UART üzerinden veri gönderdiğimizi varsayalım.
9600 bps 8N2 haberleşmesi olsun. Toplamda 1 UART Frame'i 8 Data biti + 2 Stop biti ile 10 Bit olur. (Parity yok)

9600 / 10 ile bir saniyede 960 karakter gönderebiliriz demek. (Kafamı karıştıran nokta burası.)
1000 / 960 = 1,041 mili saniye ile de bir karakterin ne kadar sürede gittiğini buluruz.
Bunu 3,5 ile çarparsak
1,041 * 3,5 = 3,64583 mili saniye olur.

Burada kafamı karıştıran nokta Baud Rate'i bit sayısına bölerken sadece 8 biti mi böleceğim ? Yoksa toplam bit sayısını mı böleceğim ?
İdrak i meali bu küçük akla gerekmez, zira bu terazi bu kadar sıkleti çekmez.

ErsinErce

T'yi frame'in alacağı zaman olarak hesaplaman lazım,

yani toplam bit sayısı üzerinden hesaplaman lazım

Start biti + Data uzunluğu + Parity + Stop Biti

8N2 için bu sayı 11 bit

8N2 de 9600/11 kadar karakter gönderebilirsin.

quarko

Toplam bit sayısına böleceksin. 9600bps hızında 1 byte ın gönderilmesi süresini hesaplamak için,

(1/9600) * 10 = 0,0010416666666667 sn (@8N1 için)

Dolayısıyla 3.5T süresi de bu sürenin 3.5 katı olmalıdır. Her baudrate için bu 3.5T süresini hesaplamak gerekir. Bir de şu var. 3.5T süresi minimum bir süredir. Yani hatta en az bu kadar süre boşluk olmalıdır, anlamına geliyor. Birde 1.5T meselesi var. Frame in içindeki byte lar arasındaki maksimum boşluk miktarını belirtiyor o da.
"Aslanlar kendi hikayelerini yazmadıkça, avcıların kahramanlık hikayelerini dinlemek zorundayız."

foseydon

Ersinerce'nin hesap doğru bir karakter 11 bit. Rs232 uygulama dökümanı var modbus sayfasında onu okumanı tavsiye ederim.

baran123

Toplam bite bölüyorum tamamdır :)
Çok teşekkür ederim.

İdrak i meali bu küçük akla gerekmez, zira bu terazi bu kadar sıkleti çekmez.