TRASMISSIONE DATI SU RETI RS422 – RS485 – RS232 Tipologie di segnali digitali I segnali con cui si ha a che fare nei sistemi digitali sono spesso di tipo single ended o sbilanciati: la tensione è misurata rispetto ad un riferimento comune indicato come massa (o anche come reference o signal ground). Due esempi di tali segnali sono, per rimanere nel campo dei sistemi di comunicazione: •la porta parallela Centronics: tensioni maggiori di 2 V indicano l’uno logico, tensioni minori di 0.8 V identificano lo zero logico, definizioni coincidenti con quelle utilizzate per i segnali TTL •la porta seriale RS232: l'uno logico è identificato da una tensione negativa compresa, in modulo, tra 3 e 15 V e lo zero da una tensione positiva maggiore di 3 V. Per trasmettere un singolo bit usando un segnale sbilanciato è evidentemente necessario usare un solo filo oltre alla massa che è unica e comune a tutti i segnali. I limiti nell'uso di segnali non bilanciati nella trasmissione di informazioni derivano da due considerazioni: •Se è vero, almeno in prima approssimazione, che il potenziale di massa è univocamente definito in un circuito di piccole dimensioni, tale concetto diventa una illusione quando le distanze sono elevate; infatti la corrente, scorrendo nel filo di riferimento, produce differenze di potenziali a causa dell'impedenza elettrica del collegamento. Questo fatto è già abbastanza rilevante in corrente continua (quando occorre tener conto della sola resistenza del cavo) ma è fondamentale quando, usando segnali ad alta velocità, l'induttanza del cavo diviene la l'elemento predominante dell'impedenza. •Lungo un filo di lunghezza non trascurabile la tensione subisce l'influsso casuale e continuamente variabile dei disturbi esterni: il ricevitore quindi osserva un segnale digitale sovrapposto a "rumore" che, se elevato, potrebbe portare ad interpretazioni errate del valore logico. Tale effetto si verifica in modo casuale sia nei confronti del segnale sia nei confronti del riferimento, per di più con diversa intensità considerando che l'impedenza equivalente verso massa è diversa. Una soluzione ad entrambi i problemi è quella di adottare elevate escursioni del segnale al fine di aumentare il rapporto tra segnale e disturbo (p.e. la RS232 prevede escursioni tipiche di 24 V) oppure mantenere corti i i collegamenti (soluzione ovviamente improponibile se i due oggetti da collegare sono fisicamente distanti) oppure ancora usare, almeno per il segnale di riferimento, cavi di elevata sezione (opzione con evidenti impatti negativi e comunque che porta a benefici solo marginali). Il secondo dei due problemi accennati è inoltre parzialmente risolvibile utilizzando cavi schermati. Nei sistemi bilanciati o differenziali 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. Questo metodo permette di superare i due problemi appena descritti: •Il valore logico è associati 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 (Vcm), 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, come descritto in uno dei seguenti paragrafi. Esistono 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 (10 milioni di bit al secondo) su distanze fino a 4000 piedi (circa 1200 m). Usando integrati moderni è inoltre 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 di questo standard nelle comunicazioni punto-punto, cioè per collegare un singolo trasmettitore (Tx) ad un singolo ricevitore (Rx), come rappresentato nello schema. I due stati di ciascuna linea sono definiti nel seguente modo: •Quando il terminale A è negativo rispetto a B, la linea rappresenta un uno binario. Tale stato rappresenta anche l'assenza di segnale (idle state) •Quando il terminale A è positivo rispetto a B, la linea rappresenta uno zero binario Nella figura seguente viene mostrato l'andamento idealizzato dei segnali sui due fili A (in rosso) e B (in blu): 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 (come del resto avviene il più delle volte anche nei sistemi reali) anche se questo non è richiesto dallo standard. La tensione differenziale è quella che effettivamente trasmette l'informazione ed è positiva o negativa in funzione del livello logico trasmesso. Da notare che in molte realizzazioni il terminale A è identificato come - ed il terminale B come + 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. In appendice ho riportato una tabella con tutti i valori elettrici definiti dallo standard. 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 Lo standard RS485 è dal punto di vista elettrico molto simile all'RS422: alcune differenze minori sono riportate nelle tabelle in appendice. La differenza sostanziale è 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 allo zero e all'uno, 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 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, come verrà illustrato nella prosecuzione di questa guida. Ciascun modulo trasmettitore deve possedere verso il dispositivo digitale di un ingresso dati e di 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. Adattamento di impedenza (terminazione) 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. La descrizione dei fenomeni associati alle linee di trasmissione vanno oltre gli scopi di questo tutorial ma, per una comprensione almeno approssimativa è 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 e non misurabile con strumenti hobbistici. •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è, mi 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. Purtroppo non sempre è comodo terminare le linee (non tanto per i costi quanto per il maggior assorbimento di corrente, una attenuazione del segnale, la difficoltà di manutenzione e/o estensione della rete) per cui è prima opportuno chiedersi se tale operazione sia effettivamente necessaria in una specifica applicazione. I due parametri fondamentali da considerare sono ovviamente la lunghezza del cavo e la velocità di trasmissione. Una buona regola empirica che si rifà a quanto detto nell'introduzione alla pagina 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. Questa regola trae origine dal fatto che le eventuali riflessioni vengono attenuate dalla resistenza del cavo stesso e nel volgere di poco tempo divengono trascurabili. Siccome la misura della tensione viene normalmente effettuata dal ricevitore al centro del bit, è possibile trascurare gli effetti delle riflessioni se è trascorso un tempo sufficiente rispetto al fronte del segnale. 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: Se la trasmissione avviene a 9600 bit/s la durata di un singolo bit è 104 us, valore decisamente maggiore di 6, e quindi è possibile non terminare la linea senza effetti negativi sulla qualità del segnale. Se sulla stessa linea la trasmissione fosse effettuata a 115.000 bit/s la terminazione sarebbe invece indispensabile in quanto il singolo bit dura circa 8 us. Infine, se la linea fosse di soli 10 metri, anche a 230.000 bit/s la terminazione potrebbe essere evitata in quanto il tempo impiegato per percorrere il tratto di linea è dell'ordine dai 50 ns e la durata del bit circa 4000 ns 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. Nelle trasmissioni ad alta velocità è opportuno usare resistori di tipo non induttivo, per esempio a carbone. 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. Nel caso di connessioni multi-drop, le resistenze da inserire sono due, anche in questo caso pari ciascuna a Zo. Queste due resistenze vanno poste agli estremi fisici della linea, non necessariamente in corrispondenza di un ricevitore o di un trasmettitore. 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. Tale valore deve essere raddoppiato nelle linee multi-drop in quanto le resistenze sono due. 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 Terminazione serie La terminazione serie è utilizzata nel caso di trasmissioni punto-punto. In questo caso due resistori pari a metà dell'impedenza di linea meno l'impedenza di uscita del trasmettitore sono poste in serie alle due uscite del trasmettitore: in questo modo le riflessioni create dal segnale in corrispondenza del ricevitore sono assorbite appena tornano al trasmettitore. Da notare che molti trasmettitori hanno l'impedenza di uscita prossima a 100 ohm e quindi la terminazione serie è "automaticamente" presente. Il metodo non è applicabile ai sistemi multi-drop in quanto i ricevitori intermedi osservano i segnali riflessi. Terminazione AC La terminazione di tipo AC cerca di risolvere i problemi di assorbimento di corrente della terminazione parallela, particolarmente sentiti per esempio in applicazioni alimentate a batteria. L'idea è quella di inserire in serie al resistore di terminazione un condensatore che ha lo scopo di annullare l'assorbimento di corrente in assenza di trasmissione; il valore può essere calcolato con la formula: Dove Td è il tempo impiegato dal segnale a percorrere il cavo e Zo è l'impedenza caratteristica della linea. Le caratteristiche di questo tipo di terminazione sono di poco inferiori a quelle della terminazione parallela come qualità del segnale ma sono utili solo alle velocità più basse in quanto, salendo in frequenza, l'impedenza del condensatore diviene trascurabile. Valutare la qualità della trasmissione Nel mondo reale non sempre un segnale trasmesso è interpretato correttamente dal ricevitore a causa dei disturbi, delle distorsioni e della imprecisione dei componenti, aspetti inevitabilmente sempre presenti. Una valutazione complessiva del sistema di trasmissione deve tener conto di tutti i componenti e della loro interazione: •L'algoritmo usato in ricezione per riconoscere se un bit è zero oppure uno: è possibile per esempio effettuare un solo campionamento al "centro" del bit oppure un certo numero di campionamenti (3, 5, o più) e quindi decidere "a maggioranza" •La precisione del clock del trasmettitore e del ricevitore •La capacità del ricevitore di impostare correttamente la soglia di discriminazione tra i due valori logici •La qualità del segnale elettrico trasmesso, aspetto che coinvolge sia il trasmettitore che il cavo di trasmissione Tralascio intenzionalmente le tecniche meno "elettroniche" quali la rilevazione degli errori attraverso CRC e le richieste di ri-trasmissione delle informazioni errate piuttosto che la scelta di protocolli capaci di correggere gli errori (FEC). In genere viene usata come unità di misura il BER (tasso di errori di trasmissione, riferito al singolo bit, spesso espresso in percentuale). Esistono appositi strumenti di misura che inviano al trasmettitore stringhe semi-casuali ed effettuano il conteggio degli errori commessi dal ricevitore; non è ovviamente difficile, anche per l'hobbista, realizzare un simile dispositivo utilizzando, per esempio, un personal computer sia come sorgente di dati casuali che come "controllore" della ricezione. L'eye diagram Una valutazione qualitativa più specifica della sola sezione di trasmissione differenziale può essere fatta osservando con un oscilloscopio dotato di ingresso differenziale il cosiddetto eye diagram (diagramma ad occhio). Il nome deriva dal fatto che, con un po' di fantasia, si intravede la forma di un occhio la cui apertura è indice della facilità con cui è possibile individuare correttamente il livello logico. Per utilizzarlo è necessario un trasmettitore che invia dati in modo casuale o comunque abbastanza variabile ed un oscilloscopio con ingresso differenziale. Occorre impostare il trigger dell'oscilloscopio coincidente con la soglia di discriminazione tra 0 e 1 e la base dei tempi sulla lunghezza di due o tre bit. Sullo schermo dell'oscilloscopio deve apparire un'immagine simile alle seguenti, la prima riferita ad un segnale "pulito" e la seconda ad un segnale al limite della possibilità di riconoscimento. Nella prima figura sono chiaramente visibili al centro due "occhi" completi; nella seconda i segnali appaiono molto più confusi, indice di peggiore qualità del segnale. 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. 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 valore logico corrisponde allo stato di riposo. Questa connessione è spesso indicata come fail-safe. La scelta del valore di Rb dipende dalla configurazione della rete e dal numero di nodi connessi. Si consideri il seguente caso: al bus sono collegati 32 ricevitori (ciascuno con un'impedenza di ingresso di 12 kohm); sono inoltre presenti i due resistori di terminazione Zo di 120 ohm. La resistenza complessiva tra le linee A e B è quindi di 120//120//(32 x 12k) cioè circa 52 ohm. Per mantenere 200 mV ai capi di tale resistenza occorre una corrente di poco meno di 4 mA. Considerando una tensione di alimentazione di 5 V, le due resistenze Rb devono allora essere ciascuna di circa: Al fine di evitare fraintendimenti relativamente allo schema rappresentato è opportuno chiarire che: •In una rete RS485 il resistore Zo di terminazione va posto solo sui due nodi agli estremi della rete •Le resistenze di polarizzazione vanno poste solo in punto della rete. Il nodo nel quale sono inserite è irrilevante anche se potrebbe essere comodo farlo sul primo nodo, in corrispondenza di uno dei resistori di terminazione. Si consideri come altro esempio una rete senza le due resistenze di terminazione. In questo caso la resistenza tra le linee A e B causata dalla sola resistenza di ingresso dei ricevitori è di circa 375 ohm, la corrente necessaria è di circa 0.53 mA e quindi le due resistenze di polarizzazione devono essere di circa 4.5 kohm. Molti dispositivi commerciali hanno resistori di polarizzazione già integrati (indicativamente qualche decina di kohm per ciascun nodo) e ciò potrebbe rendere inutile l'aggiunta d resistori esterni nel caso frequente in cui non si usino resistenze di terminazione. 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. In genere sono due i problemi presenti: •Tensioni molto elevate (diversi kV) caratterizzate da una durata estremamente breve (ordine di grandezza del millesimo di secondo). In genere sono conseguenza di cariche elettrostatiche, della commutazione di grossi carichi induttivi, di fenomeni atmosferici o "scintille" in genere. •Tensione minori (centinaia di volt) ma con durata molto lunga, tipicamente generate da guasti che causano un corto circuito tra i cavi che trasportano dati e quelli di alimentazione. Inoltre i disturbi possono essere classificati in due grosse categorie: •Disturbi di modo comune, cioè presenti su tutti i fili e misurati rispetto alla massa locale del circuito. In genere la prima causa di questo tipo di tensioni deriva dall'impossibilità pratica di ottenere collegamenti di massa a bassa impedenza lunghi centinaia di metri, in particolare durante i transitori. •Disturbi differenziali, cioè presenti tra le due linee di dati. Questa situazione si ha per esempio nel caso di un corto circuito tra uno dei fili e un cavo di alimentazione ad alta tensione. L'isolamento galvanico Questo approccio è quello più efficace ed universalmente adottato contro le grosse differenze di potenziale di modo comune. È importante capire che quando si ha a che fare con distanze elevate è impossibile garantire collegamenti a bassa impedenza sia per la resistenza associata al cavi sia, soprattutto, per l'induttanza, decisamente preponderante alle frequenze più elevate. In queste condizioni è sbagliato ritenere che due punti collegati da un cavo siano allo stesso potenziale: in particolare questo è vero per la terra o in genere la massa. Su linee di molte centinaia di metri non è impossibile trovare differenze di potenziale di molte centinaia di volt anche se dalla durata di frazioni di ms Il metodo più usato per garantire l'isolamento in sistemi di trasmissione digitale è l'utilizzo di fotoaccoppiatori cioè di dispositivi che convertono i segnali elettrici in segnali ottici e quindi ancora in segnali elettrici. Le tensioni di modo comune che questi componenti sono in grado di gestire sono dell'ordine di qualche kV, anche per tempi molto lunghi. Anche se non è sempre consigliabile, utilizzando dispositivi optoisolati le linee di trasmissione e il riferimento possono essere di tipo floating, cioè senza alcun riferimento a potenziali esterni alla linea stessa. I principali svantaggi di questo metodo sono: •La relativa lentezza della trasmissione: in funzione dei componenti usati, le velocità difficilmente può raggiungere i 10 Mbit/s. •La necessità di disporre di alimentazioni isolate per i due lati del circuito, impedendo la possibilità di un'alimentazione unica per abbattere i costi. •L'efficacia nulla contro tensioni differenziali (anche se viene comunque garantita la sicurezza dei dispositivi collegati anche nel caso di eventi "catastrofici") Le tecniche di shunt Queste tecniche 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 Tranzorb®, gli scaricatori a gas e, con qualche limitazione, i diodi zener generici. Nei casi più complessi possono essere associati in parallelo dispositivi di tipo diverso, collegando un componente di potenza elevata ma non particolarmente veloce (quale uno scaricatore a gas) ad un altro più veloce. I due dispositivi devono essere connessi tra loro attraverso una resistenza di poche decine di ohm. Le tensioni di soglia dei componenti di protezione devono essere scelte nell'ordine dei 6-8 V e la capacità parassita la più piccola possibile, soprattutto se sono richieste velocità di trasmissione elevate. Pur trattandosi di dispositivi in grado di gestire potenze istantanee di migliaia di watt, gli scaricatori sono poco efficaci nel confronto di differenze di potenziale applicate per lungo tempo, quali quelle causate da un corto circuito con le linea di alimentazione. In questo caso è opportuno collegare su ciascuna linee un fusibile (tipicamente 125 mA, non indicato nello schema), possibilmente del tipo auto-ripristinante. Il montaggio di questi dispositivi richiede che siano installati presso ciascun trasmettitore e ricevitore, e che siano connessi alla terra locale di protezione attraverso un percorso breve ed a bassa impedenza. Un problema legato al collegamento diretto con la terra deriva dal fatto che in questo modo il filo di riferimento della linea RS485 si comporta a sua volta come "collegamento di terra" tra i vari nodi senza essere dimensionato correttamente per questo scopo: è quindi consigliata la connessione dei dispositivi di trasmissione alla terra locale attraverso un resistore, per esempio da 100 ohm - 1/2 W. La combinazione di shunt ed isolamento Si tratta ovviamente dell'insieme dei due sistemi precedentemente descritti. La soluzione in assoluto più sicura è costituita dalla presenza dell'isolamento ottico e di tre scaricatori per ciascun nodo, uno per ciascuna delle due linee di dati ed una per la connessione di riferimento. È richiesta la connessione all'impianto di terra. Una soluzione alternativa, da applicare solo qualora non fosse disponibile un'adeguata connessione di terra, prevede sempre la presenza di tre scaricatori, uno tra ciascuna copia di fili. 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. Infatti lungo il cavo il segnale subisce delle perdite a causa della resistenza non nulla del conduttore e delle perdite dovute al tipo di dielettrico usato per l'isolamento. Il cavo richiesto per le connessioni RS422 ed RS485 è costituito da un doppino cioè di una coppia di cavi attorcigliati su se stessi e posti all'interno di una guaina isolante. Non sono adatti per nessun tipo di applicazione collegamenti realizzati utilizzando cavi non attorcigliati, tranne che tratte di poche decine di centimetri in ambienti non elettricamente rumorosi e a velocità basse. Il primo parametro da considerare è ovviamente il numero di conduttori, ricordandosi che è necessario prevedere anche la presenza del riferimento: nel caso di una rete RS485 è quindi tipicamente necessario predisporre un cavo con un doppino ed un terzo filo per il riferimento. Nella realizzazioni di reti in cui il costo è un aspetto importante è comune l'utilizzo del filo di riferimento anche per l'alimentazione dei circuiti periferici, con l'aggiunta di un quarto filo per l'alimentazione non stabilizzata: ovviamente la soluzione è praticabile solo se la corrente assorbita è piccola e le distanze non eccessive. L'impedenza caratteristica del cavo è un aspetto da verificare nel caso di velocità elevate anche se i valori necessari, compresi tra 100 e 150 ohm, sono quelli più comuni. Nel caso di trasmissioni ad alta velocità è importante mantenere bassa la capacità del cavo per metro lineare per non sovraccaricare eccessivamente i driver. In genere l'uso di cavi schermati non è necessario neppure negli ambienti industriali più rumorosi. Se non ci sono particolari problemi di peso, elevata velocità, difficoltà di montaggio o costo potrebbe comunque essere opportuna l'adozione dei cavi schermati per la maggiore resistenza meccanica più che per ragioni di tipo elettrico. Occorre comunque notare che la presenza di uno schermo aumenta la capacità dei conduttori verso massa, con effetti negativi nelle trasmissioni ad alta velocità. La scelta del tipo di cavo è in genere fatta utilizzando un grafico di tipo empirico fornito dal costruttore del cavo e simile a quello riportato a titolo di esempio e riferito al classico "doppino telefonico" AWG24, usato dalle norme come riferimento. Al fine di una corretta interpretazione occorre verificare le condizioni operative utilizzate per effettuare i test, in particolare il tipo di segnale utilizzato e la presenza o meno del resistore di adattamento dell'impedenza. Come si può vedere questo cavo di bassissimo costo è adeguato fino alla massima distanza prevista dallo standard se la velocità si mantiene sotto i 100 kbit/s, valore largamente superiore a quelli più spesso usato. 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". Si tratta del metodo migliore per ridurre le interferenze ed è richiesto obbligatoriamente sia per la RS422 che per la RS485. Se usato in configurazioni differenziali permette infatti di garantire prestazioni adeguate anche in ambienti molto rumorosi e su grandi distanze. Un po' di teoria. 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). Se tra i due conduttori vi è una differenza di potenziale variabile nel tempo, nel condensatore parassita passa corrente che fa interferire i segnali presenti. Ovviamente l'effetto è influenzato dalla distanza, dalla lunghezza/superficie, dalla frequenza del segnale e dall'ampiezza della tensione. •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. In questo caso l'effetto è proporzionale alla frequenza, alla distanza, all'area della spira e al suo orientamento, all'intensità della corrente. 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 separate dai due fili del doppino dai due condensatori C1 e C2 tra di loro uguali in quanto il sistema è sostanzialmente simmetrico (anche se nella figura, per ragioni grafiche, il filo bianco è più vicino di quello giallo). 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 (facendo riferimento alla cosiddetta "regola della mano destra", il filo giallo è sul dorso della mano) mentre quelle rosse nel verso contrario (ora è il filo blu sul dorso della mano): la tensione indotta ha quindi verso opposto nelle due spire e quindi il contributo totale è nullo. L'uso di cavi attorcigliati è praticamente l'unica richiesta nella specifica dei cavi. Cavi schermati Un cavo schermato (shielded) è costituito da un cavo intorno al quale è presente un conduttore tubolare (detto calza, shield o schermo) che lo avvolge completamente che ha lo scopo di ridurre le influenze dell'ambiente esterno sui conduttori. Due sono le soluzioni spesso adottate: •Lo schermo è unico e racchiude tutti i conduttori necessari. Le prestazioni sono buone nei confronti dei disturbi di origine esterna ma poco efficace nei disturbi di "crosstalk" tra i vari conduttori •Ogni coppia di conduttori ha un proprio schermo, soluzione più costosa ma utile per evitare disturbi tra i segnali Erroneamente viene a volte chiamato "schermato" anche un cavo coassiale, per esempio quello dell'antenna televisiva, trattandosi di un oggetto costruttivamente simile. La differenza sostanziale per gli effetti elettrici deriva dal fatto che in un cavo coassiale la corrente che scorre nel conduttore esterno è quella "di ritorno" del conduttore interno mentre lo schermo non è attraversato da alcuna corrente. L'efficienza dello schermo, oltre che dalle caratteristiche costruttive e dai materiali, dipende dalla frequenza del segnale di disturbo e dal tipo di accoppiamento. Un caso concreto è rappresentato dai disturbi generati dai cavi di alimentazione in quanto, per ragioni di cablaggio, i cavi di segnale ed i cavi di alimentazione occupano per lunghi tratti gli stessi passaggi. In questo caso un cavo schermato permette di ridurre gli effetti dei disturbi causati per "effetto capacitivo": in assenza di schermo il conduttore del segnale (bianco in figura) e quello di alimentazione (blu) sono separati da un "condensatore parassita" C1che trasmette un disturbo in quanto si ha passaggio di corrente; se si interpone lo schermo, collegato a massa, la corrente che passa nel condensatore C2 non influenza il potenziale dello schermo e quindi in C3 non passa corrente generata dal disturbo Lo schermo è invece sostanzialmete inutile nella riduzione degli effetti causati dalla corrente attraverso gli accoppiamenti induttivi: infatti i comuni materiali sono "trasparenti" ai campi magnetici, almeno a bassa frequenza. Per funzionare correttamente lo schermo deve essere collegato ad un potenziale fisso, normalmente la terra. Tale collegamento può essere effettuato ad un solo capo (soluzione scelta quando il segnale è a bassa velocità) e da ambedue i capi (soluzione nella quale è opportuno l'uso di un condensatore se si vogliono evitare correnti causate dalla differenza di potenziale tra diversi punti della terra). Un problema nell'uso dei cavi schermati deriva dal fatto che la presenza del condensatore C3 tra cavo e schermo, di valore piuttosto elevato, potrebbe dare problemi in caso di trasmissioni su distanze medio-lunghe a causa dell'eccessiva corrente richiesta al trasmettitore, problema particolarmente sentito ad alta velocità. Lo standard RS422 non da indicazioni relativamente all'uso o meno della schermatura anche se è comunque necessario prevedere comunque l'uso di doppini anche in caso di schermatura. La conversione da RS232 a RS422 e RS485 Ho già accennato al fatto che le norme relative agli standard RS422 e RS485 non fanno alcun riferimento al significato dei segnali trasmessi sulla linea. Questo paragrafo ed il seguente devono essere quindi intesi come presentazione di esempi applicativi, sebbene frequentemente utilizzati e spesso, a torto, considerati parte delle norme di riferimento. La conversione da RS232 a RS422 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 kb/s. 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. Spesso non sono utilizzati i segnali di controllo quali RTS e CTS in quanto se la distanza è elevata il numero di conduttori necessari potrebbe essere un problema ma, qualora fosse necessario, è sufficiente duplicare il circuito tutte le volte che serve. Dal punto di vista del software, la connessione è perfettamente trasparente a condizione di usare un sufficiente numero di cavi e quindi sono utilizzabili tutti i protocolli normalmente adottati con le porte RS232 (half-duplex piuttosto che full-duplex, con handshaking hardware oppure software). Per il funzionamento di questo circuito è richiesta una alimentazione esterna, in genere di 5 volt. Alcuni convertitori RS232/RS422 utilizzano come fonte di energia i livelli logici presenti sulle porte seriali del PC (port powered): è una soluzione comoda ma non è in grado di garantire il funzionamento della rete in caso di terminazioni parallele o ricevitori multipli a causa delle grosse correnti richieste. Nel caso di PC portatili o comunque a basso consumo, è possibile che il convertitore port powered non funzioni del tutto. La conversione da RS232 a RS485 Spesso è necessario connettere un PC o un altro computer ad una rete RS485. Lo soluzione più efficace è quella di utilizzare apposite porte seriali RS485 disponibili come accessorio standard su molti PC industriali o come schede aggiuntive per i PC desktop. Per una soluzione a basso costo è possibile utilizzare un convertitore da RS232 a RS485 che pur non avendo le medesime caratteristiche (in particolare ben poche porte seriali raggiungono il Mbit/s) presenta indubbi vantaggi di costi, reperibilità e flessibilità. 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 durante la trasmissione di un byte; come verrà descritto, questo aspetto può avere impatti sul software di comunicazione e, se mal gestito, rendere impossibili le comunicazioni. •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: 1.Si attiva il trasmettitore portando basso il segnale DTR (nello schema è presente un inverter, fatto comune a quasi tutti i ricevitori RS232) 2.Si trasmette il byte utilizzando nel modo consueto la porta RS232 3.Si disattiva il trasmettitore portando alto il DTR Non ho indicato nessuna connessione per l'abilitazione del ricevitore perché spesso è lasciata semplicemente sempre attiva collegandola a massa oppure è collegata direttamente alla linea DTR e quindi è automaticamente disattivato solo durante la trasmissione. Purtroppo non è sempre possibile implementare questo semplicissimo protocollo perché è praticamente impossibile conoscere esattamente quanto tempo impiega un byte ad essere trasmesso, soprattutto in ambienti multitasking. La soluzione che spesso si adotta è quella di lasciare sempre attivo il ricevitore e disattivare il trasmettitore solo quando si è ricevuto indietro quanto appena trasmesso: purtroppo si rischia di inserire ritardi, spesso inaccettabili. Una soluzione alternativa e decisamente più efficace è quella di inserire un monostabile che attiva automaticamente 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 tutorial ed in questo paragrafo mi limiterò a presentare tre tipologie che spesso si incontrano 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 contemporaneamente 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 (oppure includere un byte di conteggio) 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. Quello appena descritto assomiglia all'algoritmo CSMA/CD utilizzato sulle reti Ethernet ma è possibile anche implementare un algoritmo ispirato al Token Ring o ad altri protocolli di gestione dei conflitti. Codifica ASCII I segnali usati per trasmettere un byte su una rete RS485 in genere hanno un formato uguale a quello usato nella trasmissione seriale asincrona RS232 tipica p.e. dei personal computer: ciascun gruppo di 8 bit è preceduto da un singolo bit di start e seguito da almeno un bit di stop, oltre un eventuale bit di parità. Una delle esigenze che possono nascere nella realizzazione di un protocollo di comunicazione è la possibilità di identificare facilmente se un byte rappresenta un indirizzo, un comando o un dato generico. La tecnica spesso adottata è quella di codificare ciascun byte che deve essere trasmesso attraverso due o tre byte che rappresentano ciascuno il codice ASCII di un carattere. Si consideri per esempio il numero decimale 163 (rappresentato in esadecimale da 0xA3): per trasmettere questo numero possono essere inviati i tre byte corrispondenti 0x31, 0x36 e 0x33 (oppure i due byte 0x41 e 0x33). In questo modo tutti i byte generici occupano i soli sette bit meno significativi, rendendo disponibile l'MSB per identificare gli indirizzi. I caratteri non utilizzati in questa codifica sono disponibili per indicare comandi o delimitatori dei pacchetti. Lo svantaggio di tale tipo di codifica è l'occupazione di banda almeno doppia dello stretto necessario. 9 bit Lo scopo di questo protocollo è quello di identificare in modo immediato i byte che rappresentano un indirizzo pur mantenere i dati lunghi 8 bit: l'idea è quella di utilizzare per la codifica di ciascun byte un blocco costituito da 9 bit: otto sono quelli effettivi, il nono indica se si tratta di un byte generico oppure di un indirizzo. Questa tecnica di codifica permette alle UART dotate della possibilità di gestire in hardware questa modalità di generare un interrupt solo in presenza di un indirizzo: in questo modo il processore non deve esaminate ogni singolo byte trasmesso sulla linea per riconoscere pacchetti destinati al proprio indirizzo. Purtroppo questa tecnica è incompatibile con le UART normalmente installate nei personal computer. EIA RS-422 Parametro Condizioni Minimo Massimo Unità di misura Tensione di uscita differenziale Circuito aperto +10 - 10 Tensione di uscita differenziale Rl = 100 ohm Resistenza di uscita Corrente di corto circuito RAB A o B a massa 100 ± 150 Tempo di salita Rl = 100 ohm 10 Tensione di modo comune (driver) Sensibilità (ricevitore) Tensione di modo comune (ricevitore) Resistenza di ingresso (ricevitore) Rl = 100 ohm |Vcm| < 7 V ±3 ± 200 V V V V ohm mA % della durata di un bit V mV +7 V -2 2 -7 4 kohm EIA RS-485 Parametro Condizioni Tensione di uscita differenziale Circuito aperto Tensione di uscita differenziale Rl = 54 ohm Corrente di corto circuito Tempo di salita Minimo + 1.5 - 1.5 + 1.5 - 1.5 A o B a + 12 V o -7 V Rl = 54 ohm Cl = 50 pF Tensione di modo comune Rl = 54 ohm -1 (driver) Sensibilità (ricevitore) - 7 V < Vcm < 12 V Tensione di modo comune -7 (ricevitore) Resistenza di ingresso (ricevitore) 12 Massimo +6 -6 +5 -5 Unità di misura V V V V ± 250 mA 30 % della durata di un bit ±3 V ± 200 mV + 12 V kohm