Está en la página 1de 24

Manual de curso de LabVIEW Core 2

Instituto tecnológico de estudios


superiores de Zamora
Ingeniería electrónica

Alumnos:
Juan Emmanuel Gutiérrez Cervantes
Fernanda Bravo López
Luis David Ramírez Pérez
José Enrique Granados Gallegos

Materia: Instrumentación Virtual

Traducción Core 2 / 4

Maestro: Hilito Barajas

1 de mayo del 2023

© Instrumentos Nacionales | 4- 2
Manual de curso de LabVIEW Core 2

4
Técnicas de E/S de archivos

Con frecuencia, la decisión de separar la producción de datos y el consumo de datos en


Se producen procesos separados porque debe escribir los datos en un archivo a medida
que se adquieren. En esos casos,
Debe elegir un formato de archivo. Esta lección explica datos ASCII, binarios y técnicos
Formatos de archivo de Management Streaming (TDMS) y cuándo cada uno es una
buena opción para su aplicación.

Temas
A. Comparar formatos de archivo
B. Crear rutas de archivos y carpetas
C. Escribir y leer archivos binarios
D. Trabajar con archivos de texto y encabezados multicanal
E. Acceda a archivos TDMS en labview y Excel

A. Comparar formatos de archivo


En su nivel más bajo, todos los archivos escritos en el disco duro de su computadora son
una serie de bits binarios.
Sin embargo, están disponibles muchos formatos para organizar y representar datos en
un archivo. En labview,
Tres de las técnicas más comunes para almacenar datos son el formato de archivo ASCII,
binario directo
Almacenamiento y el formato de archivo TDMS. Cada uno de estos formatos tiene
ventajas y algunos formatos funcionan
Mejor para almacenar ciertos tipos de datos que otros.
Cuándo usar archivos de texto (ASCII)

© Instrumentos Nacionales | 4- 3
Manual de curso de LabVIEW Core 2

Use archivos de formato de texto para sus datos para que estén disponibles para otros
usuarios o aplicaciones si hay espacio en el disco.
Y la velocidad de E/S del archivo no son cruciales, si no necesita realizar lecturas o
escrituras de acceso aleatorio, y
Si la precisión numérica no es importante.
Los archivos de texto son el formato más fácil de usar y compartir. Casi cualquier
computadora puede leer o escribir
A un archivo de texto. Una variedad de programas basados en texto pueden leer archivos
basados en texto.
Almacene datos en archivos de texto cuando desee acceder a ellos desde otra aplicación,
como una palabra
Procesamiento o aplicación de hoja de cálculo. Para almacenar datos en formato de
texto, utilice las funciones de cadena para
Convertir todos los datos en cadenas de texto. Los archivos de texto pueden contener
información de diferentes tipos de datos.
Los archivos de texto normalmente ocupan más memoria que los archivos binarios si
los datos no están originalmente en forma de texto,
Como datos de gráficos o tablas, porque la representación ASCII de los datos suele ser
más grande que los datos
Sí mismo. Por ejemplo, puede almacenar el número –123.4567 en 4 bytes como una
precisión simple,
Número de punto flotante. Sin embargo, su representación ASCII ocupa 9 bytes, uno
para cada carácter.
Además, es difícil acceder aleatoriamente a datos numéricos en archivos de texto.
Aunque cada personaje en
Una cadena ocupa exactamente 1 byte de espacio, el espacio requerido para expresar un
número como texto típicamente
No es fijo Para encontrar el noveno número en un archivo de texto, labview primero
debe leer y convertir el
Precediendo a los ocho números.
Puede perder precisión si almacena datos numéricos en archivos de texto. Las
computadoras almacenan datos numéricos como
Datos binarios y, por lo general, escribe datos numéricos en un archivo de texto en
notación decimal. Pérdida de precisión
No es un problema con los archivos binarios.

© Instrumentos Nacionales | 4- 4
Manual de curso de LabVIEW Core 2

Aplicaciones como Microsoft Excel. El modelo de datos TDMS ofrece varios beneficios únicos
tales como
Como la capacidad de escalar los requisitos de su proyecto y adjuntar fácilmente información
descriptiva a su
Mediciones mientras transmite sus datos al disco.
El formato de archivo TDMS consta de dos archivos: un archivo .tdms y un archivo
.tdms_index. Los .tdms
Archivo es un archivo binario que contiene datos y almacena propiedades sobre esos datos. El
archivo .tdms_index
Es un archivo de índice binario que acelera el acceso durante la lectura y proporciona
información consolidada sobre
Todos los atributos y punteros en el archivo TDMS. Toda la información en el archivo
.tdms_index es
También contenido en el archivo .tdms. Por esta razón, el archivo .tdms_index puede ser
automáticamente
Regenerado desde el archivo .tdms. Por lo tanto, cuando distribuye archivos TDMS, solo
necesita
Distribuir el archivo .tdms. La estructura interna del formato de archivo TDMS está
documentada públicamente,
Por lo que es posible crear programas de terceros para escribir y leer archivos TDMS. Además,
hay un omplemento TDM Excel.

B. Crear rutas de archivos y carpetas

