Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Canbus Dspic (Segunda Versión 02-04-2010) PDF
Canbus Dspic (Segunda Versión 02-04-2010) PDF
dsPIC30F4013
Autores:
Bonillo Pic, Jorge
Domnech Jurez, Hugo
Navarro Valverde, Sergio
Parra Camacho, Juan Sebastin
CAN en el dsPIC30f4013
INDICE
BLOQUE 1: Que es CAN
1. Introduccin
1.1 Los inicios
1.2 Estandarizacin
1.3 Caractersticas bsicas del bus CAN
2. Como funciona CAN
2.1 Arquitectura de capas
2.2 Estructura de un nodo CAN
2.3 Acceso al medio
2.4 Deteccin de Errores
2.5 Formato de codificacin y sincronizacin de datos.
2.6 Especificaciones
2.7 Implementaciones
3. Aplicaciones CAN
CAN en el dsPIC30f4013
CAN en el dsPIC30f4013
1.- INTRODUCCIN
CAN en el dsPIC30f4013
CAN (Controller Area Network) es un protocolo de comunicaciones desarrollado por la
firma alemana Robert Bosch GmbH, basado en una topologa bus , en 1986 fue presentado
oficialmente por el grupo Bosch en la Sociedad de Ingeniera de la Automocin,
principalmente para aplicaciones de automocin.
concepto de los ya
Los esfuerzos por estandarizar y mejorar el protocolo CAN aplicado a la automocin, dio
lugar en Marzo de 1992 a la fundacin de la (CiA) CAN en la Automocin formada por
usuarios internacionales y fabricantes, usuarios internacionales y grupos de fabricantes
fundaron oficialmente la organizacin'.
La primera publicacin tcnica, que trataba acerca de la capa fsica, fue emitida
solo
unas semanas despus: CiA recomendaba utilizar solamente transceptores CAN que
cumplieran la normativa ISO 11898. A da de hoy, son los transceptores RS485 los utilizados
ms comnmente.
Otra de las primeras tareas de la CIA fue la especificacin de una capa de aplicacin de la
CAN. La CAL 'CAN Application Layer ' se cre utilizando el material procedente de Philips
Medical Systems y STZP, junto con la ayuda de otros miembros de la CIA.
CAN en el dsPIC30f4013
Tambin ha desarrollado normalizacin CAN para los camiones. La creacin de redes
entre el camin y el remolque se ha estandarizado como ISO 11992 . Este protocolo se basa en
J1939 y se est utilizando en Europa desde 2006.
En 1993 un consorcio Europeo liderado por Bosch ,desarroll un prototipo conocido como
CANopen para las redes internas en las cadenas de produccin. En 1995, se public el perfil
totalmente revisado de las comunicaciones de CANopen, que en el plazo de cinco aos ya se
haba convertido en la red integrada estandarizada ms importante de Europa, puesto que
ofreca una gran flexibilidad y un gran nmero de opciones de configuracin, as como diversos
perfiles de dispositivo, interfaz y uso.
Actualmente, CANopen se sigue utilizando especialmente en Europa: mquinas de
moldeado por inyeccin en Italia, mquinas expendedoras en Inglaterra, gras en Francia,
control de maquinaria en Austria, o maquinaria de fabricacin de relojes en Suiza.
En el ao 2000, surgi el TTCAN (Time-tiggered communication on CAN), un nuevo
protocolo basado en CAN, fruto de una larga investigacin entre acadmicos y expertos de la
industria de los semiconductores. Esta extensin permita tanto la transmisin de mensajes
simultneos, como la implementacin de un bucle cerrado para el control del bus. Y gracias a
que el protocolo del bus no fue modificado, este tipo de mensajes podan seguir siendo
enviados con el mismo sistema fsico de bus.
1.2 Estandarizacin
La especificacin del protocolo CAN est estandarizado por La Organizacin
Internacional para la Estandarizacin (ISO, International Organization for Standarization).
La ISO define dos tipos de redes CAN:
A) Una red de alta velocidad (hasta 1 Mbps), bajo el estndar ISO 11898-2, destinada
para controlar el motor e interconectar las unidades de control electrnico (ECU),
sensores, sistemas antideslizantes, etc.
B) Una red de baja velocidad tolerante a fallos (menor o igual a 125 Kbps), bajo el
estndar ISO 11898-3, dedicada a la comunicacin de los dispositivos electrnicos
internos de un automvil como son control de puertas, techo corredizo, luces y
asientos.
C) Tambin destacan los estndares basados en el US-protocol J1939, como el ISO
11992 (referente a la interfaz para camiones y remolques) e ISO 11783 (referente a la
maquinaria agrcola y forestal).
CAN en el dsPIC30f4013
En general podra decirse que el bus CAN es idneo en aplicaciones que precisen control
distribuido en tiempo real (interconexin de controladores) en redes sin un gran flujo de datos.
Tambin destacan los siguientes aspectos:
Acceso al medio: Multidifusin (multicast), permite que todos los nodos puedan acceder al
bus de forma simultnea con sincronizacin de tiempos. Funcionamiento en modo Broadcast y
comunicacin Multimaestro, todos los mdulos CAN reciben y envan de informacin.
Velocidad flexible: ISO define dos tipos de redes CAN: una red de alta velocidad (de hasta 1
Mbps) definida por la ISO 11898-2, y una red de baja velocidad tolerante a fallos (menor o
igual a 125 Kbps) definida por la ISO 11898-3.
Desconexin autnoma de nodos defectuosos: Si un nodo de red cae, sea cual sea la causa, la
red puede seguir funcionado, ya que es capaz de desconectarlo o aislarlo del resto. De forma
contraria, tambin se pueden aadir nodos al bus sin afectar al resto del sistema, y sin
necesidad de reprogramacin.
Fiabilidad de transmisin dado que el bus CAN posee una eficiente deteccin de errores
(lograda a travs de cinco mecanismos de deteccin, 3 al nivel de mensaje y 2 a nivel de bit) y
puede funcionar con condiciones extremas de ruido e interferencias. Los errores adems
pueden ser sealizados
Longitud: las redes CAN pueden alcanzar 1000 metros de longitud ampliables con repetidores
y su velocidad depende de la longitud de la red.
CAN en el dsPIC30f4013
CAN en el dsPIC30f4013
CAN en el dsPIC30f4013
Control), gestiona la trama de los mensajes, el tiempo de acceso al medio y reconocimiento de
mensajes, sus errores y su sealizacin, as como la identificacin del momento para transmitir
o emitir en el bus.
CAN en el dsPIC30f4013
CAN en el dsPIC30f4013
Inicio de trama (SOF): El inicio de trama es una celda de un slo bit siempre dominante
que indica el inicio del mensaje, sirve para la sincronizacin con otros nodos.
Celda de Arbitraje (Arbitration Field): Es la celda que concede prioridad a unos
mensajes o a otros
Celda de control (Control Field): El campo de control est formado por dos bits
reservados para uso futuro y cuatro bits adicionales que indican el nmero de bytes de
datos. En realidad el primero de estos bits (IDE) se utiliza para indicar si la trama es de
CAN Estndar (IDE dominante) o Extendido (IDE recesivo). El segundo bit (RB0) es
siempre recesivo. Los cuatro bits de cdigo de longitud (DLC) indican en binario el
nmero de bytes de datos en el mensaje (0 a 8).
Celda de Datos (Data Field): Es el campo de datos de 0 a 8 bytes.
CRC: Cdigo de redundancia cclica: Tras comprobar este cdigo se podr comprobar si
se han producido errores.
Celda de reconocimiento (ACK): es un campo de 2 bits que indica si el mensaje ha sido
recibido correctamente. El nodo transmisor pone este bit como recesivo y cualquier
nodo que reciba el mensaje lo pone como dominante para indicar que el mensaje ha
sido recibido.
Fin de trama (EOF): Consiste en 7 bits recesivos sucesivos e indica el final de la trama.
Espaciado entre tramas (IFS): Consta de un mnimo de 3 bits recesivos.
12
CAN en el dsPIC30f4013
CAN en el dsPIC30f4013
deber esperar una secuencia adicional de 8 bits recesivos, para as asegurar la transmisin de
los nodos en estado activo frente a los de estado pasivo.
Consta de 2 campos, el indicador de sobrecarga y el delimitador. El primero consta de
6 bits dominantes, ampliable a 12 generados por otros nodos. Y el delimitador es de 8 bits
recesivos. Hay dos motivos para generar una trama de sobrecarga, para retrasar el mensaje
cuando las condiciones del nodo no son las adecuadas para recibir, pudiendo enviar hasta dos
consecutivas, y para iniciar la transmisin de una trama de sobrecarga cuando se detecta los 3
bits de intermisin. Por tanto una trama de sobrecarga dar lugar a ms, hasta un mximo de
12 bits dominantes de indicador de sobrecarga.
2.6. Especificaciones
La descripcin de ISO sobre la especificacin de los formatos CAN 2.0A y 2.0B est
orientada a los requisitos de fabricacin de los controladores:
-
El formato CAN 2.0A de trama estndar define la cabecera con 11 bits para el
identificador y sus controladores nicamente transmiten y reciben mensajes en este
formato, producindose un error si se trata del extendido.
El formato CAN 2.0B de trama extendida define la cabecera con 29 bits para el
identificador y tiene dos tipos de controladores. Los pasivos transmiten y reciben en
formato estndar, aunque admiten la recepcin de los extendidos. Los controlados
2.0B activos transmites y reciben mensajes en ambos formatos.
2.7. Implementaciones
Existen tres tipos de arquitecturas en microcontroladores: Stand-Alone CAN controller,
Integrated CAN Controller y Single-Chip CAN Node.
Stand-Alone CAN Controller
Es la arquitectura ms simple, para llevar a cabo una comunicacin en una red
CAN ser necesario:
1. Un microcontrolador como puede ser el 16F877, con el que se ha venido
trabajando a lo largo de todo este proyecto.
2. Un controlador CAN que introduzca el protocolo CAN, filtro de mensajes, y
todo el interface necesario para las comunicaciones. Un ejemplo de controlador
CAN es el MCP2510 cuya DATA SHEET se puede encontrar en la pgina web
de microchip.
3. Un transceiver CAN, esto es, un transmisor/receptor que puede ser por
ejemplo el MCP2551 desarrollado por microchip.
As pues, si de alguna manera se pretende trabajar en una red CAN con una placa de pruebas,
en un principio no sera factible a no ser que de alguna manera se le acoplasen el controlador y
el transceptor CAN correspondiente. Microchip ha creado una placa de pruebas especfica para
este tipo de comunicaciones, la cual puede conseguirse en su pgina web.
Integrated CAN Controller
Este tipo de arquitectura consiste en un microcontrolador que incluya, no slo sus
caractersticas propias sino adems un mdulo CAN con las caractersticas de un
14
CAN en el dsPIC30f4013
microcontrolador CAN. El transceiver se sita de manera separada. Este es el caso de nuestro
microcontrolador dSPIC30F4013. El mdulo del transceptor acta como un controlador de
lnea, balanceando la seal, esto es, adecuando los niveles de tensin de esta al exterior.
Single-chip CAN Node
Se trata de un chip que incluye en su interior los tres elementos necesarios para llevar a cabo
las comunicaciones en un entorno CAN.
15
CAN en el dsPIC30f4013
3.- APLICACIONES
16
CAN en el dsPIC30f4013
Casi todos los vehculos fabricados en Europa, por no decir todos, incorporan al menos
un nodo CAN en su sistema electrnico, e incluso los hay con 4 nodos. Hoy en dia, un
automvil puede llegar a tener unas 70 ECUs (Unidades de Control Electronico) para varios
subsistemas, como por ejemplo la ECU encargada del control del motor, del ABS, del sistema
de sonido, elevalunas elctricos El bus CAN se implanta como canal de comunicacin entre
todos estos sistemas.
En automviles por ejemplo, es posible que cables, contactos y las propias unidades de
mando presenten alguna disfuncin. As que para el anlisis de una avera, se debe tener
presente que una unidad de mando averiada abonada al Can-Bus, como ya hemos visto, en
ningn caso impide que el sistema trabaje con normalidad. Es decir: no ser posible llevar a
cabo las funciones que implican el uso de informacin que proporciona la unidad averiada,
pero s todas las dems. En este caso podemos detectar fallos en la red CAN mediante el
sistema de diagnostico OBD (del ingles, On-Board Diagnostic). Este sistema permite controlar
casi la totalidad del vehiculo, pues como hemos visto, toda la electrnica de los coches
modernos se asienta sobre el bus CAN y esta interfaz de diagnostico y control.
Los fabricantes han conseguido muy rpidamente que tambin los fallos de otros
sistemas se puedan leer a travs del OBD. Esto ha llevado a que a travs del interfaz del OBD a
da de hoy prcticamente todo pueda ser leido, ajustado y reiniciado. En coches del consorcio
VAG es posible a travs de las funciones de confort: regular el cierre centralizado, se pueden
ajustar las indicaciones del salpicadero, el aire acondicionado, el comportamiento de la
transmisin automtica, la regulacin del sonido de la radio, y mucho ms. Incluso la revisin
de la emisin de gases o la regulacin de los valores de CO2, pueden ser llevadas a cabo a
travs del interfaz del OBD.
En la industria, los protocolos de las capas superiores como CANopen y DeviceNet CAN
logran la integracin entre sistemas. El bus CAN se utiliza en una amplia variedad de industrias
manufactureras, principalmente para el control de la mquina integrada, pero tambin para la
automatizacin industrial, automatizacin de procesos, y la generacin de energa. Un ejemplo
es la oficina de ingeniera Suiza Kyaser lo introdujo a los fabricantes de maquinaria textil del
pas, que acabaron fundando el Grupo de usuarios textiles CAN. Los dispositivos ms
frecuentes en este campo son sensores hidrulicos y neumticos, actuadores, etc.
En aviacin, la capa de aplicacin CANaerospace se usa, principalmente, para el control
de los sistemas de las aeronaves de pequeas y medianas empresas. En satlites espaciales y
otras aplicaciones del mismo campo, las redes CAN tambin aparecen, ya que por ejemplo, la
ESA, Agencia Espacial Europea, utiliza CANopen como protocolo de capa de aplicacin en las
redes de sus satlites.
En domtica es cada vez ms frecuente encontrar redes basadas en CAN. Muchas
casas y oficinas que implementan sistemas domticas controlan su calefaccin-ventilacin
mediante redes basadas en CAN.
En campos como Agricultrua, Salud, Astronomia o equipamiento de Laboratorio
tambin podemos encontrar redes CAN.
17
CAN en el dsPIC30f4013
En todas las lneas de uso prima sobre otras soluciones la relacin velocidad-coste del
bus CAN, que supera con creces otras implementaciones como LIN. De todos modos, en
muchas ocasiones, la implementacin del bus CAN no excluye al uso del bus LIN, es mas,
usualmente ambos buses se complementan, ya que dadas sus diferencias (sobre todo en
velocidad, tamao de datos y confiabilidad) hacen que cada una de las opciones sea mas
apropiada para ciertos usos que la otra.
La presencia del bus CAN crece ms cada dia, ya que puede adaptarse perfectamente a
muchas otras situaciones, como por ejemplo en el Monorail de las Vegas, en los enormes
camiones de uso minero-cantero de la marca Liebherr, o en mquinas de empaquetado
industrial por Meurer.
18
CAN en el dsPIC30f4013
BLOQUE 2: CAN EN EL
DSPIC30F4013
19
CAN en el dsPIC30f4013
20
CAN en el dsPIC30f4013
Implementa el protocolo CAN 2.0 A/B tal y como lo define Bosch, es decir, soporta CAN
1.2, CAN 2.0A, CAN 2.0B Pasivo y CAN 2.0B Activo.
Soporta tramas de datos estndar y extendidas.
Mximo 8 bytes de longitud de datos.
Velocidad de transferencia de datos de hasta 1 Mbit/segundo.
Receptor de doble bfer
6 filtros de aceptacin completa (full acceptance filter), tanto para mensajes con
identificador estndar como extendido.
2 mscaras de filtro de aceptacin completa (full acceptance filter masks)
3 bufers de transmisin con asignacin de prioridades especficas y capacidad de aborto
(cada bfer puede contener hasta 8 bytes de datos)
Funcin de despertador (wake-up) programable con filtros paso-bajo integrados.
Modo Loopback programable con operacin de auto-test (self-test).
Capacidad de sealizacin a travs de interrupciones por parte de todos los receptores y
transmisores de estados de error CAN.
Reloj interno programable.
2 modos de baja potencia: Sleep (dormido) e Idle (parado).
21
CAN en el dsPIC30f4013
Transceptor MCP2551
Entrada de seleccin de modo
Velocidad 1 Mb/s
Cumple la norma ISO-11898 para la estandarizacin de la capa fsica
Utilizable a 12V y 24V
Gran inmunidad al ruido
22
CAN en el dsPIC30f4013
Standby mode: Se consigue poniendo a nivel alto el pin Rs. En este modo, el
transmisor est apagado, y el receptor funciona ralentizado, es decir, el pin del
receptor RXD seguir operativo, pero de forma ms lenta.
23
CAN en el dsPIC30f4013
24
CAN en el dsPIC30f4013
CAN en el dsPIC30f4013
satisfactoriamente al modo. Los pins de entrada/salida (I/O) volvern a su funcin normal
cuando el mdulo est en el modo de mdulo inutilizado (Module Disable mode).
El mdulo puede ser programado para aplicar un filtro paso-bajo a la lnea de entrada CiRX,
mientras el mdulo o la CPU estn en modo dormido (Sleep mode). El bit WAKFIL
(CiCFG2<14>) es el que activa o desactiva este filtro.
NOTA: Si el mdulo va a trabajar en un modo de funcionamiento particular y es
solicitada una transmisin inmediatamente despus de que el mdulo CAN se haya colocado
en ese modo de funcionamiento, esperar 11 bits recesivos consecutivos en el bus antes de
empezar la transmisin. Si el usuario decide cambiar al modo deshabilitado (disable mode)
dentro del periodo de esos 11 bits recesivos, la transmisin ser cancelada y se colocar el bit
TXABT y ser borrado el bit TXREQ.
26
CAN en el dsPIC30f4013
2.2.2
2.2.3
Los bits de mscara determinan que bits se han de aplicar en el filtro. . Encontramos 2
mscaras de filtro de aceptacin programables, una por cada bfer de recepcin. Si un bit de
mscara est a cero, entonces este bit ser aceptado automticamente independientemente
del bit de filtro.
27
CAN en el dsPIC30f4013
2.2.4
Sobrecarga de recepcin:
2.2.5
Errores de recepcin
2.2.6
Interrupciones de recepcin
Las Interrupciones de recepcin se pueden dividir en 3 grandes grupos, cada uno de ellos
incluye varias condiciones que generan interrupciones:
-
28
CAN en el dsPIC30f4013
-
2.3.2
Secuencia de transmisin:
Para iniciar la transmisin del mensaje, el bit TXREQ (CiTXnCON<3>) debe ponerse a 1. El
mdulo del bus CAN resuelve cualquier conflicto de tiempo entre el establecimiento del bit
TXREQ y el Inicio de Trama (SOF), asegurando que si la prioridad ha sido cambiada, se ha
resuelto correctamente antes de llegar al SOF. Cuando se pone a 1 TXREQ, los bits del flag
TXABT (CiTXnCON<6>), TXLARB (CiTXnCON<5>) y TXERR (CiTXnCON<4>) son puestos a 0
automticamente. Poner a 1 el bit TXREQ simplemente marca un bfer de mensaje como
29
CAN en el dsPIC30f4013
puesto en cola para transmisin. Cuando el mdulo detecta el bus disponible, empieza a
transmitir el mensaje que tiene mayor prioridad.
-
2.3.3
2.3.4
Errores de transmisin
2.3.5
Interrupciones de transmisin
CAN en el dsPIC30f4013
- Interrupciones de transmisin: Al menos uno de los tres bufers de transmisin est
vaco y puede ser cargado una para programar transmisin de mensaje. Los flags TXnIF
indican que bfer de transmisin est disponible y ha sido el causante de la
interrupcin.
- Interrupciones de errores de transmisin: Una interrupcin error de transmisin se
indica con el flag ERRIF. La fuente del error se puede determinar comprobando los
flags de error en el registro de Estatus 50 de Interrupcin del CAN, CiINTF. Los flags de
este registro estn relacionados con los errores de transmisin y de recepcin.
- Interrupcin de Advertencia del Transmisor: El bit TXWAR indica que el contador de
errores de transmisin ha alcanzado el lmite de advertencia de la CPU (96).
- Error Pasivo del Transmisor: El bit TXEP (CiINTF<12>) indica que el contador de
errores de transmisin ha superado el lmite de error pasivo de 127 y el modulo ha
entrado en el estado de error pasivo.
- Bus Off: El bit TXBO (CiINTF<13>) indica que el contador de errores de transmisin ha
superado 255 y el mdulo ha entrado en el estado de bus off.
31
CAN en el dsPIC30f4013
donde FCAN es FCY (si el bit CANKS est puesto a 1) o 4FCY (si CANKS est puesto a 0).
32
CAN en el dsPIC30f4013
Adems, FCAN no debe sobrepasar nunca los 30 MHz, es decir que si CANKS = 0, FCY no debe
exceder de 7.5 MHz, ya que como hemos dicho FCAN=4FCY en este caso.
Adems, para confirmar la funcionalidad de la red, se incluye en una posicin concreta
del tiempo de bit (del cual hablaremos ms adelante), un punto de muestreo (sample point
en ingls). Este es el punto exacto en el que el nivel de bus es ledo e interpretado como el
valor de ese respectivo bit. En algunos microcontroladores, entre los que se incluye
dsPIC30F4013, si la temporizacin de bits se retarda y tiene muchos TQ, es posible realizar
tambin, un muestreo mltiple sobre el bus. En este caso, las muestras para realizar el clculo
pueden ser tomadas en el punto de muestreo o en dos posiciones anteriores a este con una
distancia de TQ/2. Adems, el mdulo CAN permite al usuario elegir entre muestrear tres
veces en el mismo punto o una vez en cada uno de los tres puntos, segn pongamos a 0 o a
1 el bit
SAM (CiCFG2<6>).
Tenemos que en este modelo de muestreo el nivel determinado por el bus
corresponde
al resultado por mayora de tres valores. Para asegurar la validez del clculo, este muestreo
debe ocupar del 60 al 70 por ciento del tiempo de bit, dependiendo de los parmetros del
sistema.
33
CAN en el dsPIC30f4013
Y aqu podemos observar como el punto de muestreo del bit (sample point) se realiza
en seguida del segmento Phase_Seg1 y antes de Phase_Seg2. Las funciones y los tiempos de
cada uno de los segmentos son los siguientes:
-
34
CAN en el dsPIC30f4013
3.- PROGRAMACIN
35
CAN en el dsPIC30f4013
3.1 Programacin
MPLAB es un editor IDE gratuito, destinado a productos de la marca Microchip. Este
editor es modular, permite seleccionar los distintos microprocesadores soportados, adems de
permitir la grabacin de estos circuitos integrados directamente al programador. En concreto
permite trabajar con microcontroladores PIC y dsPIC desarrollados y fabricados por la
empresa Arizona Microchip Technology (AMT), que son los que utilizaremos nosotros.
MPLAB incorpora todas las utilidades necesarias para la realizacin de cualquier proyecto as
como compiladores de alto nivel (nosotros usaremos el c30). Podremos ensamblador nuestro
proyecto y simularlo en pantalla, pudiendo ejecutarlo posteriormente en modo paso a paso y
ver como evolucionaran de forma real tanto sus registros internos, la memoria RAM y/o
EEPROM de usuario como la memoria de programa, segn se fueran ejecutando las
instrucciones. Adems el entorno que se utiliza es el mismo que si se estuviera utilizando un
emulador.
Es un programa que corre bajo Windows y como tal, presenta las clsicas barras de
programa, de men, de herramientas de estado, etc. El ambiente MPLAB posee editor de
texto, compilador y simulacin (no en tiempo real).
CAN en el dsPIC30f4013
2.5.1 Ejemplo de programacin
En este ejemplo se utiliza la tcnica de polling o espera activa para comprobar si un botn esta
pulsado, y si es as, encender un LED. Esta tcnica consiste en tener el dispositivo
preguntando constantemente si est pulsado.
37