Vai al contenuto
PLC Forum


RS485 semplice terminazione automatica, conoscete un interruttore?


Gilgamesh-151

Messaggi consigliati

Gilgamesh-151

Buongiorno a tutti,
Non riesco a trovare dai fornitori di materiale elettronico (RS, Digikey, Mouser,

ecc) una presa con un interruttore di inserzione, e ci sto diventando matto.
Ma andiamo in ordine, per focalizzare bene il problema:
Sto ideando e costruendo un sistema modulare, e se va bene non escludo di

passare alla produzione su piccola scala. i vari moduli comunicano tra di loro

tramite RS 485, protocollo modbus, su piccole distanze (max 100mt). Ogni

modulo ha un paio di microcontrollori dedicati a questo scopo (propeller, no

arduino), e, anche se ancora materialmente non ho costruito e provato questa

parte non credo ci siano problemi.
Il problema è che per una corretta trasmissione la linea rs485 necessita di una

resistenza di terminazione, e se il progetto passa alla fase di produzione ogni

utente può collegare qualsiasi modulo in qualsiasi punto. Per questo lascerei in

ogni modulo un ingresso e un'uscita rs485, in modo che l'utente può collegare i

moduli solo in cascata uno dietro all'altro. Ma l'ultimo modulo che l'utente

collega deve avere la resistenza di terminazione, per cui avrei pensato che la

presa di uscita di ogni modulo avesse un interruttore NC che inserisse la

resistenza qualora non vi sia il connettore di uscita inserito. Semplice e efficace

(?), ma per far questo mi serve una presa, di qualunque tipo purchè economica,

che possa andare bene per una linea RS485 full duplex e che abbia questo fatidico

interruttore (come per i jack e le vecchie prese Din). Mi andrebbe bene anche un

tipo di presa non standard o canonica per la rs485... qualcuno conosce

qualcosa?
Grazie in anticipo..

Link al commento
Condividi su altri siti


Quote

andare bene per una linea RS485 full duplex

 

Il protocollo elettrico RS485 non è full duplex ma half duplex; se vuoi avere un full duplex devi usare il protocollo elettrico RS422 che ha 4 fili e non 2.

In entrambi i casi le linee vanno terminate sulle stazioni terminali, quindi per la RS422 i resistori sono 4 e non 2.

Purtroppo sino ad oggi nessuno ha pensato di fare connettori del tipo che ti servirebboro, anche per reali problemi meccanici che porterebbero i costi di simili connettori a livelli esagerati.

Credo che tu debba rassegnarti alla soluzione usuale: jumpers o dip switches

Link al commento
Condividi su altri siti

Gilgamesh-151

Grazie per la risposta.

Mi dispiace che non esistano prese con interruttore, magari qualcun altro ne ha sentito parlare?

 

Non volevo innescare la solita discussione tra rs485 e rs422, scrivendo full duplex pensavo solo ai 4 fili, e non alla differenza dei protocolli. Concordo comunque che non dovevo scrivere full duplex.

Ho detto che userò modbus: modbus a quanto ne so io è un protocollo esclusivamente half duplex.

Ho detto che avrei usato RS 485: e questo è un protocollo elettrico esclusivamente half duplex.

Quindi sarà tutto half duplex.  Un solo master e diversi slaves, senza necessità di velocità.

 

Pensavo di usare 4 fili al posto di 2, come in esempio nell’immagine:

 

Interfaccia_RS485.JPG.93dc8d867ba4adc4a34552e8674f337e.JPG

ho visto che questa configurazione viene adottata da molti, e ci sono integrati che a questo scopo supportano la divisione tra trasmettitore e ricevitore.

Nulla volendo togliere alla bontà e funzionalità della connessione “canonica” RS485 con 2 fili, vorrei fare un paio di considerazioni MIE PERSONALI che al momento mi portano a cablare 4 fili al posto di 2:   

 

2 fili: tutti sentono tutto il traffico: gli slaves ricevono non solo comandi dal master ma anche possono sentire ogni risposta da tutti gli altri slaves, e tutti possono anche sentirsi parlare.

