Controller Area Network: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
→Frames: L'italiano vuole "I frame" e non "frames" |
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti. |
||
(43 versioni intermedie di 25 utenti non mostrate) | |||
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
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
== Trasmissione dati ==
Il CAN trasmette dati secondo un modello basato su [[Bit (informatica)|bit]] "dominanti" e "recessivi", in cui i bit dominanti sono gli '''0''' ''logici''
{| style="margin-left:auto; margin-right:auto;"
|-
▲|colspan="2"| '''[[Tabella della verità]] dei bit dominanti/recessivi (AND logico)'''
{| class="wikitable" style="margin-left:auto; margin-right:auto;"
|-
! !! dominante !! recessivo
▲| ''<center>Stato del bus quando due nodi trasmettono</center>''
|-
|-
! recessivo
▲| ''dominante'' || '''''dominante''''' || ''dominante''
▲|-
▲| ''recessivo'' || '''dominante''' || '''''recessivo'''''
|}
|
{| class="wikitable" style="margin-left:auto; margin-right:auto;"
|+ AND logico
|-
|-
| 0 || 0 |-
| 0 || 1 |}
|}
Line 32 ⟶ 37:
Con questa tecnica, quando viene trasmesso un bit recessivo, e contemporaneamente un altro dispositivo trasmette un bit dominante, si ha una collisione, e solo il bit dominante è visibile in rete (tutte le altre collisioni sono invisibili). In pratica avviene che un bit dominante è "asserito" dalla generazione di una tensione fra i conduttori, mentre un bit recessivo è semplicemente ignorato. Si è così sicuri che ogni volta che si impone una differenza di potenziale, tutta la rete la rileva, e quindi "sa" che si tratta di un bit dominante.
Solitamente, quando usata in un bus differenziale, si applica lo schema [[CSMA/BA]] ''(Carrier Sense Multiple Access/Bitwise Arbitration)'': se due o più dispositivi
== I frame ==
Tutti i frame (detti anche "messaggi")
I frame del CAN possono essere di quattro tipi:
* '''Data frame''': frame contenente i dati che il nodo trasmette.
Line 51 ⟶ 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> =
==== Formato del Base frame ====
Il formato del
{| class="wikitable"
Line 61 ⟶ 66:
! Nome del campo !! Lunghezza (numero di bit) !! Funzione
|-
| Start-of-frame
|-
| Identificatore
|-
| Richiesta remota di
|-
| Bit aggiuntivo di identificazione (IDE)
|-
| Bit riservato (r0)
|-
| Codice di lunghezza dati (DLC) || 4 || Numero di byte per codificare ciascun dato (0-8 byte)
|-
| Campo dati
|-
| CRC
|-
| delimitatore CRC
|-
| Slot ACK
|-
| Delimitatore ACK
|-
| End-of-frame (EOF) || 7 || Devono essere bit recessivi
|}
Un vincolo imposto al campo dell'
==== Formato dell'Extended frame ====
Line 96 ⟶ 101:
! Nome del campo !! Lunghezza (numero di bit) !! Funzione
|-
| Start-of-frame
|-
| Identificatore A
|-
| Richiesta remota sostitutiva (SRR) || 1 || Deve essere un bit recessivo
|-
| Bit aggiuntivo di identificazione (IDE)
|-
| Identificatore B
|-
| Richiesta remota di trasmissione (RTR) || 1 || Deve essere un bit dominante
Line 112 ⟶ 117:
| Codice di lunghezza dati (DLC) || 4 || Numero di byte del dato (0-8 byte)
|-
| Campo dati
|-
| CRC
|-
| Delimitatore CRC
|-
| Slot ACK
|-
| Delimitatore ACK
|-
| End-of-frame (EOF) || 7 || Devono essere bit recessivi
Line 131 ⟶ 136:
Il Remote Frame è identico al Data Frame, eccetto che:
* il bit RTR posto allo stato di bit recessivo,
* il campo lunghezza dati contiene il numero di
=== Error Frame ===
Line 152 ⟶ 157:
:2. Viene rilevato un bit dominante durante un intervallo nella trasmissione.
Un overload frame dovuto al caso 1 è consentito solo per essere avviato al momento del primo bit di un intervallo previsto, mentre un overload frame dovuto al caso 2
== Bit stuffing ==
Consiste nell'inserire un bit di valore opposto dopo cinque bit consecutivi dello stesso valore. Questa pratica è chiamata ''bit stuffing'' (letteralmente ''riempimento di bit''), ed è necessaria a causa della codifica utilizzata nel frame, di tipo [[Codifica di linea|NRZ]] (''Non Return to Zero''), che in caso di valori consecutivi uguali mantiene lo stesso valore di tensione e non genera transizioni utili a risincronizzare i dispositivi comunicanti. I frame sottoposti a questa operazione vengono poi "decodificati" dal ricevitore, che rimuove i bit precedentemente inseriti. Di conseguenza, quando vengono ricevuti sei bit uguali consecutivi dello stesso valore (111111 oppure 000000), essi vengono considerati un errore. Il ''bit stuffing'' implica che i frame dati trasmessi possono essere più grandi di quelli che ci si potrebbe aspettare dall'applicazione delle tabelle soprariportate.
== Standard ISO applicabili ==
* '''ISO 11898-2:2003''': CAN ad alta velocità
* '''ISO 11898-3:2006''': CAN [[fault-tolerant]] (a bassa velocità)
* '''ISO 11992-1:2003''': CAN fault-tolerant per autoveicoli
* '''ISO 11898-5:2007:'''
* '''SAE J2411''': CAN single-wire CAN (SWC)
Lo standard '''ISO 11898-2''' utilizza per i segnali una [[linea bilanciata]] a due fili. È il layer fisico più usato in applicazioni per autotrazione e controlli industriali.
Lo standard '''ISO 11898-4''' definisce il tipo di comunicazione del CAN detto ''time-triggered'' (TTCAN), basato su un protocollo di layer fornito di un orologio di sistema per schedulare l'inoltro dei messaggi.
Line 176 ⟶ 181:
== Voci correlate ==
* [[Bus (informatica)]]
== Altri progetti ==
{{interprogetto}}
== Collegamenti esterni ==
* {{
* {{
* {{
* {{
* {{
* {{
* {{
* {{
*{{cita web|https://training.dewesoft.com/online/course/automotive-buses-can-measurement|CAN Bus and CAN FD Data Acquisition and Analysis|lingua=en}}
{{Bus computer}}
|