Il CAN bus

Il Controller Area Network, noto anche come CAN-bus, è uno standard seriale per bus principalmente di tipo automotive e multicast. E’ stato introdotto negli anni ottanta dalla Robert BoschGmbH, per collegare diverse unità di controllo elettronico (ECU). Analizziamo le proprietà e le caratteristiche di questo importante bus.

Il protocollo CAN (figura 1 e 2) è stato sviluppato in Europa per utilizzo in ambito automobilistico. In seguito al proficuo utilizzo nelle applicazioni nel campo degli autoveicoli, nei sistemi di controllo, sensori ed attuatori si è sviluppato in tutto in mondo in particolare negli USA. Il protocollo di comunicazione CAN è stato reso norma internazionale nel 1993 come ISO 11898-1. Il bus CAN è un bus a comunicazione seriale per applicazioni in real time, lavora con frequenze dati fino a 1 Mbit/s con ottime capacità di individuazione e sconfinamento di errori. Le principali applicazioni del CAN bus sono le seguenti:

» automobili

» autocarri  e autobus

» elettronica  marittima

» automazione industriale

» ascensori  e scale mobili

» elettronica per l’aviazione e il settore spaziale.

Figura 1: esempio di applicazione del bus CAN.

Figura 1: esempio di applicazione del bus CAN.

Con l’impiego di CAN nei controller, negli attuatori, nei sensori e trasduttori di rete, i titolari di tutte le succitate produzioni a controllo computerizzato hanno tratto beneficio da:

» ridotto tempo di progettazione (componenti e strumenti immediatamente disponibili, da più fornitori);

» minori costi dei collegamenti (cavi e connettori più leggeri e più piccoli);

» affidabilità incrementata (minor numero di collegamenti).

Proprietà hardware del bus CAN sono le seguenti:

» Bus fisico: bus filiare, di solito un doppino;

» Codificazione dei bit: il CAN usa la codifica NRZ (Non return to Zero) per la comunicazione dati su bus differenziale bifilare.

Figura 2: esempio di Connessione di bus CAN.

Figura 2: esempio di Connessione di bus CAN.

Ancora più da vicino…

Vediamo le proprietà principali che caratterizzano un CAN bus.

Multimaster

Tutte le unità sono connesse al bus CAN possono spedire i loro messaggi.  Il messaggio trasmesso per primo sarà quello che arriverà per primo a destinazione. Se più unità spediscono simultaneamente l’informazione, quella con maggior priorità (ID) sarà la prima ad essere esaminata. Trasmissione  del messaggio I messaggi trasmessi hanno una forma particolare. In particolare ogni unità è identificata da un fattore di priorità. Quel la con priorità maggiore può continuare a spedire messaggi nel caso di messaggi simultanei nel tempo.

Confinamento degli Errori

Capacità di individuazione di errori e comunicazione istantanea a tutte le unità. E’ stato calcolato che una rete basata su CAN bus a 1 Mbit/s, con un’utilizzazione media del bus del 50%, una lunghezza media dei messaggi di 80 bit e un tempo di lavorazione di 8 ore al giorno per 365 giorni l’anno, avrà un errore non rilevato ogni 1000 anni. Praticamente la rete non è soggetta ad errori durante la sua vita. Questo è il maggior punto di forza di questo bus. Ciascun nodo è in grado di rilevare  il proprio malfunzionamento e di autoescludersi dal bus se questo è permanente. Questo è uno dei meccanismi che consentono alla tecnologia CAN di mantenere la  rigidità delle temporizzazioni, impedendo che un solo nodo metta in crisi l’intero sistema.

Tempi di risposta  rigidi

Specifica fondamentale nel controllo di processo: la tecnologia CAN prevede molti strumenti hardware e software e sistemi di sviluppo per protocolli ad alto livello (il bus CAN implementa solo i primi due livelli della pila ISO-OSI) che consentono di connettere un elevato numero di dispositivi mantenendo stringenti vincoli temporali.

Semplicità  e flessibilità  di cablaggio

CAN è un bus seriale tipicamente implementato su un doppino intrecciato (schermato o meno a seconda delle esigenze). I nodi non hanno un indirizzo che li identifichi e possono quindi essere aggiunti o rimossi senza dover riorganizzare  il sistema o una sua parte.

Alta immunità ai disturbi

Lo standard ISO11898 raccomanda che i chips di interfaccia possano continuare a comunicare anche in condizioni estreme, come l’interruzione di uno dei due fili o il cortocircuito di uno di essi con massa o con l’alimentazione.

