Specman

Connecting Spectrometers to People

Boris Epel, Igor Gromov, Stefan Stoll with
Daniella Goldfarb and Arthur Schweiger

WWW site: www.SpecMan4EPR.com
File Version 1.1.4.64
All rights reserved. ©2002-2009

Index//Top

 >>


Description

Index//Top

 << >>

Description

SpecMan4EPR is a general spectrometer control software designed for pulsed experiments. The software provides optimized and timed control of arbitrary third party devices that perform the desired functions and have an open programming interface. The algorithms of the software are optimized for Electron Paramagnetic Resonance. Nevertheless the same algorithms can be applied to other applications as well.

SpecMan4EPR is flexible and efficient. There is no limitations on the number of connected devices or acquisition channels. The roles of all devices are described in the configuration files. This allows to use the same SpecMan4EPR executable for multiple application.

The interface of the program is designed to satisfy most demanding experimental wishes and at the same time to hide from a regular user the underlying complexity. The built-in powerful pulse sequence engine that easily utilizes the capabilities of connected pulse generators makes SpecMan4EPR an indispensable tool for the pulsed spectroscopy. Customizable and looking like text-book examples pulse programming scripts allow to build complicated pulse sequences even for non-experienced user.

Index//Top

 << >>


Concept

Index//Top

Concepts

Two general assumptions are in the foundation of SpecMan4EPR:

  • experiment outcome can be represented by an N-dimensional (up to 4D) array;
  • during pulse sequence computer can not perform synchronous control of connected hardware.

The second assumption is very important for understanding of SpecMan4EPR performance. SpecMan4EPR does all device programming prior to pulse sequence and then waits till the end of data acquisition to start new point programming. Events of a pulse sequence can not trigger any SpecMan4EPR activity. Instead such an activity has to be implemented on hardware.

The SpecMan4EPR Experiment is a description of rules and steps to perform an experiment and, data that was generated by this experiment. The rules are defined using variables that encapsulate device settings and Pulse Programming Language (PPL) script for pulse sequence definition. Any setting of a real device can be associated with an arbitrary named variable. By assigning a value to this variable one can bring a device to a certain state or generate particular output. Pulse sequence is executed and data are collected for every Experiment point. Experiment can be edited using the Experiment Editor and loaded from / stored to files that have a dedicated format .

The devices that SpecMan4EPR can control are described in the Device Configuration. The configuration defines also device specific settings, ranges of values, safe, start-up and shut-down values. Device Configuration Wizard is assisting user in configuration of the program. The part of the program that directly interact with the connected device drivers is called Spectrometer.

The general sequence of actions, synchronization of different devices and error handling is performed by the heart of SpecMan4EPR, the Demon.

The SpecMan4EPR generates pulse sequences according to the PPL script, PPL variables and Pulse Configuration. The most sophisticated part of Demon, Pulse Engine, is a virtual machine that interprets the PPL Assembler commands. Pulse Engine supports user-defined Pulse Commands that allow to generate a sequence of pulses on the associated hardware with the single word in the PPL script. The description of the Pulse Commands is loaded from the Pulse Configuration created by the Pulse Setup Wizard. Using the Experiment Editor any PPL variable can be defined as an independent experimental parameter.

The SpecMan4EPR GUI provides visualization and full control over the preparation and flow of the Experiment.

Index//Top

 << >>


Client-Server

Index//Top

Client-Server Architecture

SpecMan4EPR is built using Client-Server Architecture. The Server computer handles the hardware, while the Client computer provides GUI for visualization of an Experiment flow, comparison between different experiments loaded into Buffer etc. Client is automatically created when Server executable is launched. One can create any amount of additional Clients and connect them over TCPIP.

SpecMan4EPR has only one Experiment ready for execution or executed at a time. This Experiment is located on the Server. After finishing of the experiment Run, all data are transfered to Clients. Every Client connected to the Server will have then an exact copy of the Experiment. If the Queue is used all data are saved on Server and never transfered to the Client.

Index//Top

 << >>


HowToStart

Index//Top

How to start

Configuration files

Configuration files are essential for SpecMan4EPR. After the first run, the default shell configuration file is created. However, without device and pulse configurations, the program can work as a data viewer only. SpecMan4EPR package contains demonstration configuration, which may help one to study basic functionality of the program. This configurations emulates pulse EPR spectrometer. This text describes how to configure SpecMan4EPR using this demonstration configuration.

The demonstration configurations use so-called dummy devices. Dummy devices are not connected to any hardware but emulate real devices functionality. Demo configuration contains four devices typical for an EPR spectrometer: pulse generator (PB), radio frequency synthesizer (RFGen), digitizer (DIGITIZER) and field controller (Field). Pulse generator has channels that generate pulse sequences. Time trace with pulse sequence produced by pulse generator can be monitored on the Scope when corresponding device properties (In_Ch0 - In_Ch15) are assigned to acquisition streams. The digitizer emulates an ADC or transient digitizer and returns a sinus waveform or random number sequence. Radio frequency synthesizer and field controller help to emulate ENDOR and field sweep experiments. This way typical pulse EPR experiments can be tested.

At first step the directory, where program will search for the configuration files, has to be set in the 'Directories' page of Options dialog. Select . The typical location of configuration files is a 'SpecMan/cfg' directory. Select the directory or type the path to the field 'Configuration files path' and press 'Ok' button. Now the configuration can be loaded from File/Load Config menu. If 'Load configuration' dialog has no entries then configuration files path is not properly configured or there is no configuration files in the directory. Configuration files have '*.cfg' or '*cfp' extensions.

Select 'Demo configuration' and press 'Ok' button. The configuration will be loaded and the caption of the main window will change to SpecMan4EPR [Demo configuration]'. Now the connected devices can be inspected. Open the Device configuration dialog (Config/Device Config). One can see four devices: PulseGen, RFGen, ADC, Field. By selecting the name of device the brief description of driver can be seen. The configuration keys of devices are visible in the right panel. The expanded branch of the device provide information on its properties and pulse channels. Some of the properties are specific for dummy devices and some of them are configurable so one can create the functional dummy device configuration.

The pulse configuration is loaded together with device configuration. Open the Pulse configuration dialog (Config/Pulse Config) to browse the settings.

The examples of PPL programs are supplied with the program. Call the configuration dialog ( Config/Options... menu, 'Directories' page) and set the Templates path. The typical location of the template files is a 'SpecMan/tpl' directory. Now the templates can be loaded from File/New Exp menu. If 'Experiment template' dialog has no entries then templates files path is not properly configured or there is no template files in the directory. Template files have '*.tpl' extensions. The directory structure is supported by this dialog thus templates can be organized in folders.

SpecMan is ready to run.

Experiment files

After loading of the configuration files the experiment has to be created or loaded. The indicator of a correctly configured experiment are the buttons in the Experiment Control Panel. When experiment is configured incorrectly the list of mistakes is displayed in this panel. First 3 letters of every line in the list point to the panel where mistake occurred. Immediately after loading of the program two mistakes appear: 'a' assignment failed and 'RepTime' syntax error. First one indicates that channel a is not assigned to any acquisition device (right click on 'a' line in Exp panel/Edit variable) and second tells that RepTime variable value string has error (type 1 ms).

The simpler way towards the understanding of the SpecMan4EPR functionality is to load a predefined experiments (templates). Templates can be loaded from File/New Exp menu. Load ESEEM/2 pulse ESEEM experiment. Errors in Experiment Control Panel will disappear and buttons appear. Press Run button.

Some Exercises

Press 'Infinite repetitions button' to observe the experiment continuously running. Press Run button - experiment will start. The sinus or random data will appear on the screen. Experiments which utilize the fast recorder (trace is bigger than 1) shows the transient data in the scope window (Window/Scope ). Hint: double click on the scope to have proper scaling factor. Press 'Finish Scan' button and wait till experiment finish (The alternative is to press the 'Run' button again to terminate experiment.).

Load 2 pulse ESEEM experiments (ESEEM folder). Press the 'Tune' button. Open the scope. Two pulse sequence taken from one of the pulse channels will be visible. Change the slider position of X axis to see the evolution. Press the 'Tune' button again to stop. Go to ppl page. Add one more pulse by copying 'mwpulse t180, phase(1) wait tau' between the last wait command and the detect commands. Press 'Compile' button. Press the 'Tune' button and observe the new pulse. Change the scope trigger position (exp page) from 0 to 1. Observe the shift of the scope trigger on the scope. Stop the program by pressing the 'Tune' button again.

Index//Top

 << >>


Index//Top

History

SpecMan4EPR has two editions: local and network. The local edition is optimized for speed, while network edition has additional features and convenience. Although both editions share the same device drivers, the structure of the SpecMan4EPR engines have considerable differences. The revision number of the program consists of following numbers:

<major revision>.<0-local/1-network edition>.<minor revision>.<build>

Minor revision and the build numbers are serial and reflect the order in which new editions are generated.

Current stable local edition: 1.0.1.14.

Current network edition: 1.1.4.64

Index//Top

 <<


Authors

Index//Top

 <<

Credits

Authors

Boris Epel, Ph.D.
Project leader, programming, concept
<boris.epel@specman4epr.com>

Igor Gromov, Ph.D.
Programming, concept, hardware

Stefan Stoll, Ph.D.
GUI design, concept

with

Arthur Schweiger, Ph.D.
Professor, ETH

Daniella Goldfarb, Ph.D.
Professor, Weizmann Institute of Science

Distribution

Scientific Software Services

Acknowledgements

Jaap Shane, Ph.D.
Author of the 'Jaap' pulse EPR program, the precursor of SpecMan4EPR. Sources of 'Jaap' program were available to us. The code of some device drivers is still used in SpecMan4EPR.

Software packages used for SpecMan4EPR programming

Borland C++ Builder 6.0 Pro
IDE, compiler

BISON, FLEX
PPL language parser and lexer generation

Memory Sleuth 3.0
Debugger

Adobe Dreamweaver CS3
HTML editor

Index//Top


SpecMan4EPR help index

  • General Description
    • SpecMan4EPR
    • Description
    • Concepts
    • Client-Server Architecture
    • How to Start
    • History
    • Credits
  • Graphic User Interface
    • Welcome Screen
    • Interface Map
    • Main Menu and Toolbar
    • Experiment Control Panel
    • Experiment Editor
      • Experiment Axis Setup
        • Experiment Axis Types
        • Acquisition Stream Edit Dialog
        • Variable Edit Dialog
        • Decision Edit Dialog
        • Variable Association Dialog
      • Pulse Script Editor
      • Special Setup
      • Direct Device Control
      • Movable Patterns Control
      • Scope Trigger Control
    • Additional Panels
      • Queue of Jobs
        • Job options
      • Experiments in Memory (Buffer)
    • Information Panels
      • Configuration File Browser
      • Log Window and Status Bar
    • Notes
    • Data Views
    • Scope Window
    • Configuration Dialogs
      • Device Configuration
        • Adding Devices
        • Driver Settings
        • Property Settings
        • Pulse Channels
      • Pulse Configurations
        • Command Definition
        • Pattern Definition
        • Pulse Channels
      • Interface Configuration
      • Options
        • Directories Page
        • 1D Viewer Settings Page
        • Experiment Editor Settings
        • Scope Settings Page
        • Demon Settings Page
        • Actions Page
        • Print Settings
        • Network Settings
        • Log Window Settings Page
  • Experiment
    • Overview
    • File Format
  • Pulse Programming Language
    • Overview
    • Script
    • Language structure
      • Introduction to language structure
      • Variable declaration
      • Array declaration
    • Lexical Elements
      • Tokens
      • Comments
      • Whitespace
      • Keywords
        • Alphabetical list
        • asm
        • bool
        • detect
        • const
        • end
        • else
        • false
        • if
        • int
        • parallel
        • repeat
        • real
        • signal
        • time
        • true
        • wait
        • Pulse command
  • Spectrometer
    • Overview
    • Device
      • Overview
      • Device Drivers
        • List of supported devices
        • System Device
        • Dummy Device
        • TCPIP device
        • EasyGPIB device
      • Driver programming
        • Developer's notes
        • Driver programming
        • Driver functions
      • Setting's Rules
    • Interface
  • Demon
    • Overview
  • Pulse Engine
    • Overview
    • Pulse Assembler
    • Pulse Command
    • Service Pulse Command
    • Pattern
    • Virtual Channel
    • Pulse
  • Configuration Files
    • Configuration files
    • INI file
    • Device Configuration
      • Overview
      • Device declaration
      • Interface declaration
    • Pulse Configuration
      • Overview
      • Command definition
      • Pattern definition
      • Movable pattern definition
      • Channel definition
  • Other
    • Prefixes


Index//Top

 >>

GUI map

Click on the corresponding control to see the help.

Index//Top

 >>


Untitled Document

Index//Top

Welcome Screen

Welcome screen dialog selects startup device and pulse configurations. It appears once at the program startup. This dialog is convenient when multiple configurations are used with the same shell. If not necessary dialog can be switched off using 'Show this Welcome Screen at startup' check box. Welcome Screen dialog and startup configuration options can be selected from the Options dialog.

Index//Top


Index//Top/GUI map

Main Menu and Toolbar

