Sei sulla pagina 1di 10

La porta UART f.b.

09/2007

In parte tratto da: L’interfaccia seriale RS232 - Versione 2.1a - Luglio 2001
Copyright © 2001, Vincenzo Villa, Casatenovo (LC), Italy.

La porta UART o Universal Asynchronous Receiver-Transmitter (ricevitore-


trasmettitore asincrono universale) è un circuito hardware che serve alla
comunicazione dati. Per i microprocessori è un apposito circuito integrato,
mentre nei microcontrollori è contenuto internamente.

La comunicazione che avviene attraverso la UART è di tipo SERIALE e ASINCRONO

SERIALE significa che i bit che costituiscono l’informazione sono trasmessi uno alla volta su di
un solo filo. Questo termine è in genere contrapposto a "parallelo": in questo caso i dati sono
trasmessi contemporaneamente su più fili, esempio 8, 16 o 32.
Parlando astrattamente si potrebbe pensare che la trasmissione seriale sia intrinsecamente più
lenta di quella parallela (su di un filo possono passare meno informazioni che su 16). In realtà
questo non è vero in assoluto, soprattutto a causa della difficoltà di controllare il disallineamento
temporale tra i vari segnali dei molti trasmettitori in un bus parallelo, e dipende dalle tecnologie
adottate: ad esempio in una fibra ottica, in un cavo ethernet, USB o FireWire (tutti standard
seriali) le informazioni transitano ad una velocità paragonabile a quella di un bus PCI a 32 fili. In
questa nota applicativa si parlerà solo di interfacce seriali "lente" cioè gestibili da PC e
microcontrollori "normali".
ASINCRONO significa che i dati sono trasmessi senza l’aggiunta di un segnale di clock, cioè di
un segnale comune che permette di sincronizzare la trasmissione con la ricezione. Dalla
mancanza di clock consegue ovviamente che devono essere stabiliti un ben preciso inizio del
pacchetto e la durata del singolo bit trasmesso. I pacchetti devono poi essere adeguatamente
distanziati tra loro.

UNITA’ DI MISURA E PARAMETRI


Le unità di misura della velocità di trasmissione sono essenzialmente due: il baud rate ed il
bit per secondo (bps), spesso trattate erroneamente come sinonimi.
Il baud rate indica il numero di transizioni al secondo che avvengono sulla linea; il bps indica,
come dice il nome, quanti bit al secondo sono trasmessi lungo la linea. Nel caso di trasmissione
binaria (un solo livello alto ed uno basso) le due cose ovviamente coincidono, da cui la parziale
equivalenza dei due termini. Nel caso di trasmissioni a più livelli, invece, è possibile trasmettere
con una sola transizione più bit: se per esempio posso trasmettere otto diversi valori di tensione
tra 0 ed 7 volt, con un solo valore di tensione invio tre bit (0V = 000, 1V = 001, 2V = 010…) ed
in questo caso una trasmissione a 1000 baud equivale ad una a 3000 bps.
In questa nota si parlerà solo di segnali binari, quindi il baud rate (pari all'inverso della durata
di un bit) coincide numericamente con il bps.
Velocità di trasmissione standard sono: 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,
57600 e 115200 bps. La durata del singolo bit è l’inverso dei bps, ad esempio in una trasmissione
a 9600 bps il singolo bit dura 1s/9600 pari a circa 104µs.

Il numero di bit del DATO trasmesso è normalmente 8, ma si possono avere anche dati con
un numero diverso di bit (6, 7 o 9).

Il controllo di parità è opzionale ed è eventualmente costituito da un bit aggiuntivo per


verificare la correttezza del dato ricevuto. Il bit di parità quindi può non esserci (N=none), ma
se presente può essere di tipo pari (E=even) o dispari (O=odd)

L’inserimento di uno o più bit di Stop è necessario per separare un pacchetto dati dal
successivo. Il numero di bit di STOP è il modo per indicare quanto tempo deve intercorrere
come minimo tra un dato e un altro. I bit di Stop possono essere 1, 1.5, oppure 2.

1
CONFIGURAZIONE DELLA UART
Prima di essere utilizzata la UART necessita di una inizializzazione software, nella quale si
specificano i parametri di utilizzo della UART stessa.
Ovviamente, trattandosi di software, le istruzioni da fornire dipendono dal linguaggio utilizzato.
Ad esempio, in Visual Basic fissare la proprietà settings dell’oggetto MSComm a “9600,N,8,1”
significa Velocità=9600bps, Parità=nessuna, 8 bit di dato, 1 bit di Stop.
Un altro esempio in QBasic: aprire la COM con l’istruzione OPEN “COM1:19200,E,7,2” equivale
a Velocità=19200bps, Parità=pari, 7 bit di dato, 2 bit di Stop.
Ultimo esempio relativo al CCS C Compiler per i microcontrollori Microchip PIC: per configurare
la UART interna a “19200, N, 8, 2” va inserito il relativo richiamo alle librerie
#use RS232(BAUD=19200, PARITY=N, BITS=8, STOP=2)