Independientemente del formato de archivo que desee, a menudo necesita seleccionar un método
para crear nombres de archivo y directorios de destino.

Hasta este momento, ha utilizado File Dialog Express VI para especificar un nombre de archivo y
una ubicación.

El File Dialog Express VI permite al usuario especificar la ruta a un archivo o directorio. También
puede personalizar el cuadro de diálogo del archivo con indicaciones y opciones para limitar los
tipos de archivos con extensiones de archivo específicas, como *.txt para archivos de texto.

Sin embargo, a menudo es deseable crear carpetas y rutas de archivo mediante programación. Las
rutas codificadas de forma rígida son útiles para prototipos rápidos, pero no se recomiendan para
aplicaciones, ya que las estructuras de directorio pueden diferir de una máquina a otra.

© Instrumentos Nacionales | 4- 5
Manual de curso de LabVIEW Core 2

Por lo general, desea especificar una ubicación de directorio que sea relativa a una ubicación
conocida, como el directorio del proyecto o el directorio de documentos del usuario. Use
Application Directory VI junto con la función Build Path para especificar una ruta relativa al
directorio del proyecto. Si llama a este VI desde el entorno de desarrollo y el VI está cargado en
un archivo de proyecto de LabVIEW ( .lvproj ), este VI devuelve la ruta a la carpeta que
contiene el archivo de proyecto. Si llama a este VI desde una aplicación independiente, este VI
devuelve la ruta a la carpeta que contiene la aplicación independiente.
Utilice Get System Directory VI junto con la función Build Path para especificar una ruta relativa
a un directorio del sistema, como la carpeta de documentos del usuario o el escritorio del usuario.

Utilice la función Crear carpeta para crear una nueva carpeta. Sin embargo, si la carpeta ya existe
en la ubicación especificada, la función Crear carpeta devuelve un error en lugar de sobrescribir
la carpeta. Para evitar la condición de error, verifique si la carpeta existe para crear la carpeta
condicionalmente. La Figura 4-1 muestra cómo crear condicionalmente una carpeta llamada
"Datos registrados" que es relativa a la ruta del archivo del proyecto. Verificar si el archivo o la
carpeta existe.vi verifica si la carpeta "Datos registrados" existe en el disco en una ruta específica
y devuelve Verdadero si la carpeta existe o Falso si la carpeta no existe. Esta salida booleana luego
se conecta a la entrada de selección de una estructura Case. Solo si la carpeta aún no existe, se
llamará a la función Crear carpeta.
Figure 4-1. Create Folder Path

Además de especificar un directorio de carpetas consistente para sus archivos, a menudo es


deseable crear una serie de archivos con nombres únicos. Para ayudar a distinguir entre varios
archivos, es posible que desee incluir información de fecha y hora en el nombre del archivo.

La Figura 4-2 muestra cómo puede utilizar la función Formatear cadena de fecha/hora junto con
la función Formatear cadena para formatear una cadena de nombre de archivo que incluya la fecha
y la hora actuales. Puede personalizar el formato de fecha y hora utilizando una variedad de
códigos de formato de hora diferentes. Por ejemplo, los códigos de formato utilizados en la Figura
4-2 incluyen información sobre el mes, el día y el año junto con la información sobre la hora y los
minutos. Las fechas se pueden especificar en formato largo o formato abreviado. Las horas se
pueden especificar en formato de reloj de 24 horas o en formato de reloj de 12 horas. Consulte la
ayuda en el formato
Función de cadena de fecha/hora para todos los posibles códigos de formato de hora que se pueden
usar con esta función.

© Instrumentos Nacionales | 4- 6
Manual de curso de LabVIEW Core 2

Figure 4-2. Create Time and Data File Name

C. Escribir y leer archivos binarios

Aunque todos los métodos de E/S de archivos finalmente crean archivos binarios, puede
interactuar directamente con un archivo binario mediante las funciones de archivo binario. La
siguiente lista describe las funciones comunes que interactúan con los archivos binarios.

Abrir/Crear/Reemplazar archivo : abre una referencia a un archivo nuevo o existente para


archivos binarios como lo hace para archivos ASCII.

Escribir en archivo binario : escribe datos binarios en un archivo. La función funciona de manera
muy similar a la función Escribir en archivo de texto, pero puede aceptar la mayoría de los tipos
de datos.

Leer desde archivo binario : lee datos binarios a partir de su posición de archivo actual. Debe
especificar a la función el tipo de datos a leer. Use esta función para acceder a un solo elemento
de datos o conectar un valor a la entrada de conteo. Esto hace que la función devuelva una matriz
del tipo de datos especificado.

Obtener tamaño de archivo : devuelve el tamaño del archivo en bytes. Utilice esta función en
combinación con la función Leer desde archivo binario cuando desee leer todo un archivo binario.
Recuerde que si está leyendo elementos de datos que son más grandes que un byte, debe ajustar
el conteo para leer.

Obtener/Establecer posición de archivo : estas funciones obtienen y establecen la ubicación en


el archivo donde se realizan las lecturas y escrituras. Utilice estas funciones para el acceso
aleatorio a archivos.

