08-17-2007 03:49 PM
08-20-2007 09:50 PM
08-21-2007 08:16 AM
Hi Paul,
I was always having the problem in Slot 3 when the four cards are in slots 3-6. Yesterday I tried placing the 6120s in slots 4-7, and a PXI-4472 in slot 3. With the 6120s running at 800KHz (maximum rate) and the 4472 running at 1KHz, I was able to acquire data all night with no missing blocks (100000 blocks). This morning I tried bumping the 6120 sample rate up to 1MHz (using warp mode) and added a 4472 to slot 8, for a total of six cards. All cards seem to be running just fine in this configuration (no temporary freezups). The block count is the same for all six cards, as was the case in the overnight run.
I have not tried NOT using the event to trigger the read, because I believe the event-based acquisition should provide better overall throughput. While these tasks are running, I also need to be able to monitor the waveform of a selected channel in real time and also log the data to a binary file. I can monitor the data OK (using a queue for each task that I access in my GUI loop), but the logging to file creates a backlog at the higher sample rates. This is a different issue, though, that I am not concerned with at this point, because I realize what I'm attempting to do is approaching the limits of the LabVIEW's capabilities. However, the varied performance in the different slots does concern me. I recently had my PXI controller (PXI-8186) upgraded to the latest revision because of a similar problem (see the following thread)
Streaming from multiple devices fails if in certain slots http://forums.ni.com/ni/board/message?board.id=270&message.id=3718
I thought this had resolved the issue completely, but it seems that it merely improved it. I have a support call into NI about this, but their request is for me to generate a "simplified version" of the code that exhibits this problem. It would take me an exceedingly long time to do that, because of everything that this program is doing related to DAQ setup, timing (I'm creating external timing and triggers using a ZTEC card), and other functionality. I was hoping that someone could describe this anomaly to a developer, to get an idea of what could cause this to occur, e.g. is it a threading issue, a DAQmx issue, a hardware issue, etc. The fact that the backlog does not show an increase after the pause should definitely be a clue as to where the problem might lie.
08-21-2007 08:25 AM
Paul,
to answer your questions:
Are all four of the tasks the same? Yes, I am using a reentrant VI (although I have a different VI for each card type), and am calling multiple instances of it simultaneously. I have six case structures (one for each possible PXI Slot), and each check the card type for a specific slot and calls the appropriate task based on the card type.
Have you been able to isolate the problem to one card? The problem seems to be slot-related, not card-related. It does not matter which of my cards I put in the slot that has the problem.
Did you try the faulty task with one of the other 6120s? See the above post. All cards are capable of running at the maximum rate, depending on the slot.
Have you tried doing this without the EveryNSamplesAcqIntoBuffer event and just simply using a DAQmx read to aquire your samples (as shown in our DAQmx examples: Help » Find Examples)? See the above post.
Also, have you been able to verify what rate over 700KHz this breaks down at? There is no specific rate - the problem just gets worse as the rates go up. I know I have been able to do 500KHZ overnight, but have not performed exhaustive testing on the rates.
08-22-2007 04:49 PM