Multifunction DAQ

cancel
Showing results for 
Search instead for 
Did you mean: 

AOUpdateChannel updates a wrong channel (driver bug ??)

Hello,

We found a strange bug on a software that is still using Traditionnal NI-DAQ (and no way to go to DAQmx, too much work) : after a defined sequence, AOUpdateChannel updates a wrong channel !!

Hardware: Device 1 = PCI-6713     -     Device 2 = PCI-MIO-16-XE-50

Software: NI-DAQ Traditionnal 6.8.1 / 6.9.3 / 7.4.1     WinNT SP4 / Win NT SP6a / Win XP     CVI v5.0.1/v8.0.1    (We tried many updates and had the problem in all configurations, from WinNT SP4 + NI-DAQ 6.8.1 + CVI 5.0.1 to Win XP + NI-DAQ v7.4.1 + CVI 8.0.1)

 

Here is the sequence (all calls in the same function, in the main thread):

  AOUpdateChannel (1, "0", 0);
  AOUpdateChannel (1, "4", 7);
  AOUpdateChannel (2, "0", 0);
  AOUpdateChannel (1, "0", 0);
  AOUpdateChannel (1, "4", 9);

Problem: After the last call, 9V is applied to the channel 0 of device 1 and not to the channel 4. The channel 4 remains at 7V (previous value) !

 

Can anyone explain this behavior and help us to solve this issue ??

For information, the problem disappears if we remove anyone of these calls, and also if we change the place of the call to device 2 (but perhaps it appears later, and anyway, we need to use exactly this sequence). This behavior is just incomprehensible.

Thank you.

0 Kudos
Message 1 of 3
(2,927 Views)

Hello,

 

And if you redo then   AOUpdateChannel (1, "4", 9);

 

What do you see?


Regards,

Nacer M. | Certified LabVIEW Architecte

0 Kudos
Message 2 of 3
(2,881 Views)

Hello Nacer, thanks for answering.

I've done many tests, here is the sequence (all commands executed with a pause - GetKey() - between them), and the results:

  AOUpdateChannel (1, "0", 0);          // ok, normal behavior
  AOUpdateChannel (1, "4", 7);          // ok
  AOUpdateChannel (2, "0", 0);          // ok
  AOUpdateChannel (1, "0", 0);          // ok
  AOUpdateChannel (1, "4", 9);          // Here, Chan 0 of Board 1 is set to 9V, Chan 4 remains at 7V !!!

  AOUpdateChannel (1, "4", 8);          // Here, Chan 0 of Board 1 is set to 8V, Chan 4 remains at 7V !!!

  AOUpdateChannel (1, "4", 6);          // Here, Chan 0 of Board 1 is set to 6V, Chan 4 remains at 7V !!!

  AOUpdateChannel (1, "0", 0);          // There, Chan 0 of Board 1 is set to 0V (finally, back to a normal behavior !), Chan 4 remains at 7V
  AOUpdateChannel (1, "4", 9);          // Here, normal behavior (Chan 4 of Board 1 is set to 9V, Chan 0 remains at 0V)

  AOUpdateChannel (1, "4", 8);          // still ok, normal behavior

  AOUpdateChannel (1, "0", 0);          // ok
  AOUpdateChannel (1, "4", 9);          // ok

  AOUpdateChannel (2, "0", 0);          // ok
  AOUpdateChannel (1, "4", 8);          // ok

  AOUpdateChannel (2, "0", 0);          // ok
  AOUpdateChannel (1, "0", 0);          // ok
  AOUpdateChannel (1, "4", 9);          // Here, Chan 0 of Board 1 is set to 9V, Chan 4 remains at 8V !!!

 

So, it seems that changing the board with the same channel nb is the cause of the problem. But I don't understand why, and moreover, why I have this issue with all DAQ drivers from 6.8.1 to 7.4.1, and on WinNT as well as on WinXP, with 2 different computers and 2 different CVI versions !!

Could it be that a memory pb or incompatible registers between PCI-MIO-16-XE-50 and PCI-6713 survived till now ???

Thanks for support.

Stephan

0 Kudos
Message 3 of 3
(2,868 Views)