FlexRay è un sistema di comunicazione tra i componenti dell’auto. Come funziona?
All’inizio del 21° secolo, nell’industria automobilistica, si è assistito ad rappresenta un periodo in cui il protocollo CAN non è era più sufficiente come sistema di controllo e coordinamento per tutti i sistemi delle autovetture.
Lanciando la sua terza e ultima versione nel 2009 con il nome FlexRay, il suo produttore ha aperto una nuova strada nel mondo dei protocolli di comunicazione utilizzati nei veicoli.
Nell’articolo che segue, presentiamo questo componente relativamente recente, ma ormai necessario.
Definizione
FlexRay è uno standard ISO per il bus di comunicazione deterministico, tollerante ai guasti e ad alta velocità. È utilizzato in applicazioni come come steer-by-wire, drive-by-wire, brake-by-wire, cruise control adattivo, sospensioni attive e altre applicazioni relative a sicurezza.
Questo standard è il risultato degli sforzi congiunti di aziende come BMW, VW, Daimler AG, GM, Bosch, NXP Semiconductors e Freescale. Nel 2009 è stata introdotta la versione 3.0, che è diventata il protocollo FlexRay finale.
Questo sistema ha debuttato in auto come:
- Audi A8 (2011)
- BMW X5
- BMW X6
- BMW7
- BMW5
- BMW 5GT
- Rolls Royce Fantasma
Il requisito fondamentale per il protocollo FlexRay era la possibilità di un’elevata velocità di trasferimento dei dati, superiore a quella del CAN.
FlexRay ha due canali separati e completamente indipendenti, con una velocità dati di 10 Mbit al secondo per canale.
Soddisfa i requisiti critici per la sicurezza del sistema di controllo, che è anche una delle sue proprietà di base. Grazie a ciò, possiamo affidargli sistemi di gestione come Brake-by-Wire o Steer-by-Wire, nel caso in cui il protocollo deve gestire rapidamente quantità di dati relativamente elevate.
L’uso di questi sistemi non è stato ancora legalmente regolato in modo uniforme, motivo per cui sono un frequente argomento di dibattito. Il fatto è, però, che possono funzionare grazie a FlexRay.
Proprietà di rete
Se dovessimo descrivere il protocollo in tre parole, diremmo: veloce, deterministico e tollerante ai guasti. Quest’ultimo è particolarmente importante perché qui non c’è arbitrato, come nel caso della CAN (ne abbiamo scritto la scorsa settimana).
Sebbene l’industria automobilistica stimoli lo sviluppo delle reti, è solo grazie all’enorme successo di FlexRay che i sistemi di controllo sono andati oltre il ristretto campo automobilistico.
La velocità di trasferimento dati di 10 Mbit/s per canale non è trascurabile e questo sistema utilizza due canali per uno scopo, che in gergo tecnico si chiama ridondanza hardware.
Il ciclo di comunicazione può essere suddiviso in segmenti temporali statici e dinamici. La parte statica è per le centraline, mentre la parte dinamica serve i dispositivi multimediali utilizzando la banda residua. Funziona in time-sharing, garantendo l’integrità delle informazioni inviate e ricevute, ma provoca anche difficoltà organizzative.
Azione
- Orologio
Il sistema FlexRay è costituito da un bus e da una ECU (unità di controllo elettronica). Ogni ECU ha un orologio indipendente: è qui che entra in gioco la gestione del tempo. La quantità di time shift del clock non può essere superiore allo 0,15% rispetto al clock di riferimento, quindi la differenza tra il clock di sistema più lento e quello più veloce non può superare lo 0,3%.
Ciò significa che se la ECU ha un trasmettitore e un ricevitore, allora per ogni 300 cicli del trasmettitore ci sono 299 e 301 cicli del ricevitore. Gli orologi vengono risincronizzati abbastanza frequentemente da non costituire un problema. I segnali di clock occupano un segmento statico.
- Linea principale
La registrazione sul bus è possibile solo da una ECU alla volta. Ogni bit inviato sul bus impiega fino a 8 cicli di clock. Il ricevitore bufferizza gli ultimi 5 campioni e ne utilizza la maggior parte come input.
Gli errori di trasmissione a ciclo singolo possono influenzare i risultati vicino al limite di bit, ma i cicli nell’intervallo medio di 8 cicli non sono interessati.
- Bit campionati
Il valore del bit viene campionato nel mezzo di un intervallo di 8 bit. Gli errori vengono spostati ai cicli estremi e l’orologio è sincronizzato abbastanza spesso che la deriva è piccola, cioè meno di 1 ciclo su 300 cicli, e durante la trasmissione l’orologio viene sincronizzato più volte ogni 300 cicli.
- Cornici
Tutti i messaggi sono costituiti da byte e vengono inviati come frame. Sembra così:
- Segnale di inizio trasmissione (TSS) – bit 0
- Segnale di inizio frame (FSS) – bit 1
- m volte:
- Segnale di inizio byte 0 (BSS0) – bit 1
- Segnale di inizio byte 1 (BSS1) – bit 0
- Bit 0 dell’iesimo byte
- Bit 1 dell’iesimo byte
- Bit 2 dell’iesimo byte
- Bit 7 dell’iesimo byte
- Segnale di fine frame (FES) – bit 0
- Segnale di fine trasmissione (TES) – bit 1
In assenza di comunicazione, il bus è a 1 (alto), quindi tutti i ricevitori sanno che la comunicazione è iniziata quando la tensione scende a 0.
Il destinatario sa che il messaggio è completo dopo aver verificato se è stato ricevuto BSS0(1) o FES(0).
Si noti che il concetto di 8 cicli per bit non ha nulla a che fare con i byte. Ci vogliono 80 cicli per trasmettere ogni byte. 16 per BSS0 e BSS1 e 64 per i suoi singoli bit.
- Sincronizzazione dell’orologio
Gli orologi vengono risincronizzati quando il segnale selezionato cambia da 1 a 0 se il ricevitore era inattivo o in attesa di BSS1.
Poiché la sincronizzazione avviene sul segnale selezionato, piccoli errori di trasmissione durante la sincronizzazione che coinvolgono bit di confine possono alterare la sincronizzazione fino a 1 ciclo. Poiché vi sono un massimo di 88 cicli tra le sincronizzazioni (BSS1, 8 bit dall’ultimo byte, FES e TES – 11 bit da 8 cicli) e l’offset dell’orologio non è maggiore di 1 su 300 cicli, l’offset potrebbe distorcere l’orologio . I piccoli errori di trasmissione che si verificano durante la ricezione possono influenzare solo i bit di confine. Quindi nel caso peggiore i due bit centrali sono corretti, quindi anche il valore campionato è valido.
Fonte:
https://www.researchgate.net/publication/340883976_Cyberattacks_and_Countermeasures_For_In-Vehicle_Networks
https://www.microcontrollertips.com/what-is-the-flexray-network-faq/
https://en.wikipedia.org/wiki/FlexRay