Swappa : Uni / Reti wireless - RS-232
Creative Commons License

Torna alla pagina di Reti wireless


 :: Reti wireless - RS-232 ::

Appunti del 9 Marzo

Alcune immagini di questa pagina sono prese dalle slide del prof Rapacioli

RS-232

L'interfaccia seriale RS-232 (Recommended Standard 232) permette lo scambio di dati tra dispositivi digitali, ed è la più semplice possibile e la meno costosa su cavo. È stata standardizzata da diversi enti in anni successivi (RS-232 è la sigla data dall'ente di certificazione EIA, mentre per l'europeo CCITT è chiamata V.21/V.24), rimanendo sostanzialmente uguale a sé stessa. Si noti che lo standard riguarda solo le caratteristiche fisico/elettriche, e infatti contiene solo indicazioni su come deve essere modulato il segnale (forma, voltaggi, frequenze, ..) su un cavo seriale. Lo standard quindi non dice nulla sul come deve avvenire la trasmissione dei dati, anche se col tempo sono stati elaborati protocolli condivisi tra i maggiori produttori.

Con una RS-232 i singoli bit che compongono un byte sono trasmessi uno dopo l'altro in serie (da cui seriale) lungo il cavo. Esistono protocolli alternativi come il parallelo in cui i dati sono trasmessi contemporaneamente su più fili, così che possano essere inviati più byte in un colpo solo. L'interfaccia parallela comunque non ha avuto molta fortuna, mentre il seriale continua ad essere pesantemente usato, nonostante tutti i suoi limiti.

La velocità di una linea seriale si può calcolare in due modi:

Anche la trasmissione dei dati può avvenire in due modi:

Ipse dixit
"Half-duplex è una discussione normale, la full-duplex è una conversazione tra suocere"


Connettore DB25

Lo standard RS-232 non obbliga all'utilizzo di uno specifico connettore. Per PC ci sono gli attuali DB9 (a 9 pin) e i vecchi DB25 (a 25 pin), mentre per applicazioni industriali ci sono altri tipi più efficienti come quelli a morsetti.
I connettori per PC sono di tipo consumer, che costano poco (sui 20 centesimi) ma che non garantiscono buone performance. Ad esempio, la maggior parte di questi non arrivano a 100 inserimenti, ma si usurano prima (soprattutto la porta femmina, che si slabbra facilmente interrompendo la continuità elettrica tra i pin dei connettori). I connettori di tipo industriale (come quello del prof a quattro fili), costano molto di più (a partire da 20 euro) ma garantiscono un numero di inserimenti noto e sono certificati.


Connettore DB9

Il costo e l'usura della cavetteria non sono aspetti da sottovalutare, e un punto di forza del wireless è che supera questi problemi. In applicazioni in cui è previsto un alto numero di inserzioni/deinserzioni basterebbero queste considerazioni per decidersi a passare da connessioni wired a quelle senza fili.
Come abbiamo già detto, lo standard RS-232 non definisce come deve essere fatta la presa di una seriale, ma i connettori consumer citati prima sono stati comunque standardizzati. Dagli schemi del DB25 e DB9 mostrati accanto si notano alcune linee rosse, che rappresentano delle ponticellature che permettono di usare solo i cavi TX, RX e GND. Il DB9 riduce drasticamente il numero di pin rispetto ai 25 del vecchio standard, così da occupare meno spazio a livello hardware e possa starci ad esempio su laptop.
Ultima nota: il motivo per cui la parte attorno i connettori è fatta in metallo, è perché ad essa si allaccia la massa del cavo schermato, così da scaricare a terra.

Osservando con un oscilloscopio il segnale seriale si osserva una forma come quella sottostante:

Il segnale è modulato in partenza e demodulato in arrivo, e sotto in blu sono riportate le tacche del tempo che indicano la velocità con cui avviene la campionatura. Il segnale oscilla tra +12 e -12 volt (è portato a questa ampiezza proprio nella fase di modulazione), che sono i valori standard stabiliti per la seriale. A -12V è associato il bit 1, mentre a +12V il bit 0. Ovviamente si tratta di valori indicativi: normalmente sono ammessi tutti i voltaggi che stiano almeno a 3 volt dallo zero. Il segnale infatti perde differenza di potenziale durante il tragitto, affievolendosi in modo direttamente proporzionale sia alla lunghezza che alla qualità del cavo. Poiché ad esempio il segnale può partire da 12V e arrivare con 7V, si mantiene un intervallo di indeterminatezza sopra e sotto i 3V, superato il quale tutti i voltaggi sono considerati validi.

