Tutorials - Elettronica

 
 

RS-232


Handshaking (Flow Control)

Notevole importanza ha il controllo del flusso dati. 

Abbiamo visto come non sia possibile operare gli stretching o le sospensioni che, nelle comunicazioni sincrone, servono ad adeguare la velocità del trasmettitore alla capacità del ricevitore, dato che, non essendoci un clock separato, è la costanza nella lunghezza dei bit trasmessi che permette al ricevitore la loro decodifica.

Va ricordato che RS-232 è nata con lo scopo di collegare computer a modem e che questi, operando su linee telefoniche, richiedono un sensibile numero di segnali di controllo allo scopo di rendere sicura e funzionale la trasmissione. 

In RS-232 occorre, allora, disporre di un efficiente sistema di handshake, il cui scopo principale è quello di compensare la diversa velocità di risposta dei dispositivi collegati; ad esempio,  nel collegamento con il modem, sarà necessario individuare la corretta presenza della linea telefonica attiva, della portante della modulazione e correggere o evitare i probabili errori di ricezione dovuti alla cattiva qualità del segnale. Nel collegamento tra un trasmettitore veloce (computer) e un ricevitore lento (stampante), occorrerà dare modo alla stampante di adeguare il ritmo di emissione dati da parte del computer alle possibilità di stampa, oltre alla necessità di interrompere l'invio di dati nel caso di fine carta, mancanza di inchiostro, inceppamenti o anche solo impedire l' inizio della comunicazione se la stampante è spenta.

Usando segnali di handshaking, il ricevitore sarà in grado di comunicare al trasmettitore la necessità di mettere in pausa la trasmissione fino a che tutti i dati ricevuti sono stati elaborati.

Ci sono tre tipi di controlli di flusso: 

  • software

  • hardware

  • entrambi.


Handshake Software



L' handshaking software utilizza due caratteri di controllo

Handshake CTRL ASCII hex dec
XON CTRL S DC1 11 17
XOFF CTRL Q DC3 13 19

Si tratta di due dei caratteri non stampabili della tabella ASCII che il ricevitore invia al trasmettitore per regolare la comunicazione. 

XON é usato per avviare la trasmissione : quando un sistema riceve questo carattere, inizia a trasmettere e continua fino a quando riceve un carattere si arresto (XOFF).

Quando il sistema ricevente non ha la possibilitá di continuare a processare i dati in arrivo (ad esempio buffer pieno, fine carta e simili) invia un XOFF per fermare la trasmissione. 

I caratteri usati come semaforo possono anche essere differenti ; spesso i software di gestione della comunicazione permettono di sostituirli con altri, anche se, normalmente, non é necessario. 

Il protocollo prevede la possibilitá di determinare anche un XOFFTime, ovvero un tempo fisso di attesa dopo la ricezione di un XOFF  prima di riprendere la trasmissione ; questo serve ad evitare un blocco del flusso dati se il carattere XON di riavvio non viene riconosciuto . 

Il vantaggio di questo sistema è che non occorre alcun altro conduttore tra i due dispositivi.

I suoi inconvenienti sono:

  • La segnalazione di stop alla trasmissione non è istantanea: infatti occorre che sia trasmesso, ricevuto e processato il carattere di XOFF. Questo significa che il dispositivo che sta trasmettendo e riceve l' XOFF dall' altro dispositivo richiede un certo tempo prima di arrestarsi. Se ci sono altri dati nel buffer di invio è probabile che alcuni di questi siano automaticamente inviati dall' UART prima che il processore intervenga ad arrestarlo. 
    Quindi, per evitare perdita di dati, occorre che i dispositivi abbiano un buffer di ricezione sufficientemente ampio.
     
    I caratteri XON/XOFF, o comunque quelli usati come semaforo, devono ovviamente essere eliminati dal flusso di dati della comunicazione, ovvero non possono far parte dei dati trasmessi, proprio per la loro funzione di controllo.
    Solitamente questo non è un problema se la trasmissione è limitata a caratteri ASCII, dove, tra l' altro, i "caratteri di controllo" possono essere usati con funzioni di gestione della comunicazione. Diventa però non possibile se la trasmissione comprende anche dati binari, che possono assumere qualunque valore esadecimale, come nel caso di strumentazione, data logger, ecc. 

Il leggero aumento della lunghezza della trasmissione è irrilevante ai fini della prestazione in quanto l' handshake è reso necessario proprio quando si richiede di rallentarla.
Occorre però che i dispositivi abbiano sufficiente potenza di calcolo per gestire la trasmissione il riconoscimento degli handshake software, cosa che deve effettuare proprio il software di gestione, mentre sarà necessario il buffer fifo per fare da "polmone" al flusso dei dati che potrebbe continuare per un tempo più o meno breve dopo la ricezione dell' XOFF.

Un altro metodo, detto ETX/ACK, usa la separazione dei dati in blocchi; dopo ogni blocco viene trasmesso il carattere ETX (End of TeXt).
Quando il ricevitore ha accettato il blocco di dati, invia il carattere ACK (ACKnowledge) per consentire l' invio del blocco successivo.
Anche qui si rendono necessari buffer per contenere uno o più blocchi di messaggio.

Altri codici, tra quelli non stampabili della tabella ASCII possono essere utilizzati a questo scopo, ma principalmente sono impiegati dal software di controllo della comunicazione come indicatori di particolari eventi della periferica o come comandi speciali.
Questo insieme di codici sono noti come codici di controllo, il che giustifica al tasto 'CTRL' delle tastiere attuali. 

Se originariamente l'idea di handshaking software non era stata considerata, causa la lentezza delle apparecchiature, essa è attualmente più diffusa in considerazione dell' aumentata capacità di trattamento dati dei moderni processori.


Handshake Hardware

Handshaking hardware ha a disposizione linee fisiche su cui inviare livelli di tensione. 

Queste linee prendono il nome di RTS, CTS, DTR, DSR, DCD, RI e saranno descritte più avanti.
Il vantaggio della soluzione hardware è quello di non avere limiti per i caratteri trasmissibili e che solitamente il modulo UART gestisce questi segnali con il minimo impegno del software.
Per contro si rende necessario disporre di un numero maggiore di conduttori nel cavo di collegamento.

È anche possibile impostare il controllo di flusso Software + Hardware, quando si richieda una elevata sicurezza, anche se è una pratica non comune.

Per contro, quando trasmettitore e ricevitore non hanno problemi a trattare in tempo reale i dati, non sarà necessario introdurre alcun controllo. Questo è ottenibile anche adattando la velocità di comunicazione ad un bit rate tale da consentire alla periferica più lenta di ricevere tutti i pacchetti dati senza bisogno di fermare il trasmettitore.

Vediamo ora i segnali impiegati per il controllo della comunicazione


Copyright © afg. Tutti i diritti riservati.
Aggiornato il 23/04/12.