Il magico mondo RS232

Il collegamento RS-232 consente di collegare quasi qualunque cosa assieme e farla colloquiare.

Vi e' sempre piaciuto collegare cavi e vedere se funziona? Non avete mai capito perche' non funziona un collegamento? ... Se avete questi dubbi leggete questo documento. I dubbi rimarranno, ma vi sarete divertiti piu' a lungo.

Istruzioni veloci

Il collegamento RS-232 permette lo scambio di informazioni tra due apparecchiature. Lo scambio di informazioni avviene su una linea seriale a bassa velocita' e con modalita' piuttosto semplici. Per tale motivo il protocollo RS-232 consente lo scambio di dati non solo tra un terminale (DTE) ed un modem (DCE) (come in origine previsto dallo standard) ma tra componenti di diverso tipo (eg. PC e stampanti, host e terminali, tra due sistemi, ...praticamente qualsiasi dispositivo informatico ha un collegamento seriale).

Per gli scettici che non credono che un cavo seriale possa far comunicare con qualunque cosa... L'avete mai provato come frusta? E per legare i polsi? E per fare una margherita? Spelato per farne braccialetti ed anellini di rame? ... In ogni caso queste configurazioni superano un poco lo scopo di questo documento!

Per collegare due sistemi in RS-232 debbono essere soddisfatte le seguenti condizioni:

Utilizzare su entrambe i sistemi con prese adatte

DB9

La prima condizione per inserire un cavo in una apparecchiatura e' quella che il cavo "ci entri". Per soddisfare questo requisito si puo' utilizzare il cavo multiplo che presenta i principali tipi di presa. Sono anche disponibili alcuni scambiatori di sesso (gender charger) o adattatori da 25 a 9 pin.

Naturalmente debbono essere collegate tra loro due porte seriali (sui PC le parallele sono femmine con 25 pin) i cavi di alimentazione ed i collegamenti SCSI sono ben riconoscibili!

Riassumendo:

Definire la corretta logica sulla linea

Per far si' che la comunicazione avvenga e' necessario le due apparecchiature si riconoscano. Poiche' nel mondo RS-232 esistono solo DCE e DTE basta che ciascuno ritenga di parlare con qualcun'altro.

Il modo banale per far si' che cio' avvenga e':

Vi sono innumerevoli esempi di connessioni seriali standard che utilizzano cavi con soli 3 fili (TX, RX, GND) per comunicazione full duplex tra due dispositivi, cavi con 2 fili (TX, GND) per un Talker e piu' Listener, ...
Non sono standard! Lo standard prevederebbe la connessione tra soli due dispositivi e la gestione dei segnali. Ma anche queste configurazioni funzionano e tanto basta.

Utilizzare i corretti programmi di comunicazione su entrambe i sistemi

Vi sono una serie di configurazioni software da eseguire e di programmi da lanciare.

Ad esempio se vogliamo collegare un PC ad una porta seriale su Unix dovremo fare in modo che un programma su Unix accetti il collegamento dalla linea seriale (il getty) e sul PC dovremo attivare un programma di emulazione di terminale (eg. hyperterm su Win-95).
Su Unix il settaggio dei parametri si effettua con stty (e ci sono alcuni file di configurazione delle linee) mentre su MS-DOS il comando e' MODE COMm[:] [BAUD=b] [PARITY=p] [DATA=d] [STOP=s] [RETRY=r].

Per i settaggi la configurazione tipica e' 9600 baud, 8 bit, No parity.

Concludendo:

Come e' andata?

Se siete stati fortunati tutto funziona. In caso contrario avete diverse possibilita':

 

Per chi vuole saperne di piu'

Ma perche' volete saperne di piu'??

Comunque la razza dei curiosi e' sempre la piu' vasta. Ecco quindi alcune informazioni ulteriori e qualche riferimento per ulteriori approfondimenti.

Storia ed utilizzo dell'RS-232

Quando e' nato lo standard RS-232 l'esigenza era quella di collegare un terminale (DTE: Data Terminal Equipment) ad un modem (DCE: Data Communication Equipment).

