sábado, 3 de septiembre de 2016

Tutorial 2 LabVIEW: Recepción Serial RS232

  

LabVIEW es un entorno de desarrollo integrado y diseñado específicamente para ingenieros y científicos que desarrollan sistemas de medidas y control. 
En esta entrada trataremos la recepción por el protocolo RS232, este es uno de los más antiguos y a pesar del paso del tiempo aún persiste su comunicación en algunos dispositivos. Aunque ya va en decadencia siempre es bueno saber cómo utilizarlo.
    Crear enlace en Labview 
1.  Lo que primero se debe de realizar en Labview es crear un <New VI> después al abrirse las dos ventas de Block diagram y Front Panel, nos pasaremos a la ventana de Block Diagram del cual buscaremos la opción de SERIAL, que está ubicado en <View> <Functions Palette> <Instrument I/O> <Serial> y seleccionamos la opción de VISA Configure Serial Port que nos servirá para configurar los baudios, bits de paridad entre varias opciones más.
2. Al agregar el control de configuración de puerto agregaremos 4 controles que harán la función de buscar el puerto estas son: VISA resource name que cada vez que exista un puerto disponible, este lo visualizara, baud rate que por defecto está a 9600 y podemos cambiar fácilmente escribiendo sobre la velocidad de recepción, Enable Event que nos habilitara los eventos de recepción serial y Discard Events que limpiara el evento una vez culminado. Para ello vamos a <View> <Functions Palette> <Instrument I/O> <VISA> <VISA advanced> <Event Handlng > y seleccionamos Enable Event, Discard Events y Select Event al cual con un click seleccionamos Serial Character.
3. Después de configurar correctamente el puerto, ahora podemos hacer un ciclo infinito  hasta que salgamos con un stop. Para ello buscaremos la opción de While Loop, Case Structure, que están ubicado en <View> <Functions Palette> <Programming> <Structures> y seleccionamos las opciones While Loop y Case Structure.
4. Ahora buscaremos la opción de leer en el puerto, que está ubicado en <View> <Functions Palette> <Instrument I/O> <Serial> y seleccionamos la opción de <Read> que nos permite recibir cadenas de caracteres, la misma paleta seleccionamos la opción <Close> que nos permite cerrar la sesión del objeto o visa creado. Volvemos a <View> <Functions Palette> <Instrument I/O> <VISA> <VISA advanced> <Event Handlng > y seleccionamos Enable Event, Discard Events y Select Event al cual con un click seleccionamos Serial Character.
Pasamos a la opción True del Case Structure y conectamos como se muestra en la figura.

En este ejemplo recibiremos un byte por el puerto RS232, pero solo tomaremos los 4 bits de menor peso de unos de los puertos del microcontrolador este solo lo enviaremos cada 100ms que servirán para sincronización.
5. Lo primero que haremos es pasarnos a la ventana Front Panel, del cual buscaremos la opción de Boolean, que está ubicado en <View> <Controls Palette> <Modern> <Boolean>  y seleccionamos la opción de Round LED. 


6. En este punto nos necesitamos convertir es Booleano en un array de Booleanos y para eso necesitamos ir a <View> <Controls Palette> <Modern> <Array, Matrix & Cluster>  y seleccionamos la opción de Array, introducimos el Rond LED dentro de la caja de Array y extendemos hasta tener 4 (cuatro) Round LED que conformaran el byte a recibir.



7. Bien ya tenemos nuestro panel de configuración para la comunicación RS232 y el Array de Booleanos que enviaremos solo nos faltaría un Botón para detener la aplicación cuando se requiera, en este caso vamos a <View> <Controls Palette> <Modern> <Boolean> y seleccionamos la opción de Stop Button.
8. Nos pasaremos a la ventana de Block Diagram, ubicamos el Stop Button y el Array con click derecho mostramos un menú del objeto y destildamos la opción View As Icon. 
     Como se dijo anteriormente el objeto Read nos permite recibir cadenas de caracteres por lo tanto hay que hacer un arreglo que nos convierta nuestro String en un Boolean Array para esto tendemos que hacer varias cosas:
  1.  <View> <Functions Palette> <Mathematics> <Numeric> <Conversion> y seleccionamos String To Byte Array
  2.  <View> <Functions Palette> <Programming> <Array> y seleccionamos Index Array
  3. <View> <Functions Palette> <Mathematics> <Numeric> <Conversion> y seleccionamos Number To Boolean Array y conectamos al Array de LED.

9. Ahora necesitamos saber cuándo ocurre un error de recepción de datos por el puerto RS232, labVIEW también nos brinda una función para saberlo, dando click derecho sobre el cable amarillo del Visa Read mostramos un menú del objeto y seleccionamos Cluster, Class & Variant Palette y unbundle By Name, nos saldrá la función status.
También es necesario darle un retardo a la aplicación y decirle que tipo de información va a leer para eso vamos a:
            a.     <View> <Functions Palette> <Instrument I/O> <VISA> <VISA advanced> <Event Handlng > Visa Wait on Event  y le creamos una constante de tiempo.
         b.   <View> <Functions Palette> <Instrument I/O> <VISA> <VISA advanced> y seleccionamos Property Node de la cual seleccionaremos <Serial Settings> Number of Bytes at Serial Ports



La función status nos informa si ocurrió o no un error con un bit que será True o False (1 ó 0).  Si es True se activara el Case Structure y simplemente no hará nada en caso contrario ejecutaran las funciones.
   
10. Bien es hora de configurar nuestro botón de stop que ya lo teníamos olvidado para eso vamos a  <View> <Functions Palette> <Programming> <Boolean> y seleccionamos OR, una vez hecho esto unimos las salidas de status y stop button a cada una de las entradas de la función de booleana OR y esta nos devolverá False mientras ambas entradas sean False (0) y nos devolverá True (1)  si alguna de las entradas cambia.


Ya tenemos todo lo necesario para poder recibir en labVIEW desde un microcontrolador por RS232, si han seguido los pasos al pie de la letra deberían tener algo como esto.


Muy bien amigos esto ha sido todo por este tutorial, configuren su microcontrolador para recibir datos por el puerto serial y disfruten de la experiencia.





  Es bastante difícil hacer cada entrada, puedes agradecerlo fácilmente con un comentario así que no lo olvides.

    !!..     Likeenme, Compartanme , Comentenme  .!!





No hay comentarios:

Publicar un comentario