File Experiment DDI Plugins Configuration Window Help

  • File

    new document.bmp, 2.1kB

    Open the template experimental file and make it active. Template will not be added to the Data List. Templates have 'tpl' extension and do not contain experimental data. The path of templates directory is specified in the Options dialog. To create new template one can modify the existing template or experiment file and save it as a template (see Save Template).

    new document.bmp, 2.1kB

    Load experiment file or template from the disk and open it in Experiment Editor. 'Open file' dialog contains additional panel on the right. This panel has three pages which present file overview, text of experiment file and data plot of the selected file.

    Save active experiment to the disk in SpecMan 'd01/exp' format. 'Save file' dialog contains additional panels at the bottom and on the right. Edit field at the bottom allows to edit the name of the experiment. Text editor on the right panel contains the copy of the sample description from the Sample description window. Any additional information can be entered.

    Create an exact copy of the current experiment and store it in Buffer (see Data List).

    Save current experiment at given time intervals. See Options dialog for settings.

    Back up (autosave) experiments done. See Options dialog for settings.
    Save raw data

    Save experiment in raw format (under development). All data that reach acquisition engine of the program are directly saved into binary file with d02 extension.
    Save template

    Save active experiment as template to disk. Templates have 'tpl' extension and do not contain experimental data. To change the path of template's directory see Options dialog.

    Save content of the Log window.
    Show performance log Output to log performance characteristics of the program.
    Reset performance counters

    Reset performance statistics
    Force terminat.

    Option for developers, please do not use.
    Exit

    Exit the program. Exit is possible only in Idle mode. If some experiments contain not-saved data, corresponding dialogs will appear.
  • Experiment

    Execute active experiment. This menu is available only when experimental setup has no mistakes. See Troubleshooting for the help.

    Terminate running experiment immediately. Last scan of the experiment will not be added to the experiment data (unless it was the only scan). The 'Experiment contains data' flag will not be set (see help on 'List of experiments').

    Set spectrometer to the tuning mode. User can monitor the setup behavior at any experiment point and adjust parameters of experiment and devices. Data are not stored.

    Repeat running experiment continuously. Repetition counter will increase correspondingly. To stop experiment use the Finish Scan menu.

    Pause the execution of the experiment. Press again to continue.

    Force experiment to stop after finishing of the current scan.

    Suppress Storing. Current scan will not be added to the the accumulation buffer unless the option become unchecked.
    Rename experiment
    Mark data as saved Deselect 'not saved' flag of experiment.
  • Configuration

    Load configuration file from disk. The path of configuration files directory is specified in the Options dialog. To edit configuration file see help on configuration files, 'Device configuration' and 'Pulse configuration'.

    Save configuration files.

    Launch the Device Configuration dialog. See Concept topic for overview.

    Launch the Pulse Configuration dialog. See Concept topic for overview.

    Launch the 'Interface Configuration' window. This window provides information about devices connected through interfaces.

    Observer mode. No changes of experiment flow can be done.
    Experiment can be executed but SpecMan4EPR configurations can not be edited.
    Some elements of SpecMan4EPR configurations can be edited.
    Configurations of SpecMan4EPR can be edited.

    Launch the 'Options' dialog. This dialog allows to manage the shell parameters. See Configuring SpecMan topic for the help.
  • Devices

    Some devices may need more sophisticated control interface than one that provided by 'Initial Device Setup' window. These devices can use their own custom Direct Control Interfaces. Interfaces can be opened from the 'Devices' menu. When there are no devices that have Direct Control Interfaces, the 'Devices' menu is empty.

  • Window

    Switch on and off second view port and shows currently selected data there.
    Digital scope.
    SpecMan4EPR chat
    Network monitor. Monitors data flow between Client and Server.

    Links scale of the second view port to the first one.
    Update client | Refresh Client. Helps to bypass errors in Client-Server interaction.
    Connect client | Connect Client GUI to Server.
    Disconnect client | Disconnect Client GUI from Server.
  • Help

    Opens SpecMan4EPR help.

    Reference information. Calculators.

    Opens 'About' dialog.

Index//Top/GUI map


Index//Top/GUI map

Experiment Control Panel

The experiment control panel provide quick access to the most important experiment flow options and show the experiment flow statistics. Buttons of the panel are active only when experiment has no mistakes. See Troubleshooting for the help.

Run/Stop/Reset | Execute active experiment. Indicates that experiment is ready to run.
Run/Stop/Reset | Stop experiment or queue of jobs. Indicates that experiment is running.
Run/Stop/Reset | Indicates that an error was encountered during experiment execution or other procedures. Press this button to return SpecMan4EPR in ready to run state.
Finish Scan | Force experiment to stop after finishing of the current scan.
Pause | Pause the execution of the experiment. Press again to continue.
Tune | Set spectrometer to the tune mode. User can monitor the setup behavior at any experiment point and adjust parameters of experiment and devices. Data are not stored. Tunning mode can be canceled by pressing this button again.
Run queue | Execute the queue.

Various experiment flow statistics is available in running mode. Time related statistics visualized using the clock. Options can be selected from the context menu. All shown times (except the 'Elapsed time') are estimations based on the flow of the experiment and can change, especially in the beginning of the experiment. The progress bar shows the percent of experiment done to the moment.

When experiment is configured incorrectly the list of errors appears on Experiment Control Panel.

The above figure shows the state of the Experiment Contol Panel immediately after loading. First letters of every line (e.g. Exp or Ppl) indicate the page where the mistake occured. More precise description of errors is displayed in the program log. After correction of all mistakes the Panel returns to the state shown on the first figure.

Index//Top/GUI map


Experiment Editor

Index//Top/GUI map

Experiment Editor and Other Panels

Experiment Editor

Experiment Editor panels:

exp | Manage experiment axis and dimensions, variables, execution sequence, data acquisition etc.
ppl | PPL script editor.
setup | Additional experiment settings.
dev | Device settings.

Additional panels:

queue | Queue of jobs (experiments).
buffer | Data loaded into memory.

Information panels:

ini | Text browser of configuration files.
log | The program messages.

Movable patterns and Scope Trigger patterns directly affect Pulse Engine in tune and run modes.

Index//Top/GUI map

 <<


Index//Top/GUI map/Experiment Editor

Experiment Axis Setup

Dimensions of the experiment, number of shots per loop, settings in every experimental point, acquisition axis and many other parameters can be managed using the 'Experiment Axis Setup' panel.

Colored bars represent axis or dimensions of experiment. SpecMan4EPR has multiple axis types. Each axis has size (or trace length for signal axis) and can be repeated number of times (parameter reps or shots fro signal axis).

White bars with with green text represent data acquisition streams. The order of streams is not significant. Streams are declared in PPL script (see signal keyword). Stream parameters can be edited using [image] button that launches a dialog.

White bars with black letters represent variables. Variables belong to the axis above them. Variables of the same axis are set from top to bottom.If variables have wrong definition their names are changed to red. If variables values are entered with errors or amount of variable values is lower than axis size, the color of text is changed to red. Variable parameters can be edited using [image] button that launches a dialog.

The experiment starts with execution of the lowest axis ( P). Then the first indexes of all axis from bottom to top are selected. The signal axis is located in the most inner loop of execution.

To create new axis of the experiment one should right click on the variable that will belong to the new axis. In pop-up menu the icon of desired axis should be selected. To create new variable one can either add new variable declaration to PPL script or right click somewhere in the exp panel and choose Add variable in the pop-up menu.

Other right click pop-up menu options:

Axis | Expand/Collapse | Show or hide variables and streams that belong to this axis
 | Edit size | Size (length) of axis. Affects amount of data collected.
 | Edit repeats | Number of repetitions for the same axis. Corresponding data will be summed.
 | Move up/down | Change the order of axis. For ordinary and sum axis only.
 | Axis type icon | Change axis type.
 | Random axis | Indices are random. If this option is not chosen indices of the axes are sequential.
 | Fly back | When all indexes are selected, the first index is selected again.
 | Pause before each point | Prior to any axis point execution the program is going to the pause mode.
 | Add variable | Associate variable or stream to the axis. Definition of streams for transient axis has to be done using PPL script (see signal keyword).
Variable | Add variable | Associate variable or stream to the parent axis. Definition of streams for transient axis has to be done using PPL script (see signal keyword).
 | Delete variable | Delete variable or stream. Streams associated with transient axis has to be deleted using PPL script (see signal keyword).
 | Edit variable | Change variable association using dialog.
 | Edit value | Edit variable's parameters using dialog.
Stream | Edit variable | Change variable association using dialog.

Run-time axis appearance.

Sum axis | Dimensions of experiment that are acquired on hardware have blue color.
X Axis | Dimensions of experiment controlled interactively are yellow and show progress bar.

Index//Top/GUI map/Experiment Editor

 << >>


Untitled Document

Index//Top/GUI map/Experiment Editor/Exp

Experiment Axis Types

Axis types defined in SpecMan4EPR:

T | Signal axis, data directly stored.
I | Signal axis, absolute Fourier Transform.
I | Signal axis, data acquired during pulse sequence and integrated.
Axis A | Signal axis, peak-to-peak amplitude.
I | Signal axis, RMS.
X , Y , Z | Ordinary axis.
S | Sum axis.The data along this axis dimension are summed.
P | Parameter axis. Size is always equal to 1. Used to set variables before or after the experiment.

Signal axis represent dimensions of experiment that are acquired during the pulse sequence (typically from the fast digitizer). Transient T icon means that full time trace will be stored to memory. Other axis types represent different processing of data. Yellow icon (for example I) represents processing which results in the same length traces. Gray icons (for example Axis A) represent processing with conversion of the whole trace into single value. In a case of I data are integrated. See Scope window for details on setting of integration range. The title of axis is always signal. The trace parameter defines the length of the time trace and shots means shot per loop. The amount of stored points is defined by axis (processing) type, the length of trace (for T axis) and number of triggers see Ppl page.

Index//Top/GUI map/Experiment Editor/Exp


Untitled Document

Index//Top/GUI map/Experiment Editor/Exp

 >>

Variable Edit Dialog

Edit baseline | Select algorithm of baseline correction. Edit baseline reference area (in points) for baseline correction.
Edit Integration | Edit integration range (in points) for transient axis associated streams.

Index//Top/GUI map/Experiment Editor/Exp

 >>


Untitled Document

Index//Top/GUI map/Experiment Editor/Exp

Variable Edit Dialog

Variable Edit Dialog

Before/After faster axis option defines when the value will be set to the variable. For example for [image] axis the 'before' option will cause variable to be set prior to experiment and the 'after' option will set variable after the experiment. PPL variables can be set before faster axis only.

Load from file option loads an array of variables from the comma separated ASCII fromat string of values.

All modifications are imediate and are executed directly at run time. Cancel button restore the previous values.

Index//Top/GUI map/Experiment Editor/Exp

 << >>


Untitled Document

Index//Top/GUI map/Experiment Editor/Exp

Decision Edit Dialog

Decision

The decision stream does not store anything but select when current point is accepted or rejected. The rejected point will be measured again.

Conditions of accepting and rejection can be assigned in this dialog.

Index//Top/GUI map/Experiment Editor/Exp

 << >>


Untitled Document

Index//Top/GUI map/Experiment Editor/Exp

 <<

Variable Association Dialog

Association To associate the variable to device property select this propert then select the radio button for the variable type. The type can be read for data stream, write for variable and decision. The decision variable does not store anything but select when current point is accepted or rejected. The rejected point will be measured again.

Index//Top/GUI map/Experiment Editor/Exp

 <<


Index//Top/GUI map/Experiment Editor

Pulse Script Editor

PPL

Pulse script is one of the main part of the experiment. Sequence of all pulse events during an experiment is defined here. See help on programming in Pulse Program Language section. After editing of the program user have to press the Compile button. Information about results of compilations and errors is sent to the Log Window. All external variables defined in the program will appear in the Experiment Axis Setup window. After loading, experiments and templates are compiled automatically.

Number of triggers during the same sequence has to be manually defined in the N triggers edit box. The typical value is 1. After changing of this number an experiment should be compiled. Additional data acquired by the program will be consequently stored on the transient axis increasing its size.

Index//Top/GUI map/Experiment Editor

 << >>


Index//Top/GUI map/Experiment Editor

Special Setup

The presetup and postsetup sections are in a way redundant (one can set those variables using P axis) but provide convenient way for doing some default actions like switching on and off power amplifiers etc. The setup each point variables are mostly used for testing purposes.

By default pulse sequence is programmed for every value of every experiment variable (point-by-point). However certain hardware can support sequential execution of multiple sequences without reprogramming. Sequence-on-hardware options define axis executed on hardware and not programmed in point-by-point mode.

To be executed on the hardware axis has to be not further than Maximum Number of Axis from signal axis and all On-Hardware axis should have less than Max Number of Sequence points.When Maximum Number of Axis is equal to 0, only signal axis are executed on hardware. When this number is equal to 1, the first axis from the top (second inner loop) will be programmed.

Sometimes components of instruments have to be thermally equilibrated prior to execution of experiment. Warm-up options select the duration of this equilibration. Normal experiment sequence will be used for warm up. Data acquired during warm-up are not stored.

Transient data - the format of internal data representation of acquisition streams.This option may affect SpecMan4EPR performance and memory consumption.

  • Integer format (4 bytes)- highest performance. Requires integer stream support of the device driver.
  • Floating point (4 bytes) - optimum format for most cases.
  • Floating point (8 bytes) - highest data precision. Slowest performance. Highest memory usage.

