Arduino Forum

International => Italiano => Software => Topic started by: Bruschetta on Feb 03, 2013, 08:16 pm

Title: rs422 full duplex
Post by: Bruschetta on Feb 03, 2013, 08:16 pm
Ciao a tutti,
sto cercandi di realizzare una rete (rs422) composta da più arduini ... ogni arduino avrà il proprio compito ma  potrà impartire degli ordini agli altri ... esempio:

arduino 1 (gestisce i controllo di temperatura)
arduino 2 (gestisce una serie di relè collegati a delle prese di corrente programmati con eventi essenzialmente orari)

entrambi lavorano da soli ma al verificarsi di un evento (esempio temperatura troppo alta) l'arduino uno deve comunicare ad arduino2 di accedendere una presa dove vi è collegato un ventilatore ...

non so se ho reso l'idea ... il sistema gestirà un acquario marino ...

Inoltre ci dovrà essere un arduino (mega) che attraverso un touch gestirà la programmazione delle regole per tutti gli altri arduino ...

il mio problema è che non riesco a reperire esempi (possibilmente in italiano) che mi aiutino a capire:

1) che tipo di protocollo Full-Duplex utilizzare
2) come gestire una sort di plug and play all'interno della rete, cioè se aggiungo un nuovo arduino gli altri devono capirlo e chiedergli chi sei? cosa fai?

Spero che qualche anima pia possa aiutarmi a capire come procedere...

grazie e ciao a tutti
Andrea
Title: Re: rs422 full duplex
Post by: Bruschetta on Feb 04, 2013, 01:17 am
Nessuno mi può dare una mano  :smiley-red:
Title: Re: rs422 full duplex
Post by: astrobeed on Feb 04, 2013, 06:40 am
Prima cosa, visto che utilizzi una MEGA2560 sei sicuro di non poter gestire tutto quanto con questa ? Ti risparmi un sacco di problemi e ti costa molto di meno.
La RS422 è inutile per questa applicazione, ti basta e avanza la RS485, come protocollo usa Modbus RTU, ci sono le librerie pronte all'uso per Arduino.
In  tutti i casi i network di tipo RS4xx sono del tipo Master/Slave, tutte le richieste e gli ordini partono sempre e solamente dal Master, due Slave non possono comunicare direttamente tra di loro.

Title: Re: rs422 full duplex
Post by: Bruschetta on Feb 04, 2013, 07:20 pm

Prima cosa, visto che utilizzi una MEGA2560 sei sicuro di non poter gestire tutto quanto con questa ? Ti risparmi un sacco di problemi e ti costa molto di meno.
La RS422 è inutile per questa applicazione, ti basta e avanza la RS485, come protocollo usa Modbus RTU, ci sono le librerie pronte all'uso per Arduino.
In  tutti i casi i network di tipo RS4xx sono del tipo Master/Slave, tutte le richieste e gli ordini partono sempre e solamente dal Master, due Slave non possono comunicare direttamente tra di loro.




Non capisco su quali concetti si basino le tue affermazioni ...

La differenza tra una rs422 e un rs485 sta proprio nel fatto che la prima (rs422) permette un collegamento full duplex (4 fili) mentre la seconda rs485 (2 fili) permette solo una connessione hall duplex ...

Inoltre non capisco come tu possa affermare che la rs422 sia inutile per la mia applicazione se non conosci in fondo il progetto finale ... Nella descrizione sopra ho fatto un esempio di uno dei molteplici funzionamenti ...

Il colloquio tra gli slavi è la parte ferma del progetto in quanto tutto il sistema andrá in produzione per essere messo in vendita ...

chiunque potrà decidere di comperare il singolo accessorio (con il suo eventuale controller) oppure comperare l'intero sistema (compreso il master e quindi senza ogni singolo controller).

Spero di aver reso l'idea :-)

Title: Re: rs422 full duplex
Post by: astrobeed on Feb 04, 2013, 07:46 pm

La differenza tra una rs422 e un rs485 sta proprio nel fatto che la prima (rs422) permette un collegamento full duplex (4 fili) mentre la seconda rs485 (2 fili) permette solo una connessione hall duplex ..