COME E’ FATTO UN SEGNALE IN USCITA DALLA UART


La cosa più semplice per descriverlo è partire con un esempio.
Nell’immagine che segue è visualizzato cosa appare collegando un oscilloscopio ad un filo su cui
transita un segnale di una UART inizializzata a “9600, N, 8, 1”.

Nell’esempio si possono notare alcuni particolari e fare alcune considerazioni:


ƒ Il segnale ha livelli logici di tipo TTL, con “0” logico pari a 0V e “1” pari a 5V.
ƒ Il segnale si trova inizialmente a “1” logico e così deve ritornare dopo il pacchetto.
ƒ La durata di un singolo bit è 1s/9600 pari a circa 104µs
ƒ La trasmissione inizia con un bit di Start, a “0”.
ƒ Gli 8 bit del Dato sono nell’ordine dal meno significativo LSB (Bit 0) al più significativo
MSB (Bit 7)
ƒ Non vi è bit di parità
ƒ Vi è alla fine un bit di Stop, a “1”.
ƒ I bit trasmessi realmente sono più di quelli del dato, in quanto sono presenti almeno un
bit di Start e uno di Stop. Quindi la trasmissione di un byte comporta la reale spedizione
di almeno 10 bit. Ad esempio, su una UART a 9600bps possono transitare al massimo
circa 1000 byte al secondo.
Finito il pacchetto, vi può essere la trasmissione di un nuovo pacchetto, con le stesse modalità e
in modo asincrono rispetto al precedente.
Un segnale di questo tipo, a livelli TTL, non si presta ad essere trasmesso a grandi distanze, in
quanto risulta sensibile ai disturbi. I livelli di tensione corrispondenti ai livelli logici devono quindi
essere modificati per rendere il segnale più immune al rumore e adatto alla trasmissione su
lunghe distanze a velocità accettabile.
Il modo più semplice per migliorare l’immunità al rumore è quello di distanziare in tensione i
livelli e renderli uno positivo e l’altro negativo rispetto a massa. Lo standard RS232 adotta questo
tipo di soluzione.
Un altro modo, più efficace, per migliorare la trasmissione è usare segnali bilanciati o
differenziali. Questa soluzione è adottata negli standard RS422 e RS485.

2
Lo standard RS232
L'interfaccia seriale RS232 è uno standard costituito da una serie di protocolli meccanici,
elettrici ed informatici che rendono possibile lo scambio di informazioni a bassa velocità tra
dispositivi digitali.
Lo standard nacque nei primi anni '60 per opera della Electronic Industries Association (EIA) ed
era orientato alla comunicazione tra i mainframe e i terminali attraverso la linea telefonica,
utilizzando un modem. Esso includeva le caratteristiche elettriche dei segnali, la struttura e
temporizzazioni dei dati seriali, la definizione dei segnali e dei protocolli per il controllo del flusso
di dati seriali su un canale telefonico, il connettore e la disposizione dei suoi pin ed infine il tipo e
la lunghezza massima dei possibili cavi di collegamento.
Nel corso di questi oltre 40 anni lo standard si è evoluto pur mantenendosi in larga parte
invariato. L'evoluzione è riconoscibile dalla sigla, leggendo l'ultima lettera. Probabilmente la
versione più diffusa è la RS232c, del 1969, corrispondente alle specifiche europee CCITT
raccomandazione V.24
Pur essendo un protocollo piuttosto vecchio, attualmente la RS232 è ancora largamente
utilizzata per la comunicazione a bassa velocità tra microcontrollori, dispositivi industriali ed altri
circuiti relativamente semplici che non necessitano di particolare velocità; è invece praticamente
scomparsa in ambito "desktop", ambito nel quale lo standard è nato per la comunicazione tra un
computer ed un modem.
L'interfaccia RS232 utilizza un protocollo seriale asincrono; il segnale elettrico è non
bilanciato; il collegamento è ci tipo point-to-point; permette una comunicazione di tipo
full-duplex.
Un segnale non bilanciato (o single ended) è caratterizzato dal fatto che la tensione associata
al bit trasmesso o ricevuto viene misurata rispetto ad un riferimento comune detto massa. Nel
caso dei segnali RS232 questa tensione può essere sia positiva che negativa.
Una trasmissione è di tipo point-to-point quando nella comunicazione è presente, per ciascun
segnale utilizzato, un solo trasmettitore ed un solo ricevitore; tale termine può essere
contrapposto a bus o multi-point, che indica la situazione in cui, a fronte di un trasmettitore,
esistono più ricevitori.
I due termini Half-duplex e Full-duplex fanno riferimento alla situazione in cui due dispositivi
si scambiano informazioni tra di loro, comportandosi entrambi sia da sorgente di informazioni (in
sigla, Tx) sia da ricevitore (in sigla, Rx).
Half-duplex indica che la trasmissione è bidirezionale ma non contemporanea nei due versi: in
un determinato istante uno solo dei due dispositivi emette segnali, l'altro ascolta. Quando è
necessario, si scambiano di ruolo.
La trasmissione Full-duplex indica che la trasmissione è bidirezionale e contemporanea. In
questo caso sono necessari due fili, uno per ciascun verso di trasmissione.
Se la trasmissione è sempre in un solo verso, si parla di Simplex.
Lo standard RS232 permette tutte e tre queste modalità di funzionamento in quanto è utilizzato
un conduttore separato per ciascun verso di trasmissione. In genere nel caso di trasmissione
duplex è necessario che i dati in trasmissione e ricezione abbiano lo stesso formato e la stessa
velocità.

