SHR 2020 configuration¶
The Iseg SHR HV supplies are High Precision two channels high voltage SMU (Source Measuring Units).
The Shr
controller class (bliss.controllers.powersupply.shr
) provides:
2 SoftAxis (pseudo-axes):
-
Output voltage setpoint on channel ‘A’ (using a ramp rate)
-
Output voltage setpoint on channel ‘B’ (using a ramp rate)
4 Counters:
-
Actual voltage on channel ‘A’ (tag:
voltage
) -
Actual current on channel ‘A’ (tag:
current
) -
Actual voltage on channel ‘B’ (tag:
voltage
) -
Actual current on channel ‘B’ (tag:
current
)
Configuration example (yml)¶
- class: Shr
module: powersupply.shr
plugin: bliss
name: shr
tcp:
url: id00-shr2220r:10001
eol: "\r\n"
timeout: 10
counters:
- counter_name: shr0_cv
channel: A
tag: voltage
mode: SINGLE
- counter_name: shr0_ci
channel: A
tag: current
mode: SINGLE
- counter_name: shr1_cv
channel: B
tag: voltage
mode: SINGLE
- counter_name: shr1_ci
channel: B
tag: current
mode: SINGLE
axes:
- axis_name: shr0_hv
channel: A
tolerance: 10
low_limit: 0
high_limit: 250
- axis_name: shr1_hv
channel: B
tolerance: 10
low_limit: 0
high_limit: 250
Presentation of the SHR controller¶
Display information about the controller by typing its name in the shell.
TEST_SESSION [2]: nhq
Gathering information from {'url': 'localhost:28319'}, please wait few seconds...
Out [2]: === Controller nhq (sn481323 ver2.06) ===
Maximum voltage : 5000V
Maximum current : 2mA
Channel A state : ON @ -0.0V
Channel B state : ON @ 0.0V
The Nhq has two high voltage channels ‘A’ and ‘B’.
Display more information about each channel with the .chA
and .chB
properties.
TEST_SESSION [3]: nhq.chA
Out [3]: === Channel 'A' ===
Control : RS232
Polarity : negative
HV-ON switch: ON
KILL-ENABLE : OFF
INHIBIT : inactive
Status : ON (Output voltage according to set voltage)
Voltage : -0.0V (limit=90.0%)
Current : 0.0A (limit=20.0%)
Setpoint : 0.0V
Ramp rate : 40.0V/s
Current trip: 300.0
Read the actual current and voltage values of a channel with:
TEST_SESSION [8]: nhq.chA.voltage
Out [8]: 30.0
TEST_SESSION [9]: nhq.chA.current
Out [9]: 0.000243
Set the output voltage to a target value (setpoint) with:
TEST_SESSION [9]: nhq.chA.setpoint=80
The device will ramp the voltage up to the setpoint value at a given ramping rate (V/s).
TEST_SESSION [12]: nhq.chA.ramprate
Out [12]: 40.0
TEST_SESSION [7]: nhq.chA.status
Out [7]: 'L2H'
The .status
property of a channel (nhq.chA.status
) provides information about the ramping:
-
ON
: the actual voltage is equal to the voltage setpoint value (not ramping). -
L2H
: the actual voltage is increasing to the voltage setpoint value (ramping). -
H2L
: the actual voltage is decreasing to the voltage setpoint value (ramping). -
TRP
: the high voltage has been cut because the actual current exceeded the current trip value (ramping aborted).
Each channel can define a current_trip
(e.g: nhq.chA.current_trip=600
uA).
If the actual current exceed this value while ramping, the ramping is stopped and voltage set to zero.
If the communication with the NHQ hardware is too slow or unstable:
-
nhq.break_time
: set the minimum time between 2 characters (hardware property). -
nhq._comm_delay
: set the wait delay between 2 successives commands.
Scanning with the NHQ¶
For each channel, the NHQ provides a pseudo axis for the high voltage output and 2 counters to read the actual voltage and current.
These objects are exported in the session using the counter_name
and axis_name
defined in the YML configuration file.
TEST_SESSION [16]: nhq.counters
Out [16]: Namespace containing:
.iav
.iac
.ibv
.ibc
TEST_SESSION [18]: nhq.axes
Out [18]: Namespace containing:
.oav
.obv
For example, the high voltage of channel ‘A’ can be scanned using the pseudo axis ‘oav’.
Between two points of the scan, the output voltage will be ramped using the actual ramprate
.
In a scan command, counting on the NHQ will count on all four counters.
TEST_SESSION [15]: ascan(oav,40,80,4,1,nhq)
Out [15]: Scan(number=38, name=ascan, path=/home/pguillou/tmp/scans/test_session/data.h5)
Scan 38 Tue Apr 21 11:19:18 2020 /home/pguillou/tmp/scans/test_session/data.h5 test_session user = pguillou
ascan oav 40 80 4 1
# dt[s] oav[V] iac[A] iav[V] ibc[A] ibv[V]
0 0 40 0.000122 -40 0 0
1 5.99969 51 0.000152 -50 0 0
2 12.0537 60 0.000184 -60 0 0
3 18.3079 71 0.000213 -70 0 0
4 24.4353 81 0.000243 -80 0 0
Took 0:00:35.375036
Using a Nhq channel as a Regulation output¶
The high voltage outputs of the NHQ can be used as an ExternalOutput
of the Bliss Regulation framework.
A implementation of that class is already provided and can be imported like this:
- class: NhqOutput
module: powersupply.nhq
plugin: bliss
name: nhq_output_A
device: $nhq.chA
unit: V
ramprate: 10.0 #V/s
TEST_SESSION [10]: na=config.get('nhq_output_A')
TEST_SESSION [11]: na
Out [11]:
=== ExternalOutput: nhq_output_A ===
device: nhq.chA <bliss.controllers.powersupply.nhq.NhqChannel object at 0x7f1d4cfb8c50>
current value: -40.000 V
ramp rate: 10.0
ramping: False
limits: (None, None)