From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discusiones sobre Productos NI

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

Pasar de grafica a tabla

Hola me gustaría saber que estoy haciendo mal porque no me carga los datos de una gráfica en la tabla cuando pulso el botón OK.

 

Gracias y un saludo.

0 kudos
Mensaje 1 de 12
5.406 Vistas

Estás usando la función de reemplazar en un array. Si el array inicial (el table control) está vacío, no hay nada que reemplazar y esa función devolverá un array vacío, o si tuviera valores pero el tamaño es menor del que se quiere escribir, tampoco se podrá escribir todo. No das ningún detalle de lo que quieres hacer, así que es complicado proponer soluciones, pero ¿lo que quieres hacer es un reemplazo o te valdría simplemente un build array?

0 kudos
Mensaje 2 de 12
5.383 Vistas

Hola Yotu,

 

en primer lugar, al crear el array estás colocando el valor de dt como primer elemento del arreglo, esto debido a que estás concatenando este dato (escalar) a un arreglo (1D). El resultado sigue siendo un arreglo de 1D, y lo que quieres hacer es escribir sobre una tabla, la cual es de 2D. Me pregunto cómo quieres crear esa tabla, con qué datos: ¿quieres colocar en la primera columna el valor de dt (este no debería cambiar en el tiempo, porque es la separación entre punto y punto), y la segunda columna deberían ser los datos (eje Y)?

 

Una forma muy rápida qu quizás te pueda ayudar, es con la función Build Table, la cual toma una "señal" que puede ser la data que obtiene de tu gráfico y la lleva a una tabla. En las propiedades de esta función le puedes agregar el timestamp de cada punto. En la imagen aparece la función.

 

build table.PNG

Espero haber sido de ayuda. 

Patricio Cortes | NI Cono Sur
0 kudos
Mensaje 3 de 12
5.365 Vistas

Hola Pcortes y jrafa puede que no me haya explicado bien, lo siento.
Adjunto el .vi para que me entendáis mejor.
Pcortes he puesto tu consejo y no sé porqué se guarda todos los datos en la misma columna.
En cuanto los datos que quiero colocar en la tabla son los datos del eje x (no el dt sino el tiempo acumulado desde el inicio) y en el eje Y (el valor del dato).
Tambien me gusta´ria poner el nº del dato y la fecha y hora a la que se a adquirido el dato.
¿Por cierto cómo modifico la hora para que me ponga la hora del pc y no la de 1904 que me aparece por defecto?

Nº de dato       Dato eje X        Dato eje Y        Fecha y hora del PC(a la que se adquirió el dato)

1
2
3
...

 

 

Gracias y un saludo

0 kudos
Mensaje 4 de 12
5.339 Vistas

Hola Yotú, una pregunta: ¿la gráfica la estás obteniendo desde un sistema de adquisición de datos, o simplemente de la creación de una onda, como se está haciendo en el VI?

 

saludos!

Patricio Cortes | NI Cono Sur
0 kudos
Mensaje 5 de 12
5.326 Vistas

Los datos se guardan en una sóla columna porque le pasas un array de una dimensión. Para añadir otras columnas lo primero es crearlas y construir un array de dos dimensiones con ellas.

Un ejemplo podría ser:

table.png

La referencia y la propiedad WFGraph se han añadido al hacer el snippet. En tu programa se sustituirían por la variable local.

 

Para la fecha tendrás que escribir algo en el parámetro t0 del waveform cuando se genera la señal. Aquí hay un ejemplo: http://digital.ni.com/public.nsf/allkb/0A4899EF6D01B9C5862568B70074F989. Y aquí una explicación de cada parámetro del tipo waveform http://zone.ni.com/reference/en-XX/help/371361J-01/lvwave/build_waveform/. Este tipo de datos es para señales muestreadas uniformemente, por lo que sólo se indica la fecha inicial y el periodo de muestreo.

0 kudos
Mensaje 6 de 12
5.323 Vistas

Hola siento no haber contestado antes.
 
