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
In Inputs, add NI TDMS files.
Add an input for each test stand. Give it a name; it appears in your channel paths, so
hotfireandcoldflowstay separate even with the same channel names.Add one or more log folders or files with the picker. Typing a Windows path by hand can lose backslashes.
- Folder takes every
.tdmsunder 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_*.tdmsfollows every matching run, including future ones.
- Folder takes every
Set how often to check for new data. This is not a sampling rate. Checking more often only shows new samples sooner.
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.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 barfollowing run_2026-08-27.tdms as it is writtenwhile a logger recordswatching … for new logs — nothing being writtenwhen 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 has | Samples are placed |
|---|---|
| a start time and sample interval | on the instrument's clock at that interval (the usual case) |
| an interval, no start time | back from the end of the file, with exact spacing |
| a time channel, no interval | at each sample's own instant (DAQami's TimeStamps, seconds since the group's StartTime; Phloem's own exports use <name> Time) |
| neither | at 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.
| Field | Type | Required | Default |
|---|---|---|---|
How often to check for new data (Hz)not a sample rate | Number | — | 10 |
Updated