BUS CAN o RS485?

Salve, chiedo a chi ne s=E0 pi=F9 di m=E8 quale dei due bus sarebbe meglio usare per un collegamento punto-multipunto, con distanza massima tra trasmettitore e ricevitore di circa 400m ed un baud rate di 125Kb/s. La necessit=E0 =E8 di avere una sola stazione trasmittente (master) e le altre solo riceventi. Il numero massimo di stazioni riceventi pu=F2 arrivare a 20.

Qualcuno ha lavorato con questi bus =E8 s=E0 indirizzarmi meglio su quale approfondire.

Reply to
Klaus
Loading thread data ...

Klaus ha scritto:

Il CAN è un protocollo basato (anche) sullo standard RS485. Dipende cosa ci devi fare, ma se come sembra la trasmissione è unidirezionale non credo ti serva un protocollo complesso come il CAN.

Puoi semplicemente crearti il tuo pacchetto specificato l'indirizzo di destinazione (ammesso che non ti servano solo trasmissioni broadcast) i dati veri e propri e un controllo di errore.

Per il resto verifica solo di collegare correttamente le terminazioni e il tipo di cavo che utilizzi.

Marco

Reply to
Marco Trapanese

Il giorno Thu, 16 Jul 2009 08:23:35 -0700 (PDT), Klaus ha scritto:

Ambedue le soluzioni possono essere adatte allo scopo che vuoi raggiongere, a mio parere la cosa che fa la differenza è l'hardware.

Il protocollo master/slave con una RS485 è abbastanza semplice da implementare, e ti basta un µC con una UART e un MAX485 per realizzarlo.

Il CAN invece richiede un controller dedicato oltre al driver e, anche se è un protocollo più robusto, lo consiglierei più per applicazioni multimaster.

La velocità di 125Kb a 400m inoltre sono una cosa che la RS485 gestisce abbastanza bene, anche se dovrai mettere resistenze di terminazione, non ho invece esperienza del CAN a quelle distanze.

-- ciao Stefano

Reply to
SB

Secondo la mia esperienza col CAN a 125 kb/s 400m NON li fai. Il limite teorico dovuto alla velocita' di propagazione del segnale (per la gestione di priorita' e acknowledge) e' 500m (vedi es.

formatting link
ma e' difficile da realizzare anche in punto-punto, a meno che il doppino non sia di qualita' estremamente buona.

In RS-485 la velocita' standard piu' vicina e' 115.2 kbaud. In questo caso non vedo grossi problemi a coprire i 400m, a patto di usare un doppino a basse perdite (resistive e dielettriche). Potrebbe essere critico dover gestire 20 stazioni: attenzione alla qualita' dei cablaggi, es. evitare stub.

Ciao,

--
RoV - IW3IPD
http://digilander.libero.it/rvise/
Reply to
RoV

"Klaus" ha scritto nel messaggio news: snipped-for-privacy@c2g2000yqi.googlegroups.com... Salve, chiedo a chi ne sà più di mè quale dei due bus sarebbe meglio usare per un collegamento punto-multipunto, con distanza massima tra trasmettitore e ricevitore di circa 400m ed un baud rate di 125Kb/s. La necessità è di avere una sola stazione trasmittente (master) e le altre solo riceventi. Il numero massimo di stazioni riceventi può arrivare a 20.

Qualcuno ha lavorato con questi bus è sà indirizzarmi meglio su quale approfondire.

RS 485, cavo buono, specifico per l'applicazione, quindi con impedenza fra

