NI-DAQmx Data Acquisition Triggering Techniques Using LabVIEW

Publish Date: Oct 16, 2019 | 43 Ratings | 2.49 out of 5 | Print | 9 Customer Reviews | Submit your review


Synchronization of the data acquisition (DAQ) process relative to an external event is an important criterion in many DAQ applications. For example, you may want to collect data after receiving a pulse signal from an encoder or when the temperature of a chamber exceeds a critical value. In such instances, the DAQ system must be set up to start the analog-to-digital (A/D) conversions as soon as the external event, or trigger occurs.

A triggered acquisition provides two key benefits to the user: It times the input signal relative to the trigger event so the user captures the signal only in the region of interest and thus conserves hardware bandwidth and memory.

Table of Contents

  1. Trigger Types: Analog vs. Digital
  2. Acquisition Type: Posttrigger vs. Pretrigger
  3. Developing Triggered Applications with LabVIEW and NI-DAQmx
  4. Additional Resources

 The National Instruments Getting Started with NI-DAQmx Series is aimed at helping you learn NI-DAQmx programming fundamentals. Through video and text tutorials, this series will take you from verifying your device's operation in Measurement & Automation Explorer (MAX) to programming data acquisition applications using LabVIEW. It is intended for both the beginner who wants to learn how to use the DAQ Assistant, as well as the experienced user who wishes to take advantage of advanced NI-DAQmx functionality.

1. Trigger Types: Analog vs. Digital

NI-DAQmx supports both analog and digital triggers.

Analog Trigger

The level and slope of an analog signal triggers the acquisition (Figure 1). In such a system, analog trigger circuitry (ATC) on the DAQ hardware continuously monitors the analog signal to determine if it satisfies the trigger conditions. Once the trigger conditions are met, the ATC generates an internal trigger signal to initiate the acquisition.

Figure 1. Analog Trigger Condition of Level and Slope

Digital Trigger

The rising or falling edge of a TTL signal initiates the data acquisition (Figure 2).

Figure 2. Digital Trigger

Back to Top

2. Acquisition Type: Posttrigger vs. Pretrigger

Triggered data acquisition applications can be classified in two ways: posttriggered and pretriggered.

Posttriggered Acquisition

In a posttriggered acquisition, the hardware starts the A/D conversions after the trigger is received (Figure 3). The trigger signal in this case is referred to as the start trigger.

Figure 3. Posttriggered Acquisition

Pretriggered Acquisition

In a pretriggered acquisition, the hardware starts acquiring data before the trigger signal is received (Figure 4). With this type of acquisition, the user can view the signal before the trigger event. In such applications, the hardware initiates data acquisition with a software function and stores the data in a circular buffer in the PC memory. The buffer is large enough to ensure that the required number of pretrigger samples are stored. When the buffer is full, it simply wraps around and stores each subsequent sample over the oldest sample in memory. The primary responsibility of the trigger mechanism is to stop the acquisition so that the samples left in memory represent the “slice-in-time” the user wants. The trigger signal in this case is referred to as the reference trigger.

Figure 4. Pretriggered Acquisition

Back to Top

3. Developing Triggered Applications with LabVIEW and NI-DAQmx

This section serves as a guideline for developing triggered applications using the NI-DAQmx driver in LabVIEW. Alternatively, you could use the same design process to program a triggering application in a text-based programming environment. In this case, you would simply make function calls from the NI-DAQmx API.

NI-DAQmx applications typically consist of the four building blocks shown below (Figure 5).

Figure 5. Flowchart for a Typical DAQmx Application

Trigger conditions for any application are specified in the configuration section by calling the appropriate NI-DAQmx functions or VIs in LabVIEW. The DAQmx Digital Trigger VI shown below can be used to configure a digital triggering task. You can use this VI to specify the source of the trigger and the desired edge to trigger on. In addition, more complicated triggering tasks can be implemented using the DAQmx Trigger Property Node.

NI-DAQmx Triggering VI
Figure 6. DAQmx Triggering VI

The rest of this document discusses how to implement various triggering types using LabVIEW and NI-DAQmx functions.

A. Posttriggered Acquisition with a Digital Start Trigger

