Download interface de transferencia de datos a través del bus usb

Document related concepts

Sysfs wikipedia , lookup

MTP wikipedia , lookup

Comunicación entre procesos wikipedia , lookup

Advanced Configuration and Power Interface wikipedia , lookup

Live USB wikipedia , lookup

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