Modulo Canbus I2C: nuova release di SeeedStudio

Canbus

Prima di addentrarci nella presentazione del prodotto, è utile richiamare qualche cenno generale inerente al Canbus.

Il termine Canbus bus (o CAN bus) è l’acronimo di “Controller Area Network Bus“. Siamo negli anni ’80 e, per innalzare il livello di affidabilità dei suoi prodotti, la Bosch sviluppa un modulo di comunicazione che possa essere efficiente in qualsiasi tipo di condizione estrema, dal caldo torrido al freddo polare, passando per ambienti umidi o particolarmente esposti a interferenze elettromagnetiche. Da quel giorno sono passati molti anni, ma ora il Canbus è uno standard utilizzato da chiunque. Se avete un’auto anche non particolarmente recente, siate pur certi che il suo modulo di rilevazione guasti è, senza dubbio, basato su Canbus.

Ovviamente, con il passare degli anni, questo tipo di tecnologia è andata oltre l’automotive: al giorno d’oggi, infatti, il protocollo di comunicazione Canbus è standardizzato addirittura da una normativa specifica (ISO 11898-1 del 2015) e viene utilizzato per applicazioni industriali. CAN è un sistema di rete a due fili (Low e High), half duplex ad alta velocità, che è di gran lunga superiore alle tecnologie seriali convenzionali come RS232 in termini di funzionalità e affidabilità. Le implementazioni CAN sono, oltre tutto, più convenienti: con la sua velocità di trasmissione di 1 MBit/sec può facilmente superare in efficienza una connessione TCP/IP di 100 MBit/sec. Se vi state chiedendo come il Canbus possa risultare più efficiente di una connessione 100 volte più veloce, la risposta è: questione di latenza. Questo parametro fa una differenza enorme a livello di prestazione e, da sempre, la latenza è il vero tallone d’Achille del TCP.

La ragione sta nel fatto che parte del protocollo di comunicazione TCP/IP fornisce il controllo degli errori end-to-end della trasmissione dei dati per uno scambio di dati affidabile e sequenziale. Questo significa che TCP garantisce la consegna ordinata di un flusso di byte controllando la dimensione del segmento, il controllo del flusso e la velocità di scambio dei dati. Se i pacchetti IP vengono persi o consegnati “Out of order”, il protocollo richiede la ritrasmissione dei pacchetti persi e rimette in ordine i pacchetti fuori ordine. Quindi TCP passa i dati al livello dell’applicazione. TCP è un protocollo molto metodico e affidabile che verifica continuamente lo stato della rete e riduce la velocità di trasferimento dei dati se rileva una congestione. Poiché TCP è così sensibile allo stato della rete, la latenza è un fattore critico per il suo funzionamento. Con l’aumentare della latenza, TCP rallenta drasticamente la velocità di trasferimento dei dati e anche i dati diventano di natura più “bursty” (intermittente, alternando periodi in cui i dati hanno flusso regolare ad altri in cui, di fatto, non c’è trasmissione).

Dall’altra parte, il CAN gestisce gli errori in maniera capillare, grazie ai tempi brevi di reazione, rilevamento tempestivo degli errori e al loro rapido ripristino, la latenza rimane costantemente bassa.

 

Canbus

Protocollo di Trasmissione

Il Control Area Network ha un modello di trasmissione dati basato su bit dominanti e bit recessivi. I bit dominanti sono gli 0, i recessivi gli 1. Se, ad esempio, viene trasmesso un 1 e uno 0, il bit dominante è l’unico ad essere visibile in rete. In seguito alle “collisioni”, i bit recessivi vengono mascherati. Questa particolare scelta progettuale deriva dal fatto che, imponendo una differenza di potenziale all’interno del circuito, il sistema “dominante-recessivo” permette che l’intera rete possa rilevarla senza possibilità di errore o ambiguità.

Il Bus utilizzato è solitamente di tipo differenziale, con schema CSMA/BA, l’evoluzione del CSMA puro. L’adozione della variante BA (Carrier Sense Multiple Access Bitwise Arbitration) è stata resa necessaria per eliminare i conflitti di trasmissione. Se due o più dispositivi trasmettono contemporaneamente sulla linea, la trasmissione viene permessa solo al dispositivo a priorità più elevata.

Messaggi (Frame)