In a posttriggered acquisition, the A/D conversions start after the DAQ hardware receives the trigger signal. The digital trigger is typically wired to the external trigger input of the I/O connector of the specified device.

The following code shows how to set up a posttriggered application using NI-DAQmx functions:

NI-DAQmx Posttriggered Acquisition with a Digital Trigger
Figure 7. Posttriggered Acquisition with a Digital Trigger

In this example, the Analog Input task will wait until it sees the digital trigger. If the triggering edge is defined as Rising, then the analog input task will begin as soon as a rising edge occurs on the specified digital line.

The National Instruments E and M Series multifunction I/O devices provide the added flexibility to choose from one of the several PFI lines on the board as the trigger input. The default trigger source is PFI0, but an alternate trigger source (e.g., another PFI line or RTSI line) can be selected by setting the Source of the DAQmx Trigger VI.

B. Pretriggered Acquisition on a Digital Reference Trigger

In a pretriggered acquisition, the A/D conversions are initiated with a software function call. NI-DAQmx stores the digitized data in computer memory in a circular buffering scheme, replacing the oldest points in the buffer with the new samples. Once the trigger signal is received, a specified number of points before and after the trigger are returned to the calling application (e.g., LabVIEW, C++, etc.) by the driver.


Figure 8 illustrates how to create a pretriggered application in LabVIEW by specifying the desired number of pretrigger samples in the DAQmx Reference Trigger VI. Note that setting the pretrigger samples to zero creates a posttriggered acquisition.

NI-DAQmx Pretriggered Acquisition with a Digital Reference Trigger

[+] Enlarge Image
Figure 8. Pretriggered Acquisition with a Digital Reference Trigger

C. Pretriggered Acquisition with Start and Reference Triggers

You can also set up an acquisition that uses both a start and reference (stop) trigger. In this case, a digital or analog trigger starts the acquisition instead of a software function. Once the acquisition starts, a circular buffering scheme (similar to the previous case) is implemented until the reference trigger signal is received. The data returned consists of the specified number of pretrigger and posttrigger samples relative to the reference trigger signal (Figure 9).

NI-DAQmx Acquisition with a Digital Start and Reference Trigger
[+] Enlarge Image
Figure 9. Acquisition with a Digital Start and Reference Trigger

D. Analog Hardware Triggering

For analog edge triggering, you configure the measurement device to look for a certain signal level and slope (either rising or falling). After the device identifies the trigger condition, the device performs the specified action associated with the trigger, such as starting the measurement or marking which sample was acquired when the trigger occurred. You connect analog trigger signals to any analog input channel or terminal capable of accepting analog signals.

In the following figure, the trigger is set to capture data for a rising edge signal when the signal reaches 3.2.

Figure 10. Analog Edge Triggering

Figure 11 illustrates how to specify the appropriate parameters in the DAQmx Analog Trigger VI to implement analog hardware triggering in LabVIEW.

NI-DAQmx Analog Start Triggering in LabVIEW

[+] Enlarge Image
Figure 11. Analog Start Triggering in LabVIEW

E. Analog Triggering With Hysteresis

You can also specify hysteresis as a condition for analog triggering. Hysteresis adds a window above or below the trigger level and often is used to reduce false triggering due to noise or jitter in the signal. When using hysteresis with a rising slope, the trigger asserts when the signal starts below level (or threshold level) minus hysteresis and then crosses above level. The trigger deasserts when the signal crosses below level minus hysteresis.

For example, if you add a hysteresis of 1 to the previous example, which used a level of 3.2, the signal must start at or drop below 2.2 for triggering to occur. The trigger then asserts as the signal rises above 3.2 and deasserts when it falls below 2.2.

Figure 12. Hysteresis with Rising slope

When using hysteresis with a falling slope, the trigger asserts when the signal starts above level (or threshold level) plus hysteresis and then crosses below level. The trigger deasserts when the signal crosses above level plus hysteresis. If you instead trigger on a falling edge at 3.2 with a hysteresis of 1, the signal must start at or rise above 4.2 for triggering to occur. The trigger will then assert as the signal falls below 3.2 and deassert when it rises above 4.2.

Figure 13. Hysteresis with Falling slope

Hysteresis is specified in LabVIEW by using the triggering property node. The following figure shows a section of code that creates an analog trigger with a hysteresis of one.

