el 08-26-2016 02:48 PM
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.
el 08-29-2016 11:21 AM
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
el 08-29-2016 05:37 PM
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
el 09-01-2016 09:26 AM
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.
el 09-14-2016 04:39 PM
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.
el 09-20-2016 08:40 AM
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
el 09-22-2016 08:38 AM
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
el 09-22-2016 03:32 PM
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.
How Is Dataflow and Execution Order Determined in LabVIEW?
Antes de colocar el ciclo For yo revisaría los puntos mencionados arriba ya que puede que esto solucione tu problema.
Saludos