© Instrumentos Nacionales | 4- 7
Manual de curso de LabVIEW Core 2

Cerrar archivo : cierra una referencia abierta a un archivo.

La figura 4-3 muestra un ejemplo que escribe una matriz de dobles en un archivo binario. Consulte
la sección Arreglos de esta lección para obtener más información sobre el tamaño de la cadena
o el arreglo antepuesto. opción.
Figure 4-3. Writing a Binary File

Representación binaria
Cada tipo de datos de LabVIEW se representa de una manera específica cuando se escribe en un
archivo binario. En esta sección se analiza la representación de cada tipo y cuestiones importantes
al tratar con la representación binaria de cada tipo.

Sugerencia Un bit es un único valor binario. Representado por un 1 o un 0, cada bit está
activado o desactivado. Un byte es una serie de 8 bits.

Valores booleanos
LabVIEW representa valores booleanos como valores de 8 bits en un archivo binario. Un valor
de todos los ceros representa Falso. Cualquier otro valor representa Verdadero. Esto divide los
archivos en fragmentos del tamaño de un byte y simplifica la lectura y el procesamiento de
archivos. Para almacenar valores booleanos de manera eficiente, convierta una serie de valores
booleanos en un número entero mediante la función Boolean Array To Number. La figura 4-4
muestra dos métodos para escribir seis valores booleanos en un archivo binario.
Figura 4-4. Escribir valores booleanos en un archivo binario

© Instrumentos Nacionales | 4- 8
Manual de curso de LabVIEW Core 2

La Tabla 4-2 muestra una representación binaria del contenido del archivo resultante de ejecutar
los programas de la Figura 4-4. Observe que el Método B es un método de almacenamiento más
eficiente.

Tabla 4-2. Resultados de la Figura 4-4


Método A 00000001 00000001 00000000 00000001 00000000 00000001
Método B 00101011
Enteros de 8 bits
Los enteros de 8 bits sin signo (U8) corresponden directamente a los bytes escritos en el archivo.
Cuando deba escribir valores de varios tipos en un archivo binario, convierta cada tipo en una
matriz de U8 utilizando las funciones Boolean Array To Number, String to Byte Array, Split
Number y Type Cast. Luego, puede concatenar las diversas matrices de U8 y escribir la matriz
resultante en un archivo. Este proceso no es necesario cuando escribe un archivo binario que
contiene solo un tipo de datos.

Tabla 4-3. Representación U8


Valor binario Valor U8

00000000 0
00000001 1
00000010 2

© Instrumentos Nacionales | 4- 9
Manual de curso de LabVIEW Core 2

11111111 255
Otros enteros
Los enteros de varios bytes se dividen en bytes separados y se almacenan en archivos en orden
de bytes little-endian o big-endian. Con la función Escribir en archivo binario, puede elegir si
desea almacenar sus datos en formato little-endian o big-endian.

El orden de bytes Little-endian almacena el byte menos significativo primero y el byte más
significativo al final. El orden big-endian almacena el byte más significativo primero y el byte
menos significativo al final.

Desde el punto de vista del hardware, los procesadores Intel x86 usan el orden de bytes little-
endian, mientras que Motorola, PowerPC y la mayoría de los procesadores RISC usan el orden de
bytes big-endian. Desde el punto de vista del software, LabVIEW utiliza el orden de bytes big-
endian cuando maneja y almacena datos en el disco, independientemente de la plataforma. Sin
embargo, el sistema operativo generalmente refleja el formato de orden de bytes de la plataforma
en la que se ejecuta. Por ejemplo, Windows que se ejecuta en una plataforma Intel generalmente
almacena datos en un archivo utilizando el orden de bytes little-endian. Tenga esto en cuenta
cuando almacene datos binarios en el disco. Las funciones de archivo binario de LabVIEW tienen
una entrada de orden de bytes que establece la forma endian de los datos.

Tabla 4-4. Representaciones enteras

Valor U32 Valor Little Endian Valor de extremo grande

0 00000000 00000000 00000000 00000000 00000000 00000000


00000000 00000000

1 00000001 00000000 00000000 00000000 00000000 00000000


00000000 00000001

255 11111111 00000000 00000000 00000000 00000000 00000000


00000000 11111111
Tabla 4-4. Representaciones enteras (continuación)

Valor U32 Valor Little Endian Valor de extremo grande

65535 11111111 11111111 00000000 00000000 00000000 11111111


00000000 11111111

4,294,967,295 11111111 11111111 11111111 11111111 11111111 11111111


11111111 11111111
Números de punto flotante

© Instrumentos Nacionales | 4- 10
Manual de curso de LabVIEW Core 2

Los números de coma flotante se almacenan como se describe en el estándar IEEE 754 para la
aritmética binaria de coma flotante. Los números de precisión simple usan 32 bits cada uno y los
números de precisión doble usan 64 bits cada uno. La longitud de los valores numéricos de
precisión extendida depende del sistema operativo.

