İçeriğe geç

RS485 NEDİR ? NASIL ÇALIŞIR ?

RS-485 STANDARDI

RS-232 kısa mesafeli iletişim için tasarlanmış bir seri iletişim standardıdır. RX ve TX üzerinden iletilen bilgiler referans seviyesi olan GND’ye göre belirlenmektedir. RS-232 ile kısa mesafeli ve 115.2 Kbit/sn gibi hızlara ulaşılabilmektedir. Bu standart gürültülü ortamlar için uygun değildir. RS-232 sürücüleri bir çok alıcıyı aynı anda sürebilecek şekilde tasarlanmamıştır.

RS-485 daha uzun mesafelerde, gürültülü ortamlarda, daha yüksek hız gerektiren yerlerde, daha çok alıcı vericinin gerektiği yerlerde kullanılmak üzere geliştirilmiş bir seri iletim ortamıdır.

RS-232 standardında yazılım katmanında kullanılan protokolün ne olacağı, iletim katmanında konnektörlerin ne olacağı gibi özellikler kesindir. RS-485 standardı ise sadece iletim katmanı için standart belirlemiştir. Yazılım katmanında kullanılacak protokol ve kullanılacak konektör tiplerini kullanıcının isteğine bırakmıştır.

RS-485’in temeli dengelenmiş hat üzerinden verilerin iletilmesi (Balanced Data Transmission) mantığına dayanır. RS232 dengelenmemiş (unbalanced) iletim ortamı olarak adlandırılır. RS-485 üzerinden veriler A ve B adları verilen iki kablo üzerinden iletilir. Bu iki uç dengelenmiş hatlardır. Dengelenmiş hatlarda vericilerde diferansiyel (fark kuvvetlendiriciler) sürücüler, alıcılarda ise diferansiyel alıcılar (fark alıcılar) bulunur. Böyle bir hat aşağıda gözükmektedir.

BALANCED DATA TRANSMİSSİON

Dengelenmiş hattın mantığı şöyledir, eğer veri iletilirken iletim ortamında bu iki hatta da aynı yolla gürültü bulaşırsa, alıcının girişindeki fark kuvvetlendiricileri bu iki hattın farkını alacaklarından girişteki toplam gürültü miktarı sıfır olacaktır. Dolayısı ile hat boyunca veriye binen gürültünün alıcı girişindeki etkisi minimuma inecektir.

RS-485’de burulmuş kablo kullanılması ve doğru sonlandırma yapılması ile çok uzun mesafelerde (1200 m) çok yüksek hızlar (10 Mbitsn) sağlanmaktadır. Burulmuş kablo iki burgu arasında faz farkı yaratarak gürültünün azalmasına yardımcı olurken, sonlandırma işlemi iletim ortamındaki yansımayı minimuma indirecektir. RS485 standardı alıcı ile vericinin GND’leri arasında 7 Volta kadar farka müsade eder. Buda çipin 5V besleme voltajına göre -7 V ile +12V (5+7) GND kaymasına müsade etmesi demektir. Böylelikle alıcı ve vericinin farklı güç kaynakları dolayısı ile oluşacak GND fakından dolayı oluşan sorunları minimuma indirger.

RS-485 sürücüler 60 mA sağlayacak şekilde tasarlanır. Bu 60 mA, 32 adet alıcının devreye bağlanması, sonlandırma direncinin sisteme dahil edilmesi ve en kötü şartlar göz önüne alınarak belirlenmiştir. RS-485 sürücüleri ısı ile kapanma özelliğine sahip olup A ve B uçlarından fazla akım çekilmesine izin vermeyerek merkezi işlem birimini korurlar. RS-485 alıcılarının giriş direnci 12Kohm olarak standartlaştırılmıştır.

RS-485 Konektörü

RS-485 (Balanced Data Transmission), uzun mesafelerdeki veri iletişiminin sağlanması için hazırlanmış bağlantı araçlarından birisidir.

RS-232’nin aksine RS-485’ler uzun mesafelerde veri aktarımını sağlamaktadırlar. Standart olarak üretilirler ve referans seviyeleri GND’ye göre belirlenmektedir. Yine 485’lerin 232’lere göre farkı bunların gürültülü ortamlarda, yüksek hız gerektiren ortamlarda ve daha çok alıcı ve vericinin bulunduğu ortamlarda kullanılabilir oluşudur.

