04-07-2010 07:04 AM
Hi every body,
I'm trying to do a finite trigger signal with my board PCIe-6251 .
The problem is that the DAQ allways takes a longer time to do the task that should take, and is not proportional.
Like this, when the trigger signal should take between 20-100 ms the board take 100 ms, when should take 101-200 ms it always takes N*100 ms.
Example:
Should take (ms) take (ms)
between 0-100 100
between 101-200 200
between 201-300 300
between 301-400 400
. .
. .
. .
and this is a big problem for my program,
somebody knows why this is happening ?
and how to fix it ?
I attached one simple code that happens the problem.
Thanks in advance,
Tiago
Ps: Using Win Xp 32 and labview 8.5.1
04-07-2010 01:15 PM
Hi Tiago,
The Wait Until Done function actually polls the status of your DAQ Device every 100 ms (for Counter Output only). This has been mentioned a couple of times on other forum posts:
DAQmx Wait Until Done 100ms Default
DAQmx Wait Until Done Takes an Extra 100ms
Unfortunately, our older hardware requires the polling behavior but the output of the counter is not affected. What is the exact application that you require where this is a big problem?
X Series devices implement an Interrupt to signify when the CO Task is complete, so the Wait Until Done will be much more responsive. For example, on my 6353 I was able to get a time of 367 or 368 when using a task that takes 366.022.
Best Regards,
04-09-2010 09:10 AM - edited 04-09-2010 09:16 AM
Hi Tiago,
Let me amend my previous post a bit. The driver is polling every 100ms, but this isn't necessarily required by the hardware. We have filed Corrective Action Request #219308 and are looking into changing the behavior to give a faster response.
Thank you for bringing the behavior to our attention--if you need help coming up with any possible workarounds until we can fix the behavior just let us know more about the big picture of your application.
Best Regards,
07-01-2012 07:54 AM
hi,
I'm using either a PCI-6602 or a PCI-6259 board with DAQmx to generate a finite number of pulses with the counter. After the generation is done (for example 100 pulses) I want to detect that the task is finished, do something else, and then quickly restart the task to generate another 100 pulses.
I'm using the DAQmx "WAIT UNTIL DONE" vi to detect when the 100 pulses have been generated. What I'm seeing is that the wait until done vi seems to only update once every 100ms, such that the minimum time between my pulse generations is always 100ms.
This is much too slow for my application, and the behaviour of this function is counter-intuitive: it should return after an internal hardware interrupt or some such thing. I see that this issue was first reported in 2006 - surely by now this has been corrected??
thanks
Mark
07-02-2012 12:16 PM - edited 07-02-2012 12:18 PM
Hi Mark,
What version of NI-DAQmx are you using? CAR #219308 was fixed in NI-DAQmx 9.2, which was released in August 2010. A related problem where a large initial delay could make "wait until done" take too long was fixed in NI-DAQmx 9.5, which was released in February 2012.
Also, are you using triggering or external clocks?
Brad
07-02-2012 04:24 PM
hi Brad,
Thanks for the info. I'm using NIDAQmx 9.11, and if the problem was fixed in version 9.2, unfortunately that version also dropped support for my version of Labview, which is 8.2.1.
btw, the pulse generation I'm doing is internally clocked.
thanks again,
Mark