Elenchiamo una serie di parametri della RS-232:


In rosso il segnale ideale, mentre in blu quello reale. Nella figura di sinistra il time slice è sufficientemente ampio perché si riesca a captare un segnale reale ammissibile; mentre nella figura a destra il time slice ridotto, ad esempio tra t2-t3, fa campionare in modo errato perché il segnale non ha fatto in tempo a superare la soglia dei 3 volt

Ipse dixit
"Se scegli meno di 5 bit per un carattere devono averti picchiato da bambino."

Ricapitoliamo le caratteristiche e i limiti della RS-232:

Tipici utilizzi dell'interfaccia RS-232: stampanti (soprattutto in ambienti industriali), device a bassa velocità (ad esempio tutte le componenti di un bancomat, stampante che stampa lo scontrino compresa), comunicazioni tra CPU, o ad esempio nelle connessioni tra componenti di cellulari consumer, eccetera.
Si noti bene che le linee seriali continuano ad essere utilizzate pesantemente nell'industria nonostante stiano sparendo in ambienti consumer.

La lezione si conclude con l'esercizio proposto sulle slide: scrivere un protocollo di comunicazione seriale fra due processi su due pc diversi in grado di riprendersi anche a fronte di disconnessioni e riconnessioni successive e/o di errori di protocollo. Si tratta di un problema che chi progetta applicazioni vere deve porsi, perché non si può assumere che ogni bit inviato arrivi correttamente a destinazione. Si deve invece partire dall'assunzione che la trasmissione può fallire, e quindi dobbiamo riuscire a capire se e cosa è andato storto, e come rimettere le cose a posto.
Il protocollo proposto è quello sviluppato dalla Siemens, molto diffuso per le comunicazioni con i PLC.

Ipse dixit
"Come ogni informatico che si rispetti l'ho copiato. Siccome qualcuno ci aveva pensato io ho detto 'perché devo pensarci anch'io che poi mi fumano le orecchie?'. Poi se penso molto sparo fuori minchiate, quindi l'ho copiato."

In questo protocollo un PC riveste il ruolo di master della comunicazione e l'altro (slave) gli risponde solo se interrogato. C'è inoltre una fase di sicronizzazione iniziale, del tipo "sto per farti una domanda, sei pronto?" "sì sono pronto" "bene, rispondi a..". Solo che la prima risposta alla domanda da parte del ricevente è la domanda stessa. Prima di confondere troppo le idee, vediamo lo schema della fase di sincronizzazione.

Fase 1

La prima operazione che fa il master in fase di inizializzazione è svuotare i suoi buffer input/output, così qualunque residuo precedente di conversazione viene buttato via. I buffer sono infatti molto utili per la velocità di esecuzione dei programmi, ma sono un casino per la gestione dei protocolli perché c'è il rischio di considerare attuale una risposta ad una domanda precedente. Due precisazioni: 1. sono solo i buffer del master ad essere svuotati, 2. questi possono riempirsi un attimo dopo perché c'erano ancora delle comunicazioni pendenti, ma va beh, è un rischio accettabile.
La sincronizzazione continua con l'invio del comando STX, trasmesso come uno dei primi 30 caratteri della tabella ASCII, a cui normalmente non corrisponde niente di indispensabile per una comunicazione, ma che tornano utili in questi casi. Al comando segue la domanda che vuole fare il master, trasmessa sottoforma di funzione.
Lo slave dà il comando DLE e rispedisce al mittente la stessa funzione, dimostrando così che ha capito la domanda. A questo punto si può assumere che la trasmissione è andata bene e che è lecito aspettarsi una risposta.


Fase 2

Conclusa con successo la sincronizzazione, il master rimanda allo slave il comando STX seguito da alcuni byte che rappresentano i parametri della funzione, due CRC per fare il controllo sulla correttezza dei dati inviati, e infine il segnale end of transmission.


Fase 3

Lo slave a questo punto ha ricevuto tutto: funzione + parametri. Come prima cosa manda al master un ack (o un nack se non ha ricevuto abbastanza parametri), poi i vari byte contenenti la risposta, poi i CRC della risposta e infine il solito EOT.
Il master chiude la menata trasmettendo un DLE+ACK se è andato tutto a buon fine, o un DLE+NACK se ci sono problemi.

Ovviamente il master e lo slave non attendono indefinitamente la comunicazione dell'altro, ma c'è un timeout, superato il quale si assume che l'altro non risponderà mai e si chiude l'attesa.


Torna alla pagina di Reti wireless

(Printable View of http://www.swappa.it/wiki/Uni/RW-9Marzo)