diff --git a/Python_script/MeasurementPlot.py b/Python_script/MeasurementPlot.py
index fd9fb2ed06f34d39a05451a47cb88e87709d1967..4a8dd660525c4358d27381dc473cd36dbcbb78a8 100644
--- a/Python_script/MeasurementPlot.py
+++ b/Python_script/MeasurementPlot.py
@@ -11,8 +11,10 @@ class PlottingError(Exception):
     pass
 
 class MeasurementPlot:
-    def __init__(self, title='', trace_subplot5 ='', legend_loc = 'upper left',\
+    def __init__(self, reference_signal_names, title='', trace_subplot5 ='', legend_loc = 'upper left',\
                  legend_bbox_to_anchor = (1.09, 1)):
+        self.reference_signal_names = reference_signal_names
+
         # set python for opening an separate plot window when starting from anaconda
         if 'ipykernel' in sys.modules:
             from IPython import get_ipython
@@ -29,28 +31,28 @@ class MeasurementPlot:
         self.fig.subplots_adjust(bottom= 0.1, right=0.8, hspace = 0.4)
         self.fig.suptitle("Measurement "+title, color="red")
 
-        # First plot: Phase and magnitude
-        self.path_collection_phase = self.ax1[0].scatter([], [], c='red', marker='<', label='DUT Phase')
+        # First plot: signal0 and signal1
+        self.path_collection_signal0 = self.ax1[0].scatter([], [], c='red', marker='<', label=reference_signal_names[0])
         self.path_collection_fit = self.ax1[0].scatter([], [], c='green', marker='.', label = ' ')
-        self.magnitude_axis = self.ax1[0].twinx()
+        self.signal1_axis = self.ax1[0].twinx()
         
-        self.path_collection_mag = self.magnitude_axis.scatter([], [], c='#3120E0', marker='4', label='DUT Magnitude')
+        self.path_collection_signal1 = self.signal1_axis.scatter([], [], c='#3120E0', marker='4', label=reference_signal_names[1])
         self.equi_axis0 = self.ax1[0].twinx()
         self.equi_axis0.spines['right'].set_position(('outward', 75))
         self.path_collection_equi0 = self.equi_axis0.scatter([], [], c='black', marker=".", label='Equilibrium_Indicator')
 
         self.ax1[0].set_xlabel("TIMESTAMP")
-        self.ax1[0].set_ylabel("PHASE [°]", color='red')
-        self.magnitude_axis.set_ylabel("MAGNITUDE [dB]", color='#3120E0')
+        self.ax1[0].set_ylabel(reference_signal_names[0], color='red')
+        self.signal1_axis.set_ylabel(reference_signal_names[1], color='#3120E0')
         self.equi_axis0.set_ylabel("INDICATOR VALUE", color='black')
         # fix range to 0..31 with some extra margin for plotting
         self.equi_axis0.set_ylim(-1, 32)
 
         self.ax1[0].grid(True, linestyle=":")
-        all_path_collections = [self.path_collection_phase, self.path_collection_mag,
+        all_path_collections = [self.path_collection_signal0, self.path_collection_signal1,
                                 self.path_collection_equi0, self.path_collection_fit]
         labels = [pc.get_label() for pc in all_path_collections]
-        self.phase_legend = self.ax1[0].legend(all_path_collections, labels, loc=self.legend_loc,
+        self.signal0_legend = self.ax1[0].legend(all_path_collections, labels, loc=self.legend_loc,
                                                bbox_to_anchor=self.legend_bbox_to_anchor)
             
         ax = self.fig.axes
@@ -150,18 +152,18 @@ class MeasurementPlot:
         self.ax1[3].set_xlim(minimum, maximum)
         self.ax1[4].set_xlim(minimum, maximum)
 
-        # refresh data for phase in subplot for phase and magnitude 
-        phases = data_frame.S21_PHASE
-        minimum, maximum = self.get_extended_min_max(phases)
+        # refresh data for signal0 in subplot for signal0 and signal1
+        signal0 = data_frame[self.reference_signal_names[0]]
+        minimum, maximum = self.get_extended_min_max(signal0)
         self.ax1[0].set_ylim(minimum, maximum)
-        self.path_collection_phase.set_offsets(np.c_[timestamps, phases])
+        self.path_collection_signal0.set_offsets(np.c_[timestamps, signal0])
         self.path_collection_fit.set_offsets(np.c_[[], []])
 
-        # refresh data for magnitude in subplot for phase and magnitude
-        magnitudes = data_frame.S21_MAGNITUDE
-        minimum, maximum = self.get_extended_min_max(magnitudes)
-        self.magnitude_axis.set_ylim(minimum, maximum)
-        self.path_collection_mag.set_offsets(np.c_[timestamps, magnitudes])
+        # refresh data for signal1 in subplot for signal0 and signal1
+        signal1s = data_frame[self.reference_signal_names[0]]
+        minimum, maximum = self.get_extended_min_max(signal1s)
+        self.signal1_axis.set_ylim(minimum, maximum)
+        self.path_collection_signal1.set_offsets(np.c_[timestamps, signal1s])
 
         # refresh data for chamber temperature in subplot for chamber temperature and humidity  
         temperatures = data_frame.READBACK_TEMPERATURE
@@ -296,7 +298,7 @@ if __name__ == '__main__':
     # logger_sens
     # heater_dut_chamber
     
-    m = MeasurementPlot(trace_subplot5="chamber_sens")
+    m = MeasurementPlot(['S21_PHASE', 'S21_MAGNITUDE'], trace_subplot5="chamber_sens")
     plt.ion()
     measurements = []
 
diff --git a/Python_script/PostPlot.py b/Python_script/PostPlot.py
index 3c185ad153ffa8ecb18f25aaace8855ecea3865e..5ff91d6bb8f4bf94eed4ecc0f933c2adc954a27d 100644
--- a/Python_script/PostPlot.py
+++ b/Python_script/PostPlot.py
@@ -11,20 +11,22 @@ class PostPlot:
     data taking sequence.
     Optionally, correlation and regression can be calculated and plotted.
     """
-    def __init__(self, trace_subplot5='', legend_loc='upper left', legend_bbox_to_anchor=(1.09, 1)):
+    def __init__(self, reference_signal_names, trace_subplot5='', legend_loc='upper left', legend_bbox_to_anchor=(1.09, 1)):
         # set python for opening an separate plot window
         if 'ipykernel' in sys.modules:
             from IPython import get_ipython
             get_ipython().run_line_magic('matplotlib', 'qt')
         
-        self.measplot = MeasurementPlot(trace_subplot5=trace_subplot5,
+        self.measplot = MeasurementPlot(reference_signal_names, trace_subplot5=trace_subplot5,
                                         legend_loc=legend_loc, legend_bbox_to_anchor=legend_bbox_to_anchor)
         
         self.legend_loc = legend_loc
         self.legend_bbox_to_anchor = legend_bbox_to_anchor
         
         # set parameter figure of class to object parameter figure
-        self.fig = self.measplot.fig 
+        self.fig = self.measplot.fig
+
+        self.reference_signal_names = reference_signal_names
     
     # read csv-file and import data to data frame
     def import_csv(self, csv_file):
@@ -65,7 +67,7 @@ class PostPlot:
         self.measplot.draw(postplot_data_frame, pdf_name='')
         
         # cal PK2PK values of magnitude and phase 
-        PK2PK = self.calc_mag_phase_pkpk_values(postplot_data_frame)
+        PK2PK = self.calc_pkpk_values(postplot_data_frame)
 
         self.edit_annotation_in_plot(annotate_string=PK2PK)
         
@@ -74,15 +76,16 @@ class PostPlot:
         self.measplot.annotation.set_text(annotate_string)
         self.measplot.annotation.set_fontsize(anno_fontsize)
 
-    def calc_mag_phase_pkpk_values(self, data_frame):
+    def calc_pkpk_values(self, data_frame):
         
-        # calc PK2PK values of magnitude and phase
-        delta_phase = max(data_frame.S21_PHASE) - min(data_frame.S21_PHASE)
-        delta_magnitude = max(data_frame.S21_MAGNITUDE) - min(data_frame.S21_MAGNITUDE)
+        # calc PK2PK values of the two reference signals
+        delta0 = max(data_frame[self.reference_signal_names[0]]) - min(data_frame[self.reference_signal_names[0]])
+        delta1 = max(data_frame[self.reference_signal_names[1]]) - min(data_frame[self.reference_signal_names[1]])
         
         # generate text for annotation in first subplot
-        delta_vals_string = "$\Delta\phi$($S_{21PkPk}$): %.3f °\n$\Delta$|$S_{21PkPk}$|: %.3f dB"  \
-            % (delta_phase, delta_magnitude)
+        # FIXME: This used to contain units. We will need some 'pretty printing' values for the nanes
+        delta_vals_string = ('$\Delta_{PkPk}$'+self.reference_signal_names[0]+': '+str(delta0)+'\n$\Delta_{PkPk}$'+
+                             self.reference_signal_names[1]+': '+str(delta1))
             
         return delta_vals_string
        
diff --git a/Python_script/analysis.py b/Python_script/analysis.py
index 1bfdd9a4d09900174e9639cac76bcd9e57930053..21249a16703567cfc689f4da9d46a3cb0e574cf5 100644
--- a/Python_script/analysis.py
+++ b/Python_script/analysis.py
@@ -3,21 +3,23 @@ import matplotlib.pyplot as plt
 import numpy as np
 from matplotlib import gridspec
 
-def extract_stable_data(datafile, measurement_set):
+def extract_stable_data(datafile, measurement_set, reference_signal_names):
     datapoint = {}
     # df is a pandas data frame
     df = pd.read_csv(datafile)
 
     # extract phase mean and variance for stable measurements (don't ask what loc means)
-    phases = df.loc[(df['EQUILIBRIUM_INDICATOR'] == 31) & (df['SET_NAME'] == measurement_set), 'S21_PHASE']
-    if phases.size == 0:
+    signal0 = df.loc[(df['EQUILIBRIUM_INDICATOR'] == 31) & (df['SET_NAME'] == measurement_set),
+                     reference_signal_names[0]]
+    if signal0.size == 0:
         return None
-    datapoint['phase_mean']=phases.mean()
-    datapoint['phase_var']=phases.var()
+    datapoint['signal0_mean']=signal0.mean()
+    datapoint['signal0_var']=signal0.var()
 
-    magnitudes = df.loc[(df['EQUILIBRIUM_INDICATOR'] == 31) & (df['SET_NAME'] == measurement_set), 'S21_MAGNITUDE']
-    datapoint['magnitude_mean'] = magnitudes.mean()
-    datapoint['magnitude_var'] = magnitudes.var()
+    signal1 = df.loc[(df['EQUILIBRIUM_INDICATOR'] == 31) & (df['SET_NAME'] == measurement_set),
+                     reference_signal_names[1]]
+    datapoint['signal1_mean'] = signal1.mean()
+    datapoint['signal1_var'] = signal1.var()
 
     temperatures = df.loc[(df['EQUILIBRIUM_INDICATOR'] == 31) & (df['SET_NAME'] == measurement_set), 'READBACK_TEMPERATURE']
     datapoint['temperature_mean'] = temperatures.mean()
@@ -31,17 +33,17 @@ def extract_stable_data(datafile, measurement_set):
 
 
 # sweep_type is either 'temperature' or 'humidity'
-def plot_sweep(temperatures, humidities, basename, sweep_type, measurement_sets):
+def plot_sweep(temperatures, humidities, basename, sweep_type, measurement_sets, reference_signal_names):
     set_data = {}
     for measurement_set in measurement_sets:
-        set_data[measurement_set] = {'phases': [], 'phase_vars': [], 'magnitudes': [], 'magnitude_vars': [],
+        set_data[measurement_set] = {'signal0_means': [], 'signal0_vars': [], 'signal1_means': [], 'signal1_vars': [],
                                      'x_data': []}
 
     for temp, hum in zip(temperatures, humidities):
         datafile = basename+'_'+str(temp)+'deg_'+str(hum)+'rh.csv'
         print(datafile)
         for measurement_set in measurement_sets:
-            datapoint = extract_stable_data(datafile, measurement_set)
+            datapoint = extract_stable_data(datafile, measurement_set, reference_signal_names)
             if datapoint is None:
                 continue
 
@@ -53,10 +55,10 @@ def plot_sweep(temperatures, humidities, basename, sweep_type, measurement_sets)
             else:
                 raise Exception('Unknown sweep_type:'+str(sweep_type))
 
-            data['phases'].append(datapoint['phase_mean'])
-            data['phase_vars'].append(datapoint['phase_var'])
-            data['magnitudes'].append(datapoint['magnitude_mean'])
-            data['magnitude_vars'].append(datapoint['magnitude_var'])
+            data['signal0_means'].append(datapoint['signal0_mean'])
+            data['signal0_vars'].append(datapoint['signal0_var'])
+            data['signal1_means'].append(datapoint['signal1_mean'])
+            data['signal1_vars'].append(datapoint['signal1_var'])
 
     #fig = plt.figure()
     #gs = fig.add_gridspec(2, 1, hspace=0)
@@ -76,15 +78,15 @@ def plot_sweep(temperatures, humidities, basename, sweep_type, measurement_sets)
 
     for measurement_set in measurement_sets:
         ax1.errorbar(set_data[measurement_set]['x_data'],
-                     set_data[measurement_set]['phases'], set_data[measurement_set]['phase_vars'],
+                     set_data[measurement_set]['signal0_means'], set_data[measurement_set]['signal0_vars'],
                      label=measurement_set, marker='+', linewidth=0)
-    ax1.set_ylabel('S21 phase [deg]')
+    ax1.set_ylabel(reference_signal_names[0])
 
     for measurement_set in measurement_sets:
         ax2.errorbar(set_data[measurement_set]['x_data'],
-                     set_data[measurement_set]['magnitudes'], set_data[measurement_set]['magnitude_vars'],
+                     set_data[measurement_set]['signal1_means'], set_data[measurement_set]['signal1_vars'],
                      label=measurement_set, marker='+', linewidth=0)
-    ax2.set_ylabel('S21 magnitude [dB]')
+    ax2.set_ylabel(reference_signal_names[1])
 
     # Remove the highest tick label from the lower subplot. It probably overlaps with the lowest one of the upper plot.
     yticks = ax2.yaxis.get_major_ticks()
@@ -103,4 +105,4 @@ def plot_sweep(temperatures, humidities, basename, sweep_type, measurement_sets)
 if __name__ == '__main__':
     print('run \'./prototype.py -t first_tempsweep.txt -p -o tempsweep1\' to get the data needed for this plot.' )
     plot_sweep(np.arange(25., 31.+1.), [35.]*7, 'tempsweep1', 'temperature',
-               ['1.3GHz', '1.0GHz', '3.0GHz', '6.0GHz', '10.0GHz'])
+               ['1.3GHz', '1.0GHz', '3.0GHz', '6.0GHz', '10.0GHz'], ['S21_PHASE', 'S21_MAGNITUDE'])
diff --git a/Python_script/climate-lab-gui.py b/Python_script/climate-lab-gui.py
index 3f58f3e1cecdc0392ee723b4f8b935679d33e1f1..8027d2462f4d3284085ba66343e30c09ddadc848 100755
--- a/Python_script/climate-lab-gui.py
+++ b/Python_script/climate-lab-gui.py
@@ -85,10 +85,11 @@ class TestStandMainWindow(QMainWindow):
                 for t in temperatures:
                     temp_extensions.append(str(t) + 'deg_' + str(self.fixedParameter.value()) + 'rh')
                 analysis.plot_sweep(temperatures, [self.fixedParameter.value()] * len(temperatures), output_basename,
-                                    'temperature', meas.dut.get_measurement_set_names())
+                                    'temperature', meas.dut.get_measurement_set_names(),
+                                    meas.dut.get_dut_reference_signal_names())
                 
                 prototype.plot_output(output_basename, temp_extensions, True, config_data, ext_sensor_channels,
-                                      meas.dut.get_measurement_set_names(),
+                                      meas.dut.get_measurement_set_names(), meas.dut.get_dut_reference_signal_names(),
                                       output_basename + ': Temperature sweep ' + str(temperatures[0]) + '--' +
                                       str(temperatures[-1]) + ' degC @ ' + str(self.fixedParameter.value()) + ' % r.h.')
 
@@ -101,10 +102,11 @@ class TestStandMainWindow(QMainWindow):
                 for h in humidities:
                     hum_extensions.append(str(self.fixedParameter.value()) + 'deg_' + str(h) + 'rh')
                 analysis.plot_sweep([self.fixedParameter.value()] * len(humidities), humidities, output_basename,
-                                    'humidity', meas.dut.get_measurement_set_names())
+                                    'humidity', meas.dut.get_measurement_set_names(),
+                                    meas.dut.get_dut_reference_signal_names())
                                 
                 prototype.plot_output(output_basename, hum_extensions, True, config_data, ext_sensor_channels,
-                                      meas.dut.get_measurement_set_names(),
+                                      meas.dut.get_measurement_set_names(), meas.dut.get_dut_reference_signal_names(),
                                       output_basename + ': Humidity sweep ' + str(humidities[0]) + '--' +
                                       str(humidities[-1]) + ' % r.h. @ ' + str(self.fixedParameter.value()) + ' degC')
 
@@ -114,6 +116,7 @@ class TestStandMainWindow(QMainWindow):
                                                                             self.measurementFile.text()))
                     prototype.plot_output(output_basename, range(n_measurements), True, config_data, ext_sensor_channels,
                                           meas.dut.get_measurement_set_names(),
+                                          meas.dut.get_dut_reference_signal_names(),
                                           output_basename)
                 except FileNotFoundError as e:
                     QtWidgets.QMessageBox.warning(self, 'Warning', str(e))
diff --git a/Python_script/delay_stage.map b/Python_script/delay_stage.map
new file mode 100644
index 0000000000000000000000000000000000000000..68daa88209fc68311d81df13247e5a4479fd82e9
--- /dev/null
+++ b/Python_script/delay_stage.map
@@ -0,0 +1,3 @@
+RB_ENCODER  1 0 4 0
+POSITION_SP 1 4 4 0
+SPEED       1 8 4 0
diff --git a/Python_script/deviceaccess_measurement.py b/Python_script/deviceaccess_measurement.py
new file mode 100644
index 0000000000000000000000000000000000000000..31493e72263713edf5b62089f1777578a7e61a7c
--- /dev/null
+++ b/Python_script/deviceaccess_measurement.py
@@ -0,0 +1,44 @@
+
+import dut_measurement
+import deviceaccess
+import numpy
+
+
+class DeviceAccessMeasurement(dut_measurement.DutMeasurement):
+    def __init__(self, config_data):
+
+        self.deltas = config_data['deltas']
+
+        deviceaccess.setDMapFilePath(config_data['dmap_file'])
+        self.device = deviceaccess.Device(config_data['device_alias'])
+        self.device.open()
+
+        self.reference_signal_names = config_data['reference_signals']
+
+        self.accessors = {}
+        for signal_name, register_path in config_data['signals'].items():
+            self.accessors[signal_name] = self.device.getScalarRegisterAccessor(numpy.double, register_path)
+
+    def get_dut_measurements(self, set_name):
+        retval = {}
+
+        for name, accessor in self.accessors.items():
+            accessor.read()
+            retval[name] = accessor[0]
+        retval['SET_NAME'] = 'default'
+        return retval
+
+    def get_dut_signal_names(self):
+        retval = list(self.accessors.keys())
+        retval.append('SET_NAME')
+        return retval
+
+
+    def get_dut_reference_signal_names(self):
+        return self.reference_signal_names
+
+    def get_dut_max_delta_signals(self):
+        return self.deltas
+
+    def get_measurement_set_names(self):
+        return ['default']
diff --git a/Python_script/devices.dmap b/Python_script/devices.dmap
new file mode 100644
index 0000000000000000000000000000000000000000..7ebc8687f439098c472be133e063419448b8c7f1
--- /dev/null
+++ b/Python_script/devices.dmap
@@ -0,0 +1,3 @@
+@LOAD_LIB /usr/lib/x86_64-linux-gnu/libChimeraTK-DeviceAccess-DoocsBackend.so
+delay_stage (sharedMemoryDummy?map=delay_stage.map)
+#delay_stage (doocs?/MY_FACILITY/MY_DEVICE/MY_LOCATION)
diff --git a/Python_script/prototype.py b/Python_script/prototype.py
index 13354cdd0493c8a0a1d8f9bec7f12c5b1fb3c537..7f0faf83b3502a265314933a8305853ae3ce01a7 100755
--- a/Python_script/prototype.py
+++ b/Python_script/prototype.py
@@ -7,6 +7,7 @@ import pandas as pd
 import matplotlib.pyplot as plt
 import climate_chamber
 import vna_measurement
+import deviceaccess_measurement
 import virtual_time
 import json
 import MeasurementPlot
@@ -62,6 +63,8 @@ class Measurements:
         # FIXME: Do we want a factory function for the DUTs?
         if config_data['dut']['type'] == 'VNA':
             self.dut = vna_measurement.VnaMeasurement(config_data['dut'], target_accuracy)
+        elif config_data['dut']['type'] == 'DeviceAccess':
+            self.dut = deviceaccess_measurement.DeviceAccessMeasurement(config_data['dut'])
         else:
             raise Exception('Unknown DUT type: '+config_data['dut']['type'])
 
@@ -80,7 +83,8 @@ class Measurements:
 
         self.postplot_obj = None
         
-        self.measurement_plot = MeasurementPlot.MeasurementPlot(trace_subplot5=config_data['trace_subplot5'])
+        self.measurement_plot = MeasurementPlot.MeasurementPlot(self.dut.get_dut_reference_signal_names(),
+                                                                trace_subplot5=config_data['trace_subplot5'])
         self.data_collection_for_online_plot = []
 
     def perform_measurements(self, sweep_file):
@@ -373,14 +377,14 @@ class Measurements:
 
 
 def plot_output(output_basename, measurements_appendices, show_blocking_plot, config_data, ext_sens_data,
-                measurement_set_names, title=''):
+                measurement_set_names, reference_signal_names, title=''):
     
     time_unit = str(config_data['time_unit'])
 
     list_of_frames = []
     storepath = os.path.join(os.getcwd(), 'PostPlots')
 
-    post_plot = PostPlot.PostPlot(trace_subplot5=config_data['trace_subplot5'])
+    post_plot = PostPlot.PostPlot(reference_signal_names, trace_subplot5=config_data['trace_subplot5'])
     for index, m in enumerate(measurements_appendices):
         measurement_name = output_basename+'_'+str(m)
         list_of_frames.append(pd.read_csv(measurement_name+'.csv'))
@@ -398,7 +402,7 @@ def plot_output(output_basename, measurements_appendices, show_blocking_plot, co
     if show_blocking_plot:
         plt.ioff()
     
-    plot = MeasurementPlot.MeasurementPlot(title = title, trace_subplot5 = \
+    plot = MeasurementPlot.MeasurementPlot(reference_signal_names, title = title, trace_subplot5 = \
                                            config_data['trace_subplot5'] )
     plot.draw(combined_data_frame, output_basename + '_graph.pdf')
 
@@ -466,7 +470,7 @@ if __name__ == '__main__':
         if args.file:
             n_measurements = mes.perform_measurements(args.file)
             plot_output(output_basename, range(n_measurements), args.plot, config_data, ext_sensor_channels,
-                        mes.dut.get_measurement_set_names(), output_basename)
+                        mes.dut.get_measurement_set_names(), mes.dut.get_dut_reference_signal_names(), output_basename)
         if args.temperaturesweepfile:
             temperatures, humidity = run_temperature_sweep_from_file(args.temperaturesweepfile, mes)
             # run analysis here
@@ -474,9 +478,9 @@ if __name__ == '__main__':
             for t in temperatures:
                 temp_extensions.append(str(t)+'deg_'+str(humidity)+'rh')
             analysis.plot_sweep(temperatures, [humidity]*len(temperatures), output_basename, 'temperature',
-                                mes.dut.get_measurement_set_names())
+                                mes.dut.get_measurement_set_names(), mes.dut.get_dut_reference_signal_names())
             plot_output(output_basename, temp_extensions, args.plot, config_data, ext_sensor_channels,
-                        mes.dut.get_measurement_set_names(),
+                        mes.dut.get_measurement_set_names(), mes.dut.get_dut_reference_signal_names(),
                         output_basename + ': Temperature sweep ' +
                         str(temperatures[0]) + ' degC to ' + str(temperatures[-1]) + ' degC')
     finally:
diff --git a/Python_script/test_stand_parameter.json b/Python_script/test_stand_parameter.json
index 56a0a242c6f0563cdb841ef01785aa562abb9070..dc0e5a7f42d96e60025aebe7c5e1ae4fafd60d35 100644
--- a/Python_script/test_stand_parameter.json
+++ b/Python_script/test_stand_parameter.json
@@ -5,6 +5,7 @@
     "type": "VNA",
     "delta_mag": 0.13,
     "delta_phase": 1.5,
+    "reference_signals" : ["S21_PHASE", "S21_MAGNITUDE"],
     "frequencies": [1300000000, 1000000000, 3000000000, 6000000000, 10000000000],
     "vna_ip": "mskzna43-lab",
     "vna_config_file": "CalSetup2.znxml"
diff --git a/Python_script/test_stand_parameters_deviceaccess.json b/Python_script/test_stand_parameters_deviceaccess.json
new file mode 100644
index 0000000000000000000000000000000000000000..1e43ea3154eafbb0c851099a37ee83d8dc3f5a27
--- /dev/null
+++ b/Python_script/test_stand_parameters_deviceaccess.json
@@ -0,0 +1,25 @@
+{
+  "delta_temp": 0.1,
+  "delta_hum": 1,
+  "dut": {
+    "type": "DeviceAccess",
+    "deltas": [0.13,  1.5],
+    "reference_signals" : ["encoder_position","target_position"],
+    "FIXME_dmap_file" : "FIXME has to be absolute path at the moment FIXME",
+    "dmap_file" : "/home/killenb/climate-lab-test-stand/Python_script/devices.dmap",
+    "device_alias": "delay_stage",
+    "signals" : {
+      "encoder_position" : "RB_ENCODER",
+      "target_position" : "POSITION_SP",
+      "speed": "SPEED"
+    }
+  },
+  "sleep_time": 10,
+  "chamber_ip": "localhost",
+  "instr_chamber_ip": "localhost",
+  "data_folder": "measurements",
+  "logger_ip": "localhost",
+  "time_unit": "min",
+  "trace_subplot5": "logger_sens",
+  "logger_model": "710"
+}
diff --git a/Python_script/vna_measurement.py b/Python_script/vna_measurement.py
index f6be59999fc699928af16d8b665f5b6fa532e91e..3a80d112c9d5d324295413b852c6f5117d05e7eb 100644
--- a/Python_script/vna_measurement.py
+++ b/Python_script/vna_measurement.py
@@ -12,6 +12,7 @@ class VnaMeasurement(dut_measurement.DutMeasurement):
     def __init__(self, config_data, target_accuracy):
         self.delta_mag = config_data['delta_mag']
         self.delta_phase = config_data['delta_phase']
+        self.reference_signal_names = config_data['reference_signals']
 
         self.vna = VNA.create_vna(config_data['vna_ip'], target_accuracy)
 
@@ -68,7 +69,7 @@ class VnaMeasurement(dut_measurement.DutMeasurement):
                 'S12_PHASE', 'S21_MAGNITUDE', 'S21_PHASE', 'S22_MAGNITUDE', 'S22_PHASE', 'SET_NAME']
 
     def get_dut_reference_signal_names(self):
-        return ['S21_MAGNITUDE', 'S21_PHASE']
+        return self.reference_signal_names
 
     def get_dut_max_delta_signals(self):
         return [self.delta_mag, self.delta_phase]