el 04-01-2014 12:28 PM
Buenas tardes, estoy haciendo un programa que modela el comportamiento de un cilindro hidraulico de doble efecto y necesito reducirlo mediante sub VI's. Mi problema es que soy un poco novato en esto y no se como hacerlo, ya que tengo un while con shift registers dentro de un Case structure en el programa y cuando lo reduzco a sub VI no se me actualizan los datos en el VI principal.
He leido por ahi que se consigue mediante el uso de referencias y property nodes pero yo no he conseguido hacerlo y no se bien como se hace.
Seria alguien tan amable de echarme una mano? Muchas gracias
el 04-02-2014 07:40 AM
Hola
Hechale una mirada a este tutorial http://www.ni.com/white-paper/7593/en/
Ponle especial atención a la parte del conector pane, que yo creo que es tu actual problema.
Saludos
el 04-06-2014 12:19 AM
A lo que se refiere nino_an es a la posibilidad de modificar comoponentes del VI principal desde subVI's, esto se logra tal como decia el con "referencias y nodos de propiedad".
Algunos Ejemplos ------> http://digital.ni.com/public.nsf/allkb/0F4EA104660C0AF38625726F0069B27E
http://www.ni.com/example/28769/en/
El "conector Pane" solo nos muestra donde podemos configurar las entradas y salidas de un SubVI por lo que en esta parte no se solucionaria el problema.
04-07-2014 08:02 AM - editado 04-07-2014 08:04 AM
Jokelnice
Las buenas practicas de programación, indican que siempre hay que priorizar un cable antes que todo. Ya que el cable es más rapido en el traspaso de datos, lo cual optimiza tu codigo y por ejemplo los property node puede generar condiciones de carrera. Por lo que si puedes agregarle al subvi todas las entradas y salidas cableandolas directamente desde el conector pane, eso es lo mejor.
Ante cualquier duda puedes comprobarlo tu mismo con el vi que adjunta JesusG en el enlace.
Saludos
el 04-07-2014 02:21 PM
Hola Jokelnice y FelipeRC_Chile,
Justamente hoy queria resolver un problema similar, queria llamar Sub VI's de configuración desde mi VI Principal, pero que el VI Principal no se dejara de ejecutar y que esa configuracion retornara valoes a mi lazo principal.
La primera repuesta era llamarlo por referencia, pero me parecio poco elegante tener que llevar el codigo fuente (.vi) con los .exe, asi que se me ocurrio usar un lazo alterno para llamar los Sub VI de manera que el lazo principal no se detuviera y luego de su ejecución a través de un user event devolver el valor al lazo principal.
¿Les parece aceptable la idea o sugieren algo mejor?
Saludos,
el 04-07-2014 03:45 PM
Que tal Felipe varias cosas
FelipeRC_Chile escribió:
Jokelnice
Las buenas practicas de programación, indican que siempre hay que priorizar un cable antes que todo. Ya que el cable es más rapido en el traspaso de datos, lo cual optimiza tu codigo
Esto es cierto.... pero en este caso no aplica porque lo que se quiere hacer es pasar datos desde un SUbVI a un VI principal, entonces la unica forma de hacerlo es con referencias y nodos de propiedad .
FelipeRC_Chile escribió:
y por ejemplo los property node puede generar condiciones de carrera.
Tecnicamente las propiedades que yo conozca que pueden causar condicion de carrera es la propiedad "Value" y la propiedad "Value (Signaling)" que son las que transfieren datos .... y solo si se utiliizan de una manera inapropiada ( en Multitarea por ejemplo)
FelipeRC_Chile escribió:
. Por lo que si puedes agregarle al subvi todas las entradas y salidas cableandolas directamente desde el conector pane, eso es lo mejor.
No aplica para este caso por lo que mencione anteriormente.
FelipeRC_Chile escribió:
Ante cualquier duda puedes comprobarlo tu mismo con el vi que adjunta JesusG en el enlace.
Este es un muy buen ejemplo para todos los que quieran comenzar a trabajar con el tema de optimizacion de codigo.. (Recomendado)
Saludos y esperemos que esta comunidad continue creciendo para el beneficio de todos.
el 04-07-2014 04:00 PM
Luis_AM3C escribió:
¿Les parece aceptable la idea o sugieren algo mejor?
QUe tal LUIS
Crear Loops indipendientes que se comniquen entre si mediante Queves, notifiers etc ..... y que hagan tareas especificas.. es una muy buena practica asi que yo lo haria de esa manera,