Home
Accesso / Registrazione
 di 

arduino e rs/485

11 risposte [Ultimo post]
ritratto di paolo.barbuti
Offline
Titolo: User
Utente
Ultima visita:
8 settimane 15 ore fa
Utente dal: 26/01/2013
Messaggi: 7
Utente PREMIUM

ciao a tutti

mi trovo a dover fronteggiare un problema, di cui non ho trovato molto per cui mi rivolgo al popolo di lettronica open source:

come potrei gestire 14 bus 485, sono 14 bus a stella il cui traffico master/slave e' comandato da un micro centrale?

vorrei con arduino sostituire una scheda "proprietaria" non piu' gestita dal fornitore.

chiunque possa aiutarmi a dipanare questa problematica e' ben accetto

grazie

ritratto di Ivan Scordato
Offline
Titolo: PowerUser
Utente Power
Ultima visita:
12 ore 2 min fa
Utente dal: 30/09/2012
Messaggi: 376
Utente PREMIUM
Dai un occhiata a

Dai un occhiata a questo:
http://www.youtube.com/watch?v=J3nuIL2dBak

Purtroppo adesso non posso rispondere in quanto impegnato.
A presto,
Ivan

ritratto di paolo.barbuti
Offline
Titolo: User
Utente
Ultima visita:
8 settimane 15 ore fa
Utente dal: 26/01/2013
Messaggi: 7
Utente PREMIUM
grazie lo visionero' subito !

grazie
lo visionero' subito !

ritratto di avalle
Offline
Titolo: User+
Utente+
Ultima visita:
1 settimana 3 giorni fa
Utente dal: 14/09/2009
Messaggi: 11
Utente PREMIUM
Considerando l'elevato numero

Considerando l'elevato numero di linee 485 che vuoi creare ti suggerisco di appoggiarti a delle UART hardware connesse su bus SPI o I2C.
Per esempio puoi utilizzare dei chip tipo SC16IS740/750/760 che contengono una UART compatibile RS485 con numerose caratteristiche che indipendentemente dalla velocità di trasmissione dati e dal tipo di applicazione ti saranno senz'altro utili:
- buffer FIFO 64 bit
- interrupt
- commutazione RX/TX

Spero di averti aiutato un po'. La tua esigenza è molto particolare ma certamente il tema della comunicazione Arduino-to-Arduino è molto interessante e meriterebbe di essere affrontato nella prospettiva della costituzione di reti di dispositivi intelligenti (es. in ambito domotico) in cui la comunicazione tra apparati omologhi (es. master/master invece che i classici master/slave) gioca un ruolo importante.

ritratto di paolo.barbuti
Offline
Titolo: User
Utente
Ultima visita:
8 settimane 15 ore fa
Utente dal: 26/01/2013
Messaggi: 7
Utente PREMIUM
ciao ho dato un occhiata al

ciao

ho dato un occhiata al datashet dell'integrato che mi hai indicato
in effetti uno dei problemi che aveva quella schede che vorrei sostituire risiedeva nel fatto che tutti i max485 o equivalenti erano pilotati dalla stessa seriale del micro (devo andare a recuperare gli schemi) in modo che tutte le linee ricevessero il pacchetto mandato dal micro e solo il dispositivo destinatario rispondesse. viste le mie modeste capacita' di progettazione elettronica, mi occupo di scrivere il firmware, avevo pensato ad arduino per risolvere il problema hw, ma su collegamenti in 485 ho trovato poco/nulla, figuriamoci per una problematica del genere.

dall'altro capo ci sono N dispositivi, con micro zilog z8f24, con appunto un altro max485 che dialoga via 485 con questa scheda "multiseriale" per scambiarsi dati.

non so se possono emergere problemi con driver diversi e pilotati in modo diverso.

non so se sono stato sufficientemente chiaro

grazie

ritratto di avalle
Offline
Titolo: User+
Utente+
Ultima visita:
1 settimana 3 giorni fa
Utente dal: 14/09/2009
Messaggi: 11
Utente PREMIUM
In teoria su un unico bus

