Controller Area Network: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m Aggiunto esempio di Convertitore CAN e tutorial su CAN e CAN FD
formatnum
Riga 1:
Il '''Controller Area Network''', noto anche come '''CAN-bus''', è uno standard [[Porta seriale|seriale]] per [[Bus (informatica)|bus]] di campo (principalmente in ambiente automotive), di tipo [[multicast]], introdotto negli [[anni 1980|anni ottanta]] dalla [[Robert Bosch GmbH]], per collegare diverse [[Unità di controllo elettronico (elettromeccanica)|unità di controllo elettronico]] (ECU). Il CAN è stato espressamente progettato per funzionare senza problemi anche in ambienti fortemente disturbati dalla presenza di [[onde elettromagnetiche]] e può utilizzare come mezzo trasmissivo una linea a differenza di potenziale bilanciata come la [[RS-485]]. L'immunità ai disturbi EMC può essere ulteriormente aumentata utilizzando cavi a [[doppino ritorto|doppino intrecciato]].
 
Sebbene inizialmente applicata in ambito [[automotive]], come bus per autoveicoli, attualmente è usata in molte applicazioni industriali di tipo [[Sistema embedded|embedded]], dove è richiesto un alto livello di immunità ai disturbi. Il [[bit rate]] può raggiungere {{M|1 |u=Mbit/s}} per reti lunghe meno di {{M|40 |u=m}}. Velocità inferiori consentono di raggiungere distanze maggiori (ad es. {{M|125 |u=kbit/s}} per {{M|500 |u=m}}). Il protocollo di comunicazione del CAN è standardizzato come ISO 11898-1 (2015). Questo standard descrive principalmente lo strato (''layer'') di scambio dati (''data link layer''), composto dallo strato sottostante (''sublayer'') "logico" (''Logical Link Control, LLC'') e dallo strato sottostante del ''Media Access Control, (MAC)'' e da alcuni aspetti dello strato "fisico" (''physical layer'') descritto dal modello [[ISO/OSI]] (''ISO/OSI Reference Model''). I protocolli di tutti gli altri layer sono lasciati alla libera scelta del progettista della rete.
 
== Trasmissione dati ==
Riga 56:
Lo standard CAN ''deve'' obbligatoriamente riconoscere il formato ''base frame'' e ''può'' opzionalmente riconoscere il formato ''extended frame format'' (che, tuttavia, deve essere tollerato).
 
Il CAN ''base'' permette 2<sup>11</sup> = {{formatnum:2048}} tipi di messaggi diversi, ma da specifiche Bosch se ne possono usare solo {{formatnum:2031}}. Nella versione ''extended'' si possono avere fino a 2<sup>29</sup> = 536&nbsp;870&nbsp;912{{formatnum:536870912}} tipi di messaggi.
 
==== Formato del Base frame ====
Riga 66:
! Nome del campo !! Lunghezza (numero di bit) !! Funzione
|-
| Start-of-frame || 1 || Indica l'avvio della sequenza di trasmissione
|-
| Identificatore || 11 || Identificatore (unico) dei dati
|-
| Richiesta remota di trasmissione (RTR) || 1 || Deve essere un bit dominante
|-
| Bit aggiuntivo di identificazione (IDE) || 1 || Deve essere un bit dominante
|-
| Bit riservato (r0) || 1 || Riservato
|-
| Codice di lunghezza dati (DLC) || 4 || Numero di byte per codificare ciascun dato (0-8 byte)
|-
| Campo dati || 0-8 byte || Dati da trasmettere (la lunghezza è specificata dal campo DLC)
|-
| CRC || 15 || [[Controllo di parità a ridondanza]]
|-
| delimitatore CRC || 1 || Deve essere un bit recessivo
|-
| Slot ACK || 1 || Il trasmettitore invia un bit recessivo e ogni ricevitore può confermare la ricezione con un bit dominante
|-
| Delimitatore ACK || 1 || Deve essere un bit recessivo
|-
| End-of-frame (EOF) || 7 || Devono essere bit recessivi
Riga 101:
! Nome del campo !! Lunghezza (numero di bit) !! Funzione
|-
| Start-of-frame || 1 || Indica l'avvio della sequenza di trasmissione
|-
| Identificatore A || 11 || Prima parte dell'identificatore (unico) dei dati
|-
| Richiesta remota sostitutiva (SRR) || 1 || Deve essere un bit recessivo
|-
| Bit aggiuntivo di identificazione (IDE) || 1 || Deve essere un bit recessivo
|-
| Identificatore B || 18 || Seconda parte dell'identificatore (unico) dei dati
|-
| Richiesta remota di trasmissione (RTR) || 1 || Deve essere un bit dominante
Riga 117:
| Codice di lunghezza dati (DLC) || 4 || Numero di byte del dato (0-8 byte)
|-
| Campo dati || 0-8 byte || Dati da trasmettere (lunghezza specificata dal campo DLC)
|-
| CRC || 15 || [[Controllo di parità a ridondanza]]
|-
| Delimitatore CRC || 1 || Deve essere un bit recessivo
|-
| Slot ACK || 1 || Il trasmettitore invia un bit recessivo e ogni ricevitore può confermare la ricezione con un bit dominante
|-
| Delimitatore ACK || 1 || Deve essere un bit recessivo
|-
| End-of-frame (EOF) || 7 || Devono essere bit recessivi