Digital I/O

cancel
Showing results for 
Search instead for 
Did you mean: 

DIO-96 acting funny when using DAQmx global channels through labview

I'll try to describe the situation the best that I can.
 
We have been using a PCI-DIO-96 board on a production tester for a number of years utilizing the legacy DAQ drivers and corresponding global channel with no problems.  Recently I've changed the software to use DAQmx drivers but the problem is that one I/O bit (and only one out of the 50 odd we are utilizing) will not respond when accessed through Labview using the corresponding global channel.  The program executes as follows:
 
1) Identifies and initializes all connected devices
2) Identifies and writes low to all global digital output channels
3) Allows user to select which channel they would like to control
4) Writes high/low to selected channel
 
I'm currently running this software on other machines with the DIO-96 with no problems (other than the line needs to be inverted, still not sure why that is...) and the really weird thing is that if I create a code which initializes the devices and then access only the IO bit I'm having issues with it works fine...it just doesn't work when "initialized" with all the other global channels.
 
The question I have is, does the order in which the lines are written to have an effect on the functionality?  By the way...I'm not mixing inputs/outputs within ports, each port is one or the other (I know that the changing of the port from DI to DO or vice versa will cause a reinitialization of the entire port).
 
Thanks in advance...
0 Kudos
Message 1 of 2
(3,394 Views)
Hello Redrabbit,

To answer your question: No, it should not matter what order you write to channels in your program. That being said, the behavior you have described is very curious. I'm afraid I don't completely follow what's going on in your program. When you say "only one out of the 50 odd we are utilizing" do you mean the same channel every time or does the incorrect line change on different runs? Is there anything different between the systems that work and the one that doesn't? There are a couple standard troubleshooting steps you could take, including swapping PCI slots on your computer, plugging the card into one of your other systems to see if it is system dependent and confirming the driver version is valid for your Operating System, DAQ device and version of LabVIEW.

In addition to those steps, I would be curious to see what happens if you changed step 2) to in
itialize all the channels as High. It should be simple enough to change that step in your code, and that would allow you to determine if the initialization step is the problem or if it comes after. By setting the channel to high, you could read it with an external device and confirm whether or not the initialization is occurring.

If you are still having problems after that, I would recommend you post your code to this discussion forum. If the code is not to complex, you could even just post a screen shot of it. If you post the working single channel code and the broken multiple channel code, we could compare the two and get a better idea of what the problem is. Hope this helps. Good luck.


Matt Anderson

Hardware Services Marketing Manager
National Instruments
0 Kudos
Message 2 of 2
(3,367 Views)