02-24-2025 10:39 AM
I have an NI PXIe-5122 oscilloscope mounted in a PXIe-1073 chassis. The signal type to measure is a train of pulses. This signal is provided by an NI PXIe 5413. At the start of the train, the waveform generator generate a trigger on RTSI0, this is the scopes reference trigger.
The goal is to measure many of these pulse trains and to statistics on them (eye diagram, bit error rate, etc.). At high pulse frequencies (>10 MHz), the scope sometimes goes in error due to the data not being read fast enough. I don't care about reading every single pulse train, skipping some is acceptable, it's the statistics that matter.
When the buffer overflow, my idea was to simply abort and reinitiate the scope. The waveform generate keeps generating independently. Like this basically:
But once this error happens once, the next fetch calls always go in timeout, i.e. they don't get triggered even though I don't make any calls to the waveform generator. The above VI is the only vi in a while loop, it sends the data to a queue where a consumer loop processes it.
Here is how I initialize the scope before calling acquire:
What am I doing wrong?
02-24-2025 05:38 PM
Looking at a similar program, when I had a timeout error I was able to Abort the scope acquisition and restart immediately like what you showed in your 1st diagram.
For other errors, I had to do a complete re-initialization of the scope and reset everything. I am not sure why some errors are recoverable and others are not.