Mi spieghi dove è tutta questa esigenza di avere una linea full duplex piuttosto che una half duplex ?
In tutti i casi gli slave non possono comunicare tra loro, la RS422, come la RS485, non è un bus multimaster, c'è sempre e solamente un singolo master.
Se ti serve un bus multimaster devi usare il CAN.
Title: Re: rs422 full duplex
Post by: Bruschetta on Feb 04, 2013, 08:37 pm
Uno dei motivi ad esempio e' che, in caso una persona compri l'intero sistema, non posso demandare l'interrogazione a tutti gli slave ad un master in quanto se, si blocca per qualche motivo, mi giocò l'acquario.

Un acquario di barriera ha pesci e coralli anche di svariate migliaia di euro ... Un piccolo pezzo di corallo puó costare anche 150/200 euro ... Immagina un acquario pieno ....

Ogni singolo arduino ha una serie di compiti standard ... In più al verificarsi di alcuni eventi deve poter comunicare all'arduino x di fare delle attività ...

Ti faccio un altro esempio ... Un arduino deve controllare due sensori di livello ... Uno nel l'acquario e l'altro nella vasca di rabbocco ...

In caso che il livello dell'acquario sia basso deve controllare che nella vasca di rabbocco ci sia acqua ... In caso positivo chiama l'arduino che gestisce le prese di corrente e gli comanda di dare corrente alla presa dove vi è collegata la pompa che travasa l'acqua nell'acquario mentre se anche il 2 sensore é basso deve dire all'arduino che gestisce le prese di dare corrente alla presa dove vi è collegata l'elettrovalvola in entrata dell'impianto ad osmosi ...

In tutto questo ti dico che l'arduino che gestisce le prese oltre che ricevere comandi dovrà gestire le sue funzioni primarie del tipo :
-sincronizzazioni di due o più prese (per le pompe)
-gestire orari di accensione programmati a particolari orari (es. Gestire l'accensione/spegnimento di più bulbi t5 o hqi simulando Alba e tramonto, ecc.)
-ecc. Ecc.

Capisci che demandare il tutto ad un solo arduino diventa pericoloso!

Title: Re: rs422 full duplex
Post by: astrobeed on Feb 04, 2013, 09:26 pm

Uno dei motivi ad esempio e' che, in caso una persona compri l'intero sistema, non posso demandare l'interrogazione a tutti gli slave ad un master in quanto se, si blocca per qualche motivo, mi giocò l'acquario.


Indipendentemente dalle questioni di costi rimane il fatto che la RS422 e la RS485 sono network single master, non puoi far dialogare tra loro due slave, inoltre in caso di avaria di un Arduino avresti sempre la perdita delle funzioni controllate, ovvero il problema permane.
Title: Re: rs422 full duplex
Post by: Bruschetta on Feb 04, 2013, 10:52 pm
Hai qualche consiglio da darmi per riuscire a far parlare gli arduino tra loro ... Se risolvo il problema in caso di guasto di un arduino predo una funzionalità e non tutte :-)
Title: Re: rs422 full duplex
Post by: leo72 on Feb 04, 2013, 11:25 pm
Potresti tirare un'altra coppia di fili fra gli Arduino che devono comunicare tra di loro, creando quindi una seconda RS485 che serve solo queste 2 schede.
Title: Re: rs422 full duplex
Post by: Bruschetta on Feb 05, 2013, 01:38 am
Il problema e che con alcuni moduli ci dovrebbero parlare praticamente quasi tutti ... Possibile che non ci sia una soluzione (anche non rs485/422) in cui ho una rete che sia plug and play in cui tutti parlino con tutti!

Help me!
Title: Re: rs422 full duplex
Post by: leo72 on Feb 05, 2013, 06:51 am
Sull'I2C puoi avere una configurazione multimaster ma il problema è che con questo protocollo non ci fai molta strada: si parla di decine di cm, metri se hai fortuna, anche se alcuni riferiscono connessioni più lunghe questa non è comunque la regola (l'I2C è nato per far dialogare dispositivi sulla stessa scheda o comunque fra schede interconnesse).

