LABVIEW1
LABVIEW1
LABVIEW1
Índice general 1
1 Programación en Labview 5
1.1. Introducción a la programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.1. Principio de programación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.1.1. Flujo de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.2. Entorno de Labview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.2.1. Panel frontal y diagrama de bloques . . . . . . . . . . . . . . . . . . . . . . . 7
1.1.2.2. Ícono y panel de conectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.2.3. Ventana context help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1.2.4. Herramientas comunes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.1.3. Tipo de datos y estructura de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.1.3.1. Numérico, cadena, booleano, path, enum . . . . . . . . . . . . . . . . . . . . 14
1.1.3.2. Clusters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.1.3.3. Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.1.3.4. Forma de onda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.1.3.5. Marcas de tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.1.3.6. Tipos de datos dinámicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.1.3.7. Coerción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.1.3.8. Conversión y manipulación de datos . . . . . . . . . . . . . . . . . . . . . . . 17
1.1.4. Depuración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.1.4.1. Herramientas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2 Estructuras de Control 19
2.1. Bucle while y bucle for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.1. Bucle while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.2. Bucle for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.3. Componentes de bucle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.1.4. Autoindexado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.1.5. Registros de corrimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.2. Estructuras case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.1. Selector de case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.2. Tuneles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3. Estructuras secuenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3.1. Tipos de estructuras secuenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.4. Estructuras de evento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4.1. Definición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4.2. Componentes de la estructura de eventos . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.5. Formule node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.6. Expression nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1
Índice general
3 Manejo de ficheros 29
3.1. Entrada y salida de ficheros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.1.1. Funciones y Vis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.1.2. Aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2. Gráficos y tablas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.1. Tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.1.1. Graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.1.2. Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.3. Acciones mecánicas de los booleanos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3.1. Describir las seis diferentes acciones mecánicas . . . . . . . . . . . . . . . . . . . . . . 32
3.3.1.1. Switch when pressed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3.1.2. Switch when released . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3.1.3. Switch until released . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3.1.4. Latch when pressed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3.1.5. Latch when released . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3.1.6. Latch until released . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.4. Temporización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.4.1. Funciones de temporización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.4.1.1. Tick Count (ms) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.4.1.2. High Resolution Relative Seconds . . . . . . . . . . . . . . . . . . . . . . . . 33
3.4.1.3. Wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.4.1.4. Wait Until Next ms Multiple . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.4.1.5. Time Delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.4.1.6. Timed elapsed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4.1.7. Get Date/Time In Seconds Function . . . . . . . . . . . . . . . . . . . . . . . 34
3.4.1.8. Get Date/Time String Function . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4.1.9. Format Date/Time String Function . . . . . . . . . . . . . . . . . . . . . . . 34
3.4.1.10. Date/Time To Seconds Function . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.4.1.11. Seconds To Date/Time Function . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.5. Subvi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.5.1. Definición . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.5.2. Pasos para crear un subvi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.5.2.1. Crear un icono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.5.2.2. Panel de conectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.5.2.3. Invocar un Subvi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2
Índice general
3
Capítulo
Programación en Labview
Inicialmente Labview fue creado para funcionar sobre maquinas Apple Macintosh o también conocidas como
MAC, actualmente está disponible para diversas plataformas como Windows, Unix, Linux y Mac OS X.
LabVIEW no solo cuenta con un entorno amigable para el programador sino que también posee herramientas
potentes para la depuración del código como incluir sonda de prueba, puntos de ruptura, y pasar por encima
de/a y fuera del código. Con estas herramientas se puede sondear datos sobre muchas partes del programa de
manera simultánea, también es posible pausar la ejecución del programa y ver paso a paso como trabaja el
código y verificar verdaderamente si ejecuta lo que se le ha indicado. Si bien esto es posible en otros lenguajes
de programación, es más fácil de visualizar el estado del programa y las relaciones entre las partes paralelas del
código debido a la naturaleza gráfica del lenguaje G. Una de las características de depuración más comunes
utilizados en LabVIEW es siempre en la compilación. Mientras que usted está desarrollando un programa,
el compilador comprueba si ocurre algún problema y proporciona información semántica y sintáctica de la
aplicación. Si existe un error, no se puede ejecutar el programa y en la barra de herramientas se observa al
botón de ejecutar el programa como si estuviera roto. Al pulsar el botón se abre una lista de problemas que
deben ser solucionados por el programador.
Una vez que se han corregido los problemas el compilador de LabVIEW puede compilar su programa a código
máquina. Una vez compilado, el desempeño de los programas G es comparable a la de los lenguajes más tradi-
5
1. Programación en Labview
cionales basados en texto como C. A lo largo del curso aprenderemos a manipular las herramientas de edición
de interfaz gráficas, como agregar controladores, indicadores y a cómo utilizar los bloques de programación
en LabVIEW como son la estructura if, case, for, while y estructuras propia de LabVIEW como el Event
Structure, Flat Sequence y Staqued Sequence. Ahora LabVIEW también me permite implementar protocolos
de comunicación como RS232 y USB para comunicarme con un Microcontrolador y hacer un adquisición
de datos para luego graficarlos en un indicador, la National Instruments también proporciona tarjetas de
desarrollo propias como es la NIDAQ-6008 la cual posee entrada/salidas digitales y analógicas mediante pro-
gramación se puede implementar un generador de señales o hacer un controlador PID. Si queremos hacer
comunicaciones avanzadas vía Red también tenemos bloques de comunicación UDP y TCP con lo cual se
puede comunicar vía LAN de PC a PC de manera cableada o inalámbrica si se cuenta con un Acces point,
la gran versatilidad de LabVIEW permite desarrollar cualquier tipo de proyecto desde el más simple hasta el
más complejo desde comunicar un simple Microcontrolador hasta establecer comunicación vía Ethernet con
un PLC s7-1200 de Siemens utilizando NiOPCserver.
LabVIEW sigue un modelo de flujo de datos para ejecutar VIs. Un nodo de diagrama de bloques se ejecuta
cuando recibe todas las entradas requeridas. Cuando el nodo se ejecuta, produce datos de salida y pasa los
datos al siguiente nodo en la trayectoria del flujo de datos. El movimiento de datos a través de los nodos
determina el orden de ejecución de los VIs y las funciones en el diagrama de bloques.
Visual Basic, C++, Java y la mayoría de otros lenguajes de programación basados en texto siguen un modelo
de flujo de control para ejecución del programa. En el flujo de control, el orden secuencial de los elementos
del programa determina el orden de ejecución de un programa.
Para un ejemplo de programación de flujo de datos, considere un diagrama de bloques que suma dos números
y después resta 50.00 del resultado de la suma, como se muestra en la Figura 1. En este caso, el diagrama de
bloques se ejecuta de izquierda a derecha, no porque los objetos están colocados en ese orden, sino porque le
función de Resta no puede ejecutarse hasta que la función de Suma termina ejecutarse y pasa los datos a la
función de Resta. Recuerde que un nodo se ejecuta solamente cuando los datos están disponibles en todas sus
terminales de entrada y proporciona los datos a las terminales de salida solamente cuando el nodo termina
la ejecución.
En la Figura 1.2, considere cuál segmento de código debe ejecutarse primero—la función de Suma, Número
Aleatorio o División. No se puede saber porque las entradas a las funciones de Suma y División están dis-
ponibles al mismo tiempo y la función de Números Aleatorios no tiene entradas. En una situación donde
un segmento de código debe ejecutarse antes que otro y no existe ninguna dependencia de datos entre las
funciones, use otros métodos de programación como estructuras de secuencia o clusters de error para forzar
el orden de la ejecución.
6
1.1. Introducción a la programación
Barra de herramientas del panel frontal: Cada ventana tiene una barra de herramientas asociada con ella.
Utilice los botones de la barra de herramientas de la ventana del panel frontal para ejecutar y editar el VI.
La siguiente barra de herramientas aparece en la ventana del panel frontal.
7
1. Programación en Labview
Haga clic en el botón Run para ejecutar un VI. LabVIEW compila el VI, si es
necesario. Puede ejecutar un VI si el botón Run aparece como una flecha en blanco,
mostrada a continuación. La flecha blanca también indica que usted puede usar el
VI como subVI si crea un panel conector para el VI.
El botón Run aparece roto cuando el VI que está creando o editando contiene errores.
Si el botón Run aún aparece roto después de que terminó de cablear el diagrama de
bloques, el VI está roto y no se puede ejecutar. Haga clic en este botón para mostrar
la ventana Error list, la cual enlista todos los errores y advertencias.
Haga clic en el botón Run Continuously para ejecutar el VI hasta que usted finalice o
detenga la ejecución. También puede hacer clic en el botón otra vez para deshabilitar
la ejecución continua.
Hasta que el VI se ejecuta, aparece el botón Abort Execution. Haga clic en este
botón para detener el VI inmediatamente si no hay otra manera de detener el VI.
Si más de uno de los VIs de alto nivel ejecutándose utiliza el VI, el botón está en
color tenue. Precaución: El botón Abort Execution detiene al VI inmediatamente,
antes que el VI termine la actual iteración. Al detener un VI que utiliza recursos
externos, como hardware externo, puede dejar los recursos en un estado desconocido
sin restablecerlos o liberarlos adecuadamente. Diseñe VIs con un botón de paro para
evitar este problema.
Haga clic en el botón Pause para detener un VI ejecutándose. Cuando hace clic en el
botón Pause, LabVIEW resalta en el diagrama de bloques la ubicación donde usted
detuvo la ejecución y aparece en rojo el botón Pause. Haga clic en el botón Pause
otra vez para continuar ejecutando el VI.
Seleccione el menú desplegable Align Objects para alinear los objetos a lo largo de
los ejes, incluyendo vertical, orilla de arriba y así sucesivamente.
Seleccione el menú desplegable Distribute Objects para espaciar los objetos unifor-
memente, incluyendo intervalos, compresión y así sucesivamente.
Seleccione el menú desplegable Reorder cuando tiene objetos que se traslapan en-
tre ellos y quiere definir cuál está enfrente o atrás de cada uno. Seleccione uno de
los objetos con la herramienta de Posicionamiento y después seleccione entre Move
Forward, Move Backward, Move To Front y Move To Back.
8
1.1. Introducción a la programación
Seleccione el botón Show Context Help Window para visualizar la ventana de ayuda
contextual.
Enter Text aparece para recordarle que un nuevo valor está disponible para reem-
plazar uno viejo. El botón Enter Text desaparece cuando hace clic en él, presiona la
tecla <Enter> o hace clic en el área del panel frontal o del diagrama de bloques.
Paleta de control
Diagrama de bloques Los objetos del diagrama de bloques incluyen terminales, subVIs, funciones,
constantes, estructuras y cables, los cuales transfieren datos junto con otros objetos del diagrama de
bloques.
9
1. Programación en Labview
Haga clic en el botón Highlight Execution para mostrar una animación de la ejecución
del diagrama de bloques cuando ejecute el VI. Note el flujo de datos a través del
diagrama de bloques. Haga clic en el botón otra vez para deshabilitar la ejecución
animada.
La ejecución resaltada muestra el movimiento de los datos en el diagrama de bloques
desde un nodo a otro usando burbujas que se mueven a lo largo del cable. Use la
ejecución resaltada con la herramienta single-stepping para ver cómo los valores de
los datos se mueven de nodo a nodo a través del VI.
Haga clic en el botón Retain Wire Values para guardar los valores del cable en cada
punto en el flujo de ejecución para que cuando coloque una punta de prueba en
el cable pueda retener inmediatamente los valores más recientes de los datos que
pasaron a través del cable. Debe ejecutar con éxito el VI por lo menos una vez antes
de que pueda retener los valores del cable.
Haga clic en el botón Step Into para abrir un nodo y hacer pausa. Cuando hace clic
en el botón Step Into otra vez, ejecuta la primera acción y hace pausa en la siguiente
acción del subVI o estructura. También puede presionar el <Ctrl> y la flecha hacia
abajo. Avance a través de los pasos de VI por medio del VI nodo por nodo. Cada
nodo se prende para denotar cuando está listo para ejecutarse.
Haga clic en el botón Step Over para abrir un nodo y hacer pausa al siguiente nodo.
También puede presionar el <Ctrl> y la flecha hacia arriba. Al presionar el nodo,
ejecuta el nodo sin avance simple a través del nodo.
Haga clic en el botón Step Out para terminar de ejecutar un nodo actual y hacer
pausa. Cuando el VI termina de ejecutarse, el botón Step Out está en color tenue.
También puede presionar el <Ctrl> y la flecha hacia arriba. Al presionar un nodo,
completa el avance en el nodo y navega al siguiente nodo.
10
1.1. Introducción a la programación
Use la herramienta Probe para verificar los valores intermedios en un cable mientras
un VI se ejecuta. También use la herramienta de Probe si tiene un diagrama de
bloques complicado con una serie de operaciones y cualquiera de ellas puede regresar
datos incorrectos. Use la herramienta de Probe con la identificación de ejecución,
avance simple y puntos de paro para determinar donde están los datos incorrectos.
Si los datos están disponibles, la punta de prueba se actualiza inmediatamente y
muestra los datos en la Probe Watch Window durante la identificación de ejecución,
avance simple o cuando hace pausa en un punto de paro. Cuando la ejecución hace
pausa en un nodo por avance simple o un punto de paro, también puede medir el
cable que se ejecutó para ver el valor que fluye a través de ese cable.
11
1. Programación en Labview
Cuando mueve el cursor sobre el panel frontal y objetos del diagrama de bloques, la ventana Context Help
muestra el ícono para subVIs, funciones, constantes, controles e indicadores con cables sujetos a cada ter-
minal. Cuando mueve el cursor sobre las opciones de ventana de diálogo, la ventana Context Help muestra
descripciones de esas opciones.
Se puede elegir manualmente la herramienta que se necesita seleccionando esta del tools palette. Seleccione
View»Tools Palette para mostrar el Tools palette.
Selector Automático de Herramientas
El primer elemento en la paleta Tools es el botón Automatic Tool Selection. Cuando selecciona esto, LabVIEW
automáticamente escoge una herramienta de acuerdo a la ubicación de su cursor. Puede apagar la selección
automática de herramientas al anular la selección de este elemento y seleccionar otro elemento en la paleta.
Si va a comparar las herramientas en LabVIEW con herramientas caseras comunes, las herramientas enlistadas
a continuación podría representar un desarmador, un cuchillo o un sacacorchos y el selector automático de
herramientas podría ser un cuchillo Swiss Army, capaz de realizar todas las tareas.
12
1.1. Introducción a la programación
Cuando el cursor del mouse cambia al ícono que se muestra arriba, la herramienta
de Operación está en operación. Use la herramienta de Operación para cambiar los
valores de un control. Por ejemplo, en la Figura 2, la herramienta de Operación mueve
el puntero en la Horizontal Pointer Slide. Cuando el mouse está sobre el puntero, el
cursor automáticamente obtiene acceso a la herramienta de Operación
Cuando el cursor del mouse cambia al ícono que se muestra arriba, la herramienta
de Posicionamiento está en operación. Use la herramienta de Posicionamiento para
seleccionar o cambiar el tamaño de los objetos. Por ejemplo, en la Figura 3, la herra-
mienta de Posicionamiento selecciona el control numérico Number of Measurements.
Después de seleccionar un objeto, puede mover, copiar o eliminar el objeto. Cuando
el mouse está sobre el orilla de un objeto, el cursor automáticamente obtiene acceso
a la herramienta de Posicionamiento.
Cuando el cursor del mouse cambia al ícono que se muestra arriba, la herramienta
Etiquetado está en operación. Use la herramienta de Etiquetado para proporcionar
el texto en un control, para editar texto y para crear etiquetas. Por ejemplo, en la
Figura 5, la herramienta de Etiquetado proporciona el texto en el control numérico
Number of Measurements. Cuando el mouse está sobre el interior del control, el
cursor automáticamente obtiene acceso a la herramienta de Etiquetado. Haga clic
para colocar un cursor dentro del control. Después haga doble clic para seleccionar
el texto actual.
Cuando el cursor del mouse cambia al ícono que se muestra arriba, la herramienta
de Cableado está en operación. Use la herramienta de Cableado para cablear objetos
juntos en el diagrama de bloques. Por ejemplo, en la Figura 6, la herramienta de
Cableado cablea la terminal Number of Measurements a la terminal Loop Count del
Ciclo For. Cuando el mouse está sobre la salida o entrada de una terminal o sobre
un cable, el cursor automáticamente obtiene acceso a la herramienta de Cableado.
Use la herramienta de Menú de Acceso Directo de Objetos para tener acceso al menú
de objetos con el botón izquierdo del mouse. Usted también puede tener acceso a
este menú al dar clic con botón derecho en cualquier objeto en LabVIEW.
13
1. Programación en Labview
Use la Herramienta de Copiar Color para copiar colores y después pegarlos con la
herramienta de Coloreo
Nota: La diferencia entre los tipos de datos numéricos es el número de bits que usan para almacenar datos y
los valores de datos que representan.
Ciertos tipos de datos también ofrecen opciones de configuración extendida. Por ejemplo, puede asociar
unidades físicas de medida con datos de punto flotante, incluyendo números complejos y usted puede configurar
la codificación y rango para datos de punto fijo.
Cadena: Una cadena es una secuencia de caracteres ASCII visibles o no visibles. Las cadenas de ca-
racteres ofrecen un formato independiente a la plataforma para información y datos. Algunas de las
aplicaciones más comunes de cadena de caracteres incluyen las siguientes:
14
1.1. Introducción a la programación
Booleano: LabVIEW almacena datos Booleanos como valores de 8 bits. Un Booleano puede ser usado
en LabVIEW para representar un 0 o 1 o un TRUE o FALSE. Si el valor de 18 bits es cero, el valor
Booleano es FALSE. Cualquier valor no igual a cero representa TRUE. Las aplicaciones comunes para
datos Booleanos incluyen representar datos digitales y servir como un control de panel frontal que
actúa como un conmutador que tiene una acción mecánica generalmente usada para controlar una
estructura de ejecución como una estructura de Caso. Un control Booleano generalmente es usado
como la declaración condicional para terminar un Ciclo While. En LabVIEW el color verde representa
datos Booleanos.
Path: Utilice los controles e indicadores de ruta para ingresar o devolver la ubicación de un archivo o
directorio
Enum: Un enum (control, constante o indicador enumerado) es una combinación de tipos de datos. Un
enum representa un par de valores, una cadena de caracteres y un valor numérico, donde el enum puede
ser uno de una lista de valores.
1.1.3.2. Clusters
El cluster es análogo a una estructura en la programación C, combina uno o más tipos de datos en un tipo de
datos. La agrupación puede contener diferentes tipos de datos, tales como booleano, cadena y número entero
1.1.3.3. Arrays
Un array es una coleccion de elementos de datos. Los elementos de datos son como ranuras de almacenamiento
de datos. Los elementos de datos en una matriz puede ser numérica, boolean, string o clúster, pero todos los
datos deben ser del mismo tipo dentro del array. Los array pueden ser uno o dos dimensiones
15
1. Programación en Labview
t0 A Time Stamp representing the time at which the signal measurement starts
Y A 1D array of doubles that contains the values of the samples of that signal.
1.1.3.7. Coerción
Puntos Coerción aparecen en los nodos del diagrama de bloques para avisarle de que LabVIEW convierte el
valor pasado en el nodo a una representación diferente. LabVIEW coloca un punto coerción en la frontera de
la terminal, donde la conversión se lleva a cabo.
Red coercion dots: LabVIEW coloca puntos de coerción rojos en los nodos del diagrama de bloques
cuando se conecta un cable de un tipo numérico a un terminal de un tipo numérico distinto.
Blue coercion dots: El punto de coerción azul indica que LabVIEW no se ajusta el tipo de datos de
salida de forma automática para evitar el desbordamiento y errores de redondeo.
16
1.1. Introducción a la programación
1.1.4. Depuración
1.1.4.1. Herramientas
HighLight Execution: Haga clic en el botón Highlight Execution para mostrar una animación de la
ejecución del diagrama de bloques cuando ejecute el VI. Note el flujo de datos a través del diagrama de
bloques. Haga clic en el botón otra vez para deshabilitar la ejecución animada.
Retain wire Values: Haga clic en el botón Retain Wire Values para guardar los valores del cable en cada
punto en el flujo de ejecución para que cuando coloque una punta de prueba en el cable pueda retener
inmediatamente los valores más recientes de los datos que pasaron a través del cable. Debe ejecutar con
éxito el VI por lo menos una vez antes de que pueda retener los valores del cable.
Probe: Use la herramienta Probe para verificar los valores intermedios en un cable mientras un VI se
ejecuta. También use la herramienta de Probe si tiene un diagrama de bloques complicado con una serie
de operaciones y cualquiera de ellas puede regresar datos incorrectos.
17
Capítulo
Estructuras de Control
Figura 2.1: Un Ciclo While en LabVIEW, un Diagrama de Flujo equivalente a la Funcionalidad de Ciclo
While y un Código de Ejemplo Pseudo de la Funcionalidad del Ciclo While.
Añada objetos del diagrama de bloques al Ciclo While al arrastrarlos dentro del Ciclo While.
El Ciclo While ejecuta el código que contiene hasta la Conditional Terminal, una terminal de entrada, recibe
un valor Booleano específico.
También puede realizar manejo básico de error usando la terminal condicional de un Ciclo While. Cuando
cablea un cluster de error a la terminal condicional, solamente el valor TRUE o FALSE del parámetro Status
del cluster de error pasa a la terminal. También, los elementos del menú de acceso directo Stop if True y
Continue if True cambian a Stop if Error y Continue while Error.
19
2. Estructuras de Control
Figura 2.2: Un Ciclo For en LabVIEW, un Diagrama de Flujo equivalente a la Funcionalidad de Ciclo For y
un Pseudo-Código de Ejemplo de la Funcionalidad del Ciclo For.
El Ciclo For está ubicado en la paleta Structures. También puede colocar un Ciclo While en el diagrama de
bloques, dar clic con botón derecho en el Ciclo While y seleccionar Replace with For Loop en
el menú de acceso directo para cambiar un Ciclo While a Ciclo For.
La Iteration Terminal es una terminal de salida que contiene el número de iteraciones terminadas. La cantidad
de iteraciones para el Ciclo For siempre comienza en cero.
El Ciclo For difiere del Ciclo While en que el Ciclo For ejecuta un número de veces establecido. Un Ciclo
While detiene la ejecución solamente si existe un valor en la Conditional Terminal.
2.1.4. Autoindexado
El auto indexado es una propiedad de las estructuras loop, cuando un data como un arreglo entra a un túnel
los valores puedes ser pasados como auto indexado o sin indexado, en la siguiente imagen
El túnel izquierdo tiene corchete indicando que tiene Auto Indexación Habilitada mientras que el túnel derecho
es sólido Indicando que la indexación automática está deshabilitada.
20
2.1. Bucle while y bucle for
La terminal en la parte derecha del ciclo contiene una flecha hacia arriba y almacena datos de la terminación
de una iteración. LabVIEW transfiere los datos conectados en la parte derecha del registro a la próxima
iteración. Después que el ciclo se ejecuta, la terminal en la parte derecha del ciclo regresa al último valor
almacenado en el registro de desplazamiento.
Cree un registro de desplazamiento al dar clic con botón derecho en el borde izquierdo o derecho de un ciclo
y seleccione Add Shift Register en el menú de acceso directo.
Un registro de desplazamiento transfiere cualquier tipo de datos y cambia automáticamente al tipo de datos
del primer objeto cableado al registro de desplazamiento. Los datos que usted cablea a las terminales de cada
registro de desplazamiento deben ser del mismo tipo.
Puede añadir más de un registro de desplazamiento a un ciclo. Si tiene múltiples operaciones que usan valores
de iteraciones anteriores en su ciclo, use múltiples registros de desplazamiento para almacenar los valores de
datos desde esos procesos en la estructura, como se muestra.
En el Ejemplo anterior el Ciclo For se ejecuta cinco veces, incrementando el valor que el registro de desplaza-
miento contiene por uno cada vez. Después de cinco iteraciones del Ciclo For, el registro de desplazamiento
21
2. Estructuras de Control
pasa el valor final, 5, al indicador y el VI se detiene. Cada vez que ejecuta el VI, el registro de desplazamiento
comienza con un valor de 0. Si usted no inicia el registro de desplazamiento, el ciclo utiliza el valor escrito
en el registro de desplazamiento cuando el último ciclo es ejecutado o el valor pre determinado para el tipo
de datos si el ciclo nunca ha sido ejecutado. Use un registro de desplazamiento no iniciado para conservar la
información del estado entre ejecuciones subsecuentes de un VI.
En la figura anterior, el Ciclo For se ejecuta cinco veces, incrementando el valor que el registro de desplaza-
miento contiene por uno cada vez. La primera vez que ejecuta el VI, el registro de desplazamiento comienza
con un valor de 0, el cual es el valor predeterminado para un entero de 32 bits. Después de cinco iteraciones
del Ciclo For, el registro de desplazamiento pasa el valor final, 5, al indicador y el VI se detiene. La próxima
vez que ejecuta el VI, el registro de desplazamiento comienza con un valor de 5, el cual es el último valor de
la ejecución anterior. Después de cinco iteraciones del Ciclo For, el registro de desplazamiento pasa el valor
final, 10, al indicador. Si ejecuta el VI otra vez, el registro de desplazamiento comienza con un valor de 10 y
así sucesivamente. Los registros de desplazamiento no iniciados retienen el valor de la iteración anterior hasta
que usted cierra el VI.
Registros de Desplazamiento Apilados: Con registros de desplazamiento apilados, usted puede tener ac-
ceso a los datos de iteraciones de ciclo anteriores. Los registros recuerdan los valores de múltiples
iteraciones anteriores y llevan esos valores a las próximas iteraciones. Para crear un registro de despla-
zamiento apilado, haga clic con botón derecho en la terminal izquierda y seleccione Add Element en el
menú de acceso directo.
Los registros de desplazamiento apilados pueden ocurrir solamente en la parte izquierda del ciclo porque
la terminal derecha transfiere los datos generados solamente desde la iteración actual a la siguiente
iteración.
Usar Registros de Desplazamiento Apilados: Si añade otro elemento a la terminal izquierda en el dia-
grama de bloques anterior, los valores desde las últimas dos iteraciones se llevan a la siguiente iteración,
con el valor de la iteración más reciente almacenado en el último registro de desplazamiento. La primera
terminal almacena los datos pasados a ella desde la iteración anterior.
22
2.2. Estructuras case
Cablee un valor de entrada o selector a la Selector Terminal para determinar qué caso se ejecuta. Debe
cablear un entero, valor Booleano, secuencia o valor de tipo enumerado a la Selector Terminal. Puede colocar
la Selector Terminal en cualquier parte del borde izquierdo de la Estructura de Casos. Si el tipo de datos
de la terminal del selector es Booleano, la estructura tiene un caso TRUE o un caso FALSE. Si la Selector
Terminal es un entero, secuencia o valor de tipo enumerado, la estructura tiene cualquier número de casos.
Nota: Los valores de cadena de caracteres que cablea a la terminal del selector son sensibles a las mayúscu-
las/minúsculas de forma predeterminada. Para mostrar resultados no sensibles a las mayúsculas/minúsculas,
cablee un valor de caracteres a la terminal del selector, haga clic con botón derecho en el borde de la estructura
de Casos y seleccione Case Insensitive Match del menú.
Si no especifica un caso de forma predeterminada para la estructura de Casos para manejar los valores fuera
del rango, debe enlistar de forma explícita cada valor de entrada. Por ejemplo, si el selector es un entero y
usted especifica los casos para 1, 2 y 3, debe especificar un caso de forma predeterminada a ejecutar si el
valor de entrada es 4 o cualquier otro valor entero no especificado.
Nota: Usted no puede especificar un caso de forma predeterminada si cablea un control Booleano al selector.
Si hace clic con botón derecho en la etiqueta del selector de casos, Make This The Default Case no aparece en
el menú de acceso directo. Haga el control Booleano TRUE o FALSE para determinar cuál caso se ejecuta.
Haga clic con botón derecho en el borde de la estructura de Casos para añadir, duplicar, eliminar o reorganizar
casos, así como para seleccionar un caso predeterminado.
2.2.2. Tuneles
Los túneles son los terminales que alimentan los datos dentro y fuera de las estructuras. Los túneles se ubican
en el borde de la estructura.
In tunnels: permiten transferir datos hacia la estructura, generalmente se ubican en el borde izquierdo
de la estructura.
23
2. Estructuras de Control
Out tunnels: permiten transferir datos desde la estructura, generalmente se ubican en el borde derecho
de la estructura
Estructuras secuenciales staked: Consiste de uno o más subdiagramas o frames que ejecutan secuencial-
mente. Clic derecho al borde de la estructura para añadir y borrar un frame o para crear secuencias
locales o para pasar datos entre frames. Usa la estructura Stacked Sequence para asegurar que un
subdiagrama ejecuta antes o después de otro subdiagrama.
Para desplazarse por los subdiagramas disponibles, haga clic en las flechas decremento e incremento en
la etiqueta del selector. Usted puede agregar, duplicar, reorganizar o eliminar los subdiagramas. Puede
utilizar un terminal local secuencia para pasar datos de un cuadro a cualquier trama posterior.
Utilice la estructura Stacked sequence si quieres ahorrar espacio en el diagrama de bloques. Utilice la
estructura de secuencia plana para evitar el uso secuencia locales y para documentar mejor el diagrama
de bloques.
24
2.4. Estructuras de evento
Puede configurar un solo caso de evento para manejar varios eventos, pero sólo uno de estos eventos dentro
del caso de evento puede ocurrir a la vez. Debe colocar la estructura Evento en un bucle While para manejar
varios eventos.
2. El terminal de Tiempo de espera especifica el número de milisegundos que debe esperar un evento
antes de que se produzca el tiempo de espera. Si alinea un valor al terminal de tiempo de espera, debe
proporcionar un caso de evento de tiempo de espera para evitar un error.
3. Los terminales de eventos dinámicos aceptan un refnum de registro de eventos o un grupo de refnums
de registro de eventos para el registro de eventos dinámicos. Si conecta el terminal interior correcto, ese
terminal ya no lleva los mismos datos que el terminal izquierdo. Puede conectar el refnum de registro de
eventos o el grupo de refnums de registro de eventos al terminal interior derecho a través de una función
Register For Events y modificar el evento dinámicamente. Dependiendo de la paleta desde la que se
selecciona la estructura de eventos, es posible que los terminales de eventos dinámicos no aparezcan de
forma predeterminada. Para mostrar estos terminales, haga clic con el botón derecho del ratón en la
estructura Evento y seleccione Mostrar terminales de eventos dinámicos en el menú contextual.
4. El nodo de datos de eventos identifica los datos que LabVIEW devuelve cuando se produce un evento. Al
igual que la función Unbundle By Name, puede cambiar el tamaño del nodo verticalmente y seleccionar
los elementos que necesita. Utilice el nodo de datos de eventos para acceder a elementos de datos de
eventos, como Tipo y hora, que son comunes a todos los eventos. Otros elementos de datos de eventos,
como Char y VKey, por ejemplo, varían según el evento que configure.
5. El nodo de filtro de eventos identifica los datos de eventos que puede modificar antes de que la interfaz
de usuario pueda procesar esos datos. Este nodo aparece en casos de estructura de sucesos que manejan
eventos de filtro. Si desea cambiar los datos de eventos, puede cablear y modificar elementos de datos
del nodo de datos de eventos al nodo de filtro de eventos. También puede cambiar los datos del evento
mediante el cableado de nuevos valores a los terminales del nodo. Para descartar completamente un
evento, cable un valor VERDADERO a la Descartar? terminal. Si no envía un valor a un elemento de
datos del nodo Filtro de eventos, ese elemento de datos permanece sin cambios.
25
2. Estructuras de Control
6. Al igual que una estructura Case, la estructura Event soporta túneles. Sin embargo, de forma predeter-
minada no tiene que conectar los túneles de salida de estructura de eventos en todos los casos. Todos
los túneles sin cable utilizan el valor predeterminado para el tipo de datos del túnel. Haga clic con el
botón derecho del ratón en un túnel y anule la selección de Usar predeterminado si no está cableado en
el menú contextual para volver al comportamiento de estructura de casos predeterminado en el que los
túneles deben estar cableados en todos los casos. También puede configurar los túneles para conectar
los túneles de entrada y salida automáticamente en casos no conectados.
26
2.6. Expression nodes
27
Capítulo
Manejo de ficheros
Las operaciones de entrada/salida con ficheros nos permiten almacenar y recuperar información desde un
disco. LabVIEW presenta una gran variedad de funciones para tratar diferentes tipos de operaciones con
ficheros. Estas funciones se encuentran en File I/O (entrada salida de ficheros) del menú de funciones.
Open/Create/Replace File Function Abre un archivo existente, se crea un nuevo archivo, o re-
emplaza un archivo existente, mediante programación o de
forma interactiva utilizando un cuadro de diálogo de archivo.
Build Path Function Crea una nueva ruta añadiendo un nombre (o ruta relativa)
a una ruta existente.
Read from Text File Function Lee un número determinado de caracteres o líneas de un
archivo de flujo de bytes.
Write to Text File Function Escribe una cadena o una matriz de cadenas como líneas en
un archivo.
Close File Function Cierra un archivo abierto especificado por refnum y devuelve
la ruta de acceso al archivo asociado a la refnum.
3.1.2. Aplicación
Estructura de datos
29
3. Manejo de ficheros
Lectura de datos
Una sola gráfica: El waveform graph acepta varios tipos de datos para plotear una gráfica. El graph
acepta un solo array de valores, interpreta los datos como puntos en la grafica, e incrementa el índice
x de uno en uno empezando en la posición x = 0.
30
3.2. Gráficos y tablas
El graph también acepta wl tipo de dato waveform, que porta la data, en un tiempo de inico, un delta t de
una forma de onda.
El gráfico de forma de onda también acepta el tipo de datos dinámico, que es para uso con VIs Express. x.
Multiples gráficas: El gráfico de forma de onda acepta varios tipos de datos para mostrar múltiples
gráficos. El gráfico de forma de onda acepta una matriz 2D de valores, donde cada fila de la matriz es
un solo gráfico.
3.2.1.2. Charts
El gráfico de forma de onda es un tipo especial de indicador numérico que muestra una o más gráficas de
datos típicamente adquiridos a una velocidad constante. El siguiente panel frontal muestra un ejemplo de un
gráfico de forma de onda.
31
3. Manejo de ficheros
Multiples gráficas: Es posible dibujar varias gráficas en un mismo chart, uniendo los datos de cada gráfica
en un cluster de escalares numéricos de forma que cada escalar que contiene el cluster se considera como
un punto de cada una de las gráficas para una misma abscisa.
32
3.4. Temporización
3.4. Temporización
3.4.1. Funciones de temporización
3.4.1.1. Tick Count (ms)
Retorna el valor del tiempo en ms
3.4.1.3. Wait
Espera el número especificado de milisegundos y devuelve el valor del temporizador de milisegundos.
33
3. Manejo de ficheros
34
3.5. Subvi
Convierte un clúster de valores de tiempo en una marca de tiempo, medida como el número de segundos
transcurridos desde las 12:00 a.m., el viernes, 1 de enero de 1904, hora universal, suponiendo que DST se
establezca en 1.
3.5. Subvi
3.5.1. Definición
Un SubVi es un VI que puede ser llamado por otros VI. El SubVI es similar a una función individual.
Cree iconos personalizados para reemplazar el icono predeterminado haciendo clic con el botón derecho en el
icono en la esquina superior derecha del panel frontal o diagrama de bloques y seleccionando Editar icono.
También puede hacer esto haciendo doble clic en el icono en la esquina superior derecha del panel frontal.
Si abre el Editor de iconos, tiene muchas herramientas para crear un icono personalizado o importar una
imagen.
35
3. Manejo de ficheros
Debe crear un panel de conector, que se muestra una continuación, para utilizar el VI como subVI. El panel
conector es una representación visual de cómo las entradas y salidas están conectadas al subVI desde el VI
llamante.
1. Haga clic con el botón derecho en el icono en la esquina superior derecha del panel frontal.
3. Puede seleccionar un patrón diferente haciendo clic con el botón derecho en el panel del conector y
seleccionando Patrones.
36
3.5. Subvi
Cada rectángulo en el panel del conector representa un terminal. Utilice los rectángulos para asignar entradas
y salidas.
El panel frontal siguiente tiene cuatro controles y un indicador, por lo que LabVIEW muestra cuatro termi-
nales de entrada y un terminal de salida en el panel del conector.
37
3. Manejo de ficheros
Tenga en cuenta que el color del terminal cambia al del tipo de datos al que lo ha conectado. También puede
seleccionar primero el control o el indicador y luego seleccionar el terminal.
3. Haga clic en un espacio abierto en el panel frontal para anular la selección del control.
4. Repita estos pasos para todos los controles e indicadores que utilizará para pasar datos hacia y desde el
VI llamante.
2. Navegue hasta el VI
38
3.5. Subvi
39
Capítulo
Coloque la variable local en el diagrama, selecciona la variable a la que desea vincular y si quiere
leer/escribir
41
4. Programación nivel intermedio
También puede seleccionar una variable local en la paleta Funciones y colocarla en el diagrama de bloques.
El nodo de variable local, mostrado como sigue, aún no está asociado con un control o indicador.
Para asociar una variable local a un control o indicador, haga clic con el botón secundario en el nodo de la
variable local y seleccione
Seleccionar elemento en el menú contextual. El menú de acceso directo ampliado enumera todos los objetos
del panel frontal que tienen etiquetas de propiedad.
LabVIEW utiliza etiquetas propias para asociar variables locales con objetos del panel frontal, por lo que
etiquete los controles del panel frontal y los indicadores con etiquetas descriptivas.
Haga doble clic en el nodo de la variable global para mostrar el panel frontal del VI global. Coloque los
controles e indicadores en este panel frontal de la misma manera que lo hace en un panel frontal estándar.
LabVIEW utiliza etiquetas propias para identificar variables globales, por lo que etiquete los controles e
indicadores del panel frontal con etiquetas descriptivas.
42
4.3. Nodos de propiedad
Puede crear varios VIs globales únicos, cada uno con un objeto del panel frontal o, si desea agrupar variables
similares, puede crear un VI global con varios objetos del panel frontal.
Después de terminar de colocar objetos en el panel frontal de VI global, guárdelo y vuelva al diagrama de
bloques del VI original. A continuación, debe seleccionar el objeto en el VI global al que desea acceder. Haga
clic en el nodo de la variable global y seleccione un objeto del panel frontal en el menú contextual. El menú
contextual muestra todos los objetos del panel frontal del VI global que poseen etiquetas. También puede
hacer clic con el botón secundario en el nodo de la variable global y seleccionar un objeto del panel frontal
en el menú contextual Seleccionar elemento.
Si crea una copia de un nodo de variable global, LabVIEW asocia el nuevo nodo de variable global con el VI
global del nodo de variable del que lo copia.
43
4. Programación nivel intermedio
Cada error tiene un código numérico y un mensaje de error correspondiente. LabVIEW maneja automá-
ticamente, de forma pre determinada, cualquier error cuando se ejecuta un VI al suspender la ejecución,
identificando el subVI o función donde ocurrió el error y mostrando una ventana de diálogo de error.
Para deshabilitar el manejo automático de errores para el VI actual, seleccione File»VI Properties y seleccione
Execution en el menú de acceso directo Category. Para deshabilitar el manejo de errores automático para
cualquier VI en blanco que usted crea, seleccione Tools»Options y seleccione Block Diagram en la lista
Category. Para deshabilitar el manejo automático de errores para un subVI o función en un VI, cablee su
parámetro error out al parámetro error in para otro subVI o función o a un indicador error out.
Puede escoger otros métodos de manejo de errores. Por ejemplo, si un VI de E/S en el diagrama de bloques
se multiplica, usted no querrá que la aplicación completa se detenga y muestre una ventana de diálogo de
error. También puede querer que el VI intente nuevamente en un cierto periodo de tiempo. En LabVIEW,
puede realizar estas decisiones de manejo de error en el diagrama de bloques del VI.
Use los VIs del manejo de errores de LabVIEW y las funciones en la paleta Dialog & User Interface y los
parámetros error in y error out de la mayoría de los VIs y las funciones para manejar errores. Por ejemplo, si
LabVIEW encuentra un error, puede mostrar el mensaje de error en diferentes tipos de ventanas de diálogo.
Utilice el manejo de errores con las herramientas de depuración para encontrar y manejar errores.
Cuando realice cualquier tipo de entrada y salida E/S, considere la posibilidad de que pueden ocurrir errores.
Casi todas las funciones de E/S regresan información de error. Incluyendo la verificación de errores en los VIs,
especialmente para operaciones de E/S (archivo, serial, instrumentación, adquisición de datos y comunicación)
y proporciona un mecanismo para manejar errores apropiadamente.
Use los VIs del manejo de errores de LabVIEW, funciones y parámetros para manejar errores. O puede
arreglar el error de forma programática y después borrar el error al cablear la salida error out del subVI
o función a la entrada error in del Clear Errors VI. Utilice el manejo de errores con las herramientas de
depuración para encontrar y manejar errores.
44
4.4. Gestión de errores
Code es un entero firmado de 32 bits que identifica el error de forma numérica. Un código de error no
igual a cero unido a un estatus FALSE emite una advertencia más que un error.
45
4. Programación nivel intermedio
2. Se abrirá el cuadro de diálogo, pidiendo crear un nuevo archivo de error o abrir existente. Cree un nuevo
archivo haciendo clic en nuevo, ingrese todos los errores y guarde en el formato como <FileName> -errors.txt
en el directorio <directorio de LabVIEW> \ user.lib \ errors
3. Si se hace clic en un archivo existente, se le pedirá al usuario que seleccione un archivo. A continuación, se
cargará el editor de código de error con todos los errores definidos por el usuario definido en ese archivo.
4. En ese archivo podemos agregar nuevos errores o eliminar errores.
46
4.5. Librerias dinámicas (.dll)
Básicamente un DLL es un archivo por lo general común en Windows creado para evitar la saturación de
Memoria RAM producto a la demanda de archivos con las mismas funciones por programas diferentes.
Así, si un programa que instalamos demanda a que el sistema tenga que calcular cierta información, y otro
programa totalmente diferente requiere la misma necesidad, todo esto se hace con el mismo archivo y así
ahorrar memoria en el Sistema.
Creando una DLL:
1. Para crear una dll utilizamos el Software, creamos nuevo proyecto seleccionamos la plantilla para creación
de dll.
47
4. Programación nivel intermedio
7. Para finalizar le damos clic en Construir proyecto, la dll se a creado en la carpeta bin de nuestro proyecto.
INVOCANDO UNA DLL
Para invocar una dll utilizamos la función Call Library Function Node
48
4.5. Librerias dinámicas (.dll)
En la pestaña Function Seleccionamos la ruta de nuestra dll y seleccionamos la funcion de nuestra dll
Luego vamos a la pestaña Parameters y configuramos a la función con los parámetros con los que se
había creado la dll y luego clic en ok
49
4. Programación nivel intermedio
50
Capítulo
5.1. Definición
Serial es un protocolo muy común, que no debe confundirse con Universal Serial Bus (USB), para la comuni-
cación dispositivo que viene de serie en casi todos los PC. La mayoría de las computadoras incluyen puertos
serie basados en RS-232. Serial es también un protocolo de comunicación común que se utiliza por muchos
dispositivos para la instrumentación; numerosos dispositivos compatibles con GPIB también vienen con un
puerto RS-232. Además, la comunicación en serie se puede utilizar para la adquisición de datos en conjunción
con un dispositivo de muestreo remoto.
El concepto de comunicación en serie es simple. El puerto serie envía y recibe bytes de información de un bit
a la vez. Aunque esto es más lento que la comunicación en paralelo, lo que permite la transmisión de un byte
de todo a la vez, es más simple y se puede utilizar en distancias más largas. Por ejemplo, las especificaciones
IEEE 488 para el estado de la comunicación en paralelo que el cableado entre equipos pueden ser no más de
20 metros totales, con no más de 2 metros entre dos dispositivos; Sin embargo, serial puede extender hasta
1.200 metros.
Típicamente, serial se utiliza para transmitir datos ASCII. La comunicación se completa con 3 líneas de
transmisión: (1) tierra, (2) Transmitir, y (3) Recibir. Ya que el serial es asíncrono, el puerto es capaz de
transmitir datos en una línea, mientras que la recepción de datos en otro. Otras líneas están disponibles para
“handshaking”, pero no son necesarios.
Las características de serie importantes son la velocidad de transmisión, bits de datos, bits de parada y la
paridad. Durante dos puertos para comunicarse, estos parámetros deben coincidir:
Data bits (bits de datos) Los bits de datos es una medida de los bits de datos actuales en una transmisión.
Cuando el equipo envía un paquete de información, la cantidad de datos actuales no puede ser un total
de 8 bits.
Los valores estándar para los paquetes de datos son 5, 7, y 8 bits. La configuración que elija dependerá
de la información que está transfiriendo. Por ejemplo, ASCII estándar tiene valores de 0 a 127 (7 bits).
51
5. Protocolo de Comunicación Serial
ASCII extendido utiliza 0 a 255 (8 bits). Si los datos son transferidos son de texto simple (ASCII
estándar), entonces el envío de 7 bits de datos por paquete es suficiente para la comunicación.
Un paquete se refiere a una única transferencia de bytes, incluyendo el arranque / stop bits, bits de
datos y paridad. Dado que el número de bits actuales dependen del protocolo seleccionado, el término
paquete se utiliza para cubrir todos los casos.
Stop bits (bits de parada) Bits de parada se utiliza para indicar el final de la comunicación para un
único paquete. Los valores típicos son 1, 1,5 y 2 bits. Dado que los datos se sincroniza a través de las
líneas y cada dispositivo tiene su propio reloj, es posible que dos dispositivos esten ligeramente fuera de
sincronización. Por lo tanto, los bits de parada no sólo indican el final de la transmisión, sino también
dar a los ordenadores cierto margen de error en las velocidades de reloj. Cuantos más bits se utilizan
para los bits de parada, mayor es la indulgencia en la sincronización de los relojes diferentes, pero es
más lenta la velocidad de transmisión de datos.
RS-232 (ANSI / EIA-232 Standard) es la conexión serie que se encuentra en los ordenadores compatibles con
IBM. Se utiliza para muchos propósitos, tales como la conexión de un ratón, una impresora o un módem,
así como la instrumentación industrial. Debido a las mejoras en los conductores de línea y los cables, las
aplicaciones suelen aumentar el rendimiento de RS-232 más allá de la distancia y la velocidad que aparece
en la norma. RS-232 se limita a punto a punto las conexiones entre los puertos y dispositivos en serie de PC.
Hardware RS-232 se puede utilizar para la comunicación serial hasta distancias de 50 pies. La siguiente figura
detalla la asignación de pines de un conector DB-9 se utiliza para la comunicación RS-232:
52
5.3. Envio y Recepcion de datos utilizando puertos virtuales
53
5. Protocolo de Comunicación Serial
Seleccione la opción Device>>Create. . . o de clic al ícono encerrado en un cuadrado rojo como se muestra
en la figura. Le aparecerá una pantalla donde en la parte de Device Type tiene configurado por defecto
Connector, seleccione la opción Pair y haga clic en Siguiente.
El seleccionar un par significa que vamos a utilizar un COM para transmitir y otro COM para recibir, por lo
tanto tenemos que escoger los COM a utilizar, en caso tenga puertos físicos estos no aparecerán en la elección.
Para el caso de ésta máquina no cuenta con puertos físicos por la tanto escogeré COM2 y COM3 como se
muestra en la siguiente figura, y luego damos click a finalizar.
Finalmente observará en la pantalla principal del programa que se creó un par de puerto virtuales COM2 y
COM3, debe entender que la transmisión se va a realizar por uno de ellos y la recepción por el otro.
54
5.3. Envio y Recepcion de datos utilizando puertos virtuales
Por defecto VISA Configure Serial Port VI, viene configurado como se muestra:
Antes de ejecutar la aplicación seleccionamos el puerto a utilizar, si el puerto que hemos de manera virtual
no se visualiza, click en refresh para actualizar la lista de puerto serie.
55
5. Protocolo de Comunicación Serial
56
5.4. Envio y recibo de datos de una PC a tarjeta Arduino
57
5. Protocolo de Comunicación Serial
58