Jump to content
  • 0

Voltage on analog input channel drops briefly during data collection


PicoSystems

Question

We are trying to maintain an old test system using a DT3010 PCI board and a VB6 application.  Our requirement is to replace the old PC with a Windows 10 PC.  We seem to have everything working, except that there is an issue with the data.  We need to capture a pressure change, so just one channel of data.  The sampling rate is 40,000 Hz, and we collect 12,000 samples.  It is not consistent, but somewhere during the pressure rise, the analog data drops close to zero for a brief time (some noise is collected during this time) and then returns to a level that seems accurate.  Essentially a chunk of data is missing.

We have tried two DT3010 boards.  We have tried two different systems for converting the PCI Express slots on the newer PC to the PCI card.  The missing data issue happens consistently on the new PC, but not on the old PC.

Has anyone seen anything like this before or have any ideas?

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Hello @PicoSystems.

On your new systems, if you were to replace the pressure signal with a function generator, is the issue still reproducible?  If it is not, then the issue is coming from your pressure sensor.  However, if the issue is still reproducible with the function generator, then it may be the PCI-PCI Express converter.  

Regards,

Fausto

Link to comment
Share on other sites

  • 0

We finally are getting back to diagnosing our data collection problem.  We have confirmed that the issue is not with the incoming signal.  The issue only appears with the board installed on the new PC.  We have two identical DT3010 boards, both of which work on the old PC and both exhibit the same symptoms on the new PC.  The same gap in the signal also appears when using other sensors.

I have a suspicion that the issue is related to buffering.  The original programmer is no longer available, and I am not familiar with every aspect of the program.  The test is recording a pressure rise on a single analog channel.  The acquisition triggers on the pressure signal (the trigger threshold is set to 0.5 V).  A typical data acquisition uses n buffers, each of which is set to hold 4 kSamples.  On the legacy PC, a test set up for 4 buffers will collect a bit less than 16 kSamples (the number of samples captured varies from one test to the next).  If we change the parameters to include 5 buffers or increase the length of the buffers, the test records more samples.  Each data file will contain a number of samples a bit smaller than the size of the buffer times the number of buffers.  A comment in the code notes that buffer 0 is the pretrigger buffer, buffer 1 is the trigger buffer, and all subsequent buffers are postrigger.

However, when we run a test on the new PC the data file contains an exact number of data points that is equal to (n-1)buffers * buffer size.  For example, if the settings call for 6 buffers with 4 kSamples/buffer, we get exactly 20 kSamples (we would expect more samples between 20k and 24k).  The worst part is that the second buffer (trigger buffer?) worth of data is all zero.  From sample 1-4,000 we have analog input values that seem good.  From 4,001-8,000 everything is zero.  From 8,001 to the end seems ok. 

Why would an empty buffer get inserted in the data?  Why would the legacy system collect more samples?  As far as we can tell, the settings related to data acquisition are the same on both the new and the legacy PC.

Missing buffer plot.jpg

Link to comment
Share on other sites

  • 0

Hello @PicoSystems.

Your code has not changed.  Your triggering method and number of triggers have not changed.  The only changes are a new PC and new Windows OS.  Is that correct?  What brand and model PC is it?  Do you have a different PC to use for your tests?

Can you reply with your code?

Regards,

Fausto

Link to comment
Share on other sites

  • 0

Thanks, Fausto.  I'm attaching some of the code that seems important to me.  I cannot post all of the VB6 code, since it contains proprietary information.  It's likely that the snippets do not explain everything for you.  Please let me know if there is something else specific that you would be interested in seeing.  You are correct that the code hasn't changed.  The old PC is running an old version of Windows.  The new PC is running Windows 10.  We needed to install a PCI slot adapter so that we could plug in the DT3010 card. 

I feel like the trigger buffer is not being captured, because we aren't getting the changing number of samples that would come from a partially filled buffer (see AD3010_BufferDone).  I don't know what would be causing that part of the logic to fail.  I suppose where the trigger buffer data should be, the program keeps inserting a buffer that is completely filled with zeroes. 

Code Snippets for Forum Post.txt

Link to comment
Share on other sites

  • 0

We finally figured out the problem.  Our system was using a pre- and post-trigger acquisition on one analog input channel.  The voltage input was used as the trigger.  When the system was working correctly it would keep one full buffer of data before the trigger (pre-trigger buffer), one partially filled buffer that was interrupted by the trigger (trigger buffer), and then two full buffers after the trigger (post-trigger buffers).  With the Open Layers library it seems we had two events available to use: PreTrigBufferDone and BufferDone.  When a buffer filled up with data before the trigger, the program ran a PreTrigBufferDone subroutine.  Similarly, when a buffer filled after the trigger, BufferDone was called.  However, the old and new PCs behaved differently when the trigger happened.  On the old PC, the trigger generated the BufferDone event, while on the new PC, the trigger generated the PreTrigBufferDone event.  We don't know why this changed, and we don't see any way to control this behavior.  We decided to modify the associated subroutines so that the data would get recorded correctly on either PC.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...