Exemple #1
0
 def waitForSettle(self):
     current = tagClient.readTag([self.regItag])
     if abs(current) < .01:
         self.connected = self.disconnect()
     else:
         now = datetime.now()
         Core.schedule(now + timedelta(seconds=1), self.waitForSettle)
Exemple #2
0
    def ramp(self, setpoint, maxStep=.5, disconnectWhenFinished=False):
        tag = self.pSetpointTag
        currentSetpoint = tagClient.readTags([tag])
        diff = setpoint - currentSetpoint
        if diff > maxStep:
            currentSetpoint += maxStep
        elif diff < -maxStep:
            currentSetpoint -= maxStep
        else:
            currentSetpoint += diff
        tagClient.writeTags([tag], [currentSetpoint])

        if abs(diff) > .001:
            #schedule a callback, allowing some time for actuation
            sched = datetime.now() + timedelta(seconds=1.5)
            Core.schedule(sched, self.ramp)
            print("{me} is scheduling another ramp call: {cs}".format(
                me=self.channelNumber, cs=currentSetpoint))
            if disconnectWhenFinished == True and setpoint == 0:
                print("ramp with disconnect completed, disconnecting {me}".
                      format(me=self.channelNumber))
                self.disconnect()
        else:
            print("{me} is done ramping to {set}".format(me=self.name,
                                                         set=setpoint))
Exemple #3
0
 def disconnectSoft(self):
     #change setpoint to zero
     tagClient.writeTags([self.pSetpointTag], [0])
     #callback and keep calling back until the current is almost zero
     now = datetime.now()
     Core.schedule(now + timedelta(seconds=1), self.waitForSettle)