Índice
- Objetivo
- Introducción
- FlexRay
- Características
- Capa física
- Arquitectura de nodo
- Topologías de red
- Linear passive bus
- Topologías con Active Stars
- Morfología de datos a nivel físico
- Datos a nivel eléctrico
- Datos a nivel lógico
- Protocol Operation Control (POC)
- Coding and decoding
- Frame and symbol processing
- Media Acces Control
- Clock synchronization
- Clock synchronization process
- Macrotick Generation Process
- Conclusión
- Mapa mental
Objetivo
El objetivo de la siguiente
investigación es brindar los conocimientos acerca de este protocolo o sistema de comunicación que utilizamos en
nuestro automóvil. Al igual de hacer mención a
algunas de las nuevas tecnologías, parte de la historia de FlexRay, la
topología y datos técnicos relacionados con el mismo.
De igual manera observar los
diferentes tipos de conectores o colores de los cables que manejamos para cada
uno de los sistemas individuales de nuestro automóvil.
Introducción
Es un nuevo protocolo de
comunicaciones para buses de datos en el automóvil actualmente en desarrollo
por el consorcio "FlexRay". Se considera más avanzado que el CAN y el
MOST en lo relativo al precio y a las prestaciones.
El BMW X5 fue el primer coche del
mercado en aplicar el sistema FlexRay. El FlexRay es un nuevo estándar para la
transmisión de datos de forma eficiente, rápida y segura. El X5 hace uso de
este estándar para la transmisión de datos entre una centralita central y 4
centralitas satélites colocadas en los amortiguadores. Con este sistema se
permite una reacción y equilibrio extremadamente rápido a baches o agujeros en
el camino. La tecnología FlexRay se esta asentando en la industria del
autómovil (BMW, Audi, Volkswagen).
FlexRay
Es un nuevo protocolo de comunicaciones para buses de datos
en el automóvil desarrollado por el consorcio FlexRay entre 2000 y 2009. Se
considera más avanzado que el CAN y el MOST en lo relativo al precio y a las
prestaciones.
El consorcio FlexRay fue fundado en Septiembre de 2000 por
BMW, Daimler AG (matriz de Mercedes), Philips y Motorola y actualmente está
compuesto por los siguientes miembros:
- · Volkswagen
- · BMW
- · Daimler AG
- · General Motors
- · Robert Bosch GmbH
- · NXP Semiconductors, ahora independiente y que perteneció a Philips
- · Freescale, ahora independiente y que perteneció a Motorola
Características
Sus características más destacadas son:
- · Una alta transmisión de datos (10 megabits por segundo)
- · Un comportamiento estimulado por factores temporales
- · Redundancia, seguridad y tolerancia de errores
Las especificaciones de este protocolo están siendo
actualmente revisadas. El primer vehículo del mercado que contaba con este
tecnología fue el BMW X5, lanzado al mercado en Enero de 2007. Este vehículo se
basa en ésta tecnología para comunicar los sensores en los amortiguadores con
una centralita electrónica central que sirve como reguladora. El objetivo de
este sistema es una respuesta rápida a los asperezas de la carretera para
lograr un conducción lo más suave posible. Se espera el uso de esta tecnología
a gran escala en el 2008. La versión actual es la 3.0 (2009).
Capa física
En este apartado vamos a describir los puntos más
importantes y relevantes de la capa física del protocolo Flexray.
Arquitectura de un nodo
Un nodo Flexray está formado esencialmente por un
microcontrolador, un periférico llamado Communication Controller, 2
transceivers y una fuente de alimentación.
El microcontrolador es el propio de la ECU, el cual
seguramente realiza otras funciones externas propias de la ECU y que cada
cierto tiempo envía y recibe una trama de información al bus Flexray. Para ello
se comunica con el Communication Controller (CC), que no es más que un
periférico hardware que gestiona en todo momento el protocolo. Es decir, el
microcontrolador no se encarga de la pila del protocolo, si no que lo gestiona
todo el CC.
Así pues, el CC se comunica a su vez con los transceivers
que se encargan de transformar los datos lógicos a niveles eléctricos de Bus.
Flexray dispone de 2 canales de comunicación, lo que requiere un transceiver
para cada canal.
Entre los diferentes
bloques mencionados existen líneas optativas de señalización para determinadas
situaciones. Esto será explicado más adelante con más detalle.
Topologías de red.
Flexray permite un amplio abanico de topologías de red. El
hecho de tener 2 canales independientes aporta además otro grado de libertad,
pudiendo hacer para cada canal una configuración de nodos diferente.
La interconexión básica entre dos nodos responde al
siguiente esquema:
Linear passive bus
Es la topología más básica y una de las más usadas. Se puede
apreciar como es posible que un nodo se conecte a los dos canales (por ejemplo
en el caso que este nodo representara una función crítica del sistema) mientras
que otros nodos se conectan a uno de los dos canales.
Las limitaciones más importantes a tener en cuenta en esta
topología son:
Topologías con Active Stars
Estas topologías hacen uso del elemento repetidor Active
Star. Este elemento de bus es capaz de
desacoplar eléctricamente las diferentes ramas a las cual está conectado,
además de regenerar la señal aunque por otro lado introduce retardos. Se les
puede dotar de cierta inteligencia consiguiendo un ruteado del mensaje, todo y
que esto acumularía aún más retardo. También pueden desconectar una rama de la
red si detectan un mal funcionamiento. Las limitaciones en este caso son:
Morfología de datos a nivel físico
Flexray es un bus diferencial, lo que quiere decir que se
basa en la diferencia de señales del bus para determinar el dato enviado. Las
salidas del transceiver son BP y BM y la información relativa uBus = BP-BM. El
transceiver es el encargado de gestionar la trama lógica que le llega del Communication
Controller y traducirla a los niveles eléctricos correspondientes del bus y
viceversa.
Datos a nivel eléctrico.
Los diferentes
símbolos que podemos encontrar en el bus son:
- Idle_LP: Estado del bus en baja energía cuando no circula corriente por el mismo y el transceiver fuerza un 0 a la salida.
- Idle: Estado del bus cuando no circula corriente por el bus pero el transceiver fuerza un determinado voltaje para BP y BM.
- Data_1: La información lógica 1 se traduce a una diferencia positiva entre BP y BM (uBus>0)
- Data_0: La información lógica 1 se traduce a una diferencia negativa entre BP y BM (uBus<0)
Los estados Idle_LP y Idle sirven para determinar que el
canal está libre. Más adelante, veremos cómo se gestiona este aspecto ya que en
ello intervienen elementos de protocolo de capa superior. Además de estos
estados, por el Bus pueden circular lo que en el protocolo Flexray se llaman
Símbolos y que realizan funciones específicas. Los veremos en el siguiente
apartado.
Datos a nivel lógico.
El transceiver traduce de niveles eléctricos a niveles
lógicos en ambos sentidos. Para eso, dispone de una entrada Vdig (Voltaje
digital) para adecuarse a la tensión de operación del CC. Veámoslo en el
siguiente ejemplo:
Protocol Operation Control (POC)
El POC es la máquina de estados principal del protocolo.
Decide en todo momento en qué estado se encuentra el protocolo y reacciona a
las órdenes del uC realizando los cambios necesarios en los siguientes
subprocesos, llamados “core mechanisms”:
- Coding and Decoding
- Frame and Symbol processing
- Media Access Control
- Clock Synchronization.
Inmediatamente después de recibir energía. El CC controller
entra en el estado de POC OPERATIONAL y empieza a funcionar el POC. Lo podemos
apreciar en el siguiente diagrama de estados:
Coding and
Decoding
En un primer nivel podemos distinguir entre 3 bloques:
Cabecera, Datos y CRC. Como vemos la trama puede variar entre 8 y 262 bytes.
El significado de los campos de cabecera es el siguiente:
- Reserved bit: Bit reservado del protocolo para futuros usos.
- Payload Preamble indicator: Sirve para indicar que los primeros bytes del segmento de datos también son de cabecera. Esto se usa para tareas de mantenimiento y gestión de la red o para indicadores en las tramas dinámicas.
- Null Frame Indicator: Indica si la trama lleva datos o no. A veces, por ejemplo en tramas de sincronismo, se envía una trama para mantener el sincronismo pero no lleva datos asociados. Cabe indicar que la situación contraria se puede dar. Es decir, se puede enviar una trama de sincronía que además contenga datos.
- Sync Frame Indicator: Indica si la trama es de sincronismo. Estas tramas que sirven para sincronizar todos los nodos a la base de tiempos global de Flexray.
- Startup Frame Indicator: Indica si es una trama de Startup. Es decir, si es una trama de inicio de comunicación.
- Frame ID: Identificador único de la trama asociado a un nodo. Define el slot en el cual se envía la trama.
- Payload length: Define la longitud del campo de datos enviado con la trama.
- Header CRC: CRC de cabecera. Sirve para agilizar el protocolo. Si un nodo detecta un error en el CRC de cabecera descarta directamente la trama.
- Cycle Count: indica el ciclo de comunicación en el que nos encontramos.
Frame and Symbol Processing
El proceso Frame and Symbol Processing, se encarga de
recoger los datos de salida del “Coding
and Decoding process”, comprobar errores tanto sintácticos, semánticos como de
sincronización y en caso positivo pasar la información relevante al CHI
(Controller Host Interface) para que el uC pueda leer el mensaje recibido.
Media Acces Control
El protocolo Flexray se basa en un ciclo de comunicación
recurrente. Este ciclo está dividido en 4 segmentos:
- Static Segment: El Static Segment está compuesto por slots de medida fija. Cada slot está asociado a una Frame ID. Por su parte cada Frame ID está asociada a un nodo, de manera que cada nodo sabe siempre en qué slot o slots le toca enviar. Este segmento es de carácter obligatorio y siempre se comporta igual. Es decir, las tramas estáticas siempre se envían.
- Dynamic Segment: El Dynamic Segment está compuesto por dynamic slots la medida de los cuales es variable y se establece un orden de envío por prioridad de ID, similar al CAN. Es decir, si dos nodos en el segmento dinámico luchan por transmitir, ganará el de la ID más baja. Además el tamaño de la trama no es fijo, así que el primer nodo en coger el control del bus podría agotar el Dynamic Segment. Este segmento es de carácter opcional, a diferencia del estático.
- Symbol Window: En el Symbol Window se pueden enviar los MTS para gestión de la red. Es de carácter opcional y raramente se usa.
- Network Idle Time: Al final del ciclo se deja el canal un cierto tiempo libre para poder ajustar el tiempo de ciclo a la durada fija determinada. Este segmento es de carácter obligatorio.
Clock Synchronization
Flexray es un protocolo determinístico basado en la división
del tiempo en ranuras donde cada nodo sabe en qué ranura puede enviar y en cual
no. Dada esta descripción, se puede entender la gran importancia de mantener
todos los nodos sincronizados constantemente. De lo contrario, fácilmente un
nodo no sincronizado podría al transmitir invadir la ranura del vecino y
provocar un fallo general de comunicación. Es por eso, que el proceso Clock
Synchronization cobra gran relevancia en el protocolo Flexray.
Todo y que cada nodo dispone de su propio oscilador, Flexray
funciona con una base de tiempos global a nivel de red. Esto lo consigue
gracias a las tramas de sincronismo que envían un mínimo de 2 nodos en una red
de 2 ECUs o 3 en una red de 3 o más ECUs. Estos nodos, llamados Coldstart nodes,
son muy importantes tanto en el inicio de la comunicación como en el sincronismo
de la red. Suelen tener osciladores muy precisos y marcan el tiempo al cual se
han de ir adaptando el resto de nodos.
La sincronización del reloj se basa en 2 subprocesos
importantes:
Clock Synchronization Process.
El Clock
Synchronization Process (CSP) recoge los valores de las tramas de sincronía
enviadas por los diferentes Coldstart nodes de la red, los compara con los que
él había predecido y hace una estimación del valor correcto. El resultado lo
pasa al Macrotick Generation Process.
Macrotick Generation Process
El Macrotick Generation Process (MTG), como indica su
nombre, es el encargado de generar el macrotick y del control de tiempos como
el tiempo de ciclo o el tiempo de slot. Así pues, con los datos que le pasa el
CSP, efectúa las correcciones necesarias para mantener el sincronismo del nodo:
Correcciones de Offset: Indica el número de microticks que
hace falta añadir al NIT (Network idle Time) para que el ciclo de comunicación
Flexray comience en el momento adecuado. Se calcula cada ciclo y se corrige en
el NIT de los ciclos impares.
Correcciones de Rate: Indica el número de microticks por
macrotick que hay que añadir (o substraer) para adecuarse al tiempo de ciclo.
Se calcula en los ciclos impares y se aplica siempre.
Conclusión
El bus CAN ha sido y es un gran
éxito tanto a nivel de automoción como a nivel de industria. Cientos de
millones de ECUs de diferentes sectores usan el protocolo, lo que lo ha hecho
seguro, estable, estudiado y debido al gran volumen de producción, barato. Es
cierto que hay otras soluciones de protocolos más económicos, pero es indudable
que el CAN hoy en día es la mejor solución en cuanto a velocidad y seguridad.
Por otro lado, las nuevas aplicaciones X-by-Wire requerirán nuevas prestaciones
y Flexray está orientado a cubrirlas. Todo y que existen muchas diferencias entre
CAN y Flexray, sobre todo a nivel lógico, no ocurre lo mismo en el nivel
físico. Muchos de los conceptos usados por Flexray, son una adaptación de CAN.
Eso sí, la oportunidad de crear un nuevo BUS, ha permitido extender estos
conceptos ytratar de mejorarlos, aplicando nuevas ideas y soluciones.
Este documento se centra sobre todo en el nivel
físico que el ingeniero de hardware tendrá que abordar. De todas maneras,
siempre hay que tener unavisión global del funcionamiento del protocolo. Por
eso, sin profundizar excesivamente, dedicaremos un pequeño apartado destinado a
tratar las principales diferencias a nivel lógico entre ambos buses.
La principal diferencia a nivel
lógico entre los dos protocolos es que CAN está orientado a eventos (Event
triggered) y Flexray está basado en un ciclo determinístico TDMA (Time Division
Multiple Access). Se le suele llamar un protocolo Time Triggered.
CAN utiliza un sistema de
prioridad de envío en el cual, el nodo con la ID más baja tiene más prioridad
para enviar un mensaje. Si en un determinado instante 2 o 3 nodos compiten por
el bus, ganará el control el nodo con la ID más baja.
Una vez éste haya transmitido su
información al bus, entonces los otros nodos podrán enviar.
Flexray usa una partición del
tiempo entre los diferentes nodos. Es decir, si el ciclo dura 4 segundos y hay
4 nodos, cada nodo disfrutará para sí solo de un segundo para transmitir cada 4
segundos.
Mapa mental