Comunicación serie con PICs usando LabVIEW
69
0
0
Texto completo
(2) Universidad Central “Marta Abreu” de Las Villas Facultad de Ingeniería Eléctrica Departamento de Telecomunicaciones y Electrónica. TRABAJO DE DIPLOMA Comunicación serie con PICs usando LabVIEW. Autor: Yunier Valdés Pérez E-mail: [email protected]. Tutor: Msc. Carlos Alberto Bazán Prieto. Profesor, Dpto de Telecomunicaciones y Electrónica Facultad de Ingeniería Eléctrica. UCLV E-mail: [email protected]. Santa Clara 2008 "Año 50 de la Revolución".
(3)
(4) Hago constar que el presente trabajo de diploma fue realizado en la Universidad Central “Marta Abreu” de Las Villas como parte de la culminación de estudios de la especialidad de Ingeniería en Telecomunicaciones y Electrónica, autorizando a que el mismo sea utilizado por la Institución, para los fines que estime conveniente, tanto de forma parcial como total y que además no podrá ser presentado en eventos, ni publicados sin autorización de la Universidad.. Firma del Autor Los abajo firmantes certificamos que el presente trabajo ha sido realizado según acuerdo de la dirección de nuestro centro y el mismo cumple con los requisitos que debe tener un trabajo de esta envergadura referido a la temática señalada.. Firma del Autor. Firma del Jefe de Departamento donde se defiende el trabajo. Firma del Responsable de Información Científico-Técnica.
(5) i. PENSAMIENTO. “El éxito de los hombres no se mide por su éxito inmediato, sino por su éxito definitivo: no se mide por el dinero que acumularon, sino por el resultado de sus obras.”. José Martí.
(6) ii. DEDICATORIA. A toda mi familia, por confiar siempre en mí y ser fuente de inspiración de mis esfuerzos. A mis amigos, que han compartido mis caídas y éxitos. A mis profesores, por contribuir a mi educación y formación como profesional..
(7) iii. TAREA TÉCNICA.. 1. Revisión bibliográfica del tema. 2. Estudio del puerto serie de la PC y el módulo USART de los PICs. 3. Estudio de la herramienta de programación de alto nivel LabVIEW y análisis de sus facilidades para comunicación serie con dispositivos. 4. Programación del núcleo de la comunicación serie con LabVIEW. 5. Elaboración de aplicaciones para el control de dispositivos hechos con PICs a través del puerto serie. 6. Confección y presentación del informe.. Firma del Autor. Firma del Tutor.
(8) iv. RESUMEN.. En el presente trabajo se muestra un estudio de la norma RS-232 y del puerto de comunicación serie de la PC, así como del módulo de comunicación serie asincrónica de los PICs. Se describe la herramienta de programación de alto nivel LabVIEW y sus potencialidades para el control de dispositivos a través del puerto serie de la PC. Se ponen ejemplos de aplicaciones realizadas en LabVIEW para la comunicación con subsistemas construidos con PICs. Se diseñan aplicaciones para el control del Cartel Pasa Mensajes (Bootloader).. y un kit. cargador de programas.
(9) v. TABLA DE CONTENIDOS. PENSAMIENTO ....................................................................................................................i DEDICATORIA .................................................................................................................... ii TAREA TÉCNICA. ............................................................................................................. iii RESUMEN. ..........................................................................................................................iv INTRODUCCIÓN. .................................................................................................................1 Organización del informe................................................................................................3 CAPÍTULO 1.. Norma RS-232 y módulo de comunicación serie del PIC. .........................4. 1.1. Norma RS-232......................................................................................................4. 1.2. El USART (Universal Synchronous Asynchronous Reciver Transmitter)...6. 1.3. Características del puerto serie de la PC.........................................................7. 1.4. Comunicación a través del puerto serie de la PC...........................................8. 1.5. Módulo de comunicación serie en los PICs.....................................................9. 1.5.1. Transmisión.................................................................................................11. 1.5.2. Recepción. ..................................................................................................12. 1.6. Conexión de los PICs a la PC..........................................................................14. CAPÍTULO 2.. Programación de la comunicación serie usando LabVIEW. ....................16. 2.1. Herramienta de LabVIEW.................................................................................16. 2.2. Instrumento Virtual de LabVIEW para la comunicación serie. ...................19.
(10) vi 2.2.1. Configuración del puerto serie. ................................................................19. 2.3. Transmisión simple............................................................................................21. 2.4. Recepción simple...............................................................................................23. 2.5. Núcleo básico para la comunicación serie.....................................................25. 2.6. Comunicación con el PIC. ................................................................................27. CAPÍTULO 3. 3.1. Desarrollo de aplicaciones en LabVIEW........................................28. Mensajes rotativos en display LCD.................................................................28. 3.1.1. Descripción de la aplicación.....................................................................28. 3.1.2. Descripción del dispositivo. ......................................................................28. 3.1.3. Descripcion del software de control. .......................................................29. 3.2. Generador de patrones de luces. ....................................................................31. 3.2.1. Descripción de la aplicación.....................................................................31. 3.2.2. Descripción del dispositivo. ......................................................................32. 3.2.3. Descripcion del software de control. .......................................................32. 3.3. Interfaz de control del Cartel Pasa Mensajes................................................34. 3.3.1. Descripción de la aplicación.....................................................................34. 3.3.2. Descripción del dispositivo. ......................................................................34. 3.3.3. Descripcion del software de control. .......................................................35. 3.4. Interfaz de control del Bootloader. ..................................................................39. 3.4.1. Descripción de la aplicación.....................................................................39. 3.4.2. Descripción del dispositivo. ......................................................................39. 3.4.3. Descripción del software de control. .......................................................40. 3.5. Transmisión del fichero de formato INTEL. ...................................................42. 3.5.1. Lectura. ........................................................................................................44.
(11) vii 3.5.2. Interpretación y segmentación.................................................................44. 3.5.3. Transmisión.................................................................................................46. CONCLUSIONES ................................................................................................................48 RECOMENDACIONES.......................................................................................................49 REFERENCIAS BIBLIOGRÁFICAS................................................................................50 ANEXOS..............................................................................................................................53 Anexo I. Tipos de datos que se manejan en LabVIEW .......................................53. Anexo II. Tipos de datos que se manejan en LabVIEW. Forma de visualizarlos. 54. Anexo III. Paleta de funciones y herramientas del LabVIEW. ..............................55. Anexo IV. Barra de herramientas de LabVIEW. ..................................................56. Anexo V. Localización en la paleta de funciones de los VIs para la. programación del VISA. ................................................................................................57.
(12) INTRODUCCIÓN. 1. INTRODUCCIÓN.. Los microcontroladores han resultado ser lo más novedoso del mundo de la electrónica. Actualmente no se concibe ninguna aplicación industrial importante sin la presencia de este dispositivo. Su expansión es evidente, sobre todo, la de los microcontroladores PIC (Periferal Interface Control), por la gran versatilidad que disponen. Actualmente se fabrican sistemas electrónicos muy avanzados, donde es imposible prescindir de un microcontrolador, así como de herramientas de software que permitan la gestión y el control de los mismos. La tendencia de la electrónica moderna, desde la aparición de la computadora personal (PC), es a incluir en los nuevos dispositivos alguna vía de comunicación con esta. En función de esto se han desarrollado interfaces como la RS-232, RJ-45, PCI, VGA y USB, cada una de ellas con características diferentes. Los microcontroladores PICs cuentan con un módulo USART (Universal Sinchronous Asinchronous Reseiver Transmitter), previsto para la comunicación serie. De ahí la motivación por el uso de la norma RS-232 como interfaz para la comunicación PC – PIC. Se hace necesario entonces, el. estudio de las. características fundamentales y las vías para la configuración y uso de dicho módulo, así como de las características de la norma seleccionada y del protocolo de comunicación que usa la misma. En el presente trabajo se aborda la interfaz RS-232, y la forma de conectar un microcontrolador PIC a la PC para la comunicación entre ambos. Se realiza además un estudio de la herramienta de programación de alto nivel LabVIEW.
(13) INTRODUCCIÓN. (Laboratory Virtual Instrument Engineering Workbench). 2 para la obtención de. softwares destinados al control de sistemas hechos con PICs. De lo anteriormente expuesto surgen las siguientes interrogantes: ¿Qué potencial brinda. LabVIEW para la programación de aplicaciones. ingenieriles? ¿Cómo programar una aplicación que sea capaz de controlar el puerto serie de la PC? ¿Qué protocolo de comunicación resulta conveniente para desarrollar la aplicación, y cómo implementarlo con LabVIEW? Atendiendo a estas preguntas se desarrolla el presente trabajo. Los objetivos fundamentales son: conocer la norma señalada y còmo configurar el módulo USART del PIC para lograr la conexión de este último al puerto serie de la PC; dominar las técnicas de programación en LabVIEW y lograr obtener aplicaciones que controlen el puerto serie de la PC; programar del núcleo básico de la comunicación que permita usarlo para todo tipo de aplicaciones de control a través del puerto serie y obtener softwares para la comunicación con el Cartel Pasa Mensajes y el Bootloader. Para llevar a cabo el cumplimiento de los objetivos planteados, se procedió a realizar las siguientes tareas: primero, búsqueda de bibliografía relacionada con la norma RS-232; segundo, estudio del puerto serie de la PC y del módulo USAR del PIC en modo asincrónico; tercero, estudio de la programación en LabVIEW y obtención de ejemplos de aplicaciones para la transmisión y recepción a través del puerto serie de la PC; cuarto, programación del núcleo de la comunicación serie; quinto, programación de diversas aplicaciones que manejan el puerto serie y controlan sistemas hechos con PICs..
(14) INTRODUCCIÓN. 3. Organización del informe. El presente informe se ha estructurado en tres capítulos que abordan las temáticas siguientes: Capítulo 1: Se tratará lo relacionado con el puerto serie de la PC. Se expondrán las características de la interfaz RS-232 y el protocolo de comunicación serie. Se describirán los aspectos fundamentales del módulo USART del microcontrolador PIC.. Capítulo 2: Este capítulo está dedicado a la herramienta de programación de alto nivel LabVIEW. Muestra las principales características de programación en general de dicha herramienta y detalles a tener en cuenta para su correcto funcionamiento en aplicaciones donde se usa el VISA (Virtual Instrument Software Archytecture). Se describen sus facilidades para la programación de la interfaz de comunicación serie y se presentan ejemplos sencillos de transmisión y recepción de datos. Se obtiene un núcleo básico para la comunicación con subsistemas hechos con PICs.. Capítulo 3: Este capítulo está orientado al desarrollo de aplicaciones con diferentes grados de complejidad, usando la herramienta LabVIEW. Se presentan ejemplos programados para el control de dispositivos, y se obtienen softwares para la comunicación con el Cartel Pasa Mensajes y el Bootloader..
(15) CAPÍTULO 1. NORMA RS-232 Y MÓDULO DE COMUNICACIÓN SERIE DEL PIC. 4. CAPÍTULO 1. Norma RS-232 y módulo de comunicación serie del PIC.. 1.1 Norma RS-232. El RS-232 es una norma para la comunicación serie, principalmente utilizado por las computadoras. A diferencia de la comunicación paralela, la información se envía secuencialmente, es decir bit a bit, utilizando menos líneas de transmisión que en esta, donde la información se envía de manera paralela, es decir varios bits al mismo tiempo. Esta característica de la RS-232 le otorga la capacidad de transmitir a mayores distancias, pero con menor velocidad. (Lauderdale, 2007) La Norma RS-232 fue definida para conectar una PC a un MODEM, para lo cual, además de transmitirse los datos de una forma serie asíncrona son necesarias una serie de señales adicionales. Actualmente, muchos dispositivos incorporan un puerto de este tipo para su configuración. (Ware, 2008) Este protocolo utiliza voltajes de +/− 15V, un “1” lógico es un voltaje entre −5V y −15V en el transmisor y en el receptor entre −3V y −25V. Un “0” lógico está entre 5V y 15V en el transmisor y entre 3V y 25V en el receptor, estos voltajes se utilizan en vez de los valores habituales de CMOS y TTL, para evitar que se pierda la información por las inductancias producidas por el medio. (Strangio, 2006) La velocidad a la que viajan los datos se mide en baudios (bits/segundo). Este parámetro debe establecerse entre las dos entidades involucradas en la comunicación de forma idéntica para que esta se realice..
(16) CAPÍTULO 1. NORMA RS-232 Y MÓDULO DE COMUNICACIÓN SERIE DEL PIC. 5. La interfaz física correspondiente a la norma RS-232 es el conector que se muestra en la figura 1.1, y es conocido como conector DB-9, lo que hace referencia a los 9 pines de los que está compuesto. También coexiste junto con él, el conector DB-25 (de 25 pines), pero actualmente se utiliza mucho menos. (Murica, 2006). Figura 1.1. Conector DB-9, correspondiente a la norma RS-232.. Los nueve pines que componen al conector DB-9 son los que siguen: 1) DCD: Detección de portadora Señal de entrada 2) RXD: Recibir Datos Señal de entrada 3) TXD: Transmitir Datos Señal de salida 4) DTR: Terminal de datos listo Señal de salida 5) GND: Tierra Referencia para señales 6) DSR: Equipo de datos listo Señal de entrada 7) RTS: Solicitud de envió Señal de salida 8) CTS: Libre para envió Señal de entrada 9) RI: Indicador de llamada Señal de entrada En la comunicación serie, los pines que portan los datos son RxD y TxD, los demás se encargan de otros trabajos, por ejemplo; el DTR indica que el ordenador.
(17) CAPÍTULO 1. NORMA RS-232 Y MÓDULO DE COMUNICACIÓN SERIE DEL PIC. 6. está encendido, DSR que el dispositivo conectado al puerto está encendido, RTS que el ordenador al no estar ocupado puede recibir datos, al revés de CTS que lo que informa es que es el dispositivo el que puede recibir datos, DCD detecta que existe presencia de datos. (Graullera, 2006) Para la comunicación con los subsistemas construidos con PICs, solo se usaron los pines encargados de la transmisión y la recepción de los datos. No se realiza ningún control de flujo, por lo que el resto de las señales no se tienen en cuenta y las líneas quedan en circuito abierto. Existen dos tipos de comunicación serie, la sincrónica y la asincrónica, la primera emplea un pin más para enviar una señal de reloj que los dos nodos de la comunicación utilizarán para sincronizar la lectura y escritura de los datos. En la asincrónica se utiliza un periodo establecido previamente para escribir y leer los datos. (Peacock, 2005) 1.2 El USART (Universal Synchronous Asynchronous Reciver Transmitter). Este tipo de puerto depende de un chip controlador especial para su correcto funcionamiento; Universal Synchronous Asynchronous Receiver Transmitter (USART), equivalente al mostrado en la figura 1.2.. Figura1.2. Chip controlador del puerto serie. (USART) El chip USART toma el dato paralelo de la salida del bus de la computadora y la transforma en un dato serie para poder ser transmitida a través del puerto, adaptando los niveles a la norma RS-232..
(18) CAPÍTULO 1. NORMA RS-232 Y MÓDULO DE COMUNICACIÓN SERIE DEL PIC. 7. Con el fin de poder funcionar más rápido la mayoría de los USART poseen un buffer incorporado desde 16 hasta 64 Kbytes. Este buffer le permite al chip almacenar los datos provenientes del bus del sistema mientras procesa la salida de datos a través del puerto serie. Mientras la mayoría de los puertos series estándares tienen una tasa de transferencia máxima de 115 Kbps, los puertos serial de alta velocidad, tales como el ESP (Enhanced Serial Port) y el Súper ESP, pueden alcanzar tasas de transferencia de 460 Kbps. (Kusch, 2007). 1.3 Características del puerto serie de la PC. El puerto serie, también conocido como puerto de comunicaciones (COM), está considerado como una interfaz externa fundamental de la computadora personal. El nombre “serie” proviene del hecho que este puerto “serealice” los datos. Es decir, toma un byte de datos y transmite sus 8 bits uno a uno, como se mencionó anteriormente. Cuando no se transmite ningún carácter, la línea está en estado alto. Antes de cada byte de datos, el puerto serie envía un bit de inicio, el cual consiste en un único bit con un valor de “0” que indica que se va a transmitir un byte. Luego de este, envía un bit de parada con el cual se indica que el byte está completo. También puede enviar un bit de paridad para comprobar si la información recibida es la correcta. (Wikipedia, 2008).
(19) CAPÍTULO 1. NORMA RS-232 Y MÓDULO DE COMUNICACIÓN SERIE DEL PIC. 8. Lo anterior queda ilustrado en la figura siguiente:. Figura 1.3. Transmisión de un byte a través del puerto serie.. EL puerto serie es bidireccional, esto significa que permite a cada entidad, tanto recibir datos como enviarlos. Utilizan distintos pines para la transmisión y recepción, ya que usar el mismo pin limitaría la comunicación a half-duplex, lo cual significa que la información solo viajaría en un sentido a la vez.. 1.4 Comunicación a través del puerto serie de la PC. Antes de iniciar cualquier comunicación con el puerto RS-232 se debe determinar la configuración del mismo, y establecer de igual valor, los parámetros que rigen el enlace, en las dos entidades involucradas en la transferencia de datos..
(20) CAPÍTULO 1. NORMA RS-232 Y MÓDULO DE COMUNICACIÓN SERIE DEL PIC. 9. Siendo los parámetros a configurar los siguientes: •. Velocidad de transmisión. •. Número de bits de datos. •. Control de flujo. •. Paridad. Esta configuración se establece mediante softwares que controlan el puerto. En el estudio realizado de LabVIEW, que se expondrá en el próximo capítulo, se aborda este tema y se describen las facilidades y métodos de dicha herramienta para la obtención de aplicaciones que permiten gestionar la interfaz RS-232 de la PC. En las aplicaciones realizadas con PICs, estos parámetros fueron seleccionados de la manera siguiente: •. Razón de baud…….1200. •. Bits de datos………..8. •. Bit de paridad…..…..ninguno. •. Control de flujo……..ninguno. Se eligió una baja razón de baud, de manera que se pueda extender el cable de comunicaciones y la probabilidad de error sea la más baja posible, esto teniendo en cuenta que no es necesario una conexión de alta velocidad para las aplicaciones construidas.. 1.5 Módulo de comunicación serie en los PICs. Dentro de las ventajas fundamentales de los microprocesadores PICs, se destaca, la inclusión del módulo USART para la comunicación serie. Este está presente en todos los PICs de las gamas media y alta. A través de la escritura sobre los.
(21) CAPÍTULO 1. NORMA RS-232 Y MÓDULO DE COMUNICACIÓN SERIE DEL PIC. registros de configuración,. 10. se puede establecer la comunicación con otros. sistemas. (Mercado, 2002) La Interfaz de Comunicación Serie (SCI) en los PICs puede ser configurada en el modo asincrónico bidireccional para la comunicación con equipos terminales de datos como las computadoras personales, o puede ser configurado en el modo sincrónico unidireccional que permite la comunicación con periféricos como conversores análogo-digitales o dígito-analógicos, y otros circuitos integrados. (Romero, 2005) El SCI puede ser configurado en los siguientes modos: •. Asincrónico – Bidireccional.. •. Sincrónico –Unidireccional Master.. •. Sincrónico –Unidireccional. Esclavo.. Para la comunicación con la PC se adoptó el modo asincrónico, que utiliza el formato estándar NRZ (Not Returned to Zero) el cual consiste en un bit de arranque, ocho o nueve bits de datos y un bit de parada. El formato de datos más común consta de un bit de arranque, ocho bits de datos, un bit de paridad y un bit de parada. El Generador de Razón de Baud (BRG) se dedica para establecer una razón de Baud a partir de la frecuencia del oscilador y el valor del registro SPBRG. El SCI transmite o recibe el bit menos significativo (LSB) primero. La transmisión y la recepción son independientes pero usan el mismo formato de datos y la misma razón de Baud..
(22) CAPÍTULO 1. NORMA RS-232 Y MÓDULO DE COMUNICACIÓN SERIE DEL PIC. 11. 1.5.1 Transmisión. El bloque de transmisión para el SCI se muestra en la figura 1.4.. Figura 1.4. Bloque de transmisión del SCI.. El corazón del sistema de transmisión es el registro Transmission Shift Register (TSR) el cual se actualiza a partir del buffer de transmisión (registro TXREG). El buffer se carga con un dato por software. El TSR no se actualiza hasta que el bit de arranque del dato actual no es enviado. Inmediatamente después el TSR toma un nuevo valor leyendo de buffer TXREG. La secuencia de transmisión se muestra a continuación en la figura 1.5.. Figura 1.5. Secuencia de transmisión..
(23) CAPÍTULO 1. NORMA RS-232 Y MÓDULO DE COMUNICACIÓN SERIE DEL PIC. 12. Para realizar una transmisión asincrónica se deben seguir los siguientes pasos: 1. Inicializar el registro SPBRG para una apropiada razón de Baud. 2. Habilitar el puerto serie en modo asincrónico poniendo a ‘0’ el bit SYNC (TXSTA, 4) y a ‘1’ el bit SPEN (RCSTA, 7). 3. Si se quiere habilitar la interrupción poner a ‘1’ el bit TXIE (PIE1, 4). 4. Si se desea usar formato de 9 bits de datos, poner a ‘1’ el bit TX9 (TXSTA, 6). 5. Habilitar la transmisión poniendo a ‘1’ el bit TXEN (TXSTA, 5). 6. Si se seleccionó el formato de 9 bits de datos, el bit 9 debe ser cargado en el bit TX9D (TXSTA, 0). 7. Cargar dato en el buffer TXREG. 8. Si se está usando la interrupción asegurarse de que los bits GIE y PEIE (INTCON 7, 6) están puestos a ‘1’. 1.5.2 Recepción. El bloque de recepción se muestra en la figura 1.6. Figura 1.6. Bloque de recepción para el SCI..
(24) CAPÍTULO 1. NORMA RS-232 Y MÓDULO DE COMUNICACIÓN SERIE DEL PIC. 13. El corazón del sistema de recepción es el registro Reception Shift Register (RSR). Después de recibido el bit de parada el valor de RSR se transfiere al registro RCREG si se encuentra vacío. Cuando la transferencia se completa el bit RCIF (PIR1, 5) se pone a ‘1’. La interrupción puede ser habilitada a través del bit RCIE (PIE1, 5). Si el bit de parada es un ‘0’ entonces se activa el bit de error de trama (RCSTA, 2). La secuencia de recepción se muestra en la figura 1.7.. Figura 1.7. Secuencia de transmisión para el SCI.. Para efectuar una recepción en modo asincrónico se deben seguir los siguientes pasos: 1. Inicializar el registro SPBRG para una apropiada razón de Baud. 2. Habilitar el puerto serie en modo asincrónico poniendo a ‘0’ el bit SYNC (TXSTA, 4) y a ‘1’ el bit SPEN (RCSTA, 7). 3. Si se quiere habilitar la interrupción poner a ‘1’ el bit RCIE (PIE1, 5)..
(25) CAPÍTULO 1. NORMA RS-232 Y MÓDULO DE COMUNICACIÓN SERIE DEL PIC. 14. 4. Si se desea usar formato de 9 bits de datos, poner a ‘1’ el bit TX9 (TXSTA, 6). 5. Habilitar la recepción poniendo a ‘1’ el bit CREN (RCSTA, 4). 6. Cuando la recepción se completa se activa RCIF (PIR1, 5) y se genera la interrupción si el bit RCIE (PIE1, 5) fue puesto a ‘1’. 7. Leer el registro RCSTA para obtener el bit9 de datos (en caso de ser habilitado) y determinar si ocurrió algún error durante el proceso. 8. Leer el dato recibido del registro RCREG. 9. Si ocurrió algún error, eliminarlo poniendo a ‘0’ el bit CREN (RCSTA, 4). 10. Si se está usando la interrupción asegurarse de que los bits GIE y PEIE (INTCON 7, 6) están puestos a ‘1’.(Garbutt, 2003) 1.6 Conexión de los PICs a la PC. Como se hizo mención anteriormente, para la conexión entre el PIC y la PC, se usan solamente las líneas de transmisión y recepción del puerto de comunicación. Los niveles lógicos que maneja el microcontrolador, no son compatibles directamente con la interfaz RS-232. El PIC interpreta como “1” al nivel 5V, y como “0” al nivel 0V, mientras que el puerto serie de la PC trabaja con -15V y 15V respectivamente. Se hace necesario entonces un hardware intermedio que se encargue de la conversión de norma en ambos sentidos y permita que los datos sean interpretados correctamente. (Palacherla, 1997). Figura 1.8. Conexión del PIC a la PC.
(26) CAPÍTULO 1. NORMA RS-232 Y MÓDULO DE COMUNICACIÓN SERIE DEL PIC. 15. A este problema se le da solución mediante el uso del chip MAX232, que permite adaptar los niveles RS-232 y TTL. Sólo es necesario este chip y 4 condensadores electrolíticos de 10 microfaradios. (Maxim, 2004) El esquema de conexión es el siguiente:. Figura 1.9. Adaptación de las normas RS-232 y TTL usando el chip MAX232..
(27) CAPÍTULO 2. PROGRAMACION DE LA COMUNICACIÓN SERIE USANDO LABVIEW. 16. CAPÍTULO 2. Programación de la comunicación serie usando LabVIEW.. 2.1 Herramienta de LabVIEW. LabVIEW constituye un revolucionario sistema de programación gráfica para aplicaciones que involucren adquisición, control, análisis y presentación de datos. Brinda un entorno de programación destinado al desarrollo de aplicaciones, similar a los sistemas de desarrollo comerciales que utilizan el lenguaje C o BASIC. Sin embargo, LabVIEW se diferencia de dichos programas en un importante aspecto: los citados lenguajes de programación se basan en líneas de texto para crear el código fuente del programa, mientras que LabVIEW emplea la programación gráfica o “lenguaje G” para crear programas basados en diagramas de bloques. (Jennings, 2006) Para el empleo de LabVIEW no se requiere gran experiencia en programación, ya que se emplean iconos, términos e ideas familiares a científicos e ingenieros, y se apoya sobre símbolos gráficos en lugar de lenguaje escrito para construir las aplicaciones. Por ello resulta mucho más intuitivo que el resto de lenguajes de programación convencionales. LabVIEW posee extensas librerías de funciones y subrutinas. Además de las funciones básicas de todo lenguaje de programación, LabVIEW incluye librerías específicas para la adquisición de datos, control de instrumentación VXI, GPIB y comunicación serie, análisis, presentación y guardado de datos. (Wikipedia, 2008)..
(28) CAPÍTULO 2. PROGRAMACION DE LA COMUNICACIÓN SERIE USANDO LABVIEW. 17. Los programas desarrollados mediante LabVIEW se denominan Instrumentos Virtuales (VIs), porque su apariencia y funcionamiento imitan los de un instrumento real. Sin embargo son análogos a las funciones creadas con los lenguajes de programación convencionales. Los VIs tienen una parte interactiva con el usuario y otra parte de código fuente, y aceptan parámetros procedentes de otros VIs. Todos los VIs tienen un panel frontal y un diagrama de bloques. Las paletas de funciones contienen las opciones que se emplean para crear y modificar los VIs. El panel frontal es la interfaz gráfica del VI con el usuario. Esta interfaz recoge las entradas procedentes del usuario y representa las salidas proporcionadas por el programa. Un panel frontal está formado por una serie de botones, pulsadores, indicadores y gráficos. Ver figura 2.1. Cada uno de ellos puede estar definido como un control o un indicador. Los primeros sirven para introducir parámetros al VI, mientras que los indicadores se emplean para mostrar los resultados producidos, ya sean datos adquiridos o resultados de alguna operación. (Esparza, 2006). Figura 2.1. Vista del “Front Panel”.
(29) CAPÍTULO 2. PROGRAMACION DE LA COMUNICACIÓN SERIE USANDO LABVIEW. 18. El diagrama de bloques constituye el código fuente del VI. Es donde se realiza la implementación del programa del VI para controlar o realizar cualquier procesamiento de las entradas y salidas que se crearon en el panel frontal. El diagrama de bloques incluye funciones y estructuras integradas en las librerías que incorpora LabVIEW. En el lenguaje G las funciones y las estructuras son nodos elementales. Son análogas a los operadores o librerías de funciones de los lenguajes convencionales. Los controles e indicadores que se colocaron previamente en el panel frontal, se materializan en el diagrama de bloques mediante los terminales. A continuación, se muestra el diagrama correspondiente a la interfaz de la figura anterior. (Scrensen, 2003). Figura 2.2. Vista del diagrama de bloques.
(30) CAPÍTULO 2. PROGRAMACION DE LA COMUNICACIÓN SERIE USANDO LABVIEW. 19. 2.2 Instrumento Virtual de LabVIEW para la comunicación serie. LabVIEW utiliza, para la comunicación con dispositivos el “Instrumento Virtual de Arquitectura de Software” (VISA). Este es un estándar producido por “Nationals Instruments” para la configuración y programación de sistemas con interfaces GPI, VXI, PXI, Serial, Ethernet, y USB, que incluye bibliotecas de softwares. (Instruments, 1997) En el proceso de instalación de LabVIEW, es necesario asegurarse de tener seleccionado los componentes que incluyen los drivers del VISA, de otra manera puede generar conflictos en las operaciones que manejan el funcionamiento del puerto serie. En el caso de que la instalación se realice y no se hayan incluido dichos componentes, puede solucionarse el problema mediante la instalación del paquete de drivers “visa420full.exe” que puede ser descargado de la página web de Nationals Instruments. (Fernández, 2006) 2.2.1 Configuración del puerto serie. Para la comunicación serie, LabVIEW contiene en la paleta de funciones, los VIs que permiten la configuración y el acceso al puerto de comunicación. A través del “VISA Configure Serial Port” se pueden establecer los parámetros necesarios para establecer la comunicación; Razón de Baud, Bits de datos, Paridad, Control de flujo, Bit de parada y Timeout. Haciendo uso de constantes y controles, se enlaza cada entrada de configuración del VI con el valor requerido para la aplicación en cuestión..
(31) CAPÍTULO 2. PROGRAMACION DE LA COMUNICACIÓN SERIE USANDO LABVIEW. 20. Figura 2.3. Configuración del VISA El VI “VISA Configure Serial Port”, posee además dos salidas destinadas a la conexión con otros VI. En el desarrollo de las aplicaciones para la comunicación con los microcontroladores PICs estas se usaron para conectar al “VISA Write” y al “VISA Read” para la escritura y lectura de los datos respectivamente. El VI “VISA Write” es el encargado del manejo de los datos en el proceso de transmisión. Toma los datos que se van a enviar, los coloca en el buffer de transmisión y realizar el envío por tramas de 8 bits (1byte). El VI “VISA Read”, por su parte es quien tiene la tarea de tomar los datos del buffer de recepción y presentarlo al usuario en los indicadores correspondientes. (Uvais, 2006 #24).
(32) CAPÍTULO 2. PROGRAMACION DE LA COMUNICACIÓN SERIE USANDO LABVIEW. 21. 2.3 Transmisión simple. Para llevar a cabo la transmisión usando los VIs que ofrece LabVIEW, se debe realizar la conexión de los mismos siguiendo una secuencia lógica de pasos que efectúan el proceso. El primer elemento a usar es, sin lugar a dudas, el “VISA configure Serial Port”. A través del cual, como ya se ha visto, se deben definir los parámetros del protocolo de comunicación, recordando siempre que estos deben coincidir con la configuración del USART del microcontrolador con el que se pretende realizar la conexión. A la entrada “VISA resource name” de este VI se le puede asignar un “control”, de manera que la aplicación final brinde al usuario la posibilidad de usar el puerto de comunicación que desee. Seguidamente debe conectarse el VI “VISA Write”. De esta forma se accede al buffer de transmisión del USART. Los datos que se van a enviar deben ser conectados a la entrada “Write Buffer”. A este simple esquema se le anexan además dos VI a continuación que, aunque no resultan imprescindibles para la transmisión, permiten cerrar el puerto de comunicación al final del envío y visualizar los mensajes de errores que puedan ocurrir durante el proceso. A continuación se muestra el diagrama de bloques donde queda programada la transmisión. (Esparza, 2006).
(33) CAPÍTULO 2. PROGRAMACION DE LA COMUNICACIÓN SERIE USANDO LABVIEW. 22. Figura 2.4. Diagrama de bloques de la transmisión. En el “Front Panel”, se visualizarán los controles y entradas que fueron ubicabas en el diagrama de bloques. En este caso solo existirán tres; los controles conectados a las entradas “VISA resource name” y “Baud Rate” del VI “VISA Configure Serial Port” y el control conectado a la entrada “Write buffer” del VI “VISA Write”. De esta forma, la interfaz gráfica de la aplicación queda como se muestra en la figura 2.5..
(34) CAPÍTULO 2. PROGRAMACION DE LA COMUNICACIÓN SERIE USANDO LABVIEW. 23. Figura 2.5. Interfaz gráfica de la aplicación de transmisión.. 2.4 Recepción simple. Cuando se va a realizar la recepción de datos a través del puerto serie, la programación de la misma se efectúa de manera muy similar a la transmisión. Solo que debe usarse el VI “VISA Read” en lugar del “VISA Write”, debido a que en este caso se debe leer del buffer de recepción..
(35) CAPÍTULO 2. PROGRAMACION DE LA COMUNICACIÓN SERIE USANDO LABVIEW. 24. Figura 2.6. Diagrama de bloques de la recepción. Como se muestra en la figura anterior, la recepción, de igual forma que la transmisión, hace uso del VI “VISA Configure Serial Port” para configurar los parámetros requeridos en el protocolo de comunicación. A continuación se inserta un elemento que se encarga de contar los bytes entrantes por el puerto, para luego entregar el valor de esta cantidad a VI “VISA Read” y que este conozca cuantos bytes de datos debe leer del buffer. Los datos recibidos son presentados en el indicador conectado a la salida “Read Buffer” del VI “VISA Read”. El resto de los elementos conectados cumplen igual función que en el ejemplo que muestra la transmisión. (Esparza, 2006) La interfaz gráfica de esta aplicación queda ilustrada a continuación..
(36) CAPÍTULO 2. PROGRAMACION DE LA COMUNICACIÓN SERIE USANDO LABVIEW. 25. Figura 2.7 Interfaz gráfica del la aplicación de recepción 2.5 Núcleo básico para la comunicación serie. En las aplicaciones realizadas con microcontroladores PICs es importante el envío de comandos. y datos de configuración para el control del hardware como la. recepción de las respuestas que se originen en él. En algunas de estas aplicaciones, como es el caso del “Bootloader”, que se verá más adelante, es imprescindible obtener los valores de la memoria del PIC, por lo que se hace necesario contar con una aplicación que integre los procesos de transmisión y recepción, y que permita efectuar cada uno de ellos a elección del usuario. Este tipo de interfaz se puede lograr mediante la combinación de los dos modelos anteriores. Se mantiene como elemento principal, el “VISA Configure Serial Port”, pero esta vez se enlazarán a él tanto el “VISA Write” como el “VISA Read” de manera que garantice que tanto la recepción como la transmisión se realicen a través del mismo puerto y con la misma configuración. El esquema que integra la transmisión y la recepción queda ilustrado a continuación..
(37) CAPÍTULO 2. PROGRAMACION DE LA COMUNICACIÓN SERIE USANDO LABVIEW. 26. Figura 2.8: Diagrama de bloques del núcleo básico para la comunicación serie. Inmediatamente después del bloque de transmisión se ha colocado una demora, y a continuación se realiza la recepción. Este paso intermedio puede ignorarse, o configurarse con el valor deseado a través de un control. La interfaz gráfica que genera el diagrama de bloques de esta aplicación se muestra en la siguiente imagen.. Figura 2.9: Interfaz gráfica del núcleo básico para la comunicación serie.
(38) CAPÍTULO 2. PROGRAMACION DE LA COMUNICACIÓN SERIE USANDO LABVIEW. 27. 2.6 Comunicación con el PIC. La comunicación PC – PICs se implementó en modo de comandos. La programación del microcontrolador se realizó de manera que, al llegar la trama de datos, se interpretara el primer byte como código de operación, donde se indica la función a realizar. El resto de los bytes entrantes son interpretados como datos, y son usados para la operación indicada. De esta manera, el formato de la trama transmitida consta de dos campos; la cabecera, que contiene la información de la acción a llevar a cabo, y el campo de datos, que contiene los bytes de datos que son usados para la operación en cuestión. El tamaño de la trama está establecido en dependencia del comando enviado, y este a su vez, está en función de la aplicación.. Figura 2.10 Trama enviada de la PC hacia el PIC En algunos casos el tamaño del campo de datos pude ser cero. Esto sucede cuando la operación que se le indica hacer al microcontrolador no requiere de más información que el código de operación. En este caso el microcontrolador, al recibir el comando, ejecuta de inmediato la acción indicada. Algunos de los comandos enviados por la PC, no requieren de una trama de respuesta por parte del PIC, sin embargo en otros se hace imprescindible, como comandos de reconocimiento de la conexión, lectura de registros, chequeo de realización de operaciones, entre otros. En estos casos, al llegar el comando desde la PC, el PIC genera la respuesta correspondiente y la envía dentro de una trama que no incluye cabecera. Esto quiere decir que el software que controla al microcontrolador desde la PC, debe esperar por la respuesta después de transmitir alguno de estos comandos..
(39) CAPÍTULO 3. DESARROLLO DE APLICACIONES EN LABVIEW.. 28. CAPÍTULO 3. Desarrollo de aplicaciones en LabVIEW.. A partir del núcleo básico para la comunicación serie en LabVIEW, obtenido en el capítulo anterior, se pueden confeccionar todo tipo de aplicaciones para el control de dispositivos realizados con PICs. En función de la aplicación que se pretenda obtener, deben ser las nuevas estructuras a agregar en el diagrama de bloques. Los comandos que se usen para la comunicación deben estar incluidos en la programación. del. microcontrolador,. de. manera. que. los. mismos. sean. correctamente interpretados en el proceso de comunicación. En cada una de estas aplicaciones, se usa un mecanismo de programación que permite la conmutación de la entrada del “VISA Read” entre los comandos, y los datos correspondientes a estos. 3.1 Mensajes rotativos en display LCD. 3.1.1 Descripción de la aplicación. En esta aplicación se pretende controlar un display LCD donde se presentan 4 mensajes, uno a continuación del otro a intervalos de tiempo. Brinda la posibilidad de elegir cada uno de los mensajes y el tiempo que durará visible antes de pasar al próximo. 3.1.2 Descripción del dispositivo. El hardware de esta aplicación está compuesto por un display LCD conectado a un puerto del microcontrolador PIC 16F877A, que a través del chip conversor de.
(40) CAPÍTULO 3. DESARROLLO DE APLICACIONES EN LABVIEW.. 29. norma MAX232, usa el módulo de comunicación serie para conectarse al puerto serie de la PC. 3.1.3 Descripcion del software de control. Para el desarrollo de esta aplicación, se programó el microcontrolador de manera que estuviera pendiente de los datos recibidos a través del puerto serie, y que a la llegada del comando de cambio de mensaje escribiera los datos arribantes en posiciones consecutivas de la memoria flash del PIC, hasta que se detectara el comando de fin de mensaje. A continuación se presenta en el display el mensaje guardado en dichas posiciones de memoria. El control de este dispositivo se realiza a través de un software que toma las entradas de texto del usuario y les añade una cabecera con el comando de “cambio de mensaje” y un fin de trama con el comando de “fin de mensaje”. A continuación se muestra la interfaz gráfica para la configuración del hardware.. Figura 3.1. Interfaz gráfica para el control del display LCD.
(41) CAPÍTULO 3. DESARROLLO DE APLICACIONES EN LABVIEW.. 30. Como se ve en la figura 3.1, la aplicación consta de cuatro campos de textos, donde el usuario escribe cada uno de los mensajes que van a ser visualizados en el display y un campo de selección donde se elige el tiempo que dura cada visualización. Muestra además cuatro indicadores que permiten saber cual es el mensaje que se está presentando en cada instante, esto teniendo en cuenta que el dispositivo puede estar distante de la PC y el usuario necesita saber lo que se está mostrando. La programación en LabVIEW de este software se realizó mediante la utilización de un ciclo while, donde está contenida la rotación de los mensajes a ser transmitidos. En la corrida inicial se toma el primer campo de texto, se le incluyen los comandos de “nuevo mensaje” y “fin de mensaje” al inicio y final de la cadena de datos respectivamente y se envía la tarma final a través del puerto serie. Posteriormente se espera un tiempo de valor igual al entrado por el usuario en el campo de “DEMORA” y se procede a realizar la misma secuencia anterior, pero ahora con el segundo campo de texto, hasta que llega el último y comienza a repetirse desde el inicio. De esta manera se envían cada uno de los mensajes hacia el microcontrolador para que este los visualice. Para anexar los comandos a la cadena de datos entrados por el usuario, se usó el instrumento virtual “Concatenate Strings”, y para implementar la secuencia de transmisión para la rotación de los cuatro mensajes se utilizó una estructura “for” donde en cada una de sus iteraciones se usa un campo de texto distinto como entrada al “VISA Write”. La figura 3.2 muestra la programación de este software..
(42) CAPÍTULO 3. DESARROLLO DE APLICACIONES EN LABVIEW.. 31. Figura 3.2. Diagrama de bloques del software de control del display LCD 3.2 Generador de patrones de luces. 3.2.1 Descripción de la aplicación. En esta aplicación se controla el encendido de 8 LEDs de manera que puedan generarse y modificarse diferentes combinaciones entre ellos..
(43) CAPÍTULO 3. DESARROLLO DE APLICACIONES EN LABVIEW.. 32. 3.2.2 Descripción del dispositivo. El hardware de esta aplicación está conformado por un microcontrolador PIC 16F877A al cual se le han conectado LEDs a uno de sus puertos a través de resistores. El chip MAX232 permite la adaptación de las normas TTL y RS-232 para la conexión entre el PIC y la PC. 3.2.3 Descripcion del software de control. El dispositivo fue concebido de manera que la combinación de LEDs encendidos equivale al valor binario del último dato recibido a través del puerto serie. Para el control de este hardware, se usó el esquema de la transmisión simple, donde a la entrada del “VISA Write” se le hizo llegar una secuencia de datos que proviene de cada combinación previamente entrada por el usuario. En la interfaz gráfica se muestra una matriz de 8x8 indicadores, donde la primera columna corresponde al LED número uno conectado al PIC, en intervalos consecutivos de tiempo según su orden descendente. De igual manera la columna número dos corresponde al segundo LED, y así sucesivamente hasta el LED numero ocho. Esto quiere decir que la primera fila de indicadores representan los estados de cada uno de los LEDs conectados al microcontrolador en el primer instante de tiempo. La segunda. fila corresponde a los nuevos estados que. tomaran los LEDs, y de esta manera hasta la octava fila, donde se termina la primera corrida y se inicia nuevamente el proceso..
(44) CAPÍTULO 3. DESARROLLO DE APLICACIONES EN LABVIEW.. 33. Por ejemplo, si deseáramos generar un patrón donde un LED encendido se desplace, el usuario debe disponer cada uno de los estados de la manera que se muestra en la figura a continuación.. Figura 3.3. Interfaz gráfica del generador de patrones de luces. En la extrema superior derecha se colocó un monitor construido con indicadores, donde se presenta lo que está sucediendo con el encendido de los LEDs en cada instante. En la región izquierda del software, el usuario puede seleccionar el puerto de comunicaciones por donde se realizará la conexión con el dispositivo, así como la razón de baud y la demora que desea que transcurra entre cada estado. La programación de esta aplicación se realizó con la ayuda de un ciclo while, que contiene a su vez una estructura case con ocho cuadros o capas. En cada una de estas capas se enlaza una fila diferente a la entrada del “VISA Write”, a través de los VIs. “Boolean Array to Number” “Build Array” “Byte Array to String”, que. permiten convertir el valor correspondiente a cada estado, entrado por el usuario, a su equivalente ASCII, para ser transmitido por el puerto. El diagrama de bloques se muestra en la figura 3.4..
(45) CAPÍTULO 3. DESARROLLO DE APLICACIONES EN LABVIEW.. 34. Figura 3.4. Diagrama de bloques del generador de patrones. 3.3 Interfaz de control del Cartel Pasa Mensajes. 3.3.1 Descripción de la aplicación. En esta aplicación se pretende controlar un Cartel Pasa Mensajes, que como su nombre lo sugiere, muestra mensajes moviéndose en un display. El dispositivo se encarga además de mostrar la hora y censar la temperatura ambiente para presentarla en forma de mensaje. El control de este hardware se realiza a través de un puerto de comunicación serie, que se conecta a la PC. De esta forma se actualiza el mensaje y la hora a presentar en el display. 3.3.2 Descripción del dispositivo. El cartel está formado por un display de 8 matrices de 8x8 diodos LEDs, una a continuación de la otra, que permite visualizar símbolos, ya sea caracteres que forman palabras o números. Posee una programación que permite mostrar mensajes en movimiento, que se desplazan de derecha a izquierda. Las columnas de las matrices están atendidas por barrido, a través de transistores que son activados por registros de desplazamiento. Las filas del display se encuentran.
(46) CAPÍTULO 3. DESARROLLO DE APLICACIONES EN LABVIEW.. 35. conectadas en paralelo y son atendidas por un puerto del microcontrolador PIC 16F877A. (Castro, 2007) El Cartel Pasamensajes se muestra en el anexo III. 3.3.3 Descripcion del software de control. El Cartel Pasa Mensajes, fue concebido de manera que para su configuración por el puerto serie se deban seguir los siguientes pasos: Actualización de mensaje 1 - Envío de cualquier carácter, para el borrado del mensaje actual. 2 - Envío del comando de actualización de mensaje (M). 3 - Envío del mensaje a presentar. 4 - Envío del comando de fin de actualización (.). Actualización de hora 1 - Envío de cualquier carácter, para el borrado del mensaje actual. 2 - Envío del comando de actualización de hora (H). 3 - Envío de la hora en formato militar, usando 4 dígitos, los dos primeros indicando la hora y los últimos indicando los minutos. 4 - Envío del comando de fin de actualización (.). El software programado en LabVIEW se encarga de realizar cada una de estas secuencias de pasos según la elección del usuario. Muestra una interfaz gráfica donde presenta botones e indicadores que activan el proceso de actualización de la hora y del mensaje..
(47) CAPÍTULO 3. DESARROLLO DE APLICACIONES EN LABVIEW.. 36. Figura 3.5. Software de control del Cartel Pasa Mensajes. En la figura 3.5 se muestra el software para el control del cartel Pasa Mensajes. Como se puede apreciar, consta de dos fichas o pestañas, una de nombre “CONF CARTEL” dedicada a la configuración del dispositivo, y otra con nombre “CONFIGURACION” dedicada a la configuración de la comunicación por el puerto serie. En la primera se presentan los controles e indicadores que intervienen en la configuración del equipo, tales como: “CAMBIAR MENSAJE”: En este campo el usuario escribe el texto que desea que aparezca en el display. No debe exceder de 30 caracteres. “CAMBIAR HORA”: En este campo se escribe la hora en formato militar. “ESTADO DEL PROCESO”: Aquí se indica la acción que se está llevando a cabo en cada instante..
(48) CAPÍTULO 3. DESARROLLO DE APLICACIONES EN LABVIEW.. 37. “DATO ENVIADO”: En este campo se visualiza el dato con el cual está cargado el buffer de transmisión en cada instante del proceso. “HABILITAR RECEPCION DE DATOS”: Aquí el usuario decide si habilita o no la recepción de datos enviados desde el dispositivo. En caso afirmativo, se visualizarán los mensajes de respuesta provenientes del Cartel. Actualmente este campo no se usa debido que en la programación del cartel no está contenida la transmisión de mensaje, sin embargo, se prevé una futura modificación del software en función de que dicho dispositivo genere respuestas de comandos de configuración y de chequeo de conexión. “NUMERO DE BYTES ENTRANTES”: como su nombre lo indica, es un contador de bytes que muestra el tamaño usado del buffer de recepción. “INICIAR”: Este botón activa la configuración del cartel. Al oprimirlo se inicia el proceso según la selección de usuario (hora y/o mensaje). Programación en LabVIEW. La implementación de este software en LabVIEW, se realizó mediante la combinación de las estructuras while y case que se encuentran en la paleta de funciones. Cuando el usuario selecciona la configuración que desea hacer (hora y/o mensaje), se genera un contador que está en función de dicha selección, y hace transitar a la estructura case por los estados correspondientes. Los estados de la estructura case se ocupan de lo siguiente: Caso “1”: borrado del cartel actual. Caso “2”: envío del comando de nuevo mensaje. Caso “3”: envío del nuevo mensaje. Caso “4”: envío del comando de fin de configuración.
(49) CAPÍTULO 3. DESARROLLO DE APLICACIONES EN LABVIEW.. 38. Caso “5”: borrado del cartel. Caso “6”: envío del comando de actualización de hora. Caso “7”: envío de la nueva hora. Caso “8”: envío del comando de fin de actualización de hora En caso de que el usuario seleccione solamente el cambio de mensaje, el generador de eventos hará transitar a la estructura case solo por los primeros cuatro estados e inmediatamente se genera la condición de ruptura del ciclo while que engloba todo el proceso. Si la selección fue solo de actualización de hora, el generador de eventos hará que sucedan los casos a partir del número cinco, obviando los eventos anteriores, y si el usuario optó por configurar tanto el mensaje como la hora del cartel, entonces se transitará desde el caso número uno hasta el ocho. Esta programación puede observarse en la figura 3.6.. Figura 3.6. Diagrama de bloques del software para el Cartel Pasa Mensajes.
(50) CAPÍTULO 3. DESARROLLO DE APLICACIONES EN LABVIEW.. 39. 3.4 Interfaz de control del Bootloader. 3.4.1 Descripción de la aplicación. Esta aplicación fue concebida para la comunicación con el Bootloader. Permite realizar chequeos de conexión, escrituras y lecturas de la memoria flash del microcontrolador y la reconfiguración del dispositivo. 3.4.2 Descripción del dispositivo. Este dispositivo es muy sencillo y permite descargar programas al PIC usando únicamente el puerto serie. Solo es necesario utilizar un grabador de PIC una vez, para grabar el programa cargador. Después de esto, se puede prescindir del grabador de PIC para la programación reiterada del mismo. Esto es esencialmente importante, ya que brinda la posibilidad de actualizar el software del microcontrolador sin tener que extraerlo del hardware, y sin la necesidad del programador. (Fosler, 2002) La nueva versión del programa del PIC se le carga a este, a través de la interfaz de comunicación serie, y queda grabada en la memoria flash del mismo. El programa a cargar es el fichero de extensión “.hex”, generado por la compilación de los softwares de edición de programas y simulación para PICs. Cuando el microcontrolador se energiza, en primer lugar, chequea un indicador en la memoria EEPROM que le informa si debe o no entrar al modo de configuración. La primera vez que se alimenta el PIC, dicho indicador hace que este se quede esperando que se le envíe el fichero de programación. En ese estado en que se encuentra, se puede realizar a través de comandos, el chequeo de la conexión, la escritura del programa y la lectura y borrado de la memoria flash. Cuando el PIC queda programado, el indicador en la EEPROM cambia su valor, y en la próxima energización, el hardware realizará las funciones contenidas en el fichero de programación que le fue cargado..
(51) CAPÍTULO 3. DESARROLLO DE APLICACIONES EN LABVIEW.. 40. 3.4.3 Descripción del software de control. Para el control de este dispositivo, se hizo uso de la estructura “even case” de la paleta de funciones de LabVIEW. La misma se encarga de esperar por eventos correspondiente a sus cuadros o capas, y responde con las acciones contenidas en cada uno de ellos. La interfaz gráfica de la aplicación se muestra en la figura 3.7.. Figura 3.7. Interfaz gráfica para el control del Bootloader. Como puede apreciarse, el software cuenta con seis botones: “DETENER CORRIDA”: Este botón envía al PIC un comando que lo hace detener la corrida de su programa y pone el indicador de la EEPROM con valor tal que en la próxima energización del dispositivo, este entrará en estado de reconfiguración y esperará por el envío del fichero de programación para cargarlo en la memoria flash. “CHEQUAR DISP”: Permite el chequeo de la conexión. Hace el envío del comando de reconocimiento al microcontrolador, y espera la respuesta de este para presentarla al usuario. Permite verificar si el PIC se encuentra listo para la transferencia de datos..
(52) CAPÍTULO 3. DESARROLLO DE APLICACIONES EN LABVIEW.. 41. “LEER MEMORIA”: A través de este botón se puede ver el contenido de la memoria flash del PIC. Envía el comando de lectura y espera por la respuesta del microcontrolador. Esta operación pudiera tardar aproximadamente un minuto. El fin de la misma la indica el dispositivo con el envío del comando de. “fin de. lectura”. “BORRAR MEMORIA”: Permite limpiar la memoria flash del microcontrolador. Se envía el comando de borrado, a lo que el PIC, después de realizar la operación, responde con la confirmación de acción terminada. ”ESCRIBIR MEMORIA”: Al oprimir este botón, se lee el fichero de configuración anteriormente cargado en la barra de dirección de archivo. Posteriormente se procede a la interpretación y al envío del mismo por líneas de código, anexando a cada línea enviada el comando de escritura. “CORRER PROGRAMA”: Este botón le indica al microcontrolador que ejecute el programa que le fue cargado. Permite verificar que el PIC fue programado correctamente, y hace que el indicador de la EEPROM tome valor tal que en la próxima energización del dispositivo, se ejecuten las acciones contenidas en el fichero de configuración que le fue grabado en la memoria flash. En la parte superior de la interfaz, se encuentra la barra de dirección de archivo. A través de ella se introduce la ubicación del fichero INTEL que se le va a cargar al microcontrolador. Al pulsar el botón de búsqueda, se abre una ventana de navegación que permite al usuario indicar la dirección exacta del archivo. Solo se permite seleccionar ficheros con el formato INTEL (.hex), cualquier otro no resulta visible en la ventana de navegación. En la parte inferior se encuentra el “indicador de procesos”, que es un campo destinado a brindar información al usuario de las acciones que se están llevando a cabo en cada instante, así como la visualización de las respuestas del microcontrolador y los mensajes generados por el programa..
(53) CAPÍTULO 3. DESARROLLO DE APLICACIONES EN LABVIEW.. 42. El campo “Memoria del dispositivo” permite la visualización de la memoria flash del microcontrolador. Los datos que en él se muestran están en formato hexadecimal, y son la respuesta del PIC al comando de lectura de memoria. A través de él se puede realizar una comprobación visual de los datos y hacer comparación con el contenido del fichero INTEL. 3.5 Transmisión del fichero de formato INTEL. Intel Hexadecimal Format (Formato Intel Hexadecimal), es un estándar para guardar los programas de idioma de máquina en un. formato desplegable o. imprimible. Un archivo INTEL (.hex) es una serie de líneas o “archivos de grabación” que contiene los campos siguientes: Campo. Bytes. Descripción. Marca de Registro. 1. ": " indica comienzo del registro.. Longitud de Registro. 1. número de bytes de datos en el registro.(en hexadecimal). Dirección de carga. 2. dirección de arranque para los bytes de los datos.. Tipo de registro Bytes de datos Suma de Comprobación. 1 0-16 1. 00=datos; 01=fin registro. datos. suma de todos los bytes en el registro +checksum=0..
(54) CAPÍTULO 3. DESARROLLO DE APLICACIONES EN LABVIEW.. 43. Figura 3.8. Campos del fichero de formato INTEL. El campo Marca de Registro de 1 byte indica el comienzo de la transmisión del registro, dentro de este byte se almacena el código ASCII del carácter ‘:’(3AH). En el byte de Longitud de Registro se guarda el número de bytes de datos que serán transmitidos en el registro (en hexadecimal). Los bytes de Dirección de Carga contienen la dirección de arranque (en memoria de programa) para los bytes de los datos. El byte Tipo de Registro indica el contenido de lo que será transmitido a continuación, 00=datos; 01=fin registro. El próximo campo que puede ser de 0 a 16 bytes contiene los datos del programa. El byte Suma de Comprobación se calcula de manera que la suma de todos los bytes del campo más el propio checksum sea 0x00 (00 en hexadecimal). Sólo se considera el byte menos significativo de la suma. Para calcularlo; como primer paso se suman todos los bytes del registro con excepción del carácter correspondiente a los dos puntos, se trunca el resultado y se deja el byte menos significativo. A este número se le halla en complemento A2, para ello, se deben cambiar los 1 por 0 y viceversa (complemento A1) y después sumar 1. El número resultante es justamente el checksum del registro. (Roca, 2007 ).
(55) CAPÍTULO 3. DESARROLLO DE APLICACIONES EN LABVIEW.. 44. 3.5.1 Lectura. La lectura del fichero INTEL se realiza con la ayuda del instrumento virtual “Read Characters from File” de la paleta de funciones de LabVIEW. A través de este VI se puede obtener el código hexadecimal contenido en el fichero. “Read Characters from File” tiene una entrada con nombre “file path” a la que se le hace llegar la dirección del fichero a leer, y una salida llamada “characters string” que devuelve el contenido del fichero. Los datos obtenidos de la lectura pueden presentarse al usuario a través de un indicador de tipo “string” en forma hexadecimal 3.5.2 Interpretación y segmentación. Después de obtener el código del fichero hexadecimal, es necesario segmentarlo por líneas de códigos para efectuar la transmisión. Es necesario contar con un mecanismo capaz de interpretar cada línea y extraer la información referida a la longitud del campo de datos. Con esa información a la mano se puede determinar el tamaño de la línea de código en su totalidad, ya que las longitudes del resto de los campos son fijas. La lectura del campo de “longitud del Registro” se realiza mediante la combinación de varios instrumentos virtuales: “string subset”: tiene tres entradas, a la primera se le hace llegar la cadena de caracteres provenientes del archivo leído, a la segunda la cantidad de caracteres que se quiere extraer de dicha cadena, y la tercera es usada para indicar el “offset”, o corrimiento a partir del inicio de la cadena. Sabiendo entonces que el campo “longitud de registro” comprende el segundo byte de cada línea de código, puede usarse este VI para extraerlo. El resultado de la operación se obtiene en ASCII por la salida “substrin”. “Hexadecimal String to number”: Este VI se encarga de la conversión del código ASCII en valor numérico. Permite convertir los datos provenientes del VI “string subset” y obtener el tamaño del campo de datos de la línea de código..
(56) CAPÍTULO 3. DESARROLLO DE APLICACIONES EN LABVIEW.. 45. A continuación se muestra el mecanismo diseñado para tomar la primera línea de código del fichero INTEL.. Figura 3.9. Mecanismo de segmentación del fichero de formato INTEL. Como se muestra en la figura 3.9, los datos provenientes de la lectura del fichero hexadecimal entran al VI “String Subset”, el cual con un “offset” igual a uno y un largo de dos (un byte corresponde a dos nibbles) se extrae el campo de “Longitud de Registro”. Posteriormente el VI “Hexadecimal String to number” se encarga de obtener el valor numérico de dicho campo. A continuación se multiplica este valor por dos y se le suma once, la primera operación para obtener el número de nibbles del campo de datos, y la segunda para sumar la cantidad de nibbles del resto de los campos de la línea de código. El valor resultante de este proceso corresponde al tamaño de la línea de código, el cual es usado como entrada (“Largo”) en el VI “string Subset” de la etapa final, que conjuntamente con un “offset” igual a cero, brinda a la salida solo la primera línea de código de todo el fichero leído, en su formato original. La segmentación sucesiva de cada línea de código se obtiene añadiendo solo algunas modificaciones al diagrama anterior. En primer lugar todo el mecanismo debe estar contenido dentro de una estructura cíclica que permita realizar iteraciones e ir extrayendo cada línea del fichero. En cada iteración debe establecerse a la ultima etapa un “offset” equivalente a la suma de las longitudes de las líneas anteriores, para tomar los datos a partir de la línea correspondiente, y a la primera etapa este valor aumentado en uno, para situarse en el inicio del campo “Longitud de Registro”..
(57) CAPÍTULO 3. DESARROLLO DE APLICACIONES EN LABVIEW.. 46. El ciclo debe repetirse hasta que el valor del campo de “Longitud de Registro” sea de valor cero, lo cual indica que la línea de código que se esta procesando es la final del fichero. Finalmente, para completar el acondicionamiento de los datos para la transmisión, a cada línea de código extraída se le añade una cabecera que equivale al comando de escritura en memoria del microcontrolador. 3.5.3 Transmisión. La transmisión se realiza secuencialmente. Cada línea de código, después de ser extraída y habérsele añadido la cabecera, es puesta en el buffer de transmisión y enviada al PIC para grabarla en la memoria flash de este último. Si la operación resulta exitosa, el microcontrolador enviará una respuesta confirmándolo, lo que indicará que se puede enviar el siguiente segmento. Si por el contrario, resulta algún error en la transmisión, detectado por el PIC al leer la suma de chequeo, este responderá con un comando de error que le indicará que la trama debe ser retransmitida. El proceso completo queda representado en la figura 3.10..
(58) CAPÍTULO 3. DESARROLLO DE APLICACIONES EN LABVIEW.. 47. Figura 3.10. Proceso de lectura, interpretación, segmentación y transmisión del fichero INTEL..
(59) CONCLUSIONES. 48. CONCLUSIONES. 1. Se realizó una descripción de la norma RS-232 y del módulo de comunicación serie (USART) de los microcontroladores PICs.. 2. Se realizó un estudio de la herramienta de programación de alto nivel LabVIEW, enfocado a la comunicación serie con subsistemas hechos con PICs .. 3. Se obtuvo el núcleo básico de la programación de la comunicación serie en LabVIEW.. 4. Se presentaron ejemplos de aplicaciones para el control de dispositivos a través del puerto serie de la PC.. 5. Se programó el software para el control del Cartel Pasa Mensajes y el Software para el control del Bootloader..
(60) RECOMENDACIONES. 49. RECOMENDACIONES. 1. Continuar el estudio de la herramienta de programación LabVIEW para el control de dispositivos usando el puerto USB.. 2. Estudiar las facilidades de LabVIEW para el control de sistemas a través de redes TCP/IP..
(61) REFERENCIAS BIBLIOGRÁFICAS. 50. REFERENCIAS BIBLIOGRÁFICAS. CASTRO, S. (2007) "Aplicaciones Avanzadas con microcontroladores PIC". ESPARZA,. A.. (2006). "Tutorial. de. LabVIEW".. Disponible. en:. http://148.202.148.5/cursos/17721/ModuloIII/tutorialLabVIEW.pdf [consultado 8 de mayo 2008] FERNÁNDEZ,. C.. (2006). "Librerias. para. LabVIEW".Disponible. en:. http://www.usuarios.lycos.es/charlitospage/DA08%20for%20LabVIEW.pdf [consultado 22 de mayo 2008] FINK, S. (1997) "Software Implementation of Asynchronous Serial I/O". Disponible en: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId= 1469 [consultado 16 de abril 2008] FOSLER, R. (2002) "A Flash Bootloader for PIC16 and PIC18 Devices". Disponible en: http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId= 1469 GARBUTT, M. (2003a) "Asynchronous Communications with the PICmicro® USART".. Disponible. en:. http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId= 1469 [consultado 16 de abril 2008] GRAULLERA, D. (2006) "Configuracion de una conexión RS-232". Disponible en: www.informatica.uv.es/it3guia/FT/prac5-232.pdf.
Figure
+7
Documento similar