COME E’ FATTO UN SEGNALE RS232


Anche in questo caso, la cosa più semplice per descriverlo è partire con un esempio, lo stesso
analizzato in precedenza per la UART

3
L’ampiezza del segnale è caratterizzata da un valore "alto" pari a circa +12V (che può variare
da +3V a +15V) ed un valore "basso" pari a circa –12V (che può variare da -3V a -15V). Da
notare che, nello standard RS-232 un segnale alto rappresenta lo “0” logico ed uno basso un “1”,
come indicato nel disegno e rovesciato rispetto al "comune pensare".
A volte il segnale positivo (cioè lo “0” logico) è indicato come space ed quello negativo (cioè “1”
logico) come mark.
Come collegare una porta TTL o CMOS alla RS232
In genere i segnali utilizzati dai sistemi digitali sono "TTL compatibili", cioè variano tra 0 e 5V,
oppure variano tra 0 e 3,3V: non sono quindi direttamente compatibili con la standard RS232. In
commercio esistono appositi traslatori di livello che hanno il compito di fornire sia in trasmissione
che in ricezione gli opportuni livelli pur non modificando la struttura logica del segnale trasmesso.
Il MAX232 (ed integrati simili, fatti da un po' tutti i produttori di semiconduttori) è un circuito
integrato che permette il collegamento tra logica TTL o CMOS a 5V e le tensioni RS232, partendo
solo da un'alimentazione a 5V.
Per ottenere la tensione positiva e negative necessarie per il funzionamento dell'integrato è
usata una configurazione a pompa di carica, costituito da circuiti interni all'integrato e quattro
condensatori esterni. La capacità dipende dal tipo di integrato e dalla relativa frequenza di
commutazione, e può essere di 100nF oppure 1µF. La sezione ricevente del MAX232 è costituita
da due porte invertenti che accettano in ingresso una tensione di +/- 12V (o altra tensione
compatibile allo standard RS232) ed in uscita presentano un segnale TTL compatibile.
La sezione trasmittente ha due driver invertenti con in ingresso TTL compatibile e capaci di
erogare a vuoto una tensione di poco meno di +/- 10V, compatibile con lo standard RS232.

La piedinatura del connettore RS-232 del PC


Nei PC sono disponibili due tipi di connettori RS232: DB9 (9 pin) e DB25 (25 pin); ambedue i
connettori sono maschi e praticamente identici dal punto di vista funzionale.
La tabella indica i nomi dei segnali, il numero dei pin e la direzione del segnale.

Sigla DB25 DB9 I/O Nome


TXD 2 3 O Dati trasmessi
RXD 3 2 I Dati ricevuti
RTS 4 7 O Request To Send
CTS 5 8 I Clear To Send
DTR 20 4 O Data Terminal Ready
DSR 6 6 I Data Set Ready
Nei PC più recenti sono utilizzati solo
RI 22 9 I Ring Indicator
connettori DB9 (quando ci sono); oggi lo
standard RS232 tende ad essere relegato DCD 8 1 I Data Carrier Detect
solo in ambiti industriali e ad essere GND 7 5 - Massa
sostituito dallo USB).
- 1 - - Terra

Perché tanti fili ?


