07-19-2021 11:19 PM
All,
Could you please share any insight or thoughts on a data delay between two PXIe-4462 cards? Both cards are in one measurement task through channel expansion, sampling at the same rate. One common signal is fed into Channel 0 in both cards. The screenshots below show the delay between the red and yellow traces.
This article give a few options to address the issue. I thought the first option through channel expansion would work.
Thanks,
XR
07-20-2021 08:23 AM
Please attach your code. Also, what versions of DAQmx and LabVIEW are you running? Do you have two 4462 devices, two 4464 devices, or one of each?
07-20-2021 10:31 AM
Hi Doug,
I am using LabWindows 2017 with DAQmx version 19.1.1. I have two PXIe-4464 cards. Here is the code that I think is relevant:
/* create the task */
DAQmxCreateTask ("", &probe_TH);
/* Setup the AI voltage channels using channel expansion. In total we have eight channels from two cards, four from each card. */
for (i = 0; i < MAX_4464_CHAN_NUM; i ++) {
DAQmxCreateAIVoltageChan (probe_TH, (ch_info+i)->src, (ch_info+i)->name, DAQmx_Val_Diff, Vin_min, Vin_max, DAQmx_Val_Volts, NULL);
DAQmxSetAICoupling (probe_TH, (ch_info+i)->src, DAQmx_Val_DC);
DAQmxSetAIFilterDelayUnits (probe_TH, (ch_info+i)->src, DAQmx_Val_Seconds);
DAQmxSetAIRemoveFilterDelay (probe_TH, (ch_info+i)->src, (bool32) 1);
}
Thanks,
XR
07-20-2021 10:32 AM
Sorry for the typo in the first post: there are only two PXIe-4464 cards, no PXIe-4462 card.
07-21-2021 11:52 PM - edited 07-21-2021 11:56 PM
Here is what I see using the DSA Soft Front Panel:
The 4464 channels are added to the same analog input task. The synchronization is well within the interchannel phase mismatch for a single device. I see similar results when running the LabVIEW example: DAQmx\Analog Input\Voltage - Finite Input.vi
Given that the SFP and the LabVIEW example demonstrate synchronization via channel expansion and no explicit synchronization code, I recommend taking out code to remove filter delay.
> DAQmxSetAIFilterDelayUnits (probe_TH, (ch_info+i)->src, DAQmx_Val_Seconds);
> DAQmxSetAIRemoveFilterDelay (probe_TH, (ch_info+i)->src, (bool32) 1);