Abrir panel frontal subvi clone

Hola a Todos,
Estoy implementando un SCADA para una planta deshidratadora de gas, en el momento estoy creando las HMI para el operador. el inconveniente que tengo es el siguiente:
Tengo un vi que funciona como una ventana emergente que visuliza la informacion pertienente de un instrumento transmisor cada vez que se da click sobre el instrumento desde la HMI principal. pero el problema es al dar click sobre otro instrumento porque la informacion se traslapa. la idea es poder abrir dos paneles frontales del mismo vi con la informacion correspondiente a cada instrumento, sin nececidad de hacer una copia del VI por cada instrumento
Estoy intentando con las propiedades de Reentrant Execution del VI, y es asi como soluciono que la informacion no se traslape, pero no se como hacer que se abra el panel frontal de cada Clone que se crea del VI.
Con un Invoke Node solo abre el panel frontal original pero no muestra ninguna informacion.
Probe con la opcion Open Front Panel When Called, y funciona abriendo los paneles de cada clone, pero las ventanas quedan intermitentes y no se dejan manipular.
Gracias por la informacion y sugerencias o un ejemplo que puedan brindarme de como se podria implementar esta solucion
Solved!
Go to Solution.

Hola Irenuka, Gracias por tu comentario
Ya encontre la forma de abrir y cerrar el front panel de un subVI clone programaticamente como una ventana emergente, con un property node y un invoke node, el cual se hace de la misma forma que con un VI normal, la diferencia es que hay que crear una referencia para el subVI Clone usando el nombre del subVI clone asi: "subVIclone.vi:1", luego con la funcion "open VI reference" se crea la referencia y se conecta al "invoke node" de abrir o cerrar el front panel.
LabView crea un numero consecutivo por cada clone que se haga del VI que es el numero que esta despues de los " : " que siguen al nombre del VI, para esto usamos un "property node" con la funcion "CloneName" la cual devuelve en un string el nombre correcto y el consecutivo del subVI clone asi "subVIclone.vi:1".
Adjunto una imagen con el modelo del codigo que debe estar contenido dentro del codigo del subVI clone
De esta forma puedo usar un mismo VI como modelo de ventana emergente, usarlo cuantas veces sea necesario y llamar varias ventanas emergentes del VI al mismo tiempo desplegando diferente informacion
Los subVI emergentes podran estar ejecutandoce, realizando operaciones especificas y solo se abre el Panel Frontal cuando el usuario haga click en un boton, asi puedo pasar informacion a otros VIs sin tener que esperar a salir del ciclo del subVI emergente.
Attachments:
Open_Close_FP.png ‏14 KB

