logo

Protocollo CAN (Controller Area Network).

PUÒ sta per Rete di controllori protocollo. È un protocollo sviluppato da Roberto Bosch intorno al 1986. Il protocollo CAN è uno standard progettato per consentire al microcontrollore e ad altri dispositivi di comunicare tra loro senza alcun computer host. La caratteristica che rende il protocollo CAN unico tra gli altri protocolli di comunicazione è il tipo di bus broadcast. Qui broadcast significa che l'informazione viene trasmessa a tutti i nodi. Il nodo può essere un sensore, un microcontrollore o un gateway che consente al computer di comunicare in rete tramite il cavo USB o la porta Ethernet. Il CAN è un protocollo basato sui messaggi, il che significa che il messaggio porta l'identificatore del messaggio e, in base all'identificatore, viene decisa la priorità. Non è necessaria l'identificazione del nodo nella rete CAN, quindi diventa molto semplice inserirlo o eliminarlo dalla rete. È un protocollo di comunicazione di tipo seriale half-duplex e asincrono. Il CAN è un protocollo di comunicazione a due fili poiché la rete CAN è collegata tramite il bus a due fili. I fili sono doppini intrecciati con impedenza caratteristica di 120Ω collegati a ciascuna estremità. Inizialmente era pensato principalmente per la comunicazione all'interno dei veicoli, ma oggi viene utilizzato in molti altri contesti. Come UDS e KWP 2000, PUÒ essere utilizzato anche per la diagnostica di bordo.

Perchè puoi?

La necessità di un protocollo di comunicazione standard centralizzato è nata a causa dell'aumento del numero di dispositivi elettronici. Ad esempio, in un veicolo moderno possono esserci più di 7 TCU per vari sottosistemi come cruscotto, controllo della trasmissione, unità di controllo del motore e molti altri. Se tutti i nodi fossero collegati uno a uno, la velocità della comunicazione sarebbe molto elevata, ma la complessità e il costo dei cavi sarebbero molto elevati. Nell'esempio sopra, un singolo cruscotto richiede 8 connettori, quindi per superare questo problema, CAN è stata introdotta come soluzione centralizzata che richiede due fili, ovvero CAN high e CAN low. La soluzione di utilizzare il protocollo CAN è abbastanza efficiente grazie alla priorità dei messaggi e flessibile poiché un nodo può essere inserito o rimosso senza influenzare la rete.

Applicazioni del protocollo CAN

Inizialmente, il protocollo CAN è stato progettato per risolvere i problemi di comunicazione che si verificano all'interno dei veicoli. Ma in seguito, per le caratteristiche che offre, viene utilizzato in diversi altri campi. Di seguito sono riportate le applicazioni del protocollo CAN:

  • Automotive (veicoli passeggeri, camion, autobus)
  • Apparecchiature elettroniche per l'aviazione e la navigazione
  • Automazione industriale e controllo meccanico
  • Ascensore e scale mobili
  • Automazione degli edifici
  • Strumenti e attrezzature mediche
  • Marino, medico, industriale, medico

Architettura a strati CAN

Come sappiamo che il Modello OSI suddivide il sistema di comunicazione in 7 diversi livelli. Ma l'architettura a strati CAN è composta da due strati, ovvero

Comprendiamo entrambi gli strati.

  • Livello di collegamento dati: questo livello è responsabile del trasferimento dei dati da nodo a nodo. Permette di stabilire e terminare la connessione. È anche responsabile del rilevamento e della correzione degli errori che possono verificarsi a livello fisico. Il livello di collegamento dati è suddiviso in due sottolivelli:
      MAC:MAC sta per Media Access Control. Definisce il modo in cui i dispositivi in ​​una rete ottengono l'accesso al mezzo. Fornisce incapsulamento e decapsulamento dei dati, rilevamento degli errori e segnalazione.
  • LLC:LLC sta per controllo del collegamento logico. È responsabile del filtraggio dell'accettazione dei frame, della notifica di sovraccarico e della gestione del ripristino.
  • Livello fisico: il livello fisico è responsabile della trasmissione dei dati grezzi. Definisce le specifiche per parametri quali livello di tensione, temporizzazione, velocità dati e connettore.

Le specifiche CAN definiscono il protocollo CAN e il livello fisico CAN, che sono definiti nello standard CAN ISO 11898. La ISO 11898 è composta da tre parti:

