Académique Documents
Professionnel Documents
Culture Documents
Lutilizzo di VNT per limplementazione e la simulazione di una CAN (Controller Area Network)
Antonio Mangiardi
Cosa tratteremo
Comunicazione in sistemi di automazione e automotive I Bus di campo Il protocollo CAN Vehicle Network Toolbox
- Panoramica del tool - Capacit del tool - Utilizzo e funzionamento
Una soluzione pi efficiente quella di connettere tutti i componenti sfruttando un bus e gestire la comunicazione tramite opportune implementazioni.
Lo standard CAN
CAN (Controller Area Network) Nasce nel 1986, ad opera della Robert Bosch GmbH su richiesta della Mercedes, al fine di ridurre il cablaggio tra le varie apparecchiature che iniziavano ad affollare gli autoveicoli. Oggi viene utilizzato grazie alle sue propriet, in vari ambiti: dalla robotica alla domotica, dalla elettronica marina alle macchine agricole nonch in ambito medicale proprio grazie alla sicurezza e allaffidabilit del protocollo.
Lo standard CAN
Il protocollo CAN dall86 a oggi ha subito alcune variazioni. Oggi si fa uso dellultima versione ossia CAN 2.0 rilasciata nel 1991, suddivisa in part A e part B. (CAN 2.0 A e CAN 2.0 B) Vediamo ora le peculiarit
Lo standard CAN
Semplicit di cablaggio ed espansione: possibile aggiungere o rimuovere nodi (periferiche) con grande semplicit, grazie al tipo di cavo e grazie al fatto che il CAN MESSAGE ORIENTED e non ADDRESS ORIENTED Tempi di risposta rigidi: grazie a mirati artefici, si riducono le perdite di tempo Immunit ai disturbi * Elevata Affidabilit: ogni nodo si accorge da solo di eventuali errori e provvede alla ritrasmissione senza intervento del software Confinamento degli Errori: ogni nodo in grado di autodiagnosticare problemi e autoescludersi dal bus Priorit dei messaggi: la priorit intrinseca al messaggio ed legata alla struttura del messaggio stesso. Il Bus implementa una WIRED-AND ( 1 && 0 = 0 lo zero dominante) Protocollo Multimaster: ogni nodo pu prendere il controllo del bus e gli altri ascoltano; nel caso in cui pi nodi prendano il controllo del bus, vince chi ha identificatore pi basso ossia a pi alta priorit.
Lo standard CAN
Lo standard CAN
Tipi di messaggi FRAME:
1. 2. 3. 4. 5.
- DATA FRAME - REMOTE FRAME - ERROR FRAME - OVERLOAD FRAME - INTERFRAME SPACE (non proprio un frame)
Lo standard CAN
Data Frame: la struttura tramite la quale i nodi inviano linformazione SoF Arbitration Control DATA
identificatore rtr
CRC
ACK EoF
Start of Frame: unico bit dominante (0) Arbitration: identificatore a 11 bit + RTR (remote trasmission request)
DL1 DL0
Control : 6 bit che contengono linformazione della lunghezza dei dati in arrivo res1 res0 e due bit riservati *
DL3
DL2
DATA : ha lunghezza variabile da 0 a 8 Byte, il dato vero e proprio CRC (cyclic redundancy check ): contiene un codice che viene calcolato per ogni data frame, il suo valore in 15 bit tiene conto del valore dei precedenti bit. Il nodo ricevente calcola a sua volta, in base al data field, il CRC corrispondente il quale deve corrispondere a quello del nodo trasmittente. Il CRC seguito da un bit recessivo Del. detto CRC delimiter, calcolato dal nodo e non da software. CRC ACK : acknowledgment (riconoscimento) composto da 2 bit uno ACK slot e ACK delimiter, sono entrambi trasmessi recessive (1), tutti i nodi interessati al messaggio trasmettono a loro volta un bit dominante (0) il che significa per il nodo ACK slot (1) ACK delimiter (1) trasmittente che il messaggio stato ricevuto * End of Frame : consiste in 7 bit recessivi.
Lo standard CAN
Interframe: non un vero e proprio frame, precede i data frame e remote frame e viene inviato dallultimo nodo che ha trasmesso. composto da 2 campi:
Intermission Bus idle
Lo standard CAN
Remote Frame Il remote frame strutturato in maniera quasi identica al Data Frame: la differenza tra i due sta nell ID field (il bit RTR assume valore recessivo, per questo ha priorit minore*) e nel fatto che non possiede il data field
SoF ID con RTR = 1 Control CRC ACK EoF
Viene inviato da un nodo che necessiti di un dato. Il tipo di dato desiderato viene specificato nell ID field. Il nodo interessato risponder trasmettendo un Data Frame con lo stesso ID e contenente linformazione richiesta nel campo data field ovviamente.
Lo standard CAN
Error frame: viene inviato da un nodo che rileva un errore in un Data frame o in un Remote frame ed composto da due campi:
Error Flag Error delimiter
Error flag: costituito 6 bit che possono essere dominanti o recessivi a seconda dello stato in cui si trova il nodo. Error delimiter: consiste nellinvio di 8 bit recessivi
In questo caso, viene violata la regola del bit stuffing
Lo standard CAN
Overload Frame viene inviato da un nodo in una delle seguenti condizioni: o Un nodo che rileva di essere busy
indaffarato: occorre pi tempo per processare i dati prima di riceverne altri e non pu quindi ricevere correttamente il frame successivo. essendo un Interframe costituito da bit tutti recessivi, il bit dominante viene interpretato come la condizione di overload di un altro nodo, cui rispondere con un Overload Frame.
Lo standard CAN
Differenze sostanziali tra CAN 2.0 A e 2.0 B: Tutto quello che stato detto sino ad ora riguarda lo standard 2.0 A ed valido anche per il 2.0 B. La differenza tra i due sta nella struttura del data frame e remote frame:
SoF 11 bit ID RTR r1 r0 D L DATA 0 8 Byte EoF
Nello standard 2.0 B lidentificativo composto da 29 bit in particolare suddiviso in Base Id 11 bit e in Extension Id 18 bit separati da 2 bit: SRR e IDE
SoF 11 bit ID SRR IDE 18 bit Id RTR r1 r0 DL DATA 0 8 Byte EoF
Lo standard CAN
La gestione degli errori
Il processo di segnalazione errori si articola in 5 fasi: Un nodo rileva un errore (in trasmissione o ricezione) Invia immediatamente un Error Frame Il messaggio incriminato viene ignorato da tutti i nodi Viene aggiornato lo stato del nodo Il messaggio viene ritrasmesso, competendo eventualmente con altri
Lo standard CAN
Un errore pu essere rilevato in 5 modi, tre a livello messaggio e due a livello del singolo bit I. Stuff error: ogni 5 bit dello stesso segno viene modificato il sesto bit (polarit opposta), questo il bit stuffing. La regola dello stuffing viene violata durante un error frame. Se viene rilevata una sequenza di 6 bit uguali, viene inviato subito un error frame. II. Bit error : ogni nodo in trasmissione monitora il bus per verificare la corrispondenza, se viene rilevato un bit diverso da quello trasmesso verr segnalato un errore (non succede nella perdita di arbitraggio, quindi non durante la trasmissione dell ID field) III. CRC error: il nodo ricevente confronta il CRC ricostruito con quello ricevuto, se non corrispondono viene inviato un messaggio di errore IV. Frame error: qualora sia violata la struttura di un frame, si ha un frame error V. Ack error: qualora durante la trasmissione dellAck slot nessun nodo risponde con un bit dominante, viene trasmesso un messaggio di errore
Lo standard CAN
Confinamento degli errori Lautodiagnosi dei nodi avviene controllando il valore di due contatori
Trasmit Error Count TEC Receive Error Count REC
In pratica il valore dei due contatori viene incrementato di 1 o di 8 a seconda del tipo di errore che si verifica e viene decrementato di 1 se le cose vanno bene.
Lo standard CAN
(TEC >255)||(REC>255)
Il nodo si auto esclude dal bus. *Riabilitazione: manda messaggi Di 11 bit recessivi per 128 volte Nessuno dei due Counter ha superato il valore 127 il nodo nelle piene funzionalit
Lo standard CAN
Lalta affidabilit deriva proprio da questa politica di controllo e gestione degli errori stato calcolato che con una rete CAN che viaggia a 1 Mbps, utilizzata al 50%, con messaggi lunghi mediamente 80 bit, abbiamo una probabilit residua di non individuare un messaggio corrotto di circa 4107 messaggi/ora. Avremo un guasto non diagnosticato ogni 1000 anni, nel caso di un utilizzo 8 ore al giorno per 365 giorni
Lo standard CAN
Sincronizzazione e temporizzazioni
Il CAN supporta velocit di trasmissione sino ad 1 Mbps (con collegamenti non superiori a 40 m) Considerando che il clock non viene trasmesso, ogni periferica deve ricostruirlo da sola. Esistono delle tecniche per cui i nodi riconoscono e memorizzano la frequenza e poi sincronizzano la fase del ck interno col nodo trasmittente.
Lo standard CAN
Un primo tipo di sincronizzazione avviene allo SoB: Hard Syncronization Un secondo tipo di sincronizzazione sfrutta le transizioni di bit nel bus e il bit stuffing: Soft Syncronization
Lo standard CAN
Ogni bit trasmesso pu essere pensato come composto da vari segmenti temporali
Durante la risincronizzazione Seg1 e Seg2 possono essere modificati in base alle esigenze del caso
Lo standard CAN
Vari standard definiscono parametri su velocit, tipo di collegamenti e connettori ed altri parametri non specificati dalla Bosch. Ad esempio: LISO 11898 per High Speed Applications Il SAE J1939 per autobus e veicoli pesanti
Per avere informazioni sui dispositivi installati sul PC si esegue il seguente comando: info = canHWInfo Vengono cos visualizzate tutte le informazioni sugli hardware installati nel proprio PC.
General Settings: BusStatus = 'N/A Database = [] InitializationAccess = 1 MessageReceivedFcn = [] MessageReceivedFcnCount = 1 MessagesAvailable = 0 MessagesReceived = 0 MessagesTransmitted = 0 ReceiveErrorCount = 0 Running = 0 SilentMode = 0 TransmitErrorCount = 0 Device Settings: Device = 'CANcaseXL 1 DeviceChannelIndex = 1 DeviceSerialNumber = 248110 DeviceVendor = 'Vector
ID: lidentificativo da assegnare Formato: definisce il formato EXTENDED o STANDARD rispettivamente true o false
Data Lenght: la lunghezza del dato che, come definito dallo standard, pu variare da 0 a 8 Byte (il valore va definito con un intero che indica proprio il numero di byte del dato)
Start Bit : lo start bit, i valori accettati vanno da 0 a 63 Dimensioni : un valore che va da 1 a 64 (bit), che definisce le dimensioni del segnale Codifica il campo pu assumere due valori: LittleEndian o BigEndian ex:
se devo immagazzinare un esadecimale 0x0123 Little endian Big endian |0x23|0x01| |0x01|0x23|
stop(nomeCanale)
Creazione canale:
nomeCanale = canChannel ( venditore , dispositivo , num)
Avvio canale:
start (nomeCanale)
questa funzione ci restituisce il valore del dato contenuto nel messaggio indicato, opportunamente decodificato
nomeMsg: il nome del messaggio StartBit : lo start bit, i valori accettati vanno da 0 a 63
Altre : filterAcceptRange ; filterBlockRange filterAcceptRange (nomeCanale, inizio, fine) - idem per filterBlockRange
transmitEvent (nomeCanale, nomeMessaggio, On) transmitPeriodic (nomeCanale, nomeMessaggio, On, time) transmitConfiguration (nomeCanale)
per aprire la libreria CAN possiamo anche digitare il comando canlib che indirizza immediatamente ai blocchi interessati
Possiamo specificare anche se vogliamo svolgere una trasmissione periodica del messaggio:
ci consente di interpretare i messaggi in ingresso e di restituire in uscita non solo il dato valido ma anche altri parametri del messaggio.
Grazie dellattenzione
Antonio Mangiardi
Bibliografia
Robert Bosch GmbH CAN Specification 2.0 S.Saponara - Dispensa di Autronica Matlab&Simulink - Vehicle Network Toolbox Users Guide per la quale ringrazio Gianluca Pierattini