progpib/pty-gpib-emulator/python/PowerSupply.py

130 lines
3.2 KiB
Python
Raw Normal View History

2020-09-09 00:17:31 -05:00
##
## <<<< Powersupply Emulators >>>>
## by Aidan Macdonald (aidan.plenert.macdonald@gmail.com)
##
## Contains classes that emulate powersupplies by
## building off the Device framework
##
import Device, Prologix
## **** Power Supply class ****
## by Aidan Macdonald (aidan.plenert.macdonald@gmail.com)
##
## General model of a basic Power Supply
##
class PowerSupply(Prologix.Prologix_GPIB_USB):
##%% Initialization PowerSupply(volt, current)
## Creates a framework for a Powersupply, but only binds
## a reset call to "RST?". All other functions have been
## left unbound so that children can bind them to respective
## commands
##
## voltage and current default to 10
##
def __init__(self, volt=10, cur=10):
Prologix.Prologix_GPIB_USB.__init__(self)
self.addCMD("RST?", self.reset)
self.voltage = volt
self.current = cur
##%% reset(pty, args)
## returns that the device has been reset
##
def reset(self, fpl, args=[]):
return "Power Supply has been reset"
##%% version(pty, args)
## overrides the version function from superclass
## left unbound here, because it was bound in the
## superclass.
##
def version(self, fpl, args=[]):
return "Power Supply Version 1.GEN"
##%% on(pty, args)
## turns power supply on
##
def on(self, fpl, args=[]):
return self.version(fpl, args) + " in now ON"
##%% off(pty, args)
## turns power supply off
##
def off(self, fpl, args=[]):
return self.version(fpl, args) + " in now OFF"
##%% getVoltage(pty, args)
## returns voltage
##
def getVoltage(self, fpl, args=[]):
return self.voltage
##%% getCurrent(pty, args)
## returns current
##
def getCurrent(self, fpl, args=[]):
return self.current
##%% setVoltage(pty, args)
## sets voltage
##
def setVoltage(self, fpl, args=[]):
try:
self.voltage = float(args[0])
return ""
except:
return "ERROR"
##%% setCurrent(pty, args)
## sets current
##
def setCurrent(self, fpl, args=[]):
try:
self.current = float(args[0])
return ""
except:
return "ERROR"
##
## **** E3631A Power Supply Class ****
## by Aidan Macdonald (aidan.plenert.macdonald@gmail.com)
##
## Emulates the E3631A Power Supply
##
class E3631A(PowerSupply):
##%% Initialization - E3631A(voltage, current)
## see PowerSupply.PowerSupply documentation
##
## adds bindings for all of the PowerSupply functions
##
def __init__(self, volt=10, cur=10):
PowerSupply.__init__(self, volt, cur)
self.addCMD("OUTP", self.outp)
self.addCMD("MEAS:VOLT:DC", self.getVoltage)
self.addCMD("MEAS:CURR:DC", self.getCurrent)
self.addCMD("SET:VOLT:DC", self.setVoltage)
self.addCMD("SET:CURR:DC", self.setCurrent)
##%% version(pty, args)
## returns version
##
def version(self, fpl, args=[]):
return "E3631A Power Supply"
##%% outp(pty, args)
## function binding for the "OUTP" command
## Used to turn the device on and off
##
def outp(self, fpl, args=[]):
if args[0] == "ON":
return self.on(fpl, args)
elif args[0] == "OFF":
return self.off(fpl, args)
return ""