PhloemDocs
Markdown
Connector

NI TDMS

Import NI TDMS files from a folder

Category
Data acquisition
Kind
source
Capabilities
StreamsHistoryOperationsEntities
Runs on
Windows x64Linux x64Linux ARM64macOS Apple siliconmacOS Intel

Collect the .tdms files your NI software already writes. Every channel comes into Phloem on the recording's own timeline.

Works with TDMS from any NI tool: LabVIEW, FlexLogger, VeriStand, DIAdem, SignalExpress. Runs on Windows, macOS and Linux. Point it at the folder, wherever it is, including a network share.

What you get

  • Every sample — each channel at the rate it was acquired, with timing from the file. A 10 kHz recording arrives as 10 kHz.
  • Channels from the recording — names are read from the newest log. A project that adds a channel needs no change here. Test connection also shows each channel's unit; the unit is not yet shown on the chart axis.
  • Files logged by NI-DAQmx (DAQmx Configure Logging) — read with their scales, so a ±10 V input arrives in volts, not ADC counts.
  • Text and timestamp channels — strings arrive as text, and timestamps keep their exact instant.

Setup

  1. In Inputs, add NI TDMS files.

  2. Add an input for each test stand. Give it a name; it appears in your channel paths, so hotfire and coldflow stay separate even with the same channel names.

  3. Add one or more log folders or files with the picker. Typing a Windows path by hand can lose backslashes.

    • Folder takes every .tdms under it. Windows' folder dialog hides the files while you choose; they are still there.
    • File takes that one log, and never the next run.
    • For a logger that writes one file per run, such as FlexLogger's LogFile_<date>-<time>.tdms, use the folder or a name pattern: …\data\LogFile_*.tdms follows every matching run, including future ones.
  4. Set how often to check for new data. This is not a sampling rate. Checking more often only shows new samples sooner.

  5. Press Test connection. Before you save, it shows how many logs, how much data, the date range, which are being written now, and what saving will do:

    hotfire: 48 log(s) (2.1 GB), 12 Mar 2026 – 26 Aug 2026 by file timestamp — 47 finished, 1 being written now. On save: the 47 finished log(s) are imported once each. New and growing logs are followed live either way.

  6. Channels appear on Live as /tdms/<input>/<group>/<channel>. Use them in Trellis, replay and notebooks like any other data.

Several folders in one input

Put folders in one input when they hold the same stand's data, such as an archive folder beside the live one, or a folder per month. They merge into one set of channels. A file found in two folders is imported once.

Two different stands need two inputs. Otherwise both write /tdms/<input>/Dev1/ai0 and the chart mixes two instruments. If two folders write the same channel over the same time, the input is refused and names the folders and the channel. Folders whose runs do not overlap are fine.

What gets collected

  • New files are followed as they grow, including a recording in progress when you add the input.
  • Finished files are skipped unless you tick Import logs already in these folders. It is off by default, so a folder of old runs does not flood the device. With it on, each file is imported exactly once, even across restarts.
  • Once per computer. A second input that finds the same log does not import it again, and says where it went (already imported as /tdms/hotfire/… on 06 Oct 2026). Rename the first input to use the other name.
  • A finished log you copy in is imported whole, even with a fresh timestamp. Whether a log is still being written is read from the file.
  • Progress shows on Inputs:
    • importing finished logs — 12 of 47 decided, with a progress bar
    • following run_2026-08-27.tdms as it is written while a logger records
    • watching … for new logs — nothing being written when the folder is quiet
  • A file that cannot be read is named and skipped. The rest of the folder still arrives.
  • A channel that cannot be scaled is named and dropped. For example, raw counts with a thermocouple or RTD curve Phloem does not compute. The rest of the file still arrives.

Timing

Each channel uses the timing the writer recorded:

The file hasSamples are placed
a start time and sample intervalon the instrument's clock at that interval (the usual case)
an interval, no start timeback from the end of the file, with exact spacing
a time channel, no intervalat each sample's own instant (DAQami's TimeStamps, seconds since the group's StartTime; Phloem's own exports use <name> Time)
neitherat the time they are read, labelled as such

A paused log

FlexLogger's Pause writes the resumed recording as a new group in the same file: Log, then Log 2, Log 3. These land as ONE channel on the first group's path (/tdms/<input>/log/<channel>), and the pause shows as a gap. Only a group named <base> <number> whose channels all exist in <base> is merged.

One channel, many runs

The same channel from a March run and from today's run land on the same path. Runs are separated by time. So "show me Dev1/ai0 across every run" is one selection, not fifty.

As a result, one series can span months, with long quiet stretches when the stand was off. Test connection shows that span before you save. Quiet stretches are not marked as data loss.

Notes

  • A folder can mix logs from several NI tools. Channel paths name your input, not the tool.
  • A Linux machine can collect from a Windows logging station over a network share.
  • For live values while a test runs, use the NI FlexLogger connector. The file stays the full record.

#Supports

  • TDMS 2.0 files (LabVIEW, FlexLogger, VeriStand, DIAdem, SignalExpress)
  • Waveform timing (wf_start_time + wf_increment) preserved per channel

#Connection fields

Every field the Add input form shows for this connector.

FieldTypeRequiredDefault
How often to check for new data (Hz)
not a sample rate
Number—10

Updated