In teoria per ricevere e trasmettere un segnale RS-232 bastano tre fili: ricezione, trasmissione
e massa. Spesso è vero anche in pratica.
Gli altri fili (spesso opzionali) servono per il cosiddetto handshake tra PC e periferica (o tra PC e
PC) cioè per sincronizzare in hardware la comunicazione.
Sono presenti due coppie di fili:
RTS/CTS: quando il PC inizia la trasmissione pone RTS alto, la periferica risponde quando
pronta ponendo CTS alto. Per interrompere la trasmissione la periferica pone CTS basso.
DTR/DSR: Quando il PC è collegato per la prima volta, pone alto DTR. La periferica risponde
ponendo alto DSR
Purtroppo questo modo di procedere ha un’infinità di variazioni. La parola d’ordine è:
arrangiarsi per tentativi!

4
Gli standard RS422 e RS485 f.b. 09/2007

In parte tratto da: Le interfacce RS422 e RS485- Versione 2.0g - Settembre 2001
Copyright © 2001, Vincenzo Villa, Casatenovo (LC), Italy.

Questo documento illustra gli aspetti principali di due standard di trasmissione digitale
differenziale spesso utilizzati per trasmissioni seriali in ambiente industriale: RS422 e RS485. La
scelta di descrivere nello stesso documento queste due interfacce deriva dal fatto che sono molto
simili tra loro ed in alcune applicazioni intercambiabili.
Questi standard si riferiscono esclusivamente agli aspetti elettrici del segnale e ignorano
completamente ogni descrizione del significato delle tensioni trasmesse.
Sia RS422 che RS485 sono due sistemi bilanciati o differenziali.
In essi la tensione associata alla trasmissione di un singolo bit è misurata come differenza di
potenziale tra due fili, tra loro identici e pilotati da trasmettitori con la stessa impedenza di
uscita: se la tensione è maggiore su un filo rispetto all'altro il valore logico è associato ad uno
zero, se è minore ad un uno. Non ha invece nessuna importanza la tensione dei due fili rispetto a
massa.
Il sistema offre notevoli vantaggi
Il valore logico è associato alla differenza di potenziale tra due fili: il potenziale assoluto della
massa è quindi teoricamente ininfluente. In questo modo, anche se sul filo di massa scorrono
correnti e quindi si creano differenze di potenziale, non si generano effetti sui valori logici.
Si usa dire che un sistema di trasmissione differenziale non è sensibile alla tensione di modo
comune, definita come la media della tensione dei due fili che trasportano il segnale misurata
rispetto alla massa locale.
Visto che la coppia di fili su cui il segnale viaggia è costituita da un "doppino" pilotato da
trasmettitori con la stessa impedenza di uscita, i disturbi sono fortemente attenuati.
Vi sono ovviamente anche degli svantaggi
È necessario prevedere un numero doppio di conduttori: per ogni singolo segnale servono due
fili, oltre alla massa comune a tutti i segnali ed in genere necessaria.
Sono richiesti driver e ricevitori più complessi. Utilizzando circuiti integrati appositamente
studiati e largamente diffusi, questo problema è però facilmente superabile.

Lo standard RS422
Questo standard è stato originariamente proposto per la trasmissione di segnali digitali fino a
10 Mbit/s su distanze fino a circa 1200 m. Usando integrati moderni è possibile superare i limiti
imposti dallo standard sia in termini di velocità che di distanza.
Lo standard RS422 prevede che ciascuna linea differenziale sia pilotata da un driver. I ricevitori
possono essere fino a 10, ma è più comune l'utilizzo dello standard nelle comunicazioni punto-
punto, cioè per collegare un singolo trasmettitore (Tx) ad un singolo ricevitore (Rx), come
rappresentato nello schema.

Quando il terminale A è negativo rispetto a B, la linea rappresenta un “1” binario. Quando


invece il terminale A è positivo rispetto a B, la linea rappresenta uno “0” binario.
Nell’altra figura viene mostrato l'andamento idealizzato dei segnali sui due fili A e B: come si
vede si tratta di due segnali tra loro in opposizione di fase. Nell'immagine sono mostrati come
variabili tra zero ed una tensione positiva. La tensione differenziale è quella che effettivamente
trasmette l'informazione ed è positiva o negativa in funzione del livello logico trasmesso.

5
Da notare che in molte realizzazioni il terminale A è identificato come – (meno) ed il terminale B
come + (più) oppure con altri nomi in cui è evidenziato, anche graficamente, che hanno sempre
valori logici opposti.