Lo standard RS-232 si riferisce ad un protocollo seriale (quindi tutti i dati passano, uno dopo l'altro, sullo stesso filo senza alcun parallelismo) che consente la comunicazione di dati tra un DTE ed un DCE. La frequenza di trasferimento e' chiamata baud rate.

Lo standard si riferisce in effetti a solo questo tipo di collegamento definendo aspetti che partono dal livello fisico ed arrivano a quelli superiori. Tra l'altro: collegamenti DIN 25 poli, voltaggi elettrici, impedenza dei cavi, lunghezza massima (12 metri circa) del collegamento, protocollo dei segnali, assegnazione dei segnali a specifici poli, velocita', parita', ...

Ad esempio dal punto di vista di segnale elettrico lo standard prevede un voltaggio da 3 a 15 volt, il negativo corrisponde all'1 ed il positivo allo 0. Sulla maggioranza dei dispositivi, tra cui i PC, i voltaggi sono -13V e +13V [NdE gli UART utilizzano un protocollo simile chiamato TTL (transistor-transistor logic) in cui lo 0 sono 0V e l'1 e' Vcc (5V o 3.3V): l'RS-232 ha un segnale piu' potente].

Lo standard RS-232, poiche' funzionava, e' stato utilizzato per tutto e non solo per la comunicazione tra DCE e DTE. E' quindi normale vedere collegati in RS-232 PC, stampanti, plotter, server Unix ed altro ancora in varie combinazioni. Anche le recenti schede Arduino (che cito soprattutto perche' sono italiane) utilizzano il classico protocollo seriale. Ogni periferica ha una sua particolare idea di come funziona lo standard RS-232, ritiene infatti di essere un DTE o un DCE ed utilizza un certo numero di segnali (o anche nessuno e si accontenta di un cavo a soli due poli che serve a trasmettere il segnale dei dati "standard RS-232").

Cosa ne pensa una periferica dello standard RS-232 lo si legge sul suo manuale (a volte e' scritto, spesso non si capisce) oppure lo si sperimenta.

Per far si' che tutto funzioni e' necessario far credere ad una periferica DTE di stare parlando con un DCE e viceversa.

Questo si realizza modificando i cavi di collegamento tra le due periferiche invertendo, sopprimendo o inventando segnali in modo da rendere completa l'illusione.

Il futuro? In realta' nell'informatica non si butta mai via nulla... le connessioni RS-232 nate nel 1962 sono comunque ancora presenti anche se i PC attuali non hanno piu' da tempo i connettori seriali DB9 (ma e' sempre possibile convertire il segnale su un cavo con connettore USB). Ad esempio le connessioni RS-232 sono le piu' utilizzate in ambito industriale nei PLC (programmable logic controller). Dal punto di vista degli standard, per superare i limiti dell'RS-232, sono nati prima l'RS-422 (che utilizza coppie di fili per trasmettere il segnale, consente distanze molto piu' lunghe ed ha meno problemi di interferenza) e l'RS-485 (che permette la connessioni multidrop e non solo 1-1). Lo standard RS-232 prevede tensioni fino a 15V ma in realta' e' molto piu' comodo generare tensioni 0-5V e quindi si usano queste. RS-485 e RS-422 hanno specifiche tecniche molto simili e spesso si utilizza il nome RS-422 quando in realta' si tratta di un RS-485. Non si dovrebbe ma a volte si converte un segnale RS-422 o RS-485 a RS-232 togliendo un filo. Semplice no?

 

Caratteristiche fisiche

Teoricamente nello standard sono state previste in dettaglio impedenze, voltaggi, lunghezze di cavi, ... In generale fino ad una decina di metri funziona sempre tutto!

Tra gli elementi importanti dello standard vi e' quello che e' possibile porre in corto circuito qualsiasi elemento senza che il dispositivo ne risenta.

Il voltaggio, positivo o negativo, e' in genere limitato a circa 12 Volt. Quindi di solito non si prende la scossa (attenzione alla massa).
Come direbbe il famoso detective: elementare Watson, l'RS-232 non e' un Serial Killer.

 

Collegamenti

I principali collegamenti utilizzati sono le prese DB 25 pin M/F, DB 9 pin M/F ed RJ12. La presa RJ12 e' quella del telefono (collegamento all'americana), per sapere com'e' fatta una presa DB guardate sul retro del vostro PC. Per riconoscere il sesso della presa (M/F) e sufficiente un po' di immaginazione!

I collegamenti sono i seguenti:

DB25 pin

DB9 pin

RJ12

1 HEART 1 CD 1 bianco Tx
2 Tx 2 Rx 2 nero Rx
3 Rx 3 Tx 3 rosso GND
4 RTS 4 DTR 4 verde GND
5 CTS 5 GND 5 giallo DTR
6 DSR 6 DSR 6 blu DSR CD
7 GND 7 RTS loop RTS CTS
8 CD 8 CTS
20 DTR 9 Ring  
22 Ring    

Segnali

I segnali definiti sull'RS-232 sono:

Segnale

Descrizione

DTR

Data Terminal Ready - Il DTE e' pronto

DSR

Data Set Ready - Il DCE accetta la connessione

RTS

Ready To Send - Il DTE e' pronto

CTS

Clear To Send - Il DCE da il permesso a trasmettere

...  

In alcuni casi e' presente una massa comune (HEART) o presa a terra.

Il protocollo dei segnali prevede la sequente sequenza:

DTE 			DCE
 

DTR
			DSR

RTS
			CTS