Pcortes la gráfica la obtengo de una creación de onda pero más adelante la quiero obtener también mediante adquisición de datos.

Y gracias por tu ejemplo jrafa he conseguido crear las columnas como tú dices y he hecho un par de modificaciones para que no me muestre decimales en el número de datos pero creo que en el eje X tambien me marca el número de datos y no el tiempo en el que se adquiere el punto.
El dato en el eje Y se escribe correctamente
La fecha y hora sigo sin ponerla correctamente y es que el enlace que me pasaste no funciona.

Gracias por vuestro tiempo y espero que me echeis una mano en esto, gracias.Dibujo 2.JPG

Dibujo 3.JPG

0 kudos
Mensaje 7 de 12
5.291 Vistas

Hola Yotú.

 

Para solucionar tu problema con el Time stamp solo debes dejar de usar el t0 de la gráfica y usar el t0 de ESTE MOMENTO, y eso se hace con la función Get Date/Time in Seconds, que te entrega la hora y fecha de tu computador, como lo muestro en la siguiente imagen:

 

imagen 1.PNG

 

Ahora, verás que con este cambio tampoco verás que aumenta el tiempo en cada muestra, pero esto debes tener cuidado ya que la generación de la onda es casi instantanea, y por eso no verás mayores cambios en los segundos del tiempo. Tendrías que hacer una generación de cada punto (o adquisición de datos en cada segundo para que veas cambios en el tiempo. Recuerda además, que el ciclo while corre a 1 ms, es decir, 0,001 segundos, y si observas la gráfica, cada punto rojo aparece en cada 0,001 seg. 

 

Si presentas más puntos, por ejemplo si generas 10 ciclos, ya podrás ver un aumento en los segundos, como verás en la siguiente imagen (muestra 184):

 

imagen 3.PNG

 

Adjunto tu mismo código con la modificación hecha. (te moví algunos elementos del panel frontal y diagrama de bloques, espero no te moleste, y además te agregué un botón para limpiar la tabla y así veas los cambios)

 

Saludos !

Patricio Cortes | NI Cono Sur
0 kudos
Mensaje 8 de 12
5.276 Vistas

El enlace anterior no va porque el sistema de los foros ha incluido el punto y seguido del final de la frase como parte del enlace, sólo hay que quitarlo de la barra de direcciones.

 

Por completar el comentario de pcortes, si quieres que la fecha también aparezca en la gráfica tienes que:

  1. Poner el to en el waveform después de que se haya generado, es decir, en el evento de inicio justo después de la generación.
  2. En las propiedades del waveform graph ir a display format y elegir absolute time.
  3. En el waveform graph hacer click derecho y deseleccionar ignore timestamp.
  4. En el evento de guardar ya no sería necesario escribir otra vez el t0 porque ya está puesto en el evento anterior, sólo habría que leerlo.

http://digital.ni.com/public.nsf/allkb/0A4899EF6D01B9C5862568B70074F989

http://digital.ni.com/public.nsf/websearch/163EE33AFCD1D94E86256DB80074EBEA?OpenDocument

0 kudos
Mensaje 9 de 12
5.261 Vistas

Hola gracias por vuestra ayuda.
Pcortes ¿Me puedes adjuntar tu vi anterior en la versión 2013?
Me ha quedado claro que no puedo obterner el tiempo absoluto partiendo del t0 de la gráfica.
He arregldo el vi para obtener la fecha y hora del ordenador como me habeis recomendado pero con la función format date/time string, pero ahora en el eje x de la gráfica, que es el tiempo relativo en la tabla, se carga como una hora 1:oo:oo,ooo y no desde 0:oo:oo,ooo como se carga en la tabla.Aun poniendo en las propiedades de la tabla relative time.
¿Donde tengo el fallo?
Por curiosidad, ¿el while loop puede ir más rápido de 1 ms?

Un saludo y gracias.

 

Descargar todos
0 kudos
Mensaje 10 de 12
5.234 Vistas