100 e 120 ohm e bassa capacità, circa 20 pf per metro, polarizzazione della linea in partenza, metti almeno 10K fra il pin 6 del driver standard e positivo 5 volt e una 10K fra il 7 e massa, se non termini la linea è sufficente, se termini la linea a 120 ohm devi ricalcolare la polarizzazione per avere almeno 200mV fra il data più e il data - in situazione di riposo, pena alternare lo stato della linea e leggere i pacchetti toggle, uno si e uno no, se sei in esterno son i tuoi slave pensa anche a una forma di protezione dalle scariche elettromagnetiche, fai un ponte con 4 diodi fast fra il data + e il data- poi metti dei tranzorbz bidirezionali fra il positivo e il negativo del ponte di diodi e fra gli stessi e massa, altra cosa importante, la 485 NECESSITA della massa, non serve solo quando si hanno applicazioni industriali di bordo macchine dove tutti i dispositivi connessi dal bus sono cmq solidamente ancorati alla stessa terra, qualora i dispositivi siano lontani e alimentati da forniture diverse con terre diverse o senza messa a terra della massa del dispositivo è fondamentale creare un'equipotenziale fra i driver di linea con la massa-schermo del cavo twistato! Questa è la mia esperienza sul campo di 15 anni di utilizzo della 485 in tutte le condizioni possibili:-) ah...115 kbit è la velocità limite dove si può lavorare con la linea non terminata, se la velocità di trasmissione non è fondamentale io la abbasserei a 57.600 o giù di li, andare sopra può voler dire entrare in un mefitico campo di terminazione delle linee il che si tira dentro molti altri problemi! ciao Rusty
Reply to
Rusty

Grazie a tutti per le informazioni. Soprattutto a Rusty!! Sono arrivato alla conclusione di usare la RS-485,come driver uso il max485, purtroppo avendo l'uart del micro gi=E0 occupata in altre faccende mi devo appoggiare ad una uart esterna, il SC16IS740 della NXP che fondamentalmente =E8 un bridge I2C/Seriale, spero che questo non mi crei problemi in seguito....

Ciao

Reply to
Klaus

Il giorno Mon, 20 Jul 2009 08:37:26 -0700 (PDT), Klaus ha scritto:

La RS485 è la soluzione migliore, ma tieni conto che è importante il tempo di risposta, cioè il tempo che ci mette il µC a 'girare' la linea dopo aver trasmesso per evitare di mettere in corto due driver contemporaneamente in uscita.

Dalla parte del pc si risolve abbastanza facilmente con convertitori RS232-RS485 autosensing, molto meglio che usare il CTS\ della 232.

Dalla parte dei µC invece devi essere veloce a rispondere, quindi l'UART deve essere servita velocemente e sotto interrupt, e non contare troppo sulla fifo altrimenti faresti comunque fatica a girare il MAX485 in poco tempo e perderesti il vantaggio di andare a 115K.

Leggi anche questi threads:

formatting link

formatting link

-- ciao Stefano

Reply to
SB

"SB" ha scritto nel messaggio news: snipped-for-privacy@4ax.com...

Si può realizzare anche un comando tx con un retriggerabile sui dati da trasmettere, funzione bene e lo uso da tempo, l'unica accortezza è dimensionare l'RC per la velocità trasmissione che vogliamo usare, in modo di non avere una coda TX troppo lunga, molto importante però sono i vari delay che vanno regolati con il micro, in un sistema master - slave le periferiche (slave) devono avere da qualche uS a qualche mS di ritardo nella trasmissione della risposta! ciao Rusty

Reply to
Rusty

Il giorno Tue, 21 Jul 2009 11:48:54 GMT, "Rusty" ha scritto:

Si può fare, io personalmente preferisco se posso evitare reti RC per problemi di affidabilità, stabilità e anche perchè se si può fare via sw è meglio.

Io in un applicazione time critical dove vengono scansionati vari sensori uso un timer da 100µS che viene resettato dopo ogni byte ricevuto, in modo da poter partire subito dopo l'elaborazione del dato considerando nel delay anche il tempo che ci mette il Mega8 per decodificare il dato fare la media e riempire il buffer di trasmissione. Vado a 250Kbaud e i fili non superano i 10-15 metri, la cosa funziona bene e da diverso tempo.

-- ciao Stefano

Reply to
SB

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.