09-03-2012 08:18 AM
hi norbert,
nope, I dont put the generation and acquisition together in 1 VI.
09-03-2012 09:01 AM
Yan,
i haven't analyzed the whole VIs, but you are using two AO tasks (on the same device it seems!):
Which task throws the error?
Which iteration does the error usually occur? If it is "somewhere": Does it depend on e.g. system load (moving mouse, ..)?
Does your timed loop always throw an finished late directly before the error occurs?
What is the CPU load of your system if running a single example (input or output) and if running both VIs together?
Norbert
09-03-2012 09:18 AM - edited 09-03-2012 09:21 AM
@Norbert_B wrote:
Yan,
i haven't analyzed the whole VIs, but you are using two AO tasks (on the same device it seems!):
Which task throws the error?
Which iteration does the error usually occur? If it is "somewhere": Does it depend on e.g. system load (moving mouse, ..)?
Does your timed loop always throw an finished late directly before the error occurs?
What is the CPU load of your system if running a single example (input or output) and if running both VIs together?
Norbert
hi norbert,
yes, I'm using 2 AO tasks; 1 task is 1 sample generation only (using 2 channels), and 1 other task is timed generation (using 6 channels).
I'm sure the timed generation task is the one with error.
cpu load when running only generation: from 100k goes to 400k, and stay at 400k after run done.
wehn running both gen and acq: about 490k.
EDIT: sorry, I'm saying about memory, if its CPU, it goes from 0% to 40% (only generation) and about 50% (gen & acq)
I've just tested it few times, the error occurs mostly on iteration number 5,6,7,8.
as I said at the first post, just running generation only doesnt gives me error.
09-03-2012 09:29 AM
CPU load is a parameter presented in %... so i assume that you are talking about the memory load (and k would be M instead)....
Nevertheless, it seems that your generation creates the error not in the very same iteration every time. Which already indicates that the buffer refill (DAQmx write) is called less times than required. So your initial buffer is running empty over time (5-8 iterations).
One thing to increase performance in a simple way is to remove front panel elements unless really required. I am foremost thinking on the waveform graph element you have in the timed loop showing the data you pass into the AO buffer.
I can also imagine that the algorithm for picking the different waveform components could be simplified, increasing performance as well.
Maybe, adding some more performance to the host system could improve the situation. This could be:
Norbert
09-03-2012 09:40 AM
@Norbert_B wrote:
CPU load is a parameter presented in %... so i assume that you are talking about the memory load (and k would be M instead)....
Nevertheless, it seems that your generation creates the error not in the very same iteration every time. Which already indicates that the buffer refill (DAQmx write) is called less times than required. So your initial buffer is running empty over time (5-8 iterations).
One thing to increase performance in a simple way is to remove front panel elements unless really required. I am foremost thinking on the waveform graph element you have in the timed loop showing the data you pass into the AO buffer.
I can also imagine that the algorithm for picking the different waveform components could be simplified, increasing performance as well.
Maybe, adding some more performance to the host system could improve the situation. This could be:
- adding RAM
- swapping to a more powerful system (e.g. QuadCore, ...)
- move to 64bit (if currently using 32bit)
Norbert
hi norbert,
I've tried to remove the waveform graph (before you said so), but it doesnt really help improve the performance.
So, you mean, the error comes from the my computer system? since I cant find any helps about this error, and I've contacted NI about this problem since last friday, and havent got any response yet.
09-03-2012 10:11 AM
@Mystogan wrote:
[..]I've tried to remove the waveform graph (before you said so), but it doesnt really help improve the performance.[..]
Yan,
Do you now achieve more iterations until the issue occurs (e.g. 10+)?
One thing you might test is to replace the timed loop with a for/while loop containing a little wait function. It can improve the performance of your specific application as well.
Norbert
09-03-2012 10:37 AM
hi norbert,
nope, dont get any better iteration.
Tried to change into while loop, somehow doesnt work? using 100ms wait time, loop just running 2x then error comes. Tried using 10ms wait time, loop just running 1x then error comes.
09-04-2012 02:05 AM
Yan,
what motherboard is mounted in your PC?
09-04-2012 02:57 AM
good morning,
this is PC spec that I'm using:
09-04-2012 04:14 AM - edited 09-04-2012 04:15 AM
Yan,
i was asking for this info because there has been a special motherboard known to create this error when exceeding a certain generation speed when using MXI as bus interface.
A BIOS update solved the issue.
Since i am not sure why you are running into the issue (the specs do not show a bottleneck here), maybe you can check this out, even though your motherboard differs from the one mentioned above.
Is it also possible for you to try out another host PC for reference test? If so, does it work? Does the other host PC differ in hardware (different motherboard, ...)?
Norbert