Tutorial 3: Manual Operation#

In this tutorial chapter, we will learn basic usage and configuration of generic nodes for manually-operated instruments.

Preparation#

Before starting this, install the library and dependencies.

It is recommended to finish Tutorial 1: Communication and Tutorial 2: Basic Measurement before this.

Find the examples/manual_op directory in the mahos repository. We will use the files in it for this tutorial. You can copy this directory to somewhere in your computer if you want.

Running the mock#

In a terminal, mahos log to show log messages. In another terminal, run all the nodes defined in our conf.toml by command mahos launch. You will see several GUI windows popping out. These windows correspond to generic measurement nodes explained below.

Tweaker#

Tweaker is a generic node for manual-tuning of instrument parameters.

To use the Tweaker, instrument must provide Dynamic interface using ParamDict, which is the counterpart to Static interface using InstrumentInterface explained in Tutorial 2: Basic Measurement. In this example, the VoltageSource_mock class is implemented to be used via Tweaker. The get_param_dict() method is called when Tweaker starts and when Read request is issued (Read button is pressed). The instrument class can tell the available parameters, current values, bounds, etc. to the Tweaker. Then Write request is issued (Write button is pressed), the configure() method of the instrument is invoked with the modified parameter. The ParamDict labels for these requests are defined inside param_dicts of Tweaker configuration in the form <instrument name>::<ParamDict label name>. The successful write operation is confirmed in the log message (Dummy voltage at chX …).

In addition to this configuration feature, Tweaker provides interfaces to start(), stop() and reset() APIs for each instrument. The successful start / stop operations are confirmed in the log message (Set output chX on/off). The reset operation fails (but it is not a problem) because reset() method is not implemented in VoltageSource_mock.

PosTweaker#

PosTweaker is a generic node for manual-tuning of positioners. Its role is similar to Tweaker, but PosTweaker has dedicated interface and GUI for positioners.

In this example, two Positioner_mock instances, pos_x and pos_y, are configured. You can operate PosTweaker GUI and check if it works in the log message (Dummy move / homing etc.).

Recorder#

Recorder is a generic node for recording of time-series data from instruments.

To use Recorder, instrument must implement following APIs: get_param_dict_labels(), get_param_dict(), configure(), start(), stop(), get("unit"), and get("data"). In this example, the Multimeter_mock class is implemented to demonstrate Recorder’s feature. The mock instrument provides two different configurations labeled voltage and current. The mode block of the Recorder configuration defines which label (mode of instrument) is used, as below.

[localhost.recorder.mode.voltage]
meter_voltage = ["meter", "voltage"]
[localhost.recorder.mode.current]
meter_current = ["meter", "current"]

The first two lines define a recorder mode “voltage” with single measurement value named “meter_voltage”, which corresponds to instrument “meter” and label “voltage”. The last two lines define the other mode using “current” label instead.

After sending Start request (pushing Start button), you can see the measurement values (random values) are collected.