codice c ass
  • ISO 11898-1: questa parte contiene le specifiche del livello di collegamento dati e del collegamento del segnale fisico.
  • ISO 11898-2: questa parte rientra nel livello fisico CAN per CAN ad alta velocità. Il CAN ad alta velocità consente una velocità dati fino a 1 Mbps utilizzata nel gruppo propulsore e nell'area di ricarica del veicolo.
  • ISO 11898-3: questa parte rientra anche nel livello fisico CAN per CAN a bassa velocità. Consente una velocità dati fino a 125 kbps e il CAN a bassa velocità viene utilizzato laddove la velocità di comunicazione non è un fattore critico.

CiA DS-102: la forma completa di CiA è CAN in Automation, che definisce le specifiche per il connettore CAN.

arraylist ordinato in Java

Per quanto riguarda l'implementazione, il controller CAN e il transceiver CAN vengono implementati nel software con l'aiuto dell'applicazione, del sistema operativo e delle funzioni di gestione della rete.

CAN Inquadratura

Comprendiamo la struttura del frame CAN.

Protocollo CAN
    SOF:SOF sta per l'inizio del frame, il che indica che il nuovo frame è inserito in una rete. È di 1 bit.Identificatore:Un formato dati standard definito nella specifica CAN 2.0 A utilizza un identificatore di messaggio a 11 bit per l'arbitraggio. Fondamentalmente questo identificatore di messaggio imposta la priorità del frame di dati.RTR:RTR sta per Remote Transmission Request, che definisce il tipo di frame, se si tratta di un frame di dati o di un frame remoto. È di 1 bit.Campo di controllo:Ha funzioni definite dall'utente.
      ANDARE:Un bit IDE in un campo di controllo indica l'estensione dell'identificatore. Un bit IDE dominante definisce l'identificatore standard a 11 bit, mentre il bit IDE recessivo definisce l'identificatore esteso a 29 bit.contenuto scaricabile:DLC sta per Data Length Code, che definisce la lunghezza dei dati in un campo dati. È di 4 bit.Campo dati:Il campo dati può contenere fino a 8 byte.
    Campo CRC:Il frame dati contiene anche un campo di controllo di ridondanza ciclica di 15 bit, che viene utilizzato per rilevare la corruzione se si verifica durante il tempo di trasmissione. Il mittente calcolerà il CRC prima di inviare il frame di dati, e anche il destinatario calcolerà il CRC e quindi confronterà il CRC calcolato con il CRC ricevuto dal mittente. Se il CRC non corrisponde, il ricevitore genererà l'errore.Campo ACK:Questo è il riconoscimento del destinatario. In altri protocolli, dopo aver ricevuto tutti i pacchetti viene inviato un pacchetto separato per la conferma, ma nel caso del protocollo CAN non viene inviato alcun pacchetto separato per la conferma.EOF:EOF sta per fine del fotogramma. Contiene 7 bit recessivi consecutivi noti come Fine del frame.

Ora vedremo come vengono trasmessi i dati attraverso la rete CAN.

Protocollo CAN

Una rete CAN è composta da più nodi CAN. Nel caso precedente, abbiamo considerato tre nodi CAN e li abbiamo denominati nodo A, nodo B e nodo C. Il nodo CAN è costituito da tre elementi indicati di seguito:

  • Ospite
    Un host è un microcontrollore o microprocessore che esegue alcune applicazioni per svolgere un lavoro specifico. Un host decide cosa significa il messaggio ricevuto e quale messaggio inviare successivamente.
  • Controllore CAN
    Il controller CAN si occupa delle funzioni di comunicazione descritte dal protocollo CAN. Inoltre attiva la trasmissione o la ricezione dei messaggi CAN.
  • PUÒ ricetrasmettitore
    Il ricetrasmettitore CAN è responsabile della trasmissione o della ricezione dei dati sul bus CAN. Converte il segnale dati nel flusso di dati raccolti dal bus CAN che il controller CAN può comprendere.

Nello schema sopra, per trasmettere o ricevere i dati viene utilizzato un cavo a doppino intrecciato non schermato. È noto anche come bus CAN e il bus CAN è costituito da due linee, ovvero la linea CAN bassa e la linea CAN alta, note anche come CANH e CANL, rispettivamente. La trasmissione avviene a causa della tensione differenziale applicata a queste linee. La CAN utilizza un cavo a doppino intrecciato e una tensione differenziale a causa del suo ambiente. Ad esempio, in un'auto, un motore, un sistema di accensione e molti altri dispositivi possono causare la perdita e il danneggiamento dei dati a causa del rumore. La torsione delle due linee riduce anche il campo magnetico. Il bus termina con una resistenza da 120Ω a ciascuna estremità.

Caratteristiche CAN

Protocollo CAN