Instrumentos de cuerda
Las cadenas se almacenan como una serie de números enteros de 8 bits sin signo, cada uno de los
cuales es un valor en la tabla de equivalentes de códigos de caracteres ASCII. Esto significa que
no hay diferencia entre escribir cadenas con las funciones de archivo binario y escribirlas con las
funciones de archivo de texto.

arreglos
Los arreglos se representan como una lista secuencial de cada uno de sus elementos. La
representación real de cada elemento depende del tipo de elemento. Cuando almacena una matriz
en un archivo, tiene la opción de preceder la matriz con un encabezado. Un encabezado contiene
un número entero de 4 bytes que representa el tamaño de cada dimensión. Por lo tanto, una
matriz 2D con un encabezado contiene dos números enteros, seguidos de los datos de la matriz.
La Figura 4-5 muestra un ejemplo de cómo escribir una matriz 2D de enteros de 8 bits en un
archivo con un encabezado. ¿ La matriz antepuesta o el tamaño de la cadena? la entrada de la
función Escribir en archivo binario habilita el encabezado. Tenga en cuenta que el valor
predeterminado de este terminal es True. Por lo tanto, los encabezados se agregan a todos los
archivos binarios de forma predeterminada.
Figura 4-5. Escribir una matriz 2D de enteros sin signo en un archivo con un encabezado

© Instrumentos Nacionales | 4- 11
Manual de curso de LabVIEW Core 2

La tabla 4-5 muestra el diseño del archivo que genera el código de la figura 4-5. Observe que
los encabezados se representan como números enteros de 32 bits aunque los datos sean
números enteros de 8 bits.

Tabla 4-5. Ejemplo de representación de matriz en archivo binario


4 3 1 2 3 4 5 6 7 8 9 10 11 12

Acceso Secuencial vs Aleatorio


Al leer un archivo binario, existen dos métodos para acceder a los datos. La primera es leer
cada elemento en orden, comenzando por el principio de un archivo. Esto se llama acceso
secuencial y funciona de manera similar a leer un archivo ASCII. El segundo es acceder a los
datos en un punto arbitrario dentro del archivo para acceso aleatorio. Por ejemplo, si sabe que
un archivo binario contiene una matriz 1D de enteros de 32 bits que se escribió con un
encabezado y desea acceder al décimo elemento de la matriz, puede calcular el
desplazamiento en bytes de ese elemento en el archivo. y luego leer solo ese elemento. En
este ejemplo, el elemento tiene un desplazamiento de 4 (el encabezado) + 10 (el índice de
matriz) × 4 (la cantidad de bytes en un I32) = 44.

Acceso secuencial
Para acceder secuencialmente a todos los datos de un archivo, puede llamar a la función
Obtener tamaño de archivo y usar el resultado para calcular la cantidad de elementos en el
archivo, según el tamaño de cada elemento y el diseño del archivo. Luego puede conectar el
número de elementos al terminal de conteo de la función Leer binario.

La Figura 4-6 muestra un ejemplo de este método.


Figure 4-6. Sequentially Reading an Entire File

Alternativamente, puede acceder secuencialmente al archivo un elemento a la vez llamando


repetidamente a la función Leer binario con el conteo predeterminado de 1. Cada operación de
lectura actualiza la posición dentro del archivo para que lea un nuevo elemento cada vez que
se llama a leer. Al utilizar esta técnica para acceder a los datos, puede comprobar el error de
fin de archivo después de llamar a la función Leer binario o calcular el número de lecturas
necesarias para llegar al final del archivo mediante la función Obtener tamaño de archivo.

Acceso aleatorio
Para acceder aleatoriamente a un archivo binario, use la función Establecer posición de archivo
para establecer el desplazamiento de lectura en el punto del archivo que desea comenzar a leer.
Observe que el desplazamiento está en bytes. Por lo tanto, debe calcular el desplazamiento
según el diseño del archivo. En la Figura 4-7, el VI devuelve el elemento del arreglo con el
índice especificado, asumiendo que el archivo fue escrito como un arreglo binario de números
de precisión doble sin encabezado, como el escrito en el ejemplo de la Figura 4-3.

© Instrumentos Nacionales | 4- 12
Manual de curso de LabVIEW Core 2

Figura 4-7. Acceso aleatorio a un archivo binario

D. Trabajar con archivos de texto y encabezados


multicanal

Agregar encabezados al archivo


Al guardar datos de medición en un archivo, a menudo desea incluir información sobre la
medición, como la hora de la prueba, el dispositivo de prueba, el operador de prueba, las
condiciones ambientales y las unidades de medición. Como vio anteriormente, es posible
codificar mediante programación parte de esta información en el nombre del archivo, como la
fecha y la hora. Sin embargo, cuanta más información tenga, más engorroso será codificar la
información en el nombre del archivo. Además, cuando abre el archivo, no tiene acceso
inmediato a la información. Por lo tanto, es útil incluir encabezados de archivos y canales con
los datos de medición.

Tabla 4-6. Sin datos de encabezado


24.45 34.54

23.41 35.32

22.97 35.98

21.56 36.76
Tabla 4-7. Datos de encabezado
Nombre del
David
operador
UUT S/N A1234
Nombre de la
Presión
prueba
Nombre del Canal Temperatura Presión

