Description
At the heart of ETH High Voltage Lab's (HVL) research are industrial
devices put
together into code-automated experiments. It's a zoo of industrial
communication
protocols one needs to handle when controlling these devices. HVL
decided to switch from
MATLAB to Python as a programming and analysis tool. Python community
provides solutions
to majority of technicalities involved in handling multitude of
industrial communication
protocols used to control high voltage research experiment devices.
Moreover
Python seems to be a more future-proof choice, meeting industry demand
for a more
cost-effective and collaborative solution.
The HVL Common Code Basis library (hvl_ccb) provides a uniform
user-friendly
object-oriented API as well as implementation for multiple of high
voltage engineering
devices and their respective communication protocols. The library
leverages Python's
open source community - implementations of specific communication
protocols, but also
relies heavily on some of the languages newer features such as typing
hints, dataclasses
or enums.
Python typing hints are used not only for their static type checking
and autocompletion
support from IDEs, but also for dynamic type checking of the
communication protocol's
and devices' configurations. The configurations themselves are a
customized
implementation of Python's 3.7 dataclasses. Configurations properties
rely heavily on
Python (advanced) enumerations.
Currently, the library supports serial port, VISA over TCP, Modbus
TCP, LabJack LJM and
OPC UA communication protocols. These protocols are used within code
abstraction of
devices such MBW973 SF6 Analyzer / dew point mirror, LabJack (T7-PRO)
device, Schneider
Electric ILS2T stepper motor drive, Elektro-Automatik PSI9000 DC power
supply, Rhode &
Schwarz RTO 1024 oscilloscope, or the Lab's state-of-the-art Supercube
platform, which
encapsulates safety components, the voltage source, as well as other
auxiliary devices.
The library leverages Python richness to provide a uniform user-friendly API for a zoo of industrial communication protocols used to control high voltage engineering devices, together with abstraction and implementations for such devices.