CD

Tx 			Rx
Rx 			Tx

Nomenclatura

La nomenclatura dei segnali RS-232 e' a volte differente. Spesso sui modem (sempre parlando con tecnici Telecom) sono utilizzati i segeunti nomi:

Segnale

Alias

DTR

108

DSR

107

RTS

105

CTS

106

Tx

103

Rx

104

CD

109

La tipica imprecazione dei telefonisti e' "non vedo il 109".

Dimmi chi sei ...

Alcune apparecchiature hanno un sesso ed un comportamento ben definito. Dato il sesso ed il comportamento si puo' predisporre un cavo ed un settaggio di parametri appropriato. Vediamo gli esempi piu' comuni:

 

Controllo dei segnali

Il mini tester consente di controllare i segnali presenti su una linea RS-232. I segnali riportati sono: Tx, Rx, RTS, DSR, CD, CTS, DTR.

Il colore verde dei led indica un voltaggio negativo, il colore rosso indica un voltaggio positivo. Ovviamente un led spento indica la mancanza del segnale.

Con il minitester e' possibile controllare lo stato dei segnali presenti e l'avvenire della comunicazione. E' cosi' possibile riconoscere il tipo di periferiche collegate ed eventuali problemi sui cavi.

Con un normalissimo tester si possono controllare le tensioni su tutti i collegamenti (ma e' scomodo).

Infine un datascope consente di vedere tutto, compresi i dati che passano analizzando eventualmente i protocolli utilizzati (SDLC o altri). Il datascope e' comunque un lusso.

 

Alcuni collegamenti di esempio

Alcune situazioni vengono risolte con cavi sempre uguali. Riportiamo i piu' comuni.

 

Il cavo dritto

Caso tipico: collegamento verso un modem.

Cavo: 2x2, 3x3, 4x4, 5x5, 6x6, 7x7, 8x8, 20x20, 22x22 (insomma tutto dritto)

Il cavo incrociato

Caso tipico: collegamento tra due PCs.

Cavo: 2x3, 3x2, 7x7, (cosi' si invertono Tx ed Rx)

Il collegamento in loopback

Caso tipico: prova della seriale su PC.

Cavo: 2x3, 3x2, 4x5, 5x4, 6x20, 20x6 tutti in sullo stesso lato (cosi' ci si risponde da soli)

 

Altri casi

In alcuni casi una periferica si aspetta una risposta ad un proprio segnale. Ad esempio quando alza il RTS si aspetta come risposta un CTS, altrimenti non trasmette. Se l'apparecchiatura cui e' collegata non gestisce tale segnale la comunicazione non potrebbe avvenire. Per risolvere il problema e' sufficiente, sul lato della periferica pignola, collegare l'RTS al CTS fornendo cosi' il segnale di risposta.

 

Supponiamo di essere una macchina Unix con alcune porte seriali che riceve connessioni dall'esterno. E' importante ricordare che il CD indica la presenza della linea. Se la linea cade e siamo connessi ad una linea switched (che e' un bel modo per dire che siamo connessi ad una normalissima linea telefonica) e' necessario chiudere la sessione corrente gestendo i relativi segnali (per sapere come fare leggetevi il man stty nella sezione di descrizione del trattamento dei segnali, se lo capite spiegatelo anche a me!). Altrimenti al prossimo collegamento potrebbe avvenire che il nuovo venuto si collega sulla sessione precedente. (Tralasciamo ogni discorso sulla sicurezza delle connessioni seriali ...)

 

Supponiamo di essere una macchina che effettua collegamenti verso l'esterno su una linea switched: terminata la sessione RICORDARSI DI CHIUDERE IL COLLEGAMENTO gestendo gli opportuni segnali. Le bollette del telefono possono essere salatissime!!

 

La magica cassetta del tecnico RS-232

Per fare gli esperimenti desdcritti sopra e' necessario disporre di una serie di strumenti che sono contenuti nella magica cassetta del tecnico RS-232.

E se non avete la cassetta del tecnico RS-232? Beh, quanto descritto vale comunque e con le informazioni fornite potete collezionare strumenti di fortuna, quali cavi avanzati, tester, oscilloscopi, datascope, ..., per preparare una vostra cassetta del tecnico RS-232!

La cassetta contiene:

Localizzazione della cassetta: quando serve non c'e'. Quando non serve e' in ufficio nel ripostiglio (aprite lentamente la porta per evitare di essere sommersi da schede di PC e da giocattoli).

Riferimenti

E' possibile trovare molta documentazione al riguardo.

Ritengo tuttavia che due manuali possano riassumere tutte le informazioni necessarie:


Testo: Il magico mondo RS232
Data: 7 Febbraio 1997
Versione: 1.0.4 - 14 Febbraio 2012
Autore: mail@meo.bogliolo.name