示例#1
0
    def connectSoft(self, mode, setpoint):
        ch = self.channelNumber

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

        if tagClient.readTags([self.relayTag]):
            self.connected = True
            return True
        else:
            self.connected = False
            return False
示例#2
0
    def confirmrelaystate(self):
        conncheck = tagClient.readTags([self.relayTag])

        if conncheck == self.connected:
            return True
        else:
            print("relay state discrepancy found")
示例#3
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))
示例#4
0
 def sumCurrents(self):
     inftags = []
     for edge in self.edges:
         if edge.currentTag is not None and len(edge.currentTag) > 0:
             inftags.append(edge.currentTag)
     
     if len(inftags) > 0:
         infcurrents = tagClient.readTags(inftags)
     
     total = 0
     for edge in self.edges:
         if edge.currentTag is not None and len(edge.currentTag) > 0:
             if edge.startNode is self:
                 total -= infcurrents.get(edge.currentTag)
             elif edge.endNode is self:
                 total += infcurrents.get(edge.currentTag)
             else:
                 pass        
     
     return total
示例#5
0
 def sumCurrents(self):
     inftags = []
     for edge in self.interzonaledges:
         inftags.append(edge.currentTag)
     
     if len(inftags) > 0:
         infcurrents = tagClient.readTags(inftags)
         print("inftags: {inf}".format(inf = inftags))
     
     total = 0        
     for edge in self.interzonaledges:
         if edge.startNode in self.nodes:
             total -= infcurrents.get(edge.currentTag)
         elif edge.endNode in self.nodes:
             total += infcurrents.get(edge.currentTag)
         else:
             pass
         
         print "total: {tot} after {nam}".format(tot = total,nam=edge.name)
         
     return total
示例#6
0
 def addVoltageOffset(self, deltavoffset):
     voffset = tagClient.readTags([self.noLoadVoltage])
     voffset += deltavoffset
     tagClient.writeTags([self.noLoadVoltage], [voffset])
示例#7
0
 def measureVoltage(self):
     tag = self.voltageTag
     tagval = tagClient.readTags([tag])
     self.tagCache[tag] = (tagval, datetime.now())
     return tagval
示例#8
0
 def connect(self):
     tagClient.writeTags([self.relayTag], [True])
     #read tag to confirm write success
     self.connected = tagClient.readTags([self.relayTag])
     #self.connected = True
     return self.connected
示例#9
0
 def disconnect(self):
     #disconnect power from the source
     tagClient.writeTags([self.relayTag], [False])
     #read tag to confirm write success
     return tagClient.readTags([self.relayTag])
示例#10
0
 def getUnregI(self):
     tagName = self.unregItag
     value = tagClient.readTags([tagName])
     return value
示例#11
0
 def getRegV(self):
     tagName = self.regVtag
     #call to CIP wrapper
     value = tagClient.readTags([tagName])
     return value
示例#12
0
 def getClosed(self):
     #return self.closed
     retval = tagClient.readTags([self.tagName])
     retval = not retval
     self.closed = retval
     return retval
示例#13
0
 def getChargeVoltage(self):
     return tagClient.readTags([self.chargeVoltageTag])
示例#14
0
 def measureCurrent(self):
     tag = self.currentTag
     tagval = tagClient.readTags([tag])
     self.tagCache[tag] = (tagval, datetime.now())
     return tagval
示例#15
0
 def getVoltage(self):
                 
     return tagClient.readTags([self.voltageTag])
示例#16
0
 def getIrradiance(self):
     irradiance = .1 * tagClient.readTags([self.solarTag], "SG")
     irradiance += random.normalvariate(0, .04)
     return irradiance
示例#17
0
 def measurePower(self):
     tagvals = tagClient.readTags([self.currentTag, self.voltageTag])
     power = tagvals[self.currentTag]*tagvals[self.voltageTag]
     self.tagCache[self.powerTag] = (power, datetime.now())
     return power
示例#18
0
 def getCurrent(self):
     return tagClient.readTags([self.currentTag])
示例#19
0
 def getDischargeCurrent(self):
     return tagClient.readTags([self.dischargeCurrentTag])