Aiuto mobbus su cavo lungo non va :(

Ciao a tutti,
sto continuando con la messa in funzione del mio sistema domotico che comunica su bus rs485 con protocollo modbus.

Tutto funziona correttamente usando fili corti da 50cm/1mt. Appena però con la stessa tipologia di filo provo a collegare i due capi della matassa da 100mt non viene scambiato niente. Premesso che ho ho messo le resistenze di terminazione da 120 ohm (in realtà non avendole ho messo in serie una da 100ohm e una da 22ohm).

Sul bus ho collegato 3 slave + il master; il master non è in grado di comunicare con nessuno degli slave. Configurato a 9600 baud (quindi lento) 8-N-1

Uno dei dispositivi vedo che lampeggia il TX quando riceve i pacchetti sul bus (anche se poi la richiesta va in errore); il dispositivo però “capisce” che gli stanno inviando qualcosa.

La schermatura in alluminio l’ho collegata solo al GND del master e poi dovunque facevo l’entra esci dai dispositivi mantengo collegati le schermature. Come suggerito sul forum non ho collegato la schermatura a tutti i GND dei dispositivi per non fare cicli/loop di GND

col tester il cablaggio risulta corretto.

Avete suggerimenti su cosa indagare?

Volevo aggiungere due cose, la prima suggerita dall'elettricista. Può essere che il problema sia dovuto al fatto che la prova la sto facendo con una matassa da 100mt arrotolata? L'elettricista mi ha detto di provare a srotolarla. Premetto che il cavo è un cavo schermato ad hoc per rs485, anzi di sezione anche maggiore a quella minima richiesta.

Le resistenze di terminazione è giusto che siano 120ohm? Non 120k ohm, giusto?

Grazie per eventuali suggerimenti.

Ma cosa usi una 485? Io le resistenze le metto da 1000 ohm da tutti e due i lati del cavo Che tipo di cavi usi ?

Cosa intendi per "usi una 485" ?

Uso rs485 con trasmettitore su usb su una scheda raspberry. I ricevitori sono tutti device industriali.

I cavi che uso sono questi http://www.elan.an.it/images/schedetecniche/05%20SCHEDA%20TECNICA%20CAVI%20TWISTATI%202014.pdf nella versione 2x0.50

Come mai usi resistenze da 1k? Da tutti i manuali online vedo che si suggeriscono resistenze di terminazione d 120 ohm pari all'impedenza del cavo, che nel mio caso il produttore mi ha indicato essere circa 120 ohm.

Il fatto che tenga il cavo attorcigliato puo impattare? Riterrei di no essendo twistato e schermato

Grazie.

Io al lavoro uso cavi ftp,doppino telefonico , aggiuntati anche con cavi 3x2 una Cambogia , ma mi funziona tutto. La Resistenza la metto sempre da 1000 E sono in un ambiente con un mare di disturbi ... treni e inverter Noni usiamo apparati industriali ABB e con il modbus ci controlliamo gli inverter E non abbiamo mai problemi Il convertitore usb se non è serio può dare problemi , io ne ho due alimentati a parte , la sola usb non c'è la fa a farli funzionare

Quindi dici che il problema può essere da ascriversi al convertitore usb? Magari è poco potente e non riesce a compensare la caduta di tensione sul cavo lungo? Eppure sto usando un buon adattatore Digitus DA-70157 che non è il solito cinese da 1 euro.

Dici cmq prima di provare cambiando resistenza? Per capire: usi 1000 ohm perchè in azienda avete fatto sempre cosi o perchè? Vedo che ovunque si parla di 120 ohm. Per capire.

C'è qualche prova che posso fare con un tester per capire dove sta il problema? Immagino di bo e che servirebbe un oscilloscopio, ma chiedo.

Ti servirebbe un oscilloscopio per vedere cosa succede al segnale , e un modbus sniffer per controllare se si perdono i pacchetti ,o cosa succede , ma il tuo modbus non hai il controllo errori , già quello tra ti da indicazioni , se fa troppi crc èquestione di segnale corrotto . Perlaresistenza dico 1000 perche questo impianto sono piu di 10 anni che èstato consegnato e funziona cosi le resistenze da 1000 ,non le abbiamo messe noi . Il tuo digitus ce l'ho anche io , ma non va se allunghi troppo il segnale , io uso i moxa rs232 485 che collego a un usb232 Ps a che velocità viaggi ?

Vado a 9600 baud, bassissima. Ho controllato il cavo e ha una resistenza di soli 40 ohm a chilometro. Secondo le linee guida qui http://e2e.ti.com/cfs-file/__key/telligent-evolution-components-attachments/00-142-00-00-00-33-63-91/TSB_2D00_89_2D00_A.pdf potrebbe essere lungo quasi 10 km prima di far andare la resistenza totale oltre il limite di 390ohm che farebbe perdere il differenziale tra A e B

Ho scritto io parte delle librerie e c'è un 100% di errori nei pacchetti, faccio anche 10 retry. Ho anche degli altri adattatori usb di altre marche, poi provo anche con quelli, ma questo mi sembrava il piu professionale.

ecco cosa ricevo abilitando il debug (ho aumentato il timeout di risposta da 0.20sec a 1.20sec):

Retry.... DEBUG [query sent in 1.2001249790192 sec.]: \x64\x06\x0b\xb8\x00\x5a\x82\x05 DEBUG [response received]: \xc0\x64\x06\x0b\xb8\x00\x5a\x82\x05 DEBUG [crc check failed]: (expected \x59\x12 received \x82\x05)

Retry.... DEBUG [query sent in 1.2001459598541 sec.]: \x64\x06\x0b\xb8\x00\x5a\x82\x05 DEBUG [response received]: \xc0\x64\x06\x0b\xb8\x00\x5a\x82\x05 DEBUG [crc check failed]: (expected \x59\x12 received \x82\x05)

Retry.... DEBUG [query sent in 1.2001821994781 sec.]: \x64\x06\x0b\xb8\x00\x5a\x82\x05 DEBUG [response received]: \xe0\x64\x06\x0b\xb8\x00\x5a\x82\x05 DEBUG [crc check failed]: (expected \x78\xd0 received \x82\x05)

Retry.... DEBUG [query sent in 1.200178861618 sec.]: \x64\x06\x0b\xb8\x00\x5a\x82\x05 DEBUG [response received]: \xc0\x64\x06\x0b\xb8\x00\x5a\x82\x05 DEBUG [crc check failed]: (expected \x59\x12 received \x82\x05)

Retry.... Error DEBUG [query sent in 1.2001891136169 sec.]: \x64\x03\x0b\xb8\x00\x01\x0f\xfe DEBUG [response received]: \x00\x64\x03\x02\x00\x5a\x74\x77 DEBUG [crc check failed]: (expected \x50\x6c received \x74\x77)

Retry.... DEBUG [query sent in 1.2001779079437 sec.]: \x64\x03\x0b\xb8\x00\x01\x0f\xfe DEBUG [response received]: \xf0\x64\x03\x02\x00\x5a\x74\x77 DEBUG [crc check failed]: (expected \x44\x9c received \x74\x77)

Crc failed ti perdi i pezzi di pacchetti Poi un altra domanda ..è tutto un sistema basato su arduino ? Adesso quanto cavi usi ? Non avrai il cavo intero tutto nella matassa arrootolato ? Ti do una brutta notizia ... gli adattatori seri costano un botto

La RS85 deve essere terminata con una coppia di resistenze da 120 ohm, qualunque altro valore porta a dei problemi, qui una A.N. di Maxim che spiega bene la cosa con tanto di rilievi strumentali. Usare valori diversi da 120 ohm, peggio ancora usare due resistenze di diverso valore, porta sempre e comunque a perdita di pacchetti dati. Non ha alcuna importanza se il cavo è arrotolato o disteso, chi afferma che fa la differenza dice una emerita cretinata, ovviamente stiamo parlando di cavo idoneo per le lunghe distanze con la RS485, ovvero cavo twistato. Attenzione a non collegare il GND tra i vari apparati se sono alimentati da sorgenti diverse, il GND va collegato solo all'eventuale schermo del cavo e solo da un lato. Non è vero che gli adattatori USB non funzionano bene, ovviamente parliamo di quelli fatti come si deve, il mio l'ho realizzato usando un ftdi e un max485, dotato di tutte le necessarie protezioni con la possibilità di attivare terminatore e bias, comunica senza problemi su cavi di 1 km, lo uso spesso visto che la RS485 è uno dei bus di comunicazione che utilizzo di più a livello professionale. Il controllo errori, etc, è prevalentemente una questione software, a livello hardware si può solo controllare la qualità del segnale con un DSO.

Ciao, allora: non uso resistenze di diverso valore: uso una da 100 e una da 20 in serie a ogni capo. Misurato col tester e da 120 ohm. Come da vs indicazioni il GND è collegato solo ad un capo allo schermo; come indicato da astrobreed.

Nel mio sistema non uso alcun arduino, sono tutti apparati di qualità (es eastron sdm120 o degli apparati industriali 0-10V); è solo il master ad essere un raspberry con adattatore usb.

L'unica cosa è che per i fili corti ho usato dei normali cavi da allarme; dite che il problema può essere aver mischiato 2 pezzi da 50cm di cavo corto e poi i 100mt di matassa di cavo professionale?

Non ho un oscilloscopio e non so dove procurarmelo; tutti i suggerimenti sono ben accetti. Grazie :)

