Tektronix TDS3052: waveform capture and interpretation

SUPERSEDED: please see new link: Tek waveform capture

All the functionality of the following files, and more, should be available on the more general Tek waveform capture page. The following are the old files, in the interests of keeping old links working, showing the process used for making the files, and keeping old versions in case of regression that I haven't detected yet!

The goods

Again, please follow the above link instead of using the below.

scope front-panel

Old notes on the save formats and finding converters

When getting waveform data from the TDS3052 web interface, the three formats available are: SPREADSHEET, MATHCAD, INTERNAL.

Spreadsheet has been used by me up to now as being the safest bet. it has just two comma-separated variables per line in ascii format: time and value; the time is zero at the trigger point. It takes a few hundred kiB for the 10000-point waveform, depending on the required number of characters to display the range of numbers. It takes tens of seconds to transfer these files by ethernet (obviously a minute fraction of the potential speed, perhaps due to slow processing?).

Mathcad format gets moderate saving in size by specifying just the Y-data, the timepoints being specified as a sample period and a zero-point (trigger point). From the Tektronix Programmer Manual (about the Mathcad format):
"If you are writing a MathCad program, you should be aware that the TDS–MathCad file has the following features:
* ASCII format
* first four values contain header information:
- first header value holds the TDS record length
- second header value holds time, in seconds, between samples
- third header value holds the trigger position
(expressed as an index in the data position) - fourth header value refers to the fractional trigger position
* delimiters are carriage returns"
[actually, they're CRLF]
Until this manual was found, this format was perceived as having the problem of not storing the trigger point, something that can be quite useful when plotting multiple curves of impulse events together, later. Still, the Mathcad format takes a long time to transfer, and doesn't save an awful lot on space.

The `internal' format is often *much* smaller: e.g. 20kiB rather than 136kiB for mathcad and 240kiB for csv, in a particular case (PD calibrator impulse). It contains all the information of the other two (binary format) and some headers about instrument settings. The small files come very quickly (perhaps even quicker rate than the others -- haven't properly measured, but it's hardly a delay at all), so it is well worth using this format for getting multiple measurements in the lab. Therefore an hour or more of searching was done to find a good way of converting this format to useable data.

Interpreters for a `Tek[tronix] internal format' were found, but many did not work. It seems that `internal' format, and the file extensions .wfm (waveform) and .isf (internal save format?) are broad names for formats that differ between many ages and models of instrument.

Two scripts that sounded promising were: wfm_ascii_dpo.m and wfmread.m from matlab central. More information can be found by searching for `wfm' as a file format. These two failed, not understanding the header data of the output from the TDS3052.

Searching on tek.com's 'DOWNLOAD FINDER' gave some Sparc and m$dos-win32 binaries, of even possibly 1990s vintage, of which the win32 ones were tried under wine and initially failed, apparently also not liking the format.

Searching the site for waveform converter tds3000 gave fewer and better results: cnvrtwfm_2008.06.09.13.42.02_5355_EN.exe -l file.isf worked, including under wine, to do a quick conversion from the internal format to spreadsheet `file.csv'.

But how stupid of them not to provide the source code for use on other systems: I don't really want to have to get internal format, emulate a dos system to run a program to convert the file to 20000 ascii values, then interpret these back into octave or matlab: it's ugly.

Knowing now that the TDS3000 format is often called isf rather than wfm, a better google search on: isf file convert OR parse tek OR tektronix tds3000 OR tds3052 gave immediately a Perl module for parsing this `.isf' format http://search.cpan.org/~razor/Parse-ISF-0.0103/lib/Parse/ISF.pm : "Parse::ISF - Parse the ISF file generated by certain models of Tektronix oscilloscope (TDS 3000, DPO 4000, etc)".

The credits of this Perl module referred partly to a Matlab script that had not been found on the first search: http://www.mathworks.com/matlabcentral/fileexchange/6247. This was downloaded and worked ok, and was improved (for my uses) by making it give x,y data immediately, in separate output variables, and implementing some suggestions from people on the file download site about variable length header. The result is the m-file near the top of this page.

If only companies making instruments (and general hardware) would provide details and open source-code / high-level scripts, it would make things a lot easier for a lot of people!


[an error occurred while processing this directive] Page started: 2009-05-06
Last change: 2015-07-24