Background Image
Table of Contents Table of Contents
Previous Page  88 / 100 Next Page
Information
Show Menu
Previous Page 88 / 100 Next Page
Page Background

controllo

tecnica

Luglio/Agosto 2015

n

Automazione e Strumentazione

88

fase di progettazione delle applicazioni

di controllo e di configurazione iniziale

del sistema, è possibile ridurre (e, in

molti casi, evitare) l’inserimento di stuff

bit anche nell’intestazione del messaggio

[4]

. Occorre tuttavia ricordare che, tipi-

camente, l’intestazione di ogni messag-

gio CAN non varia fra successive istanze

di trasmissione dello stesso, per cui l’e-

ventuale presenza di stuff bit in tale parte

del messaggio non introduce alcun jitter.

Purtroppo le tecniche esistenti non sono

in grado di gestire le porzioni di trama

legate ai meccanismi di rilevamento

degli errori e, in particolare, il campo

relativo al

controllo di ridondanza

ciclico

(CRC), calcolato autonomamente

dal controller CAN. Anche prevedendo

tutte le contromisure indicate in prece-

denza, eventuali stuff bit introdotti nel

campo CRC possono causare jitter di

comunicazione residui di entità massima

pari a 4 tempi di bit

[5]

.

In questo articolo viene descritto un

meccanismo, denominato

Zero Stuff-bit

CRC

(

ZSC

)

[6]

, che permette di preve-

nire l’inserimento di stuff bit nel campo

CRC. Ove accoppiato con opportune tec-

niche di codifica per il campo dati, come

ad esempio 8B9B, ciò permette di fatto

l’eliminazione degli stuff bit dall’intera

trama di messaggio CAN. Nel seguito,

l’uso combinato delle due tecniche ZSD

e ZSC verrà indicato genericamente col

termine di codifica

Zero Stuff-bit

(

ZS

).

Nell’ambito delle attività di

ricerca condotte presso IEIIT-

CNR è stato sviluppato un

codec

s/w ZS, basato su 8B9B

e ZSC ed ottimizzato per piat-

taforme

embedded

, in grado di

effettuare codifica e decodifica

di un messaggio CAN in tempi

dell’ordine di pochi microse-

condi. Il codec ha un

footprint

di circa

2 KB

e può essere

incorporato direttamente, e con

grande facilità, sia in nuovi

progetti sia in dispositivi già

esistenti.

A titolo di esempio si tenga presente che,

sfruttando un paradigma di accesso al

mezzo trasmissivo tale da evitare l’ar-

bitraggio previsto da CAN (ad esempio,

utilizzando un comunissimo schema di

tipo master-slave) in una rete operante a

500 Kb/s, tale codec è in grado di ridurre

i jitter di comunicazione da circa 50 µs a

meno di

0.5 µs

.

Nel caso in cui la codifica ZS venga

effettuata in h/w direttamente nel con-

troller CAN, i jitter di trasmissione pos-

sono essere di fatto annullati, pur mante-

nendo una completa compatibilità con i

controller convenzionali e le implemen-

tazioni di ZS basate su codec s/w.

Un ulteriore beneficio derivante dall’im-

piego delle codifiche ZS è la diminu-

zione della probabilità di errore residua

di circa due ordini di grandezza.

Segnale sul bus CAN

A livello fisico, il segnale trasmesso

sul CAN bus adotta una codifica di tipo

non-return to zero

(NRZ) con

bit stuf-

fing

(BS). Ogni qualvolta vengono rile-

vati 5 bit consecutivi allo stesso livello

nella sequenza di bit trasmessa sul bus, il

controller CAN del dispositivo trasmetti-

tore introduce automaticamente uno stuff

bit di valore opposto. Come è noto, gli

stuff bit permettono un’adeguata sincro-

nizzazione dei circuiti di decodifica nei

controller CAN dei ricevitori, e vengono

rimossi prima della decodifica del mes-

saggio.

È opportuno ricordare che solo il

pre-

fisso

(S) della trama è soggetto a bit stuf-

fing (

figura 2

). CAN prevede infatti

che il suffisso, di dimensioni predefinite

e limitate, non sia interessato da tale

codifica.

Formato delle trame CAN

Una

trama

di messaggio CAN (F) è com-

posta da quattro sezioni, come mostrato

nella parte inferiore della

figura 2

:

-

intestazione

(H): comprende il bit di

inizio trama (SOF), il campo di arbi-

traggio, costituito dall’identificatore

del messaggio (ID) e dal bit di richie-

sta remota (RTR), e il campo di con-

trollo, composto da 2 bit riservati e dal

campo lunghezza dati (DLC);

-

dati

(D): memorizza le informazioni

che devono essere scambiate a livello

applicativo, anche conosciute come

payload

(P); ogni tecnica di codifica

jitterless dei dati CAN opera un’op-

portuna codifica di P prima di copiare

il suo valore in D;

-

controllo

(R): CRC su 15 bit, calco-

lato dal trasmettitore su tutti i campi

che lo precedono (utilizzando un poli-

nomio generatore specifico di CAN) e

verificato da ogni ricevitore;

-

suffisso

(U): posto a fine trama,

include il delimitatore di CRC

(CDEL), il campo di acknowledge-

ment (ACK slot) ed il relativo deli-

mitatore (ADEL), nonché il campo

di fine trama (EOF). Poiché U non è

soggetto a bit stuffing, esso è di fatto

irrilevante per la trattazione che segue.

Complessivamente, una trama può

quindi essere descritta come

F = H \ D \ R \ U

dove “\” denota l’operazione di concate-

nazione fra stringhe di bit.

Bit stuffing e campo CRC

Prevenire l’inserimento di stuff bit nel

campo CRC non è un’operazione banale,

poiché tale campo viene cal-

colato dal controller CAN

sulla base di tutto il messaggio

secondo regole fisse e predefi-

nite. Nel seguito, il calcolo del

CRC effettuato da CAN viene

modellato come una funzione

c

(•), cioè:

R =

c

(M)

dove il

messaggio

M coincide

con la parte di trama coperta dal

CRC (dal bit di SOF fino alla

fine del campo dati):

M = H \ D

L’idea fondamentale per prevenire gli

stuff bit in CAN è che, sebbene il valore

di R non possa essere impostato diret-

tamente dall’utente, esso può tuttavia

Figura 2 - Formato della trama CAN e ZS