Salve a tutti,
ancora una volta vengo in soccorso a voi perché mi trovo in difficoltà.
Sto progettando un sistemino che utilizza un BUS seriale (RS232) con 3 slave e un master ovvero un PIC 16F877.
I tre dispositivi sono:
1) un computer che mi permetterà di settare delle variabili all'interno del micro;
2) un modulo GSM 862 per interfacciare il mio sistema con la rete GSM dei cellulari;
3) una keypad (fatta da me)
Il problema principale è che i primi due slave stanno su un cirucito stampato mentre la keypad si può trovare anche a 100 metri dal dispositivo e qui ho scielto la necessità di utilizzare (solo per la keypad) il protocollo RS485.
Ora il funzionamento deve essere sempre garantito tra sistema master e keypad. Il sistema master ha degli inputs che riferiscono a eventi particolari. Al verificarsi di un dato evento il master deve scollegare la keypad e comunicare solo con il GSM862 per inviare un sms. Dalle impostazioni del master è possibile abilitare la connessione del PC e in tal caso il GSM e la keypad dovranno risultare scollegati tra di loro. In sostanza, in ogni caso la comunicazione avviene solo con un dispositivo alla volta. Ho provato a buttare giù uno schemino, a blocchi che vi presento con il programma consentito dal forum.
Le mie domande:
1) Secondo voi, in pratica, è possibile realizzare un sistema bus del genere?
Stando a logica gli errori aumenteranno in funzione della lunghezza del cavo per la velocità di trasmissione.
2) Con quali criteri posso determinare la velocità di trasmissione tra la keypad e il master e la lunghezza del cavo di collegamento?
Un grazie a tutti,
lcua31989
BUS seriale con più dispositivi
Moderatore:
Paolino
8 messaggi
• Pagina 1 di 1
0
voti
Col bus 485 non fare configurazioni a stella soprattutto per simili distanze.
l'isolamento ed il risveglio nodi prevedilo via software, tanto non potrai isolare un nodo se sta lavorando. ti tocchera' attendere che finisca. Visto che hai un solo master gestirai un protocollo che tenga conto di precedenze.
Per la distanza devi considerare anche la qualita' del cavo. piu basso e' il baud rate e migliore e' la qualita' del segnale. a naso direi 250 k.
l'isolamento ed il risveglio nodi prevedilo via software, tanto non potrai isolare un nodo se sta lavorando. ti tocchera' attendere che finisca. Visto che hai un solo master gestirai un protocollo che tenga conto di precedenze.
Per la distanza devi considerare anche la qualita' del cavo. piu basso e' il baud rate e migliore e' la qualita' del segnale. a naso direi 250 k.
-

Candy
32,5k 7 10 13 - CRU - Account cancellato su Richiesta utente
- Messaggi: 10123
- Iscritto il: 14 giu 2010, 22:54
0
voti
Candy ha scritto:Col bus 485 non fare configurazioni a stella soprattutto per simili distanze.
In che senso non dovrei fare configurazioni a stella? Se non sbaglio le configurazioni a stella prevedono che più nodi parlino tra di loro in contemporanea, non uno alla volta. E' solo un nodo che ha una distanza lunga.
Candy ha scritto:Per la distanza devi considerare anche la qualita' del cavo. piu basso e' il baud rate e migliore e' la qualita' del segnale. a naso direi 250 k.
Purtoppo il modulo GSM 862 non riesce a gestire velocità così basse. Con la RS485 è possibile impostare velocità diverse tra i vari nodi?
Quel 250 k sono in baud rate o bit per secondo?
Ciao lcua31989
0
voti
Per il tipo di premesse e domande che hai fatto, si presume tu abbia già alcune conoscenze sulle linee seriali: point to poit, multi point, ecc. Si presuppone tu sappia la differenza tra il bus di trasporto ed il protocollo dei dati. Visto che hai fatto cenno all'uso del bus RS485 si suppone tu lo conosca almeno in parte.
Le risposte che hai ricevuto davano quindi per scontate molte, molte di queste nozioni.
Ora, se sei confuso, evidentemente c'è qualcosa che non sai. Allora potrebbe essere più proficuo sapere:
chi sei? E cosa sai?
Non rispondere secondo i dati della C.I., ma con quelli utili al forum per aiutarti.
Le risposte che hai ricevuto davano quindi per scontate molte, molte di queste nozioni.
Ora, se sei confuso, evidentemente c'è qualcosa che non sai. Allora potrebbe essere più proficuo sapere:
chi sei? E cosa sai?
Non rispondere secondo i dati della C.I., ma con quelli utili al forum per aiutarti.
-

