Modbus Hakkında

Başlatan robikod, 12 Mayıs 2020, 16:35:36

robikod

Elimde iki adet stm32f4 discovery var bunları modbus rtu ile haberleştirmek için,

RS485 dönüştürücüsü kullanmak zorunda mıyım ?

Yoksa Rx ve Tx portlarından direk haberleşme yapılabilir mi? Aradaki sinyaller hakkında bilgi verebilecek olan var mı ?

RS485 to TTL converterlar lojik olarak 5v seviyesine dönüştürüyor diye biliyorum, aynı lojik seviyedeki iki özdeş portu converter olmadan bağlayamaz mıyız ?

Bu konuda yeniyim çok anlayamadım açıkcası

DaRt

#1
Yapabilirsiniz. Bir master ve slave olması durumunda sorun olmaz. Ancak modbus protokolünün özelliği bir master ve çok sayıda slave olmasıdır. Rs232 iletişiminde ikiden fazla cihaz olması durumunda iş karışacaktır. Bu durumda https://i.stack.imgur.com/JkH5A.png şöyle bir bağlantı kurulabilir.
Ek: Tabiiki deneme amaçlı olarak bu şekilde  olabilir. Araya mesafe ve doğal olarak parazitler girdiğinde iletişimde sıkıntı çıkacaktır.

robikod

Alıntı yapılan: DaRt - 12 Mayıs 2020, 16:52:04Yapabilirsiniz. Bir master ve slave olması durumunda sorun olmaz. Ancak modbus protokolünün özelliği bir master ve çok sayıda slave olmasıdır. Rs232 iletişiminde ikiden fazla cihaz olması durumunda iş karışacaktır. Bu durumda https://i.stack.imgur.com/JkH5A.png şöyle bir bağlantı kurulabilir.

(Resim gizlendi görmek için tıklayın.)

Rs232 point to point için kullanabiliyor diye biliyorum.

Elimde 2 adet stm32 var mesela, point to point bağlayıp modbus rtu ile haberleşip led yaktım diyelim ancak hattı dinleyeceğim hiçbir şeye de bağlı değilim. Bu mümkün mü ?

İki cihazın UART Rx ve Tx pinlerini kullanarak iletişim kurabiliyor muyuz yani ?

foseydon

modbus fiziksel bir protokol değildir. Fiziksel iletim için ne kullanacağınız size kalmış. Fiziki yapı içerisinde hem RS232 hem RS485 bulunabilir, hatta buna ethernet'te ekleyebilirsiniz. bu durumlarda dönüştürücü lazım.

sizin duruma gelirsek, 2 tane stm varsa elinizde buları cross birbirine bağlayabilirsiniz.

robikod

Alıntı yapılan: foseydon - 12 Mayıs 2020, 17:25:25modbus fiziksel bir protokol değildir. Fiziksel iletim için ne kullanacağınız size kalmış. Fiziki yapı içerisinde hem RS232 hem RS485 bulunabilir, hatta buna ethernet'te ekleyebilirsiniz. bu durumlarda dönüştürücü lazım.

sizin duruma gelirsek, 2 tane stm varsa elinizde buları cross birbirine bağlayabilirsiniz.

Fiziksel olarak, Rx-Tx , Rx-Tx olarak bağladım diyelim. Asıl modbus'u yazılım protokolü üzerine inşa ediyoruz değil mi ? Aslında seri iletişimin data frame'ini özelleştirmişiz gibi düşünebilir miyiz?

foseydon

Hocam modbus sadece uygulama katmanında tanımlıdır. yani modbus işi tamamen sizin yazdığınız yazılımda bitiyor.

Misal, RS232 protokolü sadece fiksel katmandadır. Verinin fiziksel olarak nasıl iletileceğini belirler. Fiziksel olarak 7-30V arası logic 1 kabul ediyor misal. Sen mikro ile RS232 iletişimi yapmak istiyorsan göndereceğin veriyi bu voltaj seviyesine çıkartmak zorundasın. Aynı şekilde gelen sinyali de düşürmek zorundasın.MAX232 entegreleri falan bu işleri hallediyor işte.

Modbus'ın olayına gelirsek. RS232 sadece fiziksel olduğu için, gelen giden veriyi yorumlamak için bir protokole ihtiyacın var. Sonuçta hatta gürültü biniyor vs. ek bir veri oluşuyor. O yüzden bazı amcalar oturmuş, modbus diye bir protokol oluşturmuş. istersen sen kendin kendi protokolünü oluşturabilirsin. Misal, modbus protokolünde verinin katarının başını algılamak için zaman kullanılıyor. Sen arka "##" string'i görünce veri başlıyor diyebilirsin vs.

mufitsozen

Alıntı yapılan: robikod - 12 Mayıs 2020, 17:30:06Fiziksel olarak, Rx-Tx , Rx-Tx olarak bağladım diyelim. Asıl modbus'u yazılım protokolü üzerine inşa ediyoruz değil mi ? Aslında seri iletişimin data frame'ini özelleştirmişiz gibi düşünebilir miyiz?


Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

robikod