Example #1
0
 def changeReserve(self, newPower, voffset):
     print("changereserve")
     self.setpoint = newPower
     droopCoeff = self.setpoint / (self.noLoadVoltage - self.refVoltage)
     tagClient.writeTags([self.droopCoeffTag, self.noLoadVoltageTag],
                         [droopCoeff, self.noLoadVoltage + voffset],
                         "source")
Example #2
0
    def ramp(self, setpoint, maxStep=.5, disconnectWhenFinished=False):
        tag = self.pSetpointTag
        currentSetpoint = tagClient.readTags([tag], "source")
        diff = setpoint - currentSetpoint
        if diff > maxStep:
            currentSetpoint += maxStep
        elif diff < -maxStep:
            currentSetpoint -= maxStep
        else:
            currentSetpoint += diff
        tagClient.writeTags([tag], [currentSetpoint], "source")

        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))
 def openRelay(self):
     if (self.type == "load"
             and self.branch == "main") or self.type == "source":
         tagClient.writeTags([self.tagName], [False], "grid")
     elif self.type == "load" and self.branch != "main":
         tagClient.writeTags([self.tagName], [False], "load")
     self.closed = False
     print("open relay")
Example #4
0
 def connectWithSet(self, setpoint, voffset=0):
     self.setpoint = setpoint
     droopCoeff = self.setpoint / (self.noLoadVoltage - self.refVoltage)
     #set up parameters for droop control
     tags = [self.noLoadVoltageTag, self.droopCoeffTag, self.droopSelectTag]
     values = [
         self.noLoadVoltage + voffset,
         self.setpoint / (self.noLoadVoltage - self.refVoltage), True
     ]
     tagClient.writeTags(tags, values, "source")
     #close relay and connect source
     self.connected = self.connect()
     return self.connected
 def closeRelay(self):
     if self.type == "infrastructure":
         tagClient.writeTags([self.tagName], [False], "load")
     elif (self.type == "load"
           and self.branch == "main") or self.type == "source":
         tagClient.writeTags([self.tagName], [True], "grid")
     elif self.type == "load" and self.branch != "main":
         tagClient.writeTags([self.tagName], [True], "load")
     print("close relay")
     self.closed = True
Example #6
0
    def connectSoft(self, mode, setpoint):
        ch = self.channelNumber

        if mode == "Vreg":
            tagClient.writeTags([self.vSetpointTag], [0], "source")
            tags = [
                self.battSelectTag, self.powerSelectTag, self.swingSelectTag
            ]
            tagClient.writeTags([tags], [False, False, True], "source")
            tagClient.writeTags([self.relayTag], [True], "source")
            tagClient.writeTags([self.vSetpointTag], [setpoint], "source")
        elif mode == "Preg":
            tagClient.writeTags([self.pSetpointTag], [0], "source")
            tags = [
                self.battSelectTag, self.powerSelectTag, self.swingSelectTag
            ]
            tagClient.writeTags([tags], [False, True, False], "source")
            tagClient.writeTags([self.relayTag], [True], "source")
            self.ramp(setpoint)
        elif mode == "BattCharge":
            tags = [self.pSetpointTag, self.battSelectTag]
            tagClient.writeTags([tags], [0, True], "source")
            tag = "SOURCE_{d}_BatteryReqCharge".format(d=self.channelNumber)
            tagClient.writeTags([tag], [True], "source")
            tagClient.writeTags([self.pSetpointTag], [setpoint], "source")
        else:
            print("CHANNEL{ch} received a bad mode request: {mode}".format(
                ch=self.channelNumber, mode=mode))

        if tagClient.readTags([self.relayTag], "source"):
            self.connected = True
            return True
        else:
            self.connected = False
            return False
Example #7
0
 def addVoltageOffset(self, deltavoffset):
     voffset = tagClient.readTags([self.noLoadVoltage], "source")
     voffset += deltavoffset
     tagClient.writeTags([self.noLoadVoltage], [voffset], "source")
Example #8
0
 def setVoltageOffset(self, voffset):
     tagClient.writeTags([self.noLoadVoltageTag],
                         [self.noLoadVoltage + voffset], "source")
Example #9
0
 def changeSetpoint(self, newPower):
     print("changeSetpoint")
     self.setpoint = newPower
     droopCoeff = self.setpoint / (self.noLoadVoltage - self.refVoltage)
     tagClient.writeTags([self.droopCoeffTag], [droopCoeff], "source")
Example #10
0
 def connect(self):
     tagClient.writeTags([self.relayTag], [True], "grid")
     #read tag to confirm write success
     self.connected = tagClient.readTags([self.relayTag], "grid")
     #self.connected = True
     return self.connected
Example #11
0
 def disconnectsourceSoft(self):
     #change setpoint to zero
     tagClient.writeTags([self.pSetpointTag], [0], "source")
     #callback and keep calling back until the current is almost zero
     now = datetime.now()
     Core.schedule(now + timedelta(seconds=1), self.waitForSettle)
Example #12
0
 def disconnect(self):
     #disconnect power from the source
     tagClient.writeTags([self.relayTag], [False], "grid")
     #read tag to confirm write success
     print(self.relayTag)
     return tagClient.readTags([self.relayTag], "grid")
Example #13
0
 def connectCustomer(self):
     tagClient.writeTags([self.relayTag],[True],"load")
     print("connect customer")
     print("relay {relaytag} status: {status}".format(relaytag = self.relayTag, status = tagClient.readTags([self.relayTag],"load")))