12-21-2009 06:52 AM
Hi,
I have a problem with which way would be best in terms of some architecture. At present I have an existing program which consists of 4 asynchronous loops running in parallel. Each loop is a state machine which is controlled via a global notifier to start the state machine off. I also have 4 Marposs digital acquisition systems for which i have written the Drivers from scratch using VISA. All of these marposs devices communicate through 1 serial port. I have successfully, in isolation managed to acquire data using the three vi's listed below.
- Start Acquisition (Start.vi)
- Read Digital Array Values (Read.vi)
- Stop / reset Acquisition (Stop.vi)
This gives me data acquired from the device timed in the hardware at say 0.25mS/Sample (Which i need this speed)
The problem I have is in putting this same process into each of the 4 mentioned asynchronous loops. I know they will cause conflict as they stand. However I was thinking of putting the Acquisition into a Daemon and only executing the acquisition (With a notifier / rendezvous) when all stations are ready for measurement. This I have done in the past however I believe this could have an adverse impact on throughput, which is already close to specification Limits.
Another method maybe to put the subvi's into some kind of wrapper which has some kind of access control?
Is it possible to put each of the Marposs devices onto a virtual Serial Port? even though they use one Physical Port? <-- Long shot but would be nice!
I am hoping someone has already had a similar problem to this before and can advise me on the proper way forward. If not i think i will go ahead and go down the daemon route, which i am not too keen on doing.
Thanks in advance
Craig
12-21-2009 09:21 AM

12-21-2009 09:34 AM
Hi, Thanks for the Questions.
The Units are on a RS485 bus going through a USB adapter (Not Ideal). The units used to be polled in a similar fashion you suggested. However this is not enough for our needs as we need to profile the measurements for better accuracy and post processing etc. What the new method needs to do is Tell that probe to start Acq, wait untill part / movement has been made then collect that data from the FIFO within the hardware. At the moment there are 3 low level vi's that have this functionality but I am having trouble trying to see how these might go into a Daemon type polling loop which can supply all 4 asynchronous stations. Each station is in effect a state machine which sets a bunch of automation controls in a sequence then "Measures"using the Marposs devices so I suppose the timing for the acquisition is indeterminant to a degree unless some sort of notifieris used.