Title: Re: rs422 full duplex
Post by: astrobeed on Feb 05, 2013, 07:39 am
Le soluzioni possibili sono due, I2C e CAN, per la prima non ti serve hardware aggiuntivo però ci sono dei grossi limiti sulla lunghezza delle connessioni, o meglio il limite è la capacità totale della linea che non deve superare i 400 pf e questo penalizza molto la lunghezza dei cavi e il numero di device collegabili al bus.
Il CAN bus è la soluzione ottimale, velocissimo e senza problemi di lunghezza cavi visto che possono essere anche di centinaia di metri, però non puoi gestirlo nativamente da Arduino, devi usare appositi IC che ti forniscono sia la parte trasceiver che lo strato più basso del protocollo software.
Una buona soluzione per implementare il CAN bus su Arduino, senza gravare troppo sul micro, è utilizzare l'abbinata MCP215 (CAN controller) e MCP2551 (CAN trasceiver) esistono delle shield (http://arduino.cc/blog/2010/12/16/can-shield-and-a-mcp2515-library/) con questi IC e relative librerie per l'utilizzo.
Title: Re: rs422 full duplex
Post by: brainbooster on Feb 05, 2013, 08:11 am
ma con xbee e un mash network non si potrebbe fare?
Complimenti per la promozione Leo ;) .
Title: Re: rs422 full duplex
Post by: astrobeed on Feb 05, 2013, 08:22 am

ma con xbee e un mesh network non si potrebbe fare?


Volendo si.
Title: Re: rs422 full duplex
Post by: vittorio68 on Feb 05, 2013, 11:28 am
Quote
ma con xbee e un mash network non si potrebbe fare?


Io propenderei per il CAN suggerito da astrobeed. Mi pare più economico e meno soggetto a distrubi esterni. Confesso che non conosco la sensibilità di xbee ai distrurbi, ma poichè si tratta di una applicazione abbastanza mission critical (bruschetta parlava di un valore di migliaia di euro...) eviterei di correre rischi.

Rifletterei inoltre ancora un po' sulla soluzione I2C. Dovendo controllare un acquario, quindi un sistema relativamente piccolo dove i diversi arduino saranno probabilmente posizionati molto vicini tra loro (se poi mi sbaglio, bruschetta mi correggerà...) magari la lunghezza del bus non è così critica. Inoltre esiste il P82B715 che è un I2C extender che potrebbe aiutare qualora fosse necessaria una lunghezza del bus maggiore.
Title: Re: rs422 full duplex
Post by: astrobeed on Feb 05, 2013, 11:40 am

Rifletterei inoltre ancora un po' sulla soluzione I2C. Dovendo controllare un acquario, quindi un sistema relativamente piccolo dove i diversi arduino saranno probabilmente posizionati molto vicini


Dal punto di vista realizzazione la soluzione basata su I2C è quella più semplice ed economica, tutte le schede Arduino dispongono di questo bus e basta collegarlo con un cavo, poi c'è il discorso della I2C multimaster che se non mi ricordo male dovrebbe già esserci una libreria dedicata.
Però c'è un "piccolo" problema, la gestione I2C di Arduino non è affidabile, ovvero in caso di errori sul bus c'è il reale rischio di trovarsi con il bus bloccato e nessuno può più comunicare, peggio ancora lo sketch rimane fermo in eterno in attesa di un qualcosa che non arriverà mai, cose che avrebbe effetti disatrosi sull'acquario, è possibile risolvere però tocca scriversi delle proprie routine di gestione I2C che non siano bloccanti in caso di errore e stabilire un modo di autoripristino, ovvero c'è molto lavoro software da fare.
Title: Re: rs422 full duplex
Post by: Bruschetta on Feb 05, 2013, 12:41 pm