RAW - the format of RAW file. Raw file is saved by the Server in parallel to execution of an experiment. It contains additional information including the data of all scans and phase cycles. The file format is binary and is different from the experiment file format. The standard experiment file is saved as well at the end of experiment. The experiment name is chosen using the same algorithm like in Autosave option.

  • Standard RAW - the only format implemented. Saves all experiment data except not processed transient data.

Index//Top/GUI map/Experiment Editor

 << >>


Index//Top/GUI map/Experiment Editor

 <<

Direct Device Control

The state of all connected devices can be set using 'dev' control. Editing of this control values will cause immediate change of device settings.

Control has three columns: 'Property', 'Value' and 'Exp Info'. First column represents the tree of devices and their properties. The names of devices have dark yellow background. Second column shows and allows editing of corresponding property values. Properties connected to Experiment Axis Setup or Special Device Setup are shown in gray color and can not be edited. The '...' sign will be shown instead their values. Third column displays property values that was saved in active experiment (if some experiment opened). Context menu allows to hide and show the third column.

The appearance of device properties and the accessible ranges of their values can be configured in Device Configuration dialog.

In 'Run' mode this control is inactive.

Index//Top/GUI map/Experiment Editor

 <<


Index//Top/GUI map/Experiment Editor

Movable Patterns and External Scope Panels

Sometimes it is convenient to control parameters of pulse commands directly from interface (for example for protection switch or detection gate). By declaring pattern movable in Pulse Config Dialog one can control Offset(Lead) and Trail for all channels in the pattern. The range of changes of pattern's lead and trail can be specified as well.
SpecMan4EPR can generate a trigger pulse for external scope. This panel specifies the position of this trigger relative to pulses in the sequence. 'Scope' command should be defined to enable thisoprion.

Index//Top/GUI map/Experiment Editor


Queue

Index//Top/GUI map/Additional panels

 >>

Job's Queue

add

The list of jobs. Job represents an experiment that will be started accoding to the job settings executed and saved. The queue is stored on the Server and is common for all Clients connected to the Server. Job's experiment data never leave server.

Load | Start queue execution.
Save | Create a job. Add experiment from Experiment Editor to queue.
 | Copy an experiment from the job to Experiment Editor.
 | Remove job from the queue.
 | Remove all jobs from the queue.
 | Change job's options using dialog.
 | Change orderof jobs.

Template defines the first part of experiment file name. Second part will be the serial number of experiment. Serial number of experiment can be different from the position of job in the queue. Individual filenames for job's can be set using options dialog.

Index//Top/GUI map/Additional panels

 >>


Untitled Document

Index//Top/GUI map/Additional panels/Queue

Job Options

Job options define when experiment will be started, how many times it will be repeated and under which name it will be saved.
Options

Experiment can start immediately after previous job, after delay or on time.

The job can be repeated number of times or repeated continuously. In the last case user has to press Terminate button to stop the queue execution.

If file name is not specified experiments will be saved under the name defined by the queue template and serial number of the experiment. SpecMan4EPR will not overwrite an experiment unless the explicit name will be given as a File name.

Important Note. When the File name is specified in this dialog, the output file name will not account for the repetitions of this experiment. This may lead to the overwriting of previous experiments. Therefore the number of repetitions should be 1.

Index//Top/GUI map/Additional panels/Queue


Buffer

Index//Top/GUI map/Additional panels

 <<

Experiments in Memory (Buffer)

The list of experiments in the memory. First item in the list represents the last experiment done. Even if experiment is modified in the Experiment Editor one can save the last experiment. To preserve memory it might be usefull to switch off this option.

Load | Open experiment file. The name or filename of this file will appear in this list.
Save | Save data to file.
Info | Export Data Wizard. Only export of transient data to ASCII is supported at a moment.
Close | Remove experiment from the memory.
Copy | Copy experiment from Buffer to Experiment Editor.
Copy | Show selected data in the second viewport. The destination trace is choosed using the near-by selector.

Each Client application can have its own set of experiments in memory.

Index//Top/GUI map/Additional panels

 <<


Index//Top/GUI map/Information panels

 >>

Configuration File Browser

INI

Configuration of SpecMan4EPR is stored in 3 configuration files.

Selection | Extension | Description
Client/Server | *.ini | GUI configuration.
Device | *.cfg | Connected devices configuration.
Pulse | *.cfp | Pulse engine configuration.

Configuration File Browser shows the content of current configuration files.

Index//Top/GUI map/Information panels

 >>


Index//Top/GUI map/Information panels

 <<

Log Window and Status Bar

Log

SpecMan4EPR has a special system to notify user about internal events. Messages can be shown in the 'Log Window' and/or saved to file. Each new message that added to the log window also appears for a short time in the status bar at the bottom. The length of the window is limited. When the limit is reached window is cleared. To preserve all messages logging to file is recommended. Logging settings can be modified in Options dialog.

Each message has four properties: level, time of posting, sender's name and text. Appearance of the message can be configured in the message format section of the Options dialog.

There are four different levels of the message: 'Error' (E), 'Warning' (W), 'Notify' (N) and 'Echo'. All critical events are sent as errors and causes the termination of the experiment if it is running. Warnings report non-critical problems such as adaptation of values. Notify and Echo messages are mostly used for debugging purpose.

Error messages always appear in the window whereas messages with other levels can be shown depending on the settings of message filter.

All modules of SpecMan4EPR have their own unique names. Devices send messages under the names that assigned in Device Configuration dialog.

Log window can be cleaned and saved from the context menu or toolbar.

Index//Top/GUI map/Information panels


Index//Top/GUI map

Notes Panel

Any comments can be entered here. Text will be saved to the experiment file.

Index//Top/GUI map


Index//Top/GUI map

Data Views

There are two 1D view ports in SpecMan4EPR. First one is always visible. Second can be switched on and off and shows selected data. One can use sliders in the right part to switch between 1D slices. The primary dimension of the view port can be specified. Only one data trace from experiment can be shown at a time. 1D Viewer Settings dialog has number of view ports settings. The default state of view port in Run mode can be set in the Actions dialog.

 | Data selector | First view port can have up to two experiments shown at a time. Second view port can show four experiments at a time.
 | Zoom mode selector | Switch on / off on-screen rescale of all traces.
Visual buffer | Visual buffer. | Run time only. Dynamic buffer that represents data accumulated on the first experiment axis.
Buffer | Scan buffer. | Run time only. Dynamic buffer that represents data accumulated on the last experiment axis. After the end of the scan this buffer is added to main storage. For experiments with one axis only scan buffer is identical to visual buffer.
Cumulative buffer | Continuous scan buffer | Run time only. Shows scan buffer for all scans. Allows to observe differences between scans. Buffer is updated with the update rate of server. If scans of experiment are generated faster than the server update rate, some data might be skipped. Continuous scan buffer traces appear on the left from other traces (see green and violet traces on the screen shot above).
Array | Main storage. | Represents data of experiment. Empty during the first scan.
 | Experiment streams | Up to six streams of the experiments. For typical experiment first stream represents 'real' part of data and second stream represents 'imaginary' part.
Selector of axis | Selector of primary axis | Selects abscissa of the multidimensional data.
Print | Print view port | Print view port. Print settings can be found in Options dialog.
Trace selector | Trace selector | Left click to select trace for individual trace scaling. Right click for pop-up menu and trace information.
Plot pop-up | Plot options | Left click to select all traces for scaling. Right click for plot options pop-up menu. Pop-up menu: Common scale - return to common scale of traces. Full scale - the best scale to see all data. Show hint - hint that shows the plot coordinates under the cursor. Allow options - restrictions on scale modifications. See Options dialog for default settings.

Mouse actions

Left mouse button and drag | Zoom
Right mouse button and drag | Scale proportionally to the distance from initial point
Middle mouse button and drag | Shift
Left mouse button double click | Return to the best scale
Right mouse button click | Zoom out factor of 2
Control button | Prevent changing of X dimension
Shift button | Prevent changing of Y dimension
Alt button and left mouse button | Distance measurement

Index//Top/GUI map


Index//Top

Scope window

Scope window shows transient signals and can be used for the setup of the echo integration and baseline approximation ranges.

To see the help click on the corresponding control.

Scope window | Data traces are shown in the 'Scope window'. There are three types of cursor that can be visible in the window: maximum and minimum data values (by default colored red), integration window (by default colored blue) and two base line approximation regions (by default colored magenta). Color settings of the window are located in the Options dialog. For more information on window manipulations such as rescaling etc, see help on View Port.
Trace selector | Trace selector. Left click to select trace for individual trace scaling. Right click for pop-up menu and trace information.
Plot pop-up | Plot options. Left click to select all traces for scaling. Right click for plot options pop-up menu. Pop-up menu: Common scale - return to common scale of traces. Full scale - the best scale to see all data. Show hint - hint that shows the plot coordinates under the cursor. Allow options - restrictions on scale modifications. See Options dialog for default settings.
Integration Window Controls | When transient axis of the experiment is set to the integration mode ( Integration ) SpecMan4EPR automatically integrates time traces. The range of integration can be specified with the 'Integration Window Controls'. The integration window appears on the scope as a vertical lines (blue color by default). Only the part of the trace between these lines is integrated. Information about the integration window is stored in the experiment file.
Scope Channel Selectors | Scope can show up to two time traces at a time. Use Scope Channel Selectors to choose traces of interest. Names of all data acquisition streams can be found in the Selector's combo box.
Trace Processing | Additional processing that can be applied to the underlying or visualized data. When one of the processing selected corresponding panel will be open at the bottom of the scope window.
Data baseline | Signal traces subjected to reproducible low-frequency aperiodic noise (caused by setup warming, standing waves etc) can be very effectively corrected by subtracting the baseline (see also random acquisition). When this option is selected REAL data are corrected. Two intervals can be used to select data area used for baseline sampling. Using of baseline correction in normal cases is not advisable. Baseline panel
FT | Complex Fourier transformation of data traces. Two traces should be selected. Data are not modified. For baseline determination last 100 points of data trace are used. FFT panel .
BL | Baseline subtraction. The trace that has no data can be stored into memory and then be subtracted from the current trace. To store the trace as a baseline, first Reset baseline should be pressed and only then Store baseline button. Otherwise the correction will be cumulative for all previous baseline stored. Scope baseline .
Right panel | Additional options panel toggle button.
Additional options panel | Additional options.
DPO | Toggle off clearing of the screen from previous traces.
Print | Print scope window
Absolute trace | Toggle absolute value trace. Two data traces should be selected.
Maximum range | Acquisition devices typically have the range of acceptable input values. Exceeding of these values can possibly cause the distortion of the signal. Thus it is advisable to keep the signal within the safe region. Safe region visualized as a horizontal bars (red color by default) and can be defined in the Options dialog.
Absolute trace | Re-scales the scope to show the full range of the signals.
Absolute trace | Automatic separation of traces. Not working.
Trace parameters | Trigger number for first and second traces and number of trace averages.

Index//Top


Index//Top

Configuration Dialogs

The configuration of SpecMan is loaded from three configuration files. Each of these file can be modified by special dialog. After the launching of the program SpecMan automatically loads SpecMan.ini (if present) located in the same directory with the executable file. Use -I <filename> command line option to load different ini-file. To create new pulse and device configuration the Empty configuration (supplied with the program) has to be loaded. The last used device configuration file is stored in the ini-file. SpecMan loads this file on start automatically.
File extension | GUI | Where to find
*.ini | Options | Config | Options
*.cfg | Device Configuration wizard | Config | Device Config
*.cfp | Pulse Engine Configuration wizard | Config | Pulse Config

Additional window presents the Interface Configuration which is stored in the *.cfg file.

Index//Top


Index//Top/Wizards

 >>

Device Configuration Wizard

This dialog can be used for the connection of devices to the program and device drivers configuration. Safe ranges of device properties and their visibility in device info panel can be configured as well. To open the dialog select Config | Device Config from the main menu.

The dialog contains three main parts. The tree view on the left represents the current configuration, connected devices and their properties. The window below shows the help on the selected in the tree view item. The toolbar above the tree allows to load/save the configuration file and to change the access level. The panel below the toolbar allows to filter items presented in the tree view.

Right part of the window presents the customizable options, different for every selection in the tree view. At basic access level options are not editable. The options for different selections in the tree view are described further.

Index//Top/Wizards

 >>


Index//Top/Wizards/Device

Device Configuration: Configuration Title and Adding of Devices

Selection: |
Text of selection: | Configuration title

Select configuration title to get access to these options.

This edit box allows to change the title of configuration file, which appears in the Select configuration dialog.
This group of controls allows to add new device to the configuration. To add new device: select the driver from the list. Type the name of device. Press the Create button. Name can have any sequence of letters and numbers, except spaces. Short names are preferable, since they are better visualized in various dialogs. The procedure of the device driver configuration is explained in the next page.

Index//Top/Wizards/Device

 << >>


Index//Top/Wizards/Device

Device Configuration: Device driver configuration

Selection: |
Text of selection: | Device identifier
Icon meaning: | Driver state: Normal, [image] Suspended, [image] Disabled, [image] Error

Select device identifier to get access to these options.

