public static int getBusType(Bus bus) { Objects.requireNonNull(bus, "bus is null"); int type = BusData.BUS_TYPE_PQ; // a connection bus is PQ if (bus.getGenerators() != null) { for (Generator generator : bus.getGenerators()) { if (generator.isVoltageRegulatorOn()) { type = BusData.BUS_TYPE_PV; // a bus with attached a generator with voltage regulator on is PV break; } } } // if ( bus.getLoads() != null && bus.getLoads().iterator().hasNext() && type == 3 ) // type = MCSBusData.BUS_TYPE_PV; // a bus with attached both loads and generators is anyway a PV return type; }
@Override public void visitGenerator(Generator generator) { if (generator.isVoltageRegulatorOn()) { decoratedBus.regulatingGenerator++; decoratedBus.maxP += generator.getMaxP(); decoratedBus.minP += generator.getMinP(); decoratedBus.targetP += generator.getTargetP(); } } });
private static void connectGenerator(Generator g) { Terminal t = g.getTerminal(); t.connect(); if (g.isVoltageRegulatorOn()) { Bus bus = t.getBusView().getBus(); if (bus != null) { // set voltage setpoint to the same as other generators connected to the bus double targetV = bus.getGeneratorStream().findFirst().map(Generator::getTargetV).orElse(Double.NaN); // if no other generator connected to the bus, set voltage setpoint to network voltage if (Double.isNaN(targetV) && !Double.isNaN(bus.getV())) { g.setTargetV(bus.getV()); } } } LOGGER.info("Connecting {}", g.getId()); } }
public static boolean isRedispatchable(Generator generator, float redispatchLimitsPercentage) { return (generator.getTerminal().getBusBreakerView().getBus() != null) // is connected && (generator.getEnergySource() == EnergySource.HYDRO || generator.getEnergySource() == EnergySource.THERMAL) // is hydro or thermal && (generator.getTerminal().getP() < 0) // inject power && (generator.isVoltageRegulatorOn()) // has voltage regulator on && (generator.getTargetP() <= getRedispatchPMax(generator, redispatchLimitsPercentage) && generator.getTargetP() >= getRedispatchPMin(generator, redispatchLimitsPercentage)); // target P is within redispatch limits //&& (generator.getTargetP() <= generator.getMaxP() && generator.getTargetP() >= generator.getMinP()) // target P is within limits }
@Override protected void writeRootElementAttributes(Generator g, VoltageLevel vl, NetworkXmlWriterContext context) throws XMLStreamException { context.getWriter().writeAttribute("energySource", g.getEnergySource().name()); XmlUtil.writeDouble("minP", g.getMinP(), context.getWriter()); XmlUtil.writeDouble("maxP", g.getMaxP(), context.getWriter()); XmlUtil.writeDouble("ratedS", g.getRatedS(), context.getWriter()); context.getWriter().writeAttribute("voltageRegulatorOn", Boolean.toString(g.isVoltageRegulatorOn())); XmlUtil.writeDouble("targetP", g.getTargetP(), context.getWriter()); XmlUtil.writeDouble("targetV", g.getTargetV(), context.getWriter()); XmlUtil.writeDouble("targetQ", g.getTargetQ(), context.getWriter()); writeNodeOrBus(null, g.getTerminal(), context); writePQ(null, g.getTerminal(), context.getWriter()); }
if (g.isVoltageRegulatorOn()) { double oldP = g.getTargetP(); LOGGER.trace(" gen {} - P:{} -> P:{}", g.getId(), oldP, gs.p);
private static void updateSlackBusData(Bus bus, Integer busIndex, SlackBusData slackBusData) { if (bus.getGenerators() == null) { return; } //...slackbus has at least one generator connected for (Generator generator : bus.getGenerators()) { //...which has a generator with voltage regulator on if (!generator.isVoltageRegulatorOn()) { continue; } //...assure the generator is the one connected to the bus (and not on the aggregated buses) if (!generator.getTerminal().getBusBreakerView().getBus().getId().equals(bus.getId())) { return; } //...candidate slackbus if (slackBusData.getSlackBusIndex() == -1) { slackBusData.setSlackBusIndex(busIndex); slackBusData.setSlackBusGenerator(generator); return; } //...choice the generator with the largest TargetP if (generator.getTargetP() > slackBusData.getSlackBusGenerator().getTargetP()) { slackBusData.setSlackBusIndex(busIndex); slackBusData.setSlackBusGenerator(generator); } } }
protected void updateSlackBusData(Bus bus, Integer busIndex, SlackBusData slackBusData) { if (bus.getGenerators() == null) { return; } //...slackbus has at least one generator connected for (Generator generator : bus.getGenerators()) { //...which has a generator with voltage regulator on if (!generator.isVoltageRegulatorOn()) { continue; } //...assure the generator is the one connected to the bus (and not on the aggregated buses) if (!generator.getTerminal().getBusBreakerView().getBus().getId().equals(bus.getId())) { return; } //...candidate slackbus if (slackBusData.getSlackBusIndex() == -1) { slackBusData.setSlackBusIndex(busIndex); slackBusData.setSlackBusGenerator(generator); return; } //...choice the generator with the largest TargetP if (generator.getTargetP() > slackBusData.getSlackBusGenerator().getTargetP()) { slackBusData.setSlackBusIndex(busIndex); slackBusData.setSlackBusGenerator(generator); } } }
String srcGenName = srcGen.getName(); EnergySource srcGenEnergySource = srcGen.getEnergySource(); boolean secGenVoltageRegulatorOn = srcGen.isVoltageRegulatorOn();
qgen = -g.getTerminal().getQ(); boolean isVoltageRegulatorOn = g.isVoltageRegulatorOn();
if (gen.isVoltageRegulatorOn()) { desiredVoltage = gen.getTargetV() / baseKV; typeBus = 1; // PV bus
if (g.getEnergySource().isIntermittent()) { generationP += g.getTargetP(); if (!g.isVoltageRegulatorOn()) { generationQ += g.getTargetQ();
.writeCell(g.getReactiveLimits().getMaxQ(0)) .writeCell(g.getReactiveLimits().getMaxQ(minP)) .writeCell(g.isVoltageRegulatorOn()) .writeCell(g.getTargetV() / vb) .writeCell(g.getTargetP())