Le soluzioni possibili sono due, I2C e CAN, per la prima non ti serve hardware aggiuntivo però ci sono dei grossi limiti sulla lunghezza delle connessioni, o meglio il limite è la capacità totale della linea che non deve superare i 400 pf e questo penalizza molto la lunghezza dei cavi e il numero di device collegabili al bus.
Il CAN bus è la soluzione ottimale, velocissimo e senza problemi di lunghezza cavi visto che possono essere anche di centinaia di metri, però non puoi gestirlo nativamente da Arduino, devi usare appositi IC che ti forniscono sia la parte trasceiver che lo strato più basso del protocollo software.
Una buona soluzione per implementare il CAN bus su Arduino, senza gravare troppo sul micro, è utilizzare l'abbinata MCP215 (CAN controller) e MCP2551 (CAN trasceiver) esistono delle shield (http://arduino.cc/blog/2010/12/16/can-shield-and-a-mcp2515-library/) con questi IC e relative librerie per l'utilizzo.


prima di tutto ti ringrazio per l'auto che mi stai dando ...

secondo avresti qualche link delle librerie e di qualche esempio di trasmissione? tanto a me serve solo che invi un macro comando poi il ricevente effettua tutte le operazioni ...

per adesso grazie :-)
Title: Re: rs422 full duplex
Post by: Bruschetta on Feb 05, 2013, 12:56 pm
allora ragazzi ...

i2c non è possibile in quanto l'attrezzatura tante volte si trova anche a molti metri di distanza ... vi spiego meglio ... l'acquario marino ha bisogno (solitamente) di tre vasche:
1) Acquario
2) Vasca tecnica (dove vengono allogiate le attrezzature)
3) Vasca di Ripristino acqua evaporata

Molti malati (nel buon senso della parola) hanno l'Acquario al piano di sopra e la vasca tecnica al piano di sotto ...

Riguardo agli Xbee cercando in rete mi è sembrato che anche qui serve per forza un coordinatore ma in questo sistema potrebbe non esserci (dipende se uno compra tutto il sistema subito) ...

:-)
Title: Re: rs422 full duplex
Post by: leo72 on Feb 05, 2013, 01:17 pm

Molti malati (nel buon senso della parola) hanno l'Acquario al piano di sopra e la vasca tecnica al piano di sotto ...

ma per "piano" intendi il piano della casa oppure "livello", cioè prendendo come esempio un mobile, la vasca acquario sul ripiano superiore e la vasca tecnica sul ripiano inferiore? Se la distanza è di circa mezzo metro con l'I2C dovresti farcela.
Title: Re: rs422 full duplex
Post by: astrobeed on Feb 05, 2013, 01:28 pm

Riguardo agli Xbee cercando in rete mi è sembrato che anche qui serve per forza un coordinatore ma in questo sistema potrebbe non esserci (dipende se uno compra tutto il sistema subito) ...


Il coordinatore è uno, ma anche più di uno, dei moduli Xbee in rete, serve per gestire le comunicazioni tra i moduli.
In pratica un mesh network Xbee è composto da almeno due moduli Xbee serie 2, uno è il coordinatore e l'altro un router, puoi inserire molti altri router e altri coordinatori nella rete, tutti i moduli Xbee possono parlare tra di loro e ricevere comunicazioni broadcast, cioè quello che viene trasmesso da uno arriva a tutti gli altri.
Per il CAN ti conviene iniziare dal topic messo in evidenza sul blog di Arduino che ti avevo linkato http://arduino.cc/forum/index.php/topic,8730.0.html (http://arduino.cc/forum/index.php/topic,8730.0.html), li trovi anche le librerie, se opti per l'utilizzo della coppia MCP2515 (controller) e MCP2551(transceiver) praticamente hai il 95% del carico di lavoro svolto dal 2515, che in realtà è un micro preprogrammato per gestire il protocollo CAN.
Come puoi vedere nella foto del topic che ti ho linkato i due IC esistono anche in formato pdip il che ti semplifica molto la loro integrazione su una tua shield se non vuoi "combattere" con gli SMD.
Title: Re: rs422 full duplex
Post by: Bruschetta on Feb 05, 2013, 01:32 pm
no intendo piano di casa :-)

conta che la vasca tecnica oltre a contenere l'attrezzatura deve anche contenere l'eventuale acqua che scende in caso di black out ... conosco persone che hanno acquari di 1000/1500 litri :-)

vi sto facendo un corso accellerato sull'acquario di barriera :-)
Title: Re: rs422 full duplex
Post by: Bruschetta on Feb 05, 2013, 01:43 pm