All'uscita del trasmettitore la differenza di potenziale tra le linee A e B deve essere di almeno 4
V e la tensione di modo comune deve essere minore di 7 V (normalmente una linea vale circa 0 V
e l'altra circa 5 V). Il ricevitore deve essere in grado di interpretare correttamente lo stato della
linea quando la differenza di potenziale è superiore in modulo a 200 mV.
Nel caso di realizzazioni industriali, la topologia più frequente prevede due dispositivi collegati
tra loro attraverso due coppie di cavi (oltre la massa), una per ciascun verso di trasmissione del
segnale; in questo caso è possibile realizzare una comunicazione full-duplex: ciascuno dei due
dispositivi dispone di un trasmettitore e di un ricevitore e può quindi contemporaneamente
ricevere e trasmettere dati.

Lo standard RS485
La differenza sostanziale con la RS422 è il supporto delle linee multi-drop, cioè linee in cui
coesistono più ricevitori e trasmettitori sulla stessa coppia di fili. Al fine di evitare conflitti è
ovviamente necessario che un solo trasmettitore alla volta sia attivo. Questo implica l'uso di
trasmettitori che, oltre alle uscite corrispondenti a “0” e a “1”, possano gestire anche un "terzo
stato" in cui l'elettronica appare come fisicamente non collegata alla linea (stato detto ad alta
impedenza, three-state o Hi-Z).
I ricevitori possono invece essere tutti attivi contemporaneamente ed in genere lo sono
effettivamente.
La topologia più usata con questo protocollo è quella a due fili (oltre alla massa) rappresentata
nello schema seguente. Questa connessione permette la trasmissione Half-duplex bidirezionale
(ma ovviamente non contemporanea) tra due o più nodi che, dal punto di vista elettrico, sono tra
loro equivalenti.

La sezione rice-trasmittente di ciascuno dei nodi è evidenziato nella figura da un rettangolo blu.
Le connessioni verso la linea di trasmissione sono costituite semplicemente dai due terminali A
e B comuni sia alla sezione di ricezione che a quella di trasmissione e dalla massa. Possono
essere ovviamente presenti dei moduli dotati del solo ricevitore o, caso meno probabile, del solo
trasmettitore. Il collegamento di terra non ha funzioni nella trasmissione ma è richiesto.
Ciascun modulo trasmettitore deve possedere verso il dispositivo digitale un ingresso dati e un
ingresso di abilitazione alla trasmissione, pilotato localmente, che permette di disabilitare il
trasmettitore quando non serve: al fine di evitare conflitti è necessario prevedere un qualche
meccanismo che impedisca l'attivazione contemporanea di più trasmettitori oppure sia in grado
rilevare tali conflitti ed intervenire opportunamente. I driver RS485 sono comunque progettati per
non riportare danni anche in caso di corto circuito permanente, limitando la corrente massima a
250 mA.
Nello schema disegnato è previsto anche un segnale di abilitazione del ricevitore, sebbene
spesso non necessario: è infatti possibile lasciare tutti i ricevitori sempre attivi oppure collegare
insieme i due ingressi di abilitazione essendo normalmente attivi su livelli logici opposti.
Lo standard originario permette la connessione di massimo 32 ricevitori ma utilizzando integrati
a basso assorbimento tale limite può essere abbondantemente superato.

6
Problemi connessi alla trasmissione su linea bilanciata

