def __init__(self): # Objects self.ext = osTools() #Initialise data key press self.xls = xlsLogging(4) #Initialise excel data logging self.pg = plotActiveGraph() #Initialise graphical plot self.ctrl = OnOffController() #Initialise Controller if int(sys.argv[1]) == 1: self.r = testModel("../../tests/") #Initialise simulated lab rig else: self.rw = comClient() #Initialise Modbus comms class # Variables self.count = 0 #For 'heart beat' counter self.cycleTime = 10 #For Control Loop Interval
class OnOffControl: def __init__(self): # Objects self.ext = osTools() #Initialise data key press self.xls = xlsLogging(4) #Initialise excel data logging self.pg = plotActiveGraph() #Initialise graphical plot self.ctrl = OnOffController() #Initialise Controller if int(sys.argv[1]) == 1: self.r = testModel("../../tests/") #Initialise simulated lab rig else: self.rw = comClient() #Initialise Modbus comms class # Variables self.count = 0 #For 'heart beat' counter self.cycleTime = 10 #For Control Loop Interval def run(self): startTime = time.time() #For time reference while(True): loopTime = time.time() #Itteration start time r = self.readDataPipe() #Read data self.xls.writeXls(startTime,r) #Log data in excel self.pg.dataUpdate((time.time() - startTime),r.getRegister(0),r.getRegister(2),r.getRegister(3)) #Add data to plot u = self.ctrl.run(r) #Run controller if int(sys.argv[1]) == 1: self.r.writeModel(u) #Write to model else: self.rw.dataHandler('w',u) #Write to MODBUS system if self.ext.kbdExit(): #Detect exit condition break print self.count #Heartbeat self.count += 1 #Heartbeat time.sleep(self.cycleTime - (time.time() - loopTime)) def readDataPipe(self): if int(sys.argv[1]) == 1: self.r.readModel() return self.r else: return self.rw.dataHandler('r')