Elevata affidabilità

la rilevazione degli errori e la richiesta di ritrasmissione viene gestita direttamente dall’hardware con cinque diversi metodi (due a livello di bit e tre a livello di messaggio).

Maturità  dello standard

La larga diffusione del protocollo CAN in questi venti anni ha determinato un’ampia Disponibilità di chip rice-trasmettitori , di microcontrollori che integrano porte CAN, di tools di sviluppo, oltre che una sensibile diminuzione del costo di questi sistemi. Questo è molto importante per far sì che uno standard si affermi nell’ambito industriale.

La comunicazione

La comunicazione, nel CAN BUS, avviene tramite dispositivi intelligenti, ovvero sensori o attuatori in grado di produrre dati autonomamente per poi immetterli sul BUS. Inoltre, questa tipologia di apparecchiature, è in grado di richiedere e utilizzare  i dati prodotti da un altro dispositivo intelligente. I  compiti svolti dal sensore intelligente sono:

» amplificazione del piccolo segnale d’uscita del sensore vero e proprio;

» traslazione  del segnale nel range opportuno per la conversione A/D;

» elaborazione  dei dati;

» emissione  dei dati su bus.

Tipicamente un nodo intelligente ha un suo processore con una sua memoria. Esso è in grado di gestire ed elaborare autonomamente i dati. I singoli microcontrollori, sono provvisti di ram, eprom, convertitore A/D e di un’interfacciamento con i dispositivi  esterni. Oggi, questa tecnologia, e economicamente  alla portata di tutti (figura 3).

Lo standard iso-osi

Il  modello di  riferimento OSI (Open Systems Interconnection), diventato parte dello standard ISO (International Organization for Standardization) nel 1984, divide la gestione di una qualunque rete in blocchi funzionali.  Il modello non definisce uno standard tecnologico ma un modello di riferimento comune per le tecnologie ed i servizi che gestiscono le reti.

Figura 4: esempi di Bus CAN.

Figura 4: esempi di Bus CAN.

Esso assicura compatibilità e interoperabilità anche fra diversi tipi di tecnologie. Facendo riferimento alla schematizzazione (figura  5, 6 e 7)  in livelli definita dall’ISO (International Standard Organization) col progetto OSI (Open System Interconnection) si può ritenere che il Bus CAN implementi  il PhysicalLayered  il Data LinkLayer,  ovvero i due livelli più bassi della pila, come è logico per un protocollo più vicino ad un Bus di Campo che ad una rete inform Ethernet.

Figura 5: standard ISO-OSI.

Figura 5: standard ISO-OSI.

 

Figura 6: standard ISO-OSI.

Figura 6: standard ISO-OSI.

 

Figura 7: implementazione bus CAN.

Figura 7: implementazione bus CAN.

I livelli  del modello ISO/OSI sono sette, ciò è dovuto ad una aderenza sostanziale e ad una compatibilità inevitabile con il modello di comunicazione più in voga in quegli anni, il System Network Architecture (SNA) di IBM. Il  problema della comunicazione viene suddiviso in blocchi funzionali ognuno dei quali dedicato a un problema specifico. Ogni blocco riceve informazioni dallo strato inferiore e comunica la propria elaborazione al blocco successivo.  I blocchi, denominati tecnicamente layer o livelli, formano una struttura a pila in quanto la comunicazione fluisce dal livello più alto verso gli strati bassi del sistema trasmittente e percorre invece la strada opposta sul sistema ricevente. Se consideriamo i livelli, il livello più in basso è quello connesso con il mezzo fisico di trasmissione, mentre quello più in alto si interfaccia direttamente con le applicazioni. Mentre i protocolli dei tre livelli inferiori del modello OSI sono legati al tipo di infrastruttura trasmissiva usata e hanno lo scopo di ottenere da essa il  servizio desiderato quelli dei quattro livelli superiori sono orientati esclusivamente ad aspetti elaborativi e non sono legati a problematiche di telecomunicazione.

Livello 7: detto anche Network Processes to Application o più semplicemente Application layer è il livello più prossimo all’utente. Fornisce supporto alle applicazioni permettendo a queste di scambiarsi informazioni attraverso la rete. Si deve prestare attenzione a non confondere il termine applicativo di questo strato con l’accezione comune di “programma”. Il “programma” sfrutta gli strumenti della pila OSI a livello “applicativo” per svolgere funzionalità in rete.

