Comunicacion Usb Alta Velocidad Laview

5
Congreso Nacional de Ingeniería Electrónica del Golfo CONAGOLFO 2009 Instituto Tecnológico de Orizaba ISBN: 978-607-00-1861-9 -1 / 5- ResumenEn este artículo se presenta una metodología para realizar la comunicación entre LabVIEW y un microcontrolador PIC18F4550 de Microchip. Con las herramientas presentadas en este trabajo se pueden adquirir y enviar datos masivos de información hasta una velocidad de 12Mb/s. La comunicación se realiza mediante la herramienta Call Library Fuction de LabVIEW, la cual hace uso de la librería mpusbapi que nos proporciona Microchip. El puente que establece la comunicación entre el microcontrolador y la PC se realiza mediante las librerías usb del software CCS C Compiler y el driver mchpusb para Microsoft Windows XP. Por último se realizan pruebas de adquisición y envió de datos. Palabras clave: Call Library Function, Mpusbapi.dll, USB, Bulk Transfers USB, LabVIEW-USB. I. INTRODUCCIÓN Muchas compañías en la industria de la manufactura usan computadoras personales en sus plantas y laboratorios para probar sus productos, tomar mediciones y automatizar procesos. Al crear sistemas basados en computador, los usuarios están aprovechando las ventajas de las tecnologías de la computación más recientes tales como tarjetas de adquisición de datos. La técnica de instrumentos virtuales mediante tarjetas de adquisición de datos, es cada vez más utilizada en la industria. Esta metodología consiste en realizar paneles de control en computador, tradicionalmente hechas por software que utiliza instrumentos virtuales como LabVIEW. A través de estos instrumentos virtuales (Vis) se pueden supervisar en tiempo real las variables del proceso (Temperatura, Humedad, Presión, entre otros.) y controlar actuadores (válvulas, termoresistencias, entre otros). Estos VIs brindan al usuario una gran flexibilidad de operación debido a que no requieren de ninguna circuitería para realizar complicados procedimientos de control, simulación y supervisión. Actualmente la obtención de datos en LabVIEW, se realiza mediante tarjetas de adquisición (TAD) que National Instrument desarrolla. Estas TAD generalmente son muy costosas y de uso limitado, esto es, que no puede utilizarse en ningún otro software. El costo es la principal limitante que hace difícil adquirirlas por estudiantes, universidades y centros de investigación. Considerando las problemáticas planteadas anteriormente, en este artículo se presenta una metodología para establecer la comunicación vía USB entre LabVIEW y un microcontrolador. El artículo está dividido de la siguiente forma: en la sección II se presenta el desarrollo de la comunicación entre la PC y el microcontrolador. En la sección III contiene la vía y tipo de comunicación USB y en la IV se presenta el funcionamiento de librería mpusbapi 1 de microchip y la comunicación con LabVIEW, Por último, en la sección V se hace la validación de la comunicación USB, censando datos de temperatura y activando leds, que simbolizan unas electroválvulas. II. COMUNICACIÓN ENTRE LA PC Y EL DISPOSITIVO USB Existen tres maneras de establecer la comunicación por USB (Bus Universal en Serie): 1. Bulk Transfers: transferencia bidireccional masiva de información. 2. CDC: clase de dispositivos de comunicación (emulación del protocolo RS232). 3. HID: dispositivos de interfaz humana (plug-and- play). En este trabajo se opto por la opción Bulk Transfers, debido a que permite la transmisión de datos de alta velocidad (Full Speed) de 12Mb/s. Las transferencias Bulk están diseñadas para soportar aquellos dispositivos que precisan enviar o recibir grandes cantidades de datos. Interconexión Fig. 1. Etapas de comunicación entre la PC y el Dispositivo USB. 1 Mpusbapi es una librería creada por Microchip para utilizar el microcontrolador. Comunicación USB de Alta Velocidad entre LABVIEW y un Microcontrolador para la Adquisición de Datos en Tiempo Real J. A. Pérez-Cueto*, J.E. Velázquez-López, F.R López-Estrada, R. Moreno Rincón, N. Juárez-Rodríguez y H. Hernández-de-León Departamento de ingeniería Electrónica, Instituto Tecnológico De Tuxtla Gutiérrez, México, CP 29050 Teléfono: (+52) (961 6150380) Ext. 311. *E-mail: [email protected] PC Dispositivo USB LabVIEW Host USB Función Librería Mpusbapi Controlador del dispositivo USB TAD Microcontrolador Firmware

description

Comunicacion Usb Alta Velocidad Laview