This panel allows to Disable/Enable, Suspend and Delete selected device from configuration. The disabled and suspended devices are not receiving any commands. However the suspended device driver does not interrupt the communication with the device and thus not needed to re-initialize it, when activated. If there are devices in the Error state, experiment will not be executed. Devices in Disabled state do not stop experiment from being executed.
Device drivers contain number of options, which affect their performace. These options can be edited using this control. Left-click on the key to see the hint with the help. Devices that connected through the interface also contain in this list options of the interface.
The list of interfaces that device driver uses. The status of interfaces is also indicates. The possible states are: Not found - interface libraries are not found, Not ready - interface is not ready and Ready. If device (typically a just added device) uses the interface that is not included into the configuration the Create button has to be pressed.

Index//Top/Wizards/Device

 << >>


Index//Top/Wizards/Device

Device Configuration: Device property configuration

Selection: |
Text of selection: | Device property name and property type

Select device property name to get access to these options.

Default value will be set to device on initialization of the driver, unless the safe value is activated.
Minimum and Maximum values that device property can take.
Appearence of this device property at the Initial Device Setup page.
The Safe value is the value set on initialization and deinitialization of the driver if Has safe value is set to true.

Index//Top/Wizards/Device

 << >>


Index//Top/Wizards/Device

 <<

Device Configuration: Device pulse channels

Selection: |
Text of selection: | Device channel name and pulse capacity

Device channels have no options.

Index//Top/Wizards/Device

 <<


Index//Top/Wizards

 >>

Pulse Configuration Wizard

All settings of pulse engine can be set in this dialog. To open the dialog select Config | Pulse Config from the main menu.

The dialog contains two main parts. The tree view in the up-right corner represents the pulse configuration and it components. The toolbar in the up-left corner allows to load/save and validate the configuration file and to change the access level.

Bottom part of the window presents the customizable options, different for every selection in the tree view. At basic access level options are not editable. The options for different selections in the tree view are described further.

Index//Top/Wizards

 >>


Index//Top/Wizards/Pulse

Selection: |
Text of selection: | Configuration title

Select configuration title to get access to these options.

Sequence and general settings: The edit box allows to change the title of configuration file. The pattern position combo boxes specify where in the pulse sequence the corresponding patterns will appear (at the beginning or at the end). To be included into the sequence EOS, EOR and reptime commands have to be completely defined (this means that command has to have at least one pattern with at least one selected physical channel). The physical channels of reptime command should be of the type 'space'. By selecting None option the repetition time can be excluded from the sequence. Dwell time option force the editor to bring all time variables to be multiples of the dwell time.

Repetition Time Parameters: Maximum and Minimum set the limits on the varying of repetition time in the GUI.
The Synchronized by software option allows to maintain exact repetition time by the means of software. The hardware repetition time accuracy is always superior to the software one. On a typical Intel Core Duo system the software repetition time accuracy can be within 10 to 20 microseconds. Five different algorithms are implemented. First three deal with intervals between consequent runs (master triggers). If synchronization option is At the start of Experiment the time from the beginning of experiment till the current master trigger is maintained. At every run option maintain fixed time duration between consequent master triggers. Adaptive option is working similar to At the start of Experiment, however if the time interval between two master triggers exceeding two repetition times the time origin is re-synchronized. For typical applications the last option is more appropriate. When acquisition system is emulated but a real pulse programmer is used, it is important to prevent the program from starting of the new cycle of sequence preparation until the end of previous sequence. Last two software synchronization options delaying next pulse programmer reprogramming cycle thus allowing it to complete the sequence output. Wait for Sequence duration option waits for delay equal to calculated sequence duration after the trigger. Adaptive + 50% Rep. time option waits for the time of the sequence minus half of the repetition time. In cases when repetition time is significantly longer than the user defined part of the sequence last option is more appropriate.

List of pulse commands: These controls allow to add, delete and rename pulse commands. The already defined commands are listed on the left.

Index//Top/Wizards/Pulse

 << >>


Index//Top/Wizards/Pulse

Selection: |
Text of selection: | Pulse command

Select pulse command to get access to these options.

This panel provide the information on the PPL command syntax.
This controls allow to add, delete and rename the command patterns. The already defined patterns are listed on the right.
This controls allow to set number of channels and states in the pattern. The default state can be selected as well. If the option Pattern can be moved is selected Offset and Tail of the pattern can be modified through the Variable pattern panel of experiment (e.g. for the protection pulse).

Index//Top/Wizards/Pulse

 << >>


Index//Top/Wizards/Pulse

 <<

Selection: |
Text of selection: | Pulse command pattern, number of states and channels of the pattern

Select pulse command pattern to get access to these options.

The pulse command options are discussed in the Configuration File topic.

Pattern definition | Pattern table defines which channels are activated in the certain state of palse pattern. Only active channels contribute to the pulse sequence. Double-click to activate/deactivate. The state of pulse pattern is the argument of corresponding pulse command. State of a pulse patterns is the major tool for programming of phase cycling in the pulse sequence.
Channel type | The type of the channel optimization is selected here. See Virtual channel topic.
Lead and Trail of pulse | Force lead or trail of the pulse to appear earlier or later. Set negative times to shift a pulse slope earlier and positive to delay it. See Channel definition topic.
Safety options | See Channel definition topic.
Length or Connected parameters | See Channel definition topic.
Pulse polarity | The active polarity of pulse output. Double-click to change. See Channel definition topic.
Device channnel | See Channel definition topic.

Important note: Patterns of reptime command should contain only 'space' channels. To use repetition time at least one virual channel of the type 'space' should be defined in reptime command. Patterns of bos, eos, bor, eor commands should contain only 'up' or 'down' channels with non-zero lengths.

Index//Top/Wizards/Pulse

 <<


Index//Top/Wizards

Interfaces Configuration

Shows which devices assigned to which interfaces.

Index//Top/Wizards


Index//Top/Wizards

 >>

Options Dialog

Settings of SpecMan GUI and internal engines can be made using 'Options Dialog'. All options are loaded from and saved to the ini-file. To enable changes the 'OK' button has to be pressed. 'Cancel' button discard the recent changes. 'Default' button sets all values to their defaults. Options are organized into six pages:
  • Directories Page
  • 1D Viewer Settings Page
  • Experiment Editor Settings
  • Scope Settings Page
  • Demon Settings Page
  • Actions Page
  • Print Settings
  • Network Settings
  • Log Window Settings Page

Index//Top/Wizards

 >>


Index//Top/Wizards/Options

Directories Settings Page

  • Root directory for configuration files
  • Root directory for template files
  • Root directory for storing data on Server (not used)
  • Directory for autosave data on Server (see Automatic Storing Options)
    • File name prefix for Back Up function. All experiments done will be stored at disk
    • File name prefix for Automatic Storing function. Save current experiment at given time intervals in temporary files. Allows to preserve intermediate states for the sensitive experiment.
    • Delete old temporary files created by Automatic Storing function. When new experiment is started all temporary files are deleted.

Index//Top/Wizards/Options

 << >>


Index//Top/Wizards/Options

1D Viewer Settings Page

This dialog tunes the appearance of the main and secondary Viewports.

  • Data Traces set the color and drawing stiles of all Viewport traces.
  • Colors set colors of Viewport elements. The background of the Viewport is dependent on the selected view type.
  • Grid enables the on screen grid. Zero line option force viewport to change data view range so that zero line is visible. Show labels options add labels on axis.
  • The precision of hints affects the information displayed in data hints.
  • The border of Auto scale option increases the displayed data range.
  • The progress marker is a vertical cursor that selects the last acquired point in the trace. It visualizes of the experiment progress.
  • Allow relative enables certain transformation of displayed data range in manual mode.

Index//Top/Wizards/Options

 << >>


Untitled Document

Index//Top/Wizards/Options

Experiment Editor Options

This dialog modifies the appearance of Experiment Editor.

  • Show repetitions for XYZ axes option enables and disables indication of repetitions in Experiment Axis Setup panel. Repetitions for intermediate axis are not necessary for typical experiment.
  • Show repetitions for last axis enables and disables indication of repetitions in last axis of Experiment Axis Setup panel. Repetitions of the last axis are not necessary for typical experiment.
  • Normalize array on number of scans taken normalizes data of main storage array in Viewport.

Index//Top/Wizards/Options

 << >>


Index//Top/Wizards/Options

Scope Settings Page

  • Colors set colors of Scope elements.
  • Grid enables the on screen grid. Zero line option force Scope to change data view range so that zero line is visible. Show labels options add labels on axis.
  • Trace width modifies the width of scope traces.
  • The border of Rescaling option increases the displayed data range.
  • Signal limits are horizontal cursors in the scope. They can be used to visualize safe limits of the signal etc.
  • The precision of hints affects the information displayed in data hints.

Index//Top/Wizards/Options

 << >>


Index//Top/Wizards/Options

Demon Settings Page

Performance options affect performance of the program and consumption of computer system resources, such as CPU and memory.

Data options define the format of saved data.
  • Screen update change the rate of Viewport refresh and data transfer between Server and Viewports
  • Demon and device priorities defines the priority of corresponding threads. The priority of GUI is always normal. Time critical priority is not recommended but can be used for software synchronization of sequences with high repetition rates.
  • Single thread execution forces to execute demon and devices in the single thread. For single processor computers and high speed devices this option may increase SpecMan4EPR performance.
  • Communication warning option generates a warning if device does not response in specified time.
  • Arm to trigger delay insert a delay between acquisition device programming and sequence execution. May improve performance for slow acquisition devices. Negative number stands for no delay.
  • Force sequence programming eliminates the optimization which skip programming of sequences when it is not required. Not recommended.
  • Use data buffering stores the data of current scan into scan buffer (see also Viewport). Preservs experiment data when experiment is terminated in the middle of scan. Very recommended.

Index//Top/Wizards/Options

 << >>


Index//Top/Wizards/Options

Action Settings

On Start | On Exit | Experiment Load | Experiment Run | Experiment Finish | Experiment Save
Tune Mode | Run Mode | Queue Run | Queue Finish |  |
On start

Welcome Screen allows user to select appropriate device and pulse configurations.

Welcome Screen | Show welcome screen and let user select configuration.
No configuration | Load empty configuration. Mostly useful in viewer mode.
Load last configuration | Load configuration used during previous run of SpecMan4EPR.

The list of configuration files as appeared in welcome screen.
On exit | Erase sample description option erases the experiment description when program is closed. On default the description is stored in the Configuration file.
Experiment Run

Data format - the format of data that will be chosen after loading of template. If As in Experiment is selected the data format of template will be preserved. The format can be changed later in Special Setup panel of Experiment Editor.

  • Integer format (4 bytes)- highest performance. Requires integer stream support of the device driver.
  • Floating point (4 bytes) - optimum format for most cases.
  • Floating point (8 bytes) - highest data precision. Slowest performance. High memory usage.

RAW format - the default format of RAW file.

  • Standard RAW - the only format implemented. Saves all experiment data except not processed transient data.
Experiment Run

Main and Secondary view state options select the View port visualization in Run mode. If nothing selected the visualization state of view port will not be changed between different experiments.

Show File Select dialog option is under development.
Experiment Run

Save a copy to the first slot of buffer option copy the experiment to the first slot of buffer immediately after the end of experiment. Uncheck this option to save the memory for large experiments.

Copy experiment to memory stores the experiment to memory when experiment is saved. Second option preserves the memory by avoiding experiments with large size.

Save experiment dialog options
Saves a copy of to ASCII format in parallel to SpecMan4EPR data format.
Copy sample description forces the description entered in the dialog into the main experiment description
Trace Length is the length of the trace in the tune mode. In tune mode the length of the trace is not dependent on the dimensions of experiment.
Run Mode | Under development.

Show File Select dialog option launches a dialog to set the template file name for the queue.

Add Experiment to Empty Queue option adds experiment to the queue on experiment queue when it is empty.
Empty queue after all experiments in the queue are finished.

Index//Top/Wizards/Options

 << >>


Untitled Document

Index//Top/Wizards/Options

Print Settings

Printing options affect the apperence of the Viewport hardcopies.

Negative Tick Height stands for grid line from one edge of the plot to another.

Index//Top/Wizards/Options

 << >>


Untitled Document

Index//Top/Wizards/Options

Network Settings

  • No network - messages are routed directly from Server to Client. TCPIP channel is not used.
  • Server- Server and Client are started at the same computer. Client can be disconnected if needed.
  • Client - Only Client is started.

Max trace length and resolutions option describes the data compression of traces shown in the Scope and Viewport. It optimizes the data transfer between Server and Clients.

  • X Axis compression (checkbox to apply, how many points to leave)
  • Data compression (how many bits per point transfer)

Index//Top/Wizards/Options

 << >>


Index//Top/Wizards/Options

 <<

Log Window Settings Page

Logging options describe where SpecMan4EPR should log the activity and defines the length of the Log Window queue.

Message filter defines which messages will be finally shown. Report levels are Echo/Warning/Error. in first case all messages will be shown. The filter can be overridden for certain message sources. In last case only errors will be shown. Warnings can be very important for understanding of program problems. That's why this mode is recommended.

Message format defines an appearance of the message. Messages should not be longer than Max message size.

Index//Top/Wizards/Options

 <<


Experiment Structure

Index//Top

 >>