4 fili: resta una rs485 con le sue caratteristiche elettriche, ma separata nelle linee trasmissione e ricezione: su una linea trasmette solo il master, e gli slaves ascoltano e basta. Sull’altra il master ascolta solo quello che trasmettono gli slaves.

 

2 fili: Si può generare confusione se i dispositivi collegati, per errore, trasmettono più di uno alla volta (magari per un disturbo esterno uno slave interpreta erroneamente la risposta di un altro slave come comando da parte del master a rispondere). Chiaramente esiste il CRC per verificare, e si spera che il master sia in grado di ripristinare la corretta comunicazione (personalmente non so come, dovrei pensarci).

4 fili: se i dispositivi collegati, per errore, trasmettono come sopra più di uno alla volta o generano confusione, il master può mandare a tutti sul suo canale inequivocabile e in modo chiaro il comando “fermi tutti! Si ricomincia”.

 

In aggiunta la configurazione a 4 fili, a quanto letto, dovrebbe ridurre gli echi sulla linea, e offrirmi la possibilità di un miglior monitoraggio e dubugging.  

Insomma, mi limito a cablare 2 fili in più, senza toccare altro. Controindicazioni? Consigli?

Saluti..

 

 

Per Livio:  Wikipedia riporta: "EIA RS-485, come l'EIA RS-422 può essere resa full-duplex utilizzando quattro fili (due doppini)".

Se vuoi provare a cambiare quella pagina il link è https://it.wikipedia.org/wiki/EIA_RS-485

 

Link al commento
Condividi su altri siti

Premesso che wikipedia non è infallibile, il protocollo elettrico differenziale full duplex a 4 fili è codificato come RS422, questo secondo gli standard riconosciuti.

Poi uno è libero di chiamarlo RS485 a 4 fili.

Il protocollo elettrico RS485, avendo ununico doppino per trasmissione e ricezione, necessita di un segnale che abiliti alla trasmissione. Se si usano 2 doppini distinti per trasmissione e ricezione non è più necessaria la scelta tra trasmissione e ricezione, ma è necessario un protocollo Sw che stabilisce chi ha diritto di trasmettere.

 

La terminazione differenziale non è il massimo meglio, molto meglio, la terminazione in modo comune con 2 resistori.

 

C'è una bellissima AN della TI, che ho archiviato sia in forma cartacea che in forma elettronica ma che ora non riesco a reperire, che tratta l'argomento in modo approfondito.

Link al commento
Condividi su altri siti

Gilgamesh-151

 

Quote

La terminazione differenziale non è il massimo meglio, molto meglio, la terminazione in modo comune con 2 resistori.

 

Si, avevo visto molti tipi di terminazioni, sia a 1 semplice resistore, sia a 2, sia a 2 in serie con condensatore centrale verso massa, a 3 resistori... ogni metodo con i suoi pro e contro. Avevo iniziato a documentarmi sul metodo migliore per il mio caso, e ho scoperto inaspettatamente che la terminazione (come la schermatura) non è da sottovalutare e che spesso può decidere sul buono o cattivo funzionamento delle trasmissioni.

inserisco qualche link a documenti che ho trovato interessanti, che trattano di terminazioni, schermature, metodologie di connessioni elettriche.  Magari potrebbero esere utili a qualcuno, se non altro come partenza per poi approfondire..  magari la tua AN è una di queste...

 

The RS-485 Design Guide  - AN (application note) della TI (Texas Instruments) - pdf - abbastanza pratico, approfondisce le terminazioni

RS-422 and RS-485 Standards Overview and System Configurations  - AN TI - pdf - un pò più teorico ma approfondisce le terminazioni

 

 AN-1057 Ten Ways to Bulletproof RS-485 Interfaces   - AN TI - pdf - letteralmente: 10 modi per blindare l'interfaccia RS485

 

 

 

How to Properly Configure and Wire RS-422 and RS-485 Networks   - articolo web interessante, consigli su schermatura

