RS485 RS422 RS232 I2C etc. etc. .....

Che sistema utilizzereste per far comunicare n.3 unità distinte Ua,Ub e Uc fisicamente dislocate e collegate a triangolo (facciamo equilatero per semplificare la discussione). Il triangolo può essere anche aperto, ho detto triangolo al solo scopo di sottolineare che le unità comunicanti vorrei che fossero collegate in parallelo su un unica linea bifilare. ED ESCLUSIVAMENTE BIFILARE. Oppure anche UNIFILARE dato che ho già altre linee di riferimento che possono svolgere la funzione di GND.

I lati del triangolo ipotizzato sono l'equivalente ad una linea di collegamento di circa 100 metri ciascuno. Le n.3 unità hanno alimentazione propria, e non hanno problemi scarsità energetica, dunque se c'è bisogno di erogare correnti forti si può fare.

La comunicazione deve essere di tipo BIdirezionale, Ua,b.or.c invia dati a tutti gli altri Ua,b.and.c della rete sono poi i singoli Ua,b.and.c a decidere se il dato è o meno interessante per i propri scopi.

Le unità saranno gestite da MCU generici di piccolo taglio (Microchip, Philips, Hitachi .... etc... ), ragione per cui, come da oggetto, sono particolarmente orientato sul sistema RS485 (che purtroppo vedo sempre meno citato nella letteratura pubblica in rete).

In transfer rate di cui ho bisogno è di circa 1 BPS (non i 100 Mega di una LAN) dunque non ho problemi di velocità, serve per controllare e agire su grandezze che variano nell'ordine di ore o giorni, comunque ben graditi se arrivano gratis gli ormai facilmente raggiungibili 10 o 20 KBPS.

Inoltre, qualcuno conosce l'esistenza di algoritmi già pronti e testati (anche a livello concettuale, non necessariamente già scritti e testati su uno specifico microcontrollore) per gestire la comunicazione. Trucchi e strategie varie per il caso specifico. etc.... etc..

Avrei pensato anche a sistemi wireless, ad esempio rfPIC, ma ancora in rete non si trovano particolari documentazioni esaudienti. E poi, un sistema del genere mi andrebbe bene solo se fosse possibile implementare su ogni singola unità una funzione di tipo "bridge" o "repeater", per fare in modo che se Ua e Uc sono fuori portata, Ub possa fare da ponte. Ho aggiunto quest'ultimo per vedere se "stuzzica l'appetito" di qualcuno. Ma a livello di sicurezza, il rame mi da più garanzie.

Grazie a tutti coloro che vorranno partecipare alla discussione. Saluti Iw5Dei

Reply to
iw5dei
Loading thread data ...

iw5dei ha scritto:

Io utilizzerei proprio la RS485. Se termini bene le linee i 200 m di distanza li raggiungi tranquillamente e i 20 kbps li hai sicuramente.

Data la "mole" di dati credo che non sia necessario un protocollo molto complesso. Prevedi su ogni un'unità dei dip-swtich per configurare il numero del nodo.

In ogni pacchetto prevedi un header dove specifichi mittente e destinatario così ogni unità può decidere se elaborare il pacchetto o no. Prevedi anche un controllo di errori in fondo al pacchetto (crc o semplice xor tra i vari byte) così da ignorare trasmissioni corrotte.

Fai in modo che ad ogni trasmissione corrisponda *sempre* una risposta (anche un semplice ack) questo per essere sicuro che la tx sia andata a buon fine. In caso contrario ci sarà un timeout per la ritrasmissione e/o segnalazione.

Personalmente ricorro al link radio solo quando è impossibile fare altrimenti. Impossibile nel senso che fisicamente non si può oppure verrebbe a costare troppo.

Ciao! Marco / iw2nzm

Reply to
Marco Trapanese

"iw5dei" ha scritto nel messaggio news:pvnSj.76$ snipped-for-privacy@nntpserver.swip.net...

[...]>

penso che la 485 sia la soluzione "più migliore" :-)

no, sorry, sono un progettista hardware, il sofwtware per me è una cosa dove premi ALT+F9 e tutto funziona :-o

rfPIC è solo un TX...però se vuoi stuzzicare il settore wireless....prova a vedere cosa trovi con Zigbee

Ste

--