In teoria su un unico bus rs485 ci possono stare un master (la CPU) e decine di slave, quindi non vedo il motivo di avere tanti bus separati e il circuito si semplificherebbe drasticamente a livello hw in quanto te la cavi mettendo un Max485 sulla seriale hw di Arduino e il resto lo fa il firmware.

Ma forse mi sono perso la ragione per cui ogni dispositivo slave debba avere il suo bus privato.

ritratto di paolo.barbuti
Offline
Titolo: User
Utente
Ultima visita:
8 settimane 15 ore fa
Utente dal: 26/01/2013
Messaggi: 7
Utente PREMIUM
ciao la questione e' appunto

ciao

la questione e' appunto questa: ci sono 14 bus non per collegare 14 dispositivi, ma perche' i 14 bus sono disposti a "stella" e su ogni puo' esserci uno o piu' dispositivi (ovviamente collegati in parallelo)

e' stato realizzato cosi' per la "geograficita'" del sito !

la mia domanda (e indirettamente il problema da risolvere) risiede appunto nel "collegare e gestire" via arduino, 14 driver 485 !

ritratto di avalle
Offline
Titolo: User+
Utente+
Ultima visita:
1 settimana 3 giorni fa
Utente dal: 14/09/2009
Messaggi: 11
Utente PREMIUM
La complessità non è data dal

La complessità non è data dal numero di driver quanto dal numero di bus. Infatti ogni dispositivo ha comunque un driver, ma ogni bus indipendente deve avere oltre al driver anche un controller indipendente.
Che tradotto significa avere una UART per ogni bus perché di fatto rs485 è una tipologia di bus ma dal punto di vista dei segnali è un'interfaccia seriale.

Scusa se insisto ma penso che ti si semplificherebbe poi il tutto...
Capisco la forma "a stella" per ragioni di distribuzione, ma data la capacità del bus 485 (correttamente terminato) di supportare Km di cavo, nulla vieterebbe in teoria di disegnare la stella con un unico bus che va e viene da ogni ramo della stella. Improponibile?

Se la risposta è no credo ti resti solo la soluzione di realizzare un circuito con 14 UART e i loro 14 driver. I chip tipo quello che ti ho suggerito o i Max 3107 fanno allo scopo perchè li colleghi con un unico bus ad Arduino invece di usare 28 pin RX/TX con la SoftwareSerial (che si può sempre tentare, ma credo che con un numero così elevato di canali qualcosa rischi di perderlo per strada).

ritratto di paolo.barbuti
Offline
Titolo: User
Utente
Ultima visita:
8 settimane 15 ore fa
Utente dal: 26/01/2013
Messaggi: 7
Utente PREMIUM
tanto per andare sul concreto

tanto per andare sul concreto l'applicazione attualmente gestisce attraverso 10 schede, 94 bus rs485, e queste 10 schede colloquiano a loro volta con un pc, attraverso dei moduli xbee-pro.

ora 3 di queste schede, causa fulmine, sono andate.... e l'azienda che le ha prodotte nel frattempo e' chiusa.

avevo pensato ad una scheda arduino per gestire appunto i bus rs/485 in quanto la gestione dei xbee non comporta nessun problema hw/sw

ora si tratta solo di capire come si possono collegare e gestire sia hw che sw i 14 max485. nella vecchia scheda l'uart che pilotava tutti i max485 era unica (trasmissione del pacchetto di richiesta su tutti i bus e risposta solo dell'apparato con lo stesso indirizzo della richiesta)

spero che ora l'architettura sia piu' precisa nelle funzionalita hw

ritratto di avalle
Offline
Titolo: User+
Utente+
Ultima visita:
1 settimana 3 giorni fa
Utente dal: 14/09/2009
Messaggi: 11
Utente PREMIUM
Caspita!

Caspita, cos'è una centrale nucleare?...