RS485 üzerinden veri A ve B adı verilen (bazı kaynaklarda + ve – olarak belirtilir) iki kablo üzerinden iletilir. RS485 birbirine göre tam zıt iki sinyal kullanır. Yani A sıfır iken B birdir, iletilen veri’nin durumu bu iki sinyalin aritmetik farkından tespit edilir.

Eğer Va-Vb’nin aritmetik farkı 200mVdan büyük ve eşit ise çıkış 1, eğer Va-Vb’nin aritmetik farkı -200mVdan küçük ve eşit ise çıkış 0’dır. Aşağıda herhangi bir UART çıkışında b’01010101′ bilgisinin hem RS232 den hem de RS485’de nasıl ifade edildiği verilmiştir.

RS-485 konektörlerinin 232’lerden bir başka farklı yönü de bu bağlantı araçlarının sadece iletim katmanının standardize edilmiş olmasıdır. Geri kalan yazılım, protokol ve diğer konektör türleri gibi özellikler kullanıcının tercihine bırakılmıştır.

RS-485 konektörü, -7 Volt ile +12 Volt arasında bir değer çalıştırılabilir. Bu sayede alıcı ve verici arasında meydana gelebilecek bir GND kayması sorunu en aza indirgenmiştir. RS-485 konektörleri 32 adet alıcıya hitap edebilecek kapasitede üretilmişlerdir.

RS-485 konektörlerinin bir diğer önemli özelliği ise ısınma nedeniyle cihaz kapanmalarından (termal shut down) etkilenmemeleri için fazla akım geçişlerini koruyabilecek tasarıma sahip olmalarıdır. Bu nedenle bu konektörlerin giriş direnci 12 Kohm olarak standart hale getirilmiştir.

Yüksek gürültülü cihazların yakınından geçen yüksek voltaja sahip güç kabloları RS-485 konektörlerine zarar verebilmektedir. Bu nedenle böyle ortamlarda RS-485 cihazları için galvanik izolasyon devrelerinin kurulması önerilmektedir. Bu sayede alıcı ve verici devrelerin bozulmasının önüne geçilmiş olunacaktır. Dikkat edilmesi gereken bir diğer nokta kullanılacak yalıtım malzemesinin konektör geçiş hızını ne derece etkileyeceğidir.

RS-485 Fiziksel Katmanı :
RS485 EIA tarafından tanımlanmış çok yönlü bir seri haberleşme standartıdır. Birden fazla cihazın birbirleriyle haberleşmesi gereken veri işleme, ve kontrol uygulamalarında yoğun bir şekilde kullanılır.

RS485 in belli başlı teknik özellikleri
Maksimum sürücü sayısı : 32
Maksimum alıcı sayısı : 32
Çalışma şekli : Half Duplex
Network Yapısı : Çok noktalı bağlantı
Maksimum Çalışma Mesafesi : 1200 metre
12 m kablo uzunluğunda maksimum hız : 35 Mbps
1200 m kablo uzunluğunda maksimum hız : 100 kbps
Alıcı giriş direnci : 12 kohm
Alıcı giriş duyarlılığı :+/- 200 mvolt
Alıcı giriş aralığı : -7…12 volt
Maksimum sürücü çıkış voltajı : -7…12 volt
Minimum sürücü çıkış voltajı ( yük bağlı durumda ) : +/- 1.5 volt

RS485 in network yapısı data işleme ve kontrol uygulamalarında yoğun bir şekilde kullanılmasının ana nedenidir. 12 kohm giriş direnci ile networke 32 cihaza kadar bağlantı yapılabilir. Daha yüksek giriş direnciyle bu sayı 256 ya kadar çıkarılabilir. RS485 tekrarlayıcıları ile bağlanabilecek cihaz sayısı birkaç bine, haberleşme mesafeside birkaç kilometreye çıkabilir. RS485 bunun için ayrıca bir donanım istemez yazılım kısmıda RS232 den zor değildir.

Yukarıdaki resim RS485 network yapısını göstermektedir. N kadar düğüm çok noktalı RS485 networküne bağlanmıştır. Hattın iki ucundaki R dirençleri 100 ohm seçilerek yansıma önlenmiş olur böylece daha yüksek hız ve daha uzun mesafeye erişilmiş olur.