Ogni problema complicato ha una soluzione semplice...per lo piu` sbagliata
[cit. Franco, i.h.e. 20.01.2007]
Reply to
PeSte

ho letto superficialmente le risposte (dopo le leggo meglio) intanto ringrazio per la grande celerità Livello rapidità: 3 o 4 nuovi concetti l'ora.

e già che siamo in tema aggiungo anche questa domanda:

i PIC in genere hanno tutti la I2C, è sfruttabile in modo I/O su una linea bifilare?

RS485 è solo un protocollo? o è uno standard hardware?

Ho sentito parlare di possibilità di dialogare con un PC a mezzo client del tipo HyperTerminal, in quale delle due circostanze posso averlo sentito dire? E poi, dialogando con un PC, attraverso quale porta? Le RS232 stanno andando in pensione. La Parallela sembra, paradossalmente, che ancora resista (*). USB per il momento sembra un pianeta irraggiungibile, nella connettività con dispositivi esterni.

(*): Forse per causa di parecchie periferiche (talvolta più costose di una semplice stampante) che ancora esistono nel mondo, ed i loro costruttori non hanno mai prodotto aggiornamenti o magari sono pure aziende fallite. Ma questa era una parentesi di tipo nostalgico.

Saluti. Iw5DeI

Reply to
iw5dei

allora RS485 o CAN senza alcun dubbio

il CAN è più esigente della RS485, che in questo caso vedo come più opportuna senza dubbio

RS485 nasce proprio per poter essere multimaster, quindi no problem :)

Considera che la RS485 la gestisci come una UART classica (in questo caso però è half duplex), mentre altri protocolli (come il CAN) sono ben più complicati, seppur più robusti Usando una linea porcheria, come il doppino telefonico, fai senza problemi quelli che ti serve (magari utilizzando integrati con slew-rate limitato, come il MAX487 invece del MAX485). Con linee bilanciate fatte per bene (cavi piuttosto costosi) si arriva a piena velocità (intorno al megabit) a diverse centinaia di metri.

MODBUS

formatting link
E' il protocollo più diffuso in ambito industriale, ma puoi benissimo inventartelo da solo. Stai molto attento perchè nel tuo caso rischi le collisioni, per cui devi inventarti un protocollo che prima di tutto controlli se qualcuno sta già trasmettendo

Il link radio è l'ultima spiaggia..... Comunque potresti guardarti i ricetrasmettitori aurel

formatting link
, dove rimane il problema del protocollo e hai un sacco di disturbi in più

Ciao CG

Reply to
CG Audio Laboratories

iw5dei ha scritto:

No. E' a due fili, ma necessita del riferimento a 0V quindi di fatto i conduttori sono 3. Inoltre è adatta per brevissimi tratti, non a caso l'acronimo è Inter Integrated Circuit quindi va bene solo per far comunicare due integrati sulla stessa scheda o comunque vicinissimi.

E' uno standard hardware, o meglio è un'implementazione del livello fisico nel modello OSI di una connessione seriale a due fili in half-duplex e (volendo) multipoint.

Seriale RS232. O qualsiasi altro standard preventivamente convertito in RS232.

Stanno andando in pensione semplicemente perché le stanno togliendo dai PC. Ma in ambito industriale e non solo sono ancora usatissime e spesso insostituibili.

La parallela è comunque pensata per usi diversi. L'USB si può usare ma necessita di hardware e software dedicati, relativamente complessi.

Ad ogni modo puoi usare i convertitori USB RS232 se usi una comunicazione a 3 fili (tx, rx, gnd) e stai su velocità umane.

Ciao! Marco / iw2nzm

Reply to
Marco Trapanese

Con occhio concentrato alla sola parte che mi interessa quella della RS485, ho visto questi schemi

formatting link
formatting link
dove oltre ai terminali A e B c'è anche un C e dunque mi faccio le seguenti domande:

- Di RS485 apprezzo il metodo dell'analisi differenziale, che senz'ombra di dubbio con un trecciolato è una buona difesa immunitaria per i disturbi indotti, aggiungo che potrebbe essere ancora più invulnerabile se le correnti in gioco fossero più alte (e quindi modificando le res. di Pull Up e Gnd), ma se si tratta di adeguarsi ad uno standard da cui sono imposte, lo preferisco e mi adeguo di conseguenza (dato che come già detto non ho pretese di qualità superiore). Ma per tutti gli utenti devo disporre di una sorgente di alimentazione isolata dal resto? Io contavo di cavarmela polarizzando una base di un transistor per ricevere (con Ic applicata ad un LED di un optoisolatore) ed un Collettore/Emettitore di un'altro optoisolatore per trasmettere.

- Il Pull-Up ai +5V e GND devo farli non necessariamente su tutti gli utenti della linea? in un caso ideale ne basta solo uno e qualora le distanze dovessero creare problemi ne aggiungo altri in punti strategici?

- Leggendo su un forum ho comunque visto che ci sono problemi di adattamento di impedenza caratteristica della linea. Ci vuole il carico fittizio terminatore come nelle vecchie LAN con il coassiale? Se è così tassativo, come metodo di comunicazione lo vedo abbastanza critico, può essere?

inoltre, un altro frigorifero da cui prenderò cibo è il seguente

formatting link
con tutti i suoi link e le sue parent e sub directory (che mi farà evitare di far perdere tempo a scrivere cose che nella storia dell'uomo sono già state scritte).

Saluti Iw5deI

ZM@Calce

talon75 il 06-04-2007, 08.31.49 Beh, RS485 non è un protocollo logico, ma uno standard elettrico. Il protocollo è a cura dell'utilizzatore. Il vantaggio di RS485 rispetto ad RS232 è che lavora su segnali differenziali su doppino intrecciato e ciò la rende immune ai disturbi di modo comune. Inoltre la linea trasmissiva è "chiusa" sull'impedenza caratteristica, eliminando così la riflessione del segnale. Ciò significa poter coprire distanze maggiori a data rate più alti. Un transceiver RS485 (tipo DS3695, MAX485 etc.) può essere collegato direttamente alla USART del PIC come faresti col MAX232 o equivalenti. Per darti un'idea io uso il DS3695 e copro senza probelmi distanze di una cinquantina di metri a 115200 bit/s.

talon75 il 06-04-2007, 08.35.41 Ah, dimenticavo... Lo svantaggio di RS485 è principalmente topologico: i vari nodi devono essere collegati in daisy chain. Nel tuo caso esci dal master, vai al primo slave. Esci dal primo slave e vai al secondo etc. L'ultimo slave della catenza avrà il terminatore da 120 ohm. Nel caso la topologia debba essere ad albero, con connessione diretta al master da parte di ogni slave, sei costretto ad agire sul circuito elettrico per "serializzare" le connessioni: cablaggi in parallelo impediscono il corretto funzionamento perché alterano l'impedenza caratteristica del cavo.

begin 666 post_old.gif M1TE&.#EA"@`+`.9)`#M#;)>IUX:6S+S3[[+(Z8&.U;W4\*:ZX;S3[M#I_\_H M_X"-U'!_D;S2[G6$F

