Power Supply
Misc Info
The FESA-class is intended to be used for ring-RF systems too - see Wiki-page
ring-RF specifics.
The related deployment-unit currently is called "PowerSupply_DU".
Property Layout
To support all variants of !!PowerSupplies (magnet control, HV-Powersupplies, cavity control (DDS), ...) in one FESA class we use
Subsets to vary the Property layout and to vary the used value-items in Setting- and Acquisition-Property.
Setting properties
IMPORTANT: Every setting property has
standard items to the ones listed here.
property name |
prop. type |
field |
type |
unit |
comment |
impl |
Init |
init |
|
|
|
Resets InterlockBits (if not set anymore) |
|
Reset |
reset |
|
|
|
execute power supply specified reset-method |
|
Inverter |
setting |
invert |
enum |
|
possible values are: -1: negative, 0: noInverter, 1: positive |
|
Setting |
setting |
voltage |
double |
V |
HV Power Supplies |
|
|
|
voltage_units |
char* |
|
unit description |
|
|
|
voltage_min |
double |
V |
minimum value |
|
|
|
voltage_max |
double |
V |
maximum value |
|
|
|
current |
double |
A |
Magnet Power Supplies |
|
|
|
current_units |
char* |
|
unit description |
|
|
|
current_min |
double |
A |
minimum value |
|
|
|
current_max |
double |
A |
maximum value |
|
|
|
frequency |
double |
Hz |
for DDS |
|
|
|
frequency_units |
char* |
|
unit description |
|
|
|
frequency_min |
double |
Hz |
minimum value |
|
|
|
frequency_max |
double |
Hz |
maximum value |
|
|
|
coeffArrCurr |
2D double array |
A |
ramp data for current control as array of polynomial coefficiences (t, a, b, c) |
|
|
|
coeffArrVolt |
2D double array |
V |
ramp data for voltage control as array of polynomial coefficiences (t, a, b, c) |
|
|
|
coeffArrFreq |
2D double array |
Hz |
ramp data for frequency control as array of polynomial coefficiences (t, a, b, c) |
|
Power |
power |
power |
DEVICE_MODE_POWER (enum -> int) |
|
NONE=0 / ON=1 / OFF=2 |
|
Acquisition properties
IMPORTANT: Every acquisition property has
standard items to the ones listed here.
property name |
prop. type |
field |
type |
unit |
comment |
impl |
Status |
status |
detailedStatus |
int |
See extra table |
See extra table |
standard status items |
|
|
standard items for status property |
|
Acquisition |
acquisition |
detailedStatus |
bool array |
- |
See extra table |
|
detailedStatus_labels |
2D char array |
|
names for the status bits |
|
voltageSet |
double |
V |
corresponding set value |
|
voltage |
double |
V |
measured value |
|
currentSet |
double |
A |
corresponding set value |
|
current |
double |
A |
measured value |
|
freqeuncySet |
double |
Hz |
corresponding set value |
|
frequency |
double |
Hz |
measured value |
|
...Array |
double |
... |
measured values from ramped devices are not yet defined |
|
ModuleStatus |
|
moduleStatus |
bool array |
|
depends on power supply interface type |
|
moduleStatus_labels |
2D char* |
|
bit description |
|
Version |
version |
|
|
|
|
|
All acquistion properies implement an internal "onChange" behaviour.
Subsets
Following subsets are defined:
subset name |
setting |
acqusition |
comment |
BasicPS |
current |
current |
|
|
|
currentSet |
|
CryCoolerHvPS |
voltage |
voltage |
|
|
|
voltageSet |
|
|
current |
current |
|
|
|
currentSet |
|
CryRF |
frequency |
voltage |
|
|
voltage |
voltageSet |
|
|
coeffArrFreq |
|
|
|
coeffArrVolt |
|
|
CryIqPS |
voltage |
voltage |
|
|
|
voltageSet |
|
|
current |
current |
|
|
|
currentSet |
|
RampedPS |
coeffArrCurr |
|
|
RampedHvPS |
coeffArrCurr |
|
|
|
coeffArrVolt |
|
|
Multiplexing and Timing Control
The connection to events from timing system depends on the needed real time behaviour of the individual device. Therefore some logical events (VoltageSetEvent, AcquisitionTimerEvent, ...) have to be configured in instance-file.
Logical Events
Defined in FESA-class design file and there connected to a scheduling-unit. Following logical events are used in
PowerSupply
- VoltageSetEvent
Trigger VoltageSetRt action to send setting values to device. Is connected to
- VoltageSetEventSource (onDemand-event): set setting values immediate when Setting property is called
- TimingEventSource (timing-event): set setting values when event from timing system was received
- AcquisitionTimerEvent
Trigger AcquisitionRt action to get acquisition values from device. Is connected to
- TimerEventSource (timer): acquisition values are read periodically
- TimingEventSource (timing-event): read acquisition values when event from timing system was received
- InitSetEvent
Trigger InitSetRt action. Is connected to
- InitSetEventSource (onDemand-event): do it immediate when property was called
- ResetSetEvent
Trigger ResetSetRt action. Is connected to
- ResetSetEventSource (onDemand-event): do it immediate when property was called
- PowerSetEvent
Trigger PowerSetRt action. Is connected to
- PowerSetEventSource (onDemand-event): do it immediate when property was called
- InverterSetEvent
Trigger InverterSetRt action. Is connected to
- InverterSetEventSource (onDemand-event): do it immediate when property was called
Description of the Hardware
(TODO)
- What does it do?
- Set values
- Voltage (in kV)
- SomeCurrent? (in mA) - quite sure: no
- Actual values
- Status
- Error
- Status
- Inerlock Bits
Interface to the Equipment
A wide range of PowerSupply interfaces is supported in FESL (Frontend Support Library). All of them are derivated from abstract
PowerSupply -interface-class. The PowerSupply FESA-class works with this abstract interface.
hier fehlt noch: TODO
- HW-Interface macht Power Status Inverter ModuleStatus OnOff -line,... für div. HW-Schnittstellen (DIOB, ACU,...)
- ValueHandler werden injiziert (Single-, Tuple-, SingleRamp -, TupleRamp -ValueHandler) für div. HW (ADC, ACU, DIOB, FG,...)
- TODO
- The SCU communicates with the ACU via SCU-Bus. First information -> SCU Testing
- Equipment is represented by registers in ACU
- The forseen registers are described in the ACU register layout.
- Access from SCU is via Etherbone
- Implemented functionality. This description supplements the general ACU register layout, for the specific case of the~!HV power Supplies.
- Write / Read Set-Voltage:
- Address 1030
- Normation: as described in normation register (address 1090)
- Special considerations, if applicable (e.g. after setting wait 10 ms before value can be read back, ...)
- Read Actual-Voltage:
- Address 1080
- Normation: as described in normation register (address 1110)
- Special considerations, if applicable (e.g. explicitly trigger ADC before, ...)
- Read Normation of set voltage:
- Address 1090
- Meaning: Bit 0 .. 4 bla bla bla
- Read Normation of set voltage:
- Address 1110
- Meaning: Bit 0 .. 4 bla bla bla
- Commands
- Register 1020
- Commands to be used
- Power On: Bit x
- Power Off: Bit y
- Reset: Bit z
- Bits n, m, o .. q: Not used
- Read Interlock-Status
- Registers 1 - 3 used, address 1200, 1201, 1202
- Registers 4 - 6 not used
- What works already?
Operation of the Device
(TODO)
Initial Values, Persistency
- where to start from?
- which data to be persistent?
Functionality of the Front-End Software
- On/Off (-> any procedure needed?)
- Reset
- Precision (time/values)
FESA version
3.0.x
Nomenclatures
PLPSIZ1H (HV PS) (Sollwert: 0 - 100000 V)
PLPSIZ1E (Puller electrode PS) (Sollwert: 0 - 50000 V)
PLPSIZ1ER (Repeller electrode PS) (Sollwert: -5000 - 0 V)
ToDo
- for function generators, especially for MIL: Fiddling acquisition into ramp-data supply, when to send commands like Reset, PowerOn/Off - see wiki-page Further Necessary Function Generator Functionality
- Combining MX and MD
- State machine in MX has to be used also for MD
- maybe special internal event evokes execution of a read after a write if MD
- State machine is normal DEVICE_MODE enum plus some more states
- Use two different, or extend?
- Min/Max values (Still relevant?)
- Guideline says it should be sent with props.
- Better idea:
- Hold it as configuration constants in FESA class
- Readable with prop Constants
- Hardware status bits -> talk to EET
- Colored items are not implemented:
If you want to access the classes from JAPC, see
here.
If yo need to run classes/clients (C++/Java) check
this.
Issues on subscriptions with JAPC regarding "DevAcc vs. FESA" are documented
here.
For an overview of the status enums in FESA look at
state_enums.doc.