![]()
Ogni qualvolta si parla di comunicazione in termini tecnici, si fa referenza al modello OSI. Orbene, questo modello è spesso mal capito, non conosciuto o addirittura sfruttato per indurre a credere che il sistema di comunicazione commercializzato è conforme ad uno standard internazionale. Mi sembra quindi indispensabile esporre qualche concetto a questo proposito.
Fig. 3: modello OSI
Il modello OSI (Open System Interconnection) è stato ideato in seno allISO (International Standard Organisation) ed è una base di referenza (un modello, appunto) per identificare e separare i vari gruppi funzionali di un ogni sistema di comunicazione. La funzione di modello, quindi serve unicamente da punto di riferimento e confronto. NON è dunque una norma alla quale un sistema di comunicazione deve aderire!
Questo modello suddivide in sette livelli (layer) le funzioni di un sistema di comunicazione. Non è comunque indispensabile di disporre di tutte e sette i livelli in ogni sistema: a seconda delle funzionalità necessarie qualche livello intermediario è spesso omesso. Vi illustro brevemente qui di seguito i ruoli che corrispondono ad ogni livello in un sistema di comunicazione:
Fig. 4: flusso dei dati e relazioni logiche
Il flusso dei dati attraverso un sistema di comunicazione subisce un trattamento a tappe simile a quello di un oggetto che si desidera inviare per posta: ad ogni livello del modello OSI corrisponde un trattamento ben preciso, simile alle diverse fasi di imballaggio delloggetto. La trasmissione attraverso la rete corrisponde allora alla spedizione del pacco, mentre che alla ricezione, ogni livello del modello OSI si occupa di spacchettare le informazioni aggiunte allimballaggio, procedendo in senso inverso, come per un pacco iniziando dal cartone esterno, poi dalla carta di imballaggio, e così via. In pratica, ogni livello alla ricezione si occupa di spacchettare ciò che è stato aggiunto ai dati originali al momento della trasmissione dal livello corrispondente. Vi è dunque un flusso dei dati fisici verticale, mentre vi sono delle corrispondenze logiche orizzontali tra i livelli OSI delle due stazioni comunicanti.
In una rete di telecomunicazione di una certa dimensione, non è sempre sufficiente collegare i vari nodi che partecipano alla comunicazione mediante un semplice cavo elettrico. A causa delle distanze elevate, del numero alto di nodi o per qualunque altra ragione può dunque essere necessario prendere provvedimenti affinché la comunicazione possa effettivamente aver luogo correttamente, adattando la rete alle esigenze pratiche. A questo scopo può essere necessario dover inserire dei circuiti che separano i diversi segmenti della rete in modo da migliorarne le caratteristiche. In altri casi il bus deve poter interagire anche con altri sistemi di comunicazione. Ecco allora che altri apparecchi devono essere utilizzati. Insomma, vi sono diversi accorgimenti da prendere nella pratica che si scostano leggermente dal concetto iniziale di bus visto come conduttore comune a più circuiti... Tuttavia anche qui si può avere un approccio teorico abbastanza semplice, proprio grazie al modello OSI al quale farò largamente riferimento nelle pagine che seguono.
Un repeater, o amplificatore, permette di migliorare i
segnali elettrici presenti sulla rete in modo da poter coprire
delle distanze maggiori tra i nodi oppure per permettere di
collegare un numero superiore di nodi ad una stessa rete,
ripartendo il carico delle singole stazioni sui diversi segmenti
di rete così realizzati. Un altro compito che spesso incombe al repeater
è quello di adattare la comunicazione a dei mezzi fisici
diversi. Lesempio più classico è quello della
deportazione di un segmento di rete ad una relativamente grande
distanza tramite fibre ottiche: da rete basata su cavi elettrici,
un primo repeater converte la comunicazione in un sistema
ottico. Dallaltra parte della fibra ottica un secondo repeater
può effettuare la conversione inversa, oppure può essere
collegato un apparecchio con interfaccia ottica.
Facendo riferimento al modello OSI, si nota come questo elemento
di comunicazione si occupi unicamente di decodificare il livello
1, ovvero il livello fisico. Tutto quanto concerne il contenuto
delle trame non influenza minimamente il funzionamento del repeater,
rispettivamente il repeater non lo interpreta. È infatti
noto che generalmente un repeater non ha una propria
intelligenza ma è formato unicamente da circuiti elettronici
semplici.
Fig. 5: repeater
Una variazione dei repeater più semplici, formati da due connettori per i due segmenti di rete che sono destinati a collegare, è lo splitter. Questultimo è identico ad un repeater comune, ad eccezione del fatto che è munito di un numero superiore di connettori. Il principio di funzionamento è semplice: lo splitter "ascolta" tutti i segmenti di rete ad esso collegati. Non appena rileva segnali di comunicazione su uno di essi, commuta tutti gli altri in trasmissione e riporta i segnali entranti dal segmento attivo sugli altri.
Fig. 6: splitter, una variazione del repeater
Il bridge, o ponte, interpreta sia il livello 1 che il livello 2 del modello OSI. Esso è quindi in grado di collegare due segmenti di reti diverse, con delle caratteristiche elettriche e di codifica distinte, pur permettendo, ovviamente, a certe applicazioni distribuite sui due segmenti di comunicare tra loro. Tuttavia la rete più rapida è costretta ad abbassarsi al livello di quella meno efficiente, simulando o emulando la comunicazione di questultima. Dato che il bridge non è un apparecchio intelligente, per un messaggio ricevuto da un sistema viene generato un messaggio equivalente sullaltro.
Fig. 7: bridge
Il router, come il suo nome lo lascia facilmente intuire, si occupa di deviare le trame di comunicazione verso i diversi segmenti di rete appropriati, definendo così listradamento necessario delle trame. Allo scopo di effettuare tale compito, il router deve interpretare i messaggi fino al livello 3 del modello OSI. Va da sé che i sistemi di comunicazione che prevedono limpiego di apparecchi di questo tipo dispongono pure del livello 3 del modello OSI, nello stack di comunicazione proprio al sistema.
Fig. 8: router
Il nome gateway, che in italiano potrebbe essere chiamato "passerella", fa pensare a qualche cosa di simile al bridge. Tuttavia, a differenza di questultimo, il gateway ha abbastanza intelligenza per decodificare i messaggi di comunicazione fino al livello 7 del modello OSI, ovvero fino al livello dellapplicazione. Come lo vedremo più avanti, questo tipo di apparecchio permette di collegare in modo ottimale dei bus di tipo e caratteristiche completamente diversi, mantenendo pur sempre una canale di comunicazione aperto tra le applicazioni che girano sui due sistemi collegati. Il gateway, grazie alla sua configurabilità, le sue risorse e la sua "intelligenza", è in grado di ottimizzare la comunicazione da entrambi i lati, sfruttando appieno le caratteristiche tecniche dei due sistemi di comunicazione che collega.
Fig. 9: gateway
Questo tipo di apparecchio, malgrado la sua importanza ed in parte a causa della sua complessità nonché della fetta di mercato limitata che rappresenta, risulta comunque essere piuttosto raro. Spesso capita di trovare chi, sotto il nome di gateway, spaccia dei semplici bridges. Evidentemente non si tratta per nulla della stessa cosa...
La comunicazione tra due nodi si effettua attraverso una linea punto-a-punto unicamente nel caso in cui solo questi due nodi sono presenti. In tal caso la connessione avviene mediante un protocollo proprietario che sfrutta un livello basso standard quale lRS-232 o lRS-422 (ricordatevi il modello OSI: i tipi di comunicazione RS-232 e RS-422 definiscono unicamente il livello 1 del modello). In questo caso la topologia del sistema di comunicazione è lineare (da un punto allaltro, appunto). Lunica limitazione a cui si va generalmente in contro è la distanza tollerata che, se importante, può richiedere un adeguamento verso il basso della cadenza di trasmissione.
Tutto questo interessa però poco nel settore dei bus di campo. Qui, infatti, il numero di nodi collegati assieme dal sistema di comunicazione è generalmente superiore. Si pone allora unaltra questione, cioè quella dellaspetto della topologia della rete. La topologia non è altro che la forma fisica che prende la rete in base agli elementi di comunicazione impiegati , ai nodi collegati ed il modo in cui tutti questi apparecchi sono interconnessi.
Esistono diversi modelli di topologie tipiche. I più ricorrenti sono i seguenti:
la struttura ad anello (ring)
la struttura a stella
la struttura ad albero
La struttura ad anello, o ring, permette di collegare in serie e successivamente tutti i nodi della rete. Tipicamente tra un nodo ed il successivo la comunicazione unidirezionale. Il nodo successivo si occupa di ripetere il segnale ricevuto, estraendone nel contempo le parti che lo riguardano ed immettendo al momento appropriato le informazioni che vuole inviare. Questa struttura presenta due vantaggi principali: innanzitutto il segnale è rigenerato in ogni nodo, per cui ogni nodo gioca anche il ruolo di repeater e permette quindi di coprire senza costi aggiuntivi delle distanze notevoli. Daltra parte la comunicazione unidirezionale è ideale per la messa in servizio di fibre ottiche, in quanto ogni segmento di rete rappresenta in pratica un collegamento punto-a-punto unidirezionale. Questo permette, in certe condizioni, pure un risparmio notevole di materiale di cablaggio.
I due svantaggi principali di questa topologia non sono tuttavia trascurabili: dapprima si deve sottolineare la difficoltà di estendere la rete. Non è infatti possibile aggiungere un nuovo nodo senza interrompere anche solo momentaneamente la comunicazione, in quanto è indispensabile aprire lanello per inserirvi il nuovo venuto. Daltra parte se un componente del circuito non funziona più o un segmento di rete è danneggiato, tutta la rete non funziona più! Se questo è magari accettabile in una rete di PC negli uffici, dove i singoli PC possono continuare a lavorare in modo locale anche se manca per un breve tempo il collegamento con gli altri, nelle applicazioni in tempo reale legate ad automatismi e sincronismi ogni ritardo può essere causa di danni diretti o indotti notevoli. La topologia ad anello è quindi raramente utilizzata nel dominio dei bus di campo.
Fig. 10: struttura ad anello
La struttura a stella presenta delle caratteristiche
diametralmente opposte a quelle della struttura ad anello. In
effetti la struttura a stella si basa su di un punto centrale
della rete dove si situa generalmente un nodo avente delle
funzioni speciali (quali il ruolo di master o di server
della rete) dal quale partono un numero di collegamenti
bidirezionali pari al numero di nodi decentralizzati che la rete
conta. Questa configurazione permette quindi facilmente e senza
dover interrompere la comunicazione di aggiungere un nuovo nodo
alla rete, ammesso che il nodo centrale disponga ancora di
connessioni libere. Inoltre, in caso di guasto di un componente,
gli altri nodi possono proseguire senza interruzione, dato che la
comunicazione con gli altri nodi non viene perturbata, ammesso
che il nodo guasto non sia proprio quello centrale.
Tuttavia, come è facile intuirlo, una centralizzazione dei
cablaggi richiede una quantità notevole di cavi e non permette
di coprire grandi distanze.
Fig. 11: struttura a stella
La struttura ad albero rappresenta una specie di compromesso
tra i vantaggi e gli svantaggi delle due topologie viste sopra.
In linea di massima una struttura ad albero permette delle
biforcazioni, dunque delle strutture simili a quella a stella.
Come in questa configurazione la comunicazione sulle linee è
bidirezionale. Tuttavia in una struttura ad albero sui vari
segmenti creati si possono collegare più nodi. Daltra
parte la struttura ad albero ideale dovrebbe essere formata da un
unico troncone sul quale si collegano tutti i nodi. Questo
richiama vagamente la struttura ad anello, dove però i nodi non
sono allacciati in cascata e lanello non ha bisogno di
essere chiuso. I vari nodi, infatti, sono collegati in parallelo
sulla stessa linea, e non in serie, come in una struttura ad
anello. Questultima caratteristica è fondamentale per
permettere alla comunicazione di proseguire anche in caso di
guasto di un nodo. Anche lestensibilità della rete può
avvenire facilmente senza dover interrompere la comunicazione.
Addirittura è possibile aggiungere un intero nuovo segmento di
rete con un numero anche importante di nuovi nodi, esattamente in
modo analogo alla semplice aggiunta di un singolo nodo. La libertà
di estensione, sia in fatto di numero di elementi connessi che in
fatto di forma e distanza, risulta quindi enorme. Vedremo
comunque più avanti come e con quali restrizioni tali estensioni
possono essere effettuate.
Questa topologia, come senzaltro avrete già immaginato, è
la più diffusa nel settore dei bus di campo, proprio per le sue
caratteristiche vantaggiose. Il livello fisico impiegato in
questo tipo di rete è spesso eseguito secondo la norma RS-485 o
in maniera simile.
Fig. 12: struttura ad albero
Orbene, contrariamente a quanto spesso si crede, non basta collegare in qualsiasi modo i nodi in parallelo, limitandosi a verificare la polarità delle connessioni. Esistono delle teorie abbastanza complesse sulle linee elettriche, sulla trasmissione di segnali, sulle riflessioni e su altri argomenti ancora che avrete magari già seguito in altri ambiti. Non voglio riportarle in questo testo, perché al di fuori del tema principale. Tuttavia desidero richiamare qualche indicazione utile e pratica per realizzare una rete senza intoppi. È infatti noto che la maggior parte dei problemi di messa in servizio di un impianto è causata dalla leggerezza con la quale laspetto fisico della rete di comunicazione viene trattato. Ecco quindi di seguito alcuni punti fondamentali da ricordare al momento della concezione e realizzazione di una rete:
Fig. 13: struttura ad albero consigliata
Prendendo in considerazione questi semplici aspetti, un cavo formato da un semplice doppino (più un conduttore per la massa di referenza) schermato è sufficiente nella maggior parte dei casi, anche in ambienti particolarmente ostili. Questo permette di evitare di ricorrere a cavi coassiali o a fibre ottiche ancor più onerose, anche in ambiti dove ci si immagina che le perturbazioni esterne sono inevitabili. Questo è stato dimostrato dalla pratica, in installazioni montate su macchine ad elettroerosione e in laboratori di elettrofisica. In questultimo caso venivano generati dei fulmini artificiali che arrivavano fin a cancellare le EPROM di alcuni print disseminati nel laboratorio. Tuttavia la comunicazione attraverso il bus (si trattava del Bitbus nel caso specifico) funzionava senza problemi!
Come accennato allinizio, vi sono numerosi sistemi di
comunicazione che ricadono sotto la denominazione di bus di
campo. In comune hanno praticamente ben poco. Laspetto
che forse è più marcante è quello di poter collegare con un
mezzo fisico comune un numero più o meno importante di circuiti.
A parte questaspetto si potrebbe sottolineare la nozione di
tempo reale comune a tutti i bus di campo. Tuttavia a
seconda del bus e dellapplicazione, anche questo concetto
è molto variabile. Vi sono sistemi che considerano un tempo
"reale" quando è di qualche decina di
microsecondi. Altri sistemi accettano dei tempi di risposta che
possono andare fino a qualche secondo.
Parlando di caratteristiche tecniche ed aspetti dei protocolli
sono quindi di nuovo costretto a fare astrazione e presentare in
forma teorica i concetti che più sono diffusi. Lo farò
iniziando dal basso del modello OSI, ovvero dal livello 1,
passando dal livello 2 e terminando con alcune referenze al
livello 7.
Il concetto di comunicazione è strettamente legato allidea
di "codifica". Per poter trasmettere uninformazione,
infatti, questa deve essere codificata in modo opportuno.
La codifica è loperazione che consiste nel trasformare
delle informazioni da un certo repertorio di segni verso un altro.
La codifica e la relativa decodifica sono operazioni che
modificano la forma dei segnali, ma non il contenuto.
Allultimo stadio della preparazione di uninformazione
da trasmettere, al momento di convertire i dati ordinati a
blocchi di bit in una sequenza seriale, i singoli bit ricevono unultima
codifica utile a facilitare il trasporto della trama dalla
sorgente verso i consumatori.
Vi sono diversi modi di codificare una sequenza seriale dei bit: la più semplice è la codifica denominata NRZ (Non Return to Zero). Nel codice binario NRZ i singoli bit sono allineati successivamente e non sono separati da alcun segnale. Laspetto della sequenza ricalca fedelmente il contenuto stesso, in quanto i bit a 1 sono effettivamente rappresentati da un segnale di una certa ampiezza, rispettivamente i bit a 0 vengono rappresentati da una tensione diversa. La cadenza di trasmissione prestabilita permette di individuare i singoli bit in base al tempo trascorso. Il problema principale si presenta quando una serie prolungata di bit dello stesso tipo viene trasmessa: non avendo più nessun fianco positivo o negativo, diventa difficile risincronizzare i tempi, per cui si può incappare in un conteggio errato dei bit. Gli UART tradizionali (usati su tutte le apparecchiature munite di RS-232, ma anche su altri sistemi) rimediano a questo problema introducendo alcuni limiti: i bit di dati massimi trasmessi vanno dai 5 (non più usato) ai 10 bit. Questi vengono impacchettati con un bit di start (a zero) ed uno o più bit di stop (a 1). La linea, da parte sua, quando non è occupata si trova a 1. Ogni invio di blocco inizia così con un fianco negativo che permette la risincronizzazione dei due apparecchi. Dato che la lunghezza del blocco è ridotta (12 bit al massimo) la tolleranza degli orologi dei due sistemi non è più così critica. Lo svantaggio è però che i dati da trasmettere devono venire frammentati (generalmente a byte) ed inviati con una aggiunta relativamente importante di segnali. Di conseguenza si ha una perdita di tempo abbastanza rilevante.
Fig. 14: codifica NRZ
Il codice RZ (Return to Zero), invece,
garantisce un ritorno a zero per ogni bit. I bit 0
non subiscono modifiche, mentre che i bit 1 vengono
accorciati nel tempo, in modo da garantire un ritorno a zero del
segnale ad ogni bit. Con questa meccanica si aggiunge un numero
considerevole di fianchi al segnale trasmesso, in modo da
facilitare la risincronizzazione. Tuttavia unemissione di
una sequenza prolungata di zeri pone lo stesso problema visto
sopra. A questo scopo, quando si utilizza questo tipo di codifica,
si dispone di un dispositivo automatico che, allemissione,
inserisce automaticamente un bit a 1, quando un certo
numero prestabilito di zeri si sono susseguiti. Alla ricezione il
corrispondente automatismo elimina automaticamente il bit a
1 quando ha contato lo stesso numero di bit a zero.
Questo modo di inserzione automatica è conosciuto sotto il nome
di bit stuffing (inserzione di bit).
Lo svantaggio della codifica RZ è quello di causare un numero di
fianchi elevato pari, nel caso di una trasmissione di soli 1,
al doppio dei bit inviati. Questo, come abbiamo visto, non è
propriamente vantaggioso, specialmente dal profilo delle
perturbazioni.
Fig. 15: codifica RZ
Proprio per ridurre il numero di fianchi si è quindi immaginato un altro sistema di codifica, chiamato NRZI (Non Return to Zero Inverted). LNRZI è un metodo di codifica dei dati e della cadenza di trasmissione ideale per la trasmissione di trame lunghe di dati. Esso specifica infatti che il livello di tensione presente sulla linea non viene modificato se si trasmette un 1, mentre che cambia alla trasmissione di uno zero. In tal modo il numero di fianchi è limitato, mentre che se si desidera inviare una sequenza prolungata di 1 viene adottato anche qui il metodo di bit stuffing, dove però si inserisce automaticamente uno zero. Con questo metodo si ha nel peggiore dei casi un fianco ogni bit, dunque una frequenza pari alla metà della cadenza dei bit. In media, comunque, si ha un numero di fianchi pari alla metà dei bit trasmessi (ammettendo una probabilità del 50% di trasmissione di 1 e zeri), quindi una frequenza pari ad un quarto della cadenza dei dati.
Fig. 16: codifica NRZI
Si noti comunque che la tecnica dellinserzione automatica di bit (bit stuffing), viene sempre più comunemente utilizzata per evitare di dover usare un meccanismo del tipo start-stop tipico dellUART. A tal proposito viene anche impiegata in taluni sistemi usando la codifica NRZ.
Daltra parte non bisogna dimenticare che se i tre sistemi di codifica illustrati sono i più diffusi, esistono pure altri metodi. Ne esistono anche diversi che utilizzano un numero superiore di potenziali elettrici per definire i singoli bit. Dato che però tali meccanismi risultano più onerosi, non vengono generalmente impiegati nei bus di campo.
Lo stream di bit (sequenza di bit) preparata in base ad uno di questi metodi di codifica è quindi pronto ad attraversare la rete. Tuttavia, i segnali logici 0 - 5V non sono molto appropriati per linvio di segnali su distanze lunghe. Questo non tanto per il loro potenziale relativamente basso, ma perché soggetti a perturbazioni esterne che devono essere separate il meglio possibile dal resto dei circuiti di un apparecchio elettronico. A questo scopo esistono diversi meccanismi di codifica elettrica atta a migliorare laffidabilità della trasmissione, da una parte, ed altri per proteggere maggiormente i circuiti che stanno a monte della comunicazione.
Cominciamo quindi dai circuiti più vecchi (non per questo però più semplici). Ai tempi si considerò il livello di 5 Volt insufficiente per trasmettere dei dati. Partendo da questo presupposto è stato optato per una tensione di 12 Volt, generalmente già presente nelle apparecchiature. Le norme V.24 e V.28 corrispondenti allRS-232 definiscono infatti i seguenti livelli di tensione:
segnale logico 0 (stato "attivo" per i circuiti di comando): da +3 a +15 Volt segnale logico 1 (stato "non attivo" per i circuiti di comando): da - 3 a - 15 Volt
Si noti che non è un errore tipografico! Il segnale logico 1 è effettivamente codificato con una tensione negativa generalmente situata a -10 o -12 V.
Fig. 17: interfaccia RS-232
Nei circuiti moderni non sempre si dispone di tutte queste tensioni, per cui i produttori di circuiti integrati si sono dati da fare per produrre un integrato che, con pochi condensatori esterni, riuscisse a generare tutte le tensioni necessarie a partire da una alimentazione semplice a 5 Volt. I più famosi circuiti sono i MAX-232 della MAXIM di cui esistono comunque diversi second source.
![]()