ElectrometerController

class lsst.ts.electrometer.ElectrometerController(csc, log=None)

Bases: ABC

Class that provides high level control for electrometer.

Parameters:
cscElectrometerCSC

A copy of the CSC.

logNone or logging.Logger

A logger.

Attributes:
commandercommander.Commander

The tcpip interface for writing and reading from the device.

commandsElectrometerCommandFactory

The interface for providing formatted commands for the commander.

modeUnitMode

The mode/unit of the electrometer.

rangefloat

The range of intensities that the electrometer can read.

integration_timefloat

The amount of time the electrometer reads per scan.

median_filter_activebool

Whether the median filter is active.

filter_activebool

Whether any filter is active.

avg_filter_activebool

Whether the average filter is active.

connectedbool

Whether the port is open.

last_valueint

The last value of the electrometer intensity read.

read_freqfloat

The frequency that readings are gotten from the device buffer.

configuration_delayfloat

The delay to allow the electrometer to configure.

auto_rangebool

Whether automatic range is active.

manual_start_timefloat

The start TAI time of a scan [s].

manual_end_timefloat

The end TAI time of a scan [s].

serial_lockasyncio.Lock

The lock for protecting the synchronous serial communication.

modesdict

Associate SAL Command number with electrometer UnitMode enum.

voltage_statusbool

Is voltage source enabled.

temperaturefloat

The temperature (deg_C) returned from the probe.

vsourcefloat

The voltage (V) source input.

Attributes Summary

connected

Methods Summary

check_error(from_command)

Check the error. Parameter --------- from_command : str | None Tells us where the check error is being called from.

configure(config)

connect()

continuous_scan(scan_duration)

Part of start scan dt for Keithley

disconnect()

get_avg_filter_status()

Get the average filter status.

get_config_schema()

get_integration_time()

Get the integration time value.

get_intensity()

Get the intensity.

get_med_filter_status()

Get the median filter status.

get_mode()

Get the mode/unit.

get_range()

Get the range value.

get_voltage_level()

get_voltage_limit()

get_voltage_range()

get_voltage_source_status()

make_primary_header()

Make primary header for fits file that follows Rubin Obs.

parse_buffer(response[, num_categories])

Parse the buffer values.

perform_zero_calibration([mode, auto, ...])

This enables the zero check and sets the mode and range before every measurement.

prepare_scan()

Prepare the keithley for scanning.

send_command(command[, has_reply, timeout])

set_digital_filter(activate_filter, ...)

Set the digital filter(s).

set_integration_time(int_time)

Set the integration time.

set_mode(mode)

Set the mode/unit.

set_range(set_range)

Set the range.

set_voltage_level(level)

set_voltage_limit(limit)

set_voltage_range(range)

setup_scan()

Sets up the electrometer to prepare for scan.

start_scan([group_id])

Start storing values in the Keithley electrometer's buffer.

start_scan_dt(scan_duration[, group_id])

Start storing values in the Keithley electrometer's buffer, for a set duration.

stop_scan()

Stop storing values in the electrometer.

toggle_voltage_source(toggle)

write_fits_file(raw_data, data_format)

Write fits file of the intensity, time, and temperature values.

Attributes Documentation

connected

Methods Documentation

async check_error(from_command: str | None)

Check the error. Parameter ——— from_command : str | None

Tells us where the check error is being called from

abstract configure(config)
async connect()
async continuous_scan(scan_duration)

Part of start scan dt for Keithley

async disconnect()
async get_avg_filter_status()

Get the average filter status.

abstract classmethod get_config_schema()
async get_integration_time()

Get the integration time value.

async get_intensity()

Get the intensity.

async get_med_filter_status()

Get the median filter status.

async get_mode()

Get the mode/unit.

async get_range()

Get the range value.

async get_voltage_level()
async get_voltage_limit()
async get_voltage_range()
async get_voltage_source_status()
make_primary_header()

Make primary header for fits file that follows Rubin Obs. format.

parse_buffer(response, num_categories=2)

Parse the buffer values.

Parameters:
responsestr

The response from the read buffer command.

Returns:
intensitylist

The intensity values

timelist

The time values

temperaturelist

The temperature values.

unitlist

The unit values.

voltagelist

The voltage values.

async perform_zero_calibration(mode=None, auto=None, set_range=None, integration_time=None)

This enables the zero check and sets the mode and range before every measurement.

Parameters:
modestr | None

Mode of measurement, CURR, CHAR, VOLT, RES

autobool | None

Whether or not in auto range

set_rangefloat | None

The measurement range

integration_timefloat | None

The integration time. This is not used in this and will be removed in future xml changes

async prepare_scan()

Prepare the keithley for scanning.

async send_command(command, has_reply=False, timeout=None)
async set_digital_filter(activate_filter, activate_avg_filter, activate_med_filter)

Set the digital filter(s).

Parameters:
activate_filterbool

Whether any filter should be activated.

activate_avg_filterbool

Whether the average filter should be activated.

activate_med_filterbool

Whether the median filter should be activated.

async set_integration_time(int_time)

Set the integration time.

Parameters:
int_timefloat

The integration time.

async set_mode(mode)

Set the mode/unit.

Parameters:
modeint

The mode of the electrometer.

async set_range(set_range)

Set the range.

Parameters:
set_rangefloat

The new range value.

async set_voltage_level(level)
async set_voltage_limit(limit)
async set_voltage_range(range)
async setup_scan()

Sets up the electrometer to prepare for scan.

async start_scan(group_id=None)

Start storing values in the Keithley electrometer’s buffer.

Parameters:
group_idstr | None

The group id generated by the image server. This is passed into this method as it is called in the CSC, but it is used in write_fits_file

async start_scan_dt(scan_duration, group_id=None)

Start storing values in the Keithley electrometer’s buffer, for a set duration.

Parameters:
scan_durationfloat

The amount of time to store values for.

group_idstr | None

The group id generated by the image server. This is passed into this method as it is called in the CSC, but it is used in write_fits_file

async stop_scan()

Stop storing values in the electrometer.

async toggle_voltage_source(toggle)
async write_fits_file(raw_data, data_format)

Write fits file of the intensity, time, and temperature values.

Parameters:
signallist of float

The amount of photons in a given reading, unit depends on mode of electrometer. * Curr: Ampere - Measure current * Volt: V - Measure volts * Char: Coulomb - Measure charge

timeslist of float

The time (TAI) of the signal data taken.

temperaturelist of float

A consistent temperature value (deg_C) obtained from the temperature probe over the period of signal acquisition.

unitlist of str

The unit of the signal data. (constant)

voltagelist of float

The source input in Volts maintained during signal acquisition.