|
| 1 | +import minimalmodbus, serial |
| 2 | + |
| 3 | +# Example Usage: |
| 4 | +# import pydps |
| 5 | +# dps = pydps.dps_psu('COM3', 1) # port name, slave address |
| 6 | +# print(dps.getModel()) |
| 7 | +# print(dps.getVoltage()) |
| 8 | + |
| 9 | + |
| 10 | +class dps_psu(minimalmodbus.Instrument): |
| 11 | + |
| 12 | + def __init__(self, portname, slaveaddress): |
| 13 | + minimalmodbus.Instrument.__init__(self, portname, slaveaddress,mode='rtu') |
| 14 | + self.serial.baudrate = 9600 |
| 15 | + self.serial.bytesize = 8 |
| 16 | + self.serial.parity = serial.PARITY_NONE |
| 17 | + self.serial.stopbits = 1 |
| 18 | + self.serial.timeout = 0.5 |
| 19 | + |
| 20 | + def getVoltage(self): |
| 21 | + return self.read_register(0x0002,2) |
| 22 | + |
| 23 | + def getCurrent(self): |
| 24 | + return self.read_register(0x0003,3) |
| 25 | + |
| 26 | + def getPower(self): |
| 27 | + return self.read_register(0x0004,2) |
| 28 | + |
| 29 | + def setVoltage(self,volt): |
| 30 | + self.write_register(0x0000,volt,2) |
| 31 | + |
| 32 | + def setCurrent(self,curr): |
| 33 | + self.write_register(0x0001,curr,3) |
| 34 | + |
| 35 | + def setOutput(self,on): |
| 36 | + self.write_register(0x0009,(1 if on else 0),0) |
| 37 | + |
| 38 | + def getInputVoltage(self): |
| 39 | + return self.read_register(0x0005,2) |
| 40 | + |
| 41 | + def getFwVersion(self): |
| 42 | + return self.read_register(0x000C,0) |
| 43 | + |
| 44 | + def getModel(self): |
| 45 | + return self.read_register(0x000B,0) |
| 46 | + |
| 47 | + def setKeyLock(self, lock): |
| 48 | + self.write_register(0x0006,(1 if lock else 0),0) |
| 49 | + |
| 50 | + # Read all interesting status registers at once |
| 51 | + def getFullData(self): |
| 52 | + buf = self.read_registers(0x00,10) |
| 53 | + dat = {"u-set" : buf[0]*0.01, "i-set": buf[1]*0.001, "u-out":round(buf[2]*0.01,2), "i-out":round(buf[3]*0.001,3), "power":round(buf[4]*0.01,2), "u-in":buf[5]*0.01, "lock":buf[6], "protect":buf[7], "cvcc":buf[8],"on":buf[9]} |
| 54 | + return dat |
0 commit comments