~
CAN Bus: i principi di funzionamento

Cos'è il sistema CAN BUS?
In un sistema CAN BUS automobilistico, le unità di controllo elettroniche (ECU) possono essere, ad esempio, il controllo del motore, gli airbag, il sistema audio, ecc. Un'auto moderna può avere fino a 70 ECU - e ciascuna di esse può contenere informazioni che necessitano di essere condivisi con altre parti della rete.
Ecco dove entra in gioco lo standard CAN:
Il sistema CAN BUS consente a ciascuna ECU di comunicare con tutte le altre ECU, senza complessi cablaggi dedicati. Nello specifico, una ECU può preparare e trasmettere informazioni (come i dati dei sensori) tramite il CAN BUS (composto da due fili, CAN low e CAN high). I dati trasmessi vengono accettati da tutte le altre ECU della rete CAN e ciascuna di esse può quindi verificare i dati e decidere se riceverli o ignorarli.
Livello fisico e livello di collegamento dati del CAN BUS (OSI)
In termini più tecnici, la rete di controllo d'area è descritta da uno strato di collegamento dati e uno strato fisico. Nel caso del CAN ad alta velocità, la norma ISO 11898-1 descrive il livello di collegamento dati, mentre la norma ISO 11898-2 descrive il livello fisico. Il ruolo del CAN è spesso presentato nel modello OSI a 7 livelli come illustrato.
Il livello fisico del CAN BUS definisce elementi come i tipi di cavo, i livelli del segnale elettrico, i requisiti del nodo, l'impedenza del cavo, ecc. Ad esempio, ISO 11898-2 standardizza una serie di aspetti, tra cui quanto segue:
- Baud rate: i nodi CAN devono essere collegati tramite un bus a due fili con velocità di trasmissione fino a 1 Mbit/s (CAN classico) o 5 Mbit/s (CAN FD).
- Lunghezza cavo: la lunghezza massima del cavo CAN deve essere compresa tra 500 metri (125 kbit/s) e 40 metri (1 Mbit/s).
- Terminazione: il BUS CAN deve essere terminato correttamente utilizzando un resistore di terminazione del bus CAN da 120 ohm su ciascuna estremità del bus.
CAN ad alta velocità, CAN a bassa velocità, LIN BUS,...
Nel contesto delle reti di veicoli automobilistici, è probabile che si incontrino vari tipi di reti. Di seguito forniamo una breve panoramica:
CAN BUS ad alta velocità: il focus di questo articolo è sul CAN BUS ad alta velocità (ISO 11898). È di gran lunga lo standard CAN più popolare per il livello fisico, supporta velocità di trasmissione da 40 kbit/s a 1 Mbit/s (CAN classico). Fornisce un cablaggio semplice e viene utilizzato praticamente in tutte le moderne applicazioni automobilistiche. Serve anche come base per diversi protocolli di livello superiore come OBD2, J1939, NMEA 2000, CANopen, ecc. La seconda generazione di CAN si chiama CAN FD (Flexible Data Rate).
CAN BUS a bassa velocità: Questo standard consente velocità di trasmissione da 40 kbit/s a 125 kbit/s e consente la comunicazione del CAN BUS anche se c'è un guasto su uno dei due fili - per questo viene anche chiamato 'CAN BUS tollerante agli errori'. In questo sistema, ogni nodo CAN ha la sua terminazione CAN.
LIN BUS: Il LIN BUS è un supplemento a basso costo alle reti CAN BUS, con meno cablaggi e nodi più economici. I cluster LIN BUS sono tipicamente costituiti da un master LIN che funge da gateway e fino a 16 nodi slave. I casi d'uso tipici includono funzioni non critiche del veicolo come l'aria condizionata, la funzionalità delle porte, ecc. - per i dettagli vedere la nostra introduzione a LIN BUS o l'articolo sul data logger LIN BUS.
Ethernet automobilistico: viene introdotto sempre più spesso nel settore automobilistico per supportare i requisiti di banda larga dei sistemi avanzati di assistenza alla guida (ADAS), sistemi di infotainment, telecamere, ecc. Ethernet automobilistico offre velocità di trasferimento dati molto più elevate rispetto a CAN BUS, ma manca di alcune delle caratteristiche di sicurezza/prestazioni del CAN classico e del CAN FD. Molto probabilmente, nei prossimi anni, sia Automotive Ethernet che CAN FD e CAN XL verranno utilizzati nello sviluppo automobilistico e industriale.
I 4 principali vantaggi del CAN BUS
Lo standard CAN BUS viene utilizzato praticamente in tutti i veicoli e in molte macchine grazie ai seguenti vantaggi chiave:
La storia del CAN BUS in breve
Pre-CAN: le centraline elettroniche delle auto si basavano su complessi cablaggi punto-punto.
- 1986: Bosch sviluppa il protocollo CAN come soluzione.
- 1991: Bosch rilascia CAN 2.0 (CAN 2.0A: 11 bit, 2.0B: 29 bit).
- 1993: Il CAN viene adottato come standard internazionale (ISO 11898).
- 2003: ISO 11898 diventa una serie standard.
- 2012: Bosch ha rilasciato CAN FD 1.0 (Flexible Data Rate).
- 2015: Il protocollo CAN FD viene standardizzato (ISO 11898-1).
- 2016: il livello fisico CAN per velocità dati fino a 5 Mbit/s viene standardizzato nella norma ISO 11898-2.
Oggi, CAN è uno standard nelle automobili (automobili, camion, autobus, trattori, ...), navi, aeroplani, batterie per veicoli elettrici, macchinari e altro ancora.
Il futuro del CAN BUS
Guardando al futuro, il protocollo CAN BUS rimarrà rilevante, anche se sarà influenzato da tendenze significative:
La necessità di funzionalità del veicolo sempre più avanzate. L’ascesa del cloud computing. Crescita dell’Internet delle cose (IoT) e dei veicoli connessi. L'impatto dei veicoli autonomi. L'uso dell'intelligenza artificiale nell'analisi dei dati (vedi ad esempio la nostra introduzione a ChatGPT + CAN BUS).
In particolare, l’aumento dei veicoli connessi (V2X) e del cloud porterà a una rapida crescita della telemetria dei veicoli e dei data logger IoT CAN BUS.
La crescita della CAN FD
Con l'ampliamento delle funzionalità del veicolo aumenta anche il carico sul CAN BUS. Per supportare ciò, CAN FD (Flexible Data Rate) è stato progettato come la "prossima generazione" del CAN BUS.
In particolare, il CAN FD offre tre vantaggi (rispetto al CAN Classico):
- Consente velocità di trasferimento dati fino a 8 Mbit/s (rispetto a 1 Mbit/s).
- Consente payload di dati fino a 64 byte (rispetto a 8 byte).
- Fornisce una maggiore sicurezza attraverso l'autenticazione.
In breve, CAN FD aumenta la velocità e l'efficienza e viene quindi implementato nei veicoli più recenti. Ciò aumenterà anche la necessità di registratori di dati IoT CAN FD.
"I primi veicoli che utilizzano CAN FD appariranno nel 2019/2020 e CAN FD sostituirà gradualmente il CAN classico."
CAN in Automation (CiA), "CAN 2020: Il futuro della tecnologia CAN" -Saperne di più-
Cos'è un frame CAN?
La comunicazione tramite CAN BUS avviene tramite frame CAN.
Di seguito è riportato un frame CAN standard con un identificatore a 11 bit (CAN 2.0A), che è il tipo utilizzato nella maggior parte delle auto. Il frame esteso con identificatore a 29 bit (CAN 2.0B) è identico tranne che per l'ID più lungo. Viene utilizzato ad esempio nel protocollo J1939 per i veicoli pesanti.
Tieni presente che l'ID CAN e i dati sono evidenziati: questi sono importanti quando si registrano i dati CAN BUS, come vedremo di seguito.
Il campo del messaggio del protocollo CAN Bus
- SOF: L'inizio del frame è uno 'dominante 0' per informare gli altri nodi che un nodo CAN intende parlare.
- ID: L'ID è l'identificatore del frame - i valori più bassi hanno una priorità più alta.
- RTR: La richiesta di trasmissione remota indica se un nodo sta inviando dati o richiedendo dati dedicati da un altro nodo.
- Control: il controllo contiene il bit di estensione dell'identificatore (IDE) che è uno "0 dominante" per 11 bit. Contiene inoltre il codice di lunghezza dei dati come valore a 4 bit (DLC) che specifica la lunghezza dei byte di dati da trasmettere (da 0 a 8 byte).
- Dati: i dati contengono i byte di dati, ovvero il carico utile, che include i segnali CAN che possono essere estratti e decodificati per ottenere informazioni.
- CRC: il controllo di ridondanza ciclico viene utilizzato per garantire l'integrità dei dati.
- ACK: Lo slot ACK indica se il nodo ha ricevuto e riconosciuto correttamente i dati.
- EOF: EOF segna la fine del frame CAN.
Errori CAN-BUS
Il frame CAN deve soddisfare una serie di proprietà per essere valido. Se viene trasmesso un frame CAN errato, i nodi CAN lo rileveranno automaticamente e prenderanno le misure necessarie. Questa è definita come gestione degli errori CAN BUS, in cui i nodi CAN tengono traccia dei propri "contatori di errori CAN" e cambiano stato (attivo, passivo, bus spento) a seconda dei loro contatori. La capacità dei nodi CAN problematici di trasmettere dati viene quindi ridotta in modo delicato per evitare ulteriori errori CAN BUS e inceppamenti del bus. Per i dettagli, vedere la nostra introduzione alla gestione degli errori CAN BUS.
Registrazione dati CAN: casi d'uso illustrativi
Esistono diversi casi d'uso comuni per la registrazione dei dati CAN BUS:
Come registrare i dati CAN BUS
Come accennato, due campi CAN sono importanti per la registrazione CAN: L'ID CAN e i dati.
Per registrare i dati CAN è necessario un logger CAN. Ciò consente la registrazione dei dati CAN con timestamp su una scheda SD. In alcuni casi è necessaria un'interfaccia CAN per trasmettere i dati a un PC, ad es. per hacking automobilistico.
Collegamento al CAN BUS
Il primo passo è collegare il logger CAN al CAN BUS. In genere, ciò comporta l'utilizzo di un cavo adattatore:
- Auto: Nella maggior parte delle auto, per la connessione è sufficiente utilizzare semplicemente un adattatore OBD2. Nella maggior parte delle auto, ciò consentirà di registrare dati CAN grezzi, nonché di eseguire richieste di registrazione di dati OBD2 o UDS (Unified Diagnostic Services).
- Veicoli pesanti: per registrare i dati J1939 da camion, escavatori, trattori, ecc., è possibile connettersi al CAN BUS J1939 tramite un cavo connettore J1939 standard (deutsch a 9 pin).
- Marittima: la maggior parte delle navi/imbarcazioni utilizza il protocollo NMEA 2000 e consente la connessione tramite un adattatore M12 per registrare i dati marini.
- CANopen: Per la registrazione CANopen è spesso possibile utilizzare direttamente il connettore CiA 303-1 DB9 (ovvero il connettore predefinito per i nostri data logger CAN), opzionalmente con un'estensione CAN BUS.
- Senza contatto: se non è disponibile alcun connettore, una soluzione tipica è utilizzare un lettore CAN senza contatto, ad es. il coccodrillo CAN. Ciò consente di registrare i dati direttamente dal cablaggio a doppino intrecciato CAN grezzo, senza connessione diretta al CAN BUS (spesso utile a fini di garanzia).
- Altro: In pratica vengono utilizzati innumerevoli altri connettori e spesso è necessario creare un adattatore CAN BUS personalizzato: in questo caso è utile un adattatore generico a filo aperto.
Una volta identificato il connettore corretto e verificato il pin-out, è possibile collegare il logger CAN per avviare la registrazione dei dati. Per CANedge/CLX000, la velocità di trasmissione CAN viene rilevata automaticamente e il dispositivo inizierà immediatamente a registrare i dati CAN grezzi.
Esempio: campione di dati CAN grezzi (J1939)
Facoltativamente è possibile scaricare campioni di dati OBD2 e J1939 da CANedge2 nei nostri documenti introduttivi. È possibile caricare ad esempio questi dati negli strumenti software di decodifica CAN BUS gratuiti.
I dati CANedge vengono registrati nel popolare formato binario MF4 e possono essere convertiti in qualsiasi formato di file utilizzando i nostri semplici convertitori MF4 (ad esempio in CSV, ASC, TRC, ...).
Di seguito è riportato un esempio CSV di frame CAN grezzi registrati da un camion pesante utilizzando il protocollo J1939. Tieni presente che gli ID CAN e i byte di dati sono in formato esadecimale:
Esempio: logger CAN BUS CANedge
CANedge1 consente di registrare facilmente i dati da qualsiasi CAN BUS su una scheda SD da 8-32 GB. Basta collegarlo ad es. un'auto o un camion per iniziare a registrare e decodificare i dati utilizzando software/API gratuiti.
Inoltre, CANedge2 (WiFi) e CANedge3 (3G/4G) ti consentono di inviare i dati al tuo server e aggiornare i dispositivi via etere. -Scopri di più sul CANedge-
Come decodificare i dati CAN grezzi in "valori fisici"
Se esamini il campione di dati CAN grezzi sopra, probabilmente noterai qualcosa:
I dati CAN grezzi non sono leggibili dagli esseri umani.
Per interpretarlo, è necessario decodificare i frame CAN in valori ingegneristici in scala, ovvero valori fisici (km/h, °C, ...).
Di seguito mostriamo passo passo come funziona:
Estrazione di segnali CAN da frame CAN grezzi
Ogni frame CAN sul bus contiene un numero di segnali CAN (parametri) all'interno dei byte di dati CAN. Ad esempio, un frame CAN con un ID CAN specifico può trasportare dati per es. 2 segnali CAN.
Per estrarre il valore fisico di un segnale CAN, sono necessarie le seguenti informazioni:
- Bit di avvio: a quale bit inizia il segnale.
- Lunghezza in bit: la lunghezza del segnale in bit.
- Offset: Valore per compensare il valore del segnale.
- Scala: Valore per moltiplicare il valore del segnale.
Per estrarre un segnale CAN, "taglia" i bit rilevanti, prendi il valore decimale ed esegui un ridimensionamento lineare:
valore_fisico = offset + scala * valore_decimale_grezzo
La sfida dei dati CAN proprietari
Molto spesso le "regole di decodifica CAN" sono proprietarie e non facilmente disponibili (ad eccezione dell'OEM, ovvero del produttore originale). Esistono diverse soluzioni a questo problema quando non sei l'OEM:
- Registra dati J1939: se stai registrando dati grezzi da veicoli pesanti (camion, trattori, ...), probabilmente stai registrando dati J1939. Questo è standardizzato per tutti i marchi e puoi utilizzare il nostro file DBC J1939 per decodificare i dati. Consulta anche la nostra introduzione al data logger J1939.
- Registra dati OBD2/UDS: se devi registrare dati dalle auto, puoi richiedere i dati OBD2/UDS, che è un protocollo standardizzato per tutte le auto. Per i dettagli consultare la nostra introduzione al registratore dati OBD2 e il nostro file DBC OBD2 gratuito.
- Utilizza file DBC pubblici: per le auto, esistono database online in cui altri hanno decodificato alcuni dati CAN proprietari. Manteniamo un elenco di tali database nella nostra introduzione al file DBC.
- Reverse engineering dei dati: puoi anche provare a decodificare i dati da solo utilizzando uno sniffer CAN BUS, anche se può essere laborioso e impegnativo.
- Utilizza moduli sensore: in alcuni casi, potrebbero essere necessari dati del sensore che non sono disponibili sul CAN BUS (o sono difficili da decodificare). Qui è possibile utilizzare moduli sensore CAN come la serie CANmod. Puoi integrare tali moduli con il tuo CAN BUS o usarli come componenti aggiuntivi al tuo registratore CAN per aggiungere dati come GNSS/IMU o dati sulla temperatura.
- Collabora con l'OEM: in alcuni casi, puoi anche collaborare con l'OEM per ottenere regole di decodifica proprietarie. Ciò potrebbe essere necessario per ottimizzare i parametri di controllo del veicolo o per il debug/diagnostica.
Decodifica CAN in tempo reale
Il nostro sito supporta la decodifica dei frame CAN in tempo reale per la diagnosi/risoluzione dei problemi o il monitoraggio del veicolo in tempo reale. Siamo specializzati nella decodifica:
- OBD2: incluso il supporto per PID OBD2 e tutti i PID standard SAE J1979.
- J1939: supporto per parametri J1939 standard inclusi PGN J1939, SPN, ecc.
- NMEA 2000: supporto per dati NMEA 2000 standard, inclusi messaggi PGN NMEA 2000.
Il nostro software di monitoraggio della flotta è progettato per supportare l'analisi dei dati CAN BUS in tempo reale in un'ampia gamma di settori e casi d'uso, come:
- Diagnostica remota: monitora i dati CAN BUS in tempo reale per identificare i problemi del veicolo, ad es. nel campo di un'auto rotta.
- Sicurezza del veicolo: monitora i dati CAN BUS in tempo reale per identificare situazioni di guida pericolose (ad esempio il comportamento del conducente) o veicoli malfunzionanti.
- Distribuzione autonoma: monitorare i dati CAN BUS in tempo reale per monitorare i veicoli autonomi (ad esempio droni, robot) e garantire che funzionino correttamente.
- Flotta: monitora i dati CAN BUS in tempo reale per la manutenzione predittiva della flotta e ottimizza i tempi di fermo del veicolo.
- Tracciamento del carico: monitora i dati CAN BUS in tempo reale per tracciare la posizione e le condizioni del carico in transito.
Inoltre, supportiamo un'ampia gamma di hardware per l'acquisizione di dati CAN BUS in tempo reale, come ad esempio:
- Interfacce OBD2: supporto per interfacce OBD2 standard e avanzate per acquisire dati in tempo reale direttamente dall'ECU.
- Gateway OBD2: supporto per gateway OBD2 per acquisire e trasmettere dati CAN BUS in tempo reale a una piattaforma di monitoraggio remoto.
- Interfacce J1939: supporto per interfacce J1939 per acquisire dati in tempo reale direttamente dall'ECU.
- Gateway J1939: supporto per gateway J1939 per acquisire e trasmettere dati CAN BUS in tempo reale a una piattaforma di monitoraggio remoto.
- Interfacce NMEA 2000: supporto per interfacce NMEA 2000 per acquisire dati in tempo reale direttamente dal BUS NMEA 2000.
- Gateway NMEA 2000: supporto per gateway NMEA 2000 per acquisire e trasmettere dati CAN BUS in tempo reale.