Livello 6: denominato Data Rapresentation o Presentation layer serve per la trasformazione/conversione del formato dei dati, si occupa di prendere le informazioni dall’applicazione, convertirle in un formato standard comprensibile agli altri layer e viceversa. Con questo livello si provvede a risolvere le differenze che possono sussistere nel formato dei dati su due sistemi differenti. In questo layer si tendono a concentrare anche le esigenze di compressione/decompressione  oppure le operazioni di cifratura e decodifica dei dati. In conclusione il livello 6 si prende carico di tutti i problemi di presentazione dei dati e fornisce i meccanismi per una conversione trasparente. Livello 5: si preoccupa di monitorare e controllare il  dialogo tra processi presenti su macchine differenti. Il layer implementa i  meccanismi di sincronizzazione e mantenimento della comunicazione e per questo ci si riferisce ad esso con i termini  di Interhost Communication level o Session layer.

Livello 4: a questo livello viene delegata la funzione di invio e ricezione dei dati ed infatti si parla di Transport layer. E’ il primo livello che lavora in modo completamente indipendente dalla topologia della rete e costituisce la base su cui tutto il software applicativo si poggia per trasmettere le informazioni. Il programmatore viene sollevato dai dettagli della comunicazione e può limitarsi alla conoscenza delle interfacce standard e di poche altre convenzioni.

Livello 3: implementa la definizione del concetto stesso di rete. Il network inteso come insieme di sistemi autonomi che comunicano entro un mezzo fisico di trasmissione prevede un sistema di indirizzamento logico e di inoltro dei dati tra i nodi che viene definito nel Network layer. Livello 2: attraverso il Data Link layer si stabilisce un collegamento tra la gestione della connessione e la trasmissione dei dati ed tra questi compiti rientra anche la definizione delle procedure di rilevazione degli errori e le successive correzioni. Livello 1: si occupa della trasmissione dei dati sul mezzo fisico. E’ a questo livello detto Physical layer che viene specificata la rappresentazione elettrica degli 0 ed 1 binari, le velocità di comunicazione, la distanza massima di trasmissione, gli elementi fisici di interconnessione  (la definizione meccanica dei connettori, le tipologie dei cavi, ecc.). Questo è l’unico livello della gerarchia che riguarda direttamente l’hardware, tutti i  blocchi funzionali superiori lavorano ad un livello logico operando su flussi di bit anziché su i segnali  elettrici. Nell’ambito del bus CAN, il Data LinkLayer è a sua volta implementato attraverso altri due livelli:

l’ObjectLayer ed il Transfer  Layer.  Il primo si occupa del filtraggio dei messaggi arrivati. In una comunicazione broadcast tutti i nodi ricevono gli stessi pacchetti: nell’Object Layer si scartano quelli non rilevanti per il nodo considerato.  Inoltre il livello di oggetto, si occupa della gestione dei messaggi da trasmettere e dell’interfaccia con l’Application Layer.

Il Data LinkLayer, ha l’importante compito dell’arbitraggio nella competizione per la contesa del canale trasmissivo, da parte dei vari nodi can che, contemporaneamente, ne richiedono l’utilzzo.

Quando 2 o più nodi stanno trasmettendo contemporaneamente,  il conflitto è risolto con un meccanismo di ARBITRAGGIO che non ci siano né perdite di informazioni, né di tempo.  Durante ogni fase di arbitraggio, ogni stazione trasmittente, confronta il livello del bit trasmesso con il livello monitorato sul canale. Se i due bit coincidono il nodo continua la trasmissione. Quando il livello associato al bit è recessivo, mentre sul canale si riscontra un livello dominante, l’unità interrompe immediatamente la trasmissione.

Accesso al bus e struttura dei frame

Il CAN appartiene alla categoria dei protocolli producer-consumer in cui tutti i nodi della rete possono teoricamente essere in grado di inviare dati sul bus e tutti possono ricevere qualunque messaggio (si parla anche di broadcasting dei messaggi). Non si può dire che i nodi abbiano un indirizzo specifico (per questo il CAN è definito un protocollo Message-based anzichè Address-based), è invece più corretto affermare che l’informazione di indirizzo è contenuta nel campo identifier del frame trasmesso e che questo identificatore viene utilizzato da tutti i nodi della rete per controllare se i dati trasportati dal frame sono o meno di loro competenza (sono utili o meno). Non si può propriamente parlare di indirizzo perchè più interfacce distinte possono riconoscere valido l’identificatore trasmesso e poi il campo identifier viene utilizzato anche per stabilire la priorità di trasmissione del messaggio sul bus. Il CAN definisce 4 tipi di messaggi detti anche frame:

