Class AbstractKeithley2600Series
java.lang.Object
gda.factory.ConfigurableBase
gda.factory.FindableConfigurableBase
gda.device.DeviceBase
gda.device.scannable.ScannableBase
uk.ac.diamond.daq.devices.keithley.AbstractKeithley2600Series
- All Implemented Interfaces:
Device,Scannable,Configurable,Findable,gda.observable.IObservable
- Direct Known Subclasses:
DummyKeithley2600Series,Keithley2600Series
Abstract base class for Keithley 2600 Series source meter.
- Since:
- GDA 9.11
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static enumprotected static enumprotected static enum -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final Stringprotected HashMap<String, DetectorDataEntry<?>> protected static final Stringprotected static final Stringprotected booleanFlag indicating whether we are on the first pointprotected AbstractKeithley2600Series.StatusThe status showing if the voltage or current limits are reachedprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected Future<?> Future to block on while settlingprotected static final Stringprotected booleanFlag indicating the next timerawAsynchronousMoveTo(Object)is called the output will be switched onprotected static final StringFields inherited from class gda.device.scannable.ScannableBase
__doc__, DEFAULT_INPUT_NAME, DEFAULT_OUTPUT_FORMAT, extraNames, inputNames, level, outputFormatFields inherited from class gda.device.DeviceBase
DEFAULT_PROTECTION_LEVEL_PROPERTYFields inherited from interface gda.device.Scannable
ATTR_NEXUS_CATEGORY, ATTR_NX_CLASS, VALUE_UNAVAILABLE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidCalled on every Scannable at the end of every data point, for scans which are broken down into individual points (i.e.voidCalled for every Scannable at the start of a group of nested scans (or a single scan if that is the case)protected voidThe idea is to all this whenever an current or voltage limit might be reached.voidDefault implementation for classes that do not have to do any specific configuration.
Classes that do their own configuration should *not* call this superclass function, as it may cause the object to appear configured before it really is.protected abstract doubleprotected abstract doubleprotected abstract doublelongThe additional delay to be applied on the first point of the scan after setting the demand.protected doubleprotected abstract doubleprotected abstract doubleprotected NexusTreeProviderlongprotected abstract AbstractKeithley2600Series.SourceModelongbooleanisBusy()Check if the Scannable is moving/operating.abstract booleanprotected abstract voidprotected abstract voidoutputOn()voidrawAsynchronousMoveTo(Object position) [Consider abstract] Trigger a move/operation to an internal/hardware position and return immediately.[Consider abstract] Read the position in its internal (user) representation.voidsetAdditionalFirstPointSettleTimeMs(long additionalFirstPointSettleTimeMs) The additional delay to be applied on the first point of the scan after setting the demand.protected voidsetDetectorDataEntryMap(HashMap<?, ?>... data) protected abstract voidsetOutputDemandAndWaitToSettle(double demand) voidsetResistanceMode(String mode) protected abstract voidvoidsetSettleTime(long settleTime) voidsetSourceMode(String mode) protected abstract voidvoidsetSwitchOnDelayTimeMs(long switchOnDelayTimeMs) protected voidvoidstop()Stop the current move/operation.Returns a string representation of the Scannable and its current position/value/statusprotected voidprotected voidvoidReturns when operation carried out by moveTo has completedMethods inherited from class gda.device.scannable.ScannableBase
__call__, __call__, __doc__, __getitem__, __len__, __repr__, __str__, asynchronousMoveTo, atCommandFailure, atLevelEnd, atLevelMoveStart, atLevelStart, atPointStart, atScanEnd, atScanLineEnd, atScanLineStart, checkPositionValid, externalToInternal, getExtraNames, getInputNames, getLevel, getOutputFormat, getPosition, getScanMetadataAttribute, getScanMetadataAttributeNames, getScanMetadataAttributes, internalToExternal, isAt, moveTo, setExtraNames, setInputNames, setLevel, setOutputFormat, setScanMetadataAttribute, setScanMetadataAttributes, throwExceptionIfInvalidTarget, toString, validateScannable, valueUnavailableString, waitWhileBusyMethods inherited from class gda.device.DeviceBase
addIObserver, close, deleteIObserver, deleteIObservers, getAttribute, getName, getProtectionLevel, isBeingObserved, isConfigureAtStartup, notifyIObservers, setAttribute, setConfigureAtStartup, setName, setProtectionLevelMethods inherited from class gda.factory.ConfigurableBase
isConfigured, reconfigure, setConfiguredMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface gda.factory.Configurable
isConfigureAtStartup, isConfigured, reconfigureMethods inherited from interface gda.device.Device
close, getAttribute, getProtectionLevel, setAttribute, setProtectionLevelMethods inherited from interface gda.observable.IObservable
addIObserver, deleteIObserver, deleteIObservers
-
Field Details
-
SOURCE_MODE
- See Also:
-
MEAN_CURRENT
- See Also:
-
MEAN_VOLTAGE
- See Also:
-
VOLTAGE_LEVEL_SETPOINT
- See Also:
-
CURRENT_LEVEL_SETPOINT
- See Also:
-
INTEGRATION_TIME
- See Also:
-
RESISTANCE_MODE
- See Also:
-
NUMBER_OF_READINGS
- See Also:
-
DWELL_TIME
- See Also:
-
detectorDataEntryMap
-
dataMapToWrite
-
limitStatus
The status showing if the voltage or current limits are reached -
setting
Future to block on while settling -
switchOnAtNextMove
protected boolean switchOnAtNextMoveFlag indicating the next timerawAsynchronousMoveTo(Object)is called the output will be switched on -
isFirstPoint
protected boolean isFirstPointFlag indicating whether we are on the first point
-
-
Constructor Details
-
AbstractKeithley2600Series
public AbstractKeithley2600Series()
-
-
Method Details
-
configure
Description copied from class:ConfigurableBaseDefault implementation for classes that do not have to do any specific configuration.
Classes that do their own configuration should *not* call this superclass function, as it may cause the object to appear configured before it really is.- Specified by:
configurein interfaceConfigurable- Overrides:
configurein classConfigurableBase- Throws:
FactoryException- if there is an error in configuration e.g. required variable not set or cannot connect to device
-
getSourceModes
-
getResistanceModes
-
toFormattedString
Description copied from interface:ScannableReturns a string representation of the Scannable and its current position/value/statusTypically should return:
name : position
or for detectors, name : status
If the position/status cannot be determined, the function should return
Scannable.VALUE_UNAVAILABLEin its place.- Specified by:
toFormattedStringin interfaceScannable- Overrides:
toFormattedStringin classScannableBase- Returns:
- string as defined above
-
getSourceMode
- Throws:
DeviceException
-
waitForSettling
protected void waitForSettling() -
waitForSwitchOn
protected void waitForSwitchOn() -
checkStatusAndThrow
The idea is to all this whenever an current or voltage limit might be reached. If it is this will throw aborting the ongoing request or scan.- Throws:
DeviceException
-
rawGetPosition
Description copied from class:ScannableBase[Consider abstract] Read the position in its internal (user) representation.- Overrides:
rawGetPositionin classScannableBase- Returns:
- the value represented by this Scannable
- Throws:
DeviceException- See Also:
-
getActualResistance
- Throws:
DeviceException
-
getActualCurrent
- Throws:
DeviceException
-
getActualVoltage
- Throws:
DeviceException
-
getDemand
- Throws:
DeviceException
-
getDemandCurrent
- Throws:
DeviceException
-
getDemandVoltage
- Throws:
DeviceException
-
setupNamesAndFormat
protected void setupNamesAndFormat() -
isBusy
Description copied from interface:ScannableCheck if the Scannable is moving/operating.- Returns:
- true - if operation carried out by moveTo has not completed yet
- Throws:
DeviceException
-
rawAsynchronousMoveTo
Description copied from class:ScannableBase[Consider abstract] Trigger a move/operation to an internal/hardware position and return immediately.- Overrides:
rawAsynchronousMoveToin classScannableBase- Parameters:
position- Position in its internal/hardware representation. e.g. with units and offsets removed- Throws:
DeviceException- See Also:
-
setOutputDemandAndWaitToSettle
protected abstract void setOutputDemandAndWaitToSettle(double demand) -
waitWhileBusy
Description copied from class:ScannableBaseReturns when operation carried out by moveTo has completed If this is to be overriden, isBusy must also be valid. Although the pos and scan command currently use this method to determine if the Scannable is busy, this must not be relied upon.- Specified by:
waitWhileBusyin interfaceScannable- Overrides:
waitWhileBusyin classScannableBase- Throws:
DeviceExceptionInterruptedException
-
outputOff
- Throws:
DeviceException
-
outputOn
- Throws:
DeviceException
-
stop
Description copied from class:ScannableBaseStop the current move/operation. Default behaviour is to do nothing. Inheriting classes have the option to implement this if their specific behaviour requires it.- Specified by:
stopin interfaceScannable- Overrides:
stopin classScannableBase- Throws:
DeviceException- See Also:
-
setSourceMode
- Throws:
DeviceException
-
setSourceMode
protected abstract void setSourceMode(AbstractKeithley2600Series.SourceMode mode) throws DeviceException - Throws:
DeviceException
-
setResistanceMode
- Throws:
DeviceException
-
setResistanceMode
protected abstract void setResistanceMode(AbstractKeithley2600Series.ResistanceMode mode) throws DeviceException - Throws:
DeviceException
-
atScanStart
Description copied from class:ScannableBaseCalled for every Scannable at the start of a group of nested scans (or a single scan if that is the case) Default behaviour is to do nothing. Inheriting classes have the option to implement this if their specific behaviour requires it.- Specified by:
atScanStartin interfaceScannable- Overrides:
atScanStartin classScannableBase- Throws:
DeviceException- See Also:
-
atPointEnd
Description copied from class:ScannableBaseCalled on every Scannable at the end of every data point, for scans which are broken down into individual points (i.e. non-continous scans) Default behaviour is to do nothing. Inheriting classes have the option to implement this if their specific behaviour requires it.- Specified by:
atPointEndin interfaceScannable- Overrides:
atPointEndin classScannableBase- Throws:
DeviceException- See Also:
-
getResistanceMode
public abstract AbstractKeithley2600Series.ResistanceMode getResistanceMode() throws DeviceException- Throws:
DeviceException
-
isOutputOn
- Throws:
DeviceException
-
getSettleTime
public long getSettleTime()- Returns:
- The delay applied after the demand is changed.
-
setSettleTime
public void setSettleTime(long settleTime) - Parameters:
settleTime- The delay to be applied after the demand is changed.
-
getSwitchOnDelayTimeMs
public long getSwitchOnDelayTimeMs()- Returns:
- The delay applied after the source is switched on.
-
setSwitchOnDelayTimeMs
public void setSwitchOnDelayTimeMs(long switchOnDelayTimeMs) - Parameters:
switchOnDelayTimeMs- The delay applied after the source is switched on.
-
getAdditionalFirstPointSettleTimeMs
public long getAdditionalFirstPointSettleTimeMs()The additional delay to be applied on the first point of the scan after setting the demand. * -
setAdditionalFirstPointSettleTimeMs
public void setAdditionalFirstPointSettleTimeMs(long additionalFirstPointSettleTimeMs) The additional delay to be applied on the first point of the scan after setting the demand.- Parameters:
additionalFirstPointSettleTimeMs-
-
getFileStructure
- Throws:
DeviceException
-
setDetectorDataEntryMap
- Throws:
DeviceException
-
getDetectorData
-