logo

Protocolo CAN (Red de área del controlador)

CAN significa Controlador de Red de Zona protocolo. Es un protocolo desarrollado por Roberto Bosch alrededor de 1986. El protocolo CAN es un estándar diseñado para permitir que el microcontrolador y otros dispositivos se comuniquen entre sí sin ninguna computadora host. La característica que hace que el protocolo CAN sea único entre otros protocolos de comunicación es el tipo de bus de transmisión. Aquí, difusión significa que la información se transmite a todos los nodos. El nodo puede ser un sensor, un microcontrolador o una puerta de enlace que permite que la computadora se comunique a través de la red a través del cable USB o el puerto Ethernet. El CAN es un protocolo basado en mensajes, lo que significa que el mensaje lleva el identificador del mensaje y, en función del identificador, se decide la prioridad. No es necesario identificar el nodo en la red CAN, por lo que resulta muy fácil insertarlo o eliminarlo de la red. Es un protocolo de comunicación de tipo serial semidúplex y asíncrono. El CAN es un protocolo de comunicación de dos cables ya que la red CAN se conecta a través del bus de dos cables. Los cables son de par trenzado con una impedancia característica de 120 Ω conectados en cada extremo. Inicialmente fue diseñado principalmente para la comunicación dentro de los vehículos, pero ahora se utiliza en muchos otros contextos. Al igual que UDS y KWP 2000, CAN también se puede utilizar para el diagnóstico a bordo.

¿Por qué PUEDE?

La necesidad de un protocolo de comunicación estándar centralizado surgió debido al aumento en la cantidad de dispositivos electrónicos. Por ejemplo, en un vehículo moderno puede haber más de 7 TCU para varios subsistemas, como el tablero de instrumentos, el control de la transmisión, la unidad de control del motor y muchos más. Si todos los nodos están conectados uno a uno, entonces la velocidad de la comunicación sería muy alta, pero la complejidad y el costo de los cables serían muy altos. En el ejemplo anterior, un solo tablero requiere 8 conectores, por lo que para superar este problema, se introdujo CAN como una solución centralizada que requiere dos cables, es decir, CAN alto y CAN bajo. La solución de utilizar el protocolo CAN es bastante eficiente debido a su priorización de mensajes y flexible ya que se puede insertar o quitar un nodo sin afectar la red.

Aplicaciones del protocolo CAN

Inicialmente, el protocolo CAN fue diseñado para abordar el problema de comunicación que ocurre dentro de los vehículos. Pero posteriormente, por las características que ofrece, se utiliza en otros campos. Las siguientes son las aplicaciones del protocolo CAN:

  • Automoción (vehículos de pasajeros, camiones, autobuses)
  • Equipos electrónicos para aviación y navegación.
  • Automatización industrial y control mecánico.
  • Ascensor y escaleras mecánicas
  • Automatización de edificios
  • Instrumentos y equipos médicos.
  • Marino, médico, industrial, médico.

Arquitectura en capas CAN

Como sabemos que el modelo OSI divide el sistema de comunicación en 7 capas diferentes. Pero la arquitectura en capas CAN consta de dos capas, es decir,

Entendamos ambas capas.

java lambda
  • Capa de enlace de datos: esta capa es responsable de la transferencia de datos de nodo a nodo. Le permite establecer y finalizar la conexión. También se encarga de detectar y corregir los errores que puedan ocurrir en la capa física. La capa de enlace de datos se subdivide en dos subcapas:
      MAC:MAC significa Control de acceso a medios. Define cómo los dispositivos de una red obtienen acceso al medio. Proporciona encapsulación y decapsulación de datos, detección de errores y señalización.
  • LLC:LLC significa control de enlace lógico. Es responsable del filtrado de aceptación de tramas, la notificación de sobrecarga y la gestión de recuperación.
  • Capa física: la capa física es responsable de la transmisión de datos sin procesar. Define las especificaciones para parámetros como el nivel de voltaje, la sincronización, las velocidades de datos y el conector.

