Skip to content
Open

isorb #243

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions doc/specific_iocs/gas_liquid_handling/Anton-Paar-iSorb-hp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Anton-Paar iSorb HP

This is a gas adsorption system, used on WISH and also used in the Hydrogen lab.

The principle of operation is to 'dose' gas into a porous material, and measure the rate at which that gas gets adsorbed onto that material. When used on a beamline, we also want to perform neutron measurements between doses.

The iSorb has no native communication interface (despite the manufacturer having been asked for this). Our EPICS support module is implemented in an unusual way:
- There is a program running on the manufacturer PC, alongside the manufacturer software
- This program uses a combination of GUI automation and log-scraping to extract information of interest from the manufacturer software
- This information is then exposed over standard HTTP endpoints
- A usual StreamDevice IOC communicates with these HTTP endpoints

## PC and manufacturer software

The manufacturer software is called `iSorb HPwin` and runs on the equipment-specific PC associated with this system.

:::{important}
The experiment controls team does not maintain the Windows or manufacturer software installation on this PC; that is done by the equipment owners.
:::

## Local control script (`isorb.py`)

This script is software which the experiment controls group has written, and runs on the PC alongside the manufacturer software.

To run it, check out [the support module](https://github.com/isisComputingGroup/epics-isorbhp) locally on the manufacturer PC into `C:\Users\User\isorb-hp`, ensure `uv` is available, and then run:

```
cd C:\Users\User\isorb-hp
uv run isorb.py
```

This will ensure a suitable Python version is used and that dependencies are automatically downloaded.

This script is implemented using FastAPI and exposes standard HTTP endpoints on port `8000`.

## IOC & support module

The IOC and support module run on the NDX in the typical way. The IOC uses streamdevice to poll the HTTP endpoints exposed by the `isorb.py` script.

## Troubleshooting

### GUI actions (pause/resume) do not work

This relies on UI automation, via `pywinauto`. This means that it is sensitive to the state of
the manufacturer software UI. Ensure that:
- The manufacturer software is open, maximised, and in focus
- There are no additional windows 'in front' of the main UI (which shows a diagram including the manifold and various valves)

You can see stack traces by logging on to the equipment-specific PC and checking the logs emitted by the `isorb.py` script; these may give further hints about why the UI automation is failing.
1 change: 1 addition & 0 deletions doc/spelling_wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -395,6 +395,7 @@ isisstat
isissupport
iso
isobus
iSorb
ITC
iTC
itc
Expand Down