From HFML-FELIX Wiki
| Template | |
| Korte samenvatting | |
|---|---|
| Doel | |
| Eisen | |
| Hardware | |
| Software | |
| Documentatie | |
| Bijlagen |
Korte samenvatting
[edit | edit source]De Thorlabs powermeter in gebruik voor het diagnostisch station van FELIX blijkt onbetrouwbaar en wordt daarom vervangen. Er komt een nieuwe powermeter. De software voor communicatie met de powermeter wordt vervangen en gaat op de server draaien.
Doel
[edit | edit source]Een powermeter die stabiel en betrouwbaar werkt voor operators en gebruikers.
Eisen
[edit | edit source]Hardware
[edit | edit source]- Bruikbaar voor FELIX golflengtebereik (3-150 µm)
- Meetbare pulsenergie van 0.1-300 mJ
- Diameter head > 30mm
- Extern triggerbaar
- Ethernet aansluiting
Software
[edit | edit source]- Algemeen
- Uitlezen (nieuw ivm nieuwe hardware)
- Gemeten waardes publiceren naar MQTT
- Bedienen hardware (bestaande code)
- Bedienen flipper mirror om meting te starten/stoppen
- 3 dB inzetten voor inzetten flipper mirror om sensor te beschermen
- Hier moet een override voor mogelijk zijn (zie bijlage 1)
- Meer attenuation inzetten om ruwe meetwaarde < 50 mJ te houden (belangrijk bij korte golflengtes omdat de sensor dan niet goed gevuld wordt en alle energie op een klein gebied valt waarbij de damage threshold overschreden kan worden)
- Waarde van attenuators meerekenen in meetwaarde
- Alle attenuators inzetten alvorens de flipper mirror te verwijderen
- Hier moet een override voor mogelijk zijn (zie bijlage 1)
- Estimate power (bestaande code)
- Als de flipper mirror uit is en de powermeter dus niets kan meten, dan moet deze een schatting van de schotenergie moeten maken aan de hand van integraal van de pyro
- Powerscan (bestaande code)
- Op aanvraag van operator/gebruiker moet een powerscan worden gemaakt van schotenergie vs golflengte.
- Het programma stuurt daarvoor de undulator aan via MQTT/undulatord
- De golflengte van de spectrometer wordt daarbij opgeslagen
Documentatie
[edit | edit source]Bijlagen
[edit | edit source]Bijlage 1: MQTT topics
[edit | edit source]Het is de bedoeling dat de topics gelijk blijven met de oude, zodat de GUI en de gebruikersprogramma's niet hoeven te veranderen
dependencies
[edit | edit source]The powermeter daemon depends on these topics for the correct interpretation of the state of the various devices to control.
| Topic | Description | Reason |
|---|---|---|
| FELIX/ETH484/ETH484-11/digital/5/state | fel mirror out | fel selection |
| FELIX/ETH484/ETH484-11/digital/6/state | fel mirror in | fel selection |
| FELIX/ETH484/ETH484-11/digital/7/state | flipper mirror state in | state machine |
| FELIX/ETH484/ETH484-11/digital/8/state | flipper mirror state out | state machine |
| FELIX/ETH484/ETH484-11/relay/4/state | flipper mirror relay | state machine |
| FELIX/ETH484/ETH484-11/digital/1/state | lw 5 dB in | attenuation |
| FELIX/ETH484/ETH484-11/digital/3/state | lw 3 dB in | attenuation |
| FELIX/ETH484/ETH484-04/digital/+/state | sw 10,10,10,5 dB in | attenuation |
| FELIX/ETH484/ETH484-05/digital/+/state | sw 3 dB in, lw 10,10,10 dB in | attenuation |
| FELIX/userstation/current | current userstation | optional, convenience |
| FELIX/spectrum_analyzer/mean_wavelength | spectrum analyzer power | offline power indication |
| FELIX/spectrum_analyzer/spectrum_integral | for offline power indication | offline power indication |
commands
[edit | edit source]| Topic | Description | Values |
|---|---|---|
| FELIX/powermeter/measure_request/command | whether the powermeter will actively try to set up for measuring | boolean, True means active, False means passive |
| FELIX/powermeter/protection/command | protection of the powermeter by minimum of 3 dB attenuation | boolean, True means active, False means inactive |
| FELIX/powermeter/strict/command | whether the protection must be 3 dB exactly | boolean, True means strictly 3 dB, False means 3 dB or more is ok |
| FELIX/powermeter/refresh | resend all statusses | value does not matter |
| FELIX/powermeter/log_level | set log level | string (notset/debug/info/warning/error/critical) or integer (e.g. 20) |
| FELIX/powermeter/clients/stop | this topic is for remote shutdown of clients (the daemon itself takes no action) | False to stop clients, True to terminate clients |
statusses
[edit | edit source]| Topic | Description | Values |
|---|---|---|
| FELIX/powermeter/state | state machine state | text |
| FELIX/powermeter/shot/json | packed dictionary of the parameters of this shot (see items below) | json string |
| FELIX/powermeter/shot/timestamp | timestamp of this shot | double (unix timestamp) |
| FELIX/powermeter/shot/raw_power | power as measured by Thorlabs powermeter | float (mJ) |
| FELIX/powermeter/shot/real_power | power corrected for attenuation | float (mJ) |
| FELIX/powermeter/shot/estimated_power | power estimated from pyro signal | float (mJ) |
| FELIX/powermeter/shot/attenuation | the attenuation used in calculating this shot's real power | float (dB) |
| FELIX/powermeter/sensor | the string identifier provided by the attached sensor | text |
| FELIX/powermeter/attenuation | the current attenuation | float (dB) |
| FELIX/powermeter/flipper_mirror | the position of the flipper mirror | boolean, True means in, False means out |
| FELIX/powermeter/measure_request/state | whether the powermeter will actively try to set up for measuring | boolean, True means active, False means passive |
| FELIX/powermeter/protection/state | protection of the powermeter by minimum of 3 dB attenuation | boolean, True means active, False means inactive |
| FELIX/powermeter/strict/state | whether the protection must be 3 dB exactly | boolean, True means strictly 3 dB, False means 3 dB or more is ok |
| FELIX/powermeter/fel/current | which beamline is active, hence which attenuator set will be operated | integer, 1 for FEL1/lw, 2 for FEL2/sw |
| FELIX/powermeter/servers/host_pid | server declaration | json formatted text {"startdate": "date time", "state": "active or passive", "hostname": "hostname", "pid": pid} |
| FELIX/powermeter/clients/host_pid | client declaration Note: published by clients, not by this daemon |
json formatted text {"hostname": "hostname", "pid": pid,"state":"master or slave","subsystem":"powermeter","starttime":timestamp} |
| FELIX/powermeter/daemon_time | system time of the host the daemon runs on | unix timestamp (e.g. 1550680653.91) |
| FELIX/powermeter/daemon_time/readable | system time of the host the daemon runs on | human-readable timestamp (e.g. Wed Feb 20 17:37:59 2019) |