sn75176 RS485 Haberleşme mesafe sorunu

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

jackal183

#30
hocam her zaman aynı elemanlar sabıkalı değil. reset atıyorum bir üre sonra 5. eleman gitti diyelim, tekrar reset attığımda bu sefer 5. eleman güzel, başka niri gidiyor. sadece sabıkalı elemanı resetlediğimde yine düzeliyor. bu yüzden ben sorunun yazılımdan olduğunu düşünüyorum.

başka bir adresin kazara araya girme ihtimali yok hocam. çünkü her bir elemanın sorgusu 500 ms de bir gidiyor. hem araya başka bir eleman girdi diyelim. ben hattın tamamında giden gelen verileri inceledim, sabıkalı elemandan hiç veri gelmiyor, geldiği zaman da hatalı veri geliyor.

yazılımda checksum ya da crc checksum gibi şeyler yapmayı düşünüyorum ama bunları bilmiyorum braz araştırdım da crc_checksum karışık gibi geldi bana, içinizde iyi bilen birisi bir örnekle anlatabilir mi?


My75

Bak hatalı veri geliyor diyorsun,daha öncede dedim arasıra abuk subuk değerler görürsen muhakkak bir çakışma var bunun başka bir sebebi yok,iyi bir protokol uygula mesela basitçe proton örnek vereyim;


SYMBOL  MASTER=1  'Sorgulama yapanın kimliği
SYMBOL  SLAVE=2    'Bu modül için bir cihaz kimliği
ADRES=8

BASLA:
Hserin 100,kontrol,[ARANAN,ARAYAN,ADRES,KOMUT]

IF ARAYAN<>MASTER THEN BASLA    'Arayan master değilse başa dön, 1.filtre
IF ARANAN=SLAVE AND ADRES=8 THEN ARANAN_BENIM   'Aranan bu modül işlem yap
GOTO BASLA

kontrol:
Bu bölümde 100ms dilimlerde işlem yapabilirsin..
goto basla

ARANAN_BENIM:
IF KOMUT=1 THEN
ARAYAN=SLAVE
ARANAN=MASTER
KOMUT=5
GOSUB GONDER
ENDIF
GOTO BASLA

GONDER:
TXEN=1:DELAYMS 100
HSEROUT [ARANAN,ARAYAN,ADRES,KOMUT]
DELAYMS 20
TXEN=0
RETURN
END

Ben bu protokole benzer ama daha detaylı 5byte bir protokol oluşturdum,şu an sahada çalışan görüntülü interkom sistemi olarak binlerce modülüm var,bir çok zorluk ve hata yaşadım ama 2 senede yazılımsal olarak şuan tam oturdu..

Sen 16 modül diyorsun şuan 2 blok apartmanda SN75176 ile 150 modül çalışıyor,ne sonlandırma var nede sorun..

Yani biraz uğraştırır ama sonunda  olur..
Tomurcuk için çaba göstermeyen dal,odun kalmaya mahkumdur...

jackal183

anladım hocam teşekkür ediyorum.

Bugün birinin tavsiyesi üzerine hatta bazı donanımsal değişiklikler yaptım. her bir slavedeki sn75176ının 2k2 lik dirençlerini söktüm, master için bu dirençleri 560 ohm olarak taktım, başlangıca ve en sona da 120 ohm taktım. daha önceden sadece 5-10 dakika sorunsuz çalışan sistem, bu sefer 1 saat kadar sorunsuz çalıştı, ancak yine cevap vermeyen cihazlar olmaya başladı. Bu gelişmelerden sonra ben sorunun yazılımda olma ihtimalini yine eledim. Yani sorun yazılımdaysa madem, benim yaptığım donanımsal bir değişiklik üzerine niye daha uzun süre çalıştı? ve yine sorun donanımdaysa madem, niye 1 saat sonra yine cihazlar cevap vermemeye başladı? resmen bir komplonun içerisine düşmüş gibiyim :) ağlanacak halime gülüyorum

yazılımsal olarak da crc_checksum protokolünü uygulayıp bir de bunu deneyeceğim

OG

Önce moralinizi düzeltin, çözemeyeceğiniz bir problem değil.

Slave den 2K2 yi söküp master da 560R bırakmanız doğru değil. Sökecekseniz hepsini sökün. Hat yansımaları oluşurken, master veya slave diye ayırtetmez. Doğru olan hattın uçlarının açık kalmamasıdır.

Hatta 2 uç var ama, master veya slave uniteler hatta bağlanırken ilave edilen kablo varsa ve bu ek kablo belli bir uzunluğa sahipse (?) bu da hattın üçüncü (dördüncü, beşinci ..) ucu sayılır ve bunlar da açık bırakılmamalıdır, yansımalara sebep olur. Bu bağlantı kablosu çok kısa ise yansıma yapmaz.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

jackal183

bunu sadece bir tavsiye üzerine yaptım hocam, bence de yapılmaması gereken birşey, ama bakınca da sitemin çalışması daha uzun sürdü bir anlamda faydası oldu, ama diğer yandan bakınca da sistem yine gitti ve faydası olmadı gibi  :o

ferdem

