- docs/did_you_know/: one short tip per feature added since May 2026 (<date>-<slug>.md, YAML front matter: added/tags/details), listed newest first; index.md describes the format for adding more. - New pages for features that had none: launching, command_history, tab_completion, live_gui, tweak, scanning, status_server, channel_access, shared_files, schematic_panels. Wired into index.rst together with the existing queues page. - Fix archiver_stripchart/listening_monitor: the method is archiver.strip_plot (strip_chart does not exist on DataHub); document the per-device .strip_plot(). - NAMESPACE_MONITOR_FORMAT.md: scan monitoring is wired into Daq's scan callbacks since 2026-09-09. - scripts/eco-docs (+ -install-user-service): build the docs from an own clone and serve them over HTTP as user systemd units, rebuilt by a timer; a failed build never replaces the served site.
61 lines
2.4 KiB
Markdown
61 lines
2.4 KiB
Markdown
# Live schematic panels: prepump, alarms, beamline
|
|
|
|
Some assemblies can draw themselves as a clickable SVG schematic that updates
|
|
live from the control system. These are a scriptable, in-session version of
|
|
the corresponding caQtDM panels. Open one with `.show()`:
|
|
|
|
```python
|
|
prepump.show() # prepump P&ID: valves, gauges, pumps, per-line state
|
|
alarms.show(live=True) # Bernina alarm overview, green/red per channel
|
|
beamline.svg_panel(live=True) # X-ray beamline layout
|
|
```
|
|
|
|
Where the panel appears is chosen automatically: a native Qt window in a
|
|
terminal session, inline in a notebook, docked in the desktop. Force it with
|
|
`backend="window"|"inline"|"sidecar"`. Clicking a symbol acts on that
|
|
component in your live session (e.g. toggling a valve).
|
|
|
|
## Prepump system
|
|
|
|
`prepump` holds the beamline's pre-vacuum lines (`line1_usd`, `line2_lic`,
|
|
`line3`, `line4`) together with the roots pump and the `gp` gauge. Pump-down
|
|
and vent are scripted sequences with the interlocking done for you:
|
|
|
|
```python
|
|
prepump.pump_down("line1_usd") # or prepump.line1_usd.pump_down()
|
|
prepump.vent("line2_lic")
|
|
prepump.isolate_all()
|
|
prepump.check() # lists missing or failed components at every depth
|
|
```
|
|
|
|
`pump_down` closes the line's vent valve and isolates the *other* lines (so
|
|
they are not pumped against a rising `gp`). It then opens the line's pump
|
|
valve and waits until both `gp` and the line's own gauge reach the target
|
|
pressure. Afterwards each other line is restored to what it was doing before.
|
|
It returns `True` on success and `False` on timeout (`timeout=700` s by
|
|
default).
|
|
|
|
The building blocks (`VacuumGauge`, `Valve`, `TurboPump`, `IonPump`, ...)
|
|
are described in `eco/devices_general/vacuum/README.md` in the repository.
|
|
|
|
## Alarm panels
|
|
|
|
`alarms` (the Bernina overview), `papamoll_alarms_35fs` and
|
|
`papamoll_alarms_100fs` model the caQtDM alarm overviews. Each channel
|
|
reports `OK`, `WARNING` or `ALARM`:
|
|
|
|
```python
|
|
alarms.worst_severity() # one value for the whole panel
|
|
alarms.show(live=True)
|
|
```
|
|
|
|
Build your own panel from a list of channels with
|
|
`eco.elements.alarm.AlarmPanel`. See `eco/devices_general/alarms/README.md` in
|
|
the repository.
|
|
|
|
## Your own assembly
|
|
|
|
Any `Assembly` that implements `_widget_svg_panel(self, live=False, **kwargs)`
|
|
gets this `.show()` behaviour for free. See {doc}`widget_containers` for
|
|
composing panels from existing widgets instead.
|