Similar Messages

  • Ocultar panel frontal

    Hola mi probelma es el siguiente: creo un programa en labview pero luego ese programa no lo ejecuto como independiente sino que lo cargo como plugin en otro programa, pues bien el programa "general" tiene su propia pantalla y no puedo hacer nada con el puesto que no dispongo de su codigo fuente y me gustaria que mi plugin no generase un panel frontal, puesto que no lo necesito y ademas no es muy util tener las dos ventanas abiertas. Para resumir quisiera saber si labview me permite crear un programa el cual no tenga panel frontal y si puede ser en labview 6.1 mejor.
    GRACIAS

    Por defecto, los vis que se usan como subvis dentro de un programa principal no abren su panel frontal automaticamente sino que permanece cerrado a no ser que se indique lo contrario.
    En las versiones 7.0 y superiores, esto se puede controlar a traves de las propiedades del vi, en File>VI Properties>Window Appearance clicando la opcion Custom>Show Front Panel When Called.
    Como digo, por defecto esta sin seleccionar.
    En la version 6.1 no lo se, aunque imagino que existira esa misma opcion.

  • Front Panel Controller SubVI?

    Here is the scenario, I have a main VI that uses an event structure to call various other SubVI's depending on what control is pressed and to update the front panel accordingly.  The front panel of the Main VI is a Tab Control with ~25 controls total.  As you can imagine, some controls should not be enabled until other events happen.  For example, I have a menu ring called "Report Type" of which you can choose 'HTML' or 'Send to Printer.'  Next to this ring is a boolean control called "Open in Browser?" , I want to only enable this boolean control only when "Report Type" is set to 'HTML.'   Likewise I want both the "Report Type" and "Open in Browser?" controls to be disabled if the user has not hit the "Download Data" control to get data from the RT Controller (otherwise there would be nothing to report.) 
    These are just a few examples of what I need to do, I have been adding 'Disabled' property nodes throughout my event cases but it is becoming very unwieldy and making my block diagram quite cluttered and hard to understand.  What I want to do is have a 'Front Panel Controller SubVI' of sorts, of which I define about 10 or so various states the front panel can be in and pass that state to the controller SubVI which in turn disables/enables controlls accordingly.  This idea sounds good but so far the implementation seems pretty bad.  I was hoping I could just make a cluster of control references and pass that into the SubVI but LabVIEW 8.2 doesn't seem to allow me to wrap up references in a cluster.  This has forced me to use VI Server to get the references.   What I've been able to come up with using VI Server works, but I can't believe its the most elegant solution.  Basically, for each of the possible states, I iterate over all the controls in the front panel and have a case structure for their Label Text which determins if that control should be enabled/disabled for the given state passed in.  Also, for some reason it seems that it is not grabbing references to ALL of my controls.  There is a menu ring control on the front panel that isn't in the Controls[] array.  I should mention that this particular Control already has a reference node created for it that gets passed to a SubVI, perhaps this is why its not found in the Controls[] array, but this doesn't seem to be very intuititve, or documetned for that matter.
    <a href="http://tinypic.com" target="_blank"><img src="http://i37.tinypic.com/fjgwtv.gif" border="0" alt="Image and video hosting by TinyPic"></a>

    Thats a very good idea, although I'd probably want to put a case structure around the disable property node and have it only change value when the search array function does *not* return -1, otherwise I'll be disabling things I might want to maintain in an enabled state.
    Just before I read your post, another thought came to me and that why use a SubVI, I could just use a parallel loop with queues to send back state information.  Since queues can be blocking, this would not negate my event structure.  I could combine the idea you gave me with this architecture.  Thanks

  • Seguridad en panel frontal remoto

    Hola a todos, tengo un VI que quiero publicar a traves de internet (esto ya lo logro hacer), mi problema esta en que quiero hacer que al momento de que alguien ingrese a la direccion de mi panel frontal le pida una contraseña para poder ver y/o manejar el panel, como puedo lograr esto?
    Saludos!!

    Hola, buenas tardes.
    Aqui te dejo dos links que te pueden servir:
    http://digital.ni.com/public.nsf/allkb/427FE409FB11575686256DFF0008BBE4
    http://digital.ni.com/public.nsf/allkb/C235CAE151607DF3862575DA0050EA1F
    Saludos y suerte.

  • Como publicar un panel frontal teneindo una IP publica?

    necesito publicar el panel frontal de un VI, y cuento con una IP publica, pero tambien necesito que este se actualice periodicamente, por favor necesito apoyo.

    Hola sonst,
    Le anexo unos enlaces a tutoriales a como general un panel frontal remoto, para que pueda pueda controlar su aplicacion por medio de un navegador
    http://zone.ni.com/devzone/conceptd.nsf/webmain/e789515b9976253786256b1f007e039b
    http://zone.ni.com/devzone/learningcenter.nsf/webmain/2ad405a06ebed71586256c4e00621c73
    Y lo que va a requerir para que lo puead accesar a traves de internet y no solamente de una red local, es que esa direccion IP este dada de alta en un servidor DNS.
    Saludos!
    Tania Lozoya
    Ing. de Aplicaciones
    National Instruments

  • Como visualizar un programa adicional en el panel frontal de labview

    como visualizar un programa adicional en el panel frontal de labview.
    este programa es un DVR y quiero que aparezca en labview....
    como lo puedo hacer???
    Help me!!!

    Hola
    Para que tengas un mejor soporte, por favor haga su pregunta en la comunidad en Español. 
    Saludos Cordiales

  • Incorporar aplicación externa en el panel frontal

    Saludos
    Tengo una aplicación creada utilizando Visual Studio, quisiera ver si esta aplicación se puede incorporar dentro del panel frontal al estilo de los Flash Players.
    Gracias
    Javier Viniegra
    Javier Viniegra Bribiesca
    LabVIEW 8.5.1

    Hola Javierviniegra!
    La forma de realizar la incorporación de las aplicaciones es similar. Necesitas generar el programa, tienes dos opciones despues de eso, puedes utilizar un contenedor de activeX o un contenedor de .net y seleccionar una aplicación de Visual Basic. Posteriormente puedes accesar a la aplicación que tu creaste.
    Algo importante es que cuando generes la aplicación en Visual Basic te asegures de que tenga habilitada la posibilidad de activeX o de .net.
    Espero que esta información te sea útil, trataré de generar un ejemplo y publicarlo.
    Que tengas un excelente día!!

  • Cambiar fondo panel frontal

    hola, denuevo quisiera poder cambiar el fonde de mi panel frontal, si me pudieran decir donde configuro esa opcion se los agredeseria muchismo

    1. Abre la barra de herramientas (Window --> Show Tools Palette)
    2. En la parte inferior de la barra hay una imagen de un pincel a lado de dos cuadros uno sobre otro.
    3. Da click en el cuadro de la derecha (el más próximo al pincel) y selecciona el color de fondo que prefieras (el cursor debe cambiar a un pincel)
    4. Da click en el fondo del panel frontal.

  • INMOVILIZAR CONTROLES EN EL PANEL FRONTAL

    Saludos....
    La razon de querer realizar esta operacion es por qu een mi aplicacion tengo muchos controles, los cuales por estetica he colocado con poca separacion, lo qu eme ha llevado a preguntar si es posible fijar los controles en el panel frontal de manera que el operador del programa no pueda alterar la apariencia.. Si es posible realizar esta operacion, se les agradeceria qu epudieran ayudarme gracias..

    Que tal REOC
                            Gracias por utilizar el foro de National Instruments.
    Contestando a tu pregunta una forma sencilla de controlar la posicion de los objetos dentro de tu panel frontal es mediante property nodes (nodos de propiedad).
    Te hice un ejemplo pequeño que espero te ayude a ver su funcionalidad.
    También espero que esto te sea util para que puedas correr exitosamente tu aplicacion.
    saludos cordiales
    Erwin Franz R.
    Adjuntos:
    reoc.vi ‏8 KB

  • Open and Close Front Panel of SubVI

    Hi all,
    Running LabVIEW 2011 on Windows 7 x64.  I am trying to get a subVI front panel to open from my main FP with the press of a button and then close with a button press in the subVI.  Here is the piece from my main FP that calls the VI and opens the FP 
    Plots is defined in another loop and all of the loops are in a flat sequence.  I did it this way because I want it to start with the first press and not stop my main loop from running.  I have moved the item in the left loop around a lot so I'm not sure if I can run that in the same loop as the event or not.  Either way opening the VI seems to work fine.
    The problem shows up when trying to close the subVI for the SECOND time.  The code is here:
    As I said, the first time I open and close the VI everything works as I expect it should.  I am then able to open it again but now the "blank button" doesn't function and I can't close the window or even open the block diagram to probe anything.  I have been trying to figure this out for awhile, any insite would be greatly appreciated!
    Thanks
    Solved!
    Go to Solution.

    Its good that you found the bug.
    This code may serve as a way for you to compare notes.
    Ben
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction

  • Reading main VI front panel in SubVI

    Hi,
    I'm trying to create a subVI that writes a header text file containing info on essential parameters in my measurements. My mainVI front panel has a few dozen controls, some of them contained in a handful of clusters. 
    What I'd want is just to be able to access and read the values at the subVI to construct the string I want to write to the file.
    I wouldn't like to proceed the dumb way, i.e., building an array of clusters or individual controls or references to them and passing that to my subVI (and, obviously not passing each individual control/cluster as a subVI input).
    I figured I'd like to have some kind of refnum of the mainVI frontpanel passed to my subVI and dig use a big pile of property nodes to dig out the info that i need, inside the SubVI. Is this a feasible solution and if so, what's the way to conduct it? If not, what would be a better way?
    As before, I'm using LV7 so in case you answer with block diagram examples, I'd appreciate screenshots of them.
    Thanks,
    Lauri

    Vostokki wrote:
    I'm trying to create a subVI that writes a header text file containing info on essential parameters in my measurements. My mainVI front panel has a few dozen controls, some of them contained in a handful of clusters. 
    What I'd want is just to be able to access and read the values at the subVI to construct the string I want to write to the file.
    I wouldn't like to proceed the dumb way, i.e., building an array of clusters or individual controls or references to them and passing that to my subVI (and, obviously not passing each individual control/cluster as a subVI input).
    Lauri
    Actually that is the preferred way to do. Why you may ask? It is because you decouple the functionality (creating your log file header) from your specific user interface. By doing so you can reuse this VI in other places or applications. By using the references directly this ties the subVI to the calling VI. Unless the subVI is specifically doing something to the UI itself a subVI should avoid accessing data it needs via direct references. It should require the data to be wired in with the appropriate clusters, arrays or whatever your data needs are.
    Mark Yedinak
    "Does anyone know where the love of God goes when the waves turn the minutes to hours?"
    Wreck of the Edmund Fitzgerald - Gordon Lightfoot

  • Closing front panel of subvi

    I have a main vi that opens many subvi with their front panel (they pop up as a normal windows not like modal). I need to close a subvi by pressing a button on it but I can't find any way.
    Thank you everyone,
    Massimo Ponte.

    You can use vi.lib\UTILITY\VICTL.LLB\Close Panel.vi. Just pass it the name of the VI whose panel you want to close.
    Sylke had a similar problem here.

  • Exporting front panel of subVI to calling VI

    Is there a way to "export" the front panel of a subVI so that it becomes part of the (or a pane of) the calling VI? If so, what is it called? I don't know the right language to search for examples of this concept.
    My problem is as follows:--
    I built a nice, classy interface to a test program that allows the user a great deal of flexibility in controlling the parameters of the device under test and in seeing the impact of those parameters on other parameters. This has about 8-12 control objects, some of which are also wired to act as indicators so that changing one can display on another and vice versa. This interface and its supporting program is big enough that it belongs in its own subVI rather than in the main program. In addition, I built another interface that charts signals from the device under test; this is also big enough that it belongs in its own subVI.
    I would like to have the front panels of both of these VIs be part of the front panel of the main program. That is, the front panel of the main program should "inherit" the front panel of each subVI wholesale. If I need to tweak the interface of one of the subVIs -- for example, to add, delete, or replace controls, indicators, displays, charts, etc. -- I would like to be able to do this without having to wrestle with the main VI and the connector pane between it and the subVI.
    It seems that LabView should be capable of this, but I cannot find any help, guidance, pointers, etc., in the documentation, textbooks, or examples.
    Could someone give me a clue?
    Thanks,
    Hugh Lauer

    So I tried to configure a subpanel, and found it very confusing. It seems that when you put a subpanel control on the front panel, you have to then set up a way to invoke the subVI. Since my subVI has some inputs and outputs on its connector pane, I created a VI reference for it and wired that to the type specifier node of the Open VI Reference node. I then inserted a Call VI by Reference node, so that I could wire up the inputs and outputs of my subVI. Finally, I wired this to the subpanel Invoke Method (Insert VI).
    This is different from the examples I found. In those cases, the subVIs had no inputs or outputs on their connector panes, but rather took all of their information from their front panels.
    I got different behavior on different attempts to run it. The most common (and most recent) behavior is that the subVI front panel opens up a few seconds after the main VI starts, but it is not quite "in" the subpanel. Instead, it is offset about an inch from both the top and left, as if it were a floating window that I cannot move. Also, it has annoying scroll bars on the bottom and right, which I don't want.
    Incidentally, I have two of these subVIs, and I have not yet tried to put the second one into a subpanel.
    What I would really like to do is
    have both subVIs populate their respective subpanels as soon as the main VI starts, but before any work gets done.
    after both subpanels are loaded, run the two subVIs in parallel, one to control the device under test and the other to capture its signals.
    have no scrollbars in the subpanel windows.
    In fact, what would be the best from a GUI point of view is for the two subpanels to be permanently part of the front panel of the main VI.
    Any guidance or insight would be most helpful.
    REgards,
    Hugh

  • Front panel of SubVI locks on 2nd call

    HI!
    I'm calling a SubVI and pass a Boolean Reference to this SubVI. In the SubVI I'm executing a While loop. The stop condition is the value of the boolean control in the VI that calls the SubVI. (Boolean Refnum + Property Node: VALUE connected to while stop condition)
    Mechanical Action of the Boolean in the calling VI is: Switch when pressed.
    For the first time this will be executed it works fine. But the 2nd time the SubVI is called. The Front Panel of the calling VI where the stop button is located will be locked.
    Does anybody have an idea why this happens and how I can solve that problem?
    ANDY

    I tried what you described, using LV 7.1, and I have no problems running the vi over and over again. See the attached examples. Ref1.vi calls Ref2.vi and passes the Boolean reference to it.
    - tbob
    Inventor of the WORM Global
    Attachments:
    Ref.zip ‏21 KB

  • How to display remote front panels of subvis that are already open

    I inherited an RT project that uses remote front panels for nearly all the user interfaces. The host application opens a remote front panel the the top level RT vi, and there are several subvis on the RT system that are opened from that top level vi and thus displayed on the host (i.e. their "Show Front Panel When Called" properties are set TRUE).
    If the Host loses its connection to the RT system when any subvi front panels are opened, and the host application is restarted, it can re-open the top level vi remote front panel, but all the RT subvis that are already open will not display their front panels. I am looking for a way to open the front panels to these subvis from the host application.
    The kicker is, I need to know which subvis are actually running before I attempt to open remote front panels. Is there any way to determine what subvis are actively running (and not just in memory, such as subvis that won't get executed until the top level vi reaches a certain state)? I am thinking that I could create a list of the subvis that I need access to, check to see if any are actively running on the RT system, and then invoke a remote front panel connection with those that are running.
    Does anyone have any ideas as to how I might be able to do so? Or any other suggestions? [and yes, I know that RFP communication is probably not the best way to go, but we're too entrenched in this software to start over with a new system!]

    TurboPhil wrote:
    If the Host loses its connection to the RT system when any subvi front panels are opened, and the host application is restarted, it can re-open the top level vi remote front panel, but all the RT subvis that are already open will not display their front panels. I am looking for a way to open the front panels to these subvis from the host application.
    It might be possible to work around this behavior by placing VI invoke nodes in your top level VI that reference each of your subvis and setting the Wait Until Done invoke method to false.  This should cause the subvi to close when the top level VI closes even in the case of an unexpected restart.
    You can access this invode node in the functions pallet by selecting Application Control » Invoke Node and also selecting Application Control » Static VI reference.    Wire the Static VI Reference to the vi reference input node and double click the Static VI Reference and select the appropriate subvi in the dialog window.  Left click on the Method section of the invoke node and select Run VI. Finally right click on the Wait Until Done invoke method and select Create Constant and ensure this constant is set to false. 
    TurboPhil wrote:
    The kicker is, I need to know which subvis are actually running before I attempt to open remote front panels. Is there any way to determine what subvis are actively running (and not just in memory, such as subvis that won't get executed until the top level vi reaches a certain state)? I am thinking that I could create a list of the subvis that I need access to, check to see if any are actively running on the RT system, and then invoke a remote front panel connection with those that are running.
    You can access this information by using the Real-Time System Manager (Tools » Real-Time Module » System Manager).  This can be used to show what VIs and subvis are loaded into memory and which are running.
    For more information on using this tool please referere to this Knowledge Base article. 
    Message Edited by BLAQmx on 02-18-2008 11:40 AM
    Mark
    LabVIEW R&D

Maybe you are looking for