Figure 14. Level = 3.2, Slope = Rising, Hysteresis = 1.0


F. Pause Trigger

Some DAQ applications may require the user to implement a pause/resume feature where an external signal controls when the DAQ hardware performs the A/D conversions during an acquisition. National Instruments DAQ boards support such a functionality using a feature known as “pause trigger” (NI-DAQmx).  Here, the internal sample (scan) clock is gated by an external signal such that the sample (scan) clock pauses while the external signal is low and resumes when the signal goes high (or vice versa).  Pause trigger (scan clock gating) can be classified into two types, digital or analog, depending on the nature of the gate signal. The following figure shows a typical implementation of a digital pause trigger in LabVIEW.

[+] Enlarge Image

Figure 15. DAQmx Pause Trigger (Digital)


G. Digital Pause Trigger

In digital pause trigger, the gate signal for the sample clock is a TTL signal. Any PFI line can be used for as a gate signal on the DAQ card. The figure shown on the slide shows the timing diagram for high-level digital pause triggering.  In the figure below each rising edge of the sample clock signal indicates the initiation of a scan:

Figure 16. Digital Pause Trigger

H. Analog Pause Trigger

In analog pause trigger, the gate signal is an analog signal whose voltage level determines when the acquisition occurs. Only the devices that have analog trigger capability support this feature. The figure below illustrates the timing diagram for high level analog pause trigger where the A/D conversions occur only while the analog signal is above a critical voltage level.

Figure 17. Analog Pause Trigger


Back to Top

4. Additional Resources

Back to Top

Customer Reviews
9 Reviews | Submit your review

CVI Please  - Aug 10, 2016

Need the CVI equivalent code shown as well please.

No help for NI DAQmx users  - May 23, 2016

It is interesting that reviews are requested but those reviews are not acted upon. Actual examples in the text-based systems would be of great benefit. Why aren't they there when the title gives the impression that they would be?

Would be nice to see function-based equivalents to LabVIEW  - Sep 10, 2015

The triggering concepts presented are fairly standard, but it would be beneficial to see how to do these things with text-based functional programming, which is what I was hoping for when I found this page. The title does not say anything about LabVIEW.

Links broken!  - Jun 27, 2015

Nice article but none of the links allowing you to see the pictures in more detail work!!! As ever, frustrated with LabView and NI.

How do you pre- and post- trigger?  - Apr 27, 2015

This is a good summary, but you did not mention how to capture the data before and after the trigger. Meaning, I want to capture pre-trigger data, but when the trigger comes, I want to capture that data after as well. This is exactly how an handheld oscilloscope works from any of the oscope suppliers. I want to do the same thing with a DAQ card. The only difference between example 4b and 4c in the paper is the use of 2 external triggers in 4c, one to start and one to stop. I only have one external trigger source, and I need it to start pre-triggering (i.e. capturing data) as soon as the task is started similar to a reference pre-trigger, and then when the reference trigger is seen, I need it to capture the data afterwards. I want to be able to specify how many pre-trigger sample points (similar to pre-trigger captures) and how many post-trigger sample points to capture (similar to post-trigger captures).

Good pre-trigger info  - Apr 27, 2015

This was a good overview of the trigger schemes with DAQmx, particularly with the pre-trigger. This was the information I was looking for to pre-trigger so that I can capture the data before and after the trigger.

Write real documentation  - Mar 29, 2013

This is a great document for Labview. Unfortunately, not everyone wants to pay for Labview. If you're going to sell a product and include functionality for textual programming, don't have your documentation favor Labview. There are a lot of people that don't like NI because of your attitude. Fix it or lose more customers. Of course, you could always just stop supporting textual programming languages with your products and force everyone to use Labview. That's basically what you want anyways, so try it and see what happens to your customer base. Otherwise include real documentation on these pages. Showing how to use it with Labview is great, but you should also include the functions needed for textual programming and a link to those functions' details.

Covers wide topic  - Sep 21, 2008

Great tut. covers the topic nicely. highly recommended

  - Jun 5, 2008

Gives a good overview of the subject.

View more reviews

Bookmark & Share


Rate this document

Answered Your Question?
Yes No