Il coordinatore è uno, ma anche più di uno, dei moduli Xbee in rete, serve per gestire le comunicazioni tra i moduli.
In pratica un mesh network Xbee è composto da almeno due moduli Xbee serie 2, uno è il coordinatore e l'altro un router, puoi inserire molti altri router e altri coordinatori nella rete, tutti i moduli Xbee possono parlare tra di loro e ricevere comunicazioni broadcast, cioè quello che viene trasmesso da uno arriva a tutti gli altri.



Cercando su wiki:

Ci sono tre differenti tipi di dispositivo ZigBee:

-ZigBee Coordinator (ZC): è il dispositivo più "intelligente" tra quelli disponibili, costituisce la radice di una rete ZigBee e può operare da ponte tra più reti. Ci può essere un solo Coordinator in ogni rete. Esso è inoltre in grado di memorizzare informazioni riguardo alla sua rete e può agire come deposito per le chiavi di sicurezza.

-ZigBee Router (ZR): questi dispositivi agiscono come router intermedi passando i dati da e verso altri dispositivi.

-ZigBee End Device (ZED): includono solo le funzionalità minime per dialogare con il suo nodo parente (Coordinator o Router), non possono trasmettere dati provenienti da altri dispositivi; sono i nodi che richiedono il minor quantitativo di memoria e quindi risultano spesso più economici rispetto ai ZR o ai ZC.
Title: Re: rs422 full duplex
Post by: Bruschetta on Feb 05, 2013, 01:44 pm


Per il CAN ti conviene iniziare dal topic messo in evidenza sul blog di Arduino che ti avevo linkato http://arduino.cc/forum/index.php/topic,8730.0.html (http://arduino.cc/forum/index.php/topic,8730.0.html), li trovi anche le librerie, se opti per l'utilizzo della coppia MCP2515 (controller) e MCP2551(transceiver) praticamente hai il 95% del carico di lavoro svolto dal 2515, che in realtà è un micro preprogrammato per gestire il protocollo CAN.
Come puoi vedere nella foto del topic che ti ho linkato i due IC esistono anche in formato pdip il che ti semplifica molto la loro integrazione su una tua shield se non vuoi "combattere" con gli SMD.



provo a dargli un'occhiata anche se l'inglese lo mastico mooolto poco :-(
Title: Re: rs422 full duplex
Post by: astrobeed on Feb 05, 2013, 01:53 pm

Ci sono tre differenti tipi di dispositivo ZigBee:


Gli Xbee consentono di utilizzare reti con più coordinatori, estendono le possibilità del protocollo Zigbee e non sono dei moduli Zigbee generici.


Title: Re: rs422 full duplex
Post by: Bruschetta on Feb 05, 2013, 02:00 pm


Ci sono tre differenti tipi di dispositivo ZigBee:


Gli Xbee consentono di utilizzare reti con più coordinatori, estendono le possibilità del protocollo Zigbee e non sono dei moduli Zigbee generici.





quindi alla fine che cosa mi consiglieresti tu tra il can e zigbee (con l'utilizzo degli xbee) ... forse il can è più economico ...
Title: Re: rs422 full duplex
Post by: astrobeed on Feb 05, 2013, 02:09 pm

quindi alla fine che cosa mi consiglieresti tu tra il can e zigbee (con l'utilizzo degli xbee) ... forse il can è più economico ...


Sicuramente il CAN, costa molto di meno (la coppia 2515+2551 costa circa 3.5 Euro) e hai meno problemi con il software, gli Xbee non sono semplici da gestire in modalità API (Mesh Network), poi c'è il fattore velocità di trasmissione che sugli Xbee è abbastanza limitato, banda reale 80 kbps, mentre sul CAN viaggi senza problemi a velocità altissime, non ultimo il fattore sicurezza offerto dal cavo.

Title: Re: rs422 full duplex
Post by: Bruschetta on Feb 05, 2013, 02:16 pm
ok mi hai convinto ... can ... :-) ... questa sera vedo di capire il funzionamento delle librerie ... se ho problemi mi puoi dare una mano?

grazie e ciao