Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Alumnos:
Juan Emmanuel Gutiérrez Cervantes
Fernanda Bravo López
Luis David Ramírez Pérez
José Enrique Granados Gallegos
Traducción Core 2 / 4
© Instrumentos Nacionales | 4- 2
Manual de curso de LabVIEW Core 2
4
Técnicas de E/S de archivos
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
© 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.
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
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
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.
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.
© Instrumentos Nacionales | 4- 7
Manual de curso de LabVIEW Core 2
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.
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.
© 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.
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.
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
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
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.
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.
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.
Las filas se identifican por el primer índice de una matriz 2D y las columnas por el segundo
índice.
© Instrumentos Nacionales | 4- 15
Manual de curso de LabVIEW Core 2
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
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
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 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.
© 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
© 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
© 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.
© Instrumentos Nacionales | 4- 23
Manual de curso de LabVIEW Core 2
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
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