Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

Ordenar datos en arreglo y pasar los datos ordenados a un archivo excel.

Hola buen dia a todos, tengo una serie de datos que se leen por puerto serial de la siguiente forma

V1 I1 V2 I2 V3 I3 V4 I4 V5 I5 ........ V25 I25 T1 V26 I26 V27 I27 V28 I29...... V49 I49 V50 V50 T2, no pongo todos porque van a ser bastantes datos los que tengo que leer pero de esa forma es como vienen en el puerto serie, entonces con labview los convierto a un valor tal que sea correspondiente a Voltaje, Corriente y Temperatura (esa parte ya la tengo). despues la cuestion entre lectura de datos de como van llegando mandarlos a un Arreglo de la siguiente forma:

 

columna1 columna 2 columna 3

V1             I1
V2             I2
V3             I3

V4             I4

V5             I5

V6             I6

.                .

.                .

.                .

V25           I25             T1

[se vuelve a repetir el proceso con los demas datos restantes]

 

Y pues entre cada proceso de 51 datos ordenados hacer que esos datos vayan a un archivo excel (y no que se sobre escriba el archivo, si que vaya tomando la fila que le sigue despues de cada proceso en un mismo archivo)

Las veces que se repite este proceso es de 12 veces, la primer duda es ¿como hacer que se orden de esa forma?

Y la segunda, es ¿como mandar esos datos ya ordenados a un achivo excel?Si me pudieran dar una idea de como hacerlo se los agradeceria mucho.

Si requieren de mi vi para darse una idea mejor, se los paso.

 

0 kudos
Mensaje 1 de 8
4.675 Vistas

Hola R_Leon

Espero te encuentres bien, para poder ayudarte de mejor manera me gustaría saber si entendí bien, cada 25 valores de voltaje y corriente solo recibes 1 de temperatura? 

 

La mejor manera de construir un arreglo es utilizando el auto indexado pero también existen múltiples funciones de arreglos que podrían ayudarte, te dejo la siguiente liga donde explica cada una de las funciones Array Functions

 

Una vez que ya hayas ordenado los datos puedes utilizar Report generation toolkit, en la siguiente liga viene como utilizarlo 

Creating a Report in Microsoft Excel Using the LabVIEW Report Generation Toolkit.

 

También encontré un ejemplo en la comunidad que podría ayudarte Build 2D array and write to Excel

 

Saludos

Brenda Vargas

 

 

 

0 kudos
Mensaje 2 de 8
4.642 Vistas

Hola Brenda Vargas

Igual espero que estes de lo mejor y gracias por tomarte tu tiempo en ayudarme con este problema.

 

Si, lo que me llegan son 25 valores de voltaje y 25 de corriente que en total son 50 los de los cuales van intercalados, uno y uno, y siempre al final de los 50 datos recibo 1 valor de temperatura, esto se repite varias veces. Lo que me causa un poco mas de ruido es como ordenar en cada columna del arreglo los valores, del modo en que lo estoy exponiendo en el anterior post. Y bueno por lo pronto checare toda la info que me dejas y encontrar algo que se acomode a mi caso.

Muchas gracias por tomarte tu tiempo y si tengo alguna duda te la hare llegar.

 

Saludos

Raúl Díaz

0 kudos
Mensaje 3 de 8
4.633 Vistas

Hola R_Leon

 

Como te mencione en el comentario de arriba LabVIEW cuenta con muchísimas funciones para arreglos que te pueden servir, la mejor manera de aprender a usarlas es programando, te adjunto un pequeño código que hice para resolver la  primera  parte que sería ordenar los primeros 51 valores en columnas solo que yo lo hice con 8 y en cadena de caracteres para que se entendiera, pero la lógica es la misma, puedes basarte en este código para irle agregando los otros 51 valores y así las veces que se repita. Te recomiendo que revises las funciones de arreglos y estructuras ya que te pueden ayudar. 

Descargar todos
0 kudos
Mensaje 4 de 8
4.604 Vistas

Hola Brenda Vargas


Tu respuesta anterior donde me muestras un ejemplo de como ordenar los datos me funciono de maravilla, tuve que hacer otras cosillas para que se acomodara a mis necesidades y funciona. Ahora no se que este pansando o este dejando pasar por alto, que cuando estoy llenando el arreglo con informacion, este se detiene en el primer ciclo de llenado y no esta "refrescando" por asi decirlo el array, ya que yo sigo mandando informacion varios ciclos.

 

0 kudos
Mensaje 5 de 8
4.496 Vistas

Hola R_Leon

Me alegra escuchar de que te funciono el pequeño ejemplo que te envié, respecto a lo que me comentas para ayudarte necesito un poco más de información, ¿qué tienes conectado al botón de stop de tu ciclo o conoces la razón por la que solo se ejecuta una vez?, ¿estás seguro de que se ejecuta solo una vez o puede ser que se ejecuta más y solo  visualizas la última iteración?, ¿tu arreglo lo tienes adentro o afuera del ciclo?, si lo tienes afuera puede ser una de las razones por las que no se refresca ya que siguiendo el flujo de datos de LabVIEW solo se actualizara una vez que se detenga el ciclo, colócalo adentro para que se actualice en cada ciclo. 

También si pudieras compartirme una imagen de tu diagrama de bloques para poder entender de mejor manera que es lo que puede estar pasando. De igual forma te recomiendo utilizar las herramientas de depuración que tiene LabVIEW para poder verificar que es lo que se está ejecutando. Herramientas de Depuración en LabVIEW

 

Saludos

0 kudos
Mensaje 6 de 8
4.450 Vistas

Todo el proceso que llevo hasta el momento esta dentro de un ciclo While, se que sigue mandando informacion porque la visualizo a parte en indicadores, cuando hago la primera iteracion me va colocando la informacion 1 bloque de un arreglo a la vez, cuando llega al ultimo dato deja de colocar informacion en el arreglo. Lo que hago es que no es un arreglo infinito por asi decirlo si no que esta definido en un tamaño, entonces se detiene cuando llega hasta el ultimo valor, entonces lo que requiero es que de alguna manera limpie ese arreglo definido y comienze a colocolar datos desde el principio. Se me ocurre usar un ciclo FOR para que se ejecute varias veces, haber que tal. Para que me entiendas un poco mas te dejo mi programa es en LABVIEW 2015, si no llegases a poder verlo, te dejo tambien imagenes del programa.

 

Gracias de antemano! y buen dia

Descargar todos
0 kudos
Mensaje 7 de 8
4.431 Vistas

Hola R_Leon

 

Revise tu código y hay varias razones por las que puedes estar obteniendo una mala lectura, una de ellas es el uso excesivo de variables locales creando condiciones de carrera, te dejo este link donde en el punto dos habla de la importancia de no utilizar tantas variables locales 2. El mal uso de las variables locales. Y el siguiente link donde explica cómo utilizar las variables locales de la manera correcta y evitando las condiciones de carrera Using Local and Global Variables Carefully

 

También recuerda que LabVIEW es un entorno grafico de programación donde la ejecución se basa en el flujo de datos, si analizamos tu programa no podemos estar seguros de que tu primer for se ejecute antes que todo el código donde haces el acomodo de tus arreglos, te dejo los siguientes links donde puedes aprender un poco más sobre el flujo de datos.

Programación Gráfica

Going With the (Data) Flow

How Is Dataflow and Execution Order Determined in LabVIEW?

Block Diagram Data Flow

 

Antes de colocar el ciclo For yo revisaría los puntos mencionados arriba ya que puede que esto solucione tu problema.

 

Saludos

0 kudos
Mensaje 8 de 8
4.422 Vistas