FlexRay es un protocolo de comunicaciones de red del automóvil diseñado para ser más rápido y más fiable que la CAN o TTP. Estos transceptores proporcionan la interfaz entre la lógica digital y la transmisión por cable de cobre. Con velocidades de transmisión de hasta 10 Mbit / s, FlexRay proporciona 20 veces la velocidad del cable sin blindaje trenzado de cobre utilizado en los coches de hoy. FlexRay es un protocolo de comunicación único activado por tiempo que brinda opciones para datos deterministas que llegan en un marco de tiempo predecible (hasta el microsegundo), así como datos dinámicos basados en eventos similares a CAN para manejar una gran variedad de marcos. FlexRay logra este híbrido de marcos estáticos centrales y marcos dinámicos con un ciclo de comunicación preestablecido que proporciona un espacio predefinido para datos estáticos y dinámicos. Este espacio está configurado con la red por el diseñador de la red. Mientras que los nodos CAN solo necesitaban saber la velocidad en baudios correcta para comunicarse, los nodos en una red FlexRay deben saber cómo están configuradas todas las piezas de la red para poder comunicarse.
Muchos aspectos de FlexRay están diseñados para mantener bajos los costos y, al mismo tiempo, ofrecer un rendimiento superior en un entorno resistente. FlexRay utiliza cableado de par trenzado sin blindaje para conectar los nodos entre sí. FlexRay admite configuraciones de uno o dos canales que constan de uno o dos pares de cables, respectivamente. La señalización diferencial en cada par de cables reduce los efectos del ruido externo en la red sin un costoso blindaje. La mayoría de los nodos FlexRay también suelen tener cables de alimentación y tierra disponibles para alimentar transceptores y microprocesadores.
FlexRay puede admitir redundancia de red o canales duales. Esto asegura una mayor tolerancia a fallas, así como un mayor ancho de banda para la transferencia de datos adicionales. Sin embargo, esta red adicional rara vez se implementa.
Las redes integradas se diferencian de las redes basadas en PC en que tienen una configuración cerrada y no cambian una vez que se ensamblan en el producto de producción. Esto elimina la necesidad de mecanismos adicionales para descubrir y configurar dispositivos automáticamente en tiempo de ejecución, de forma muy similar a como lo hace una PC cuando se une a una nueva red cableada o inalámbrica. Al diseñar configuraciones de red con anticipación, los diseñadores de redes ahorran costos significativos y aumentan la confiabilidad de la red.
Topología y diseño de FlexRay
Una de las cosas que distingue a FlexRay, CAN y LIN de las redes más tradicionales, como Ethernet, es su topología o diseño de red. FlexRay admite conexiones pasivas multipunto simples, así como conexiones en estrella activas para redes más complejas. Según el diseño de un vehículo y el nivel de uso de FlexRay, seleccionar la topología correcta ayuda a los diseñadores a optimizar el costo, el rendimiento y la confiabilidad para un diseño determinado.
- BUS-Multipunto
FlexRay se usa comúnmente en una topología de bus multipunto simple que cuenta con un solo cable de red que conecta varias ECU juntas. Esta es la misma topología utilizada por CAN y LIN y es familiar para los OEM, lo que la convierte en una topología popular en los vehículos FlexRay de primera generación. Cada ECU puede «ramificarse» hasta una pequeña distancia del «tronco» central del autobús. Los extremos de la red tienen instaladas resistencias de terminación que eliminan los problemas con los reflejos de la señal. Debido a que FlexRay opera a altas frecuencias, hasta 10 Mbit/s en comparación con 1 Mbit de CAN, los diseñadores de FlexRay tienen mucho cuidado de terminar y diseñar correctamente las redes para evitar problemas de integridad de la señal. El formato de caídas múltiples también se adapta muy bien a los arneses de vehículos que comúnmente comparten un tipo de diseño similar, lo que simplifica la instalación y reduce el cableado en todo el vehículo. - Red estrella
El estándar FlexRay admite configuraciones «Estrella» que consisten en enlaces individuales que se conectan a un nodo activo central. Este nodo es funcionalmente similar a un concentrador que se encuentra en las redes Ethernet de PC. La configuración en estrella activa permite ejecutar redes FlexRay en distancias más largas o segmentar la red de tal manera que sea más confiable en caso de que falle una parte de la red. Si una de las ramas de la estrella se corta o se cortocircuita, las otras patas continúan funcionando. Dado que los tramos largos de cables tienden a conducir más ruido ambiental, como las emisiones electromagnéticas de los grandes motores eléctricos, el uso de múltiples patas reduce la cantidad de cable expuesto para un segmento y puede ayudar a aumentar la inmunidad al ruido. - Red Híbrida
Las topologías de bus y estrella se pueden combinar para formar una topología híbrida. Las futuras redes FlexRay probablemente consistirán en redes híbridas para aprovechar la facilidad de uso y las ventajas económicas de la topología de bus mientras se aplica el rendimiento y la confiabilidad de las redes en estrella donde sea necesario en un vehículo.
Características
- · Una alta transmisión de datos 10mbits/s
- · 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ísicaEn este apartado vamos a describir los puntos más importantes y relevantes de la capa física del protocolo Flexray.Arquitectura de un nodoUn 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.
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 ControlEl 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 ProcessEl 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.
Dios los bendiga, gracias por ese excelente diagrama y por las publicaciones anteriores,ayudan mucho.