Discusiones sobre Productos NI

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

Algo parecido a Funciones?

Hola Johana entonces no hay ningún problema en que los dos trabajen simultáneamente siempre y cuando no metas el ciclo del sub VI dentro de un Ciclo del VI principal, o por lo menos en la parte de monitoreo. Por ejemplo puedes en tu VI principal separa la parte de monitoreo del puerto en un while y la parte que manda a llamar a tus SubVIs en otro while. de esta forma el principal no se va a detener cuando mandes a llamar el subVI.

Saludos

Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 11 de 17
1.212 Vistas

Hola Benjamin, es decir que si tengo un inconveniente por que mi subvi esta dentro de un event structure y no dejaja ejecutar otras tareas hjasta que termine con al grabacion.. cierto... me tocaria hacer lo de los od swhile pero eso no lo entiendo muy bien..

 

 



Mensaje editado por Johanna RCH
Lady Johanna Rodriguez Chavez
0 kudos
Mensaje 12 de 17
1.210 Vistas

Hola Johanna un a forma fácil seria simplente saca el subVI de la estructura de eventos y colócalo en otro ciclo while, en este ciclo while mételo en un case y este case aliméntalo con un valor de una variable que modifiques desde tu VI principal, pero no olvides poner un wait until next Ms.

Sin embargo una mucho mejor forma seria utilizar un notifier, generas la notificación  desde la parte de eventos, así en el segundo loop no es necesario agregar temporización, ya que no va a pasar al siguiente ciclo hasta que reciba la  notificación.

Puedes revisar esto con el template de Master/Salve que viene en LabVIEW y puedes encontrar mas detalles en esta pagina

Application Design Patterns: Master/Slave- Developer Zone - National Instruments

Saludos

Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 13 de 17
1.204 Vistas
Hola Benjamin, he estado leyendo muy atentamente lo que me has enviado pero no encuentro ningun ejemplo claro del cual me pueda guiar, entiendo lo de utilizar otro while pero no se como hacer lo del indicador desde el principal, otra duda si no es mucha molestia, si yo tengo un VI principal que trabaja con el puerto serie pero mi close Visa  esta por fuera del while y el event structure, como me explicaste para poder hacer otras cosas mientras, pero si  el subvi y el vi trabajan los dos con enviar datos al puerto serie, hay algun poblema..?¿
Lady Johanna Rodriguez Chavez
0 kudos
Mensaje 14 de 17
1.198 Vistas

Hola Johanna si vas a tener problema si los dos intentan utilizar el puerto serial exactamente al mismo tiempo. Un pequeño truco que puedes hacer aquí seria trabajar en forma similar a una variable funcional global para manejar tu recurso de VISA. SI el vi no es reentrante se convierte en un recurso compartido (solo uno de los dos lo puede hacer) , en este no se va realizar mas que una interacción. Así no hay forma de que en los dos lugares lo manejen en el mismo momento.

Ahora lo único que tienes que tener cuidado es si desde tu SubVI envías algo y estas esperando recibir el dato, pero en eso tu subVI decide leerlo el va a leer la respuesta por lo que no es muy recomendable.

Te anexo un ejemplo de un VFG y la interface de Producer Consumer con eventos.

PD Antes de que envies o leeas tienes que darle una vez a configurar.

Saludos

 
 
 
Benjamin C
Principal Systems Engineer // CLA // CLED
Descargar todos
Mensaje 15 de 17
1.170 Vistas
Hola Benjamin, si me permites te cuento como esta planteado, mi vi principal es con un event structure y uno de los event case es el de llamar el subVI, tengo entendido hasta donde se (ya que soy nueva en labview) que en un event structure no se ejecuta el time out (independiente de si ha pasado el tiempo del time out) o cualquier otro case hasta que haya terminad de ejcutar la tarea impuesta. Si si es asi, como yo cierro abro y cierro el puerto como me ensñaste por fura del event y l while y los casos que no utilice el puerto serial, cableo directo la entrada con el close, no deberia presentarse ningun problema..  verdad?¿ o si lo hay, la cosa seria que no podria utilizar el panl frontal y el subvi al tiempo .. verdad?¿
Lady Johanna Rodriguez Chavez
0 kudos
Mensaje 16 de 17
1.167 Vistas

Hola Johanna así es como describes, no entra ni el timeout ni ningún evento hasta que se termine de procesar el evento actual. Ahora la ventaja de usar la parte del puerto serial como te dije en una variable funcional global, es que te ahora el pasar el cable de la referencia de VISA y la otra es que protege que tu puerto no se escriba exactamente al mismo tiempo. Si un SubVI esta trabajando, y lo llamas en otro lugar (el mismo subVI) en el segundo lugar se a a empezar a utilizar cuando termine de utilizarse en el primero lo que protegería tu puerto de ser utilizado y así lo podrías utilizar en dos lugares.

Ahora si como mencionas no si el event case es largo mientras este esté trabajando no va a poder trabajar tu programa final por eso podrías hacer de abrir la sesión de visa fuera de tu ciclo while con el case  (llamar a el vi en modo de inicializar) y cerrarla al final (llamarlo en modo de cerrar) y este vi lo puedes incluir en tu otro subVI y lo mandas a llamar en un ciclo aparte así no se detiene tu programa principal. El hecho de que este como subVI va a funcionar como un semaforo. También podrías utilizar estas estructuras en lugar de utilizar el SubVI como variable funcional Global.

Saludos

Benjamin C
Principal Systems Engineer // CLA // CLED
0 kudos
Mensaje 17 de 17
1.160 Vistas