Pages: [1] 2   Go Down
Author Topic: rs422 full duplex  (Read 1809 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: February 03, 2013, 02:59:59 pm by Bruschetta » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nessuno mi può dare una mano  smiley-red
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9185
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 :-)

Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9185
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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!

« Last Edit: February 04, 2013, 02:39:47 pm by Bruschetta » Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9185
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 :-)
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Offline Offline
Newbie
*
Karma: 0
Posts: 28
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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!
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21624
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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).

Logged


Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9185
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 con questi IC e relative librerie per l'utilizzo.
Logged

Deep south of Italy
Offline Offline
Faraday Member
**
Karma: 7
Posts: 2961
The quieter you become, the more you can hear
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ma con xbee e un mash network non si potrebbe fare?
Complimenti per la promozione Leo smiley-wink .
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9185
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Volendo si.
Logged

Battipaglia (SA)
Offline Offline
Jr. Member
**
Karma: 0
Posts: 70
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Pages: [1] 2   Go Up
Jump to: