sn75176 RS485 Haberleşme mesafe sorunu

Başlatan jackal183, 10 Ocak 2012, 21:55:30

jackal183

Arkadaşlar merhaba, SN75176 ile yaklaşık olarak 200 metre içerisinde 16 cihazla haberleşmeye çalışıyorum. Sonlandırma direnci 120 ohm takılı ve DATA A VCC'ye 2k2 ile DATA B de GND'ye 2k2 ile bağlı. Kullandığım PC Programında sistem cihazlar ile 300 ms içinde bağlantı kurmaya çalışıyor. Yani önce 1. cihazın bilgisini gönderiyor ve 300 ms içinde ondan bir cevap bekliyor, cevap gelmezse cihaz çalışmıyor diye uyarı veriyor. sonra 2, 3., 4.  ..... cihazın sorgulamasını yapıyor. sistemi takıp çalıştırdığımda 16 cihazın her birinden sinyal alıyorum, ancak 5 dakika sonra cihazlarla iletişim yavaş yavaş kopmaya başlıyor, önce bir cihaz gidiyor, 5 dakika sonra başka bir cihaz derken, yarım saat sonunda sadece 5-6 cihaz ile haberleşme yapabiliyorum. Gücü kesip tekrar verdiğimde yine 16 cihazla sorunsuz haberleşmeye başlıyorum ve yine 5 dakika sonra yavaş yavaş kopmaya başlıyor. Kısa kablolarla 16 cihazı bağlayınca bir sıkıntı oluşmuyor, ancak hat uzayınca böyle bir sorunla karşılaşıyorum. Bunun sebebi ve çözümü ne olabilir? Konu ile daha önce çalışmış arkadaşlar yardımcı olabilir mi?

My75

Bu 16 cihaz aynı besleme ilemi çalışıyor yada şaseler ortakmı?? Ortak ise 2K2 dirençleri 22K gibi daha yüksek bir değerle değiş ve 120 ohm sonlandırmayı 200m için kullanma..Bakalım sonuç ne olacak..

Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

Veli B.

Balans dirençleriniz yanlış. A ve B hattı için direnç değeriniz ne görünüyor? Teknik dökümanları ve uygulama notlarını incelerseniz, detaylı bilgi mevcut.  Muhtemelen toprak sorununuz da mevcut. Asıl kritik noktalardan bir tanesi, direction pinlerini kontrol şekliniz. Haberleşme öncesinde ve sonrasında nasıl bir kontrol yapıyorsunuz? Kullandığınız bağlantı topolojisi nedir?

OG

Isı ile voltaj düşmesi falan yok ise problem yüksek ihtimalle yazılımsal sanıyorum. Başlangıçta temiz haberleşip sonra sekteye uğraması onu gösteriyor.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

jackal183

#4
16 cihazı öncelikle aynı güç kaynağından(12 Volt) besledim ve hattın sonunda 9 volt okudum. bu yüzden hattın ortasında beslemeyi ayırdım ve ikinci bir güç kaynağı kullandım ve bu sayede her bir cihazda 11-12V okudum. cihazların her birinde 7805 var 9 volta düşse bile sorun yaratmazdı ama ben yine de işimi garantiye almak için yaptım bunu. fakat data hattını ayırmadım. balans direnç değerleri dediğim gibi 2k2, uygulama notlarında hesaplamalarla bakınca 2k2 doğru değer değil. bu çok kritik bir değer mi?

şase sorunu da olabilir evet çünkü iki farklı güç kaynağı var ve şaseleri birbirine bağlanmış değil.

120 ohm ile sonlandırmadan da denedim sonuç aynı.

haberleşme esnasında direction pinlerinin durumu ise: sadece gönderme yapacağım zaman tx modedayım onun dışında cihazlar her zaman rx modda data bekliyor.

problemin yazılımsal olması ihtimalini de düşündüm ancak bu 16 cihazı kısa kısa kablolarla bağlayınca bir sıkıntım çıkmıyor,  1 saat boyunca sistemi izledim ve her bir cihaz ile haberleştim. kablo uzayınca sıkıntı çıkmaya başlıyor.