İlginç bir problem ama karmaşık değil, adım adım gidilirse çözülebilir. Hattaki üniteleri modifiye etmeniz mümkün mü bilemiyorum ama sistem oturana kadar şu göstergeleri koyabilirsiniz: Her bir ünite çalıştığı esnada 1sn de bir ledi toggle etsin, bu çalışma göstergesi olsun, sistem çalışırken bu ledi gözleyin sekme oluyor mu bakın. Bu led her RX te ve her adres uyuşumu görüldüğünde de tepki versin. RX te 1010 adres uyuştuğunda 111000111000 yapsın mesela... süreleri kendiniz ayarlarsınız. Mümkünse RX ve adres uyuşumu için 2. bir led kullanın.
1 saat sonra X ünitesinden cevap yok. Gidin ünite başına ledi toggle etmeye devam ediyor mu?  Sonra X ünitesine sorgu gönderin. RX oldu mu?  Adres uyuşma oldu mu?
Olası durumlar:
1) Ünite hiç çalışmıyor, besleme gerilimi düzgün geliyor mu kontrol edilir.
2) Ünite komut gönderdiğinizde RX yapıyordur ama adres uyuşma ledini yakmayabilir... adresi nerede EEPROM da mı tutuyorsunuz?
Çalışmayan X ünitesini hattan çıkarıp direkt bilgisayara bağlayın komutu doğru alabildi mi? Adresini hâlâ doğru biliyor mu?
...
RX de oldu, adres uyuşma da oldu ama geri dönüş yok. Bilgisayarın UART RX ini çalışmayan ünitedeki mikronun TX ine bağlayın UART TX te cevabı görebildiniz mi?

Söylemesi kolay :) Sistem şu an yanımda olsa hemen bu denemelere girişirdim onu da söyleyeyim :) İyi çalışmalar.

jackal183

hocam bu denemeleri yapmak çalışma ortamında 2 günümü alır :) benim taa en baştan beri aklımda olan şeyler bunlar, her rx geldiğinde ledi 1 saniye yakıp söndürmek ver her doğru veri geldiğinde başka 1 ledi 1 sn yakıp söndürmek ama bunlar çalışma ortamında pek mümkün değil, ama şu dediğinize özellikle hiç bakmadım, "1) Ünite hiç çalışmıyor, besleme gerilimi düzgün geliyor mu kontrol edilir." ben buna hep hattın en sonunda baktım,

"Çalışmayan X ünitesini hattan çıkarıp direkt bilgisayara bağlayın komutu doğru alabildi mi? Adresini hâlâ doğru biliyor mu?"
evet bunu denedim doğru biliyor. çalışıyor

"2) Ünite komut gönderdiğinizde RX yapıyordur ama adres uyuşma ledini yakmayabilir... adresi nerede EEPROM da mı tutuyorsunuz?"
adresi epromda tutmuyorm sadece tek bir değişkene yazıp cihaza gömüyorum.

mümkün olsa da çalışmayan cihazlarda debug yapabilsem belki de sorunu hemen çözeceğim ama bu da mümkün değil

azka

Jackal183 Problemin hala çözülemedi mi?

jackal183

çözüldü gibi hocam ama iş bitirmeden kesin çözüm oldu diye buraya yazmak istemiyorum, her türlü sıkıntıları ve sıkıntıları nasıl aştığımı tek tek yazacağım buraya diğer arkadaşlar aynı sıkıntıları yaşamasın diye

jackal183

arkadaşlar sıkıntılarımı çözdüm ve sistemi tamamladım şu an aktif halde kesintisiz çalışıyor. çözümünü şu şekilde yaptım.

1. ilk olarak sizin de dediğiniz gibi yazılımdaki veri alışverişini daha kontrollü yaptım. crc_checksum protokolü ile kontrol yaptım.
2. buna rağmen yine de kopmalar oluyordu, hattaki cihazlar kitlenniiyordu. bu da cihazların yazılımından dolayı oluyormuş, bazı yerlerde taşmalar ve kitlenmeler meydana geliyormuş, bunu da hallettim.
3. buna rağmen yine de sorun devam ediyordu. bu sefer 1200 baudda çalışmaya karar verdim. ancak 16f877a'yı 1200 baudda 20 dakikadan fazla çalıştıramadım. ben de 18f452 ile sistemi yeniden tasarladım. ve bütün sorunlarım çözüldü. yardım eden hocalarıma teşekkürü borç bilirim

dnacikaya

@jackal183 Sorunu hallettiğinize sevindim. 877 yerine 452 kullanmışsınız. Peki neden 877 ile böyle bir sorun oldu acaba. birde hat dirençleri olarak 2.2k ve 120 ohmmu kullandınız acaba.

EFESU

formumuzun en büyük özellikleirnden biri birileri yazar sorar söyler sorun  çözülür çözüm yoktur bağlantı kopar...

Veli B.

Alıntı yapılan: EFESU - 26 Ocak 2012, 01:47:30
formumuzun en büyük özellikleirnden biri birileri yazar sorar söyler sorun  çözülür çözüm yoktur bağlantı kopar...

Eski Nickiniz ne idi?
Forumun eski müdavimlerinden misiniz?
Otorite kıvamında bir cevap yazmışsınız...

jackal183

Alıntı yapılan: dnacikaya - 25 Ocak 2012, 21:52:54
@jackal183 Sorunu hallettiğinize sevindim. 877 yerine 452 kullanmışsınız. Peki neden 877 ile böyle bir sorun oldu acaba. birde hat dirençleri olarak 2.2k ve 120 ohmmu kullandınız acaba.

877 nin sebebini çözemedim ama tahminimce CCS C derleyicisi ile ilgili birşey. donanımsal olarak da 2.2k var sadece 120 ohmlar yok

jackal183

Alıntı yapılan: EFESU - 26 Ocak 2012, 01:47:30
formumuzun en büyük özellikleirnden biri birileri yazar sorar söyler sorun  çözülür çözüm yoktur bağlantı kopar...

ne demek istediğinizi ve neden bu başlık altında böyle birşey yazdığınızı anlayamadım?