Download interface de transferencia de datos a través del bus usb
Document related concepts
Transcript
AADECA 2006 – XXº Congreso Argentino de Control Automático – Sección Aplicon 28 al 30 de agosto de 2006 – Buenos Aires, Argentina. INTERFACE DE TRANSFERENCIA DE DATOS A TRAVÉS DEL BUS USB Ing.Pedro Ignacio Martos, [email protected] Facultad de Ingeniería, Universidad de Buenos Aires Resumen: En aplicaciones de control que requieren que el procesamiento de la información se realice en una computadora personal (PC) la velocidad de transferencia de datos desde y hacia la computadora puede ser un factor limitante. Para superar esta limitacion se propone utilizar el bus USB como interface. En este articulo se muestra un ejemplo aplicado al control de un brazo robot y como el cambio a una interface USB permite mejorar la tasa de transferencia de datos entre la computadora y el sistema de control del brazo robot. Palabras clave: USB, universal serial bus, transferencia serie. 1. Descripción del sistema El sistema “Brazo Robot” consiste en un manipulador robótico de seis grados de libertad controlado por una PC para ser utilizado en aplicaciones didácticas y como ayuda para personas con discapacidades motrices. Esquemáticamente puede representarse de la siguiente manera: Alimentacion de Actuadores Computadora (PC) Comunicación de datos Interface de Control y Potencia Posicion de articulaciones Manipulador Robótico (sensores y actuadores) Manipulador robótico: El manipulador robótico consiste en seis articulaciones movidas por motores de corriente continua con encoders de posición en el eje del cada motor. Estos motores son alimentados desde la Interface de Control y Potencia para regular la alimentación del motor y asi controlar la posición final del eje del mismo. Para ello la interface de control y potencia recibe información de la posición de las articulaciones en forma de pulsos generados por los encoders conectados al eje de cada motor. Interface de control y potencia: La interface de control y potencia consiste en dos elementos: Una fuente de alimentación de corriente continua de potencia utilizada para la alimentación de los motores del manipulador. Una interface de control realizada con circuitos integrados LM629 (controladores PID de motores) y L297 (puentes H para control de motores de corriente continua) 1 AADECA 2006 – XXº Congreso Argentino de Control Automático – Sección Aplicon 28 al 30 de agosto de 2006 – Buenos Aires, Argentina. Esta interface se conectaba directamente a la computadora y recibía las constantes necesarias para realizar un control PID de la posición final del eje del motor. Computadora: La función de la computadora es analizar la información de la posicion de las articulaciones y generar las constantes de control adecuadas a la trayectoria que se desea que realice el manipulador. Para ello le envía a la interface de control las constantes PID para el motor de cada articulación y la posición final deseada de dicha articulación. Los controladores LM629 utilizan estas constantes para generar la curva de velocidad del eje del motor que permite alcanzar la posición final establecida. 2. Descripción de la actual interface de comunicación de datos La Interface de Comunicación de Datos estaba centrada en el circuito integrado i8255 PPI (Parallel Port Interface) de Intel, el cual proporciona 24 lineas de entrada/salida y su interface a la PC se realiza a través del bus ISA. Las 24 lineas de entrada/salida del C.I. i8255 se utilizaban para generar las señales de control y datos que utilizan los circuitos integrados LM629 de la Interface de Control y Potencia. Esta interface poseía las siguientes limitaciones: Al estar basada en el bus ISA, era necesaria su actualización frente a la ausencia de este bus como puerto de expansión en las computadoras actuales. La interface se colocaba dentro del gabinete de la PC, por lo que desde la PC “salían” 24 señales con información de control y datos. Esto implicaba el uso de cables multihilo de 24 hilos de más de 2 metros de largo, con gran riesgo de rotura del mismo. La evolución de la familia de sistemas operativos Microsoft Windows lleva a que las aplicaciones no puedan acceder directamente al hardware, sino solo a través del sistema operativo y mediante programas controladores específicos, por lo que la interface actual no seria accesible en forma directa utilizando las nuevas versiones de los sistemas operativos Microsoft Windows, limitandose al uso de Windows ME. En base a estas limitaciones, se planteó rediseñar la interface de comunicación de tal manera que cumpliera con los siguientes objetivos: La interface deberia poder colocarse fuera de la PC, preferentemente integrada a la interface de control y potencia. La transferencia de datos entre la interface y la computadora debería ser a través de una conexión serie. La interface de comunicación debería comunicarse con la PC a través de un bus estándar de las PC actuales. Las aplicaciones deberían poder acceder a la interface de una manera simple y directa, utilizando llamadas a funciones del sistema operativo y/o programas controladores que formen parte del mismo. 2 AADECA 2006 – XXº Congreso Argentino de Control Automático – Sección Aplicon 28 al 30 de agosto de 2006 – Buenos Aires, Argentina. 3. Arquitectura de hardware de la nueva interface de comunicación de datos La interface usb implementada consistió en el agregado de un circuito integrado USBN9603 que implementa el protocolo USB y tiene una interface compatible con microcontroladores de 8 bits para su gestión. Asimismo se agregó un microcontrolador 8051 que gestiona la información recibida desde la PC a través de la interface USB y transfiere esa información a los controladores LM629 de la Interface de Control y Potencia, de acuerdo al siguiente diagrama: Bus USB Interface USB PC Bus de datos Bus de direcciones Bus de control Microcontrolador Bus de comunicación Interface de Control y Pontencia Interface USB implementada PC: computadora que realiza el cálculo de las constantes necesarias para el control PID de los motores del brazo robót. USB: Bus serial standard de la PC mediante el cual se realiza la comunicación entre la interface USB implementada y la PC. Interface USB: Dispositivo que permite la comunicación entre el microcontrolador y la PC a través del bus USB. La PC “vé” a la interface USB como un dispositivo USB y el microcontrolador la “vé” como una memoria RAM. Bus de datos: La transferencia de información entre la interface USB y el microcontrolador se realiza sobre este bus. Bus de direcciones: El microcontrolador utiliza este bus para seleccionar los diferentes registros de la interface USB. Bus de control: Mediante este bus se realiza la solicitud de transferencias de datos entre la interface USB y el microcontrolador. Bus de comunicación: Bus por el que se realizan las transferencias de información entre la interface de control y potencia y la interface USB. Interface de control y potencia: Interface que realiza el control y accionamiento de los motores del brazo robot 4. Arquitectura de software de la nueva interface de comunicación de datos Al definirse una nueva interface, se hizo necesario desarrollar una nueva arquitectura de software del sistema, para que la aplicación que realiza el control del brazo robót se comunique con el hardware a través del bus USB. A fin de simplificar el desarrollo de software, se hizo que la interface usb implementada emulara un dispositivo HID (Human Interface Device), para el cual el sistema operativo Microsoft Windows provee controladores standard. 3 AADECA 2006 – XXº Congreso Argentino de Control Automático – Sección Aplicon 28 al 30 de agosto de 2006 – Buenos Aires, Argentina. De esta manera, la arquitectura del software implementado, junto con su relación con los componentes de hardware, tiene la siguiente estructura: Aplicación File Handler User Mode Kernel Mode HID Driver URBs USB Driver I/O Control Requests PCI Driver + HAL Configuración Registros de Hardware PCI Bus Manager Bus PCI USB Host Bus USB Interface USB Microcontrolador Firmware Componentes de Software a desarrollar Componentes de Software del sistema operativo Componentes de Hardware 4 AADECA 2006 – XXº Congreso Argentino de Control Automático – Sección Aplicon 28 al 30 de agosto de 2006 – Buenos Aires, Argentina. Aplicación: Es el componente de software que calcula las constantes PID de los motores de acuerdo a la posición, se debió modificar para trasmitir y recibir información a través del bus USB. File Handler: La aplicación se comunica con los controladores (drivers) del sistema operativo a través de una abstracción que consiste en considerar a todos los dispositivos de hardware como archivos, de los que se puede recibir o enviar bytes. El File Handler de un dispositivo es un identificador que el sistema operativo provee a las aplicaciones para comunicarse con ese dispositivo HID Driver: Es el controlador del sistema operativo encargado de gestionar los dispositivos HID. URBs: El controlador HID se comunica con el controlador USB a través de estructuras denominadas URB (USB Request Block), que contienen toda la información necesaria para la transferencia de datos desde y hacia el dispositivo USB. USB Driver: Es el controlador del sistema operativo encargado de gestionar los dispositivos USB I/O Control Requests: El controlador USB se comunica con el controlador del bus PCI y la HAL del sistema operativo a través de llamadas a funciones denominadas I/O Control Request. Estas funciones son las encargadas de recibir y devolver la información entre el hardware y el controlador del bus cuando este es distinto del bus de sistema (normalmente el bus PCI). PCI Driver + HAL: El controlador PCI es el controlador del sistema operativo encargado de gestionar el bus PCI, e indirectamente, todos los periféricos conectados a él. La HAL (Hardware Abstraction Layer) es el componente del sistema operativo que se encarga de transferir información desde y hacia el hardware. Su función es presentar una abstracción de todo el hardware sobre el que corre el sistema operativo, de tal manera de ocultar las diferentes implementaciones de hardware (circuitos integrados de diferentes fabricantes para una misma función, diferentes implementaciones de buses, etc.) Configuración de registros de hardware: La HAL configura a los componentes de hardware mediante la lectura y escritura de sus diferentes registros de configuración y control. PCI Bus Manager: Es el componente de hardware encargado de generar las diferentes señales eléctricas que componen la trasmisión de información en el bus PCI. Bus PCI: Es el bus principal del sistema. Todos los dispositivos de hardware estan directa o indirectamente conectados a este bus. USB Host: Es el componente de hardware que realiza un “puente“ para pasar la información desde el bus PCI al bus USB. Esta conectado al bus PCI y se encarga de generar las señales eléctricas para trasmitir información a través del bus USB Bus USB: Es el bus al que esta conectada la interface USB. 5 AADECA 2006 – XXº Congreso Argentino de Control Automático – Sección Aplicon 28 al 30 de agosto de 2006 – Buenos Aires, Argentina. Interface USB: Es la interface de comunicación entre la PC y la interface de control y potencia del brazo robót Microcontrolador: Es el componente de hardware que comanda la interface USB y la gestiona de tal manera que para la PC y su sistema operativo se trata de un dispositivo HID. Firmware: Es el componente de software de la interface USB. Es responsable de convertir la información proveniente de la interface de control y potencia del brazo robot en información que la PC interpreta como proveniente de un dispositivo HID y viceversa. 5. Implementacion Hardware La implementación de la interface USB se realizo con componentes standard, excepto el C.I. USBN9603, que solo se provee en encapsulado de montaje superficial. Como microcontrolador se utilizó el AT89S52, por poseer 8KB de memoria FlashRom y ser de facil obtención en el mercado local. En las siguientes imágenes se observa el diagrama de circuito. 6 AADECA 2006 – XXº Congreso Argentino de Control Automático – Sección Aplicon 28 al 30 de agosto de 2006 – Buenos Aires, Argentina. Sofware La implementación del firmware del microcontrolador corresponde al siguiente diagrama de estados: Encendido del dispositivo Inicialización Conexión al bus USB Identificación del dispositivo Recepción comando Dispositivo listo para procesar comandos Dispositivo reconocido y configurado por el bus USB Identificación y validación del comando Comando de lectura Comando Invalido Comando de escritura Lectura de datos Bus Comunicacio nes Trasmisión comando no valido Bus USB Escritura de datos Bus Comunicacio nes Trasmisión de dato Bus USB Trasmisión Resultado operación Bus USB Los distintos bloques del diagrama representan los siguientes estados: • Encendido del dispositivo: Este estado inicial sucede cuando la interface USB es energizada a través de una alimentación externa de 12Vcc. • Inicialización: Luego del encendido, se procede a la inicialización de los registros internos del dispositivo, fijación de valores iniciales de variables globales, y se invoca a la rutina de inicialización de la interface USBN9603 • Conexión al bus USB: La rutina de inicialización de la interface USBN9603 configura la misma para la comunicación mediante el EndPoint 0 (EP0–Bidirectional, Control Transfers) para la gestión del dispositivo por parte de la PC y mediante dos EndPoints de los ocho disponibles en la interface para la transferencia de datos entre la interface USB y la PC (EP1-IN, Interrupt Transfer y EP1-OUT, Interrupt Transfer). Una vez hecho 7 AADECA 2006 – XXº Congreso Argentino de Control Automático – Sección Aplicon 28 al 30 de agosto de 2006 – Buenos Aires, Argentina. esto, configura al dispositivo para que se identifique en el bus USB. Este proceso se conoce como ‘Node Attach’ en la terminologia de la especificación USB • Identificación del dispositivo: La identificación por parte de la PC del nuevo dispositivo incorporado al bus USB (denominada ‘’device enumeration”) comprende la descripción del dispositivo, el tipo de transferencias que acepta, el tamaño máximo de datos por transferencia y la frecuencia de la misma. El dispositivo puede tener distintas combinaciones de estos datos, a fin de poder identificarse correctamente bajo distintas condiciones del bus. • Dispositivo reconocido y configurado por el bus USB: Si el bus usb puede cumplir con alguna de las combinaciones de requerimientos que le ofrece el dispositivo, le comunica cual de ellas le asigna y lo pasa al estado de configurado. • Dispositivo listo para procesar comandos: una vez configurado el dispositivo, este puede realizar transferencias de datos con las aplicaciones de la computadora a la que esta conectado, ya que hasta este momento solo interactuaba con el sistema operativo. • Recepción comando: en este estado se ha producido una transferencia de datos desde la computadora al dispositivo • Identificación y validación del comando: una vez recibidos los datos, el firmware verifica que sea un comando reconocido (de lectura, escritura o establecimiento de valores en el puerto paralelo disponible en la interface) • Comando de lectura: una vez validado el comando de lectura, el microcontrolador realiza una operación de lectura sobre el bus de comunicaciones • Lectura de datos Bus de Comunicaciones: para la lectura de datos en el bus de comunicaciones el microcontrolador sincroniza las señales correspondientes y accede a los registos de acuerdo a los requerimientos del comando de lectura • Trasmisión de datos Bus USB: una vez realizada la lectura sobre el bus de comunicaciones, el microcontrolador configura la interface USBN9603 para transferir el dato leido a través del bus USB y realiza la transferencia del mismo. • Comando invalido: si el comando recibido no es reconocido, el mismo es descartado y se le comunica a la computadora esta situación. • Trasmisión comando invalido Bus USB: una vez reconocido el comando invalido, el microcontrolador configura la interface USBN9603 para transferir esta información a través del bus USB y realiza la transferencia de la misma. • Comando de escritura: una vez validado el comando de escritura, el microcontrolador realiza una operación de escritura sobre el bus de comunicaciones • Escritura de datos Bus de Comunicaciones: para la escritura de datos en el bus de comunicaciones el microcontrolador sincroniza las señales correspondientes y accede a los registos de acuerdo a los requerimientos del comando de escritura • Trasmisión resultado de la operación Bus USB: una vez realizada la escritura sobre el bus de comunicaciones, el microcontrolador configura la interface USBN9603 para transferir el resultado de la operación a través del bus USB y realiza la transferencia del mismo. 8 AADECA 2006 – XXº Congreso Argentino de Control Automático – Sección Aplicon 28 al 30 de agosto de 2006 – Buenos Aires, Argentina. A su vez, la aplicación fue modificada para trabajar en dos capas, de acuerdo al siguiente esquema: SO FTW ARE CAPA DE APLICACIÓN Interface Aplicación Sistem a O perativo • Interface Sistem a Operativo Dispositivo CAPA DE INTERFACE Capa de aplicación: en esta capa se encuentra el software que realiza el calculo de las constantes para el movimiento de los motores y los entrega al sistema operativo para su trasmisión a través del bus USB a través de la interface aplicación-sistema operativo • Capa de interface: en esta capa se producen las transformaciones de la información a un formato standard a utilizar por parte del software de la capa de aplicación. Comprende los siguientes componentes: o Interface aplicación-sistema operativo: Esta interface consiste en que el sistema operativo le ofrezca a la aplicación una abstracción del dispositivo mediante la cual este es visto por la aplicación como un archivo, sobre el que se puede leer o escribir información. La abstracción presentada por el sistema operativo oculta toda la gestión del bus usb necesaria para la trasferencia de la información, ya que la misma es gestionada por el sistema operativo o Interface sistema operativo – Dispositivo: Esta interface se compende los distintos controladores de bus PCI y USB, junto con los controladores de dispositivo específicos que permiten el intercambio de información entre el dispositivo y el sistema operativo 6. Conclusiones: Luego de implementada la interface y comparada la misma con la anterior implementación se obtuvieron las siguientes conclusiones: El aumento de la tasa de transferencia de datos permitió realizar un control mas preciso del movimiento de los motores. Se pasó de una tasa de transferencia de 2.4Kbytes/Seg a 6.4Kbytes/Seg. La transferencia de datos utilizando el tipo de transferencia “por interrupción” (que garantiza tiempos de latencia máximos entre transferencias), resulto una mejora para esta aplicación, no obstante resulta recomendable utilizar el tipo de transferencia “en bloque” (bulk transfer), que permite mayores tasas de transferencia de datos en la medida en que el ancho de banda del bus este disponible. Con este tipo de transferencia es posible conseguir tasas de hasta 600 Kbytes/Seg, pero es necesario desarrollar el software de un controlador específico para la aplicación. 9 AADECA 2006 – XXº Congreso Argentino de Control Automático – Sección Aplicon 28 al 30 de agosto de 2006 – Buenos Aires, Argentina. 7. Mejoras posibles • Interface USB: actualmente se implementa la interface al bus USB con el dispositivo USBN9603, un diseño mas óptimo consiste en reemplazar la interface USBN9603 y el microcontrolador AT89S8252 por un microcontrolador de la familia 8051 que tenga integrada la interface USB, tal como el dispositivo AN2131 de Cypress. • Tensión de alimentación: actualmente el sistema funciona con una tensión nominal de alimentación de 5Vdc, un diseño mas optimo consiste en elegir componentes que trabajen a 3.3Vdc, de manera de poder utilizar la alimentación disponible en el propio bus USB y no requerir fuente externa, reduciendo componentes y por ende mejorando la confiabilidad del sistema. • Tecnología de componentes: actualmente solo la interface USB es un componente de montaje superficial, una optimización desde el punto de vista del área de circuito impreso ocupada sería utilizar todos los componentes del tipo de montaje superficial, a fin de reducir el área de circuito impreso o implementar mas funcionalidad en la misma área. • Confiabilidad del firmware: Se evaluó la confiabilidad del firmware del sistema a través de la complejidad McCabe (número ciclomático), obteniendose la contribución a la confiabilida de las distintas rutinas, según el siguiente gráfico: Contribución porcentual de cada función a la confiabilidad del firmware Contribución porcentual a la confiabilidad 20% 18.9% 18% 16% 14% 12% 10% 8% 6% 4% 2% 9.4% 9.4% 8.5% 7.5% 6.6% 6.6% 5.7% 4.7% 2.8% 2.8% 1.9% 1.9% 1.9% 1.9% 0.9% 0.9% 0.9% 0.9% 0.9% 0.9% 0.9% 0.9% 0.9% 0.9% G Rx et _ 0 st a U tus Se sb G nd_ _is et r de 8d sc ata Se rip tfe tor C atu lr f r Pr ea e oc tu es re ar C Tx om _0 an do Se Tx tc on Us _1 fig b_ ur alt at io n R x_ O 1 na k0 W Ma rit in e_ us b Le Es er cr ib B ir its e B t itc G lr et id Se le G tid et le r Se epo tr rt ep In or it_ t us b 0% Funciones Del gráfico se observa que las funciones ‘Rx_0’ ,‘GetStatus’ y ‘USB_Isr’ son las que mayor contribución hacen a la confiabilidad del firmware, por lo que para aumentar la confiabilidad del mismo seria conveniente descomponerlas en varias funciones, a fin de reducir su número ciclomático, y por ende lograndose un aumento de la confiabilidad del sistema a través de un aumento en la confiabilidad del software (firmware) 10