COMUNICACIÓN SERIAL CON LABVIEW
-
Upload
sergiobedoya240 -
Category
Documents
-
view
203 -
download
5
Transcript of 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):
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
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:
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.
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;
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