I am trying to measure the time (delta t) between the falling edges of two signals acquired by two different analog channels of the PXI-4461. The delta t is expected to be about 1ms. I am planning to 1) acquired both signals using the falling edge of 1 signal as the triggering condition 2) then, use some signal processing Vis to figure out the delta t. I couldn’t get past the acquisition part with either MAX or Labview DAQmx. I keep getting some errors about some of the samples are not available, and the errors occurred right at the time of the falling edge.
Thanks for your help,
Solved! Go to Solution.
Thanks for the question. It looks like you want to do analog triggering with pretrigger samples for your analysis needs. Can you let us know what specific error you're seeing?
The error is -200284. Basically, I generated a DAQmx task in MAX to make the measurement. This error goes away if I switch to AC coupling mode, but I really need to measure the signal with DC-coupling.
I was able to make the measurement from both channels of the PXI-4461 (pls see attached picture) but the acquisition wasn’t triggered at the point that I wanted.
Also I ran out of idea on how to measure the delta t based on the provided signal processing Vis. Can you please point me to the right direction? Thanks.
Were you able to to take a look at the analog triggering with pretrigger samples program I sent last time? It's difficult to troubleshoot what may be going wrong in MAX. Since it looks like you may not necessarily need pre-trigger samples, go ahead and set that value to 0. Another aspect of the 4461 is that it's a DSA card with a delta sigma converter. This means that at every acquisition, it will take a few "nonsensical" measurement points due to filtering. This KB can explain this phenomenon: Why is my Data Delayed When Using DSA Devices?
You can find the number of samples to throw out from the 446x specifications:
Hope this helps!
I used the VI. I acquired data with the pre-trigger feature disabled. I attach two pictures 1) scope screenshot 2) data acquire from the VI. There's a unexpected rising edge (the area that I circled) with every single signal that the card acquired. Is it a known issue? It's about 4000 samples (a lot more than the 63 "non-sensical" samples that I am supposed to discard).
One bird down, I really have to figure out how to measure that delta t.
Thanks for your support,
I forgot to mention that those 63 samples only need to be thrown away when using any other sort of triggering other than analog triggering, but these samples may also shed light on whether or not the analog triggering is behaving as expected. What are you using to generate these signals? I'm not sure what the rising signal you're seeing is if you're not expecting it.
To measure delta t, you can use the data output of the DAQmx Read functions. For example, determine where in each waveform you're seeing a specific value (3.4, for example), and determine how many index points they're off by. You can determine the time represented by each index point by unbundling the waveform data wire.
Try modifying the Sound and Vibration VI:
SVL Measure Propagation Delay (DAQmx).vi
Within it, you can find a subVI
that can be used to measure the delay in samples. For signals with a well-defined trigger condition, select method = Trigger. You can normalize the reference and delayed signal by their respective DC offsets prior to using this VI in order to make the trigger condition common to both signals.
Here is the code that does the delay calculation:
Those signals came from the unit under test, one is the regulated 3.3V DC supply, one is an early warning discrete which toggles momentarily before a power dropout event. I am still puzzled about that initial drop for the first 4000 samples. I can’t quite explain it with the scope. The settings are pretty much the same. I am wondering if the switch to DC coupling from the default AC coupling is the cause. I going to insert some delay before the DACmx Read to see if it changes anything.
I was able to measure the delta t by storing the data to two arrays, assigning time indexes to each of the array elements, then calculating the time difference.