Specification
[edit | edit source]- period length: 110 mm
- # periods: 40
- Undulator field: 0.1–0.47 T
- Gap: 24.5–300 mm
- Speed: nominal 5 mm/s, max 10 mm/s
- motor resolution: 1 µm
- max taper: 5 mm
Special: The FLARE undulator has horizontal focussing (groove in magnets).
Interface
[edit | edit source]The FLARE undulator is controlled by the pc oc-control. A python windows service controls the stepper motors via NI-Motion libraries and also reads the IK220 encoders. The service exposes the following API via MQTT.
All topics below belong to prefix FLARE/undulator/
read
[edit | edit source]| topic | description |
|---|---|
| up/downstream/encoder/gap | The gap as read by the corresponding encoder (in mm) |
| up/downstream/encoder/position | The absolute position of the corresponding encoder (float with 51.2 units/mm scale, with arbitrary offset) |
| up/downstream/forward_limit_active | The forward limit switch (True = reached, False = not reached) |
| up/downstream/reverse_limit_active | The reverse limit switch (True = reached, False = not reached) |
| up/downstream/gap | The gap according to the motor position as determined by the NI-motion library (in mm) |
| up/downstream/position | The motor position as determined by the NI-motion library (in steps) |
| gap | The current undulator gap (mm) |
| taper | The current undulator taper (mm) |
| homed | Whether the axis has been homed (not relevant for FLARE) |
| homing | Whether the axis is currently homeing (not relevant for FLARE) |
| moving | Whether the axis is currently moving (True/False) |
| state | What the axis is currently doing (idle/moving/homing/approaching) |
| time | The current time on oc-control (for debugging purposes, doubles as alive signal) |
| servers | List of servers for this device. |
| clients | List of clients for this device. |
write
[edit | edit source]| topic | description |
|---|---|
| brake/cmd | command to release the brake |
| killswitch_override/cmd | use only if you know what you are doing! |
| wavelength/setpoint | command to move undulator to a certain wavelength |
| dipole_current | setting for calculating wavelength in accordance of undulator gap. |
| gap/setpoint | command to change the undulator gap in mm |
| wavenumbers/setpoint | command to drive undulator to certain wavenumbers |
| acceleration/setpoint | command to control the acceleration in mm/s^2 |
| velocity/setpoint | command to control the speed in mm/s |
| taper/setpoint | command to put a taper in mm for the undulator |
| stopdecelerate | command to smoothly brake the undulator |
| stophalt | command to abrupt stop the undulator |
Motors
[edit | edit source]The motors are equipped with a brake. The motor encoders are not used (i.e. the stepper motor driver motion cards keep track of the position). The position in steps is zero at a 300mm gap. The position increases with +12000 steps each mm that the undulator is closed further.
Electrical connections
[edit | edit source]The pc oc-control has two PXI-7330 NI-Motion PCI cards. The one with serial 21266866 (0x14481B2) is the one controlling the FLARE undulator axes. Axis 1 is upstream and axis 2 is downstream. The other axes are not in use (on 2018-03-29). There is a junction box containing relays and logic for the limit/kill switches, the emergency stop, and the warning lamp. Both ports have to be set to the non-default setting ACTIVE_HIGH, except for the emergency stop reset which is ACTIVE_LOW.
The digital i/o port on axis 1 is used for input signals.
| Bit | Byte value | Connection | Values |
|---|---|---|---|
| 0 | 1 | Kill switch ok | True = not reached (ok), False = reached (not ok) |
| 1 | 2 | Emergency stop ok | True = not pushed (ok), False = pushed (not ok) |
| 2 | 4 | Brakes released (relay NO) | True = released (ok to move), False = held (not ok to move) |
| 3 | 8 | Brakes held (relay NC) | True = held (not ok to move), False = released (ok to move) |
| 4 | 16 | Light on (relay NO) | True = on, False = off |
| 5 | 32 | Light off (relay NC) | True = off, False = on |
| 6 | 64 | Not connected | Not applicable |
| 7 | 128 | Not connected | Not applicable |
The digital i/o port on axis 2 is used for output signals.
| Bit | Byte value | Connection | Values |
|---|---|---|---|
| 0 | 1 | Override kill switches | True = override, False = normal function |
| 1 | 2 | Request brake release | True = release, False = hold |
| 2 | 4 | Request emergency stop reset | True = reset, False = no action (ACTIVE_LOW) |
| 3 | 8 | Request warning light on | True = on, False = off |
| 4 | 16 | Not connected | Not applicable |
| 5 | 32 | Not connected | Not applicable |
| 6 | 64 | Not connected | Not applicable |
| 7 | 128 | Not connected | Not applicable |
Please note: If the kill switch is active, the brakes cannot be released (i.e. the request is ignored). The light, however, can be turned on.
Limits
[edit | edit source]| Gap (mm) | Limit |
|---|---|
| 24.8 | Software limit |
| 24.7 | Limit switch |
| 24.6 | Kill switch |
| 24.5 | Mechanical hard stop |
Procedures
[edit | edit source]Procedure Calibrate FLARE undulator
Remarks
[edit | edit source]- It seems that, after a reboot of oc-control, it might sometimes be necessary to reinitialize the undulator controller board with NI-MAX (select 20180328 Undulator Board Settings (VIC) and press Initialize. ➤ Victor 17:34, 12 September 2018 (CEST)