def getClosed(self): #return self.closed if self.type == "source": retval = tagClient.readTags([self.tagName], "grid") elif self.type == "load": retval = tagClient.readTags([self.tagName], "load") # retval = not retval self.closed = retval return retval
def measurePower(self): print("currentTag in customer profile:") print(self.currentTag) currentvals = tagClient.readTags([self.currentTag],"load") print("voltageTag in customer profile:") print(self.voltageTag) voltagevals = tagClient.readTags([self.voltageTag],"load") print("measure power") power = currentvals * voltagevals print("measure finished") # self.tagCache[self.powerTag] = (power, datetime.now()) return power
def confirmrelaystate(self): conncheck = tagClient.readTags([self.relayTag], "grid") if conncheck == self.connected: return True else: print("relay state discrepancy found")
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
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 waitForSettle(self): current = tagClient.readTags([self.regItag], "source") if abs(current) < .01: self.connected = self.disconnect() else: now = datetime.now() Core.schedule(now + timedelta(seconds=1), self.waitForSettle)
def sumCurrents(self): inftags = [] for edge in self.interzonaledges: inftags.append(edge.currentTag) ## still need more consideration about classify tag if len(inftags) > 0: if self.edge == 0 or 1 or 2: infcurrents = tagClient.readTags(inftags, "grid") else: infcurrents = tagClient.readTags(inftags, "load") print("inftags: {inf}".format(inf=inftags)) total = 0 for edge in self.interzonaledges: if edge.startNode is self: total -= infcurrents.get(edge.currentTag) elif edge.endNode is self: total += infcurrents.get(edge.currentTag) else: pass return total
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: if self.branch == "MAIN": infcurrents = tagClient.readTags(inftags, "grid") else: infcurrents = tagClient.readTags(inftags, "load") 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
def getRegV(self): tagName = self.regVtag #call to CIP wrapper value = tagClient.readTags([tagName], "source") return value
def getChargeVoltage(self): return tagClient.readTags([self.chargeVoltageTag],"grid")
def getVoltage(self): return tagClient.readTags([self.voltageTag], "load")
def measureVoltage(self): tag = self.voltageTag tagval = tagClient.readTags([tag],"load") self.tagCache[tag] = (tagval, datetime.now()) return tagval
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")))
def measureCurrent(self): tag = self.currentTag tagval = tagClient.readTags([tag],"load") self.tagCache[tag] = (tagval, datetime.now()) return tagval
def addVoltageOffset(self, deltavoffset): voffset = tagClient.readTags([self.noLoadVoltage], "source") voffset += deltavoffset tagClient.writeTags([self.noLoadVoltage], [voffset], "source")
def getUnregV(self): tagName = self.unregVtag value = tagClient.readTags([tagName]) return value
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
def getChargeCurrent(self): return tagClient.readTags([self.chargeCurrentTag],"grid")
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")
def getCurrent(self): if self.branch == "MAIN": return tagClient.readTags([self.currentTag], "grid") else: return tagClient.readTags([self.currentTag], "load")
def measureCurrent(self): # print(self.currentTag) return tagClient.readTags([self.currentTag], "load")
def measureVoltage(self): # print (self.voltageTag) return tagClient.readTags([self.voltageTag], "load")
def measurePF(self): return tagClient.readTags([powerfactorTag], "grid")
def getRegI(self): tagName = self.regItag value = tagClient.readTags([tagName]) return value
def getUnregI(self): tagName = self.unregItag value = tagClient.readTags([tagName], "source") return value
def measurePF(self): tag = self.powerfactorTag tagval = tagClient.readTags([tag],"load") self.tagCache[tag] = (tagval, datetime.now()) return tagval