Per la trasmissione basta connettere insieme tutti i piedini TX (pin DI) dei Max485, mentre per la ricezione la cosa è un po' più complicata ma non troppo.

La logica è quella di mantenere connessa l'RX della UART di Arduino al solo Max485 su cui viene iniziata la trasmissione del messaggio di risposta.

Immagino che il protocollo dati sia stato studiato per iniziare la trasmissione invertendo il livello di riposo del bus per un certo tempo (BREAK), consentendo di avvisare il Master che stanno per arrivare dei dati.
Se come dici solo un bus di ricezione si trova a trasmettere in un dato istante, sarà sufficiente la commutazione esclusiva verso la UART dell'RX (pin RO) del Max485 connesso al bus che ha risposto, in modo da poterne leggere i dati.

Al termine della trasmissione lo stesso protocollo avrà uno STOP che consente di fare l'operazione inversa, ovvero sconnettere il bus che ha risposto dall'UART in attesa di nuove trasmissioni.

In questo modo la complessità del circuito dovrebbe essere quasi nulla se puoi utilizzare per ogni scheda un Arduino Mega: con tutte le sue porte di I/O non dovrebbe essere molto difficile fare tutto quel che serve via software.
Colleghi i 14 pin RO ad altrettanti input del Mega e ne controlli il livello per determinare quale bus sta per rispondere. Se utilizzi quei piedini del Mega che consentono di utilizzare i "change interrupts" il firmware diventa quasi banale.
A quel punto con la SoftwareSerial vai a leggere il dato seriale che arriva sul pin che ha risposto.

Per verificare che questo schema possa funzionare dovresti analizzare il protocollo di comunicazione in ricezione perché ovviamente non lo puoi cambiare e se non funzionasse come l'ho descritto allora occorre cambiare strategia.

In bocca al lupo e fammi sapere!

ritratto di s.prischich
Offline
Titolo: User+
Utente+
Ultima visita:
3 settimane 1 giorno fa
Utente dal: 13/03/2011
Messaggi: 23
Utente PREMIUM
94 bus 485 !!!

Sono anni che progetto impianti basati su 485 ma 94bus tutti insieme non li ho mai visti. Poi se su ogni bus ci sono collegati altri processori raggiungiamo un numero di punti controllati notevolmente alto (mi piacerebbe conoscere quale è l'applicazione). Chi ha progettato quella scheda da quello che ho capito leggendo sopra sapeva il fatto suo. Una rete 485 non può essere a stella se non in particolari casi, cioè quando il baud rate è da 9600 in giù. Ho fatto parecchi esperimenti con configurazioni a stella e man mano che si aumentano i rami aumentano le riflessioni e dopo un pò si rompono i driver 485. Per cui il progettista ha separato i rami della stella pilotando ogni ramo con un proprio driver.
Il messaggio è trasmesso in parallelo a tutti i rami. Ovviamente gli indirizzi dei processori appartenenti alla stella sono tutti diversi, per cui uno solo risponde e quini la parte RX dei 485 è messa in or. Per quanto riguarda la parte driver è auspicabile non cambiare nulla.
Se vuoi pilotare il tutto con un arduino è possibile e ti consiglio un arduino mega con due seriali in modo tale che con una seriale sei sempre collegato al PC e con l'altra piloti la tua linea. Ho fatto una applicazione simile e la seriale collegata al bus l'ho programmata direttamente senza l'utilizzo della libreria in modo tale da gestire il driver. Quello che devi conoscere è il protocollo di comunicazione altrimenti devi mettere uno sniffer su uno dei bus funzionanti e ricavartelo.

ritratto di paolo.barbuti
Offline
Titolo: User
Utente
Ultima visita:
8 settimane 15 ore fa
Utente dal: 26/01/2013
Messaggi: 7
Utente PREMIUM
per il protocollo non c'e'

per il protocollo non c'e' problema: lo scritto io

per il resto ti ho mandato una mail

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 1 utente e 50 visitatori collegati.

Utenti online

Ultimi Commenti