How to Disconnect Hardware Routes to PFI Lines Using DAQmx

Updated May 20, 2019

Reported In

Hardware

  • DAQ (Legacy)

Software

  • LabVIEW

Issue Details

  • I have a program that involves routing a signal onto a particular PFI line that the user selects. After the program runs several times, the signal can be observed on more than just the single PFI line that the user selected for that particular execution. Instead of driving a single line, multiple lines are being driven. How can I fix this problem?
  • My signal is latching to PFI line of previous runs.

Solution

The problem is caused by not disconnecting the physical hardware connection between program executions. The DAQmx Channel Property Node used to route a timing signal is called Counter Output » Pulse » Output Terminal. This property allows you to specify which terminal will output the generated signal. Task-based routes are created using either a channel property node or the DAQmx Export Signal.vi. With task-based routes, the route is reserved during the execution of the program and is unreserved when the task is cleared using DAQmx Clear Task.vi. However, the physical hardware connection remains unchanged.

In order to clear the route completely, you can either reset the device or call the DAQmx Tristate Output Terminal.vi. The Tristate VI is found on the Functions palette at Functions » Measurement I/O » NI-DAQmx » Advanced » Signal Routing » DAQmx Tristate Output Terminal. The terminal that is connected to input of the Tristate VI must not currently be in use in an active route, meaning that DAQmx Clear Task.vi must have already been called. Correct use of this VI will cause the specified terminal to be placed in a Hi-Z state, and will prevent driving terminals with multiple signals which could result in hardware damage.

DAQmx Connect Terminals.vi similarly creates an explicit route as specified by the inputs, and you must call DAQmx Disconnect Terminals.vi to clear the route. DAQmx Disconnect Terminals can not be used to clear task-based routes that are created using DAQmx Channel Property Nodes.

The code snippet below shows how to properly use the DAQmx Tristate Output Terminal.vi and to guarantee that physical hardware routes are disconnected after each run.