Using a PXIe-634x Card to Define All PXI_TRIG Lines in LabVIEW

Updated Dec 28, 2023

Environment

Hardware

  • PXIe-6341
  • PXIe-6345
  • PXIe-6349

Driver

  • NI-DAQmx

This article describes how to use a PXIe-634x card to define all PXI(e) backplane trigger lines simultaneously within LAbVIEW™. For demonstration purposes, the code in this article will refer to a PXIe-6341 device, but any PXIe-634x can be used.

Before proceeding, ensure that a compatible version of NI DAQmx is installed. Refer to NI Hardware and Software Operating System Compatibility to check compatibility.

Each PXI(e) backplane trigger line (PXI_TRIG<0..7>) must be connected to a separate PFI or DO line on the PXIe-634x card.

This can be done by either:
 

  • Using the DAQmx Connect Terminals VI.

    • This VI can be placed for every PXI_TRIG signal that requires defining.

    • Alternatively, a single DAQmx Connect Terminal VI can be placed inside a For Loop. The For Loop will iterate through an array of PXI_TRIG and PFI lines to form a connection.

  • Using the DAQmx Export Signal VI.

    • The same methods as above can be applied for this VI.
       

For efficiency purposes, the example below uses the For Loop method. For a more detailed explanation of the difference between using/not using a For Loop in a DAQmx Task, refer to DAQmx Task with Multiple Terminal Configurations.

The completed code can be found at the bottom of this article. To create the code from scratch, follow the steps below:

1. In LabVIEW, open a new VI by going to File >> New.
2. On the Block Diagram, place a For Loop.
3. Inside the For Loop, place a DAQmx Connect Terminals VI.

  • This can be found by navigating to Measurement I/O >> NI DAQmx >> Advanced >> Signal Routing >> Connect in the Functions palette.

4. On the VI's Front Panel, place a Cluster and rename it "Connect Terminals".

  • Do this by navigating to Data Containers >> Cluster in the Controls palette.
5. On the Source Terminal and Destination Terminal inputs of the DAQmx Connect Terminals VI, create a Control.
  • Do this by right-clicking on each of the inputs and selecting Create Control. Delete the wires connecting the controls to the VI.
  • Rename the Source Terminal Control to "PFI Source".
  • Rename the Destination Terminal Control to "PXI_TRIG Destination".
6. On the Front Panel, drag the newly created Controls into the Cluster.
7. Right-click on the Cluster and select Change to Array.
  • This cluster now contains a pair of terminals in each array element. This can be seen below:
 
cluster array.png
 
8. On the Block Diagram, wire the output of the "Connect Terminals" Cluster to the For Loop.
  • Ensure that the terminal connecting to the For Loop is Indexing, as seen below.
  • If Indexing is disabled, right-click on the terminal and select Enable Indexing.
 
indexing Connect Terminals.png
 
9. Next, place an Unbundle By Name inside the For Loop and wire the "Connect Terminals" Cluster to it's input.
  • Unbundle By Name can be found navigating to Cluster, Class and Variant >> Unbundle By Name in the Functions palette.
10. Expand the Unbundle By Name function so that 2 elements are displayed. 
  • Select the PFI Source and PXI_TRIG Destination as each element inside the Unbundle By Name. At this point, the code should resemble the following:
 
unbundle by name.png
 
11. Wire the PFI Source output to the Source Terminal input of the DAQmx Connect Terminals VI.
12. Wire the PXI_TRIG Destination element to the Destination Terminal input of the DAQmx Connect Terminals VI.
13. Connect the Error Out of the DAQmx Connect Terminal VI to the edge of the For Loop.
  • Right-click the Error Out terminal and select Replace With Shift Register.
  • Click on the left edge of the For Loop to place the Shift Register.
  • Wire the left Shift Register to the input of the DAQmx Connect Terminals VI, as shown:
Shift register error.png
14. Place a DAQmx Create Channel VI outside the For Loop.
  • This can be found by navigating to Measurement I/O >> NI DAQmx >> Create Channel in the Functions palette.
15. From the drop-down list on the DAQmx Create Channel VI, select Digital Output.
16. Right-click on the Lines input and select Create Control.
  • Rename this Control "Digital Output Lines".