Experiment Overview

The SpecMan4EPR Experiment is a description of rules and steps to perform an experiment plus the data that was generated by this experiment.

Any experiment has a set of axis, each of them is nothing else but an array of indexes. In simplest case indexes consequently select values associated with an axis variable. Axis defines the number of values that variable associated with the axis can take. If more than two variables are associated with the same axis, they become dependent and controlled by the same index. SpecMan4EPR supports up to four axis that represent four dimensions of the experiment and additional axes for the simple arithmetic operation on the acquired data during experiment. An axis can index an arbitrary amount of dependent variables. During the experiment indices are scanned consequently or randomly depending on a user choice.

The sequence of events during experiment is presented in the Fig. 1. Here the '123' blocks represent the periods when associated hardware is programmed in response to changing of experiment variable. Green brackets depictures cycles that select experimental points of corresponding axis. Experiment starts with the presetup (setup before). Then variables of [image] axis will be set. Then the variables of nested loops ( [image] / [image] / [image] ) axis will be set, if present. Finally the signal or inner-most loop (marked as [image] , Transient) will be executed. The complete list of axis types can be found here. Signal loop is always executed on hardware. If connected hardware has possibilities to store more than one sequence and acquire more than one data trace, then any axis can be executed on-hardware as well. On-hardware settings can be found here.

Fig.1 Sequence of actions during experiment

The pulse sequence generated by SpecMan4EPR is presented in the Fig. 2. The pulse sequence starts with the beginning of sequence (bos) command executed once. Then the user-defined part of sequence and sequence repetition time pattern are evaluated. The duration of repetition time (reptime) command is calculated as a difference between the repetition time specified in the program and the sum of all other parts of the sequence. The order of user-defined part of sequence and sequence repetition time patterns can be configured using Pulse Configuration Wizard. Sequence is finished with end of sequence (eos) command. The pulse sequence is repeated number-of-shots times. The repetition time pattern can be completely eliminated. This mode is advisable when external control of repetition time is used. All commands are defined in the Pulse Configuration Wizard. User-defined sequence is programmed using PPL language.

Fig.2 The pulse sequence. See service pulse commands for bos, eos and reptime patterns description.

The major purpose of the special commands is the elimination of service commands from the PPL script. The bos pattern is typically used for synchronization of multiple pulse pattern generators. Eos pattern can be used for clean up procedures on the detection devices.

The complete pulse sequence is presented in the Fig. 3. In addition to the sequence presented in Fig.2 it includes two additional patterns in the beginning and end of run. SpecMan4EPR has the possibility to 'pack' sequences from sequential experimental points into a single run (see Sequence-on-hardware option). In this case the complete pulse sequence may have multiple pulse sequences. In a simplest case only one pulse sequence will be included into the complete pulse sequence.

Fig.3 The complete pulse sequence. Multiple sequences are shown 'packed' in one run.

The typical use of bor and eor patterns are resetting and triggering of ADC or boxcar integrators.

In case of external sequence triggering, bor pattern will be immediately executed then the trigger will be expected before every sequence/shot. Immediately after the last sequence/shot the eor pattern will be executed.

Index//Top

 >>


Save file format

Index//Top/Experiment

 <<

Save file format

Experiments are stored in two files.
Description of experiment is stored in text *.exp file. The recorded data are stored in binary *.d01 file.

Structure of *.d01 file

Name | Type | Description
Data amount | unsigned 32 | Number of recorded variables stored.
Data format | unsigned 32 | 0 - data stored in double format, 1 -data stored in float format

This section repeated amount of times equal to Data amount value.

Data dimension | int 32 | The number of dimensions of stored data.
Array of dimensions | (int 32)*4 | The sizes of dimensions.
Overall data size | int 32 | The size of data stored. Equal to the multiplication of all dimension sizes.

This section repeated amount of times equal to Data amount value.

Data

(Overall data size)*sizeof(double or float)

Data stored in c-style (1D array [(0,0,0,0), (1,0,0,0), ... , (n,0,0,0), (0,1,0,0), (1,1,0,0), ... , (n,1,0,0), ... , (n,m,0,0), ... , (n,m,k,l)]). Fastest index corresponds to transient axes, slowest to Z-axes.

Structure of *.exp file

Exp file is written in Windows ini-file style. The section names are enclosed in square brackets '[]'. Fields have 'field_name = field_value' format. The order in which fields met in the file (within one section) is insignificant. Some sections contain the plain text. Table below present the structure of exp-file. Required sections marked with red. Section and field names with_underline stand for arbitrary name. Field names in bold style stand for reserved words.

Section | Field | Value | Description
[general] | name | string | The name of the experiment
[text] | - | plain multyline text | Any text (sample description)
[sweep] | - | - | Experimental axis definition
[sweep] | transient | string | Transient axis. Format: T/I,trace_length,rep_number,first_stream_name[, second_stream_name[,..]]. T means transient trace is stored. I means trace is integrated and only integral is stored. F.e. transient = I,200,30,a,b means that transient data of the length 200 points were integrated, 30 shots per loop was made, two streams a and b was stored. For single point devices trace length is equal to 1. Streams have to be defined in the [aquisition] section.
[sweep] | sweep0/1/... | string | The axes. Format: X/Y/Z/S/P,trace_length,rep_number,first_par_name (or stream_name)[, second_stream_name (or stream_name)[,..]]. F.e. sweep0 = X,128,1,T1. The order in which parameters are defined affect the presentation order of the axis. Corresponding data are stored in the exp file as 1D c-style array in the order from fastest index to slowest: I/T,X,Y and Z. S(um) and P(arameters) axis does not increase stored data amount. Parameters have to be described in [params] section.
[presetup] | var_name | string | The presetup axis. Actions before the experiment. Format: value; some_property@some_device. F.e. Delay = 10 ms;Delay@ADC.
[aftersetup] | var_name | string | The aftersetup axis. Actions after the experiment. Format: value; some_property@some_device. F.e. Delay = 10 ms;Delay@ADC.
[eachpoint] | var_name | string | The eachpoint axis. Actions that executed each points. Format: value; some_property@some_device. F.e. Delay = 10 ms;Delay@ADC.
[params] | - | - | Parameters of experiment
[params] | par_name | string | Format: value; some_property@some_device. Value of parameter can be: (i) comma separated list; (ii) first_value step increment; (iii) first_value to last_value. F.e. T1 = 40 ns step 20 ns;PPL variable or RF = 40 MHz to 60 MHz; Freq@Gen1
[aquisition] | - | - | Acquisitions streams.
[aquisition] | stream_name | string | Format: some_property@some_device. F.e. a = In_Ch0@PulseGen.
[program] | - | plain multyline text | Pulse program.
[streams] | - | - | Supporting information about data streams.
[streams] | names | Comma separated string list. | Name of data streams (can be different from acquisition streams). F.e. names = Re, Im.
[streams] | units | Comma separated string list. | Units of data streams. F.e. units = V, V.
[streams] | dwelltime | Comma separated string list. | Dwelltime of transient data streams. F.e. dwelltime = 10 ns, 10 ns.
[device_name] | any_field | device dependent. | Any information that device want to store to exp file.

Index//Top/Experiment

 <<


Pulse Program Language

Index//Top/

 >>

Pulse Programming Language

Pulse program language (PPL) designed to described sequence of events happens in time. Main difference from ordinary languages is that each PPL command is starting at specific time and has a duration in time.

PPL has special hidden variable - internal time counter that defines the time when each PPL command executes. User can not directly access this value but PPL commands execution modifies it. Statements and expressions of the language do not affect internal time counter. At the beginning of the program internal time counter is set to zero.

Prior to experiment execution the pulse program is translated into assembler of Pulse Engine.

Index//Top/

 >>


PPL Script

Index//Top/PPL

PPL script

PPL script is a text that contains declaration of acquisition streams, variables and commands that define pulse sequence. The values of variables can be set outside of the script by Demon. The execution of PPL program is similar to calling of subroutine with parameters passed by values. Script output is the acquisition coefficients that scale the acquired data.

Index//Top/PPL

 << >>


Language structure

Index//Top/PPL

Introduction to language structure

Declaration

Three types of objects can be declared inside the program: variables, signals and arrays.

initialization
expressions
operators
statements

Index//Top/PPL

 << >>


Variable definition

Index//Top/PPL

Variable declaration

Syntax

direct declaration:
type-modifier type-specifier declaration-list

declaration-list:
variable-name or
variable-name, declaration-list

type-specifier:
bool
int
real
signal
time

type-modifier:
const

declaration by assignment:
variable-name = expression

Description

There is two ways of variable declaration in SpecMan: direct and by assignment.
Variable declared in direct way (exported) can be changed from outside the program and visible in program interface.
Variable declared by assignment are visible only inside the program. Type of the variable in this case is equal to the type of expression it assigned to.

Example:

time t, tau        %% direct declaration
int k
signal a, b
p = ['a', 'b']     %% declaration by assignment
t90 = t + 25 ns    %% declaration by assignment

Index//Top/PPL

 << >>


Array declaration

Index//Top/PPL

Array declaration

Syntax

variable-name = [<expression1>, <expression2>, ...]

Description

SpecMan allows declaration of 1-dimensional arrays of all available types. Declaration of array is made by assignment. All expressions in assignment has to be of the same type. Arrays can not be published.

Arrays in SpecMan are 1-based (first index is 1).

Example:

phase = [0., 90., 180., 270.]    %% real array with 4 elements
t = [5 ns, 65 ns]               %% time array with 2 elements

Index//Top/PPL

 << >>


Keywords

Index//Top/PPL

 <<

Keywords

Keywords are words reserved for special purposes and must not be used as normal identifier names.

Alphabetical listing of PPL keywords

  • asm
  • bool
  • const
  • detect
  • false
  • if
  • int
  • else
  • end
  • parallel
  • real
  • repeat
  • signal
  • time
  • true
  • wait
  • user defined keywords (pulse commands)

Index//Top/PPL

 <<


Asm

Index//Top/PPL/Keywords

 >>

Asm

Reserved for future use.

Index//Top/PPL/Keywords

 >>


bool

Index//Top/PPL/Keywords

bool

Category
Type specifier

Syntax
bool <identifier>

Description

Use bool and the literals false and true to perform Boolean logic tests.

The bool keyword represents a type that can take only the value false or true. The keywords false and true are Boolean literals with predefined values. false is numerically zero and true is numerically one. These Boolean literals are rvalues; you cannot make an assignment to them.

You can convert an rvalue that is of type bool to an rvalue that is int type. The numerical conversion sets false to zero and true becomes one.

See also:

type specifiers

Index//Top/PPL/Keywords

 << >>


Detect

Index//Top/PPL/Keywords

detect

Category
Pulse statement

Syntax
detect <expression>

Description

Trigger the acquisition system.

Used to specify time at which detection of a transient signal has to be started. Has zero duration.
Defines the acquisition channel and coefficient: a signal variable on value of which all transient data recorded after the execution of PPL will be multiplied. Number of arguments has to be smaller or equal to amount of signal variable declared.

Parameter | Type | Description
expression | signal | Detect coefficient and acquisition channels

Example:

int phase
signal a, b
p1 = ['+a', '-b']
p2 = ['-a', '+b']

detect p1(phase), p2(phase)

Index//Top/PPL/Keywords

 << >>


const

Index//Top/PPL/Keywords

const

Category
Modifier

Syntax
const <variable name>

Description

Use the const modifier to make a variable value unmodifiable.

Index//Top/PPL/Keywords

 << >>


end

Index//Top/PPL/Keywords

end

Category
Keyword

Description

Supplementary keyword used to define the end of action of statements and operators

See also:

if else, repeat, parallel

Index//Top/PPL/Keywords

 << >>


ifelse

Index//Top/PPL/Keywords

if, else, end

Category
Operators

Syntax
if <condition>
<statement1>
else <statement2>
end

Description

Use if to implement a conditional statement.

The condition statement must be bool type. Otherwise, the condition is ill-formed.

When <condition> evaluates to true, <statement1> executes.

If <condition> is false, <statement2> executes.

Example:

if tau>45ns
   mwpulse 200 ns
else
  wait 200 ns
end

Index//Top/PPL/Keywords

 << >>


int

Index//Top/PPL/Keywords

int

Category
Type specifier

Syntax
int <identifier>

Description

Use the int type specifier to define an integer data type.

See also:

type specifiers

Index//Top/PPL/Keywords

 << >>


Parallel

Index//Top/PPL/Keywords

parallel, end

Category
Statements

Syntax
parallel <statement> end

Description

Defines a new time line that is valid within the parallel - end scope. Time is starting from the current value of internal time counter.

Internal time counter after the end of statement returns to the state it was before parallel statement. Parallel statements can be nested.

Example:
Davies ENDOR sequence

mwpulse 200 ns
parallel
  rfpulse 8 us
end
wait 10us
mwpulse 100 ns
wait  500ns
mwpulse 200 ns
wait  500ns
detect 1

Index//Top/PPL/Keywords

 << >>


Repeat

Index//Top/PPL/Keywords

repeat, end

Category
Statements

Syntax
repeat <expression>
<statement>
end

Description

Use the repeat keyword to iterate a statement.

Parameter | Type | Description
expression | int | Number of iterations

Index//Top/PPL/Keywords

 <<