RS485 standardı 32 adet Alıcı-Verici çiftinin aynı anda sisteme bağlanmasına izin verir. Ancak istisnai durumlar olarak çok düşük hızlarda sisteme 64 hatta 128 uç bağlanabilir. Ancak sistemin kararlı çalışması garanti edilemez. RS-485 topolojisi 2 uçlu ya da 4 uçlu şekilde olabilir. İki uçlu yapıda veriler master (efendi) ile slave (köleler-uç noktalar) arasında half dublex (aynı anda tek yönlü) olarak yapılır. Yani data akışı tek yönlü olup, veri ya efendiye doğrudur ya da uç noktalara doğrudur. Uç noktalar efendi ile konuşabilecekleri gibi birbirleri ile de konuşabilirler. Ancak hatta bir kargaşa oluşmaması için hattın veri trafiğinin biri tarafından kontrol edilmesi gerekir. Bu işi efendi yapar.

Dört uçlu yapıda veriler full dublex (aynı anda iki yönlü) olarak efendiden uç noktalara ve uç noktalardan efendiye doğru iletilebilir. Bu yapıda uç noktaların efendiye ilettikleri bilgi diğer uç noktalar tarafından dinlenemez. Uç noktalar birbirleri ile konuşamaz. Bu yapıda da aynı anda iki ya da daha fazla uç noktanın veri göndermek istemesi ile oluşacak kargaşayı önlemek için hattaki veri trafiği efendi tarafından kontrol edilir.

RS-485 hattı yakınında motor gibi çok gürültü üreten cihazların güç kabloları geçiyorsa buradaki oluşacak kısa süreli geçiş voltajları RS485 hattı üzerine yüksek voltaj binişleri yapacaktır. Pratik olarak güç hatlarından data hatlarına girişim güç hattındaki voltajın %10’u kadardır. Yani data hattının yanındaki bir güç hattında oluşacak olan 1000 Voltluk bir pik darbe data hattına 100 Voltluk bir voltaj bindirecektir. Bu da alıcı devrelerinin bozulmasına neden olur. Bu tür ortamlarda çalışacak RS-485 cihazları için galvanik yalıtım devreleri kullanılması uygun olacaktır. Galvanik yalıtım devresi optik ya da trafolu olabilir. Optik yalıtımlı devrede kullanacak optokuplerlerin hızları hattın hızını belirleyecektir.

RS-485 bağlantı yapısında efendi ile uç noktalar bir sıra üzerinde dizilmesi en uygun bağlantı şeklidir. Ayrıca uç noktaların ana hatta en kısa bağlantı ile bağlanması çok önemlidir. Aşağıda bazı bağlantı şekilleri verilmiştir.

RS-485 de data hattındaki veri hızı birçok parametreye bağlı olsa da çok iyi ayarlanmış uzun olmayan bir hatta saniyede 25 Mbit kadar hızlara ulaşılabilir. 

10 metreye kadar olan mesafelerde SN75ALS176 türü bir sürücü ile 25 Mbit / saniyelik hızlara ulaşılabilir. Hat uzunluğu 10 metrenin üzerine çıkmaya başlayınca hat kayıplarından (hattın kapasitif etkisinden dolayı hat alçak geçiren filtre özelliği gösterir) dolayı hız düşer. Hattın başında vericiden çıkan sinyalin yükselme süresi 3ns iken 20 metrelik hattın sonunda bu süre 10ns’ye ye kadar çıkar. Bu da hattın alçak geçiren filtre özelliğidir. Pratik olarak bir hatta ulaşılabilecek

hız;

Data Hızı x Hat Uzunluğu<108

olarak formüle edilebilir. Bu formüle göre hat uzunluğu 100 metre olan bir RS485 iletişiminde kullanılacak hız (106 bit/sn) 1 Mbit/saniyedir. Ayrıca çok uzun hatlarda kullanılan kablonun direncide gözönüne alındığında hat vericiden çıkan sinyalin alıcıya ulaşana kadar zayıflamasına neden olur. Burulmuş bir 1000 metrelik 2×0.6 mm kablonun direnci 100 ohm civarındadır.

Gürültü etkisini azaltmak için burulmuş kablonun blendajlı (shield) türü tercih edilmelidir. Genellikle 24AWG türü ve karakteristik empedansı 100-120 Ohm olan tercih edilmelidir. RS-485’de Blendajın her iki ucu da topraklanmalıdır. Eğer blendajın sadece bir tarafı topraklanırsa boşta bırakılan uç yüksek frekanslar için anten görevi yaparak etraftaki gürültüyü toplar, bu nedenle blendajın iki ucu da topraklanmalıdır.