Unidades Kelvin PSI

máx. Valor 24.45 36.76

24.45 34.54
Tabla 4-7. Datos de encabezado (continuación)

© Instrumentos Nacionales | 4- 13
Manual de curso de LabVIEW Core 2

23.41 35.32

22.97 35.98

21.56 36.76
Usted crea encabezados para ayudar a comprender los datos.

Esta sección mostrará a los estudiantes cómo crear archivos de texto que incluyan encabezados
y múltiples canales de datos usando una combinación de tabulaciones (o comas) y caracteres
de retorno de carro/avance de línea.

Como ve en los ejercicios y demostraciones, la creación de encabezados en archivos de texto


puede volverse engorrosa, especialmente si desea crear módulos genéricos para crear los datos.

Los archivos TDMS pueden ser una mejor solución para crear archivos con encabezados
complejos o dinámicos, y los estudiantes deben comprender los beneficios de usarlos.

Por ejemplo, si se recopilan datos durante un largo período de tiempo y desea crear entradas
para los valores máximos medidos, ¿guarda todos los datos en la memoria, calcula el valor
máximo y lo escribe en un archivo ?

Otra opción sería escribir los datos en un archivo, calcular el valor máximo cuando finalice la
prueba y crear otro archivo que incluya los valores.

Un archivo TDMS permite al desarrollador escribir datos y modificar las propiedades


(encabezados) en cualquier momento.
National Instruments ha hecho todo el trabajo duro de realizar un seguimiento de la ubicación

del encabezado en el archivo. Los nuevos desarrolladores de LabVIEW típicamente escriben

un código similar al que se muestra en la Figura 4-8.

Figure 4-8. Generate File Header

Puede utilizar una función Format Into String para crear una línea de texto delimitada por
tabuladores. Este método puede dificultar la depuración y modificación del código para
cadenas complejas. Además, agregar nuevas cadenas al encabezado requiere mucho trabajo.
En otras palabras, el código no es muy escalable.

© Instrumentos Nacionales | 4- 14
Manual de curso de LabVIEW Core 2

Un enfoque modular, como se muestra en la Figura 4-9, es más escalable y más fácil de
administrar.

El uso de un subVI, que se muestra en la Figura 4-10, para agregar datos a la cadena e incluir
el separador de columnas (tabulador o coma) hace que el diagrama sea mucho más fácil de
leer.

Si es necesario cambiar el separador de columnas, solo se debe modificar un VI.


Figura 4-9. Escriba varios canales con encabezados simples

Figure 4-10. Format File Properties SubVI

Escribir datos multicanal


LabVIEW almacena arreglos multidimensionales en orden de fila principal.

Las filas se identifican por el primer índice de una matriz 2D y las columnas por el segundo
índice.

Por ejemplo, un arreglo 2D de 2x3 elementos en LabVIEW se ve así:


1 2 3
4 5 6
Representar una matriz de elementos de 2x50 sería más ancho que el ancho de esta
página. Por lo general, al ver datos de medición en un archivo, ve los datos en
formato de columna principal. Transponga los datos, como se muestra en la Figura
4-11, antes de escribir en el archivo para ver los datos del canal en formato de
columna. Después de transponer la matriz, convierta los datos numéricos en datos
de cadena mediante la función Matriz a cadena de hoja de cálculo. Esta función
convierte una matriz en una tabla en forma de cadena. Para arreglos bidimensionales,

© Instrumentos Nacionales | 4- 15
Manual de curso de LabVIEW Core 2

la tabla resultante separa los elementos de columna con un delimitador especificado


por el usuario y separa las filas con un carácter EOL. El separador de columnas
predeterminado es un carácter de tabulación.
Figura 4-11

Leer datos y extraer información


La mayoría de las veces, los usuarios desean registrar datos en un archivo para poder
compartirlos con otros o verlos en otras aplicaciones. A menudo es útil volver a leer los
datos en LabVIEW para futuros análisis. Por ejemplo, después de registrar varios datos de
prueba en un archivo, es posible que desee volver a leer las pruebas en LabVIEW para
realizar un análisis comparativo. Si el archivo se creó utilizando la función Array to
Spreadsheet String o la función Write to Spreadsheet File, puede realizar fácilmente la
operación inversa utilizando la función Spreadsheet String to Array o Read from
Spreadsheet File. Una vez que los datos están en una tabla de cadenas, es posible que desee
extraer información específica mediante programación o seleccionar canales de datos. Esto
requiere que haya formateado archivos de manera consistente y que tenga conocimiento del
formato de archivo.
Por ejemplo, suponga que tiene archivos que contienen datos de medición multicanal con
dos filas de información de encabezado. Después de leer el archivo en LabVIEW usando la
función Leer desde archivo de hoja de cálculo, desea ignorar la información del encabezado
y leer solo los datos de medición. El enfoque más simple es usar la función Array Subset
para omitir las dos primeras filas de datos. La Figura 4-12 muestra cómo extraer datos de
medición de una tabla de cadenas que incluye información de encabezado (representada por
elementos "X").
Figura 4-12