Senza un DSO la vedo molto difficile venire a capo del tuo problema, i materiali che usi vanno bene, le resistenze idem, pertanto senza vedere cosa succede al segnale è quasi impossibile capire cosa succede. Cosa intendi per fili corti ? Hai provato a collegare il doppino direttamente all'adattatore USB da un lato e all'altro lato direttamente un dispositivo senza mettere nulla in mezzo ? Potrebbe essere un problema di capacità eccessiva lungo il bus.

per fili corti intendo dire che al momento ho 4 apparecchi collegati sul bus in questo modo:

dal master al primo apparato circa 30/40 cm di cavo d'allarme. Dal primo apparato al secondo circa 50cm di cavo d'allarme. Dal secondo al terzo apparato 100mt di cavo modbus serio. So che è sconsigliato mischiare cavi perchè si accentuano i fenomeni di reflection, però ho anche letto che a basse velocità (9600 baud nel mio caso) non dovrebbero esserci grossi problemi.

Comunque lunedi in ufficio provo a collegare direttamente il master con il cavo da 100mt ad un'apparato e vedere che succede. Provo sia con le resistenze di terminazione che senza. E provo con anche un altro convertitore usb (ne ho di 3 marche, incluso il famoso ed economico sodial). In realtà ho anche chip max485, ma li devo smanettare di più per montarlo e farlo andare; aumento solo le incognite nel sistema.

Non vorrei sbagliarmi ma forse la prima volta che ho collegato il cavo da 100mt senza le resistenze di terminazione qualche risposta corretta mi è arrivata; visto che era un po random ho messo le resistenze, ma non andava più nulla

Vi tengo aggiornati. Grazie

Ciao, sto venendone a capo.

Collegando l'apparato alla matassa di 100mt senza resistenze di terminazione funziona; se metto le resistenze da 120ohm non funziona più nulla. Avete idee?

Per ora ho visto che però aggiungere un secondo apparato sul bus quest'ultimo col filo lungo non va; con quello corto si :/

sono solo prove ma…
ma non è che ce una terminazione sugli apparati che hai
magari sono terminati con switch o via software ?
ma hai terminato solo inizio e fine catena ?

ho terminato solo inizio e fine catena. ho messo la resistenza tra i poli A e B del primo e ultimo apparato; va bene, no?

Gli apparati non hanno terminazione, avevo già verificato. :(

E' solo un apparato che non mi sta andando sui cavi lunghi. ho provato anche con resistenza da 1k ohm, ma nisba. Sto provando a sentire il produttore che mi sta facendo fare delle prove, per ora senza successo.

Ma dove posso raccattarlo un oscilloscopio? non vale la pena comprarne uno per una sola volta :/

Ciao, trovato e risolte le fonti dei problemi, che erano 2:

1) l'apparato che stava usando aveva due resistenze smd da 4.7k in serie agli ingressi A e B; le ho dissaldate dal circuito e ponticellate

2) l'adattatore Digitus ha una resistenza interna tra A e B da 12K; chiaramente non indicata da nessuna parte, cosa che mi ha detto solo il produttore dopo la mia richiesta di assistenza.

Interessante però da scoprire perchè gli altri apparati andavano tutti su cavo lungo anche col digitus, tranne questo.