Blendajın sadece bir tarafının topraklanması audio uygulamaları gibi daha düşük frekanslı iletişim ortamları için uygundur. Blendaj genelede cihazın metal kutusuna bağlanarak topraklanırken diğer tarafta basit bir RC devresi üzerinden cihazın metal akşamına bağlanmalıdır. Diğer taraftaki RC devresi blendaj üzerinden akabilecek doğru akımın sınırlanmasına yardımcı olur.

ARDUINO ILE RS485 UZERINDEN MODBUS HABERLESME

Modbus master ve slave kütüphanelerine buradan erişebilirsiniz.

Örnek Master Kodu :

 #define baud 9600 // haberleşme rate i 
#define timeout 1000// paket zaman aşımı
#define polling 200// ne kadar hızlı veri çekilecek
#define retry_count 10 // hata vermeden önce deneme sayısı


//daha önce bahsettiğimiz enable pin RE ve DE ortak bağlantıya gidecek
#define TxEnablePin 2 


#define LED 9


// master üzerinde kaç adet register tutulacak
#define TOTAL_NO_OF_REGISTERS 1


enum
{
  PACKET1,
  PACKET2,
  TOTAL_NO_OF_PACKETS // değiştirmeyin ekleyeceğiniz registerları yukarı ekleyin
};


//registerlar için paketler oluşturuluyor
Packet packets[TOTAL_NO_OF_PACKETS];


//master registerları izin dizi tanımlandı
unsigned int regs[TOTAL_NO_OF_REGISTERS];


void setup()
{
  // paketler oluşturuluyor
  modbus_construct(&packets[PACKET1], 1, READ_HOLDING_REGISTERS, 0, 1, 0);
  modbus_construct(&packets[PACKET2], 1, PRESET_MULTIPLE_REGISTERS, 1, 1, 0);
  
  // cihaz master olarak ve haberleşme değerlerine bağımlı olarak oluşturuluyor
  modbus_configure(&Serial, baud, SERIAL_8N2, timeout, polling, retry_count, TxEnablePin, packets, TOTAL_NO_OF_PACKETS, regs);
  
  pinMode(LED, OUTPUT);
}


void loop()
{
  modbus_update();
  
  regs[0] = analogRead(0); // enum içinde 0. indexe tanımlı registera değer yazılıyor
  // her modbus update ile bu değer slave lere gönderiliyor
}

Örnek Slave Kodu:

 #include <SimpleModbusSlave.h>
#define  LED 9  




enum 
{     
  // slave üzerindeki regesterlarımızı tanımlıyoruz.
  // ilk register 0 numaralı adrese sahip olur ve sonrasındaki her register için adres 1 artar.
  ADC_VAL,     
  PWM_VAL,        
  HOLDING_REGS_SIZE // Yine buna dokunmuyoruz.Register sayımızı tutar ve otomatik artar
};


unsigned int holdingRegs[HOLDING_REGS_SIZE]; // register dizisi oluşturu
////////////////////////////////////////////////////////////


void setup()
{
  /* parameters(HardwareSerial* SerialPort,
                long baudrate, 
unsigned char byteFormat,
                unsigned char ID, 
                unsigned char transmit enable pin, 
                unsigned int holding registers size,
                unsigned int* holding register array)
  */
  
  /* modbus parametre açıklamaları:
     SERIAL_8N2: 1 start bit, 8 data bit, 2 stop bits
     SERIAL_8E1: 1 start bit, 8 data bit, 1 Even parity bit, 1 stop bit
     SERIAL_8O1: 1 start bit, 8 data bit, 1 Odd parity bit, 1 stop bit
  */
//
  modbus_configure(&Serial, 9600, SERIAL_8N2, 1, 2, HOLDING_REGS_SIZE, holdingRegs);
  modbus_update_comms(9600, SERIAL_8N2, 1);
  
  pinMode(LED, OUTPUT);
}


void loop()
{
  modbus_update();
  
  holdingRegs[ADC_VAL] = analogRead(A0); // master 0.1.0 paketinde bu değeri okuyor.
  
  analogWrite(LED, holdingRegs[PWM_VAL]>>2); //master 1.1.0 dan gelen veri pwm olarak basılıyor
  
}

Alıntıdır:
https://www.tekniktrend.com/rs232-rs485-nasil-calisir/

https://www.kontrolkalemi.com/forum/konu/rs485-protokol%C3%BC-hakk%C4%B1nda.38656/post-219633

http://320volt.com/rs485-balanced-data-transmission-hakkinda-bilgiler/

http://elektro-blogger.blogspot.com/2015/10/arduino-ile-rs485-uzerinden-modbus.html

Kategori:DonanımElektronik

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir