Programmazione.it v6.2
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Chat Forum
Una panoramica sul protocollo CAN
Scritto da Rocco Galati il 10-11-2009 ore 11:18
Intel Software
Il Controller Area Network (CAN), noto anche come CAN-bus, è uno standard seriale per bus di campo, ideato allo scopo di collegare diverse unità di controllo elettronico. La sua potenzialità è quella di essere del tutto, o quasi, immune ai disturbi elettromagnetici e di rete, riuscendo quindi a offrire una grande protezione dagli errori.

Nel protocollo CAN ci sono cinque meccanismi di rilevamento dell’errore, che operano simultaneamente:
  • Cyclic Redundancy Check: è un controllo di parità a ridondanza, che utilizza quindici bit ed è molto utile per messaggi di piccole dimensioni; il bit successivo è trasferito a livello recessivo;
  • Frame Check: effettua una verifica dei campi del frame a valore fisso, con il bit recessivo fissato al valore unitario; se questo bit è diverso, si invia un errore di formato;
  • Acknowledge Error Check: invia un ACK a livello distribuito; un nodo che risponde correttamente invia un messaggio, settando il bit dominante di ACK a zero. Allo stesso tempo, il trasmettitore rileva lo stato del bus e, se risulta un livello relativo a un bit recessivo, si invia un errore di acknowledge segnalando che il messaggio non è stato letto da alcun nodo;
  • Bit-monitoring: mentre il trasmettitore invia un messaggio sul bus, questo meccanismo legge anche il livello dello stesso e se il bit del messaggio letto è diverso da quello scritto, si genera un errore di bit-monitoring;
  • Bit-stuffing: serve ad assicurare che lo stream di bit sul bus contenga un numero di transizioni sufficienti per garantire che i messaggi ricevuti possano sincronizzare il proprio clock locale tramite l'algoritmo DPLL. Ogni volta che vengono individuati cinque bit allo stesso livello, viene aggiunto un bit di valore opposto; in seguito il ricevitore elimina gli stuff bit per ottenere la sequenza originale.
Nel protocollo CAN tutti i nodi sono identificati come master, nella comunicazione; per questo motivo, può accadere che si crei una collisione se più nodi iniziano a trasferire in contemporanea. In questo caso il MAC assicura che il messaggio caratterizzato dall’ID più basso prevalga e che il nodo che lo trasferisce non si accorga della collisione. A tutti gli altri nodi viene inviato un ERROR FLAG (in caso di errori locali i flag si sovrappongono), seguito da un ERROR DELIMITER, in modo tale che il messaggio venga scartato da ogni nodo. Tutti i messaggi coinvolti nella collisione dovranno essere ritrasferiti quando il bus diventa nuovamente disponibile.

Una volta ottenuto il sincronismo, grazie al circuito che implementa il DPLL, il protocollo CAN ha un sistema di comunicazione con accesso di tipo CSMA/BA senza prelazione e basato su priorità. Ad ogni messaggio è assegnata una priorità ed esiste un algoritmo distribuito che ne determina la priorità più alta, secondo l'arbitraggio bitwise. Esistono, inoltre, opportune tecniche per determinare la schedulazione dei messaggi al fine di garantire, a priori, il rispetto dei requisiti temporali dei singoli scambi. In questo modo si garantisce anche e soprattutto un comportamento deterministico e prevedibile tale da evitare congestioni per traffico elevato.
Precedente: Nasce Geeknet, un network per l'Open Source
Successiva: CodeBurner, strumento di reference per sviluppatori web (2/2)
Copyright Programmazione.it™ 1999-2009. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.716 secondi. Sito ottimizzato per Mozilla Firefox. Powered by Kyron.