COMUNICACIÓN SERIAL CON LABVIEW

8
COMUNICACIÓN SERIAL CON LABVIEW ING. ESP. JOSE ANTONIO ARAQUE GALLARDO La comunicación serial es uno de los métodos de comunicación más empleados a la hora de adquirir datos desde un PC. Normalmente la adquisición se realiza utilizando un microcontrolador que soporte comunicación serial (UART). Los detalles técnicos del protocolo serial no se discuten en este documento ya que se asume que el estudiante los domina correctamente. A nivel de hardware la comunicación se establece mediante un cable adaptado para tal fin, usando además un adaptador de niveles: Normalmente se utiliza comunicación serie asíncrona, por la facilidad de implementación y su versatilidad. Labview brinda mucha facilidad a la hora de implementar comunicaciones seriales, haciendo bastante transparente la capa física y lógica del protocolo permitiendo desarrollar aplicaciones en menos tiempo. Para realizar una comunicación serial efectiva con labview hay que realizar unas tareas o pasos que en términos generales siempre son los mismos: -Configuración del puerto -acceso al puerto -cierre del puerto. La gestión del puerto serial se hace a través de VISA (Arquitectura de Software para Instrumentos Virtuales). VISA es una librería de interfaz simple para controlar protocolos como RS232, GPIB, USB entre otros, esto implica que habrá que instalar VISA para poder acceder al puerto serie. El acceso a las múltiples funciones VISA para el puerto serie se pueden ubicar como se muestra en la figura (en el diagrama de bloques):

Transcript of COMUNICACIÓN SERIAL CON LABVIEW

Page 1: COMUNICACIÓN SERIAL CON LABVIEW

COMUNICACIÓN SERIAL CON LABVIEW

ING. ESP. JOSE ANTONIO ARAQUE GALLARDO

La comunicación serial es uno de los métodos de comunicación más empleados a la hora de

adquirir datos desde un PC. Normalmente la adquisición se realiza utilizando un

microcontrolador que soporte comunicación serial (UART). Los detalles técnicos del protocolo

serial no se discuten en este documento ya que se asume que el estudiante los domina

correctamente.

A nivel de hardware la comunicación se establece mediante un cable adaptado para tal fin,

usando además un adaptador de niveles:

Normalmente se utiliza comunicación serie asíncrona, por la facilidad de implementación y su

versatilidad. Labview brinda mucha facilidad a la hora de implementar comunicaciones

seriales, haciendo bastante transparente la capa física y lógica del protocolo permitiendo

desarrollar aplicaciones en menos tiempo. Para realizar una comunicación serial efectiva con

labview hay que realizar unas tareas o pasos que en términos generales siempre son los

mismos:

-Configuración del puerto

-acceso al puerto

-cierre del puerto.

La gestión del puerto serial se hace a través de VISA (Arquitectura de Software para

Instrumentos Virtuales). VISA es una librería de interfaz simple para controlar protocolos

como RS232, GPIB, USB entre otros, esto implica que habrá que instalar VISA para poder

acceder al puerto serie. El acceso a las múltiples funciones VISA para el puerto serie se pueden

ubicar como se muestra en la figura (en el diagrama de bloques):

Page 2: COMUNICACIÓN SERIAL CON LABVIEW

CONFIGURACIÓN:

Visa resource name: Indica el nombre del puerto, generalmente se coloca aquí un control

Baud rate: tasa de baudios

Data bits: longitud del dato

Parity: paridad

ACCESO: El acceso al puerto serie puede ser de escritura del puerto o de lectura

Page 3: COMUNICACIÓN SERIAL CON LABVIEW

Escritura:

Escribe un dato desde el buffer de escritura al dispositivo especificado por Visa resource name.

Write buffer: contiene el dato a ser escrito en el dispositivo

Return count: contiene el número actualizado de los bytes escritos.

Lectura:

Lee el número de bytes especificados y lo entrega en read buffer.

