The MDSplus tutorial
G. Manduchi firstname.lastname@example.org
So, you have heard about MDSplus, and you are maybe curious to discover more about this system. You connect to the www.mdsplus.org site, download the system, install it and then.... you get lost in the large cornucopia of tools and libraries. Now, you will surely try to surf the MDSplus documentation in order to understand which components are useful for what, and you will probably feel a bit disappointed because you can find detailed descriptions of Application Programming Interfaces and scripting languages, but no document where a beginner can start working and understanding the system from scratch.
This is exactly the purpose of this tutorial, which will describe all the steps required to set up a data acquisition system (which is, by the way, the purpose of the MDSplus tool).
If you are novice to MDSplus and you want just to get an idea of what MDSplus can do, without entering too deep into details, you may look at the first section giving you an overview of MDSplus based on running examples. The following sections will introduce MDSplus in a more detailed way, starting from a very simple application, and then progressively extending it by adding new components and by learning to use new tools, until building a fully fledged data acquisition system using the various tools and libraries of MDSplus. Afterwards, you will be confident enough to look into the technical documentation, use MDSplus for the rapid development of data acquisition systems and, why not, to contribute to the development of MDSplus with new ideas and developments.
This tutorial is organized in the following sections:
- A Quick Tour over MDSplus Basic Concepts This section will present some basic concepts of MDSplus by means of a running application. This application can be donwnloaded from github for a Linux system and it introduces experiment models, pulse files and expressions, the three cornerstones of MDSplus.
- Creating and populating MDSplus Trees This section will introduce the very basic concepts of MDSplus, and will show how to create from scratch a MDSplus database, referred to as Tree in the MDSplus jargon. To do this, two MDSplus tools will be used: TCL, which is a script language for creating and manipulating trees, and jTraverser, which is a graphical application for browsing trees.
- Reading MDSplus data using jScope This section introduces the concept of remote data access and will illustrate a popular tool, jScope, for the visualization of acquired waveforms, taken from local or remote trees.
- Accessing MDSplus data in Fortran, IDL, MATLAB and C (old style) This section illustrates how MDSplus data can be read from programs written in Fortran, IDL and MATLAB. It describes also briefly the C interface to MDSplus data, but C++ programmers are strongly recommended to use the interface described in the following section.
- The Object Oriented interface of MDSplus This section describes the actual interface to MDSplus, which is available for C++, Java and Python. The interface for the three languages uses the same classes, which provide a complete interface to the whole MDSplus functionality. Using the MDSplus classes it is possible to manipulate data items, to read and write trees as well as editing them.
- Remote data access in MDSplus This section will describe in more detail how MDSplus handle remote data access. It introduces then the classes for remote data access.
- MDSplus events This section describes how using asynchronous events in MDSplus, and the classes for event handling.
- The LabVIEW interface to MDSplus objects This section describes the new LabVIEW interface which maps LabVIEW (LVOOP) objects onto MDSplus objects.
- Setting up an experiment sequence This section describes how MDSplus can be used to organize a sequence of operations during experiments. It will introduce two tools: jDispatcher and jServer, which combined together allow the quick implementation of distributed data acquisition.
- Writing MDSplus devices This section describes how new software can be integrated in the MDSplus framework. The MDSplus distribution provides in fact the support for a variety of hardware devices, but it can be extended by adding the support for new devices. This is accomplished by developing a set of classes/routines with a defined interface. The section will illustrate this using a sample device simulating an Analog To Digital converter.
- MDSplus on OSX This section describes how to install MDSplus on OSX systems. There are in fact several differences between what is needed for OSX and the mostly well known recipes for LINUX.
- Restful data access API This section described how installing and running a node.js server providing a restful API for remote data access in MDSplus