Reply to
iw5dei

iw5dei ha scritto:

Se guardi il datasheet del MAX485 o similari vedrai che il terminale 'C' serve per stabilire la direzione di comunicazione (ricezione o trasmissione). Ogni nodo deve impegnare la linea solo quando è necessario altrimenti altri nodi non potranno trasmettere.

Sicuramente per la trasmissione/ricezione utilizza un MAX485 o alternativi, non un semplice transistor. L'optoisolamento non è indispensabile ma su tratte così lunghe io lo farei.

Puoi metterli solo in un punto della linea. Servono a garantire la corretta polarizzazione in assenza di trasmissione.

La terminazione deve essere presente ai due estremi della linea e tipicamente è sufficiente una resistenza da 120 ohm. Se cerchi su internet il bel tutorial di Vincenzo Villa ti chiarirà parecchi punti in proposito.

Ciao Marco / iw2nzm

Reply to
Marco Trapanese

Con occhio concentrato alla sola parte che mi interessa quella della RS485, ho visto questi schemi

formatting link
formatting link
formatting link
dove oltre ai terminali A e B c'è anche un C e dunque mi faccio le seguenti domande:

- Di RS485 apprezzo il metodo dell'analisi differenziale, che senz'ombra di dubbio con un trecciolato è una buona difesa immunitaria per i disturbi indotti, aggiungo che potrebbe essere ancora più invulnerabile se le correnti in gioco fossero più alte (e quindi modificando le res. di Pull Up e Gnd), ma se si tratta di adeguarsi ad uno standard da cui sono imposte, lo preferisco e mi adeguo di conseguenza (dato che come già detto non ho pretese di qualità superiore). Ma per tutti gli utenti devo disporre di una sorgente di alimentazione isolata dal resto? Io contavo di cavarmela polarizzando una base di un transistor per ricevere (con Ic applicata ad un LED di un optoisolatore) ed un Collettore/Emettitore di un'altro optoisolatore per trasmettere.

- Il Pull-Up ai +5V e GND devo farli non necessariamente su tutti gli utenti della linea? in un caso ideale ne basta solo uno e qualora le distanze dovessero creare problemi ne aggiungo altri in punti strategici?

- Leggendo su un forum ho comunque visto che ci sono problemi di adattamento di impedenza caratteristica della linea. Ci vuole il carico fittizio terminatore come nelle vecchie LAN con il coassiale? Se è così tassativo, come metodo di comunicazione lo vedo abbastanza critico, può essere?

inoltre, un altro frigorifero da cui prenderò cibo è il seguente

formatting link
con tutti i suoi link e le sue parent e sub directory (che mi farà evitare di far perdere tempo a scrivere cose che nella storia dell'uomo sono già state scritte).

Saluti Iw5deI

ZM@Calce

talon75 il 06-04-2007, 08.31.49 Beh, RS485 non è un protocollo logico, ma uno standard elettrico. Il protocollo è a cura dell'utilizzatore. Il vantaggio di RS485 rispetto ad RS232 è che lavora su segnali differenziali su doppino intrecciato e ciò la rende immune ai disturbi di modo comune. Inoltre la linea trasmissiva è "chiusa" sull'impedenza caratteristica, eliminando così la riflessione del segnale. Ciò significa poter coprire distanze maggiori a data rate più alti. Un transceiver RS485 (tipo DS3695, MAX485 etc.) può essere collegato direttamente alla USART del PIC come faresti col MAX232 o equivalenti. Per darti un'idea io uso il DS3695 e copro senza probelmi distanze di una cinquantina di metri a 115200 bit/s.

talon75 il 06-04-2007, 08.35.41 Ah, dimenticavo... Lo svantaggio di RS485 è principalmente topologico: i vari nodi devono essere collegati in daisy chain. Nel tuo caso esci dal master, vai al primo slave. Esci dal primo slave e vai al secondo etc. L'ultimo slave della catenza avrà il terminatore da 120 ohm. Nel caso la topologia debba essere ad albero, con connessione diretta al master da parte di ogni slave, sei costretto ad agire sul circuito elettrico per "serializzare" le connessioni: cablaggi in parallelo impediscono il corretto funzionamento perché alterano l'impedenza caratteristica del cavo.

begin 666 post_old.gif M1TE&.#EA"@`+`.9)`#M#;)>IUX:6S+S3[[+(Z8&.U;W4\*:ZX;S3[M#I_\_H M_X"-U'!_D;S2[G6$F

Reply to
iw5dei

iw5dei ha scritto:

praticamente con i 100m hai gia' tagliato fuori i2c e 232 ... 485 senza pensarci :)

-- ================================================================ Alberto Rubinelli - A2 SISTEMI news.aioe.org ThunderBird 2.0.0.4 Via Costantino Perazzi 22 - 28100 NOVARA - ITALY Tel 0321 640149 Fax 0321 391769 BBS 0321 392320 Mail: snipped-for-privacy@oldcomputers.de skype: albertorubinelli ICQ : 49872318 Visita il mio museo di computers:

formatting link
================================================================

Reply to
Alberto Rubinelli

Se vuoi spendere poco e coprire tratte lunghe immuni da disturbi, potresti valutare il current-loop con un protocollo token-bus (derivato dal token-ring dell'IBM). Il pacchetto che invii rientra nel RX e le collisioni possono essere rilevate nel caso in cui i dati inviati divergono da quelli rientrati. In genere, in caso di collisione la periferica che se ne accorge (il TX) emette un jam in rete (disturbo) per far dare errore anche alle altre che potrebbero non averlo percepito. Il vantaggio del current-loop =E8 che puoi utilizzare l'energia della linea per alimentare piccoli dispositivi, il tutto con due fili. Svantaggio: pi=F9 sono le stazioni in serie, pi=F9 alta deve essere la tensione di esercizio. Comunque, la RS485 resta sicuramente la soluzione pi=F9 accreditata, anche per l'ampia disponibilit=E0 di interfacce RS485-RS232 gi=E0 in commercio. Se ti interessa, ho realizzato un semplice ma funzionante TX current- loop con normalissima componentistica, collaudato su 100mt (matassa) a baud rate interessanti (38400 bps). Ricava 5 Volts dalla linea con qualche milliampere per il micro. Se poi cambi lo stabilizzatore, avresti anche pi=F9 corrente. Il ricevitore, per=F2, lo dovresti realizzare da solo: l'apparecchiatura era connessa ad un terminale apposito. Posso inviarti lo schema. infoCHIOCCIOLApicciatiandreaPUNTOit

Reply to
and.picciati

,

pdf_ita/7100-FT541K.pdf

nti

i

Up

lo

una

e

re

to

ivo,

re

i

ai

ohm.

co

vo.

Reply to
and.picciati

una linea di 100mt in orizzontale potrebbe darti problemi in caso di fulmini

"iw5dei" ha scritto nel messaggio news:pvnSj.76$ snipped-for-privacy@nntpserver.swip.net...

Reply to
GZ

"GZ" ha scritto nel messaggio news:481e15fb$0$40220$ snipped-for-privacy@reader5.news.tin.it...

perchè? in orizzontale sì e diversamente no?

Reply to
iw5dei

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.