Skip to main content

Python common code base to control devices high voltage research devices, in particular, as used in Christian Franck's High Voltage Lab (HVL), D-ITET, ETH

Project description

HVL Common Code Base

Pipeline status Coverage report Documentation Status

Python common code base to control devices high voltage research devices, in particular, as used in Christian Franck’s High Voltage Lab (HVL), D-ITET, ETH.

  • Free software: GNU General Public License v3

  • Documentation:
    • if you’re planning to develop start w/ reading “CONTRIBUTING.rst”, otherwise either

    • read HVL CCB documentation at RTD, or

    • install Sphinx and sphinx_rtd_theme Python packages and locally build docs on Windows in git-bash by running:

      $ ./make.sh docs

      from a shell with Make installed by running:

      $ make docs

      The target index HTML (“docs/_build/html/index.html”) will open automatically in your Web browser.

Features

Manage experiments with ExperimentManager instance controlling one or more of the following devices:

  • a MBW973 SF6 Analyzer / dew point mirror over a serial connection (COM-ports)

  • a LabJack (T7-PRO) device using a LabJack LJM Library for communication

  • a Schneider Electric ILS2T stepper motor drive over Modbus TCP

  • a Elektro-Automatik PSI9000 DC power supply using VISA over TCP for communication

  • a Rhode & Schwarz RTO 1024 oscilloscope using VISA interface over TCP::INSTR

  • a state-of-the-art HVL in-house Supercube device variants using an OPC UA client

  • a Heinzinger Digital Interface I/II and a Heinzinger PNC power supply over a serial connection

  • a passively Q-switched Pulsed Laser and a laser attenuator from CryLas over a serial connection

  • a Newport SMC100PP single axis motion controller for 2-phase stepper motors over a serial connection

  • a Pfeiffer TPG controller (TPG 25x, TPG 26x and TPG 36x) for Compact pressure Gauges

  • a SST Luminox Oxygen sensor device controller over a serial connection

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

History

0.4.0 (2020-07-16)

  • Significantly improved new Supercube device controller:
    • more robust error-handling,

    • status polling with generic Poller helper,

    • messages and status boards.

    • tested with a physical device,

  • Improved OPC UA client wrapper, with better error handling, incl. re-tries on concurrent.futures.TimeoutError.

  • SST Luminox Oxygen sensor device controller.

  • Backward-incompatible changes:
    • CommunicationProtocol.access_lock has changed type from threading.Lock to threading.RLock.

    • ILS2T.relative_step and ILS2T.absolute_position are now called, respectively, ILS2T.write_relative_step and ILS2T.write_absolute_position.

  • Minor bugfixes and improvements:
    • fix use of max resolution in Labjack.set_ain_resolution(),

    • resolve ILS2T devices relative and absolute position setters race condition,

    • added acoustic horn function in the 2015 Supercube.

  • Toolchain changes:
    • add Python 3.8 support,

    • drop pytest-runner support,

    • ensure compatibility with labjack_ljm 2019 version library.

0.3.5 (2020-02-18)

  • Fix issue with reading integers from LabJack LJM Library (device’s product ID, serial number etc.)

  • Fix development requirements specification (tox version).

0.3.4 (2019-12-20)

  • New devices using serial connection:
    • Heinzinger Digital Interface I/II and a Heinzinger PNC power supply

    • Q-switched Pulsed Laser and a laser attenuator from CryLas

    • Newport SMC100PP single axis motion controller for 2-phase stepper motors

    • Pfeiffer TPG controller (TPG 25x, TPG 26x and TPG 36x) for Compact pressure Gauges

  • PEP 561 compatibility and related corrections for static type checking (now in CI)

  • Refactorings:
    • Protected non-thread safe read and write in communication protocols

    • Device sequence mixin: start/stop, add/rm and lookup

    • .format() to f-strings

    • more enumerations and a quite some improvements of existing code

  • Improved error docstrings (:raises: annotations) and extended tests for errors.

0.3.3 (2019-05-08)

  • Use PyPI labjack-ljm (no external dependencies)

0.3.2 (2019-05-08)

  • INSTALLATION.rst with LJMPython prerequisite info

0.3.1 (2019-05-02)

  • readthedocs.org support

0.3 (2019-05-02)

  • Prevent an automatic close of VISA connection when not used.

  • Rhode & Schwarz RTO 1024 oscilloscope using VISA interface over TCP::INSTR.

  • Extended tests incl. messages sent to devices.

  • Added Supercube device using an OPC UA client

  • Added Supercube 2015 device using an OPC UA client (for interfacing with old system version)

0.2.1 (2019-04-01)

  • Fix issue with LJMPython not being installed automatically with setuptools.

0.2.0 (2019-03-31)

  • LabJack LJM Library communication wrapper and LabJack device.

  • Modbus TCP communication protocol.

  • Schneider Electric ILS2T stepper motor drive device.

  • Elektro-Automatik PSI9000 current source device and VISA communication wrapper.

  • Separate configuration classes for communication protocols and devices.

  • Simple experiment manager class.

0.1.0 (2019-02-06)

  • Communication protocol base and serial communication implementation.

  • Device base and MBW973 implementation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hvl_ccb-0.4.0.tar.gz (134.4 kB view hashes)

Uploaded Source

Built Distribution

hvl_ccb-0.4.0-py2.py3-none-any.whl (111.6 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page