Candy
32,5k 7 10 13 - CRU - Account cancellato su Richiesta utente
- Messaggi: 10123
- Iscritto il: 14 giu 2010, 22:54
0
voti
Ciao,
Del sistema di comunicazione RS232 so che a livello fisico è una connessione full duplex, i principali piedini per poter comunicare sono l'RX e il TX e in aggiunta si possono usare i RTS (request to send) e CTS (clear to send). Dal PC escono delle tensioni +/- 12V che per le nostre applicazioni digitali devono essere adattate a 0V e 5V. Il primo segnale +/-12V è di tipo Non Ritono a Zero (se non ricordo male); il secondo è un Ritorno a Zero. La velocità dei dispositivi viene misurata in Baud Rate ma non sarei capace di convertire tale velocità in bit per secondo. Generalmente il MASTER è colui che genera il clock mentre lo SLAVE è colui che lo riceve. Normalmente il bus RS232 è prevede la comunicazione di una coppia di dispositivi; se (come nel mio caso) si devono utilizzare più dispositivi si deve gestire un protocollo che faccia comunicare tali dispositivi uno alla volta attraverso il BUS RS485. Se i due dispositivi sono lontani allora si utilizzano integrati come l'LTC485 con determinati cavi per ridurre la possibilità di errori di ricezione. In questo caso a livello fisico si può definire una comunicazione di tipo half duplex. Dimenticavo di menzionare che un protocollo è un qualcosa di software che gestisce i comportamenti dei nodi. In questo caso i nodi prima di trasmettere devono assicurarsi che il BUS sia libero. Se non vado errando, il bus RS232 e il bus RS485 in condizione di riposo (nessuno trasmette e nessuno riceve) sulle linee dedicate hanno una tensione positiva: in questo caso +5V.
- Se un master è colui che invia il clock e lo slave chi lo riceve, ha senso di parlare identificare chi è uno o l'altro dato che il clock è generato localmente?
- I vari nodi possono avere anche velocità diverse o devono condividere tutti una ben definita?
- A occhio potrei osare a dire che più i dispositivi sono lontani più la velocità dei due nodi debba diminuire. E' corretto?
- Come determino qual è il cavo migliore per ridurre i vari tipi di errori?
- perché l'integrato LTC485 diminuisce drasticamente gli errori?
- perché si deve aggiungere una resistenza tra le linee A e B? (vedi schema)
- Su quali criteri le resistenze vengono calcolate?
P.S se ho scritto troppe castronate perdonami perché su questo argomento sono autodidatta. Se hai altre informazioni e chiarimenti da darmi saranno ben accette. Nel frattempo ti ringrazio per la tua collaborazione e disponibilità.
Ciao,
lcua31989
Del sistema di comunicazione RS232 so che a livello fisico è una connessione full duplex, i principali piedini per poter comunicare sono l'RX e il TX e in aggiunta si possono usare i RTS (request to send) e CTS (clear to send). Dal PC escono delle tensioni +/- 12V che per le nostre applicazioni digitali devono essere adattate a 0V e 5V. Il primo segnale +/-12V è di tipo Non Ritono a Zero (se non ricordo male); il secondo è un Ritorno a Zero. La velocità dei dispositivi viene misurata in Baud Rate ma non sarei capace di convertire tale velocità in bit per secondo. Generalmente il MASTER è colui che genera il clock mentre lo SLAVE è colui che lo riceve. Normalmente il bus RS232 è prevede la comunicazione di una coppia di dispositivi; se (come nel mio caso) si devono utilizzare più dispositivi si deve gestire un protocollo che faccia comunicare tali dispositivi uno alla volta attraverso il BUS RS485. Se i due dispositivi sono lontani allora si utilizzano integrati come l'LTC485 con determinati cavi per ridurre la possibilità di errori di ricezione. In questo caso a livello fisico si può definire una comunicazione di tipo half duplex. Dimenticavo di menzionare che un protocollo è un qualcosa di software che gestisce i comportamenti dei nodi. In questo caso i nodi prima di trasmettere devono assicurarsi che il BUS sia libero. Se non vado errando, il bus RS232 e il bus RS485 in condizione di riposo (nessuno trasmette e nessuno riceve) sulle linee dedicate hanno una tensione positiva: in questo caso +5V.
- Se un master è colui che invia il clock e lo slave chi lo riceve, ha senso di parlare identificare chi è uno o l'altro dato che il clock è generato localmente?
- I vari nodi possono avere anche velocità diverse o devono condividere tutti una ben definita?
- A occhio potrei osare a dire che più i dispositivi sono lontani più la velocità dei due nodi debba diminuire. E' corretto?
- Come determino qual è il cavo migliore per ridurre i vari tipi di errori?
- perché l'integrato LTC485 diminuisce drasticamente gli errori?
- perché si deve aggiungere una resistenza tra le linee A e B? (vedi schema)
- Su quali criteri le resistenze vengono calcolate?
P.S se ho scritto troppe castronate perdonami perché su questo argomento sono autodidatta. Se hai altre informazioni e chiarimenti da darmi saranno ben accette. Nel frattempo ti ringrazio per la tua collaborazione e disponibilità.
Ciao,
lcua31989
1
voti
Allora, siamo parecchio lontani per riuscire ad implementare un bus 485 con protocoolo da studiare. Se vuoi cercare nel mio blog c'è un bus multimaster già progettato anche a livello software, per dei PIC. Ci sono anche le librerie per il lato PC. Se invece ti fa schifo ci sono anche molti progetti basati sul più comune e pubblico ModBUS.
1) I bus RS232 o 485 sono asincroni. Il master non trsmette nessun clock. Tutti i nodi hanno una velocità di riferimento nota.
2) In soluzioni moderne però si possono usare dei trucchi: il bus più essere a baud rate variabile. In testa ai pacchetti si trasmette un primo byte: ad esempio 0x02, gli slave misurano la durata dei singoli bit e calcolano il baudrate da utilizzare per ricevere i successivi pacchetti. (Ma è una complicazione quasi inutile e poco praticata).
3) Il baud rate esprime direttamente il numero di bit trasmessi al secondo. 250k = 250000 bit/secondo.
4) La tecnica NRZ non è implementata nei bus RS232 ed RS485. Mi sembra di ricordare sia invece usata nei bus CANOpen.
5) Sui bus RS485 esiste una ampia narrativa, che specifica come fare la rete, come calcolare baud rate in funzione della distanza, che cavi e soluzioni usare, ecc.
Vedo in generale davanti a te ancora molto studio da fare. Studio anche pratico, non solo teorico.
1) I bus RS232 o 485 sono asincroni. Il master non trsmette nessun clock. Tutti i nodi hanno una velocità di riferimento nota.
2) In soluzioni moderne però si possono usare dei trucchi: il bus più essere a baud rate variabile. In testa ai pacchetti si trasmette un primo byte: ad esempio 0x02, gli slave misurano la durata dei singoli bit e calcolano il baudrate da utilizzare per ricevere i successivi pacchetti. (Ma è una complicazione quasi inutile e poco praticata).
3) Il baud rate esprime direttamente il numero di bit trasmessi al secondo. 250k = 250000 bit/secondo.
4) La tecnica NRZ non è implementata nei bus RS232 ed RS485. Mi sembra di ricordare sia invece usata nei bus CANOpen.
5) Sui bus RS485 esiste una ampia narrativa, che specifica come fare la rete, come calcolare baud rate in funzione della distanza, che cavi e soluzioni usare, ecc.
Vedo in generale davanti a te ancora molto studio da fare. Studio anche pratico, non solo teorico.
-

Candy
32,5k 7 10 13 - CRU - Account cancellato su Richiesta utente
- Messaggi: 10123
- Iscritto il: 14 giu 2010, 22:54
8 messaggi
• Pagina 1 di 1
Torna a Firmware e programmazione
Chi c’è in linea
Visitano il forum: Nessuno e 3 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)