El problema con este enfoque es que no es muy escalable. Con el tiempo, decide almacenar
más de dos filas de información de encabezado. Considere los datos de medición que se
muestran en la Figura 4-13. Considere que tiene un número variable de propiedades de
encabezado de archivo. ¿Cómo podría extraer mediante programación un valor de propiedad
específico dado el nombre de la propiedad? Por ejemplo, ¿cómo podría leer mediante

© Instrumentos Nacionales | 4- 16
Manual de curso de LabVIEW Core 2

programación el valor del número de serie de UUT? ¿O cómo puede extraer


programáticamente un solo canal de datos?
Figura 4-13 tabla de cadena de caracteres

Dado un nombre de propiedad, encuentre el valor


Para extraer mediante programación un valor de propiedad de archivo, desea buscar una
coincidencia de nombre de propiedad en la primera columna. Luego lea el valor asociado
en la segunda columna. El código de la Figura 4-14 muestra cómo puede hacer esto en
LabVIEW.
Figura 4-14 programáticamente extraer un valor de propiedad de un archivo

Primero usa la función Index Array para colocar la columna 0 en una matriz 1D. Puede
extraer una matriz 1D de una matriz 2D dejando uno de los terminales de índice sin cablear.
En este caso, puede extraer la primera columna especificando 0 en el índice de la columna
y dejando el índice de la fila sin cablear.
Utilice la función Buscar matriz 1D para encontrar una coincidencia de nombre de propiedad
en la matriz. La función Buscar matriz 1D busca un elemento en una matriz 1D que
comienza en el índice de inicio. Debido a que la búsqueda es lineal, no necesita ordenar la
matriz antes de llamar a esta función. LabVIEW deja de buscar tan pronto como se encuentra
el elemento. Si se encuentra el elemento, la función devuelve el índice donde se encuentra
el elemento. El índice representa el índice de fila en la matriz de cadenas 2D. Luego puede
usar la función Index Array nuevamente y especificar el índice de fila devuelto por la
función Search 1D Array y un índice de columna de 1 para extraer un elemento específico.
Si la función Buscar matriz 1D no encuentra una coincidencia, la función devuelve un valor
de -1. Para evitar errores inesperados en su aplicación, debe verificar el valor de -1 antes de
continuar con su código. En este caso, es posible que desee forzar un error si la función
Buscar matriz 1D devuelve un –1.

© Instrumentos Nacionales | 4- 17
Manual de curso de LabVIEW Core 2

Extraer un canal de datos


Si tiene un número variable de propiedades de archivo que preceden a los datos de medición
en un archivo, como se muestra en la Figura 4-15, no puede confiar en el índice de fila
codificado para representar el inicio de los datos de medición. Un enfoque para hacer que el
código sea más escalable es marcar el inicio de los datos. Por ejemplo, en la Figura 4-13, la
fila directamente encima del inicio de los datos de medición incluye la entrada Datos del
canal. Si puede detectar la entrada de datos del canal, sabrá que los datos de medición
comienzan en la fila siguiente.
Puede usar la misma técnica para hacer coincidir un Nombre de propiedad para detectar la
entrada "Datos del canal" en la columna 0. Luego puede usar la función Array Subset para
extraer todos los datos de medición a partir de la siguiente fila. La Figura 4-15 muestra cómo
extraer una columna de los datos de medición.
Figura 4-15 Extraer un canal de datos

E. Acceso de archivos TDMS en LabVIEW y Excel


Como se vio en la sección anterior, cuanta más información incluya en sus datos de medición
más complejo será el archivo. Además de las propiedades del archivo, a menudo es deseable
almacenar propiedades específicas de canal tales como el nombre de dicho canal, unidades
de medida, los límites de prueba, y la información del sensor. Cuanta más información más
compleja es el formato del archivo a la hora de escribir información y datos en el archivo,
así como el análisis del archivo al leer de nuevo los datos y la información en LabVIEW.
Para reducir la necesidad de diseñar y mantener su propio formato de archivo de datos,
utilice el formato de archivo TDMS. Este formato fue diseñado específicamente para
guardar los datos de mediciones en el disco del ordenador.

Creación de archivos TDMS

En LabVIEW, puede crear archivos TDMS de dos modos. Use el VI Express Write to
Measurement File y VI Express Read from Measurement File o la API TDM Streaming.
Con los Express VIs puede guardar y recuperar rápidamente datos del formato TDMS. La
Figura 4-16 muestra el cuadro de diálogo de configuración para Write to Measurement File
Express VI. Tenga en cuenta que puede elegir crear un archivo de datos de medición (LVM)
de LabVIEW o un tipo de archivo TDMS. Sin embargo, estos Express VI le brindan poco
control sobre la agrupación y las propiedades de sus datos y no le permiten usar algunas de

© Instrumentos Nacionales | 4- 18
Manual de curso de LabVIEW Core 2

las funciones que hacen que los archivos TDMS sean útiles, como definir nombres de
canales y nombres de grupos de canales.
Figura 4-16. Creación de un TDMS con el VI Express Write to Measurement File

Para obtener acceso a todas las funciones de los archivos TDMS, utilice las funciones de
transmisión TDM. Utilice las funciones de TDM Streaming para adjuntar información
descriptiva a sus datos y guardar y recuperar datos rápidamente. Algunas de las funciones
de TDM Streaming comúnmente utilizadas se describen en la sección API de TDMS de esta
lección.

Jerarquía de datos
Utilice archivos TDMS para organizar sus datos en canales y grupos de canales.
Un canal almacena señales de medición o datos sin procesar en un archivo TDMS. La señal
es una matriz de datos de medición. Cada canal también puede tener propiedades que
describen los datos. Los datos almacenados en la señal se almacenan como datos binarios
en el disco para conservar el espacio en disco y la eficiencia.
Un grupo de canales es un segmento de un archivo TDMS que contiene propiedades para
almacenar información, así como uno o más canales. Puede usar grupos de canales para
organizar sus datos y almacenar información que se aplica a múltiples canales.
Los archivos TDMS contienen tantos grupos de canales y objetos de canales como desee.
Cada uno de los objetos en un archivo tiene propiedades asociadas, lo que crea tres niveles
de propiedades que puede usar para almacenar datos. Por ejemplo, las condiciones de prueba
se almacenan a nivel de archivo. La información de UUT se almacena en el nivel de canal
o grupo de canales. Almacenar mucha información sobre sus pruebas o mediciones puede
facilitar el análisis.

© Instrumentos Nacionales | 4- 19
Manual de curso de LabVIEW Core 2

TDMS API
A continuación, se describen algunas de las funciones y los VI de TDM Streaming más
utilizados.
• TDMS Open---Abre una referencia a un archivo TDMS para lectura o escritura.

• TDMS Write---Transmite datos al archivo TDMS especificado. También te permite crear


canales y grupos de canales dentro de su archivo.

• TDMS Read---Lee el archivo TDMS especificado y devuelve datos del canal especificado
y/o grupo de canales.

• TDMS Set Properties---Establece las propiedades del archivo TDMS especificado, grupo
de canales o canal.

• TDMS Get Properties---Devuelve las propiedades del archivo TDMS, grupo de canales o
canal.

• TDMS Close---Cierra una referencia a un archivo TDMS. Note que solo debe cerrar el
archivo referencia, cualquier referencia que adquiera a canales y grupos de canales se cerrará
automáticamente cuando cierra la referencia del archivo.

• TDMS File Viewer---Abre el archivo TDMS especificado y presenta los datos del archivo
en el TDMS cuadro de diálogo Visor de archivos.

• TDMS List Contents---Proporciona una lista de nombres de grupos y canales contenidos


en el archivo TDMS especificado.

• TDMS Defragment---Desfragmenta los datos del archivo en los datos TDMS


especificados. Usa esta función para limpiar sus datos TDMS cuando se desordenan y para
aumentar el rendimiento.

© Instrumentos Nacionales | 4- 20
Manual de curso de LabVIEW Core 2

• TDMS Flush---Vacía la memoria del sistema de todos los datos TDMS para mantener la
seguridad de los datos.

Programando TDMS
Escribir un archivo TDMS
La figura 4-17 muestra la forma más sencilla de escribir datos de medición con la API de
TDMS. Este es el ejemplo escribe datos en el canal principal en el grupo de canales Grupo
principal.
Figura 4-17 Escribir datos en un archivo TDMS a nivel de canal

Leer un archivo TDMS


La figura 4-18 muestra la forma más sencilla de leer datos utilizando la API de TDMS. Este
ejemplo lee todos los datos en el canal Canal principal del grupo de canales Grupo principal
y los muestra en el Gráfico de forma de onda de datos de canal. A continuación, el ejemplo
lee datos de todos los canales en el canal del grupo Grupo Principal y lo muestra en el gráfico
de forma de onda Group Data.
Figura 4-18 Leer datos del archivo TDMS

Escritura de propiedades personalizadas de TDMS


El modelo de datos TDMS crea automáticamente ciertas propiedades cuando se escriben
algunos tipos de datos. Sin embargo, en muchos casos es posible que desee crear una
propiedad específica para sus necesidades particulares, como como UUT, número de serie
y temperatura de prueba. Esta tarea se puede lograr usando el TDMS Set Función de
propiedades con la que puede escribir propiedades a nivel de archivo, grupo o canal.

© Instrumentos Nacionales | 4- 21
Manual de curso de LabVIEW Core 2

El nivel de archivo de una propiedad determina qué terminales de entrada deben cablearse.
por ejemplo, a escriba una propiedad de grupo, solo se debe cablear la entrada del nombre
del grupo. Para escribir una propiedad de canal, tanto el nombre del grupo como las entradas
del nombre del canal deben estar cableados. Pero, para escribir una propiedad de archivo, el
grupo Las entradas de nombre y nombre de canal deben dejarse sin cablear. La figura 4-19
ilustra estos ejemplos.
Figura 4-19 Escriba propiedades personalizadas en tres niveles diferentes antes
de escribir datos en el archivo

Con la función Establecer propiedades de TDMS, puede especificar una propiedad