Adattamento di impedenza
In prima approssimazione, in un sistema digitale il concetto di "linea di trasmissione" che verrà
illustrato in questa pagina deve essere applicato ogni volta in cui la durata di un bit è minore di
10 volte il tempo necessario al segnale a percorrere la distanza tra trasmettitore e ricevitore
oppure il tempo di salita dei segnali è maggiore di 5 volte il tempo di trasmissione.
E’ necessario tenere presente che:
• Il segnale elettrico si propaga nei conduttori ad una velocità finita, prossima a 2/3 di quella
della luce.
• Ciascun cavo è caratterizzato da parametri elettrici di tipo distribuito sintetizzabili con
l'impedenza caratteristica Zo, un valore puramente resistivo indipendente dalla lunghezza del
cavo, dato dal produttore.
• Se la resistenza di uscita di un trasmettitore e la resistenza di ingresso di un ricevitore non
sono uguali all'impedenza caratteristica della linea usata, si generano riflessioni del segnale
cioè, si scusi il paragone poco preciso, il segnale "torna indietro" quando raggiunge la fine del
cavo, causando interferenze non trascurabili. Si usa dire, per indicare l'uguaglianza delle tre
resistenze, che le linee di trasmissione devono essere "adattate" oppure "terminate",
operazione che si riduce il più delle volte all'aggiunta di uno o più resistori.
Per decidere se tale operazione sia effettivamente necessaria bisogna considerare due
parametri fondamentali: la lunghezza del cavo e la velocità di trasmissione. Una buona regola
empirica che si rifà a quanto detto nell'introduzione afferma che la terminazione non è necessaria
nel caso in cui la durata di un singolo bit è molto maggiore del tempo impiegato dal segnale per
percorrere l'intera linea. Normalmente con il termine un poco scorretto "molto maggiore" si
intende almeno dieci volte più grande.
Come esempio pratico, si consideri una linea di 1200 metri, il massimo previsto dallo standard
RS485. Sapendo che un segnale elettrico si propaga in un cavo tipico a circa 2/3 della velocità
della luce, il tempo impiegato per percorrere tale distanza è approssimativamente 6µs. Se la
trasmissione avviene a 9600 bit/s la durata di un singolo bit è 104µs, valore decisamente
maggiore di 6, e quindi è possibile non terminare la linea senza effetti negativi sulla qualità del
segnale.
Terminazione parallela
Il metodo di terminazione che offre le migliori prestazioni è quello cosiddetto parallelo. Nel caso
di trasmissioni punto-punto, in parallelo al ricevitore ed il più possibile vicino ad esso è necessario
inserire tra i terminali A e B un resistore di valore pari all'impedenza caratteristica della linea Zo.
I valori del resistore, usando i cavi normalmente impiegati per questo scopo, sono compresi tra
100 e 120 ohm.
Nel caso in cui è presente un solo trasmettitore e più ricevitori sulla stessa linea è necessario
mettere il trasmettitore ad un estremo della linea e l'unica resistenza di terminazione all'estremo
opposto. I ricevitori intermedi non vanno connessi a resistenze aggiuntive.
Le prestazioni di questo tipo di terminazione sono molte buone dal punto di vista elettrico ma
hanno il problema di richiedere un elevato assorbimento di corrente: considerando la situazione
normale con una resistenza di 100 ohm ed una tensione differenziale di 5 V, il trasmettitore deve
generare una corrente di 50 mA oltre a quella assorbita dai ricevitori.
Un secondo problema legato alle linee multi-drop deriva dal fatto che le connessioni tra i nodi
centrali ed il bus (i cosiddetti stub) devono essere mantenuti il più breve possibile in quanto non
è possibile inserire su ciascuno di essi un resistore di terminazione.

La polarizzazione
La polarizzazione è una necessità che riguarda i sistemi di trasmissione in cui è possibile
disattivare i driver: in particolare deve quindi sempre essere tenuto presente nelle reti RS485.
Quando tutti i driver sono sconnessi dal bus il livello logico è indeterminato e questo può
causare falsi segnali sui ricevitori a causa della fluttuazione casuale della tensione indotti dai
disturbi esterni. In sistemi reali questa situazione è molto frequente in quanto è necessario
lasciar trascorrere un certo lasso di tempo tra la disconnessione di un trasmettitore e la
connessione di un altro, al fine di evitare conflitti.

7
La soluzione normalmente adottata è quella rappresentata nello schema seguente: vengono
aggiunte due resistenze di polarizzazione Rb in modo tale che formino un partitore resistivo che
mantenga la differenza di potenziale tra i terminali A e B ad un valore di 200 mV nel caso in cui
tutti i trasmettitore lungo la linea siano disattivati.
Le connessioni rappresentate sono tali che il terminale A è a
potenziale minore, cioè il livello logico corrisponde allo stato di
riposo.
Valori tipici per i resistori sono Zo=120 ohm, Rb=820 ohm.

La selezione dei cavi


La selezione dei cavi è un aspetto spesso trascurato ma che
nelle installazioni che richiedono alte velocità e grandi distanze
è di fondamentale importanza.
Il cavo richiesto per le connessioni RS422 ed RS485 è
costituito da un doppino.
Un doppino (twisted pair) è costituito da una coppia di fili tra
di loro attorcigliati in modo da formare una decina di spire per ogni metro. L'esempio più noto è
forse il doppino bianco/rosso usato negli impianti telefonici da cui il nome spesso usato di
"doppino telefonico".
Se usato in configurazioni differenziali è il metodo migliore per ridurre le interferenze.
I disturbi trasmessi tra due conduttori generici possono essere classificati in due modi:
• Trasmessi per effetto delle capacità parassite: dati due fili tra di loro isolati, si forma una
struttura simile ad un condensatore (due conduttori separati da un dielettrico).
• Trasmessi per effetto induttivo: dato un filo in cui scorre corrente viene generato un campo
magnetico. Se è presente un secondo conduttore che forma una spira chiusa, viene generata
una tensione se il campo magnetico è variabile.
Il doppino permette di ridurre entrambi questi effetti:
Per gli accoppiamenti capacitivi, possiamo pensare che la sorgente del disturbo (nell'immagine
un cavo di alimentazione a 220V, di colore blu) sia separata dai due fili del doppino dai due
condensatori C1 e C2 tra di loro uguali in quanto il sistema è sostanzialmente simmetrico. La
corrente che scorre in C1 e C2 è quindi uguale e, se le impedenze di uscita dei due generatori
collegati al doppino sono tra di loro uguali, anche il cambiamento di tensione è uguale.
Trattandosi di un sistema differenziale in cui ha importanza la differenza di potenziale tra il filo
giallo e quello bianco, l'influenza è quindi nulla.

