jueves, mayo 10, 2007

Paso 13: Sobre el control, los controladores y lo controlado

Cuando empezamos éste proyecto habíamos dado por descartado el uso de PCs para realizar el control de la planta o sistema. Sin embargo, luego de haber analizado repetidas veces la arquitectura de control empleando microcontroladores, nos encontramos con severas limitaciones de cálculo, por lo que pensamos en otras variantes al esquema propuesto inicialmente.

En el comentario anterior (Paso 12), hicimos una reseña de los tres sistemas operativos de tiempo real que teníamos a disposición y cuál terminamos adoptando. A continuación, damos un breve repaso por los distintos temas que abarcamos hasta la fecha.

Tiempo Real
La búsqueda fue orientándonos a una herramienta de código abierto u open source, de tiempo real, con buena y accesible documentación, etc. Hasta que dimos con RTAI (Interface de Aplicación de Tiempo Real) y comenzamos a investigarlo y experimentar exhaustivamente, con algunos muy buenos resultados.

Dado que contamos con escasa (nula) experiencia con Linux, buscamos versiones booteables o LiveCDs que incluyan RTAI para evitar la recompilación del kernel y aprender comandos básicos de Linux evitando su instalación definitiva en la máquina.

Una de las mejores versiones que encontramos fue una distribución Knoppix 5.0 con RTAI 3.4 y kernel 2.6.17, que incluye la biblioteca Comedi y varios ejemplos de aplicación. Ésta se puede encontrar en PmWiki y en http://www-lar.deis.unibo.it/people/gpalli/files/rtai_knoppix.iso

Cuando cumplimos unas cuantas horas de vuelo, probando y errando, instalamos el sistema operativo y comenzamos el desarrollo del control, o los primeros esbozos.

Un esquema de la arquitectura de control se puede ver a continuación, donde una computadora realizará el control propiamente dicho, mientras la otra captura las imágenes de video y envía, por el puerto serial, la posición estimada de los objetos bajo la plataforma.


Fig. 1: Esquema de control en Tiempo Real con RTAI.

Placa Adquisidora
El control por sí mismo no tiene sentido si carece de comunicación con el exterior. Para ello es necesario la placa adquisidora, que se encarga de obtener la señal de los sensores y enviar órdenes a los actuadores, para que la acción tenga efecto.

En nuestro caso, nos conformamos con una placa adquisidora de origen nacional, marca microAXIAL, modelo ADQ12-B.

Entre sus características, podemos contar con:

- Conversor de 12 bits.
- 16 canales desbalanceados y 8 diferenciales, 10 useg de conversión.
- 8 salidas y 5 entradas digitales.
- Contador de 16 bits y Pacer de 32 bits.
- 2 entradas de interrupciones enmascarables.

Lamentablemente, los recursos disponibles impiden tener un driver para ésta placa que sea compatible con RTAI, por lo que habrá que diseñar uno a partir de la biblioteca ofrecida por Comedi (Linux Control and Measurement Device Interface).

Aun así y a fin de evitar semejante embrollo, desarrollamos todos los ejemplos iniciales con la dirección de memoria del puerto a la que apunta la placa, a través de las funciones outb() e inb().


Programación
La mejor forma que encontramos para aproximarnos a la estrategia de control final, fue desmenuzando las diferentes tareas a ejecutar por el controlador en:

Salidas Discretas: PWM y pulsos.
Entradas Analógicas: Posición angular.
Entradas Discretas: Encoders.
Control.
Comunicación.

Hasta el momento, los resultados obtenidos con RTAI nos permiten tener, cómodamente, un período de interrupciones de 100 useg (10 KHz), aunque puede ser reducido aún más.

Otras pruebas en las que funcionaron tres tareas de tiempo real en un mismo módulo, arrojaron un tiempo mínimo de interrupciones de 40 useg (25 Khz).

Ahora podemos enfocarnos en el diseño definitivo del control mientras terminamos de construir los carros que van montados sobre la estructura y que conforman la planta, o el sistema, a controlar.

martes, mayo 08, 2007

Paso 12: Algunos cambios y comentarios previos

Comprendemos que la página ha tenido escasa actualización desde marzo pero el proyecto en los últimos dos meses ha ido consumiendo cada vez más tiempo hasta abarcar el 90% de nuestro día aprovechable.

Sin embargo no son pocas las cosas que han sucedido, y ello tiene que ver con cambios sustanciales en el desarrollo del trabajo y las ideas que tenemos al respecto.

En primer lugar, desde principios de marzo sumamos la fuerza de un tercer integrante: Fabián Andrés Dipane.

Una sesión con el equipo completo.

Con él vamos a tener un importante aporte en el diseño y construcción de la mecánica del sistema, como así también en la electronica y programación que falta terminar. Próximamente, Fabián irá agregando comentarios a la página explicando detalles sobre el proyecto.

En segundo lugar, nuestra idea de emplear microcontroladores de 8 bits fue reemplazada por el uso de un Sistema Operativo en Tiempo Real (RTOS, en inglés) junto a una placa adquisidora de marca nacional. Las principales implicaciones de éste cambio tuvieron que ver con el estudio y familiarización con el nuevo sistema operativo, además de un comprensión intensiva y extensiva de los paquetes de tiempo real existentes.

De ésta forma, buena parte de febrero se invirtió en la búsqueda y selección del sistema operativo en cuestión. De allí surgieron 3 variantes posibles:

- QNX
- RTLinux
- RTAI

Finalmente, encontramos en RTAI la opción más sólida al poder acceder a una herramienta en constante desarrollo y, sobre todo, GRATUITA. Además, cuenta con RTAI-Lab, un paquete para desarrollar controles con diagramas de bloque sin tener que salir del ambiente Linux.

Con todo ésto en mente, los dos meses que siguieron a febrero fueron destinados casi por completo a la finalización de la estructura de la planta y al estudio de RTAI como plataforma de programación.