How to Synchronize Multiple cDAQ Chassis Using the NI-9469 C-Series Module

Updated Nov 5, 2019

Reported In

Hardware

  • NI-9469

Software

  • LabVIEW
  • Measurement & Automation Explorer (MAX)

Driver

  • NI-Sync
  • NI-DAQmx

Issue Details

I need to perform multiple DAQ tasks across different cDAQ chassis synchronously. I have used triggering to start my tasks at the same time, but there is a notable time drift after some time. To overcome this issue, I have installed NI-9469 sync modules in each chassis.
How can I wire them and implement them in my LabVIEW project?

Solution

Wiring the modules

First, you need to wire the modules in one of the supported patterns to allow them to recognize each other and communicate properly.
To achieve this, there are two basic confugurations, star and daisy-chain. Please note that on the NI-9469 modules, port 0 is an input, while ports 1 and 2 are outputs.
Daisy-chain configurationSTAR configuration

Configuration in NI-MAX

After wiring the modules properly, the connections need to be configured in NI-MAX:
  1. Open NI-MAX
  2. Navigate to My System -> Devices and Interfaces -> Network Devices -> a cDAQ chassis, and select the NI-9469 module node.
  3. Click the newly visible Synchronization tab in the properties area
  4. Click Discover connections or use the Manually Add Connection option
  5. Verify that all connections appear correctly in the connection table and the status is Connected
Using synchronization in LabVIEW

After setting the synchronization properties as described above, you can start developing your LabVIEW DAQ project. Experience has shown, that it is not sufficient to simply wire the DAQmx Create Task VIs together. Additionally, a DAQmx Auto-Configure cDAQ Sync Connections VI (Palette: Measurement I/O -> DAQmx - Data Aqcuisition -> DAQmx Advanced -> DAQmx System Setup -> DAQmx cDAQ Sync) should be put in front to force-initialize the modules.
Please refer to the code section below for examples of synchronized Tasks.
 

Example 1 - Synchronized Digital Waveform Output with common sample rate

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.  

Example 2 - Synchronized Digital Output and Analog Input Tasks with different sample rates

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.  

Example 3 - Programmatic synchronisation setup via LabVIEW

Instead of using configuration via NI-MAX or using the Auto-Configure VI, you can also setup the synchronization options via LabVIEW. The order of the connection port strings within the string array is not important. The example below shows a While loop that retries the setup until the connection succeeds.

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.

Additional Information

To use the NI-9469 modules, NI-DAQmx 9.6.0 or later needs to be installed. Because NI-9469 synchronization is module-determined, they also work in cDAQ-chassis featuring TSN (Time-Sensitive Networking).