17. On the Front Panel, define the digital ports/lines inside the "Digital Output Lines" Control.
  • For this example, 8 PFI lines on a PXIe-6341 will be used. The PXIe-6341 Pinout document indicates that the first 8 PFI lines (PFI<0..7>) correspond to digital lines 0 to 7 on port 1.
  • The "Digital Output Lines" Control contains 6341/port1/line0:7 to define these 8 digital lines for use.
18. Wire the Error Out from the For Loop into the Error In of the DAQmx Create Channel VI.
19. Next, place a DAQmx Start Task VI.
  • Find this in Measurement I/O >> NI DAQmx >> Start in the Functions palette.
20. Connect the Task Out and Error Out of the DAQmx Create Channel VI to the Task/Channels In and Error In of the DAQmx Start Task VI.
  • The Front Panel and Block Diagram should now resemble the image below.
Start Task VI.png

21. Place a DAQmx Write VI onto the Block Diagram.
  • Find this by navigating to Measurement I/O >> NI DAQmx >> Write.
22. Wire the Task Out and Error Out of the DAQmx Start VI to the Task/Channels In and Error In of the DAQmx Write VI.
23. From the drop-down menu on the DAQmx Write VI, select Digital >> Single Channel >> Multiple Samples >> 1D (U8) port format.
23. On the Front Panel, place a Boolean Control by navigating to Boolean >> Push Button in the Controls palette.
24. Right-click the Boolean Control and select Change To Array.
  • Rename the array "Data To Write".
  • Each element of this array will be written to each digital line defined in the "Digital Output Lines" Control.
Note: the number of elements enabled in the "Data To Write" array must equal the number of elements enabled in the "Connect Terminals" array.

25. Place a For Loop on the Block Diagram and wire the output of the "Data To Write" array to the edge of the For Loop.
  • Using the same method as earlier, ensure the array terminal is set to Indexing.
26. Inside the For Loop, place a Boolean To (0,1).
  • Locate this in Numeric >> Conversion >> Boolean To (0,1) in the Functions palette.
27. Wire the indexed terminal of the "Data To Write" array to the input of Boolean To (0,1).
  • This converts the Boolean data type into a number that is compatible with the Data input of the DAQmx Write VI.
28. Wire the output of Boolean to (0,1) to the right edge of the For Loop. Again, ensure that the output terminal is set to Indexing.
29. Outside the For Loop, place a To Unsigned Byte Integer.
  • Navigate to Numeric >> Conversion >> To Unsigned Byte Integer in the Functions palette to find this.
30. Wire the output of the For Loop to the input of the To Unsigned Byte Integer.
31. Wire the output of the To Unsigned Byte Integer to the Data input of the DAQmx Write VI.
  • The VI should now resemble the image below.
Write Data.png
 
32. Place a DAQmx Stop Task VI from Measurement I/O >> NO DAQmx >> Stop in the Functions palette.
33. Wire the Task Out and Error Out from the DAQmx Write VI to the Task/Channels In and Error In of the DAQmx Stop Task VI.
34. Next, place a DAQmx Clear Task VI from the same palette. Similarly, wire the outputs from the DAQmx Stop VI to the inputs of the DAQmx Clear VI.
35. Place a For Loop.
36. Wire Error Out of the DAQmx Clear Task VI to the For Loop.
  • Using the method described earlier, ensure that the error terminals on the For Loop are Shift Registers.
37. Place a DAQmx Disconnect Terminals VI inside the For Loop.
  • Find this by navigating to Measurement I/O >> NI DAQmx >> Advanced >> Signal Routing >> Disconnect in the Functions palette.
38. Connect the output from the "Connect Terminals" Cluster to the edge of the For Loop. Again, make sure that the terminal is set as Indexing.
39. Place an Unbundle By Name inside the For Loop and wire the PFI Source and PXI_TRIG Destination elements to the Source Terminal and Destination Terminal of the DAQmx Disconnect Terminals VI.
40. Wire the Error Out of the DAQmx Disconnect Terminals VI to the right edge of the For Loop.
41. Right click on the Error Out wire of the For Loop and select Create Indicator.
 

The completed VI can be found below:

Define All PXIe Backplane Triggers.png

Note: This image is a LabVIEW snippet, which includes LabVIEW code that you can reuse in your project. To use a snippet, right-click the image, save it to your computer, and drag the file onto your LabVIEW diagram.