real

Index//Top/PPL/Keywords

real

Category
Type specifier

Syntax
real <identifier>

Description

Use the real type specifier to define an identifier to be a floating-point data type. real type corresponds to double type in C.

See also:

type specifiers

Index//Top/PPL/Keywords

 << >>


Index//Top/PPL/Keywords

signal

Category
Type specifier

Syntax
signal <identifier>[, <identifier>[, ...]]

Description

Use the signal type specifier to define the acquisition channels. The name of the channel is a special object with signal data type. Declaration of signals has to be after the declaration of all other data types. Variables of signal data types are used as arguments of the detect command. Declared acquisition channels appear in the Experiment Editor. When no signal declaration found in the program, signal channel 'a' is declared automatically.

Example:

signal a,b
detect 'a','-b'

In this example acquisition stream 'b' will be multiplied by -1 prior to storing.

Index//Top/PPL/Keywords

 << >>


time

Index//Top/PPL/Keywords

time

Category
Type specifier

Syntax
time <identifier>

Description

Use the time type specifier to define an identifier representing physical value time.

According to SI standard time is measuring in seconds (s). Smaller units than the second produced by attaching power-of-10 prefix multiplier.

Example:

time t, tau

See also:

type specifiers

Index//Top/PPL/Keywords

 << >>


Wait

Index//Top/PPL/Keywords

wait

Category
Pulse statement

Syntax
wait <expression>

Description

Add time to the internal time counter. Used to space events from each other.

Parameter | Type | Description
expression | time | Time to wait

See also:

Pulse command,

Example:

mwpulse 45ns
wait tau
mwpulse 90ns

Index//Top/PPL/Keywords

 << >>


Pulse Command

Index//Top/PPL/Keywords

 <<

Pulse Command

Category
Pulse statement

Syntax
NAME <expression1> [, <expression2>, <expression3<, ...]

Description

Pulse command generate a pulse starting from the time of internal program counter and increment internal time counter on the time equal to pulse duration.

Parameter | Type | Description
expression1 | time | Pulse duration
expression2,... | int | State of pattern 1, ...

Names of pulse commands and number of their parameters are user defined. Configuring of pulse commands is going before parsing of PPL program and pulse command names are treated as keywords. See CFP file for more details.

See also:

Wait,

Example:

mwpulse 45ns
mwpulse 45ns, a(1)
rfpulse 45ns, 1, 4

Index//Top/PPL/Keywords

 <<


Spectrometer overview

Index//Top

Spectrometer Overview

Spectrometer is a part of SpecMan4EPR that maintains connected devices and interfaces them to the GUI, Demon and Pulse Engine.

Device dependent part of the Spectrometer calls driver. Spectrometer interface is device independent.

Index//Top


Device

Index//Top/Spectrometer

 >>

Device

Device is a part of the program incorporating all behaviors of a real device. Device represented by descriptive part that presented in a GUI and executive part (driver).

Descriptive part is common for all devices drivers are device-different.

Index//Top/Spectrometer

 >>


List of supported devices

Index//Top/Spectrometer

List of Supported Devices

Special devices

  • System device
  • Dummy device
  • TCPIP device
  • EasyGPIB device

Pulse generators

Device | Manufacturer | Resolution | Channels | Pulses | Shortest pulse [clocks] | Shortest delay [clocks] | Programming speed
RS690 | Interface Technology | 4 ns/8 ns/16 ns | 16/32/64 | ~ 100 | 1 | 1 | slow
DG535 | Standford Research Systems | 30 ps | 2 | 1 | 1 | 1 | slow
PulseBlaster | SpinCore [www] | 6.3 ns/8 ns/10 ns | 12 | ~200 | 8 | 8 | average
PulseBlaster ESR | SpinCore [www] | 2.5 ns/3.3 ns/3 ns | 20 | ~600 | 1 | 6 | fast
AWGDOUTS | Chase Scientific [www] | 1 ns/2 ns etc | 16 | ? | 1 | 1 | fast
DG2020A | Sony/Tektronix | 5 ns/10 ns etc | 8/16/24 | ? | 1 | 1 | slow

Analog to digital converters and scopes

Device | Manufacturer | Resolution | Special features | Date transfer speed
DP2xx (U1069A) | Agilent [www] | 1 ns/2 ns | - | fast
DP3xx (U1070A) | Agilent [www] | 2 ns | 12-bit | fast
AP2xx (UP1082A) | Agilent [www] | 1 ns/2 ns | Averager | fast
NI60xx | National Instruments | 5 us | - | average
TDS520A | Tektronix | 0.5 ns | Digital oscilloscope | slow

Field controllers

Device | Manufacturer | Description
ER032M/B-H15 | Bruker | up to 2 T
CIM-16 | Cryogenics | up to 5 T
IPS | Oxford | up to 5 T
SMS | Cryogenics | up to 12 T

Arbitrary waveform generators and function generators

Device | Manufacturer | Resolution | Description
DA4300 | Chase Scientific | 300 MSPS | AWG
LW420 | LeCroy | - | function generator

RF generators

Device | Manufacturer | Range | Description
EGS | Agilent | - | Has pulse gate capabilities
SMR/SMT/SMX | Rhode&Schwartz | - | -
PTSxxx | Programmed Test Sources Inc | - | Connected through NI PCDIO-96 board or USB adapter (SpinCore) or GPIB
HP8662A | Agilent | - | -
XS73xx | HERLEY-CTI | - | PLL Frequency Synthesizer (LPT interface)
ADF41xx | Analog Devices | - | PLL Frequency Synthesizer (LPT interface)

Others and partial support

Device | Manufacturer | Description
ER023M | Bruker | Signal channel. Callibration is not supported
HP8752ES | Agilent | Network analyzer. Only frequency sweep is supported
SR830/844 | Stanford Research Systems | Lock-In Amplifier

Index//Top/Spectrometer

 <<


System Device

Index//Top/Spectrometer/List of devices

System device

System device represents properties of experiment, demon and spectrometer that can be modified during the course of an experiment. System device is always present in the list of devices.

Property | Description
Shots | Number of shots in experiment.
XReps / YReps / ZReps / Sim1Reps / Sum2Reps | Number of repetitions for corresponding axes.
i / j / k | Dummy variables. Values of these variables are ignored. Do not trigger recalculation of pulse sequence. Can be used to enumerate identical traces in experiment.
MTDelay | Delay from the moment of setting of the variable till the sequence master trigger. This variable can be used to account for the settling time of devices. Multiple settings of MTDelay are allowed. The master trigger time will be chosen as the latest time between all times set by MTDelay and software synchronization time (if used).

Index//Top/Spectrometer/List of devices

 <<


Dummy Device

Index//Top/Spectrometer/List of devices

Dummy device

Dummy device is a special device driver created for testing purposes. It does not correspond to any real device but can be configured to have arbitrary number of properties and channels. Dummy device has a built-in properties:

Property | Description
Delay | Setting of this property will cause a software delay (resolution 1ms, values below 10ms are not precise).
DwellTime | Setting for the pulse generator 'transmitter' monitor. Defines the scope time window. For each pulse channel the readable property In_[name_of_pulse channel] is created. By connecting of this property to the transient axis the pulse sequence can be monitored on the scope. Pulse pattern will be sample with specified dwell time.
StartDelay | Setting for the pulse generator 'transmitter' monitor. Defines the scope time window. For each pulse channel the readable property In_[name_of_pulse channel] is created. By connecting of this property to the transient axis the pulse sequence can be monitored on the scope. The scope trigger event is defined either by ScopeTrigger pulse channel or by zero time. StartDelay is delaying this trigger.

and channels:

Channel | Description
ScopeTrigger | Creates automatically when device has pulse channels. Serves as a scope trigger for dummy device pulse generator 'transmitter' monitor.

The DUMMY device can be created in 'Device Configuration' dialog. The hardware wizard is not able to configure properly the DUMMY driver options at a moment. Thus the editing has to be done manually in configuration file. The appearance of the properties and channels can be configured by setting corresponding entries in the device section of CFG file. Refer to the rules for the explanation of setting convention.

Entry | Value | Description
DeviceDLL | DUMMY | Device specification
par[n0] | <name>, <unit>, [write/read/rwrite], [sync/async] <name>, , [write/read/rwrite], [sync/async], <first selection>, <second selection> ... | Definition of value-based device property Definition of selection-based device property
ch[n0] | <name>, [n number of pulses] | Definition of device channel
DataStyle | [Rand/Last/Sinus] | The type of output data that device will generate being connected as a read device.

Example:

[DG2]
DeviceDLL=DUMMY
ch0 = ab,1
ch1 = cd,1
par0 = rab, s,rwrite,sync
par1 = rcd, s,rwrite,sync
DataStyle = Sinus

Index//Top/Spectrometer/List of devices

 <<


TCPIP Device

Index//Top/Spectrometer/List of devices

TCPIP device

TCPIP device driver was introduced to interface devices controlled using LabView™. TCPIP protocol allows to connect remote devices. At a moment TCPIP device does not support interaction with transient signal acquisition, however in the future fully functional device driver is planned.

The external part of the TCPIP interface has to be built using client-server technology. It can be written using any language on any platform that supports TCPIP. TCPIP device is connected as a client to the external interface that works as a server. The template external interface written using LabView™ is supplied.

The exchange protocol has two packet types and two modes - with handshake and without. The simple packet delivers a value of a single property. Large packet transfers a buffer with data. The exchange with handshake forces SpecMan4EPR to wait for device's response.

The TCPIP driver can be only partially configured using Device Configuration dialog. The presence of device properties is defined by setting corresponding entries in the device section of CFG file

Entry | Value | Description
DeviceDLL | DUMMY | Device specification
IP | <computer name> of xxx.xxx.xxx.xxx | Server IP
port | [n] | Server port
par[n0] | <name>, <unit>, [write/read/rwrite], [(nohshake)/hshake] | Definition of value-based device property

Simple Packet

Field | Format | Description
Property number | integer |
Flag | unsigned | dfLargePacket = 0x80000000, should be unset for simple packet dfHandshake = 0x40000000
Value | double |

Large Packet

Field | Format | Description
Property number | integer, 4bytes |
Flag | unsigned, 4bytes | dfLargePacket = 0x80000000, should be set dfHandshake = 0x40000000
Size | integer, 4bytes | Size of buffer
Buffer | n bytes | Buffer

Index//Top/Spectrometer/List of devices


EasyGPIB Device

Index//Top/Spectrometer/List of devices

EasyGPIB device

Devices that have GPIB interface are typically controlled by string commands (e.g. *RST or *IDN?). In many cases the syntax of these commands is very simple and can be parameterised. Therefore there is no need to create separate drivers for different devices.

EasyGPIB driver serves as an interface between such a devices and SpecMan. The EasyGPIB device can be created in 'Device Configuration' dialog. The hardware wizard is not able to configure properly the EasyGPIB driver's options at a moment. Thus the editing has to be done manually in configuration file.

Assuming that the device name is EG, the configuration file entry (after the configuration of GPIB interface) can look like this:

[EG]
DeviceDLL=EASYGPIB
VISAresName=GPIB0::8
VISATMOValue=1000 ms
VISATimeOut=200 ms
VISAWriteTime=0 ms
VISAReadTime=0 ms
TextWriteProc=
TextReadProc=_A,A_,LFCR
Multithreaded=false

The lines that describe the actions during initialization and deinitialization as well as properties of device has to be added to the end of this text. Refer to the rules for the explanation of wildcards in the command description.

Operation | Entry | Value
Initialization | init[n0] | <any command>
Deinitialization | deinit[n0] | <any command>
Property | par[n0] val[n0] | <any name>, <unit>, [r/w/rw], [sel/val], <write command>,<request command>,<read format> The meaning of additional entry val[n0] is dependent on the 4th argument. if sel then val[n0] = <choice1>, <arg1>, <choice2>, <arg2>, ... Here choice is the string, which will appear in the SpecMan interface and arg is GPIB command that will be sent to device if particular choice is selected. if val then val[n0] = [fu min], [fu max], [fu increment], [fu min_increment]

GPIB commands can have any syntax. The write commands of val type are produced using printf function (printf("<write command>",[f value])), where the value is the one that is specified in the program interface. The write commands of sel type send to device the arg string without any modification. The read commands decode the response using sscanf function (sscanf(string_val, "<read format>",&value)), where string_val is the responce of device and value is the obtained value. (Refer to any help on C programming language, printf or scanf functions format.) The values that used in the program are long float, corresponding format specifier is %lf.

EasyGPIB properties may not me added to transient axes.

Example 1. Two properties, which read data from device.

par0=X, V, r, val, , rest; outr?1, %lf
par1=Y, V, r, val, , outr?2, %lf

Example 2. Two properties, that write to device.

par0=Mode, , w, sel, , ,
val0=Mode 1,MOD1,Mode 2,MOD5
par1=Power, dB, w, val, :POW %5.2lf dB, ,
val1=-30dB, 5dB, 1dB, 0dB

Index//Top/Spectrometer/List of devices

 << >>


Command description convention

Index//Top/Spectrometer/List of devices

 <<

Explanation of Wildcards for Device Settings