Transcript of Comunicacion Usb Alta Velocidad Laview

  • Congreso Nacional de Ingeniera Electrnica del Golfo CONAGOLFO 2009Instituto Tecnolgico de Orizaba

    ISBN: 978-607-00-1861-9 -1 / 5-

    ResumenEn este artculo se presenta una metodologapara realizar la comunicacin entre LabVIEW y unmicrocontrolador PIC18F4550 de Microchip. Con lasherramientas presentadas en este trabajo se pueden adquirir yenviar datos masivos de informacin hasta una velocidad de12Mb/s. La comunicacin se realiza mediante la herramientaCall Library Fuction de LabVIEW, la cual hace uso de lalibrera mpusbapi que nos proporciona Microchip. El puenteque establece la comunicacin entre el microcontrolador y laPC se realiza mediante las libreras usb del software CCS CCompiler y el driver mchpusb para Microsoft Windows XP.Por ltimo se realizan pruebas de adquisicin y envi de datos.

    Palabras clave: Call Library Function, Mpusbapi.dll, USB,Bulk Transfers USB, LabVIEW-USB.

    I. INTRODUCCIN

    Muchas compaas en la industria de la manufacturausan computadoras personales en sus plantas y laboratoriospara probar sus productos, tomar mediciones y automatizarprocesos. Al crear sistemas basados en computador, losusuarios estn aprovechando las ventajas de las tecnologasde la computacin ms recientes tales como tarjetas deadquisicin de datos.

    La tcnica de instrumentos virtuales mediante tarjetasde adquisicin de datos, es cada vez ms utilizada en laindustria. Esta metodologa consiste en realizar paneles decontrol en computador, tradicionalmente hechas porsoftware que utiliza instrumentos virtuales como LabVIEW.A travs de estos instrumentos virtuales (Vis) se puedensupervisar en tiempo real las variables del proceso(Temperatura, Humedad, Presin, entre otros.) y controlaractuadores (vlvulas, termoresistencias, entre otros). EstosVIs brindan al usuario una gran flexibilidad de operacindebido a que no requieren de ninguna circuitera pararealizar complicados procedimientos de control, simulaciny supervisin.

    Actualmente la obtencin de datos en LabVIEW, serealiza mediante tarjetas de adquisicin (TAD) que NationalInstrument desarrolla. Estas TAD generalmente son muycostosas y de uso limitado, esto es, que no puede utilizarseen ningn otro software. El costo es la principal limitanteque hace difcil adquirirlas por estudiantes, universidades ycentros de investigacin.

    Considerando las problemticas planteadasanteriormente, en este artculo se presenta una metodologapara establecer la comunicacin va USB entre LabVIEW yun microcontrolador. El artculo est dividido de lasiguiente forma: en la seccin II se presenta el desarrollo dela comunicacin entre la PC y el microcontrolador. En laseccin III contiene la va y tipo de comunicacin USB y enla IV se presenta el funcionamiento de librera mpusbapi1 demicrochip y la comunicacin con LabVIEW, Por ltimo, enla seccin V se hace la validacin de la comunicacin USB,censando datos de temperatura y activando leds, quesimbolizan unas electrovlvulas.

    II. COMUNICACIN ENTRE LA PC Y EL DISPOSITIVO USB

    Existen tres maneras de establecer la comunicacin porUSB (Bus Universal en Serie):

    1. Bulk Transfers: transferencia bidireccional masivade informacin.

    2. CDC: clase de dispositivos de comunicacin(emulacin del protocolo RS232).

    3. HID: dispositivos de interfaz humana (plug-and-play).

    En este trabajo se opto por la opcin Bulk Transfers,debido a que permite la transmisin de datos de altavelocidad (Full Speed) de 12Mb/s. Las transferencias Bulkestn diseadas para soportar aquellos dispositivos queprecisan enviar o recibir grandes cantidades de datos.

    Interconexin

    Fig. 1. Etapas de comunicacin entre la PC y el Dispositivo USB.

    1 Mpusbapi es una librera creada por Microchip para utilizar elmicrocontrolador.

    Comunicacin USB de Alta Velocidad entre LABVIEW y unMicrocontrolador para la Adquisicin de Datos en Tiempo Real

    J. A. Prez-Cueto*, J.E. Velzquez-Lpez, F.R Lpez-Estrada, R. Moreno Rincn, N. Jurez-Rodrguez y H.Hernndez-de-Len

    Departamento de ingeniera Electrnica, Instituto Tecnolgico De Tuxtla Gutirrez, Mxico, CP 29050Telfono: (+52) (961 6150380) Ext. 311. *E-mail: [email protected]

    PC Dispositivo USBTarje

    LabVIEW

    Host USB

    Funcin

    Librera Mpusbapi

    Controlador deldispositivo USB

    TAD

    Microcontrolador

    Firmware

  • CONAGOLFO 2009

    -2 / 5-

    En el diagrama de la Figura. 1 se ilustra el flujo de datosUSB a partir del software LabVIEW que manipula aldispositivo USB a travs de la librera mpusbapi. La librerarealiza la transmisin de datos a la direccin del dispositivoque el host USB configuro al usar el driver. El driverestablece el puente entre la PC y el microcontrolador. Dentrodel microcontrolador se ejecuta el firmware el cual secomunica con elementos de la TAD, que realizan algunasfunciones tiles para el usuario o lo que se desea controlar.

    Una descripcin formal de los principales procesos oelementos que realizan la comunicacin entre el dispositivoUSB y la PC se enumeran a continuacin.

    A. InterconexinEl dispositivo USB dispone de 2 tipos de conectores (A

    y B) como se observa en la figura 2, que pueden ser a su vezmacho o hembra [2].

    A BFig. 2. Conectores USB

    De esta forma el tpico cable USB sera el modeloUS09. La velocidad soportada por estos cables es de 12Mbps, hasta 480Mbps en el caso de los cables para USB2.0. El cable est compuesto por solo cuatro cables, Vbus,D+, D- y GND (Ver Tabla1). La informacin y los datos semueven por los cables D+ y D-.

    TABLA 1.Pines de conexin USB

    A travs de esos cables se genera un tipo de sealdiferencial. La transferencia de informacin lo realiza demanera bidireccional, pero no al mismo tiempo. En la mismaseal diferencial entre D+ y D- se enva y se recibe lastramas de datos. Dentro de esta seal se observa una sealSync, PID y Opcional, estas tres forman el paquete de tramadonde va incluida la informacin que se desea trasmitir (Ver

    Fig. 3).

    Fig. 3. Composicin de un paquete de informacin

    La seal Sync es utilizada por receptor para sincronizarsecon el host. El PID es un paquete identificador, que definirde cmo los bytes de informacin debe ser interpretado otratados. Y por ultimo esta la opcional donde contiene losdatos enviados y recibidos, que va desde 1 byte hasta 124bytes.

    B. Microcontrolador PICPara establecer la interfaz de comunicacin USB se

    selecciono el microcontrolador PIC18F4550. Estedispositivo soporta la comunicacin va USB, es decir,incluyen un controlador USB interno y cuenta con pines paraconectarse a la PC sin la necesidad de pull-ups o circuiteraexterna [5]. En la Figura. 4 se observa la estructura internadel controlador de perifrico USB.

    Fig. 4. Caracterstica del PIC18F4550

    El firmware 2 que se implemento en el PIC18F4550para establecer la comunicacin USB con la PC, se realizo atravs de las siguientes instrucciones de programacin.

    No

    Si

    Si

    2Firmware: instrucciones de programa que establece la lgica de bajonivel para el control de circuitos electrnicos.

    Pin Nombre Color de cable1 +5.0V Rojo2 Data- Blanco3 Data+ Verde4 Tierra Negro

    Inicio

    Inicializar el USB

    Habilitar el Perifrico USB

    Espera que sea configurado por la PC

    DatosRecibido?

    Almacenamos el dato recibido

    Toma de decisiones del dato recibido

    Control y Adquisicin de datos

    Trasmisin de datos a la PC

    Fin

    Conexin conWindows Xp?

    1 2 3 412

    3 4

    -c

    c

  • CONAGOLFO 2009

    -3 / 5-

    No

    Fig.5. Diagrama de flujo del firmwareEl firmware hace uso de las libreras usb de CCS C

    Compiler, para configurar el dispositivo y establecer lacomunicacin entre la PC.

    Para que el host USB rena la informacin necesaria eidentifique al dispositivo y lo configure, el firmware debecontener descriptores. Los descriptores contieneninformacin bsica del dispositivo como el nmero de serie,la clase de dispositivo, el protocolo soportado, la capacidadde transmisin, las funciones del dispositivo, entre otros.Con el propsito de que el sistema identifique al dispositivoy encuentre al driver que debe utilizar.

    C. Driver del dispositivoCuando el dispositivo se conecta por primera vez a la

    PC, el sistema pedir el controlador (driver) correspondiente,en este caso el driver mchpusb creado por Microchip. Paraque el dispositivo sea reconocido por el sistema, este driverdebe contener los mismos descriptores que el firmware.

    III.VIA DE COMUNICACIN Y TIPO DE TRASFERENCIAS

    La interfaz de tipo USB 2.0 define las vas decomunicacin entre las aplicaciones que se ejecutan en elhost (clientes) y los distintos endpoint3 en los dispositivosUSB (servidores), y las denomina Pipes4. Cuando undispositivo USB se conecta a un sistema, y el sistema loreconoce y lo configura, el dispositivo queda organizadocomo un cierto conjunto de endpoints. El sistema establecetodas las vas de comunicacin (pipes) necesaria entre elsistema y cada uno de los endpoint disponible en dichaconfiguracin. El sistema elige una cierta configuracin enfuncin de la funcionalidad particular que se precise deldispositivo.Existen 4 tipos de endpoints (Bulk, Control, Interrupcion eIsocrono) y 2 tipos de pipe (Conrol o Mensaje y Stream), delas cuales se utiliza la Pipe Stream y Endpoint Bulk. Acontinuacin se describe cada una de ellas.

    A. Pipe StreamLa Pipe Stream es una va de comunicacin

    unidireccional entre el host y el endpoint de los tipos Bulk,Interrupcin o Iscrono. Si un dispositivo necesita realizartransferencias bidireccionales de un tipo de endpointconcreto el sistema debe establecer dos pipes, una de saliday una pipe de entrada. A travs de estas pipes, el sistemapuede leer del dispositivo toda la informacin descriptivanecesaria para identificar el tipo de dispositivo, posiblesconfiguraciones, protocolo que soporta, nmero y tipos deenpoints que soporta en cada posible configuracin, etc.

    3 Endpoint: Buffer (bloque de datos) o un registro que almacenabytes que se encuentran en el dispositivo.

    4 Pipes: Enlace virtual o Asociacin entre el host y el Endpoints.

    B. Transferencia BulkLas transferencias Bulk estn diseadas para soportar

    aquellos dispositivos que precisan enviar o recibir grandescantidades de datos con latencias que pueden tener ampliasvariaciones, y en que las transacciones pueden utilizarcualquier ancho de banda disponible. Para ellos lastransacciones Bulk proporcionan: Acceso al bus en funcin del ancho de banda disponible. Reintento de trasferencias en caso de errores de entrega. Entrega garantizada de datos, pero sin garanta de

    latencia mxima ni de ancho de banda.Las transferencias Bulk se realizan relativamente rpidas siel bus dispone de mucho ancho de banda libre. En un busUSB con mucho ancho de banda reservado, la transferenciapuede alargarse durante periodos de tiempo relativamentegrandes.

    IV. LIBRERA MPUSBAPI

    Como se menciono en la seccin II, las funciones deacceso al puerto USB con el microcontrolador PIC18F4550se realizan mediante la librera mpusbapi. Para hacer uso deesta librera en labview se utiliza el VI Call Library FuctionNode (Ver Fig.6).

    Figura 6. Call Library Fuction Node

    Con este VI podemos asignarle parmetros a lasfunciones que contiene la librera mpusbapi para enviar yrecibir datos. Los pasos para utilizar la librera mpusbapi enLabVIEW se muestran en el diagrama siguiente.

    Si

    No

    Figura 7. Diagrama de configuracin de librera mpusbapi

    Las funciones de la librera mpusbapi se analizan acontinuacin:

    Fin

    mpusbopen

    mpusbwrite

    mpusbread

    mpusbclose

    Continuar?

    Inicio

  • CONAGOLFO 2009

    -4 / 5-

    Mpusbopen: (instance, pVID_PID, pEP, dwDir,dwReserved)

    Devuelve el acceso al pipe del endpoints con elVID_PID5 asignado.

    Instance (Input): Un nmero de dispositivo para abrir.Normalmente, se utiliza primero la llamada deMPUSBGetDeviceCount para saber cuntosdispositivos hay. pVID_PID (Input): String que contiene el PID&VID

    del dispositivo objetivo. El formato esvid_xxxx&pid_yyyy . Donde xxxx es el valor delVID el yyyy el del PID, los dos en hexadecimal.Ejemplo:Si un dispositivo tiene un VID=0x04d8 y unPID=0x0010, el string de entrada es:vid_0x04d8&pid_0x0010. pEP: (Input): String con el nmero del Endpoint que

    se va a abrir. El formato es \\MCHP_EPz o \MCHP_EPz dependiendo del lenguaje deprogramacin. Donde z es el nmero del Endpoint endecimal.Ejemplo: \\MCHP_EP1 o \MCHP_EP1Este argumento puede ser NULL (nulo) para crearlazos con endpoints de funciones no especficas. dwDir: Especifica la direccin del endpoint:

    MP_READ: para MPUSBRead yMPUSBReadInt. Y MP_Write: paraMPUSBWrite. dwReserved: indica un nmero reservado para el

    dispositivo.

    Mpusbwrite: (handle, pData, dwLen, pLenght,dwMilliseconds)

    handle (Input): Identifica la pipe del endpoint que seva a escribir. La pipe unidad tiene que crearse con elatributo de acceso MP_WRITE. pData (Output): Puntero al buffer que contiene los

    datos que se van a escribir en la pipe. dwLen (Input): Especifica el nmero de bytes que se

    van a escribir en la pipe. pLenght (Output): Puntero al nmero de bytes que se

    escriben al llamar esta funcin. MPUSBWrite poneeste valor a cero antes de cualquier lectura o dechequear un error. dwMilliseconds (Input): Especifica el intervalo de

    time-out en milisegundos. La funcin vuelve sitranscurre el intervalo, aunque no se complete laoperacin. Si dwMilliseconds=0, la funcincomprueba los datos de la pipe y vuelveinmediatamente. Si dwMilliseconds es infinito, elintervalo de time-out nunca termina.

    Mpusbread (handle, pData, dwLen, pLenght,dwMilliseconds):

    5 VID_PID es la unin entre la identificacin del dispositivo (PID) y delvendedor (VID), en nmero hexadecimal de 16bits.

    handle (input): Identifica la pipe del Endpoint que se vaa leer. La pipe unidad tiene que crearse con el atributode acceso MP_READ.pData (output): Puntero al buffer que recibe el datoledo de la pipe.dwLen (input): Especifica el nmero de bytes que hayque leer de la pipe.pLenght (output): Puntero al nmero de bytes ledos.MPUSBRead pone este valor a cero antes de cualquierlectura o de chequear un error.dwMilliseconds (input): Especifica el intervalo de time-out en milisegundos. La funcin vuelve si transcurre elintervalo aunque no se complete la operacin. SidwMilliseconds=0, la funcin comprueba los datos dela pipe y vuelve inmediatamente. Si dwMilliseconds esinfinito, el intervalo de time-out nunca termina.

    Mpusbclose (handle):Cierra una determinada unin. handle (Input): Identifica la pipe del endpoint que se

    va a cerrar.

    VI. ADQUISICION DE DATOS EN LABVIEW

    LabVIEW es una herramienta de programacin grficaque permite realizar simulaciones, pruebas, control y diseode procesos y sistema. El lenguaje que usa se llama lenguajeG (Grfico).Los programas desarrollados con LabVIEW sellaman Instrumentos Virtuales (Vis).

    Para probar la recepcin de datos entre LABVIEW y elexterior, se realiz la siguiente prueba: Se midi latemperatura ambiental de forma continua utilizando elsensor LM35.

    Figura 8. Diagrama electrnico del Proyecto

    La transmisin de datos va USB se realizomanipulando el encendido de forma intencionada de unos

  • CONAGOLFO 2009

    -5 / 5-

    leds(Ver Fig. 8). Estos leds representan el encendido digitalde actuadores como vlvulas de paso.

    La programacin en LabVIEW se realizo a travs de unsubVI (PicUSB-Labview) que permite manipular de manerams fcil al dispositivo. El subVI creado se muestra en lasiguiente figura.

    Figura 9. VI PicUSB-LabVIEW

    En la Figura 10, se muestra la programacinestructurada con el respectivo subVI creado y en la Figura.11, se muestran la programacin virtual del proyecto.

    Figura 10. Diagrama Bloque

    Fig. 11. Panel Frontal

    VI. CONCLUSIONESEn este artculo se presento una metodologa que

    permite la comunicacin entre un microcontroladorPIC18F4550 y LabVIEW para tareas de adquisicin dedatos. Los resultados obtenidos demuestran que lametodologa implementada funciona perfectamente, se logratrasferir datos de alta velocidad. Con esta tcnica se pretendeque estudiante e investigadores puedan construir una tarjetade adquisicin de datos y que pueda implementarse paratareas de simulacin, supervisin y control.

    REFERENCIAS

    [1] Gary W. Johnson, R. J. (2006). LabVIEW Graphical Programming,Fourth Edition. New York: McGraw-Hill.

    [2] Jan Axelson. (2001). USB Complete Everything You Need toDevelop Custom USB Peripherals,Third Edition. Madison, WI:Lakeview Research.

    [3] Lazaro, A. M. (2005). LABVIEW 7.1: PROGRAMACIONGRAFICA PARA EL CONTROL DE INSTRUMENTACION,Cuarta Edicin. Texas: Thomson.

    [4] National Instruments (2008). http://www.ni.com[5] Universal Serial Bus (2008). http://www.usb.org[6] Microchip (2008). http://www.microchip.com