Dopo aver analizzato le modalità di trasmissione del Canbus, è tempo di orientarci direttamente sulle tipologie di messaggi. Nel Canbus ce ne sono in tutto quattro:

  • Data Frame – contiene i dati trasmessi dal nodo di comunicazione. Inizia con il bit SOF (Start of Frame) e termina con 7 bit EOF (End of Frame). Il campo dati ha una lunghezza che va da 0 a 8 byte. Il Data Frame può essere di due tipi: Base Frame (11 bit di identificazione) ed Extended Frame (29 bit di identificazione). La richiesta remota di trasmissione (Bit RTR) è in modalità dominante (0). Il codice di lunghezza dati (DLC) è composto da 4 bit.
  • Remote Frame – richiede la trasmissione di un particolare identificatore. Come formato è analogo al Data Frame, ma in questo caso il bit RTR è recessivo, mentre il campo DLC contiene il numero di byte richiesti al Data Frame.
  • Error Frame – viene trasmesso da un qualsiasi nodo che rileva un errore nella comunicazione. Composto da due campi (Erorr Flage Error Delimiter). L’Error Flag può essere sia attivo (Active Error Flag) che passivo (Passive Error Flag). Il primo è trasmesso da un nodo che ha rilevato un errore di rete, il secondo è trasmesso da un nodo che ha letto sulla rete la presenza dell’Active Error Flag.
  • Overload Frame – ha il compito di introdurre ritardi tra il Data Frame e il Remote Frame. Questo tipo di condizione si attiva in presenza di due casi specifici: il ricevitore richiede un ritardo di trasmissione dal Data o Remote Frame, oppure viene individuato un bit dominante nell’intervallo di trasmissione.

Canbus

Adesso che abbiamo le idee un po più chiare sul funzionamento del protocollo Canbus, parliamo dell’I2C Canbus Module di SeeedStudio. Come già detto, non si tratta di un prodotto concettualmente nuovo, ma di una nuova release di un dispositivo precedente che potete trovare a questo link.

Il modulo I2C Canbus utilizza l’I2C per la comunicazione. L’Indirizzo I2C predefinito è 0x25 e ha una velocità massima di 400k. La scheda è piccola e flessibile, il che la rende rapidamente utilizzabile in qualsiasi sistema con un’interfaccia I2C. L’MCP2551 è un ricetrasmettitore CAN ad alta velocità, dispositivo a tolleranza di errore che funge da interfaccia tra un controller del protocollo CAN e il bus fisico. L’MCP2551 fornisce capacità di trasmissione e ricezione differenziali per il controller del protocollo CAN ed è completamente compatibile con lo standard ISO-11898.

 

Canbus

L’MCP2515 è un controller CAN autonomo di seconda generazione. È compatibile a livello di pin e funzioni con l’MCP2510 e include anche funzionalità aggiornate come throughput più veloce, filtraggio dei byte di dati e supporto per i protocolli con attivazione temporale. Inoltre, sulla scheda è presente un microcontrollore Atmega168PA che può essere programmato tramite una scheda da USB a seriale, modificando il firmware o scrivendo direttamente la vostra applicazione. Il modulo si basa sul controller CAN Bus MCP2515 ad alte prestazioni e sul ricetrasmettitore CAN Bus MCP2551, fornendo una velocità di comunicazione Canbus fino a 1 Mb/s.

Il cavo Grove incluso nel kit che consente di collegare facilmente il modulo alla board Arduino. Potete trovare il modulo di SeeedStudio a questo link. Fate attenzione, perché esistono due versioni: la prima con l’I2C, la seconda basata solo su trasmissione seriale è la release precedente. Entrambe le versioni costano 20 dollari circa, ma vi consigliamo ovviamente l’ultima uscita.

 

Iscrivetevi ai nostri gruppi Telegram…

… e non dimenticate di farlo anche sui social!

###Da sempre appassionato di tecnologia, soffro di insaziabile curiosità scientifica. Adoro sperimentare e approfondire le mie conoscenze sulle ultime novità sul mercato in termini di hardware, alta tecnologia e videogiochi. Attratto e coinvolto nella prototipazione hardware dalla piattaforma Arduino, Raspberry Pi e Nvidia Jetson.### ###Always passionate about technology, I am suffering from insatiable scientific curiosity. I love experimenting and deepening of my knowledge on the latest news on the market in terms of hardware, hi-tech and video games. Got attracted and involved in hardware prototyping by the Arduino platform, Raspberry Pi and Nvidia Jetson.###

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.