Wildcards are coming inside square ([]) or angle (<>) brackets. All other symbols has to be preserved as is. If the symbol of bracket has to be preserved it will be introduced like that: {[} or {<}. In the table below the word explanation can mean any text. The value in the parantheses states the default value.

Wildcard | Description | Example
[n explanation (3)] | Any integer number, 3 is default. | [n] can be -5, 4 etc.
[x explanation (3)] | Any hexadecimal number, 3 is default. | [x] can be 10, 1f etc.
[n0 explanation] | Consequent integer numbers started from 0. | init[n0] can be init0, init1 etc.
[f explanation (3.0)] | Any float number, 3.0 is default. | [f] can be -5.0, 4.0 etc.
[fu explanation] | Any float number with unit. | [fu] can be -5.0 dB, 4.0 dB etc.
[a/b/c/(d)] | Any string out of 'a', 'b', 'c', 'd'. Default value is 'd'. | [w/r/(rw)] can be rw or w or r
<some string> | Any string. | <device name> can be DG

Index//Top/Spectrometer/List of devices

 <<


Demon overview

Index//Top

Demon Overview

Demon controls the sequence of actions, synchronization of different devices and error handling. The algorithm of the Demon is presented in the diagram below.

Index//Top


Pulse engine overview

Index//Top

 >>

Pulse Engine Overview

Device independent part of the program responsible for the generation of pulse sequences is called Pulse Engine. PPL script, PPL variables and Pulse Configuration serve as an input for Pulse Engine. Output of Pulse Engine are an event sequences for each hardware channel of Spectrometer.

Main components of Pulse Engine are:

  • PPL compiler for Pulse Assembler code generation from PPL script.
  • Interpreter of Pulse Assembler code.
  • Pulse former and optimizer.
  • Sequence validity checker.

PPL compiler generates an assembler code one time prior to the execution of experiment. Interpreter, pulse former and sequence checker are executed at every point of experiment if PPL variables are altered.

The parameters of Pulse Engine are stored in the Pulse Configuration, which can be created and edited by Pulse Setup Wizard.

Index//Top

 >>


Pulse assembler

Index//Top/Pulse Engine

SpecMan4EPR Assembler

SpecMan4EPR system of commands allows the program to perform simple mathematical operations on the general use ax register, current time register treg, and the stack. The assembler language also supports memory addressing, conditional statements and jumps. To reduce the length of program, many commands perform a composite actions.

 | Command | Action | Comment
0 | NOP | nop | Empty operation
1 | ADD | add ax, stack; pop stack | Addition
2 | SUB | sub ax, stack; pop stack | Subtraction
3 | MUL | mul ax, stack; pop stack | Multiplication
4 | DIV | div ax, stack; pop stack | Division
5 | IDIV | idiv ax, stack; pop stack | Division with rounding
6 | NEG | inv ax | ax = -ax
7 | AND | and ax, stack; pop stack | Logical AND
8 | OR | or ax, stack; pop stack | Logical OR
9 | LT | lt ax, stack; pop stack | ax = stack < ax ? 1 : 0
10 | LE | le ax, stack; pop stack | ax = stack <= ax ? 1 : 0
11 | EQ | eq ax, stack; pop stack | ax = stack == ax ? 1 : 0
12 | NE | ne ax, stack; pop stack | ax = stack != ax ? 1 : 0
13 | GE | ge ax, stack; pop stack | ax = stack >= ax ? 1 : 0
14 | GT | gt ax, stack; pop stack | ax = stack > ax ? 1 : 0
15 | NOT | not ax | Logical NOT
16 | MOVE_A_ADDR | mov ax, *ax | Move to ax from memory
17 | MOVE_ADDR_A | mov *ax, ax | Move ax to memory
18 | MOVEAX_AX | mov ax, [*ax+stack]; pop stack | Move to ax from memory using offset from stack
19 | PUSH | push ax | Push to stack
20 | POP | pop ax | Pop from stack
21 | JZ | jz | Conditional jump
22 | JNZ | jnz | Conditional jump
23 | JP | jp | Unconditional jump
24 | PARAL_BEGIN | push treg | Push current time to stack
25 | PARAL_END | pop treg | Pop current time from stack
26 | PULSE | treg = treg + pulselength | Pulse command

Index//Top/Pulse Engine

 << >>


Untitled Document

Index//Top/Pulse Engine

Pulse Command

Pulse commands are the major part of the PPL script and the only user interface to the underlying pulse hardware. See PPL Pulse Command topic for command syntax. For convenience of operation, commands are split into patterns. This allows to group functionally similar virtual channels together and avoid patterns with large number of states.

Index//Top/Pulse Engine

 <<


Service Pulse Commands

Index//Top/Pulse Engine

Service Pulse Commands

Service pulse commands have reserved names and typically used for internal purposes of spectrometer. Pulse engine treated them in a special way. The syntax of pulse commands definitions is the same with ordinary commands. Defining of service pulse commands is not obligatory. Including of the definitions into configuration file causing pulse engine to incorporate corresponding action into full pulse sequence. Using of service pulse command in the pulse program (except detect) is not welcomed.

Full pulse sequence consists of pulse sequence produced from PPL and number of service sequences produced by service pulse commands (see Fig.1). Pulse, reptime and eos sequences are repeated according to amount of repetitions specified. Eor sequence finishing the full sequence.

Fig.1. Full pulse sequence.

Name | Description
scope | Scope trigger. Generate trigger synchronously with the chosen pulse of the pulse sequence.. All channels of this command have to be of up or down type. Length have to be specified. Part of sequence.
detect | Acquisition trigger. All channels of this command have to be of up or down type. Length have to be specified. Part of sequence.
reptime | Command to be executed to specify sequence repetition time. See also reptype key in CFP file overview. Channels can be of arbitrary type. If no pulses needed channel type 'space' have to be specified. The length of pulse is calculated as a difference between repetition time and lengths of pulse sequence and eos sequence.
bos | Begin of sequence command. Appears before the sequence. All channels of this command have to be of up, down or space type. Length have to be specified.
eos | End of sequence command. Depending on the eos key (see Pulse Configuration) can appear before or after reptime pulse. All channels of this command have to be of up, down or space type. Length have to be specified.
eor | End of run command. Appears after all repetitions are done and finishing a full pulse sequence. All channels of this command have to be of up or down type.

Index//Top/Pulse Engine

 << >>


Pattern

Index//Top/Pulse Engine

Pattern

Pattern is a group of virtual channels. User can control, whenever events will be generated on channels by defining states. A state contains a list of 'use/do not use' flags for every channel in the pattern. From PPL script any state can be selected. By changing of the current state one can alternate the pulse command behavior. Phase cycling is one of the applications of the pattern states. States are defined in the CFP file.

The lead and trail offsets of all channels of a pattern can be alterated from the GUI by defining the pattern as movable. The ranges of modifications can be controlled. Flexible settings of the protection switch is typical application of movable patterns.

Index//Top/Pulse Engine

 << >>


Virtual channel

Index//Top/Pulse Engine

Virtual Channel

The basic unit of Pulse Engine.
Represents a single (1-bit) output connector of pulse programmator capable to produce number of pulses.

Each virtual channel is mapped to one or many hardware channels or another virtual channel. Maximum number of pulses that channel can generate is equal to the sum of pulse capacities of all hardware channels mapped to it.

Channels are classified by their type, polarity and function. Table below explains how events will be generated when different channel types are selected. The first trace represents events as generated in pulse program. The real events placement will be affected by channel type, lead and trail (also connect and length in some cases) parameters of the channel. In some figures lead and trail are abbreviated to l and t respectively.

Type | Description
Exact | vchan_exact.gif, 1 kB Pulse command will result in two events Up and Dn, no optimization
Connected | vchan_connect.gif, 2 kB Like Exact but two pulses on this channel will be linked together if distance between them will be smaller than parameter connectspace during optimization.
Potential | vchan_potent.gif, 1 kB Pulse command will result in two events Up or two events Down depending on the state of channel in pattern. Potential channel has to have exact value only between this states thus unnecessary changes of the state will be remove by optimization.
Up, Down | vchan_up.gif, 1 kB vchan_dn.gif, 1 kB Pulse command will result in one event (Up or Down correspondingly), if parameter length is bigger than 0 the complementary Down and Up event will be generated after (or before).
UpDown | vchan_updn.gif, 1 kB Pulse command will result in consequent generation of Up and Down events.
Space | Reserves space in pulse sequence which will not be removed by optimization.

Parameters of channel

Parameter | Unit | Description
Lead | s | All pulses of this channel will start on lead seconds later.
Trail | s | All pulses of this channel will stop on trail seconds later.
Length | s | Default pulse length (for Up and Down types only).
Connect space | s | Minimum distance between pulses which will not be connected.(for Connected type only)
Polarity | - | Positive polarity means that sequence of events off-on-off will be generated. The default state of the output is off. Negative polarity will result in on-off-on sequence. The default state of the output is on.

Secuirity Parameters of channel

Parameter | Unit | Description
Maximum length | s | Longest pulse can be made on channel.
Maximum duty cycle | % | Duty cycle that channel can't exceed (100% * (overall pulse length)/(repetition time)).

Virtual channel can work directly with hardware pulses or modify the event sequence of other virtual channel. The only function implemented todate is protection.

Function | Description
Protect | vchan_protect.gif, 2 kB Channel with protection function (master channel) will block pulses on the other channel (dependant channel). In this figure the exact type of virtual channel is depictured (virtual channel can be of any type). Slave channel can be itself master of other channel.

See CFP file for channel parameter's specification.

Index//Top/Pulse Engine

 <<


Pulse

Index//Top/Pulse Engine

 <<

Pulse

The changes of the output state at specific moment of time from OFF to ON and, after some time (pulse duration), back to OFF state.

OFF and ON states are device-dependent.

Index//Top/Pulse Engine

 <<


Configuration files

Index//Top

 >>

Configuration files

SpecMan4EPR has three configurations stored in different files

Description | File Extension
GUI Configuration | *.ini
Devices Configuration | *.cfg
Pulse Engine Configuration | *.cfp

By default the name of the loaded ini file will be chosen equal to the name of SpecMan4EPR executive. File have to be located in the same directory with SpecMan4EPR executive. Otherwise SpecMan4EPR generates default ini file.

Names of Devices Configuration and Pulse Engine Configuration files have to be the same. See help on GUI for the information on loading of configuration files.

Index//Top

 >>


INI file

Index//Top/Configuration files

INI file

INI file is automatically generated by SpecMan4EPR and has settings of the program interface and internal engines. The settings of internal engines are applied only locally, i.e. only when program runs in Server mode. All settings can be modified from Options dialog. It is better to avoid manual modification of this file. By default the ini file that has the same name as SpecMan4EPR executable is loaded. To load arbitrary INI file use -I<file name> switch of command line. To reset INI file to default values delete INI file before the program start.

The content of INI file can be found on the ini tab in the main window.

Example of INI file is listed below.

[dir]
tpldir=E:\Specman\tpl
cfgdir=E:\Specman\cfg
expdir=E:\Boris\

[lastsetup]
cfgfile=E:\Specman\cfg\SpecMan1.cfg

[extensions]

tplext=tpl
expcfg=exp
datcfg=d01
cfgext=cfg
logext=log

[logging]
logfile=E:\SpecMan\Output\SpecMan.log
Log2Window=1
Log2File=0
NotifyImmidiately=0
Priority=3
ShowFlags=5
StopOnError=1
QueueSize=500
filter0=

[autosave]
asavedir=

Index//Top/Configuration files

 << >>


CFG file

Index//Top/Configuration files

Device Configuration (CFG file)

Description of devices connected to SpecMan4EPR is located in CFG file. CFG file has a standard Windows ini-file style. Names of sections and keys are case insensitive. Values in many cases are case sensitive.

CFG file consists of two main parts: spectrometer configuration and device and interface configuration sections.

Spectrometer configuration section [spectrometer] consists of 3 keys.

Key | Value | Description
Configname | string | The name of configuration.
devices | space separated strings | Names of connected devices. All symbols except whitespaces are allowed in the name. Names of devices can be arbitrary.
interfaces | space separated strings | Names of interfaces. Names of interfaces are restricted by the list of supported interfaces

The content of CFG file can be found on the ini tab in the main window. Use Device configuration wizard to browse and modify the device configuration.

Example:

[spectrometer]
configname = Name of the configuration
devices = DG1 DG2 ADC
interfaces =NIVISA

Index//Top/Configuration files

 << >>


Device declaration

Index//Top/Configuration files/Device

 >>

Device declaration

Device configuration section has the same name like one declared in 'devices' key of [spectrometer] section.

'DeviceDLL' is the only obligatory key in this section. The value of this key has to be equal to the name of supported device. (See list of supported devices)

All other keys are device specific and described in the help on particular devices. Information on configuration keys of connected devices can also be received using Config | Device config option in the main menu.

Example:

[DG2]
DeviceDLL=RS690
VISAresName=GPIB::8

Index//Top/Configuration files/Device

 >>


Interfaces declaration

Index//Top/Configuration files/Device

 <<

Interfaces declaration

Interfaces configuration section has the same name like one declared in 'interfaces' key of [spectrometer] section. Interfaces are registered automatically during device addition.

Interfaces have only interface specific declarations inside. (See list of supported interfaces.)

Example:

[NIGPIB]

no keys available until now ...

Index//Top/Configuration files/Device

 <<


CFP file

Index//Top/Configuration files

 <<

Pulse Configuration (CFP file)

CFP file contain full description of pulse commands used for PPL interpreting.

Each pulse command consists of some number of patterns.

Each pattern has virtual channels associated with it.

Finally the virtual channels are mapped to hardware channels.

CFP file has a standard windows ini-file structure. Names of sections and keys are case insensitive. Values in are case sensitive. [general] section of CFP file has a 'Name' key which specifying the name of configuration.

CfP file has specific sections for commands, patterns.

The content of CFP file can be found on the ini tab in the main window. Use Pulse configuration wizard to browse and modify the pulse configuration.

Index//Top/Configuration files

 <<


Pulse command definition

Index//Top/Configuration files/Pulse

 >>

Pulse command definition

Pulse commands are declared in a space separated list in 'Commands' keys of [general] section of CFP file.

Names of pulse commands can be arbitrary however some of names are reserved for the exclusive use of pulse engine. Using of these names and corresponding commands (except detect command) in PPL can cause misbehavior of connected devices.

Reserved command names

  • scope
  • detect
  • reptime
  • bos
  • eos
  • eor

Pulse command definition section has the name of pulse command. Section has one key 'arguments' that declares patterns defined in the command.

Example:

[general]
name = name of pulse config
commands = mwpulse scope

[mwpulse]
arguments = phase

[scope]
arguments = scope

Index//Top/Configuration files/Pulse

 >>


Pattern definition

Index//Top/Configuration files/Pulse

Pattern definition

The list of patterns associated with particular command is located at 'arguments' key of pulse command definition section.

Each patterns has it own definition section with the name produced from command name and pattern name in a form [command_name/pattern_name].

Pattern keys

Key | Value | Description
movable | 0 / 1 | Defines pattern to be movable or not. (See movable pattern definition )
channels | list of hardware-channel | Defines virtual channels associated with the pattern. (See channel definition for more details)
selnumber | int | Defines number of different states pattern has.
default | int | Defines the state which will be selected on default.
ch<0 based number of channel> | comma separated list of 0 /1 or $<bit> | Define the table of states. Number of 'ch' keys equal to number of channels. 0 means OFF state, 1 means ON state. Columns of the table represent the set of all channel state in a pattern. Number of columns has to be smaller or equal to 'selnumber'. Omitted states are assumed to be OFF. Or. Bit in the argument that defines OFF and ON states.

Channel-related keys 'channels' ,'connectspace', 'length', 'dutycycle', 'maxlength' and mapping rules for hardware channels are discussed in channel definition topic.

Example:

[mwpulse]
arguments = phase source

[mwpulse/phase]
channels = a1@RS690, a2@RS690, a3@RS690

default = 0
selnumber = 2
ch0 = 1, 0
ch1 = 0, 1
ch2 = 1, 1

[mwpulse/source]
channels = a5@RS690, a7@RS690, a9@RS690

default = 0
ch0 = $0
ch1 = $1
ch2 = $2

Index//Top/Configuration files/Pulse

 << >>


Moveable pattern definition

Index//Top/Configuration files/Pulse

Movable pattern definition

To define movable pattern key 'movable' of the Pattern definition has to be set to 1. Default value is 0.

Current, minimum and maximum offsets of all pulses in pattern are defined by 'offset', 'offsetmin' and 'offsetmax' keys.

Current, minimum and maximum shifts of all pulses tails in the pattern are defined by 'tail', 'tailmin' and 'tailmax' keys.

Example:

[detect/detect]
channels = a5@RS690
ch0 = 1

movable = 1
tail = 0ns
tailmax =100ns
tailmin = 0ns
offset = 0ns
offsetmax =100ns
offsetmin = 0ns

Index//Top/Configuration files/Pulse

 << >>


Channel definition

Index//Top/Configuration files/Pulse

 <<

Channel definition

Channel definition keys are located in the corresponding pattern definition section.

All channel key's values are comma separated lists of corresponding parameters with number of parameters equal to number of channels. First parameter of each list correspond to first channel, second - to second etc.

'channels' key defines number of channels. All other channel parameters can be omitted and will receive default values.

Key | Value | Description
channels | hardware-channel | Mapping of virtual channels to hardware ones.
type | exact / connected / up / down / updown / space | Virtual channel type. Default value: exact.
leads | time | Default value 0ns.
trails | time | Default value 0ns.
dutycycle | % | Default value 100%.
maxlength | time | Default value 1s.
length | time | Only for up and down types. Defines the length of pulse. Default value 0s - do not make pulses keep only corresponding events.
connectspace | time | Only for connected type. Defines the maximum length between pulses that have to be connected. Default value 0s.

Example:

channels =      [ab@DG1 cd@DG2],        a7@RS690,       a9@RS690
leads  =        1ns,                    0s,             50us
trails =        5ns,                    0s,             -10us
type =          exact,                  connected,      up
dutycicle =     1%,                     5%,             10%
maxlength =     100ns,                  10us,
length =        ,                       ,               60ns
connectspace =  ,                       100 ns,

Index//Top/Configuration files/Pulse

 <<


Prefix

Index//Top

Unit prefixes supported by SpecMan4EPR

Prefix | Symbol | Power of 10
pico- | p | 10-12
nano- | n | 10-9
micro- | u | 10-6
milli- | m | 10-3
kilo- | k | 103
mega- | M | 106
giga- | G | 109

Index//Top


Developer's notes

Index//Top/Spectrometer

 >>

Note 1

Repetition time programming.
There are two different modes of reptime programming: hardware and software. First one is based on the setting of a relevant parameter of some device that can trigger the pulse experiment. Software repetition time can be controlled by creation of the dummy device and assigning rep time value to a Delay parameter in the 'eachpoint' section located on the Setup tab. Software repetition time is very rough and mainly serves for the testing purposes.

Note 2

Terms.
Term 'parameter' stands for output and 'data' for input operations.
Terms 'synchronous/asynchronous' applies to the relation between some process and pulse experiment flow. Example: echo signal detection - synchronous data acquisition; temperature reading - asynchronous data acquisition; per point setting of the magnetic field - synchronous parameter's setting; sweeping magnetic field using start/stop operations - asynchronous parameter's setting.

Note 3

Device driver: parallel executing.
To achieve the parallel executing of different device drivers each driver can have a separate thread. The only function of device driver executed in the thread is DoCommand().
If driver does not need a separate thread it is calling SetMainThread() in constructor. To create independent thread CreateDeviceThread() and DeleteDeviceThread() can be called.
To interact between thread and other functions of driver (which will be executed in the thread of Demon) the command queue is used. Posting of some command to queue using AddCommand() call will finally result in executing of the command. Queue preserves order of commands (FIFO).

Note 4

Device driver: DoCommand().
Device driver can keep some command in the queue as much as needed by setting isProcessed field of the command to false.

Note 5

Device driver: Synchronous/Asynchronous input operations.
If data are synchronous the SyncRead(SProperty *prop, ...) command is sending first. Program expect amount of prop->SetValue() calls equal to hardware repetitions per one SyncRead command. Common practice to have AddCommand() inside SyncRead().
Asynchronous data continuously calling prop->SetValue() at the moment when driver decide. To avoid problem of wrong first points the first time reading is always made synchronously.
To make a synchronous acquisition of asynchronous data program calls GetProperty(). IsDataReady function have to return command is waiting for the execution of all commands made previously.

Limitations.
Sync aquisition assumed to be only on transient axis.

Note 6

Device driver: Synchronous/Asynchronous output operations.
Synchronous parameters set one point at a time using SetProperty().
Asynchronous parameter send all points to device at a time using SetAsyncProperty and then calling SetProperty() in the same way like for synchronous parameters. Is used for: magnetic field sweep - one need to know the sweep direction before the second point appear; or any device with internal memory

Note 7

Variables and namespaces.

  • Variables of outer loops and inner program exist in different namespaces. This means that one can have two independent variables with the same name.

  • External variables of inner program are treated as parameters of calling the inner program. Before the call outer loops set them. Consequence: the change of external variables inside inner loops will not affect setting of this variable during next call.

  • Variable list (that presented to user) consists of external variables of inner program and variables assigned to devices (slow variables).

Index//Top/Spectrometer


Driver functions

Index//Top/Spectrometer

 <<

Driver functions

All hardware driver classes are descendants from SDevice class. All functions discussed in this section are virtual functions of SDevice class.

To add new functionality to the driver one need to override virtual functions. In some cases one have to keep functionality of base class by direct call of base class functions.

Driver has 5 group of functions

  • Driver information and GUI interface
  • Driver configuration
  • Input/Output
  • Pulse functions
  • Execution

Driver information

Function | Description
Info | Used by GUI to provide information about device state and functionality.
GetDirectControls | Override this function if driver has a user interface.

Driver configuration

Function | Description
StartSetup | Starting device preparation for the new experiment. Calling of base function is necessary.
ConnectAcquisition | Appears in between of StartSetup and EndSetup function. Defines acquisition streams, their type and size. Cause asynchronous read properties to start data reading. Base function makes assignment of acquisition streams to device properties and thus has to be called.
EndSetup | Finishing device preparation to the new experiment.
Reset | Clean up procedure. Base function has to be called.

These functions may be overridden only if device has properties. Although in most cases the functionality of base class is sufficient.

Input/output

Function

Description

SetProperty

Do additional action during posting command to the queue. Base function may be called. Write to device action caused by SetProperty have to be executed immediately.

SetAsyncProperty

All points will be sent by consequent calls to this function at one time. Device can stores them to array of values to use later. No immediate execution of any point setup is expected. SetProperty uses as a synchronization (value of parameter in SetProperty will be anyway correct). Used for information to let device know the whole range of data or if all data have to be programmed at one time.

GetProperty

Do additional action during posting command to the queue. Base function may be called. Read from device action caused by GetProperty have to be executed immediately.

SyncRead

Inform device that data acquisition can be started. When data acquisition will finish IsDataReady have to return positive result. Actual reading can be started later by any internal or external cause typically by external trigger.

SyncRead function is always called from transient axis. Amount of point of point expected to set after function is TransientSize in a case of Transient and 1 in a case of Integrated options.

IsDataReady

Confirm receiving of data.

These functions have to be override only if device has pulse capabilities

Pulse functions

Function | Description
StartOfProgramming | Beginning of pulse sequence programming. Base function has to be called.
Pulse | Building of pulse sequence. No hardware programming may be done. Base function is checking the input and can be useful.
SetRepetitionTime | Appears just before EndOfProgramming . Override this function to do additional setup of repetition time. Base function may be called.
EndOfProgramming | Sequence hardware programming have to be done here.
Trigger | Allow device to start pulsing or receive external trigger.

DoExecute function executes in the separate thread independently from all other functions. Communication with this function is made using command queue.

Only one command at a time at the order of loading is executed. Internal SDevice class engine provide a support for command queue. Direct access to queue is forbidden.

All time consuming programming and actual hardware access have to be done in DoExecute function.

This allow to keep right sequence of commands and allow program execute all time consuming processes simultaneously.

Execution

Function | Description
DoExecute | The only function that executes inside device thread. Do here all procedures that have to be run in parallel to other threads.

Index//Top/Spectrometer

 <<


Driver programming

Index//Top/Spectrometer

Driver programming

Index//Top/Spectrometer

 << >>


List of supported interfaces

National instruments
VISA (value NIVISA)
GPIB (value EMVISA)
DAQ (value NIDAQ)
ACQIRIS (value ACQIRIS)


Comments

Index//Top/PPL

Comments

Comments are pieces of text used to annotate a program. Comments are for the programmer's use only; they are stripped from the source text before parsing.

PPL allows a single-line comment using two adjacent percent signs (%%). The comment can start in any position, and extends until the next new line.

Example:

mwpulse 45 ns     %% Comment started here

Index//Top/PPL

 << >>


Tokens

Index//Top/PPL

Tokens

Tokens are word-like units recognized by a language. SpecMan recognizes five classes of tokens.

Here is the formal definition of a token:

  • keyword

  • identifier
  • c onstant
  • operator
  • separators

As the source code is scanned, tokens are extracted in such a way that the longest possible token from the character sequence is selected.

Index//Top/PPL

 << >>


Type specifiers

Index//Top/PPL/Keywords

Type specifiers

  • bool
  • int
  • real
  • time

Index//Top/PPL/Keywords


Whitespace

Index//Top/PPL

Whitespace

Whitespace is the collective name given to spaces (blanks), horizontal and vertical tabs, newline characters, and comments. Whitespace can serve to indicate where tokens start and end, but beyond this function, any surplus whitespace is discarded. For example, the two sequences

time tau mwpulse 45 ns

and

time tau
     mwpulse 45 ns

are lexically equivalent

Index//Top/PPL

 << >>


hardware channel

Index//Top/Pulse Engine

Hardware Channel

Syntax

Single channel: name_of_channel@device_alias
Combined channels: [hardware_channel1 hardware_channel2 hardware_channel3 ...]

Single (1-bit) output of a real device that can be in one of two (ON or OFF) states at a time.

Characteristics of OFF and ON states are device-dependent.

Pulse capacity of hardware channel is the amount of pulses it can generate. Pulse capacity of the virtual channel can be increased by multiplexing hardware channel into one combined output.

Index//Top/Pulse Engine

 << >>