Las especificaciones CAN definen el protocolo CAN y la capa física CAN, que se definen en el estándar CAN. ISO 11898. ISO 11898 tiene tres partes:

  • ISO 11898-1: esta parte contiene la especificación de la capa de enlace de datos y el enlace de señal física.
  • ISO 11898-2: esta pieza se incluye en la capa física CAN para CAN de alta velocidad. El CAN de alta velocidad permite una velocidad de datos de hasta 1 Mbps utilizada en el tren de potencia y el área de carga del vehículo.
  • ISO 11898-3: esta parte también se incluye en la capa física CAN para CAN de baja velocidad. Permite una velocidad de datos de hasta 125 kbps y el CAN de baja velocidad se utiliza cuando la velocidad de comunicación no es un factor crítico.

CiA DS-102: La forma completa de CiA es CAN en Automatización, que define las especificaciones para el conector CAN.

En lo que respecta a la implementación, el controlador CAN y el transceptor CAN se implementan en el software con la ayuda de la aplicación, el sistema operativo y las funciones de gestión de red.

Puede enmarcar

Entendamos la estructura del marco CAN.

granandhra
protocolo CAN
    SOF:SOF significa el inicio de la trama, lo que indica que la nueva trama se ingresa en una red. Es de 1 bit.Identificador:Un formato de datos estándar definido bajo la especificación CAN 2.0 A utiliza un identificador de mensaje de 11 bits para el arbitraje. Básicamente, este identificador de mensaje establece la prioridad del marco de datos.RTR:RTR significa Solicitud de transmisión remota y define el tipo de trama, ya sea una trama de datos o una trama remota. Es de 1 bit.Campo de control:Tiene funciones definidas por el usuario.
      IR:Un bit IDE en un campo de control significa extensión de identificador. Un bit IDE dominante define el identificador estándar de 11 bits, mientras que el bit IDE recesivo define el identificador extendido de 29 bits.Contenido descargable:DLC significa Código de longitud de datos, que define la longitud de los datos en un campo de datos. Es de 4 bits.Campo de datos:El campo de datos puede contener hasta 8 bytes.
    Campo CRC:La trama de datos también contiene un campo de verificación de redundancia cíclica de 15 bits, que se utiliza para detectar la corrupción si ocurre durante el tiempo de transmisión. El remitente calculará el CRC antes de enviar la trama de datos, y el receptor también calcula el CRC y luego compara el CRC calculado con el CRC recibido del remitente. Si el CRC no coincide, el receptor generará el error.Campo ACK:Este es el reconocimiento del receptor. En otros protocolos, se envía un paquete separado para un acuse de recibo después de recibir todos los paquetes, pero en el caso del protocolo CAN, no se envía ningún paquete separado para un acuse de recibo.EOF:EOF significa final del cuadro. Contiene 7 bits recesivos consecutivos conocidos como Fin de trama.

Ahora veremos cómo se transmiten los datos a través de la red CAN.

protocolo CAN

Una red CAN consta de varios nodos CAN. En el caso anterior, hemos considerado tres nodos CAN y los denominamos nodo A, nodo B y nodo C. El nodo CAN consta de tres elementos que se detallan a continuación:

  • Anfitrión
    Un host es un microcontrolador o microprocesador que ejecuta alguna aplicación para realizar un trabajo específico. Un anfitrión decide qué significa el mensaje recibido y qué mensaje debe enviar a continuación.
  • Controlador CAN
    El controlador CAN se ocupa de las funciones de comunicación descritas por el protocolo CAN. También activa la transmisión o la recepción de los mensajes CAN.
  • Transceptor CAN
    El transceptor CAN es responsable de la transmisión o recepción de datos en el bus CAN. Convierte la señal de datos en un flujo de datos recopilados del bus CAN que el controlador CAN puede entender.

En el diagrama anterior, se utiliza un cable de par trenzado sin blindaje para transmitir o recibir datos. También se conoce como bus CAN, y el bus CAN consta de dos líneas, es decir, línea CAN baja y línea CAN alta, que también se conocen como CANH y CANL, respectivamente. La transmisión se produce debido al voltaje diferencial aplicado a estas líneas. El CAN utiliza cable de par trenzado y voltaje diferencial debido a su entorno. Por ejemplo, en un automóvil, el motor, el sistema de encendido y muchos otros dispositivos pueden causar pérdida y corrupción de datos debido al ruido. La torsión de las dos líneas también reduce el campo magnético. El bus termina con una resistencia de 120 Ω en cada extremo.

Características de la CAN

protocolo CAN