kullandığınız bağlantı topolojisi derken ne demek istediğinizi tam anlayamadım? ancak şema ile gösterecek olursam, şu resimde görüldüğü gibi bağlantı;


ve sn75176 ise şu resimdeki gibi bağlı;


120 ohm her bir cihazda değil sadece en sondaki cihazda takılı.

haberleşme için standart cat6 kablosu kullanıyorum.

Her yolu denedim ancak sitemi bir türlü stabil hale getiremedim.

Edit OG, resmi biz göremiyoruz

hosting images

OG

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

jackal183

#6
9600 baud haberleşme, 1200 bauda da denedim ancak 1200 baudda ilginç birşey oluyor, ilk gönderdiğim 3 data sağlıklı gidiyor ancak 4. dataya 240 değeri eklenerek geliyor, yani atıyorum x değişkenine x=30 diyorum, ancak data 240+30=270 şeklinde geliyor, farklı değerlerle denedim hepsinde de 240 eklenerek geliyor. CCS C kullanıyorum.

sisteme 12 Volt 7 Amperlik kameralar için kullanılan güç kaynaklarından bağladım, yani akım sorununu da gerilim sorununu da ortadan kaldırdım.

resmi de imageshackten yüklemeye çalıştım ama görünmüyor, nasıl yükleyebilirim başka

OG

#7
OSC seceneği nedir, dahili mi? Şu bilgileri topluca yazsanız?
İşlemci, hız, osc tip vs vs .....
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

My75

Alıntı yapılan: jackal183 - 11 Ocak 2012, 19:43:27
1200 baudda ilginç birşey oluyor, ilk gönderdiğim 3 data sağlıklı gidiyor ancak 4. dataya 240 değeri eklenerek geliyor

Senin sorunun belli aslında,bir takım gecikmeler vermen lazım..

txen=1
100ms bekle
data gönder
20ms bekle
txen=0

Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

jackal183

cihazlardaki işlemci pic16f877a, 16 mhz harici osilator

gecikmeleri de verdim, direk rs485 application noteda yazdığı gibi txen'dan sonra bir data boyutu kadar gecikme verilmesi gerektiği yazıyor, 9600 baudda bu yaklaşık 100 us eder, ben de 10 ms olarak yaptım.

OG Hocam bana kalsa ben burda yazılımı donanımı herşeyi paylaşırım ancak, iş ticari bir iş ve bu gibi şeyleri paylaşmak etik olmaz diye düşünüyorum. 

OG

@My75'in söylediğinden yola çıkarak,

Ben RS485 data uçlarını ters polarmalandırıyorum.


image hosting gif

Böylece hattaki herhangi bir ünite TX Enable edilmemişse (75176 pin 2 ve 3 High olmamışsa), hattı dinleyen ünitelerin RO çıkışı (pin 1) LOW çıkışı veriyor.

Hattaki data bekleyen üniteler belli periyodlarla hattın polaritesini kontrol ediyorlar. Low ise data gönderen yok deyip işine dönüyor. High ise dinlemede kalıyor.

Çünkü,
Gönderecek ünite TX Enb = H yaptığında RO çıkışı High'a döner. My75'in dediği gibi biraz bekleme koyuyorum ki bu H değerini yakalayamayan olmasın diye.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

jackal183

datayı ben putc() fonksiyonu ile teker teker gönderiyorum. bu bir sorun yaratır mı? printf("%c%c%c", data1, data2,data3) şeklinde göndermek mi yoksa putc(data1); putc(data2); putc(data3); şeklinde göndermek mi gerekli? hangisi daha sağlıklı.

My75

#12
Alıntı yapılan: jackal183 - 11 Ocak 2012, 20:44:16
cihazlardaki işlemci pic16f877a, 16 mhz harici osilator

gecikmeleri de verdim, direk rs485 application noteda yazdığı gibi txen'dan sonra bir data boyutu kadar gecikme verilmesi gerektiği yazıyor, 9600 baudda bu yaklaşık 100 us eder, ben de 10 ms olarak yaptım.

