LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

HMI using multiple VI´s

Solved!
Go to solution

Hi. I'm beggining to use Labview as HMI, but I don't know exactly how to do it. I'd like to build about 4 screens to navigate. I've read that I could use tab control, but when I tried, only the chosen tab was working properly - the others lost data. My application consists in control of a simple educational / research plant (about 3 inputs and 3 outputs), to work with PID / fuzzy control. How can I do this HMI (the easiest way)? Does anyone have a step-by-step tutorial on this subject?

Mauro

Labview 8.2
0 Kudos
Message 1 of 13
(3,979 Views)

What do you mean by your other tabs lost data?

 

Perhaps you can post the code you have now so we can take a look and make suggestions.

0 Kudos
Message 2 of 13
(3,959 Views)

Ravens Fan:

 

First of all, thank you for your answer. Actually, what I mean by "lost data"  is the following: I was trying to use a tab control to navigate through 3 or 4 screens. The first would be the main screen, where I could see an overview of the project and a historical trend. The second I would use to configure a PID control. But when I navigate to the second screen, and I come back to the first one, the graph restarted, erasing all data. And I lost communication with my data acquisition system (fieldbus foundation, using OPC) (I kept receiving a message "quality warning", and no data updated).

But as I said, I'm quite a begginer using Labview, and probably I've made several mistakes in constructing the code. So, if you have any kind of suggestions, or even a step-by-step procedure (a  "how-to" tutorial) I would really appreciate. Tomorrow I'll try to post the code.

 

Thank you in advance!

Mauro

Labview 8.2
0 Kudos
Message 3 of 13
(3,946 Views)
Without having seen your code yet, I would guess your issue is probably due to either not using shift registers to take data from one loop iteration to the next, or not wiring certain wires through every case of a case structure.
0 Kudos
Message 4 of 13
(3,931 Views)

Hi, maybe you have to use a Waveform Chart instead of Waveform Graph to hold the historical data.

- Partha ( CLD until Oct 2024 🙂 )
0 Kudos
Message 5 of 13
(3,927 Views)

Hi Mauro,

 

Bellow there are a link where you can find some information about how to develop a user interface using  Event-Driven, so you can use multiple loops to acquire and present data according the user interaction.

 

Developing User Interfaces with Event-Driven Programming

http://zone.ni.com/devzone/cda/tut/p/id/5785

 

Using Local Variables, Queues, and Notifiers to Synchronize Data with Parallel Loops

http://zone.ni.com/devzone/cda/epd/p/id/3717

 

Bellow some information about Design Patterns that can be useful for your application.

 

Application Design Patterns: Master/Slave

http://zone.ni.com/devzone/cda/tut/p/id/3022

 

Application Design Patterns: Producer/Consumer

http://zone.ni.com/devzone/cda/tut/p/id/3023

 

I hope that it may help you.

 

Regards,

Osvaldo Santos
0 Kudos
Message 6 of 13
(3,909 Views)

Hi,

This is a very simple example how to use tab control.

0 Kudos
Message 7 of 13
(3,897 Views)
Here is a link to a presentation about GUI applications in LabVIEW.
0 Kudos
Message 8 of 13
(3,888 Views)

Hi, everyone!

 

Thank you very much for your answers. I'm still in doubt about the best choice: using buttons to "call" the other screens, or using tab control. What do you suggest? Another question: if I use one tab to configure a controller (lets say, gains of a PID controller), the data will be available to other tabs?

 

As I said before, I'm a beginner...

 

Thanks in advance!

Mauro

Labview 8.2
0 Kudos
Message 9 of 13
(3,865 Views)
I would probably use the tab control.  It is a lot easier.  The tab control is essentially a way to look at different portions of your front panel.  All controls and data on all tabs are available for use at all times.  On the block diagram, you will not be able to tell if a control is on a tab or not.  Note that the tab itself is an enum, and you can set it programmatically like any other enum.
0 Kudos
Message 10 of 13
(3,850 Views)