Con la ayuda del voltaje diferencial, determinaremos cómo se transmiten 0 y 1 a través del bus CAN. La figura de arriba es el gráfico de voltaje que muestra el nivel de voltaje de CAN bajo y CAN alto. En terminología CAN, se dice que la lógica 1 es recesiva mientras que la lógica 0 es dominante. Cuando la línea CAN alta y la línea CAN baja se aplican con 2,5 voltios, entonces el voltaje diferencial real sería cero voltios. El transceptor CAN lee un cero voltios en el bus CAN como un 1 recesivo o lógico. Un cero voltios en el bus CAN es un estado ideal del bus. Cuando la línea CAN alta se sube a 3,5 voltios y la línea CAN baja se baja a 1,5 voltios, entonces el voltaje diferencial real del bus sería de 2 voltios. El transceptor CAN lo trata como un bit dominante o 0 lógico. Si el estado del bus llega a 0 dominante o lógico, entonces sería imposible pasar al estado recesivo mediante cualquier otro nodo.

Puntos clave aprendidos de las características CAN

  • La lógica 1 es un estado recesivo. Para transmitir 1 en el bus CAN, tanto CAN alto como CAN bajo deben aplicarse con 2,5 V.
  • La lógica 0 es un estado dominante. Para transmitir 0 en el bus CAN, se debe aplicar CAN alto a 3,5 V y CAN bajo a 1,5 V.
  • El estado ideal del autobús es recesivo.
  • Si el nodo alcanza el estado dominante, ningún otro nodo puede regresar al estado recesivo.

Lógica del bus CAN

protocolo CAN
protocolo CAN

Del escenario anterior, llegamos a saber que el estado dominante sobrescribe al estado recesivo. Cuando el nodo envía el bit dominante y el recesivo simultáneamente, el bus sigue siendo dominante. El nivel recesivo ocurre sólo cuando todos los nodos envían el bit recesivo. Esta lógica se conoce como lógica AND y físicamente se implementa como un circuito de colector abierto.

Principio de comunicación CAN

Como sabemos, el mensaje se envía según la prioridad establecida en el campo de arbitraje. Para la trama estándar, el identificador del mensaje es de 11 bits, mientras que para la trama extendida, el identificador del mensaje es de 29 bits. Permite al diseñador del sistema diseñar el identificador del mensaje en el propio diseño. Cuanto más pequeño sea el identificador del mensaje, mayor será la prioridad del mensaje.

Entendamos cómo funciona el arbitraje a través de un diagrama de flujo.

Protocolo CAN (Red de área del controlador)

El remitente quiere enviar el mensaje y espera a que el bus CAN quede inactivo. Si el bus CAN está inactivo, el emisor envía el SOF o el bit dominante para el acceso al bus. Luego, envía el bit identificador del mensaje en el bit más significativo. Si el nodo detecta el bit dominante en el bus mientras ha transmitido el bit recesivo, significa que el nodo ha perdido el arbitraje y deja de transmitir más bits. El remitente esperará y reenviará el mensaje una vez que el autobús esté libre.

Ejemplo de arbitraje CAN

protocolo CAN

Si consideramos tres nodos, es decir, el Nodo 1, el Nodo 2 y el Nodo 3, los identificadores de mensajes de estos nodos son 0x7F3, 0x6B3 y 0x6D9, respectivamente.

protocolo CAN

La transmisión de los tres nodos con el bit más significativo se muestra en el diagrama anterior.

11thbit: como los tres bits de los nodos son recesivos, el bit del bus también seguirá siendo recesivo.

10thbit: Todos los nodos tienen el décimo bit como recesivo, por lo que el bus también seguirá siendo recesivo.

cuando se invento la escuela

9thbit: el nodo 1 tiene un bit recesivo mientras que otros nodos tienen un bit dominante, por lo que el bus también seguirá siendo dominante. En este caso, el nodo 1 ha perdido el arbitraje, por lo que deja de enviar bits.

8thbit: tanto el nodo 2 como el nodo 3 envían un bit recesivo, por lo que el estado del bus seguirá siendo recesivo.

7thbit: el nodo 2 envía un bit dominante mientras que el nodo 3 envía un bit recesivo, por lo que el estado del bus seguirá siendo dominante. En este caso, el nodo 3 ha perdido el arbitraje, por lo que deja de enviar el mensaje mientras que el nodo 2 ha ganado el arbitraje significa que seguirá reteniendo el bus hasta recibir el mensaje.