» Data Frame (D.F.): è il tipo di messaggio più diffuso (figura 8) e permette la trasmissione dei dati da un nodo trasmettitore (TX) a tutti gli altri , che si comportano quindi come ricevitori (RX); ciascun nodo decide separatamente se ritenere rilevanti i dati ricevuti o se scartarli.

Figura 8: Data Frame.

Figura 8: Data Frame.

» Remote  Frame  (figura 9): ha una struttura simile al Data Frame, ma è privo del campo dati; serve a sollecitare l’invio di un determinato D.F. da parte del nodo interrogato.

Figura 9: Remote Frame.

Figura 9: Remote Frame.

» Error  Frame  (figura 11): viene inviato da un nodo che rivela un errore e provoca la ritrasmissione del messaggio da parte del nodo trasmettitore; poiché è sufficiente che un solo nodo segnali un errore per avere la ritrasmissione,   il protocollo CAN prevede che ciascun nodo monitorizzi  il proprio stato di salute, autoescludendosi in caso di tasso di errore elevato (fault confinement).

Figura 11: Error Frame.

Figura 11: Error Frame.

» OverloadFrame  (figura 10): viene inviato da un nodo che risulta “busy” per ritardare la trasmissione del pacchetto successivo. InterframeSpace: precede ogni Data e Remote Frame e ha una funzione separatrice.

Figura 10: Overload Frame.

Figura 10: Overload Frame.

Soffermiamoci sul Data Transfer. Esso è costituito da 7 campi:

» Start of Frame(SoF): è costituito da un solo bit dominante e segnala l’inizio di un messaggio di tipo D.F. o di tipo R.F.

» ArbitrationField:  è costituito dall’identificatore del contenuto del messaggio più un bit RTR (Remote TransmissionRequest) che distingue fra D.F. e R.F.

» Control Field: è costituito da 6 bit, di cui 4 servono a specificare  il numero di bytedi cui ècomposto il  messaggio vero e proprio (Data Field) e 2 sono riservati per future espansioni del protocollo.

» Data Field: contiene i dati veri e propri, che vanno da un massimo di 8 bytes (64bit) ad un minimo di 0.

» CRC Field: è costituito da 16 bits, di cui i primi 15 contengono la sequenza di controllo (cyclicredundancycheck) mentre l’ultimo è un bit recessivo di delimitazione.

» ACK Field: è costituito da un bit detto ACK Slot ed uno di delimitazione (ACK Delimiter). Sono entrambi inviati come recessivi ma ACK Slot viene sovrascritto come dominante da ogni nodo che riceve il messaggio  in maniera corretta.

» End of Frame(EoF): è costituito da 7 bits recessivi che indicano la fine del Frame.

Error detecting

Il  procedimento di error detecting e il conseguente isolamento dei guasti rendono il bus Can molto affidabile. L’error detecting si articola in 5 fasi:

» Il controller can di un nodo rileva un’errore (in TX o RX);

» trasmette immediatamente un Error Frame;

» il messaggio corrotto e ignorato da tutti i nodi della rete;

» il can controller aggiorna  il suo stato;

» il messaggio viene ritrasmesso (eventualmente dovrà competere, per l’accesso al bus, con altri messaggi). Il protocollo CAN definisce 5 differenti tipi di errore, di cui 3 a livello di bit e 2 a livello di messaggio, rilevati attraverso le seguenti tecniche:

» monitoraggio: ciascun nodo confronta i bit che invia con quelli effettivamente presenti sul bus e in caso di discordanza si ha un Bit error.

» Bit stuffing: è una tecnica che consiste nel trasmettere dopo ogni sequenza di 5 bit uguali un sesto bit complementare, che viene automaticamente ignorato dai nodi ricevitori.

» Controllo  ciclico di ridondanza: ciascun nodo ricevitore calcola la sequenza CRC corrispondente al messaggio ricevuto e la confronta con quella che il trasmettitore ha accodato al messaggio stesso.

» Controllo dei Frame: se il ricevitore  rileva che non sono state rispettate le 5 possibili strutture dei frame CAN.

» Invio dell’acknowledgementbit:  ciascun nodo che riceve correttamente un D.F. o un R.F. è tenuto a inviare un bit dominante nel bit-time del campo ACK di questo frame.

 

 

Scrivi un commento

EOS-Academy

Ricevi GRATIS le pillole di Elettronica

Ricevi via EMAIL 10 articoli tecnici di approfondimento sulle ultime tecnologie