Si consideri ora un campo magnetico uniforme, rappresentato nella figura seguente da linee
verticali dirette verso l'alto, che attraversa le spire del doppino. La tensione indotta è innanzitutto
proporzionale all'area compresa tra i due fili: essendo questi molto vicini in quanto attorcigliati tra
loro, questa tensione è piccola. Si consideri inoltre che le linee del campo rappresentate in figura
di colore nero attraversano la "spira" in un verso, mentre quelle rosse nel verso contrario: la
tensione indotta ha quindi verso opposto nelle due spire e quindi il contributo totale è nullo.
L'uso di cavi attorcigliati è quindi praticamente l'unica richiesta
nella specifica dei cavi.

La protezione
Le linee che trasportano segnali RS485 si trovano spesso ad
essere usate in ambienti industriali grazie alla loro ottima
immunità ai disturbi di origine esterna. In questi ambienti è
possibile che accidentalmente i circuiti vengano a contatto con
tensioni e/o correnti molto elevate e tali da mettere a rischio la
funzionalità dei dispositivi che costituiscono la rete.
Nella figura è riportata una protezione di tipo shunt.

8
Le tecniche di shunt si basano sull'uso di componenti che riescono a bloccare la tensione ai loro
capi a valori predefiniti, assorbendo anche migliaia di ampere; dispositivi di questo tipo sono i
MOV, i TRANSIL, gli scaricatori a gas e, con qualche limitazione, i diodi zener generici.

La conversione da RS232 a RS422 e RS485


La conversione da RS232 a RS485
Spesso i trasmettitori ed i ricevitori RS422 sono utilizzati per estendere la portata delle porte
RS232, in genere limitata a pochi metri oppure poche decine se le velocità rimane sotto i 100
kbps. Per fare ciò viene effettuata una semplice conversione dei livelli elettrici conservando per
esempio la classica struttura del byte composto da un bit di start, da 6 a 8 bit di dati ed almeno
un bit di stop .
Per trasmettere un singolo segnale è utilizzata una struttura simile a quella di seguito
rappresentata: il segnale RS232 viene prima convertito in TTL e quindi in RS422; alla ricezione
viene effettuata la conversione opposta. È necessario prevedere almeno due coppie di cavi, uno
per ciascuna direzione, operazione facilitata dal fatto che ciascun circuito integrato contiene a
volte sia il ricevitore che il trasmettitore.

Per il funzionamento del


circuito è richiesta una
alimentazione esterna, in
genere di 5 volt.

La conversione da RS232 a RS485


Spesso è necessario connettere un PC o un microcontrollore ad una rete RS485, quindi è
necessario utilizzare un convertitore da RS232 a RS485.
Anche in questo tipo di applicazione è pratica comune adottare un protocollo che, a livello di
byte, è simile se non identico a quello usato dalle porte di comunicazione RS232. Per poter
effettuare questo tipo di conversione occorre considerare i seguenti aspetti:
• Per la conversione dei livelli dei segnali si usa un circuito simile a quello descritto nel
precedente paragrafo, usando ovviamente driver e ricevitori di tipo RS485.
• È necessario provvedere ad un meccanismo per attivare il trasmettitore solo per il tempo
strettamente necessario alla trasmissione del dato.

La trasmissione è normalmente di tipo


half-duplex dato che è disponibile una sola
coppia di cavi da utilizzare sia per la
trasmissione che per la ricezione.

Il problema più grosso è associato alla


necessità di attivare e disattivare il
trasmettitore. Una soluzione spesso
adottata è quella riportata nello schema
seguente: si utilizza un segnale della porta
Rs232 (nell'immagine in DTR ma potrebbe
essere anche il RTS) e si controlla via
software il suo livello:

