FlexRay é un protocolo de comunicación para buses que conectan centralitas electrónicas determinista e tolerante a fallos para o seu uso en automóbiles, comparábel ao TTP (Time-Triggered Protocol)
O protocolo foi creado no ano 2000 por BMW, Daimler-Chrysler, Philips e Motorola. O consorcio para traballar na base da tecnoloxía medrou e a 2024 tamén inclúe a Bosch, General Motors, inicialmente Freescale Semiconductor, Inc agora parte do conglomerado NXP Semiconductors e o grupo Volkswagen [1]
O ciclo de comunicación Flexray pódese dividir nun segmento estático (activábel por tempo) baseado nun TDMA similar ao TTP/C e nun segmento dinámico (evento desencadeado) baseado en FTDMA similar ao de ByteFlight. A característica máis importante que Flexray adquiriu de TTP/C é o uso dun Bus Gardián, que impide que un nodo transmita cando non debe.
As principais diferenzas co TTP/C son dúas. Por unha banda, en Flexray os slots do segmento estático son de igual tamaño mentres que en TTP/C non o son. O outro, é que en TTP/C un nodo só pode ter un slot asignado e en Flexray pode ter varios. O segmento dinámico de Flexray baséase no acceso ao medio FTDMA de ByteFlight baseado na priorización de mensaxes organizadas en minislot. A comunicación segue pasos sinxelos. Cando comeza o segmento dinámico, se o nodo co ID máis baixo quere transmitir pode facelo. En caso contrario, un minislot (tamaño de tempo mínimo do sector dinámico) increméntase nun contador e o nodo co segundo ID máis baixo pode transmitir. No caso de que o primeiro nodo quixera transmitir, asumiría a canle durante 'x' minislots e cando rematase a cantidade teríase incrementado o contador para que o segundo nodo poida transmitir e así sucesivamente. Cando se chega ao final do segmento dinámico que consiste nun número fixo de minislots, ningún outro nodo pode transmitir. Así, os nodos con máis ID teñen menor prioridade de transmisión.
O seu principal uso sería o de garantir a eficiencia e a seguridade da transmisión de información con alta prioridade, por exemplo : suponse que o arquitecto daría un ID moi baixo á centralita que se encarga de detectar se un peón está ante un risco de colisión co noso propio vehículo, polo cal a transmisión da detección e do tempo de colisión para activar unha freada de emerxencia se enviaría con prioridade pola capacidade do BUS precisa e o protocolo se deseñaría para este fin.
O principal inconveniente é a súa rixidez para engadir un novo nodo no sector estático. Necesitarías redeseñar ou reprogramar o ciclo, as ID e o Bus Gardián.[2]
A técnica utilizada para o cálculo dos termos de corrección é un algoritmo de punto medio tolerante a fallos (FTM). O algoritmo funciona do seguinte xeito :
1. O algoritmo determina o valor dun parámetro, k, en función do número de valores da seguinte lista ordenada.
Número dos valores | k |
---|---|
1-2 | 0 |
3-7 | 1 |
>7 | 2 |
2. Ordénanse os valores medidos e descártanse os k maiores e os k menores.
3. O maior e o menor dos restantes valores promedian para o cálculo do valor do punto medio. Suponse que o valor resultante representa a desviación do nodo do base de tempo global e serve como termo de corrección.
Entrada ao algoritmo | Saída |
---|---|
15 | Eliminado |
13 | Eliminado |
11 | Úsase para a suma |
... | (11+6) / 2 = 8 * A división por dous dos números impares debería truncarse cara a cero de xeito que o resultado sexa un número enteiro |
6 | Úsase para a suma |
-3 | Eliminado |
-5 | Eliminado |