itkdcsinterlock

ITkDCSInterlock class for Rhode&Schwarz/Hameg HMP4040 4-output power supply.

Classes

ITkDCSInterlock(*args, **kwargs)

SCPIInstrument implementation for NI CompactRIO-based DCS interlock in OPMD.

ITkDCSInterlock

class icicle.itkdcsinterlock.ITkDCSInterlock(*args, **kwargs)

Bases: SCPIInstrument

SCPIInstrument implementation for NI CompactRIO-based DCS interlock in OPMD.

Communicates with interlock GUI - the latter provides (currently read-only) access to some registers and computed values within FPGA and GUI.

__init__(resource='TCPIP::localhost::9898::SOCKET', sim=False, outputs=4)
Parameters:
  • resource – VISA Resource address. See VISA docs for more info.

  • outputs – How many relays this interlock device has. Defaults to 4.

COM_RESET = ''

Instrument Reset SCPI command.

MEASURE_TYPES = {'LID:VOLT': 'Lid sensor voltage (V)', 'NTC:TEMP': 'NTC temperature (degC)', 'NTC:VOLT': 'NTC output voltage (degC)', 'PRES:VOLT': 'Pressure sensor voltage (V)', 'PT100:RES': 'PT100 resistance (slot 1, ohm)', 'PT100:TEMP': 'PT100 temperature (slot 1, degC)', 'PT100_2:RES': 'PT100 resistance (slot 2, ohm)', 'PT100_2:TEMP': 'PT100 temperature (slot 2, degC)', 'RELAY:ON': 'Relay on?', 'RELAY:READY': 'Relay ready?', 'RELAY:STATUS': 'Relay status', 'RELAY:TRIP': 'Relay tripped?', 'SHT85:HUMI': 'SHT85 rel. humidity (%)', 'SHT85:TEMP': 'SHT85 temperature (degC)', 'VAC:VOLT': 'Vacuum sensor voltage (V)', 'VREF:VOLT': 'Reference voltage (V)'}
class MeasureChannel(*args, **kwargs)

Bases: MeasureChannel

MeasureChannel implementation for the ITkDCSInterlock.

property status
Returns:

Connection?

Return type:

int

property value

Performs measurement and returns value.

Returns:

measured value.

Return type:

float

OUTPUTS = 4
REGISTERS = {'EVENT_STATUS_REGISTER': 'Event Status Register', 'INSTRUMENT_STATUS_REGISTER': 'Channel Summary Status Register', 'QUESTIONABLE_STATUS_REGISTER': 'Questionable Status Register', 'STATUS_BYTE': 'Status Byte'}
SETTINGS = {'IDENTIFIER': {'QUERY': '*IDN?'}, 'LID:VOLT': {'QUERY': 'LID:MEAS:VOLT?', 'parser': <function numeric_float>}, 'NTC:TEMP': {'QUERY': 'NTC:MEAS:TEMP? {:d}', 'parser': <function numeric_float>, 'verifier': <function is_integer.<locals>._is_integer>}, 'NTC:VOLT': {'QUERY': 'NTC:MEAS:VOLT? {:d}', 'parser': <function numeric_float>, 'verifier': <function is_integer.<locals>._is_integer>}, 'PRES:VOLT': {'QUERY': 'PRES:MEAS:VOLT?', 'parser': <function numeric_float>}, 'PT100:RES': {'QUERY': 'PT100:MEAS:RES? {:d}', 'parser': <function numeric_float>, 'verifier': <function is_integer.<locals>._is_integer>}, 'PT100:TEMP': {'QUERY': 'PT100:MEAS:TEMP? {:d}', 'parser': <function numeric_float>, 'verifier': <function is_integer.<locals>._is_integer>}, 'PT100_2:RES': {'QUERY': 'PT100_2:MEAS:RES? {:d}', 'parser': <function numeric_float>, 'verifier': <function is_integer.<locals>._is_integer>}, 'PT100_2:TEMP': {'QUERY': 'PT100_2:MEAS:TEMP? {:d}', 'parser': <function numeric_float>, 'verifier': <function is_integer.<locals>._is_integer>}, 'RELAY:ON': {'QUERY': 'RELAY:ON? {:d}', 'parser': <function numeric_bool>, 'verifier': <function is_integer.<locals>._is_integer>}, 'RELAY:READY': {'QUERY': 'RELAY:READY? {:d}', 'parser': <function numeric_bool>, 'verifier': <function is_integer.<locals>._is_integer>}, 'RELAY:STATUS': {'QUERY': 'RELAY:STATUS? {:d}', 'verifier': <function is_integer.<locals>._is_integer>}, 'RELAY:TRIP': {'QUERY': 'RELAY:TRIP? {:d}', 'parser': <function numeric_bool>, 'verifier': <function is_integer.<locals>._is_integer>}, 'SHT85:HUMI': {'QUERY': 'SHT85:MEAS:HUMI?', 'parser': <function numeric_float>}, 'SHT85:TEMP': {'QUERY': 'SHT85:MEAS:TEMP?', 'parser': <function numeric_float>, 'verifier': <function is_integer.<locals>._is_integer>}, 'VAC:VOLT': {'QUERY': 'VAC:MEAS:VOLT?', 'parser': <function numeric_float>}, 'VREF:VOLT': {'QUERY': 'VREF:MEAS:VOLT?', 'parser': <function numeric_float>}}

Settings dictionary with all Set/Query SCPI combinations.

SOURCE_REGISTERS = {'CHANNEL_STATUS_REGISTER': 'Channel Status Register'}
TIMEOUT = 10000

Ethernet link timeout.

measure(channel)

Measure output voltage, current.

Parameters:
  • channel – output to be measured.

  • no_lock – override acquire_lock (e.g. if lock already taken by function that measure-call is nested within).

Returns:

tuple (voltage, current).

query_channel(setting, channel, **kwargs)

Query setting on instrument for output channel.

Parameters:
  • setting – key in class dictionary SETTINGS.

  • channel – output to set this setting on.

  • no_lock – override acquire_lock (e.g. if lock already taken by function that query_channel-call is nested within).

  • attempts – how many retries to give set command.

Returns:

data returned by device for given query.

set_channel(setting, channel, *value, **kwargs)

Set setting on instrument to value for output channel, and read-back using equivalent query().

Parameters:
  • setting – key in class dictionary SETTINGS.

  • channel – channel to set this setting on.

  • value – target value for setting.

  • no_lock – override acquire_lock (e.g. if lock already taken by function that set_channel-call is nested within).

  • attempts – how many retries to give set command.

Returns:

read-back value if query() available, else whether number of bytes written during set() meets expectation

status(channel, **kwargs)

Check status of relay.

Parameters:
  • channel – relay to be checked.

  • no_lock – override acquire_lock (e.g. if lock already taken by function that status-call is nested within).

  • attempts – how many retries to give set command.

Returns:

status of output.

validate_channel(channel, raise_exception=True)

Check if an output exists on this device.

Parameters:

channel – channel number to validate as an output.