Byte count: es el número de bytes a ser leidos

Read buffer: contiene el dato leído del dispositivo

Return count: contiene el número actual de bytes leído

CIERRE DEL PUERTO:

En algunas aplicaciones puede ser de utilidad la función set buffer size:

Page 4: COMUNICACIÓN SERIAL CON LABVIEW

SET BUFFER SIZE

Ajusta el tamaño del buffer de entrada-salida.

Mask: Se utiliza para seleccionar cual buffer (de Tx o de Rx) se va a ajustar el tamaño. Para el

buffer de transmisión se utiliza un mask de 16 y para el de recepción un mask de 32. Si desea

ajustar los dos buffers al tiempo, sume estos valores antes de cablearlos a esta terminal.

Size: especifica el tamaño del buffer I/O. por defecto es 4096. Indica la cantidad de bytes que

se desea recibir o transmitir.

EJEMPLO PRÁCTICO:

Para entender de forma básica la comunicación serial en labview vamos a desarrollar un

ejemplo de LECTURA-ESCRITURA del puerto. Usted debe tener el hardware requerido

(microcontrolador con una entrada análoga y 8 salidas digitales, programado con el firmware

proporcionado en la carpeta). Nuestro sistema DAQ leerá el dato analógico a través del

puerto serial (en formato de 8 bits) y lo visualizará en una gráfica. Además desde el panel

frontal se enviará un número que será visualizado en los 8 leds a la salida.

Realicemos un diagrama de bloques como el que se muestra en la figura de las siguientes

páginas (se muestran las conexiones para ambos casos en las estructuras case), observe la

forma como se hacen las operaciones sobre el puerto y el tratamiento realizado a los datos a

enviar y a los datos leídos. Esto es necesario ya que labview así como cualquier otro software

que trabaje puerto serie solo puede transmitir y recibir caracteres ASCII.

Page 5: COMUNICACIÓN SERIAL CON LABVIEW
Page 6: COMUNICACIÓN SERIAL CON LABVIEW
Page 7: COMUNICACIÓN SERIAL CON LABVIEW

Si el PC en el que está trabajando presenta fallas en el puerto serie instale el emulador de

puerto serial y cree un nuevo COM e inicie la emulación. Para comprobar la comunicación

utilice el ejecutable del monitor de puerto serial suministrado. Escriba y lea datos del puerto

serie usando el emulador y verificando los datos en el monitor de puerto serial.

Se anexa el código del microcontrolador hecho en PICBASIC:

device=16f877 xtal=4 DIM B1 AS BYTE

trisb = 0 TRISC = %10111111 ' Set TX (PortC.6) como salida SPBRG = 25 ' Set baud rate a 9600 baudios RCSTA = %10010000 'habilita recepción contínua por USART TXSTA = %00100100 ' habilita modo asincrono, habilita la transmisión y BRgh=1(alta velocidad) ADIN_RES 10 ' Ajusta la resolución a 10 bits ADIN_TAD FRC ' Selecciona el oscilador interno RC ADIN_STIME 100 ' Tiempo de adquisición de 100us

Dim CONVER as Word 'variable de entrada de la lectura Dim escala as byte

TRISA. 0 = 1 ' Ajustamos el bit 0 de porta como entrada ADCON1 = %10000010 ' Ajustamos RA0 como entrada analógica y justificamos a la derecha LOOP: CONVER = ADIN 0 ' leemos el canal 0

ESCALA = CONVER / 4 'ajustamos por software la resolución a 8 bits HRSOUT ESCALA 'envia directamente el dato al puerto gosub esperar if b1= 0 then goto loop else

portb =b1 end if;

Page 8: COMUNICACIÓN SERIAL CON LABVIEW

delayms 50 GOTO LOOP

esperar: B1 = 0 If PIR1 . 5 = 1 Then B1 = hrsin 'si se levanta la bandera de recepción hay un

dato disponible Return 'en el buffer