OG Hocam bana kalsa ben burda yazılımı donanımı herşeyi paylaşırım ancak, iş ticari bir iş ve bu gibi şeyleri paylaşmak etik olmaz diye düşünüyorum.

Yazdığın dili bilmiyorum ama kullandığın komut eğer her byte tek gönderip peşinden stop gönderiyorsa karmaşa olur..Tüm verileri tek seferde göndermen lazım..


10ms vermekle iş bitmiyor,data gönderdikten sonra yine gecikme verip low yapmak gerekiyor..

Evet çok tuhaf bir durum aslında ama böyle,sanki datalar daha yolda ilerliyormuş ve bu esnada txen low yapılınca datalar bozuluyormuş gibi bir durum söz konusu..

Ben 2400 baud 5 byte veri gönderiyorum bir ürünümde fakat şu gecikmeleri vermezsem sorun çıkıyor..

Txen=1          'Pin 2,3 tx modunda
delayms 100  'Tx modunun tam aktif olması için bekliyor
Data gönder 
delayms 20    'Verilerin yol boyunca tam olarak ulaşması için bekliyor
Txen=0          'Pin 2,3 rx modunda..

Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

My75

#13
Alıntı yapılan: OG - 11 Ocak 2012, 20:48:47
@My75'in söylediğinden yola çıkarak,

Ben RS485 data uçlarını ters polarmalandırıyorum.

Böylece hattaki herhangi bir ünite TX Enable edilmemişse (75176 pin 2 ve 3 High olmamışsa), hattı dinleyen ünitelerin RO çıkışı (pin 1) LOW çıkışı veriyor.

Hattaki data bekleyen üniteler belli periyodlarla hattın polaritesini kontrol ediyorlar. Low ise data gönderen yok deyip işine dönüyor. High ise dinlemede kalıyor.

Çünkü,
Gönderecek ünite TX Enb = H yaptığında RO çıkışı High'a döner. My75'in dediği gibi biraz bekleme koyuyorum ki bu H değerini yakalayamayan olmasın diye.


Bir terslik var sanırım,
Bu ters polarmanın Pin1' i low'a çekmesi demek Pic için start demektir..Yani data alınmaya başladığı zaman Pin1 low olur ve sonunda yine high olur..
Verileri tüm alıcılar alıyor,kendi ile ilgili bir durum ise cevap veriyor,şunu atlamamak lazım yazılımı iyi kontrol edin,abuk subuk değerler oluşuyorsa aynı anda 2 veya daha fazla alıcı cevap verebilir,bu çakışmadan dolayı veri bozulur ve her zaman veri alırken zaman aşımı kullanın..Yoksa gürültüden veya başka bir sebeble oluşacak bir bilgi alımı aktif yapar ve kaç byte alınacaksa tamamlanmasını bekler buda sistemi kilitler..

Bir diğer sorun ise özellikle usart kesmede yaşanılıyor,data gönderdikten sonra gecikme verilmeden txen low yapılırsa data ulaşmadan veya yansımadan dolayı pic kendi gönderdiği veri ile kesmeye gidebiliyor.. 

Bu tip tasarımların kullanılacak max. mesafe ile test edilmesi gerekiyor.
Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

Pyrodigy

#14
Yazılımsal hatanız olmadığına inanıyorsanız;
1- Master Modülden çıkan A/B sinyal pinleri ile Slavelere girenlerin kontrolünü tekrar yap.Eğer bir tanesinde hata varsa komple hattı bozar.
2- CAT6 yerine CAT5 denedinizmi?
3- Master modül için Pull up ve Pull downları 560 OHM , A/B arasına 130 Ohm deneyin.
4- Tüm dirençlerin 1/4 Watt olmasına dikkat edin
5- Bağlantıların temiz olmasına, özellikle 8P8C kullanıyorsanız iyi bir pense ile bağlantıları sıkıca penseleyin.
Akılıma gelen şimdilik bunlar.
Persistance is the name of the game in this business....