Basics of RS-422 and RS-485 Communications   - panoramica su differenze pratiche tra RS485 e RS422

 

Saluti!

 

dimenticavo la più interessante:  AN-903 A Comparison of Differential TerminationTechniques

 


 

 

 

 

 

 

 

 

Link al commento
Condividi su altri siti

Se può essere utile, visto che stai anche progettando l'hardware, noi abbiamo implementato l'inserimento della resistenza di terminazione come comando modbus. Tramite un registro coil, possiamo attivare o disattivare un pin del micro che inserisce o disinserisce la resistenza di terminazione.

Link al commento
Condividi su altri siti

Gilgamesh-151

 

Quote

noi abbiamo implementato l'inserimento della resistenza di terminazione come comando modbus

 

Metodo interessante, non per il mio caso ma, a mia idea, per permettere al master di variare la resistenza di terminazione, o il filtro rc di terminazione, o le resistenze di precaricamento (BIAS), quando lo stesso master riscontra problemi sulla linea. Utile per un cablaggio a stella, per il mio caso (in serie) come dicevo non va bene, in quanto se l’ultimo slave della linea si spenge o si guasta o rimane senza alimentazione, la linea resta senza terminazione.

Avevo trovato uno spunto - schema di interfaccia rs485 con terminazione automatica, che riporto a mò di cronaca:

5943b1d1e237b_terminazioneautomatica.jpg.24329d8ecf50f5384121920414438a73.jpg

 

Usando cavi con una coppia in cortocircuito, il circuito riconosce sia la presenza di cavo in ingresso inserito ( e lo comunica al processore),  sia di cavo di uscita inserito (in questo caso attiva un interruttore analogico per inserire la resistenza di terminazione).    Stesso discorso: se il circuito non è alimentato niente resistenza di terminazione, e la linea diventa un bel dipolo per ascoltare radio EMI international, con le sue tante emittenti cinesi).

In verità avevo pensato ad un circuito simile, con la differenza che lo slave successivo (contando dal master) inviava su un doppino dedicato del cavo una tensione che arrivando allo slave precedente disattivava la sua resistenza di terminazione.  L’ultimo slave, non avendo a valle altri slaves che gli mandassero questa tensione, avrebbe lasciato inserita la sua resistenza.  Ma anche qui c’è il problema della mancanza di  alimentazione o di guasto di uno slave: in questo caso è vero che il precedente inserisce automaticamente la sua resistenza di terminazione, ma tutta la linea da quello slave precedente in poi resta senza terminazione… bell’antennona!

Non esistendo, a mia conoscenza, interruttori digitali che siano NC anche senza tensione di alimentazione, la faccenda poteva essere risolta con i “vecchi” relais elettromeccanici con contatti NC. Avrebbe funzionato, fino a quando funzionavano i relais. Ma sperare nella loro eternità e lasciarli eccitati per “sempre” mi sembra una soluzione davvero poco elegante.

 

Per questo ho pensato alla presa con interruttore, semplice e sicura: se è inserito un cavo in uscita disattiva meccanicamente (perciò alimentazione o no) la resistenza del modulo. Bastava non lasciare cavi scollegati, certo.

La brutta notizia che nessuno ha visto queste prese mi fa decidere per la soluzione un po’ meno a prova di stupido, ma eficace:  

  1. il master con una sola presa femmina di uscita.
  2. Ogni slave con una presa di ingresso maschio e di uscita femmina.
  3. Tutti i cavi con terminazione maschio-femmina.
  4. Un terminale di linea composta da una spina femmina con all’interno cablata la resistenza di terminazione, filtri e/o BIAS.
  5. E la raccomandazione perentoria di non lasciare mai nessuna presa vuota.

Dovrebbe funzionare, e magari permettere anche di avere vari tipi di spine terminali con all’interno tipi o valori diversi di terminazione di linea, da provare empiricamente.

Grazie a tutti,

Guglielmo

 

 

 

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...