Con l'aiuto della tensione differenziale determineremo come vengono trasmessi 0 e 1 attraverso il bus CAN. La figura sopra è il grafico della tensione che mostra il livello di tensione di CAN basso e CAN alto. Nella terminologia CAN, si dice che la logica 1 sia recessiva mentre la logica 0 è dominante. Quando la linea CAN alta e la linea CAN bassa vengono applicate a 2,5 volt, la tensione differenziale effettiva sarà pari a zero volt. Uno zero volt sul bus CAN viene letto dal ricetrasmettitore CAN come recessivo o logico 1. Uno zero volt sul bus CAN è uno stato ideale del bus. Quando la linea CAN alta viene portata a 3,5 volt e la linea CAN bassa viene abbassata a 1,5 volt, la tensione differenziale effettiva del bus sarà di 2 volt. Viene trattato come un bit dominante o 0 logico dal ricetrasmettitore CAN. Se lo stato del bus venisse raggiunto al dominante o allo 0 logico, diventerebbe impossibile passare allo stato recessivo da qualsiasi altro nodo.

oggetto di Java

Punti chiave appresi dalle caratteristiche CAN

  • La logica 1 è uno stato recessivo. Per trasmettere 1 sul bus CAN, sia CAN alto che CAN basso devono essere applicati con 2,5 V.
  • Lo 0 logico è uno stato dominante. Per trasmettere 0 sul bus CAN, è necessario applicare CAN high a 3,5 V e CAN low a 1,5 V.
  • Lo stato ideale dell'autobus è recessivo.
  • Se il nodo raggiunge lo stato dominante, non può tornare allo stato recessivo da nessun altro nodo.

Logica del bus CAN

Protocollo CAN
Protocollo CAN

Dallo scenario sopra, apprendiamo che lo stato dominante sovrascrive lo stato recessivo. Quando il nodo invia simultaneamente il bit dominante e quello recessivo, il bus rimane dominante. Il livello recessivo si verifica solo quando tutti i nodi inviano il bit recessivo. Tale logica è nota come logica AND e fisicamente è implementata come un circuito a collettore aperto.

Principio di comunicazione CAN

Come sappiamo il messaggio viene inviato in base alla priorità impostata nel campo arbitrale. Per il frame standard l'identificatore del messaggio è di 11 bit, mentre per il frame esteso l'identificatore del messaggio è di 29 bit. Consente al progettista del sistema di progettare l'identificatore del messaggio durante la progettazione stessa. Più piccolo è l'identificatore del messaggio, maggiore sarà la priorità del messaggio.

Capiamo come funziona l'arbitrato attraverso un diagramma di flusso.

Protocollo CAN (Controller Area Network).

Il mittente desidera inviare il messaggio e attende che il bus CAN diventi inattivo. Se il bus CAN è inattivo, il mittente invia il SOF o il bit dominante per l'accesso al bus. Quindi invia il bit identificativo del messaggio nel bit più significativo. Se il nodo rileva il bit dominante sul bus mentre ha trasmesso il bit recessivo, significa che il nodo ha perso l'arbitraggio e smette di trasmettere ulteriori bit. Il mittente attenderà e invierà nuovamente il messaggio una volta che l'autobus sarà libero.

Esempio di arbitrato CAN

Protocollo CAN

Se consideriamo tre nodi, ovvero Nodo 1, Nodo 2 e Nodo 3, gli identificatori di messaggio di questi nodi sono rispettivamente 0x7F3, 0x6B3 e 0x6D9.

Protocollo CAN

La trasmissione di tutti e tre i nodi con il bit più significativo è mostrata nel diagramma sopra.

undicithbit: poiché tutti e tre i bit dei nodi sono recessivi, anche il bit del bus rimarrà recessivo.

10thbit: tutti i nodi hanno il decimo bit come recessivo, quindi anche il bus rimarrà recessivo.

9thbit: il nodo 1 ha un bit recessivo mentre gli altri nodi hanno un bit dominante, quindi anche il bus rimarrà dominante. In questo caso, il nodo 1 ha perso l'arbitraggio, quindi smette di inviare bit.

modelli di progettazione in Java

8thbit: sia il nodo 2 che il nodo 3 inviano bit recessivi, in modo che lo stato del bus rimanga recessivo.

7thbit: il nodo 2 sta inviando il bit dominante mentre il nodo 3 ha inviato il bit recessivo, in modo che lo stato del bus rimanga dominante. In questo caso il nodo 3 ha perso l'arbitrato, quindi smette di inviare il messaggio mentre il nodo 2 ha vinto l'arbitrato significa che continuerà a tenere il bus fino alla ricezione del messaggio.