Discusiones sobre Productos NI

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

Labview. Error 91

¡Resuelto!
Ir a solución

Buenas,

 

Estoy haciendo un programa de control a través del puerto serie de mi PC

Me he descargado los drivers, configurado el puerto serie, y en el "VISA configure Serial Port" no obtengo ningún error (ok).

El problema lo tengo en la llamada a mis datos, desde el sub.vi.

Estoy utilizando "Property Node" y de estos, mediante "Variant to Data", saco los datos a otra parte del programa para gestionarlos, pero al ejecutarlo me sale continuamente en todos el siguiente error:

 

Error 91 occurred at Variant To Data in "comunicacion.vi".

Possible reason(s): LabVIEW: The data type of the variant is not compatible with the data type wired to the type input.

 

He comprobado el tipo de datos en la entrada-salida, asi como en el programa principal y se mantienen.

Me podriais por favor indicar a que puede ser esto debido?

 

Un saludo y muchas gracias,

0 kudos
Mensaje 1 de 9
4.620 Vistas

Hola juanfer23,

 

Error 91 (Variant to Data) generalmente ocurre cuando el tipo de dato del variant es diferente del tipo de dato de LabVIEW que intenta convertir. Buscando alguna solución para evitar este error encontré una recomendación sobre cambiar el dato que está ingresando al variant con Type Def. Otras recomendaciones van relacionadas a la estructura del código, pero no es muy clara la ayuda. Podrías enviar el código para revisarlo un poco más y ver que te puedo recomendar.

 

Espero tus comentarios.

 

Patricio Cortes | NI Cono Sur
0 kudos
Mensaje 2 de 9
4.599 Vistas
Solución
Aceptado por el autor del tema juanfer23

Hola,

 

         Creo que ese error me ha ocurrido cuando no hay data y entonces la conversion falla, agregale un indicador al variant que sacas del property node para ver que efectivamente tiene datos, sino agrega un case structure donde pase el valor por default en caso de error en la conversión.

 

Saludos,

Luis A. Mata C.
Ing. Electrónico
Whatsapp: +58-414-1985579
BBM Pin: 2B83E99A
Thanks: Kudos
0 kudos
Mensaje 3 de 9
4.593 Vistas

Muchas gracias por las repuestas,

 

Ya he conseguido solucionar ese problema, pero ahora tengo otro con la gestión del programa.

Lo que hago como os comentaba es leer leer/escribir datos, actualizandolos en su caso. Para ello creo que es mejor utilizar como estaba haciendo, el "Property Node" y de estos, mediante "Variant to Data", ya que también he intentado hacerlo con local variables (que me resultaba más fácil) y se me queda colgado a la hora de intentar leer continuamente los datos con un while loop.. .

 

Entonces, lo que hago, es la llamada desde un programa principal que lo ejecuta mediante "send".

Mi problema está en el control de esta variable, ya que al pasarlo en el property node como booleano, sólo puedo ejecutarlo como switch y, o se me queda colgado (continuamente a True) o el pulso es muy rápido y no me lo lee como true.

 

Agradecía por favor alguna sugerencia de como solucionar este problema o cualquier mejora del programa que estoy realizando,

 

un saludo y muchísimas gracias por vuestro tiempo,

 

 

Descargar todos
0 kudos
Mensaje 4 de 9
4.566 Vistas

Hola,

 

        No estoy seguro que hace tu codigo, pero observe lo siguiente que puede estar causandote problema, debajo del event struct asignas los valores del VI principal a stop y send2, uno como eso no tiene ninguna limitacion de flujo de programa puede ejecutarse antes o despues que el resto del codigo, dos eso solo te correra posiblemente cada 3 segundos que se dispare el timeout y genere una iteracion sobre el ciclo while, y 3 si lo que quieres es generar un evento por value change no te sirve escribir el valor al control, para poder disparar el evento tienes que escribir el valor a traves de un property node usando value(signaling).

 

        Veo que arriba si usas value(signaling) asi que tal vez asumi mal lo que hace tu codigo.

 

        De todas formas te adjunto una pequeña modificacion en la que te muestro como puedes usar eventos dinamicos para manejar directamente los eventos del vi principal, posiblemente usando esto te funcione como latch, sino simplemente dentro del evento una vez que entre lo colocas a false tu mismo.

 

Saludos,

Luis A. Mata C.
Ing. Electrónico
Whatsapp: +58-414-1985579
BBM Pin: 2B83E99A
Thanks: Kudos
Mensaje 5 de 9
4.560 Vistas

 

Hola Luis,

 

Muchísmas gracias por tu ayuda. El ejemplo para usar eventos dinámicos me ha ayudado muchísmo.

Pero ahora obtengo otro error y no soy capaz que resolverlo.

Al ejecutar mi programa, cuando leo los datos del buffer y los vuelvo a escribir en mis datos iniciales a través de un "property node (value)", obtengo continuamente el siguiente error en cada uno de los bloques de property node:

 

Error 1055 occurred at Property Node in Gestion de lectura_escritura.vi.

Possible reason(s): LabVIEW: Object reference is invalid.

 

Me puedes por favor indicar a que podría deberse esto?

 

un saludo y muchisimas gracias.

 

0 kudos
Mensaje 6 de 9
4.542 Vistas

Buenas,

 

He estado creando de nuevo todos los PropertyNode, con sus valores y referencias, y ahora sólo tengo el error 1055, en el caso que la referencia no viene de un property-node anterior, sino que es creada directamente como control (Property Node-Array).

 

Agradecería si me pudierais indicar a que puede ser debido o como puedo intentar para solucionarlo.

Muchas gracias de nuevo,

0 kudos
Mensaje 7 de 9
4.534 Vistas

Ya lo he resuelto. He vuelto a copiar todo en un nuevo sub.vi y me funciona, seguramente sería alguna configuración mal hecha. Gracias de todos modos!!

Mensaje 8 de 9
4.527 Vistas

Hola Luis,

 

Perdona que te moleste de nuevo, pero sigo con problemas para hacer mi programa.

Pese a que el botón de envío me funciona perfectamente (según eventos dinamicos como me pusiste en el ejemplo), el de Stop no me funciona (se queda bloqueado) y además tengo problemas a la hora de modificar los datos del panel frontal, una vez que los he leido de la controladora (no me deja modificarlos, mantiene los datos leidos).

Habría alguna manera más fácil de poder gestionar o esto, o de hacer algún tipo de "pause" en el programa, para no tener que darle al stop cada vez que tengo que modificar mis datos.

 

De nuevo muchísimas gracias por tu tiempo,

Un saludo,

0 kudos
Mensaje 9 de 9
4.485 Vistas