UNIVERSIDAD PONTIFICIA COMILLAS ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI) INGENIERO EN ELECTRÓNICA Y AUTOMÁTICA PROYECTO FIN DE CARRERA Equipo portátil para comunicación con centralitas por bus CAN AUTOR: Guillermo Pallarés Castillo MADRID, Junio de 2.005 ESTE PROYECTO CONTIENE LOS SIGUIENTES DOCUMENTOS DOCUMENTO No 1, MEMORIA 1.1 Memoria pág. 2 a 37 37 páginas 1.2 Estudio Económico pág. 40 a 41 2 páginas 1.3 Cálculos pág. 43 1 páginas 1.4 Manuales pág. 45 a 49 5 páginas pág. 1 1 página DOCUMENTO No 2, PLANOS 2.1 Planos DOCUMENTO No 3, PLIEGO DE CONDICIONES 3.1 Generales y económicas pág. 2 a 3 2 páginas 3.2 Técnicas y particulares pág. 4 1 página DOCUMENTO No 4, PRESUPUESTO 4.1 Mediciones pág. 1 1 página 4.2 Precios unitarios pág. 2 a 3 2 páginas 4.2 Sumas parciales pág. 3 a 6 3 páginas 4.2 Presupuesto general pág. 6 1 página Autorizada la entrega del proyecto del alumno: Guillermo Pallarés Castillo EL DIRECTOR DE PROYECTO José Antonio Murciano Firmado Fecha .............................. ...... / ...... / ...... Vo Bo del Coordinador de Proyectos Álvaro Sánchez Miralles Firmado .............................. Fecha ...... / ...... / ...... I Resumen Este proyecto aborda el desarrollo de una aplicación capaz de comunicarse con dispositivos electrónicos a través de un bus de comunicaciones industriales CAN. La aplicación comprende un software y una adaptación de hardware para un microcontrolador. La motivación de este proyecto surgió a través del estudio de los sistemas electrónicos empleados en la industria de la automoción. En la actualidad, la mayoría de los vehículos interconectan sus sensores, actuadores y centralitas utilizando redes basadas en el protocolo CAN. Por ello, cualquier operación que se pretenda realizar sobre estos equipos implica el acceso a este bus de comunicaciones. Las herramientas comerciales que dan acceso a bus CAN son en la actualidad bastante caras y complejas. Otras herramientas aportan un acceso a la capa física, pero no facilitan la tarea del intercambio de datos. En este proyecto se propone la utilización de un microcontrolador para que controle las funciones de acceso al bus de forma sencilla, pero con posibilidad de modificar todos los parámetros de la conexión y de la información enviada. El control del dispositivo se puede hacer mediante pulsadores e información en pantalla de un circuito impreso o bien desde un ordenador, mediante un instrumento virtual de LabView. Para tareas sencillas el sistema se puede preparar con una breve configuración mediante pulsadores, mientras que la modificación de los parámetros II más complejos, o el acceso a bases de datos con información sobre los dispositivos se debe hacer con el programa informático, que enviará toda la información al microcontrolador mediante el bus serie. El desarrollo y prueba del sistema se ha hecho con un dispositivo electrónico de la marca Magneti Marelli (cuadro de instrumentación), con el que se ha conseguido una comunicación a través de CAN. Para la depuración de la comunicación y la adaptación a distintos parámetros del bus se ha utilizado una tarjeta PCMCIA de acceso a bus CAN de la compañía National Instruments. El resultado obtenido es una aplicación totalmente operativa que permite acceder a cualquier tipo de bus CAN, y a cualquier dispositivo conectado al bus. La utilidad industrial de esta aplicación pasa por tareas de montaje, configuración y mantenimiento en fábricas y talleres, destacando su robustez y portabilidad. La utilidad didáctica se centra en el estudio de redes de comunicaciones y programación sobre microcontroladores, bases de datos y LabView. Como conclusión principal, cabe destacar la gran importancia de la tecnología CAN en la actualidad y en un futuro próximo, debido fundamentalmente a su robustez y a su adaptabilidad a nuevas necesidades, fundamentalmente el aumento del ancho de banda y la adaptación a nuevos medios físicos, como la fibra óptica. Por otro lado, se ha valorado la utilización de herramientas de programación gráfica como LabView. Frente a la programación escrita los lenguajes gráficos ofrecen una gran potencia para aplicaciones concretas, pero una menor robustez para desarrollos más específicos, debido fundamentalmente a la dependencia de librerías poco III accesibles. Finalmente se ha demostrado la capacidad de los microcontroladores de última generación para desarrollar tareas complejas mediante programación en lenguaje C y ensamblador, gracias al aumento de memoria y de velocidad de procesamiento de datos, así como los módulos de comunicación con dispositivos externos. IV Abstract This project deals with the development of a system able to communicate with electronic devices through an industrial CAN communication bus. The system is made up of the software and hardware needed to ride the microcontroller. The motivation for this project came up by studying electronic devices used by the automotive industry. At the moment, most vehicles connect their sensors, actuators and other electronic systems by using CAN based networks. Therefore, any operation on this equipment implies the access to the communication bus. Communication with a CAN bus connected device can be done by means of expensive and complex tools, or by other devices which provide access to the physical layer, but don’t deal with data exchange. The use of a microcontroller is proposed in this project in order to control the bus access easily, adding the possibility to modify all connection and sent data parameters. The microcontroller based device can be controlled by using a screen and a small keypad in the circuit board, or also by a National Instrument Virtual Instrument, running on a computer. Simple tasks can be done by configurating the device board, but more complex parameters, or database information should be modified by the computer program, which will send all data to the microcontroller through serial bus. The development and test of the system has been done with a Magneti Marelli electronic device (car instrument panel), with whom a communication has been obtained. Communication debugging and adaptation to other CAN specifications has been CC achieved by using a National Instrument CAN bus PCMCIA card. The results of this project is a fully operative application which allows the access to any kind of CAN bus, and any device connected to the bus. Industrial applications could be assembly, configuration and maintenance in factories and workshops, with an important advantage in terms of robustness and portability. In didactic terms, this project deals with the study of computer networks and microcontroller, LabView and database programming. This work main conclusion is the huge importance of CAN based systems at the moment and short term, mainly due to its robustness and adaptability to new needs, as bandwidth increase and new physical layers as optic fibre. Also, an evaluation on graphic programming systems against written ones has been done. These languages offer a great power for some functionalities, but also a smaller robustness for specific ones. The reason for this is the use of hard to get libraries. Finally, recent microcontroller features have been proved as fully able to develop complex tasks by C and assembly programming languages thanks to memory and data processing increases, and external devices communication modules. Documento No I, Memoria Índice general I Memoria 1 Prólogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1. Introducción y planteamiento del proyecto . . . . . . . . . . . . . . . 3 1.1.1. Objetivo del proyecto . . . . . . . . . . . . . . . . . . . . . . 3 1.1.2. Estudio de las tecnologías existentes . . . . . . . . . . . . . . 5 1.1.3. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.1.4. Áreas de conocimiento . . . . . . . . . . . . . . . . . . . . . 6 1.1.5. Metodología de trabajo y herramientas . . . . . . . . . . . . . 7 1.2. Descripción de las tecnologías . . . . . . . . . . . . . . . . . . . . . 10 1.2.1. Bus CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.2.2. Microcontrolador . . . . . . . . . . . . . . . . . . . . . . . . 17 1.2.3. Comunicación RS-232 . . . . . . . . . . . . . . . . . . . . . 19 1.2.4. Lenguaje de programación LabView . . . . . . . . . . . . . . 21 1.3. Descripción de la aplicación desarrollada . . . . . . . . . . . . . . . 24 1.3.1. Programa en C . . . . . . . . . . . . . . . . . . . . . . . . . 24 ÍNDICE GENERAL II 1.3.2. Programa en LabView . . . . . . . . . . . . . . . . . . . . . 27 1.3.3. Protocolo ordenador-microcontrolador . . . . . . . . . . . . . 30 1.3.4. Conexión hardware . . . . . . . . . . . . . . . . . . . . . . . 31 1.4. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 1.4.1. Capacidad del bus CAN . . . . . . . . . . . . . . . . . . . . 33 1.4.2. Desarrollo de aplicaciones con LabView . . . . . . . . . . . . 34 1.4.3. Programación de microcontroladores . . . . . . . . . . . . . 36 Bibliografía 37 II 39 ESTUDIO ECONÓMICO 1.1. Estudio económico . . . . . . . . . . . . . . . . . . . . . . . . . . . III CALCULOS 1.1. Cálculos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IV MANUALES 40 42 43 44 1.1. Manual de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 1.1.1. Modo autónomo . . . . . . . . . . . . . . . . . . . . . . . . 45 1.1.2. Modo programado . . . . . . . . . . . . . . . . . . . . . . . 46 Parte I Memoria 2 Prólogo En la memoria de este proyecto se recogen los trabajos realizados investigando las posibilidades de realizar desarrollos asociados al intercambio de datos utilizando el protocolo de comunicaciones CAN bus. Se entienden como desarrollos aplicaciones a nivel de software y a nivel de hardware. El resultado final de este proyecto es una herramienta capaz de comunicarse con cualquier dispositivo conectado a un bus CAN, con un coste de fabricación muy reducido y con una interfaz de utilización muy sencilla para el usuario. Dentro de la interfaz de utilización se incluye una herramienta que permite configurar de modo gráfico el dispositivo de hardware y la información que se pretende enviar. Como introducción, este documento comienza mostrando la relación entre las materias tratadas en el desarrollo de este proyecto y los contenidos de la titulación de Ingeniero en Electrónica y Automática. Posteriormente, con el fin de poder abordar el estudio de las aplicaciones se va a hacer una descripción de los aspectos teóricos fundamentales del proyecto: protocolos de comunicaciones y herramientas de hardware y de software empleadas. La aportación de este proyecto se va a detallar en una sección conteniendo una descripción detallada de las aplicaciones y de la utilidad de las mismas. Finalmente se van a exponer las conclusiones de la realización del proyecto, acerca de la utilización de este protocolo y de la utilidad de las herramientas empleadas. 1.1 Introducción y planteamiento del proyecto 1.1. 3 Introducción y planteamiento del proyecto Este proyecto intenta resolver una necesidad concreta de comunicación con un bus de comunicaciones muy extendido en la industria. Este objetivo principal justifica la aplicación de una gran cantidad de contenidos teóricos adquiridos a lo largo de la carrera de Ingeniero en automática y electrónica industrial. Por otro lado, el hecho de trabajar sobre componentes de hardware y software extendidos en el ámbito industrial implica una introducción al desarrollo de aplicaciones que cumplan con las especificaciones de la industria, así como una dificultad añadida para conseguir los objetivos propuestos. Esta dificultad se debe a que en muchos casos la información sobre los sistemas de que se dispone no es suficiente para conseguir una aplicación verdaderamente operativa. NOTA: El proyecto se ha desarrollado en la empresa CONTER Control de Energía S.A. 1.1.1. Objetivo del proyecto Se ha diseñado un sistema capaz de interactuar con dispositivos conectados a un bus de comunicaciones de tipo CAN (Controller Area Network) para tareas de fabricación o de mantenimiento. El sistema es autónomo y portátil, dotado de una interfaz de manejo simple para el usuario. Como el funcionamiento de estos dispositivos es bastante complejo, la información necesaria para la comunicación se facilita al usuario mediante el acceso a una base de datos estándar con los parámetros necesarios para 1.1 Introducción y planteamiento del proyecto 4 configurar el mensaje necesario para cada función del dispositivo. El acceso a la base de datos se hace desde un ordenador con cualquier sistema operativo, que se comunica con el microcontrolador mediante el puerto serie. En la figura 1 se muestra un esquema de la aplicación. Figura 1: Diagrama de bloques del sistema completo Se pretende que el sistema diseñado sea una herramienta para procesos en los que es necesario controlar dispositivos con conexión CAN, ya sea en tareas de fabricación o de mantenimiento. El sistema es capaz de pedir una respuesta del dispositivo, ya sea información sobre su estado o actuación sobre un motor o sensor al que esté acoplado. La idea de fijar un estándar que permita la comunicación entre todos los elementos conectados a la línea, permite también que una herramienta como la presentada en este proyecto pueda acceder a todos los dispositivos conectados al bus mediante un único terminal. Por lo tanto, constituye un banco de pruebas capaz de verificar el funcionamiento de todos los componentes electrónicos de un sistema basado en CAN. 1.1 Introducción y planteamiento del proyecto 1.1.2. 5 Estudio de las tecnologías existentes Debido a la gran cantidad de dispositivos diseñados para utilizar una conexión a redes de bus CAN, existen en el mercado una gran cantidad de herramientas que permiten monitorizar la información que circula por el bus. Otras herramientas permiten acceder a los dispositivos conectados al bus. Finalmente, algunos fabricantes ofrecen herramientas integradas con todos los servicios anteriores y acceso a bases de datos, pero con un coste muy alto. La aplicación propuesta en este proyecto consigue prestaciones similares a los sistemas integrados de acceso al bus, pero con un coste más reducido que el de las herramientas más simples. 1.1.3. Motivación La arquitectura de bus CAN fue inicialmente diseñada para su utilización en automóviles, pero actualmente tiene también muchas otras aplicaciones de automatización y control. En el proceso de fabricación y para realizar cualquier tarea de mantenimiento o de monitorización del bus es necesario utilizar un PC con herramientas de hardware y de software muy costosas. La aplicación que se propone en este proyecto sólo necesita un PC con un puerto serie para acceder a todos los dispositivos conectados al bus, sin ningún software especial, lo que supone un importante ahorro de costes. Además, la interfaz gráfica con integración de una herramienta de acceso a una base de datos con información sobre 1.1 Introducción y planteamiento del proyecto 6 las tramas de cada dispositivo ofrece una gran facilidad de utilización. 1.1.4. Áreas de conocimiento Las áreas de conocimiento que estudiadas en este proyecto son las siguientes: 1. Programación de microcontrolador La parte más importante del proyecto consiste en la programación de un microcontrolador para conseguir la comunicación con el bus industrial. Además, el programa tiene que ser capaz de recibir la información necesaria para establecer la conexión desde un ordenador mediante via serie. Por último, el programa debe permitir la interacción del usuario mediante una pantalla y unos pulsadores. La programación se realizará en lenguaje C y ensamblador, y incluirá el manejo de interrupciones. 2. Programación sobre lenguaje LabView El microcontrolador debe recibir un conjunto de parámetros necesarios para establecer la conexión con el bus. Estos parámetros dependen del fabricante del dispositivo conectado al bus, y quedan registrados en una base de datos. La función del programa sobre LabView, ejecutado en un ordenador personal, es leer los parámetros de la base de datos y mandar la información al microcontrolador mediante una interfaz RS 232. El programa debe permitir al usuario visualizar los parámetros principales para elegir la forma con la que quiere actuar sobre el dispositivo conectado al bus. 1.1 Introducción y planteamiento del proyecto 7 3. Redes de comunicaciones Para establecer el intercambio de información del microcontrolador con el bus y con el ordenador, es necesario manejar conceptos sobre comunicaciones. Además, las especificaciones del protocolo que se va a utilizar, CAN 2.0 de Bosch1 , que reúnen todas las condiciones que se deben cumplir para establecer la comunicación, se basan en ideas sobre comunicaciones tales como estructura de capas, detección de errores, formatos de trama, prioridad, etc. 4. Líneas de transmisión Para acceder a un dispositivo CAN industrial mediante un microcontrolador y depurar la comunicación es necesario conectar los tres nodos (dispositivo, microcontrolador y PC con tarjeta de adquisición de datos) en una línea de transmisión por la que se transmitirá la información. La comunicación no será posible si la línea no está correctamente adaptada. 1.1.5. Metodología de trabajo y herramientas Este proyecto se ha desarrollado en las instalaciones de la empresa CONTER S.A., que ha proporcionado todas las herramientas software y hardware utilizado en su creación. Inicialmente se ha hecho un estudio de redes de comunicaciones, basado en Tanenbaum [TANE03]. Posteriormente se ha centrado el estudio en aspectos propios del bus 1 Disponible en www.can.bosch.com/docu/can2spec.pdf 1.1 Introducción y planteamiento del proyecto 8 CAN, utilizando diverso material de la red, fundamentalmente de Bosch [1] y de Can in Automation [2]. El último contenido teórico necesario antes de comenzar el proyecto fue el relacionado con las características del microcontrolador y se hizo utilizando la documentación del fabricante [3]. Con los conocimientos anteriores, se programó el dispositivo para acceder a un módulo CAN de Magneti Marelli. La programación se hizo con el entorno de desarrollo y el compilador del fabricante del chip. Inicialmente, la adaptación de señal del transceiver 2551 se monitorizó con un osciloscopio, hasta que se consiguió adaptar la línea y obtener unos niveles de tensión adecuados. Una vez que se consiguió la adaptación de la señal, la depuración de la comunicación se hizo con herramientas hardware y software de National Instruments para acceso al bus CAN: Programa Measurement & Automation Explorer conectado a tarjeta PCMCIA-CAN Serie 2. Se muestra un diagrama de la depuración de la comunicación CAN en la figura 2 Una vez que se estableció el acceso del microcontrolador con el bus CAN, se inició la programación sobre LabView del módulo de configuración del micro y de lectura de la base de datos. La primera adaptación a LabView se hizo con documentación de National Instruments [4]. El funcionamiento del programa LabView se ha ensayado con la base de datos correspondiente al vehículo que monta el cuadro de instrumentos con el que se ha trabajado. En cuanto al acceso del programa al puerto serie, se ha monitorizado la 1.1 Introducción y planteamiento del proyecto 9 Figura 2: Depuración de comunicación CAN conexión con el software de un adaptador serie/USB marca KEYSPAN, que ha servido para depurar todo el protocolo de comunicación entre LabView y el microcontrolador. Se muestra el proceso de depuración de de la comunicación entre la aplicación de LabView y el microcontrolador, en la figura 3 Figura 3: Depuración de comunicación serie 1.2 Descripción de las tecnologías 1.2. 10 Descripción de las tecnologías En este apartado se va a detallar a nivel teórico cada uno de los aspectos técnicos necesarios para la realización del proyecto. 1.2.1. Bus CAN Información sobre el protocolo Este proyecto se basa en un bus de comunicaciones muy utilizado a nivel industrial creado por Bosch en la década de los 80. Se pretendía establecer una comunicación capaz de unir varias centralitas electrónicas de un automóvil, con un alto nivel de fiabilidad y de control de errores. El resultado del diseño fue un bus serie con sólo dos cables, basado en el envío de tramas cortas a alta velocidad, el bus CAN. Como características principales, cabe destacar que la máxima velocidad de transmisión que se puede alcanzar es de 1 Mbps, y que la comunicación puede continuar aunque haya averías en uno de los dos cables. Actualmente, la comunicación por bus CAN está regulada por el estándar internacional ISO 11898 [5]. Todos los nodos conectados a este bus envían a todos los demás y reciben de todos ellos, por lo que se dice que es un bus multi maestro. La comunicación es half-duplex o alterna en dos sentidos, ya que no se puede transmitir más de un mensaje a la vez. Para evitar colisiones entre tramas enviadas al mismo tiempo por varios nodos, se establece un sistema de arbitraje, por el que el identificador de cada trama lleva asociado un 1.2 Descripción de las tecnologías 11 nivel de prioridad. Cada nodo espera a que el bus esté libre de datos para comenzar a enviar, y recibe datos a la vez que está enviando. Si durante su transmisión un nodo recibe datos de mayor prioridad, deja de enviar y vuelve a esperar a que el bus esté libre. De esta manera se permite que haya información asociada a identificadores de alta prioridad con tiempos de espera mínimos. Como se ha mencionado, la información se manda confinada en tramas cortas. Protocolos sobre capas más altas permiten mandar mayor volumen de información segmentado en muchas tramas. El protocolo establece dos servicios de comunicación: el envío de información, y la solicitud de información. Aplicaciones típicas de redes CAN Cualquier conjunto de microcontroladores que necesiten compartir información es susceptible de utilizar este protocolo. Aunque se asocie típicamente a la automoción, también tiene aplicaciones en otros medios de transporte como trenes, aviones y barcos, y otros ámbitos diferentes como procesos industriales de automatización, control y equipamiento médico. Las ventajas de utilizar un bus de comunicaciones en vez de un cableado punto a punto se traducen en un ahorro de costes y de peso, especialmente importante en sistemas embarcados, y facilidad de instalación y de detección de averías. El protocolo CAN aporta además una comunicación fácil de implementar, robusta frente al ruido y con un avanzado control de errores. 1.2 Descripción de las tecnologías 12 Capa física Atendiendo al modelo OSI, los dos niveles inferiores de una comunicación por capas son la capa física y la capa de datos. El protocolo CAN establece las características de ambos niveles. El medio físico lo constituyen dos hilos paralelos, trenzados y/o blindados, según los requerimientos electromagnéticos. La línea debe tener en ambos extremos resistencias que representan su impedancia característica. Si la línea no está correctamente adaptada, no se puede alcanzar las pendientes adecuadas en los flancos de la señal, y se producen errores en la transmisión. La velocidad de transmisión del bus depende Figura 4: Línea de transmisión CAN de la longitud de la línea, el tipo de cable utilizado y la resistencia de terminación. La velocidad máxima es de 1 Mbps sobre una línea de 40 metros, y la velocidad mínima es de 50 Kbps sobre una línea de 1 km. Los niveles lógicos son: 1. Dominante: tensión diferencial nominal de 2 voltios, permitido de 1,5 a 3 voltios. 1.2 Descripción de las tecnologías 13 2. Recesivo: tensión diferencial de 0 voltios. La señal se transmite en modo diferencial para minimizar el efecto del ruido, que afecta por igual a los dos hilos. NOTA: Los parámetros anteriores son los más comunes, pero pueden variar según la especificación que se esté utilizando. El estándar establece que la transmisión es síncrona y la codificación de bits se hace mediante NRZ, por lo que el nivel de la señal permanece constante a lo largo de todo el tiempo de bit. Como el nivel puede permanecer constante durante periodos largos, se utilizan mecanismos de sincronización, como el control de bit de relleno (ver Detección de errores).Además, el tiempo nominal de bit se divide en segmentos, para asegurar que el instante de muestreo es el adecuado2 . Se muestra a continuación una captura de osciloscopio de una trama transmitida a 125 Kbps. La medida se ha hecho entre uno de los hilos y tierra. Se puede observar que la diferencia de voltajes entre los estados recesivo y dominante es de 1,5 voltios, dentro del rango permitido. Detección de errores Este protocolo cuenta con mecanismos de detección de errores a nivel de mensaje y de bit que permiten su utilización en aplicaciones en las que la fiabilidad es fundamental. 1. Mecanismos de detección de errores a nivel de bit 2 Dentro de este proyecto, una de las mayores dificultades ha consistido en la elección correcta de los segmentos del tiempo de bit. 1.2 Descripción de las tecnologías 14 Figura 5: Captura de trama CAN a) Control de colisión Durante la transmisión, el nodo que envía también monitoriza el bus en busca de posibles errores. Si algún bit enviado no se corresponde con el que se correspondía enviar, se señala un error de bit. b) Control de bit de relleno Si el mensaje requiere enviar más de cinco bits iguales, el nodo transmisor debe añadir un bit de relleno de valor complementario. El receptor elimina ese bit a la hora de procesar la información. De esta manera se generan los flancos de sincronización. 2. Mecanismos de detección de errores a nivel de mensaje a) Comprobación de redundancia cíclica (CRC) 1.2 Descripción de las tecnologías 15 Al final de cada transmisión el emisor añade una secuencia de comprobación calculada para esa trama. La secuencia es recalculada por el receptor, que lanza un error cuando no coinciden debido a un error de transmisión. b) Comprobación de trama Algunos campos de la trama tienen un formato establecido por el protocolo. Si se detecta un valor inválido en alguno de esos campos, se señala un error de formación de la trama. c) Señal de trama recibida El nodo transmisor debe recibir una señal de trama correctamente recibida (acknowledge). En caso contrario, emitirá un error de tipo ACK. Si algún nodo detecta un error en la trama que se está enviando en ese instante, manda un mensaje de error, que evita que la trama incorrecta pueda ser aceptada por otro nodo. Formato de la trama La especificación actual del proyecto es la versión 2.0 y establece dos tipos de tramas, según el tamaño de su identificador: 11 o 29 bits. La mayoría de los sistemas trabajan con la longitud estándar de 11 bits, que es compatible con equipos preparados para ambos formatos. Los campos de la trama son los siguientes: 1. Campo de inicio de trama 1.2 Descripción de las tecnologías 16 Bit dominante3 que indica el comienzo de un mensaje. 2. Campo de arbitraje En tramas de datos, este campo contiene información sobre la prioridad del mensaje, contenida en el identificador. En tramas de petición de datos, se mantienen todos los bits a nivel recesivo, indicando que la prioridad es la menor. 3. Campo de control Contiene espacio reservado para futuras ampliaciones del bus y la longitud del campo de datos. 4. Campo de datos Contiene la información del mensaje. Su tamaño máximo es de 64 bits. 5. CRC Herramienta de control de errores. 6. ACK Control de errores mediante bit recesivo. Durante ese bit, el emisor espera que los receptores coloquen un bit dominante en la línea. 7. Fin de trama Siete bits de nivel recesivo. 3 En el bus CAN, la señal por defecto es un ’1’ lógico, que corresponde al nivel recesivo de la señal (Ver Capa Física) 1.2 Descripción de las tecnologías 17 Figura 6: Formato de trama CAN 1.2.2. Microcontrolador Se entiende por microcontrolador a un circuito integrado de muy alta escala de integración, formado por tres unidades básicas: CPU que procesa la información, memoria de datos para guardar información y memoria de programa para almacenar las instrucciones. Además, la mayoría de los microcontroladores incorporan una gran cantidad de entradas y salidas para comunicarse con periféricos. Los microcontroladores representan una herramienta de hardware ideal para el desarrollo de aplicaciones con conexión CAN. Las otras opciones serían: Circuito cableado: sería muy difícil de diseñar toda la lógica, y no obtendría las mismas prestaciones. Además, un cambio en el programa exigiría volver a diseñar el circuito. Microprocesador: requieren una circuitería mucho más compleja, y la mayor potencia no se traduciría en un aumento en las prestaciones de esta aplicación. El 1.2 Descripción de las tecnologías 18 microcontrolador cumple las necesidades de memoria y velocidad de procesamiento de esta aplicación, y es más económico y más sencillo de programar. Como ventaja añadida, muchos fabricantes ofrecen circuitos con módulos de CAN integrados, que incluyen la mayoría de las especificaciones del protocolo. Estos módulos tienen el hardware necesario para cumplir la mayoría de las especificaciones del procotolo a nivel físico, e incluyen rutinas para facilitar el tratamiento de datos en forma de tramas. Recursos de microcontroladores necesarios para esta aplicación: Interrupciones: Para llevar un control exacto de la frecuencia con la que se envía la información, se programa una rutina que garantiza el tiempo exacto de ejecución mediante la cuenta de un temporizador. Puerto serie: A través de este puerto el microcontrolador recibe la información que posteriormente deberá mandar a través del bus. Memoria no volátil: El programa se almacena en una región de memoria que no se borra al desconectar la alimentación. Circuitería asociada: interruptores, pantalla. Conforman la interfaz con el usuario de la aplicación. En muchos casos es posible encontrar placas diseñadas para los microcontroladores con todas estas funciones. Elevada frecuencia máxima de oscilador: con esta frecuencia se puede ejecutar el programa y programar una transmisión por CAN de alta velocidad. 1.2 Descripción de las tecnologías 19 Recursos para la programación: los fabricantes de microcontroladores ofrecen una gran cantidad de material para programación de sus circuitos integrados, así como herramientas de desarrollo y depuración. Para la realización de este proyecto se ha utilizado un microcontrolador de la casa Microchip, modelo 18F458, con 32 Kbytes de memoria de programa y 1.5 Kbytes de memoria RAM. La máxima frecuencia de reloj es de 40 Mhz, e incluye un módulo de CAN. El microcontrolador está montado sobre una placa PICDEM 2 plus, también de Microchip. Esta placa tiene además de los circuitos necesarios para el microcontrolador, una pantalla LCD, pulsadores, un circuito de comunicación serie y superficie para componentes añadidos. 1.2.3. Comunicación RS-232 En la aplicación de este proyecto se tiene necesidad de establecer una comunicación entre las aplicaciones del microcontrolador y del ordenador. Hay una gran variedad de comunicaciones posibles, tanto cableadas como inalámbricas, pero como no hay una necesidad de gran velocidad de transmisión ni de comunicación sin cables, se ha optado por la solución más simple: comunicación RS-232. La ventaja que ofrece esta comunicación es que la placa sobre la que se ha desarrollado tiene incorporado un circuito de comunicación serie basado en el chip MAX232A. El protocolo RS-232 establece una comunicación serie, igual que en el protocolo 1.2 Descripción de las tecnologías 20 CAN, pero a diferencia de éste, la comunicación puede ser half dúplex o full dúplex: puede enviar uno o los dos transmisores cada vez. A nivel físico, la señal también tiene dos valores establecidos, según el valor lógico con el que se corresponda. La trama es similar a la trama de CAN, ya que el primer bit que se manda es un valor dominante. Después se manda un número de bits de datos de entre 5 y 8 y finalmente uno o dos bits de stop. Figura 7: Formato de trama RS-232 Se puede apreciar que este protocolo es mucho más simple que CAN, sobre todo en cuanto a control de errores. Este protocolo ofrece opcionalmente un control de paridad, que manda un bit de control en función de la suma de los bits enviados. Además, se puede implementar un control de flujo por hardware, si se dispone de los hilos correspondientes en la conexión. La función de este control de flujo es informar de si la línea está libre para transmitir. Para la aplicación de este proyecto se ha utilizado una comunicación a 19.200 baudios, con 8 bits de datos, un bit de stop y sin control de flujo ni de paridad. 1.2 Descripción de las tecnologías 1.2.4. 21 Lenguaje de programación LabView Este proyecto tiene como objetivo el control de dispositivos conectados a una red CAN. Una vez que se ha resuelto el acceso al bus, hay que conocer la información que se desea enviar a los dispositivos, pues debe obedecer a una serie de reglas: ID del dispositivo, mensaje y canal sobre el que se desea actuar, etc. Además, hay que configurar correctamente el hardware para que pueda acceder a la red CAN. Muchos fabricantes de dispositivos CAN distribuyen toda la información anterior en bases de datos con un formato especial, que no se puede analizar con programas estándar de tratamiento de bases de datos. El microcontrolador recibirá toda la información4 a través del puerto serie, por lo que cualquier aplicación en el pc capaz de acceder a este puerto puede ser utilizada para este cometido. En este proyecto se ha decidido utilizar LabView como aplicación de pc porque cumple las especificaciones anteriores y añade algunas ventajas importantes. Las principales claves para haber utilizado este lenguaje de programación son las siguientes: Interfaz gráfica de usuario. LabView está originalmente diseñado para la creación de instrumentos virtuales, que son programas de acceso a dispositivos electrónicos conectados a un ordenador. Por esta razón, dispone de muchos recursos (librerías) para configurar una conexión con elementos externos. 4 La volátil aplicación también permite utilización autónoma, con tramas fijas programadas en memoria no 1.2 Descripción de las tecnologías 22 Acceso a puertos. Este software permite acceder al puerto serie del ordenador de forma estándar para cualquier sistema operativo. Como añadido, permite acceder a otro hardware que tenga acceso al bus CAN5 . Portabilidad a diversos sistemas operativos. Una aplicación creada con LabView sólo necesita una máquina virtual para poder ejecutarse. El fabricante ha diseñado esta máquina virtual para Windows, UNIX/Linux y Macintosh y la distribuye de forma gratuita, aunque no libre. Por lo tanto, cualquier ordenador con alguno de los sistemas operativos anteriores podrá ejecutar una aplicación creada con LabView. Acceso a bases de datos. Este lenguaje de programación dispone de librerías de acceso a bases de datos de información CAN de forma automática (aunque requiere un hardware especial para realizar esta función) o mediante la utilización de librerías estándar de acceso a bases de datos con una programación bastante compleja. Aceptación en la industria. LabView es un estándar utilizado en empresas de todo el mundo para desarrollo de aplicaciones en el ámbito de la ingeniería. Un desarrollo en este lenguaje de programación permite la adaptación a las necesidades de muchas empresas y supone un importante aprendizaje sobre una herramienta muy extendida en la actualidad. Por todas las razones anteriores se ha decidido utilizar LabView como lenguaje de 5 En el desarrollo y depuración de la comunicación por bus CAN también se ha utilizado LabView 1.2 Descripción de las tecnologías 23 programación de la aplicación de configuración de parámetros y de información del microcontrolador. En la figura 8 se muestran algunas de las ventajas apuntadas anteriormente en la interfaz de la aplicación. 1.3 Descripción de la aplicación desarrollada 1.3. Descripción de la aplicación desarrollada 1.3.1. Programa en C 24 Este proyecto se centra en el diseño de una aplicación para un microcontrolador. Esta aplicación queda almacenada en la memoria FLASH del microcontrolador y se ejecuta cada vez que se desea acceder a los dispositivos del bus CAN. El acceso puede ser de dos tipos: 1. Automático: Si el microcontrolador no recibe datos de un ordenador a través del puerto serie, envía información almacenada en el programa. Esta configuración exige conocer de antemano la configuración del bus y la información que se desea mandar a los distintos dispositivos. 2. Programado: Una vez que el microcontrolador ha recibido todos los datos del ordenador, envía la información de acuerdo con los parámetros de configuración del bus. Esto permite que el dispositivo se pueda comunicar con diferentes tipos de buses y de dispositivos sin necesidad de reprogramar el microcontrolador. El funcionamiento del programa se puede resumir en tres grandes bloques: inicialización, espera de operación y envío. En cada una de las fases se muestra el estado del programa en la pantalla de la placa. 1. Inicialización En esta fase, se definen los bits de configuración del microcontrolador: entradas y salidas digitales, configuración de la comunicación serie, configuración del 1.3 Descripción de la aplicación desarrollada 25 timer e inicialización de la pantalla. Todos estos valores están adaptados para la frecuencia del reloj al que está conectado el micro 6 . La configuración se hace sin intervención del usuario. 2. Espera de operación Una vez que el microcontrolador está preparado para enviar la información almacenada para acceso automático al bus CAN, o para recibir información desde un ordenador. El acceso automático lo iniciará el usuario mediante un pulsador, mientras que la recepción de información se realizará en cuanto se reciban los datos, sin intervención del usuario. 3. Envío Finalmente, el dispositivo se comunica con otros dispositivos del bus CAN. A la vez que se produce el envío, el programa comprueba que no haya mandado desde un ordenador información sobre una nueva conexión. Para asegurar que el envío de tramas se realiza con la frecuencia exacta, se programa una interrupción que se activa cada milisegundo. El envío se realizará cuando el número de milisegundos sea un múltiplo de una variable definida como periodo de envío. La rutina de inicialización del bus CAN está preparada para permitir el acceso a buses de velocidades desde 500 hasta 20 Kbps, todo el rango permitido por la frecuencia del oscilador utilizado (32 MHz). 6 Algunos de los ajustes se hacen sobre librerías escritas es ensamblador 1.3 Descripción de la aplicación desarrollada 26 Toda la información sobre los datos transmitidos por el bus CAN y la configuración del mismo queda almacenada en una estructura. Se han utilizado librerías de C y ensamblador para facilitar la tarea de las siguientes funcionalidades: 1. Nombre de los registros del micro 2. Timers 3. Configuración de la via serie y la pantalla 4. Configuración del bus CAN Uno de los principales problemas para escribir el código de esta aplicación ha sido que en la fase de diseño no se estaban establecidas exactamente las especificaciones de la aplicación, en especial en lo referente a la utilización del bus CAN. Por ello se ha tenido que revisar constantemente, según se añandían nuevas funcionalidades y/o se adquirían los conocimientos acerca de la configuración y envío del bus. A lo largo de todo el proceso de programación se ha utilizado el entorno de desarrollo y el compilador proporcionados por el fabricante del micro, disponibles en versión de evaluación. También se ha utilizado una herramienta de depuración que ha permitido ejecutar el programa en el micro visualizando el estado del programa, las variables y los registros. Sin esta herramienta el proceso de depuración de la comunicación habría sido imposible, ya que un simulador de ordenador no puede emular los datos recibidos por la via serie. 1.3 Descripción de la aplicación desarrollada 1.3.2. 27 Programa en LabView Desde un ordenador se tiene que enviar la información que se desea colocar en el bus, así como los parámetros de configuración. El programa diseñado con LabView añade además la posibilidad de leer desde una base de datos la configuración del bus y los rangos de parámetros que se pueden utilizar en función de cada mensaje y cada canal. El código de LabView creado se divide en tres partes, que se ejecutan secuencialmente: 1. Configuración: se define el puerto serie que se desea utilizar, así como la base de datos en formato *.dbc que almacena la información sobre la red CAN a la que deseamos acceder. Se puede elegir el canal que se desea modificar directamente entre todos los de la base de datos o haciendo un filtro por el mensaje que contiene el canal deseado. 2. Selección de parámetros para enviar: una vez que se ha seleccionado el canal, el programa lee de la base de datos información sobre el mismo para que el usuario pueda elegir la información que desea transmitir al bus. Esta información se puede escribir en forma de números enteros (aconsejado para tramas largas) o bit a bit (aconsejado para tramas pequeñas de menos de un byte). La información máxima que se puede mandar en cada trama la fija el protocolo y es de 64 bits. Para facilitar la introducción de los datos a enviar por el bus CAN, se dispone de un control que permite introducirlos mediante un valor decimal. Por ejemplo, el 1.3 Descripción de la aplicación desarrollada 28 valor que se desea leer en un cuentarrevoluciones para un combinado concreto puede ser un valor entre 0 y 5000. Si no se desea hacer la conversión de este número a binario en la situación que corresponde al canal en el mensaje correspondiente, se puede introducir simplemente el valor y el propio programa hace la conversión y la colocación de los datos. 3. Envío: la información recogida se envía de acuerdo con el protocolo. El envío se hace una sola vez. El diagrama resultante del algoritmo anterior es bastante complejo, y se divide en un programa principal y una librería de envío, para evitar que el código pueda dar errores por tener una extensión demasiado grande. Sería óptimo dividir el programa principal en más de un archivo, pero se recomienda que todos los controles e indicadores (elementos que se muestran en el instrumento virtual) estén situados en el mismo archivo, por lo que la división no es posible. Las tareas de acceso a la base de datos y de envío están unidas por una señal de error que se muestra al final de la ejecución. Esta señal da información sobre el elemento que ha causado el error, y algunos detalles del mismo. En la práctica, la codificación de los errores es un poco arbitraria, y apenas sirve para identificar cual ha sido el elemento que ha causado el error. 1.3 Descripción de la aplicación desarrollada Figura 8: Instrumento virtual de acceso a nodo CAN 29 1.3 Descripción de la aplicación desarrollada 1.3.3. 30 Protocolo ordenador-microcontrolador El diseño del protocolo de comunicación ha sido uno de los pasos más complejos de todo el proyecto, ya que implica conocer a fondo las características de los datos que viajan por el bus CAN para poder enviar datos que cumplan con las especificaciones. Durante la especificación del protocolo, se ha tenido que comprobar que los datos eran correctamente procesados y enviados en el ordenador, y correctamente recibidos y procesados en el microcontrolador, por lo que el proceso de depuración ha presentado algunas dificultades7 . Se va a enviar información sobre la trama que se desea formar, como la velocidad y datos sobre la configuración de los bits que forman la trama; información sobre el identificador de la trama y finalmente los datos que se desean transmitir. La división de información en tres grupos permite facilitar la depuración introduciendo caracteres de control. Cada caracter se corresponde con uno de los tres grupos anteriores y los datos recibidos después de él se deben interpretar según la clasificación anterior. En caso de recibir información incorrecta, el microcontrolador lo señalará mediante otro caracter de control. Una vez que el microcontrolador ha recibido información acerca de la configuración del bus y de la trama, y los datos que se van a enviar, forma una trama CAN para enviar por el bus. En la configuración de los datos de la trama se ha decidido que todo el tratamiento se haga en el ordenador, para dar más peso a la programación sobre Lab7 La depuración de la comunicación ordenador - microcontrolador se ha hecho con un software de monitorización del puerto serie. 1.3 Descripción de la aplicación desarrollada 31 View. Las operaciones que hay que hacer son colocar los bytes de datos según el orden especificado en la base de datos (Intel o Motorola) y desplazarlos según la posición del canal en el mensaje. 1.3.4. Conexión hardware El microcontrolador utilizado, Microchip 18F458, dispone de un módulo CAN que realiza toda la gestión de envío de tramas, y de control de errores propios de un nodo. Sin embargo, no dispone de salidas adaptadas para conexión directa a un bus CAN, sino de salidas TTL con valores entre 0 y 5 voltios. Por lo tanto se requiere un hardware adicional que haga la conversión de la señal entre los niveles lógicos proporcionados por el microcontrolador y los niveles de tensión especificados por el protocolo (ver Sección 1.2.1). Para realizar la adaptación de señal se ha utilizado un circuito basado en el circuito integrado MCP 2551 de Microchip. Este circuito requiere de poco cableado externo y permite conexiones de hasta 1 Mbps de acuerdo con todas las especificaciones del protocolo CAN. Una característica de este circuito es su bajo consumo, que mejora la autonomía del sistema en caso de funcionamiento con batería. La información relevante de este dispositivo se encuentra en [6]. En el prototipo creado para este proyecto, se ha montado el circuito mostrado en la figura 9 en el espacio libre de la placa de demostración, y se ha demostrado su correcto funcionamiento conectado con una tarjeta de adquisición de datos para bus CAN y con 1.3 Descripción de la aplicación desarrollada 32 un combinado de la companía Magneti Marelli. Para conseguir la comunicación con el dispositivo CAN se ha utilizado una resistencia de 4.7 K Ω para el control de la pendiente de los flancos. Sin esta resistencia el Slew Rate es excesivo. Figura 9: Diagrama de conexión del integrado MCP 2551 1.4 Conclusiones 1.4. 33 Conclusiones En este capítulo se pretende dar una idea sobre las ideas resultantes de la realización del proyecto, en los diferentes ámbitos en que se ha trabajado. 1.4.1. Capacidad del bus CAN El protocolo CAN es un estándar industrial desde hace muchos años, y todo indica que lo seguirá siendo durante bastantes años más. Esto es especialmente significativo en el mundo de la electrónica, ya que la velocidad con la que y los equipos cambian y las necesidades se incrementan es muy elevada. Las claves de la supervivencia de este protocolo son su simplicidad, robustez y adaptabilidad. El siguiente escalón en tecnologías de comunicación entre equipos electrónicos parece que va venir dado por la transmisión de datos a través de los cables de alimentación: tecnología PLC (Power Line Communication). Mediante esta tecnología se reduce el cableado y por lo tanto la complejidad y la posibilidad de averías, que son aspectos clave en sistemas embarcados. Probablemente se implemente un estándar para utilización del protocolo CAN sobre PLC, modificando la capa física pero manteniendo las características de la capa superior. Otras opciones de futuro para CAN pasan por la fibra óptica, para la difusión de contenidos multimedia. Estas opciones dan una idea de la adaptabilidad del protocolo, y de la conveniencia de desarrollar sobre un estandar conocido por todos los grandes fabricantes. En cuanto a la simplicidad, parece claro que el grueso del desarrollo de un producto 1.4 Conclusiones 34 no puede estar en su acceso por otros componentes, sino por su propia funcionalidad. Por ello, un protocolo del que se disponga de mucha información y hardware para establecer la comunicación, y que facilite los nuevos desarrollos con ventajas importantes en cuanto a fiabilidad parece ser una opción más recomendable que sistemas que puedan aportar otras ventajas pero que exijan un mayor esfuerzo de implementación. La robustez de la comunicación basada en CAN permite su utilización en sectores en los que la fiabilidad es un factor crítico, como los equipos médicos, aeronáuticos y por supuesto en automoción. Esta capacidad de evitar o minimizar los errores de comunicación viene dada por los sistemas de control de errores comentados en la sección 1.2.1. Finalmente, las lagunas de este protocolo son las relacionadas con su velocidad de transmisión. El límite de 1 Mbps permite controlar aplicaciones simples prácticamente en tiempo real, mientras la red no esté muy cargada ni haya muchos errores; sin embargo, no es suficiente para la transmisión de grandes volúmenes de datos, como por ejemplo vídeo o audio, cada vez más presentes en automoción y aeronáutica. 1.4.2. Desarrollo de aplicaciones con LabView En la titulación de Ingeniero en Electrónica y Automática se da mucha importancia a la programación en lenguaje C, pero otros lenguajes de programación apenas se mencionan. Los casos más importantes son Java y los lenguajes de programación gráfica en general, por que son muy utilizados en la actualidad. Por esta razón, el desarrollo 1.4 Conclusiones 35 de una aplicación en un lenguaje de este tipo exige un estudio previo importante. Superada la adaptación inicial al desarrollo mediante bloques y las conexiones entre ellos, se puede decir que LabView es un lenguaje de programación muy potente, pero que exige conocimientos elevados para el desarrollo de aplicaciones complejas. Una de las características fundamentales de este lenguaje de programación es que está desarrollado íntegramente por una sola compañía. La principal ventaja de esto es que mientras la compañía mantenga una presencia importante en el mercado, está asegurada la actualización del programa en forma de soporte de nuevos dispositivos, nuevas funcionalidades y documentación. El inconveniente es que su utilización tiene un precio bastante elevado, y en muchas ocasiones es difícil entender el funcionamiento de algunos bloques del sistema, ya que no se conoce su código fuente. Para la programación de aplicaciones sencillas, es recomendable la utilización de este sistema ya que aporta una gran cantidad de ejemplos que pueden ser modificados para adaptarlos a la nueva aplicación, así como suficiente documentación para tareas simples. Otro aspecto muy positivo es la facilidad de diseñar un entorno gráfico para la aplicación. Sin embargo, para la utilización de hardware poco soportado, o para la creación de proyectos importantes, su uso queda limitado a desarrolladores con mucha experiencia. Además, algunos bloques exigen la utilización de hardware de la compañía, como es el caso de las librerías de acceso a las bases de datos de CAN. Para otras librerías, no es posible ejecutar programas creados en Windows en diferentes sistemas operativos. Otro aspecto destacable es que las herramientas disponibles para crear los dia- 1.4 Conclusiones 36 gramas tiene un manejo bastante intuitivo e incluye herramientas de depuración. Sin embargo, no es posible acceder a niveles inferiores de programación para verificar el funcionamiento de la aplicación como permiten hacer C y otros lenguajes de más bajo nivel. 1.4.3. Programación de microcontroladores Los microcontroladores son herramientas muy potentes para el control de dispositivos en el ámbito industrial, como se detalla en la Sección 1.2.2. La rápida evolución de estos sistemas en aspectos como las comunicaciones con dispositivos, el aumento de memoria tanto de programa como RAM y la mayor velocidad de cálculo hacen de ellos una opción apta para cada vez más situaciones. El proceso de creación de código ejecutable por un microcontrolador comienza por elegir el lenguaje en el que se desea programar. El lenguaje más utilizado para aplicaciones que no sean demasiado específicas es C, y supone un estado intermedio entre los lenguajes de alto nivel y el ensamblador. La utilización de lenguajes de alto nivel supone la utilización de librerías que tienen que estar perfectamente portadas a la arquitectura con la que se esté trabajando, y cierto descontrol sobre lo que se ejecuta. Por el contrario, programar en ensamblador aporta control absoluto sobre cada proceso, a cambio de menor capacidad de órdenes complejas. Por estas razones, la combinación más utilizada es programación en C utilizando rutinas en ensamblador para las tareas más delicadas, y es el modo utilizado en el desarrollo de este proyecto. 1.4 Conclusiones 37 En la actualidad el nivel de los compiladores para estos dispositivos ha progresado notablemente, y los fabricantes suelen facilitar herramientas completas para los desarrolladores, como entornos de programación y depuración por medio de simuladores o herramientas de ejecución paso a paso. Los principales problemas para desarrollar programas para microcontroladores son los derivados de su interacción con otros dispositivos, porque son procesos difíciles de simular. Por ejemplo, las comunicaciones son procesos difíciles de desarrollar. Sin embargo, hay una gran cantidad de herramientas que permiten monitorizar las conexiones para ayudar en la depuración. Otros procesos difíciles de programar, pero que aumentan las posibilidades del programa son las interrupciones. Ambos procesos se pueden controlar mediante los registros del micro, que representan el estado de la ejecución en cada momento. Bibliografía [TANE03] A. Tanenbaum. Computer Networks. Prentice Hall International Edition, cuarta edición, 2.003, ISBN 0-13-038488-7 [1] http://www.can.bosch.com [2] http://www.can-cia.org/can/ [3] Microchip Technology Inc. PIC18FXX8 Data Sheet. Disponible en la página web del fabricante. [4] National Instruments Corporation LabView Basics Course Manual, sexta edición. Part Number 320628G-01 [5] http://www.iso.org/ [6] Microchip Technology Inc. MCP 2551 Data sheet. Disponible en la página web del fabricante. Parte II ESTUDIO ECONÓMICO 1.1 Estudio económico 1.1. 40 Estudio económico El bus CAN está presente en una gran cantidad de aplicaciones a nivel industrial y en muchos ámbitos diferentes. Para estas aplicaciones se requieren procesos de fabricación y de mantenimiento, llevados a cabo en proyectos de todo tipo y presupuesto. De lo anterior se puede deducir que existe un mercado potencial para una aplicación que permita el acceso a dispositivos conectados a este bus. La aplicación desarrollada para este proyecto centra su objetivo en conseguir una conexión a bus CAN con bajo coste, aunque con unas opciones de programación y de acceso de datos que la distingan de otras opciones. Para aplicaciones que tengan un presupuesto elevado, las herramientas comerciales ofrecidas por los grandes fabricantes ofrecen mayores prestaciones, a cambio de un presupuesto mucho mayor, aunque no ofrecen dispositivos programables autónomos sino conectados a un ordenador. El coste de fabricación de una unidad completa sería el de realización de un circuito impreso que albergase el micro, la pantalla, los pulsadores y el módulo de conversión de señal, más el coste de cada uno de los elementos por separado. A este coste hay que sumarle el del cable de conexión serie y CAN, así como el de alimentación. La alimentación se puede hacer mediante una fuente de tensión o mediante una batería, según el uso que se le vaya a dar al dispositivo. Este coste dependería fuertemente de la cantidad de unidades que se quiera fabricar, puesto que el precio de cada uno de los componentes y especialmente el del circuito impreso descienden considerablemente al aumentar el número de unidades. Todos los 1.1 Estudio económico 41 datos acerca de los precios de cada componente y del conjunto final están recogidos en el DOCUMENTO No 4, PRESUPUESTO. Como conclusión se puede decir que hay un mercado grande para un producto como el propuesto en este proyecto, y que el precio de producción es suficientemente ajustado como para justificar los beneficios de su posible comercialización. Parte III CALCULOS 1.1 Cálculos 1.1. Cálculos En este proyecto no se han requerido cálculos. 43 Parte IV MANUALES 1.1 Manual de usuario 1.1. 45 Manual de usuario En esta sección se van a explicar brevemente los pasos necesarios para operar con la aplicación desarrollada. Se ha considerado la utilización en dos escenarios diferentes, según si hay o no conexión a un ordenador. 1.1.1. Modo autónomo Si se desea utilizar el equipo en lugares donde podría ser peligroso disponer de un ordenador, como una línea de montaje, o de reparación, el dispositivo se puede programar para actuar de forma autónoma. La interacción con el usuario se realizará a través de dos pulsadores y de la pantalla. Para poder trabajar en modo autónomo es necesario que el microcontrolador tenga programada la información que tiene que enviar por el bus. Esto se hace modificando la rutina void Autonomo() del programa principal, introduciendo la velocidad del bus y los identificadores y los datos de cada una de las tramas que se quiera enviar. Una vez que se ha programado el microcontrolador, se podrá ejecutar la aplicación tantas veces como sea necesario. Si el microcontrolador dispone de información en memoria de las tramas que se quiere enviar, sólo hay que conectar los cables de alimentación y conexión al bus CAN y pulsar un interruptor. En la placa que se ha montado para este proyecto, el pulsador es el marcado con RA4. A partir de ese momento, el dispositivo enviará la información que tenga en la memoria y actuará sobre los dispositivos del bus hasta que se pulse 1.1 Manual de usuario 46 el botón de RESET. En cada uno de los dos estados anteriores, la pantalla mostrará información sobre el proceso. 1.1.2. Modo programado En caso de que el microcontrolador no tenga programada en memoria la información que se desea mandar al bus, es necesario utilizar un ordenador para que recopile la información y se la mande al micro. Esta situación se puede dar cuando se trabaje con equipos distintos y sea necesario actualizar la información de las tramas constantemente. Para recopilar la información en el ordenador y mandarla al micro, se utilizará la aplicación creada con LabView. Los pasos para comunicarse con un dispositivo del bus en modo programado son los siguientes: 1. Conectar el cable serie ordenador - dispositivo, la alimentación del dispositivo y el cable de conexión del dispositivo al bus CAN. 2. Ejecutar la configuración de la aplicación de LabView a) Indicar el puerto serie al que está conectado el dispositivo b) Indicar la ruta de la base de datos que contiene la información del bus con el que se quiere conectar. 3. Elegir el del canal sobre el que se quiere actuar. Una ventana desplegable lista 1.1 Manual de usuario 47 todos los canales de la base de datos, pero se puede hacer un filtro por el nombre del mensaje que contiene al canal deseado. El proceso se muestra en la figura 10. Figura 10: Paso 3 aplicación LabView en modo programado 4. Pulsar el botón "Ver Datos"para configurar la información que se desea mandar al dispositivo CAN. 5. Con los datos facilitados por el programa, introducir la información de la trama. 1.1 Manual de usuario 48 Hay dos modos de proporcionar la información (Ver 2): bit a bit, mostrado en la figura 11 o resumida en un número entero, mostrado en la figura 12.Se puede cambiar este modo pulsando el botón "Mostrar bits". NOTA: para evitar errores en funcionamiento en modo número entero, el programa sólo permite elegir valores dentro de los rangos especificados en la base de datos. Figura 11: Introducción de datos bit a bit 6. Cuando se haya elegido correctamente la información, se pulsa el botón "‘Enviar". 7. El microcontrolador recibe la información a través del puerto serie y la comunicación comienza de forma automática. 8. El dispositivo continuará actuando sobre los dispositivos del bus hasta que reciba 1.1 Manual de usuario Figura 12: Introduccción de datos como número entero información sobre nuevas tramas por la vía serie. 9. Para detener el envío de información por el bus, se pulsa el botón de RESET. 49 Documento No II, Planos Índice general 2.1. Planos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.1 Planos 2.1. Planos En este proyecto no se han utilizado planos. 2 Documento No III, Pliego de condiciones generales y económicas Índice general 3.1. Pliego de condiciones generales y económicas . . . . . . . . . . . . . 2 3.1.1. Condiciones generales . . . . . . . . . . . . . . . . . . . . . 2 3.1.2. Condiciones económicas . . . . . . . . . . . . . . . . . . . . 3 3.2. Pliego de condiciones técnicas y particulares . . . . . . . . . . . . . . 4 3.2.1. Equipo informático . . . . . . . . . . . . . . . . . . . . . . . 4 3.2.2. Normas de calidad . . . . . . . . . . . . . . . . . . . . . . . 4 3.2.3. Normas de Seguridad e Higiene . . . . . . . . . . . . . . . . 4 3.2.4. Vida útil del producto . . . . . . . . . . . . . . . . . . . . . . 4 3.2.5. Otros criterios de diseño . . . . . . . . . . . . . . . . . . . . 4 3.1 Pliego de condiciones generales y económicas 3.1. Pliego de condiciones generales y económicas 3.1.1. Condiciones generales 2 Las condiciones y cláusulas que se establecen en este documento son de obligado cumplimiento por las partes contratantes. I Tanto el administrador como el cliente se comprometen desde la fecha de la firma del contrato a llevar a cabo lo que se estipule. II Ante cualquier reclamación o discrepancia en lo concerniente al cumplimiento de lo pactado por cualquiera de las partes, una vez agotada toda vía de entendimiento, se tramitará el asunto por la vía de lo legal. El dictamen o sentencia que se dicte será de obligado cumplimiento para las dos partes. III Al firmarse el contrato, el suministrador se compromete a facilitar toda la información necesaria para la instalación y buen funcionamiento del sistema, siempre que sea requerido para ello. IV Asimismo, el cliente entregará al suministrador todas las características distintivas del equipo comprado y aquellas otras que considere oportunas para el necesario conocimiento de la misma a efectos del diseño del presente equipo. V El plazo de entrega será de tres meses, a partir de la fecha de la firma del contrato, pudiendo ampliarse en un mes. Cualquier modificación de los plazos deberá contar con el acuerdo de las dos partes. VI En caso de retrasos imputables al suministrador, se considerará una indemnización del 1 % del valor estipulado por semana de retraso. VII Existirá un plazo de garantía de un año a partir de la entrega del sistema. Dicha garantía quedará sin efecto si se demostrase que el sistema ha estado sometido a manipulación o uso indebido. 3.1 Pliego de condiciones generales y económicas 3 VIII Cumplido dicho plazo de garantía, el suministrador queda obligado a la reparación del sistema durante un plazo de cinco años, fuera del cual quedará a su propio criterio atender la petición del cliente. IX En ningún momento tendrá el suministrador obligación alguna frente a desperfectos o averías por uso indebido por personas no autorizadas por el suministrador. 3.1.2. Condiciones económicas I Los precios indicados en este proyecto son firmes y sin revisión por ningún concepto, siempre y cuando se acepten dentro del periodo de validez del presupuesto que se fija hasta Diciembre de 2005. II El pago se realizará como sigue: 75 % a la firma del contrato. 25 % en el momento de entrega. III La forma de pago será al contado mediante cheque nominativo o mediante transferencia bancaria. En ningún caso se aceptarán letras de cambio. IV El suministrador se hará cargo de los gastos de embalaje y del transporte, dentro de la ciudad donde se encuentre la instalación. En caso de ser necesario transporte interurbano, el gasto correrá por cuenta del cliente. En todo caso, el responsable de los posibles desperfectos ocasionados por el transporte será el suministrador. V Durante el plazo de garantía, la totalidad de los gastos originados por las reparaciones correrán por cuenta del suministrador. VI Fuera de dicho plazo y durante los siguientes cinco años, los costes serán fijados mediante acuerdo por ambas partes. Pasados 5 años, éstos los fijará exclusivamente el suministrador. 3.2 Pliego de condiciones técnicas y particulares 3.2. Pliego de condiciones técnicas y particulares 3.2.1. Equipo informático 4 El equipo informático debe estar homologado conforme a la normativa Europea y Española a fecha de Junio de 2001. El equipo informático debe instalarse conforme a las indicaciones del fabricante, manteniendo las condiciones de humedad y temperatura entre los límites marcados. Los programas informáticos empleados han de contar con la licencia preceptiva y cumplir con las condiciones de la misma. En caso de usar programas de licencia GPL, se deberán respetar las condiciones de la misma. 3.2.2. Normas de calidad Los sistemas se diseñarán de forma que cumplan las normas UNE, CEI y EN aplicables a este tipo de productos, así como las normas ETSI (European Telecommunications Standards Institute) para sistemas de radiofrecuencia. 3.2.3. Normas de Seguridad e Higiene El proyecto cumplirá con la Ley 31/95 de Prevención de Riesgos Laborales. 3.2.4. Vida útil del producto Los sistemas se diseñarán para una vida útil no inferior a 10 años en funcionamiento continuo. 3.2.5. Otros criterios de diseño Se emplearán componentes normalizados para los circuitos electrónicos. Documento No IV, Presupuesto Índice general 4.1. Mediciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 4.2. Precios unitarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4.3. Sumas parciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4.3.1. Supuesto 1: 1 unidad . . . . . . . . . . . . . . . . . . . . . . 4 4.3.2. Supuesto 2: 50 unidades . . . . . . . . . . . . . . . . . . . . 5 4.3.3. Supuesto 3: 100 unidades . . . . . . . . . . . . . . . . . . . 6 4.4. Presupuesto general . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 4.1 Mediciones 4.1. 2 Mediciones Partidas Cantidad Desarrollo Mano de obra 150 horas Costes indirectos Asociados a un trabajador Materiales Microcontrolador Microchip 18F458 1 unidad Transductor Microchip MCP2551 1 unidad Transductor Maxim MAX232 1 unidad Circuito alimentación NI LM7805 1 unidad Conectores DB9: 2 unidades Alimentación: 1 unidad Componentes / Montaje 1 conjunto completo Cuadro 4.1: Mediciones 4.2 Precios unitarios 4.2. 3 Precios unitarios Los precios unitarios se dividen en dos partidas: los relacionados con el desarrollo del proyecto y los que están relacionados con el proceso de producción de cada unidad, siendo estos últimos dependientes de la cantidad a fabricar. Partida Coste Mano de obra 40 e/hora Costes indirectos 5 e/hora Cuadro 4.2: Coste de desarrollo Partida Coste 1 unidad 50 unidades 100 unidades Microcontrolador Microchip 18F458 7.45 e 5.32 e 5.04 e Transductor Microchip MCP2551 1.06 e 0.76 e 0.73 e Transductor Maxim MAX232 5.95 e 4.30 e 3.37 e Circuito alimentación NI LM7805 0.55 e 0.49 e 0.45 e Conectores 6e 4e 3.50 e Componentes / Montaje 10 e 6e 5e Cuadro 4.3: Coste de producción 4.3 Sumas parciales 4 4.3. Sumas parciales 4.3.1. Supuesto 1: 1 unidad Parte Cantidad Precio unitario Imp. parcial Mano de obra 150 horas 40 e/hora 6.000 e Costes indirectos 150 horas 5 e/hora 750 e Microcontrolador 1 unidad 7.45 e 7.45 e Transductor 1 unidad 1.06 e 1.06 e Transductor MAX232 1 unidad 5.95 e 5.95 e Circuito de alimentación 1 unidad 0.55 e 0.55 e Conectores 1 unidad 6e 6e Componentes / Montaje 1 conjunto 10 e 10e Desarrollo Producción Cuadro 4.4: Sumas parciales 1 unidad 4.3 Sumas parciales 4.3.2. 5 Supuesto 2: 50 unidades Parte Cantidad Precio unitario Precio parcial Desarrollo Mano de obra 150 horas 40 e/hora 6.000 e Costes indirectos 150 horas 5 e/hora 750 e Microcontrolador 50 unidades 5.32 e 266 e Transductor 50 unidades 0.76 e 38 e Transductor MAX232 50 unidades 4.30 e 215 e Circuito de alimentación 50 unidades 0.55 e 22.50 e Conectores 1 unidad 6e 6e Componentes / Montaje 50 conjuntos 6e 300 e Producción Cuadro 4.5: Sumas parciales 50 unidades 4.4 Presupuesto general 4.3.3. 6 Supuesto 3: 100 unidades Parte Cantidad Precio unitario Importe parcial Desarrollo Mano de obra 150 horas 40 e/hora 6.000 e Costes indirectos 150 horas 5 e/hora 750 e Microcontrolador 100 unidades 5.04 e 504 e Transductor 100 unidades 0.73 e 73 e Transductor MAX232 100 unidades 3.37 e 337 e Circuito alimentación 100 unidades 0.45 e 45 e Conectores 100 unidades 3.50 e 350 e Componentes / Montaje 100 conjuntos 5e 500e Producción Cuadro 4.6: Sumas parciales 100 unidades 4.4. Presupuesto general Partida Presupuesto Precio final Precio unitario Desarrollo 6.750 e Producción 1 unidad: 31.01 e 6781.01 e 6781.01 e 50 unidades: 847.5 e 7597.5 e 151.95 e 100 unidades: 1809 e 8559 e 85.59 e Cuadro 4.7: Presupuesto general