• Si attiva il trasmettitore portando basso il segnale DTR (nello schema è presente un


inverter, fatto comune a quasi tutti i ricevitori RS232)
• Si trasmette il byte utilizzando nel modo consueto la porta RS232
• Si disattiva il trasmettitore portando alto il DTR
Non è indicata nessuna connessione per l'abilitazione del ricevitore perché spesso è collegata
direttamente alla linea DTR e quindi è automaticamente disattivato solo durante la trasmissione.

9
Cenni ai protocolli di trasmissione
Esistono numerosi protocolli che utilizzano come layer fisico lo standard RS485: per tutti cito il
CAN (originariamente pensato per applicazioni automobilistiche ma poi affermatosi anche in
ambito industriale) e il profibus (uno standard di fatto in ambito industriale). La descrizione di
questi protocolli va oltre gli scopi di questo documento.

Tipologie di collegamento in applicazioni industriali.

Master-slave
Questa è la configurazione più semplice da gestire quando si lavora con molti dispositivi
connessi alla rete. La struttura è caratterizzata da un master e numerosi slave, ciascuno
individuato da un proprio indirizzo; tutti i dispositivi sono elettricamente identici e deve esistere
un accordo preventivo sulla velocità di trasmissione ed il formato dei byte e dei pacchetti di dati.
Tutti i dispositivi slave sono permanentemente in ascolto sulla rete. Il dispositivo master (per
esempio un PC) è l'unico che può iniziare la trasmissione di dati, inviando un pacchetto
contenente l'indirizzo del nodo slave di destinazione ed il comando. Lo slave a cui il comando è
indirizzato leggerà l'intero pacchetto, eseguirà il comando ed eventualmente risponderà al
master. Gli slave a cui il pacchetto non è indirizzato semplicemente ignoreranno il pacchetto. Non
è ammessa la comunicazione diretta tra due slave ed i pacchetti broadcast (cioè diretti
contemporaneamente dal master a tutti gli slave, quale potrebbe essere un comando di
inizializzazione) sono possibili solo a condizione che non richiedano risposte.
Questo protocollo ha lo scopo di impedire che due trasmettitori vengano attivati in modo
contemporaneo causando conflitti e, se non ci sono errori di trasmissione o interpretazione, lo
scopo è raggiunto grazie al fatto che il master coordina tutte le attività.
Purtroppo sono sempre possibili malfunzionamenti: per esempio, a causa di un errore di
trasmissione, uno slave potrebbe interpretare scorrettamente un indirizzo oppure leggere come
indirizzo ciò che in realtà è un comando o una risposta di un altro slave. È anche possibile che a
causa di un errore di configurazione due slave abbiano lo stesso indirizzo. Per questo è opportuno
prevedere alcune strategie di controllo:
• evidenziare se un byte rappresenta un indirizzo oppure un comando, per esempio imponendo
che uno dei bit di ogni byte trasmesso sia 1 se si tratta di un indirizzo e 0 in tutti gli altri casi
• inserire in ogni pacchetto un byte di controllo del tipo CRC oppure checksum: questo
permette di identificare e scartare pacchetti difettosi. È possibile anche l'utilizzo per ciascun
byte di un "bit di parità" anche se non è una pratica frequente.
• inserire in ogni pacchetto trasmesso l'indirizzo del mittente oltre che del destinatario, al fine di
permettere al master di identificare risposte non richieste.
• se non ci sono particolari problemi di efficienza, utilizzare pacchetti di lunghezza omogenea al
fine di identificare i frammenti dei pacchetti "spezzati".

Multi-master
Questa struttura è finalizzata a realizzare nodi tra loro equivalenti dal punto di vista logico:
ciascun nodo è identificato da un indirizzo univoco e può inviare un pacchetto a qualunque altro
nodo in qualunque momento. Visto che non esiste nessun controllo centralizzato dell'accesso alla
linea sono sempre possibili conflitti nel caso in cui due dispositivi decidano di inviare dati nello
stesso momento.
Al fine di evitare un numero eccessivo di conflitti e comunque ridurre al minimo i danni è
necessario:
• adottare tutti gli accorgimenti di cui al paragrafo precedente
• prima di iniziare una trasmissione verificare che la linea non sia già occupata, verificando che
non ci traffico. Questo metodo produce in ambienti ad alto traffico l'effetto secondario di
picchi di trasmissioni dopo la fine di un pacchetto di grosse dimensioni: è quindi necessario
attendere un certo tempo, possibilmente casuale, dopo la fine di un pacchetto prima di
iniziare una nuova trasmissione.
• è utile "ascoltare" la linea durante la propria trasmissione al fine di identificare sul nascere
eventuali conflitti. L'ideale sarebbe verificare condizioni di corto-circuito misurando la corrente
ma spesso è una soluzione troppo complessa.

10

Potrebbero piacerti anche