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