Dynamic Signal Acquisition

cancel
Showing results for 
Search instead for 
Did you mean: 

synch PCI-4472 & PCI-6040E

I want to acquire channels from a DSA board (PCI-4472) and a DAQ board (PCI-6040E) simultanesouly.  I found an example 'Multi-Device Synch-Analog Input-Cont Acquistion.vi'.  I get an error -200452 specified property is not supported by this device or is not applicable to the task.  This error appears no matter what synch type I select.  Looking at the block diagram, it appears these synch cases are for two boards that are the same type and not for synching two different boards.  I have a RTSI cable connecting the two, and it is configured in MAX.  Is this example the right one to use or is there a better example for what I am attempting to do?
0 Kudos
Message 1 of 9
(9,143 Views)

Have you seen this note?  It uses Traditional NI-DAQ, yet provides the concept of routing the oversample clock from the DSA device to a counter input of an E series where it can be divided down as the sample clock for the E series board.

http://sine.ni.com/apps/we/niepd_web_display.display_epd4?p_guid=B8C1DA7151524E2EE034080020E74861

Preston Johnson
Solutions Manager, Industrial IoT: Condition Monitoring and Predictive Analytics
cbt
512 431 2371
preston.johnson@cbtechinc
0 Kudos
Message 2 of 9
(9,133 Views)

Here's a good KB which has links to several different examples which show how to perform synchronization with a DSA device in DAQmx:

http://digital.ni.com/public.nsf/3efedde4322fef19862567740067f3cc/a133ed27df9bcc5986256f2e004ba342?O...

There are two links to examples with a MIO, this is probably where you want to start.

Also, remember that there is a group delay on the 4472 (due to the delta sigma converters) that will show up as an inital phase delay.  You can just remove the first 39 or so samples from the 4472 data to get rid of the group delay.

-Jack

0 Kudos
Message 3 of 9
(9,126 Views)
I am using PCI-4472 and PCI-6023 through traditionnal NIDAQ API. I synchronize acquisition using an external start trigger.
When I acquire the same signal on both boards using the same sampling frequency, I observe a systematic delay between samples coming from the 4472.
Further tests show that the delay depends of the sampling frequency.

The reply of Jack A. mentions "Also, remember that there is a group delay on the 4472 (due to the delta sigma converters) that will show up as an inital phase delay. You can just remove the first 39 or so samples from the 4472 data to get rid of the group delay."

Should anybody tell me more about this delay, and if there is an issue to my problem:
My purpose is to synchronize samples provided by each board. The solution should work regardless the sampling frequency. As the length of acquisition is short, quartz derive is not a problem, and the use of an external start trigger would be sufficient, if there were no delay.

Thank you!
0 Kudos
Message 4 of 9
(9,103 Views)

Olive -

 

The group delay on the 4472 will cause you to have that initial phase mismatch.  Remove the first 39 or 40 samples from the acquisition of your 4472 and then compare it to the results from your E-Series board.  You should see data that is synchronized.

Also, if this is a new application, I would really recommend using the DAQmx API rather than Traditional DAQ.  The examples that are listed in my previous post are what you need to get started.

 

-Jack

0 Kudos
Message 5 of 9
(9,073 Views)
Jack A,
the issue you proposed is unavailable in my context:  
my application does real time signal processing (combination, filtering and spectral analysis) using 200ms cycle.
If I troncate the first 40 first sample on some channels, samples incoming in processing blocks won't be synchronized.
A solution could consist in configuring a pre-trigger on 4472, but I dont think it is available through Traditional API.

Furthermore, since I use Visual C and don't have Labview, vi examples you listed cannot help me.

Regards
0 Kudos
Message 6 of 9
(9,029 Views)
One idea is to use an analog start trigger on the 4472 and a digital start trigger on the MIO where the digital start trigger is supplied by the 4472.  When using an analog start trigger on the 4472, the filter delay is effectively removed because the analog data has already propagated through the filter before it reaches the trigger circuit.  If you then use the digital output of this trigger circuit as the input for the start trigger on the MIO, you should have synchronized data with a minimal phase offset.  I don't know if you have the flexibility to use an analog trigger or not, but this approach might solve your problem.
0 Kudos
Message 7 of 9
(9,012 Views)

Olive -

 

Reddog has a good suggestion. 

Also, I think that the method of discarding samples is still valid.  Remember that you are only discarding the first 40 or so samples from the 4472.  So, if you are doing some type of processing which requires you to read a certain number of samples (like an FFT) here's what you do:

Configure both boards

Start the acquisitions

On the 4472 only, read ~40 samples and discard them

Enter your acquisition/processing loop

Read 1024 samples from both 4472 and 6040 (the samples will now be aligned since you have removed the group delay of the 4472)

Do processing

Loop back

 

Does that make sense?  Let me know if you still have questions.

-Jack

0 Kudos
Message 8 of 9
(9,011 Views)
Jack, your solution is unavailable since I use double buffered acquisition: It is not possible for me to skip the first 38,8 samples unless I reconfigure the all acquisition.

The issue Reddog  proposes sounds better, but I am unable to configure analog trigger: I obtain a 'bad numeric parameter error' when I call Configure_HW_Analog_Trigger in the following way:
    Configure_HW_Analog_Trigger (idPCI4472, ND_ON, 0,1, ND_BELOW_LOW_LEVEL, ND_THE_AI_CHANNEL);

Can you confirm that the following command will route the trigger signal to a pin on RTSI bus:
    Select_Signal (idPCI4472, ND_RTSI_XX , ND_ATC_OUT, ND_DONT_CARE);

Thank you
0 Kudos
Message 9 of 9
(8,966 Views)