From HFML-FELIX Wiki
Jump to: navigation, search


IT project
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.

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
    • Taal: Python v3
    • Code basis: in het mqtt_daemon framework, communicatie met hardware op basis van de bestaande Python 2 code
    • Platform: felix-control (de raspberry pi is niet meer nodig ivm ethernet)
  • 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]
  • code
    • Voldoende documentatie in de code
  • i/o
    • Beschrijving van de API (MQTT interface) op de wiki

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)