Menu

Concepts

LabRAD Concepts

Overview

A LabRAD setup consist of three types of components: The LabRAD Manager, Server Modules and Client Modules. These interact via Requests, Replies, and Messages.

LabRAD Manager

The LabRAD Manager handles the communication between different modules of the setup. It provides basic functionality like traffic routing, connection authentication and monitoring, protocol enforcement, error checking, feature discovery, as well as on-the-fly unit conversion. It is the main back-bone of any LabRAD system. This SourceForge project is dedicated to the LabRAD Manager as well as general documentation including links to projects supplying LabRAD Modules.

Server Modules

Server Modules, or Servers for short, connect to the LabRAD Manager to provide general functionality to the LabRAD setup. There are two classes of Server Modules:

The lowest level of Servers are the ones that perform tasks in a self-contained way, like talking directly to the hardware. These we call Base Servers. In many setups, the only Base Servers needed are the ones that provide data storage and the ones that allow the sending and receiving of raw bytes using a specific computer's serial ports, GPIB controller card, or network card. They can handle requests like "Send these 5 Bytes to device 6: '*IDN?'" or "Read 12 Bytes from COM2".

The next levels of Servers, also called Abstraction Servers, provide progressively higher level functionality using lower-level servers. This class of servers is used to abstract underlying functionalty into more useful commands, hence the name. A common example is a server that handles a specific type of hardware device and can service a request like "Set output frequency of microwave source 3 to 6.882GHz" by turning it into "Send these 8 Bytes to device 27: 'OF6882MH'" and passing it to the correct Base Server.

Client Modules

Client Modules, or simply Clients, are situated at the highest operating level in a LabRAD setup. They complete specific tasks, like taking a certain dataset. If a system is set up in the way we envisioned LabRAD to be used, Clients do nothing more than generating requests to LabRAD Servers following a simple protocol. They should not include any direct hardware access, preferably not even data storage or plotting. As a rule of thumb, any functionality that could ever be reused accross different data taking applications should be implemented as a Server, not a Client.

Note: As far as the LabRAD Manager is concerned, the difference between Servers and Clients is that Servers can accept and process Requests.

Requests

Requests are packets of data passed through the LabRAD system to a specific Server that contain information to prompt the server to perform a certain task.

Replies

Replies are the answer packets that Servers send in response to a Request. Every Request has to be followed up with a Reply.

Messages 

Messages are packets of data that convey information to a Client or Server that is not directly part of a Request, Reply exchange. These include things like notifications sent by the LabRAD Manager to inform modules of the availability of a new Server, etc.

Next: Example Setup

 

~ Markus Ansmann, Dec 11th, 2007


Related

Wiki: Introduction
LabRAD Modules: Wiki: Home