Skip to main content

Python library and CLI for our custom electron gun slow-control system

Project description

Custom electron gun slow control Python communication library and GUI utlity

Work in progress

Communication library

The communication library from eguncom.py implements most of the communication protocol with the electron beam slow-control system.

class ElectronGunControl

The ElectronGunControl class implements asynchronous and synchronous communication with the serially / USB attached control system. The port file is passed to the constructor

ctrl = ElectronGunNotConnected(portFile = '/dev/...')

When no port file is passed it defaults to /dev/ttyU0.

The exposed public methods are:

Method Description Synchronous Asynchronous callback
id() Queries the current version with sync = True cbIdentify(controller, versionDate, versionRevision)
getPSUVoltage(channel) Queries the current voltage on the given channel with sync = True cbVoltage(controller, channel, voltageVolts)
getPSUCurrent(channel) Queries the current current on the given channel with sync = True cbCurrent(controller, channel, currentMicroamps)
getPSUModes() Checks if PSUs are off, in voltage limited or current limited mode with sync = True cbPSUMode(controller, states)
getFilamentCurrent() Queries the filament current with sync = True cbFilamentCurrent(controller, current)
off() Disabled all high voltage and filament currents
setPSUPolarity(channel, polarity) Sets polarity to POLARITY_POS or POLARITY_NEG
setPSUEnable(channel) Enables the given PSU channel
setPSUDisable(channel) Disables the given PSU channel
setPSUVoltage(channel, voltage) Sets the given channel to the given voltage
setFilamentCurrent(currentMa) Sets the filament current or target current to the specified milliamps
setFilamentOn() Enabled the filament supply
setFilamentOff() Disabled the filament supply
runInsulationTest() Runs an insulation test with low current limits with sync = True cbInsulation(isOk, listOfShorts)
beamOn() Runs the slow beam on sequence (slowly heating filament to previously set setFilamentCurrent, ramping up voltages) with sync = True cbBeamon()

Usage example

Synchronous sample (USB / serial)

Example to perform a synchronous:

  • Insulation check
  • Startup for 100 mA beam current
  • Looping through focus voltages
  • Shutting down
with ElectronGunControl() as ctrl:
    # Currently a hack to wait for the control system to reset when using the
    # primary port

    time.sleep(5)

    # We want to see the voltages reported by the system so we
    # define a lambda that just prints the voltages while ramping up
    # during insulation test and beam on sequence

    ctrl.cbVoltage = lambda c,chan,v : print("Voltage for channel {} is {} V".format(chan, v))

    # Query it's identity
    ret = ctrl.id(sync = True)
    print("ID call returned {}".format(ret))

    # Run insulation test
    print("Running insulation test")
    ret = ctrl.runInsulationTest(sync = True)
    print("Insulation test returned: {}".format(ret))

    # Run beam on sequence ...
    ret = ctrl.beamOn(sync = True)
    print("Beam on successfully returned: {}".format(ret))

    print("Sweeping focus voltage")
    for focusVoltage in range(1750,1950):
        print("New focus voltage {}".format(focusVoltage))
        ctrl.setPSUVoltage(3, focusVoltage)
        time.sleep(1)

    ctrl.off()
    print("Off, done ...")

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

electronsourcecontroller2-tspspi-0.0.37.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

File details

Details for the file electronsourcecontroller2-tspspi-0.0.37.tar.gz.

File metadata

File hashes

Hashes for electronsourcecontroller2-tspspi-0.0.37.tar.gz
Algorithm Hash digest
SHA256 6ab316470d7060a5fde3eaff64438fc32b2f1fdfbe7d5a39c4d0686f2814dbad
MD5 06a4f68cddd6d47b02775558460afcea
BLAKE2b-256 b1d7202b1794ffa03439b3f5967876682676bd0f1e5568564590ed8cffb42976

See more details on using hashes here.

File details

Details for the file electronsourcecontroller2_tspspi-0.0.37-py3-none-any.whl.

File metadata

File hashes

Hashes for electronsourcecontroller2_tspspi-0.0.37-py3-none-any.whl
Algorithm Hash digest
SHA256 0489c8af70a31d7852327924128f33dc1d2e4a6f7a2f9d4ba80f315dbdc5f3fa
MD5 169b76284399334d40da9a35d49cff81
BLAKE2b-256 9395fe9bcfb4bb7791f1b8aeac80e5e97cd239b0b1eb1bd87469e648d28c86eb

See more details on using hashes here.

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