miércoles, julio 23, 2008

Paso 22: Envuelto para regalo

Nos aproximamos a la conclusión de algunas etapas del proyecto y, por ende, es menester ordenar las ideas, agrupar conceptos y rectificar esquemas incorrectos. De ésta forma, se definirán el sistema mecánico, como una de las tareas de mayor dificultad, y el desarrollo del software, principalmente la rutinas de ejecución del control.

Hasta hace unas semanas contábamos con una serie de funciones que trabajaban de manera individual, pero que resultaron útiles para verificar diversas aspectos como la comunicación serial, interfaz con la placa adquisidora, ejecución de los lazos de control, etc. Sin embargo, llegamos al estado en que todos estos bloques inconexos deben estar enlazados entre si para conformar el programa final y se facilite la tarea de puesta punto antes de la presentación.

Inicialmente, para los primeros ensayos, contábamos con algunas instrucciones que recibían parámetros de configuración y estado. A medida que el soft crecía en funcionalidad, se debían pasar un mayor número de parámetros o la repetida compilación del programa afectando un conjunto limitado de variables y macros. Ésta dificultad desencadenó la necesidad de emplear una herramienta más versátil y que nos permita armar una interfaz simple con el usuario para la configuración del sistema completo.

El camino nos llevó hasta ncurses y los resultados hasta el momento han sido satisfactorios. Hemos logrado interactuar de manera sencilla con la planta, modificando los parámetros deseados y ejecutando las rutinas principales del sistema.

Una captura de pantalla muestra el aspecto que tiene la interfaz de usuario:


Enfocados sobre los detalles del software, hemos establecido dos ámbitos sobre los que se fundaron todos los componentes empleados.

El primero, definido en el espacio del kernel y con el soporte de RTAI, se trata de un módulo cargable destinado a la ejecución de una tarea de tiempo real denominada Despachador, que Se implementó como una máquina de estados, encargada de establecer el modo de trabajo del sistema. La tarea recibe tres parámetros desde el proceso usuario por medio de un FIFO: Modo, Frecuencia y Comando; destinados al modo de trabajo, frecuencia del PWM y comando de operación, respectivamente.

En detalle podemos decir que la tarea de tiempo real realiza las siguientes operaciones:

- Bucle principal: selecciona la accion a realizar dependiendo del modo de trabajo seleccionado por el usuario.

* Modo Libre: Funciona a lazo abierto y sirve para determinar si comunicación y drivers funcionan correctamente.

* Modo Control: Es el modo principal donde queda definido el sistema de control.

* Modo Calibración: Realizar ajustes de cero y ganancia para posición lineal y angular de los sensores.

* Modo Espera: Queda a la espera de una nueva acción a ejecutar y depende del modo de trabajo seleccionado.

Además, cuenta con las siguientes rutinas:

- Comunicación: módulo que permite la comunicación half-duplex entre la PC y el uC, para todos los modos de trabajo.

- Actuación: Dependiente del motor y determina las referencias, ciclos de trabajo de los pwm y otros datos a determinar.

- Sensado: Destinado a la captura de los pulsos de los encoders e inclinómetro.



En segundo lugar, quedó definido en el espacio de usuario el proceso encargado de realizar la interfaz con el operador. Presenta un menu de configuracion, comandos y visualizacion de datos (posicion, angulo, velocidad, estado de la comunicación, etc). Inicialmente el usuario elige el modo de trabajo deseado (libre, controlador, calibrador), luego la frecuencia de los PWM de una lista de opciones que dispone el uC y finalmente, el menú de comandos. Éste último menú permite por un lado, mediante las teclas 4, 6 y 1 hacer avanzar, retroceder y deterner el puente, por el otro, muestra en pantalla la configuración de trabajo y los datos recibidos desde la planta.