NHS configuration¶
The Iseg NHS modules of this series are multi-channel high voltage power supplies with 6 channels in several version in a NIM chassis.
The NhsController
controller class (bliss.controllers.powersupply.nhs
)
allows 6 SoftAxis (pseudo-axes) corresponding to the channel 0 to 5.
Configuration example (yml)¶
- class: NhsController
module: powersupply.nhs
plugin: generic
name: nhs60n
# timeout: 10
tcp:
url: lid00limax:28400
axes:
- name: nhs_out0
class: NhsAxis
channel: 0
low_limit: -1000
high_limit: 1
tolerance: 1
velocity: 20 # ramp rate is the same for all channels
- name: nhs_out1
class: NhsAxis
channel: 1
low_limit: -1000
high_limit: 0
tolerance: 0.1
velocity: 20 # ramp rate is the same for all channels
- name: nhs_out3
class: NhsAxis
channel: 3
unit: V
low_limit: -1100
high_limit: 1
tolerance: .1
velocity: 20 # ramp rate is the same for all channels
Presentation of the NHS controller¶
Display information about the controller by typing its name in the shell.
Remark
The velocity and ramp rate voltage are identic for all channels.
Warning
Current values are in Ampere (A).
Out [1]: Manufacturer = iseg Spezialelektronik GmbH
Instrument type = NHS 60 105
Serial number = 8000367
Firmware version = 2.20
Channel | State | Current limit | Voltage limit |velocity (ramp rate)
--------|--------|---------------|-------------- |--------------------
0 | READY | NO | NO | 20
1 | READY | NO | NO | 20
3 | READY | NO | NO | 20
Set the kill enable for all the axis module.¶
NHS [8]: nhs60n.kill_enable()
Out [8]: '0'
NHS [9]: nhs60n.kill_enable(1)
NHS [10]: nhs60n.kill_enable()
Out [10]: '1'
Reset the device to save values:¶
- turn high voltage off with ramp for all channel ;
- set nominal voltage (V_set) to zero for all channels ;
- set current (I_set) to the current nominal for all channels (unused).
NHS [2]: nhs60n.reset()
NHS [3]:
To read the actual position (voltage) values of all axes:¶
NHS [3]: wa()
Current Positions: user
dial
'nhs_out0` velocity changed from None to 11.0
'nhs_out1` velocity changed from None to 22.0
nhs_out0 nhs_out1 nhs_out3[V]
---------- ---------- -------------
-1 -1.8 -1.0
-1 -1.8 -1.0
Use a specific channel¶
Display more information about a specific channel. The channel number 3 in this example is the fourth.
NHS [2]: nhs_out3
Out [2]: AXIS:
name (R): nhs_out3
unit (R): V
tolerance (R) (to check pos. before a move): 0.1
motion_hooks (R): []
limits (RW): Low: -1100.00000 High: 1.00000
dial (RW): -1.01000
position (RW): -1.01000
state (R): READY (Axis is READY)
velocity (RW): 30.00000 (config: 30.00000)
is not in current limit
Read the channel state of the output :
NHS [11]: nhs_out3.state
Out [11]: AxisState: READY (Axis is READY)
Enable (state (R): READY) the axis according to the axis. It accetps : 0, 1, “on”, “ON”, “off”, “OFF”.
NHS [3]: nhs_out3.on
Out [3]: False
NHS [4]: nhs_out3.on="on"
NHS [5]: nhs_out3.on
Out [5]: True
The channel corresponding to the output will ramp to the value at a given ramping rate (velocity)(V/s).
NHS [5]: nhs_out3.ramprate_voltage # idem nhs_out3.velocity
Out [5]: 22.0
NHS [6]: nhs_out3.ramprate_voltage=10
NHS [7]: nhs_out3.ramprate_voltage
Out [7]: 10.0
NHS [4]: umv(nhs_out3,-100)
Moving nhs_out3 from -1.0 to -100.0
nhs_out3[V]
user -23.780
dial -23.770
Read the channel status of the output :
NHS [12]: nhs_out3.status
Channel 3 status is:
is positive = False
is arc = False
is input error = False
is on = True
is voltage ramp = False
is emergency off = False
is constant current = False
is constant voltage = True
is low current range = False
is arc number exceeded = False
is current bounds = False
is voltage bounds = False
is external inhibit = False
is current trip = False
is current limit = False
is voltage limit = False
is current ramp = False
is current ramp up = False
is current ramp down = False
is voltage ramp up = False
is voltage ramp down = False
is voltage bound upper = False
is voltage bound lower = False
is flashover = False
is flashover nb exceeded = False
Read the channel event of the output :
NHS [19]: nhs_out3.events
Channel 3 event is:
event arc = False
event input_error = False
event on to off = False
event end of voltage_ramp = True
event emergency off = False
event constant current = False
event constant voltage = True
event arc number exceeded = False
event current bounds = False
event voltage bounds = False
event external inhibit = False
event current trip = False
event current limit = False
event voltage limit = False
event end of current ramp = False
event current ramp up = False
event current ramp down = False
event voltage ramp up = False
event voltage ramp down = False
event voltage bound upper = False
event voltage bound lower = False
event flashover = False
event flashover nb exceeded = False
Clear the channel event of the output :
NHS [20]: nhs_out3.events_clear
A current limit can be adjusted for each channel (1mA by default) :
NHS [16]: nhs_out3.current_limit
Out [16]: 0.001
NHS [17]: nhs_out3.current_limit=0.001/2
NHS [18]: nhs_out3.current_limit
Out [18]: 0.0005
Counting¶
2 counters are automatically created for each channels declared in the session. They correspond to the measured values of the voltage and current output.
NHS [23]: nhs60n.counters
Out [23]: Namespace containing:
.nhs_out0_V
.nhs_out0_C
.nhs_out1_V
.nhs_out1_C
.nhs_out3_V
.nhs_out3_C
Measurement group:
NHS [3]: ACTIVE_MG
Out [3]: MeasurementGroup: measurement_nhs (state='default')
- Existing states : 'default'
Enabled Disabled
----------------- -----------------
nhs60n:nhs_out0_C
nhs60n:nhs_out0_V
nhs60n:nhs_out1_C
nhs60n:nhs_out1_V
nhs60n:nhs_out3_C
nhs60n:nhs_out3_V
Counting example:
NHS [24]: ct()
WARNING: Scan data are currently saved under /tmp, where files are volatile.
nhs_out0_C = 0.00000 A ( 0.00000 A/s) nhs60n
nhs_out0_V = -0.510000 V ( -0.510000 V/s) nhs60n
nhs_out1_C = 1.00000e-08A ( 1.00000e-08 A/s) nhs60n
nhs_out1_V = -1.80000 V ( -1.80000 V/s) nhs60n
nhs_out3_C = -3.31500e-05A ( -3.31500e-05 A/s) nhs60n
nhs_out3_V = -100.000 V ( -100.000 V/s) nhs60n