lunes, 26 de octubre de 2015

FlexRay


Índice
  1. Objetivo
  2. Introducción
  3. FlexRay
  4. Características
  5. Capa física
  6. Arquitectura de nodo
  7. Topologías de red
  8. Linear passive bus
  9. Topologías con Active Stars 
  10. Morfología de datos a nivel físico
  11. Datos a nivel eléctrico 
  12. Datos a nivel lógico
  13. Protocol Operation Control (POC)
  14. Coding and decoding
  15. Frame and symbol processing 
  16. Media Acces Control
  17. Clock synchronization 
  18. Clock synchronization process
  19. Macrotick Generation Process
  20. Conclusión
  21. 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