Protocolo CAN y su análisis temporal

Introducción

  • Creado en 1983 por BOSCH
  • Protocolo multimaster con arquitectura en bus
  • Sencillo, barato y con resistencia a las interferencias electromagnéticas

El estándar CAN

Capa física

  • Separación máxima entre nodos - Sincronismo
  • Bit stuffing
  • Elementos recesivos (1s) y dominantes (0s)

lines

lines

Capa de enlace

  • Acceso al medio: Identificadores
  • Extended CAN
  • Todos participan en la escritura del ACK

lines

Corrección de errores

Detección de errores

  • 5 formas de detectarlos: 3 sobre el frame y 2 bit a bit
  • Sobre el frame: ACK, CRC y campos fijos
  • Bit a bit: bit stuffing y W/R

lines

Introducción al analisis temporal en CAN

¿Por qué es importante?

  • Por la necesidad de conocer el mayor tiempo de retardo de un mensaje existente en el sistema
  • Primer estudio temporal realizado por Tindell
  • Aumento de su uso del 30% al 80%

Buscando el peor caso:

Analizemos la serie:

11111-0000-1111-0000...

Tras el bit stuffing

11111-00000-11111-00000...

Podemos ver que el tiempo de envío de trama será:

\[ C_m = (g + 8s_m + 13 + \Big \lfloor \frac{g + 8s_m -1}{4} \Big \rfloor)\tau_{bit} \]

Donde:

  • g será la cantidad de bits de dirección enviados
  • $s_m$ será la cantidad de bits en el campo de datos
Parámetros del modelo:
  • $m$: La prioridad del mensaje
  • $J_m$: El tiempo que se tarda en poner en cola el mensaje.
  • $T_m$: El periodo con el que se envía el mensaje
  • $D_m$: El retardo máximo permitido.
  • $R_m$: El tiempo máximo que transcurre desde que se inicia el evento que origina el mensaje hasta que se envía. Se dirá que un mensaje se envía a tiempo real si ($R_m \leq D_m$).
lines

Análisis de Tindell:

El tiempo que tarda en eviarse un paquete será el tiempo que tarda en ponerse en cola dicho mensaje más el tiempo de retardo en la cola $w_n$ más el tiempo de envío $C_m$

\[ R_m = J_m + w_m + C_m \]
En el caso de el dispositivo con la mayor prioridad: \[ w_n = B_m = \max_{k \in lp(m)}(C_k) \]
Por lo tanto la ecuación final de Tindell: \[ w_n = B_m +\sum_{\forall k \in hp(m) } \left \lceil{\frac{w_n + J_k + \tau_{bit}}{T_k}}\right \rceil C_K \]

Pero hay un problema....

El modelo asume que $T_m \leq D_m$

En los ultimos años se propone una nueva solución, con el nuevo tiempo de ocupación como:

\[ t_m^{n+1} = B_m + \sum_{k \in hp(m) \cup m} \left \lceil{\frac{t_m^n + J_k }{T_k}}\right \rceil C_K \]

  • $t_m \leq T_m - J_m$: Entonces la ecuación de Tindell nos serviría para calcular el retardo máximo.
  • $t_m > T_m - J_m$: Habría que usar la nueva ecuación.

El número de mensajes en cola : \begin{equation} Q_m = \left \lceil{\frac{t_m + J_k }{T_k}}\right \rceil \end{equation}

Tiempo de respuesta dependiendo de $Q$ \begin{equation} w_m^{n+1}(q) = B_m + qC_m + \sum_{k \in hp(m)} \left \lceil \frac{w_n^m + J_k + \tau_{bit}}{T_k} \right \rceil C_k \end{equation}

Su tiempo de respuesta $R_m$ es: \begin{equation} R_m(q) = J_m + w_m(q) -qT_m + C_m \end{equation}

FIN