LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Help with LabVIEW DAQ application architecture

Here is a very simple template based on some of your requirements.  I will try to add in some more, but it should give you an idea of how to use the state machine to go through the different states.
Kenny

Download All
Message 11 of 25
(1,200 Views)
I didn't get to see KennyK's suggestion since I'm still stuck in 7.1. But my $0.02 is attached, too. You can add states, change sequences, etc. Break a leg!Smiley Happy
 
PaulG.
PaulG.
Retired
0 Kudos
Message 12 of 25
(1,193 Views)
Here it is in 7.1.
 
Paul, the vi did not get attached to your post
 
Kenny
Kenny

Message 13 of 25
(1,190 Views)
Ooops. OK ... let's try this again ..
PaulG.
Retired
Download All
Message 14 of 25
(1,189 Views)
Kenny,

Thanks for the template. I have some experience with state machines and producer consumer loops (both data and event driven), so your design makes sense to me.

My big struggle with this is in the controlling of the actuall acquisition timing. I need to be able to collect and log low speed data (1 Hz sampling rate using compact fieldpoint with 5 modules (2 AI, 1 TC, 1 CT, 1 DIO) throughout the test, but use only the data collected during the Set Point Duration to perform the limit testing.

I would also need to collect and log high speed data (5 channels around 24kHz sampling rate) during the set point duration and perform some limit bounds checking after running the HS data through RMS and FFT functions.

How would I coordinate that type of timing based on the state machine model? Would I have separate Prod. / Cons. loops handling the LS and HS DAQ over the course of the entire test and use the given state machine model to try and identify the sections of the collected data to run the limit tests against as the data accumulates? (this is actually the approach that I got from one of the NI guys, but I haven't been able to implement it 🙂

Thanks again for all the help.
0 Kudos
Message 15 of 25
(1,187 Views)

@PaulG. wrote:
Ooops. OK ... let's try this again ..





Paul,

I think there is a 'messagebox.vi' missing in your VI.

- Chris
0 Kudos
Message 16 of 25
(1,187 Views)

I like Paul's approach of using the VI server to load the subvis that run in parallel.  I will be saving the template for some later projects.  Thanks Paul Smiley Happy

 

Kenny

Kenny

0 Kudos
Message 17 of 25
(1,180 Views)
I like it was well, however, I'm not sure how I'm going to update the UI with 'real time' values as they are acquired if that process is in a sub vi.

The other problem is how to synchronize the acquisition timing between the high speed, low speed and controls when they are in separate VI's. This is really the root of my trouble and the part I really don't understand.

- Chris
0 Kudos
Message 18 of 25
(1,181 Views)
Chris: the messagebos is not important. It's simply a souped-up version of the message box vi. The framework I posted was stripped down from a main vi that controls up to 6 'main' subvi's. All in all the main application loaded over 600 vi's and 22 states. I simply forgot to delete everything.
 
PaulG.
7.1 with 8.2 "in the mail" Smiley Tongue
PaulG.
Retired
0 Kudos
Message 19 of 25
(1,162 Views)
Chris: functional globals are very useful in storing and retrieving data from vi's running in parallel. When the equipment is running and acquiring data you simply put the data in the USR. When another part of your code wants that data simply call up that data vi and get it. You can put the data in one program, then get it in another program that's running in parallel. Hope that helps.
 
PaulG.
7.1 with 8.2 "in the mail" Smiley Tongue
PaulG.
Retired
Message 20 of 25
(1,157 Views)