individual por sí misma o especificar muchas propiedades mediante el uso de matrices. La
Figura 4-19 muestra dos propiedades especificadas a nivel de archivo (TestID y Planta).
Puede expandir esto para especificar muchas más propiedades aumentando el tamaño de la
matriz Las matrices no son necesarias si solo se escribe una sola propiedad, como un número
de serie.
Los valores de propiedad también pueden ser diferentes tipos de datos. En la Figura 4-19,
las propiedades de las cadenas se escriben al final nivel de archivo y grupo. Pero a nivel de
canal, se escriben dos propiedades numéricas para especificar el Temperatura mínima y
máxima.

Lectura de propiedades personalizadas de TDMS


Cuando se ha escrito un archivo TDMS, las propiedades se pueden volver a leer en
LabVIEW usando TDMS obtener función de propiedades. Las propiedades se devuelven
solo para el nivel especificado por el cableado de las entradas de nombre de grupo y nombre
de canal. Este proceso es similar a escribir las propiedades, ya que es se muestra en la Figura
4-20.
Figura 4-20 Lea las propiedades de TDMS desde tres niveles diferentes

© Instrumentos Nacionales | 4- 22
Manual de curso de LabVIEW Core 2

En esta configuración, los valores de propiedad se devuelven como una matriz de datos
Variant porque los datos podría ser una cadena, doble, booleano u otro tipo de datos. Los
datos se pueden mostrar en la parte delantera. panel como una variante o se puede convertir
en LabVIEW al tipo de datos apropiado. Si una propiedad se conocen el nombre y su tipo
de datos, se pueden conectar como entradas a la función TDMS Get Properties y leer
directamente con el tipo de datos correcto.

Visor de archivos TDMS


Use el TDMS File Viewer VI cuando desarrolle una aplicación TDMS para ver
automáticamente todo lo que se ha escrito en un archivo TDMS haciendo una sola llamada
VI. El visor de archivos TDMS VI es flexible y puede leer archivos TDMS complejos. El
Visor de archivos TDMS VI se incluye con el API TDMS, por lo que se puede colocar
fácilmente en un programa. Coloque el TDMS File Viewer VI después del archivo está
cerrado para usarlo. El Visor de archivos TDMS abre otra ventana en la que puede ver el
datos y propiedades dentro del archivo TDMS.
Figura 4-21 TDMS File viewer

© Instrumentos Nacionales | 4- 23
Manual de curso de LabVIEW Core 2

Agrupación de datos TDMS


Considere cuidadosamente la mejor manera de agrupar sus datos porque la agrupación de
datos puede tener un impacto en la velocidad de ejecución y la complejidad de
implementación de escrituras y lecturas. Considera el formato original de sus datos y cómo
desea procesar o ver los datos al elegir un esquema de agrupación.
Una técnica es agrupar los datos por el tipo de datos. Por ejemplo, puede poner datos
numéricos en un grupo de canales y datos de cadena en otro, o puede poner datos de dominio
de tiempo en un grupo y datos en el dominio de la frecuencia en otro. Esto facilita la
comparación de los canales en un grupo, pero puede dificultar la búsqueda de dos canales
que estén relacionados entre sí. La Figura 4-22 muestra un ejemplo de agrupar por el tipo
de datos. En este ejemplo, los datos de temperatura se colocan en un grupo y los datos del
viento se colocan en otro. Cada grupo contiene múltiples canales de datos. Note que cuando
al agrupar por tipo de datos, normalmente tiene un número fijo de grupos, dos en este caso,
y un número de canales determinado dinámicamente.
Figura 4-22 Agrupación de datos por tipo

Otra técnica es agrupar datos relacionados. Por ejemplo, puede colocar todos los datos que
se aplican a un solo UUT en un grupo. La agrupación de datos relacionados le permite ubicar
fácilmente todos los datos relacionados sobre un tema en particular, pero dificulta la
comparación de datos individuales entre temas. La agrupación relacional ayuda a convertir
el almacenamiento basado en clústeres a un formato TDMS. Puede almacenar toda la
información de un clúster determinado en un grupo de canales, con matrices en el clúster
que representan los canales dentro del grupo y elementos escalares en el clúster que
representan las propiedades del grupo de canales. La figura 4-23 muestra un ejemplo de
agrupación relacional.

© Instrumentos Nacionales | 4- 24
Manual de curso de LabVIEW Core 2

Figura 4-23 Agrupación de datos relacionados

Tenga en cuenta que los datos de entrada son una matriz de grupos, cada uno de los cuales
contiene varios datos sobre una prueba. Cada prueba se almacena como un grupo de canales
separado. La información que se aplica a toda la prueba, como el estado de la prueba, se
almacena como propiedades del grupo de canales. Las matrices de datos, como los datos de
tiempo y el espectro de potencia, se almacenan en canales, y la información relacionada con
las matrices de datos, como el valor RMS y la frecuencia fundamental, se almacena como
propiedades de los canales. Los datos relacionales suelen utilizar un número fijo de canales
en un grupo, pero el número de grupos es dinámico.

© Instrumentos Nacionales | 4- 25

También podría gustarte