getUser() {
return this.user;
}
+ /*
+ * SumState
+ */
+ public Level getSumState() {
+ return this.sumState.get();
+ }
+
+ /**
+ * Sets the sumState and emits a ON_SET_SUM_STATE event.
+ *
+ * @param sumState the sumState
+ */
+ public void setSumState(Level sumState) {
+ Level oldState = this.sumState.getAndSet(sumState);
+ if (!Objects.equal(oldState, sumState)) { // on change
+ EventBuilder.from(this.parent.getEventAdmin(), Events.ON_SET_SUM_STATE) //
+ .addArg(Events.OnSetSumState.EDGE_ID, this.id) //
+ .addArg(Events.OnSetSumState.OLD_SUM_STATE, oldState) //
+ .addArg(Events.OnSetSumState.SUM_STATE, sumState) //
+ .send();
+ }
+ }
+
/**
* Defines all Events an Edge can throw.
*/
@@ -271,6 +298,7 @@ public static final class OnSetProducttype {
public static final class OnSetSumState {
public static final String EDGE_ID = "EdgeId:String";
+ public static final String OLD_SUM_STATE = "OldSumState:Level";
public static final String SUM_STATE = "SumState:Level";
}
diff --git a/io.openems.backend.edgewebsocket/src/io/openems/backend/edgewebsocket/OnNotification.java b/io.openems.backend.edgewebsocket/src/io/openems/backend/edgewebsocket/OnNotification.java
index 7254b84e0f3..3f6c0498372 100644
--- a/io.openems.backend.edgewebsocket/src/io/openems/backend/edgewebsocket/OnNotification.java
+++ b/io.openems.backend.edgewebsocket/src/io/openems/backend/edgewebsocket/OnNotification.java
@@ -145,10 +145,7 @@ private void handleDataNotification(AbstractDataNotification message, WsData wsD
// set specific Edge values
if (d.has("_sum/State") && d.get("_sum/State").isJsonPrimitive()) {
var sumState = Level.fromJson(d, "_sum/State").orElse(Level.FAULT);
- EventBuilder.from(this.parent.eventAdmin, Events.ON_SET_SUM_STATE)
- .addArg(Events.OnSetSumState.EDGE_ID, edgeId) //
- .addArg(Events.OnSetSumState.SUM_STATE, sumState) //
- .send();
+ edge.setSumState(sumState);
}
if (d.has("_meta/Version") && d.get("_meta/Version").isJsonPrimitive()) {
diff --git a/io.openems.common/src/io/openems/common/OpenemsConstants.java b/io.openems.common/src/io/openems/common/OpenemsConstants.java
index 4597a187f45..9d13d5d36a0 100644
--- a/io.openems.common/src/io/openems/common/OpenemsConstants.java
+++ b/io.openems.common/src/io/openems/common/OpenemsConstants.java
@@ -22,7 +22,7 @@ public class OpenemsConstants {
*
* This is the month of the release.
*/
- public static final short VERSION_MINOR = 5;
+ public static final short VERSION_MINOR = 6;
/**
* The patch version of OpenEMS.
diff --git a/io.openems.common/src/io/openems/common/function/TriConsumer.java b/io.openems.common/src/io/openems/common/function/TriConsumer.java
new file mode 100644
index 00000000000..f5cb703c4a2
--- /dev/null
+++ b/io.openems.common/src/io/openems/common/function/TriConsumer.java
@@ -0,0 +1,26 @@
+package io.openems.common.function;
+
+import java.util.function.BiConsumer;
+
+/**
+ * This interface is similar to the java.util interface {@link BiConsumer}.
+ * Difference is, that it allows to pass to the apply() method one more
+ * parameter.
+ *
+ * @param the apply methods first argument type
+ * @param the apply methods second argument type
+ * @param the apply methods third argument type
+ */
+@FunctionalInterface
+public interface TriConsumer {
+
+ /**
+ * Applies this function to the given arguments.
+ *
+ * @param t the first function argument
+ * @param u the second function argument
+ * @param v the third function argument
+ */
+ public void accept(T t, U u, V v);
+
+}
diff --git a/io.openems.common/src/io/openems/common/oem/DummyOpenemsEdgeOem.java b/io.openems.common/src/io/openems/common/oem/DummyOpenemsEdgeOem.java
index 270154f1318..63558ed64b3 100644
--- a/io.openems.common/src/io/openems/common/oem/DummyOpenemsEdgeOem.java
+++ b/io.openems.common/src/io/openems/common/oem/DummyOpenemsEdgeOem.java
@@ -65,6 +65,7 @@ public SystemUpdateParams getSystemUpdateParams() {
.put("App.FENECON.Industrial.S.ISK011", "https://fenecon.de/fenecon-industrial-s/") //
.put("App.TimeOfUseTariff.Awattar", "") //
.put("App.TimeOfUseTariff.ENTSO-E", "") //
+ .put("App.TimeOfUseTariff.RabotCharge", "") //
.put("App.TimeOfUseTariff.Stromdao", "") //
.put("App.TimeOfUseTariff.Tibber", "") //
.put("App.Api.ModbusTcp.ReadOnly", "") //
@@ -125,4 +126,4 @@ public static void assertAllWebsiteUrlsSet(OpenemsEdgeOem oem) throws OpenemsExc
throw new OpenemsException("Missing Website-URLs in Edge-OEM for [" + String.join(", ", missing) + "]");
}
}
-}
\ No newline at end of file
+}
diff --git a/io.openems.edge.application/EdgeApp.bndrun b/io.openems.edge.application/EdgeApp.bndrun
index 0e5c289c8f1..1ca35b83f67 100644
--- a/io.openems.edge.application/EdgeApp.bndrun
+++ b/io.openems.edge.application/EdgeApp.bndrun
@@ -185,6 +185,7 @@
bnd.identity;id='io.openems.edge.timeofusetariff.awattar',\
bnd.identity;id='io.openems.edge.timeofusetariff.corrently',\
bnd.identity;id='io.openems.edge.timeofusetariff.entsoe',\
+ bnd.identity;id='io.openems.edge.timeofusetariff.rabotcharge',\
bnd.identity;id='io.openems.edge.timeofusetariff.tibber',\
-runbundles: \
@@ -194,8 +195,8 @@
bcutil;version='[1.70.0,1.70.1)',\
com.fazecast.jSerialComm;version='[2.10.4,2.10.5)',\
com.ghgande.j2mod;version='[3.2.1,3.2.2)',\
- com.google.gson;version='[2.10.1,2.10.2)',\
- com.google.guava;version='[33.1.0,33.1.1)',\
+ com.google.gson;version='[2.11.0,2.11.1)',\
+ com.google.guava;version='[33.2.0,33.2.1)',\
com.google.guava.failureaccess;version='[1.0.2,1.0.3)',\
com.squareup.okio;version='[3.9.0,3.9.1)',\
com.sun.jna;version='[5.14.0,5.14.1)',\
@@ -362,6 +363,7 @@
io.openems.edge.timeofusetariff.awattar;version=snapshot,\
io.openems.edge.timeofusetariff.corrently;version=snapshot,\
io.openems.edge.timeofusetariff.entsoe;version=snapshot,\
+ io.openems.edge.timeofusetariff.rabotcharge;version=snapshot,\
io.openems.edge.timeofusetariff.tibber;version=snapshot,\
io.openems.oem.openems;version=snapshot,\
io.openems.shared.influxdb;version=snapshot,\
@@ -392,7 +394,7 @@
org.apache.felix.configadmin;version='[1.9.26,1.9.27)',\
org.apache.felix.eventadmin;version='[1.6.4,1.6.5)',\
org.apache.felix.fileinstall;version='[3.7.4,3.7.5)',\
- org.apache.felix.http.jetty;version='[5.1.10,5.1.11)',\
+ org.apache.felix.http.jetty;version='[5.1.14,5.1.15)',\
org.apache.felix.http.servlet-api;version='[3.0.0,3.0.1)',\
org.apache.felix.inventory;version='[2.0.0,2.0.1)',\
org.apache.felix.metatype;version='[1.2.4,1.2.5)',\
@@ -404,7 +406,7 @@
org.eclipse.jetty.io;version='[9.4.28,9.4.29)',\
org.eclipse.jetty.util;version='[9.4.28,9.4.29)',\
org.eclipse.paho.mqttv5.client;version='[1.2.5,1.2.6)',\
- org.jetbrains.kotlin.osgi-bundle;version='[1.9.23,1.9.24)',\
+ org.jetbrains.kotlin.osgi-bundle;version='[2.0.0,2.0.1)',\
org.jsoup;version='[1.17.2,1.17.3)',\
org.jsr-305;version='[3.0.2,3.0.3)',\
org.openmuc.jmbus;version='[3.3.0,3.3.1)',\
diff --git a/io.openems.edge.battery.api/src/io/openems/edge/battery/api/Battery.java b/io.openems.edge.battery.api/src/io/openems/edge/battery/api/Battery.java
index c8cfdaf41e9..a0ccf59f1fe 100644
--- a/io.openems.edge.battery.api/src/io/openems/edge/battery/api/Battery.java
+++ b/io.openems.edge.battery.api/src/io/openems/edge/battery/api/Battery.java
@@ -207,7 +207,21 @@ public enum ChannelId implements io.openems.edge.common.channel.ChannelId {
*/
MAX_CELL_VOLTAGE(Doc.of(OpenemsType.INTEGER) //
.unit(Unit.MILLIVOLT) //
- .persistencePriority(PersistencePriority.HIGH));
+ .persistencePriority(PersistencePriority.HIGH)), //
+
+ /**
+ * Battery Inner Resistance.
+ *
+ *
+ * - Interface: Battery
+ *
- Type: Integer
+ *
- Unit: mOhm
+ *
+ */
+ INNER_RESISTANCE(Doc.of(OpenemsType.INTEGER) //
+ .unit(Unit.MILLIOHM) //
+ .persistencePriority(PersistencePriority.MEDIUM)), //
+ ;
private final Doc doc;
@@ -243,6 +257,7 @@ public static ModbusSlaveNatureTable getModbusSlaveNatureTable(AccessMode access
.channel(18, ChannelId.MAX_CELL_TEMPERATURE, ModbusType.FLOAT32) //
.channel(20, ChannelId.MIN_CELL_VOLTAGE, ModbusType.FLOAT32) //
.channel(22, ChannelId.MAX_CELL_VOLTAGE, ModbusType.FLOAT32) //
+ .channel(24, ChannelId.INNER_RESISTANCE, ModbusType.FLOAT32) //
.build();
}
@@ -736,6 +751,44 @@ public default void _setMaxCellVoltage(int value) {
this.getMaxCellVoltageChannel().setNextValue(value);
}
+ /**
+ * Gets the Channel for {@link ChannelId#INNER_RESISTANCE}.
+ *
+ * @return the Channel
+ */
+ public default IntegerReadChannel getInnerResistanceChannel() {
+ return this.channel(ChannelId.INNER_RESISTANCE);
+ }
+
+ /**
+ * Gets the Inner Resistance [mOhm]. See {@link ChannelId#INNER_RESISTANCE}.
+ *
+ * @return the Channel {@link Value}
+ */
+ public default Value getInnerResistance() {
+ return this.getInnerResistanceChannel().value();
+ }
+
+ /**
+ * Internal method to set the 'nextValue' on {@link ChannelId#INNER_RESISTANCE}
+ * Channel.
+ *
+ * @param value the next value
+ */
+ public default void _setInnerResistance(Integer value) {
+ this.getInnerResistanceChannel().setNextValue(value);
+ }
+
+ /**
+ * Internal method to set the 'nextValue' on {@link ChannelId#INNER_RESISTANCE}
+ * Channel.
+ *
+ * @param value the next value
+ */
+ public default void _setInnerResistance(int value) {
+ this.getInnerResistanceChannel().setNextValue(value);
+ }
+
/**
* Generates a default DebugLog message for {@link Battery} implementations with
* a State-Machine.
diff --git a/io.openems.edge.battery.api/src/io/openems/edge/battery/protection/BatteryProtection.java b/io.openems.edge.battery.api/src/io/openems/edge/battery/protection/BatteryProtection.java
index 51d94b397d2..44cf766ce8b 100644
--- a/io.openems.edge.battery.api/src/io/openems/edge/battery/protection/BatteryProtection.java
+++ b/io.openems.edge.battery.api/src/io/openems/edge/battery/protection/BatteryProtection.java
@@ -192,6 +192,18 @@ public enum ChannelId implements io.openems.edge.common.channel.ChannelId {
*/
BP_FORCE_CHARGE(Doc.of(AbstractForceChargeDischarge.State.values()) //
.persistencePriority(PersistencePriority.MEDIUM)), //
+
+ /**
+ * Battery Max Ever Current.
+ *
+ *
+ * - Interface: BatteryProtection
+ *
+ */
+ BP_MAX_EVER_CURRENT(Doc.of(OpenemsType.INTEGER) //
+ .unit(Unit.AMPERE) //
+ .persistencePriority(PersistencePriority.MEDIUM)), //
+
;
private final Doc doc;
diff --git a/io.openems.edge.battery.api/src/io/openems/edge/battery/protection/currenthandler/AbstractMaxCurrentHandler.java b/io.openems.edge.battery.api/src/io/openems/edge/battery/protection/currenthandler/AbstractMaxCurrentHandler.java
index fc472e48f7c..83c84e4d6a1 100644
--- a/io.openems.edge.battery.api/src/io/openems/edge/battery/protection/currenthandler/AbstractMaxCurrentHandler.java
+++ b/io.openems.edge.battery.api/src/io/openems/edge/battery/protection/currenthandler/AbstractMaxCurrentHandler.java
@@ -6,6 +6,7 @@
import io.openems.common.exceptions.OpenemsError.OpenemsNamedException;
import io.openems.edge.battery.api.Battery;
+import io.openems.edge.battery.protection.BatteryProtection;
import io.openems.edge.battery.protection.BatteryProtection.ChannelId;
import io.openems.edge.battery.protection.force.AbstractForceChargeDischarge;
import io.openems.edge.common.channel.IntegerReadChannel;
@@ -234,6 +235,7 @@ public synchronized int calculateCurrentLimit(Battery battery) {
/*
* Store limits in Channels. If value is 'null', store the bmsMaxEverCurrent
*/
+ battery.channel(BatteryProtection.ChannelId.BP_MAX_EVER_CURRENT).setNextValue(this.bmsMaxEverCurrent);
battery.channel(this.getBpMinVoltageChannelId())
.setNextValue(TypeUtils.orElse(minCellVoltageLimit, this.bmsMaxEverCurrent));
battery.channel(this.getBpMaxVoltageChannelId())
diff --git a/io.openems.edge.battery.api/src/io/openems/edge/battery/test/AbstractDummyBattery.java b/io.openems.edge.battery.api/src/io/openems/edge/battery/test/AbstractDummyBattery.java
index 0533af8c760..cf0252cf904 100644
--- a/io.openems.edge.battery.api/src/io/openems/edge/battery/test/AbstractDummyBattery.java
+++ b/io.openems.edge.battery.api/src/io/openems/edge/battery/test/AbstractDummyBattery.java
@@ -174,4 +174,15 @@ public final SELF withMaxCellTemperature(int value) {
return this.self();
}
+ /**
+ * Set {@link Battery.ChannelId#INNER_RESISTANCE}.
+ *
+ * @param value the value
+ * @return myself
+ */
+ public final SELF withInnerResistence(int value) {
+ TestUtils.withValue(this, Battery.ChannelId.INNER_RESISTANCE, value);
+ return this.self();
+ }
+
}
diff --git a/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/BatteryFeneconHome.java b/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/BatteryFeneconHome.java
index f362fe3dea4..9de0fccbd03 100644
--- a/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/BatteryFeneconHome.java
+++ b/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/BatteryFeneconHome.java
@@ -12,12 +12,13 @@
import io.openems.edge.common.channel.Doc;
import io.openems.edge.common.channel.IntegerDoc;
import io.openems.edge.common.channel.IntegerReadChannel;
+import io.openems.edge.common.channel.StateChannel;
import io.openems.edge.common.channel.value.Value;
import io.openems.edge.common.component.OpenemsComponent;
import io.openems.edge.common.startstop.StartStop;
import io.openems.edge.common.startstop.StartStoppable;
-public interface BatteryFeneconHome extends Battery, ModbusComponent, OpenemsComponent, StartStoppable {
+public interface BatteryFeneconHome extends Battery, ModbusComponent, OpenemsComponent, StartStoppable, ModbusHelper {
/**
* Gets the Channel for {@link ChannelId#BMS_CONTROL}.
@@ -673,6 +674,16 @@ public static enum ChannelId implements io.openems.edge.common.channel.ChannelId
.text("Current State of State-Machine")), //
RUN_FAILED(Doc.of(Level.FAULT) //
.text("Running the Logic failed")), //
+ LOW_MIN_VOLTAGE_WARNING(Doc.of(Level.WARNING) //
+ .text("Low min voltage warning "
+ + "| Niedriger Ladezustand der Batterie, da die Batterie nicht durch den Wechselrichter beladen werden kann. Ohne Beladung schaltet sich die Batterie demnächst ab, um sich selbst zu schützen")),
+ LOW_MIN_VOLTAGE_FAULT(Doc.of(Level.FAULT) //
+ .text("Low min voltage fault "
+ + "| Niedriger Ladezustand. Die Batterie schaltet sich demnächst ab, um sich selbst zu schützen")),
+ LOW_MIN_VOLTAGE_FAULT_BATTERY_STOPPED(Doc.of(Level.FAULT) //
+ .text("Low min voltage fault - Battery stopped "
+ + "| Batterie wurde wegen zu niedrigem Ladezustand abgeschaltet. Bitte kontaktieren Sie Ihren Installateur")),
+
;
private final Doc doc;
@@ -686,4 +697,91 @@ public Doc doc() {
return this.doc;
}
}
+
+ /**
+ * Gets the Channel for {@link ChannelId#LOW_MIN_VOLTAGE_WARNING}.
+ *
+ * @return the Channel
+ */
+ public default StateChannel getLowMinVoltageWarningChannel() {
+ return this.channel(ChannelId.LOW_MIN_VOLTAGE_WARNING);
+ }
+
+ /**
+ * Gets the Warning state channel for a low minimum voltage. See
+ * {@link ChannelId#LOW_MIN_VOLTAGE_WARNING}.
+ *
+ * @return the Channel {@link Value}
+ */
+ public default Value getLowMinVoltageWarning() {
+ return this.getLowMinVoltageWarningChannel().value();
+ }
+
+ /**
+ * Internal method to set the 'nextValue' on
+ * {@link ChannelId#LOW_MIN_VOLTAGE_WARNING} Channel.
+ *
+ * @param value the next value
+ */
+ public default void _setLowMinVoltageWarning(boolean value) {
+ this.getLowMinVoltageWarningChannel().setNextValue(value);
+ }
+
+ /**
+ * Gets the Channel for {@link ChannelId#LOW_MIN_VOLTAGE_FAULT}.
+ *
+ * @return the Channel
+ */
+ public default StateChannel getLowMinVoltageFaultChannel() {
+ return this.channel(ChannelId.LOW_MIN_VOLTAGE_FAULT);
+ }
+
+ /**
+ * Gets the fault state channel for a low minimum voltage. See
+ * {@link ChannelId#LOW_MIN_VOLTAGE_FAULT}.
+ *
+ * @return the Channel {@link Value}
+ */
+ public default Value getLowMinVoltage() {
+ return this.getLowMinVoltageFaultChannel().value();
+ }
+
+ /**
+ * Internal method to set the 'nextValue' on
+ * {@link ChannelId#LOW_MIN_VOLTAGE_FAULT} Channel.
+ *
+ * @param value the next value
+ */
+ public default void _setLowMinVoltageFault(boolean value) {
+ this.getLowMinVoltageFaultChannel().setNextValue(value);
+ }
+
+ /**
+ * Gets the Channel for {@link ChannelId#LOW_MIN_VOLTAGE_FAULT_BATTERY_STOPPED}.
+ *
+ * @return the Channel
+ */
+ public default StateChannel getLowMinVoltageFaultBatteryStoppedChannel() {
+ return this.channel(ChannelId.LOW_MIN_VOLTAGE_FAULT_BATTERY_STOPPED);
+ }
+
+ /**
+ * Gets the fault state channel for a low minimum voltage when battery is
+ * stopped. See {@link ChannelId#LOW_MIN_VOLTAGE_FAULT_BATTERY_STOPPED}.
+ *
+ * @return the Channel {@link Value}
+ */
+ public default Value getLowMinVoltageFaultBatteryStopped() {
+ return this.getLowMinVoltageFaultBatteryStoppedChannel().value();
+ }
+
+ /**
+ * Internal method to set the 'nextValue' on
+ * {@link ChannelId#LOW_MIN_VOLTAGE_FAULT_BATTERY_STOPPED} Channel.
+ *
+ * @param value the next value
+ */
+ public default void _setLowMinVoltageFaultBatteryStopped(boolean value) {
+ this.getLowMinVoltageFaultBatteryStoppedChannel().setNextValue(value);
+ }
}
diff --git a/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/BatteryFeneconHomeImpl.java b/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/BatteryFeneconHomeImpl.java
index 01748d00999..51dad2bc072 100644
--- a/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/BatteryFeneconHomeImpl.java
+++ b/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/BatteryFeneconHomeImpl.java
@@ -4,6 +4,7 @@
import static io.openems.edge.bridge.modbus.api.ElementToChannelConverter.SCALE_FACTOR_MINUS_1;
import static io.openems.edge.bridge.modbus.api.ModbusUtils.readElementOnce;
+import java.time.Instant;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicReference;
@@ -81,7 +82,11 @@
EdgeEventConstants.TOPIC_CYCLE_AFTER_PROCESS_IMAGE //
})
public class BatteryFeneconHomeImpl extends AbstractOpenemsModbusComponent implements ModbusComponent, OpenemsComponent,
- Battery, EventHandler, ModbusSlave, StartStoppable, BatteryFeneconHome {
+ Battery, EventHandler, ModbusSlave, StartStoppable, BatteryFeneconHome, ModbusHelper {
+
+ public static final int DEFAULT_CRITICAL_MIN_VOLTAGE = 2800;
+ protected static final int TIMEOUT = 600; // [10 minutes in seconds]
+ private Instant timeCriticalMinVoltage;
protected final StateMachine stateMachine = new StateMachine(State.UNDEFINED);
@@ -148,6 +153,7 @@ public void handleEvent(Event event) {
this.batteryProtection.apply();
break;
case EdgeEventConstants.TOPIC_CYCLE_AFTER_PROCESS_IMAGE:
+ this.checkCriticalMinVoltage();
this.handleStateMachine();
break;
}
@@ -172,7 +178,6 @@ private void handleStateMachine() {
this.getBmsControl(), //
this.getModbusCommunicationFailed(), //
() -> this.retryModbusCommunication());
-
// Call the StateMachine
try {
@@ -1046,4 +1051,75 @@ public static String generateTempBalancingChannelName(int tower, int module, int
private static String generateSingleCellPrefix(int tower, int module, int num) {
return "TOWER_" + tower + "_MODULE_" + module + "_CELL_" + String.format("%03d", num);
}
+
+ @Override
+ public BridgeModbus getModbus() {
+ return this.getBridgeModbus();
+ }
+
+ @Override
+ public ModbusProtocol getDefinedModbusProtocol() throws OpenemsException {
+ return this.getModbusProtocol();
+ }
+
+ private void checkCriticalMinVoltage() {
+
+ final var subState = getMinVoltageSubState(DEFAULT_CRITICAL_MIN_VOLTAGE,
+ this.getMinCellVoltage().orElse(Integer.MAX_VALUE), this.getCurrent().orElse(0));
+ var now = Instant.now(this.componentManager.getClock());
+
+ switch (subState) {
+ case ABOVE_LIMIT -> {
+ this._setLowMinVoltageFault(false);
+ this._setLowMinVoltageWarning(false);
+ this._setLowMinVoltageFaultBatteryStopped(false);
+ this.timeCriticalMinVoltage = null;
+ }
+ case BELOW_LIMIT -> {
+
+ if (this.stateMachine.getCurrentState() == StateMachine.State.STOPPED) {
+ this._setLowMinVoltageFaultBatteryStopped(true);
+ this._setLowMinVoltageFault(false);
+ this._setLowMinVoltageWarning(false);
+ return;
+ }
+
+ this._setLowMinVoltageFaultBatteryStopped(false);
+
+ if (this.timeCriticalMinVoltage == null) {
+ this.timeCriticalMinVoltage = now;
+ }
+
+ if (this.timeCriticalMinVoltage.isBefore(now.minusSeconds(TIMEOUT))) {
+ this._setLowMinVoltageFault(true);
+ this._setLowMinVoltageWarning(false);
+ return;
+ }
+ this._setLowMinVoltageWarning(true);
+ this._setLowMinVoltageFault(false);
+ }
+ case BELOW_LIMIT_CHARGING -> {
+ this._setLowMinVoltageFaultBatteryStopped(false);
+ this._setLowMinVoltageWarning(true);
+ this._setLowMinVoltageFault(false);
+ this.timeCriticalMinVoltage = null;
+ }
+ }
+ }
+
+ protected static MinVoltageSubState getMinVoltageSubState(int minVoltageLimit, int currentMinVoltage, int current) {
+ if (currentMinVoltage > minVoltageLimit) {
+ return MinVoltageSubState.ABOVE_LIMIT;
+ }
+ if (current < 0) {
+ return MinVoltageSubState.BELOW_LIMIT_CHARGING;
+ }
+ return MinVoltageSubState.BELOW_LIMIT;
+ }
+
+ protected static enum MinVoltageSubState {
+ ABOVE_LIMIT, //
+ BELOW_LIMIT, //
+ BELOW_LIMIT_CHARGING; //
+ }
}
diff --git a/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/ModbusHelper.java b/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/ModbusHelper.java
new file mode 100644
index 00000000000..b072d1ebdc4
--- /dev/null
+++ b/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/ModbusHelper.java
@@ -0,0 +1,24 @@
+package io.openems.edge.battery.fenecon.home;
+
+import io.openems.common.exceptions.OpenemsException;
+import io.openems.edge.bridge.modbus.api.BridgeModbus;
+import io.openems.edge.bridge.modbus.api.ModbusProtocol;
+
+public interface ModbusHelper {
+
+ /**
+ * Get modbus bridge.
+ *
+ * @return modbus bridge.
+ */
+ public BridgeModbus getModbus();
+
+ /**
+ * Get defined modbus protocol.
+ *
+ * @return modbus protocol
+ * @throws OpenemsException on error
+ */
+ public ModbusProtocol getDefinedModbusProtocol() throws OpenemsException;
+
+}
diff --git a/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/ErrorHandler.java b/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/ErrorHandler.java
index f44234e32c1..0353dcada1b 100644
--- a/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/ErrorHandler.java
+++ b/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/ErrorHandler.java
@@ -1,31 +1,22 @@
package io.openems.edge.battery.fenecon.home.statemachine;
-import java.time.Duration;
-import java.time.Instant;
-
-import io.openems.common.exceptions.OpenemsError.OpenemsNamedException;
import io.openems.edge.battery.fenecon.home.statemachine.StateMachine.State;
import io.openems.edge.common.statemachine.StateHandler;
public class ErrorHandler extends StateHandler {
- private static final int WAIT_IN_ERROR_STATE_SECONDS = 120;
-
- private Instant entryAt = Instant.MIN;
-
- @Override
- protected void onEntry(Context context) throws OpenemsNamedException {
- this.entryAt = Instant.now();
- }
-
@Override
public State runAndGetNextState(Context context) {
- if (Duration.between(this.entryAt, Instant.now()).getSeconds() > WAIT_IN_ERROR_STATE_SECONDS) {
- // Try again
- return State.UNDEFINED;
+
+ if (context.getParent().getLowMinVoltage().orElse(false)) {
+ return State.GO_STOPPED;
}
- return State.ERROR;
+ if (context.getParent().hasFaults()) {
+ return State.ERROR;
+ } else {
+ return State.UNDEFINED;
+ }
}
}
diff --git a/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/GoStoppedHandler.java b/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/GoStoppedHandler.java
index 983fc889aa2..a41a0bf4837 100644
--- a/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/GoStoppedHandler.java
+++ b/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/GoStoppedHandler.java
@@ -1,19 +1,51 @@
package io.openems.edge.battery.fenecon.home.statemachine;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import java.time.Duration;
+import java.time.Instant;
+import io.openems.common.exceptions.OpenemsError.OpenemsNamedException;
+import io.openems.common.exceptions.OpenemsException;
import io.openems.edge.battery.fenecon.home.statemachine.StateMachine.State;
import io.openems.edge.common.statemachine.StateHandler;
public class GoStoppedHandler extends StateHandler {
- private final Logger log = LoggerFactory.getLogger(GoStoppedHandler.class);
+ private static int TIMEOUT = 2100; // [35 minutes in seconds]
+ private Instant timeAtEntry = Instant.MIN;
+ private boolean didProtocolAdd = false;
@Override
- public State runAndGetNextState(Context context) {
- context.logWarn(this.log, "Stopping a FENECON Home Battery is not supported");
+ protected void onEntry(Context context) throws OpenemsNamedException {
+ final var battery = context.getParent();
+ final var modbus = battery.getModbus();
+ modbus.removeProtocol(battery.id());
+ this.didProtocolAdd = false;
+ this.timeAtEntry = Instant.now(context.clock);
+ }
+
+ @Override
+ public State runAndGetNextState(Context context) throws OpenemsException {
+ final var battery = context.getParent();
+ var now = Instant.now(context.clock);
+ if (Duration.between(this.timeAtEntry, now).getSeconds() > TIMEOUT && !this.didProtocolAdd) {
+ this.addAndRetryModbusProtocol(context);
+ return State.GO_STOPPED;
+ }
+
+ if (battery.getModbusCommunicationFailed()) {
+ return State.STOPPED;
+ }
+
+ // TODO if battery is not off
return State.GO_STOPPED;
}
+ private void addAndRetryModbusProtocol(Context context) throws OpenemsException {
+ final var battery = context.getParent();
+ final var modbus = battery.getModbus();
+ modbus.addProtocol(battery.id(), battery.getDefinedModbusProtocol());
+ modbus.retryModbusCommunication(battery.id());
+ this.didProtocolAdd = true;
+ }
+
}
diff --git a/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/RunningHandler.java b/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/RunningHandler.java
index 36cbde803ab..af6bc9c316d 100644
--- a/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/RunningHandler.java
+++ b/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/RunningHandler.java
@@ -11,7 +11,7 @@ public State runAndGetNextState(Context context) {
var battery = context.getParent();
if (battery.hasFaults()) {
- return State.UNDEFINED;
+ return State.ERROR;
}
// Is Battery still started?
diff --git a/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/StateMachine.java b/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/StateMachine.java
index 4e73243f460..bf9624a2cd9 100644
--- a/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/StateMachine.java
+++ b/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/StateMachine.java
@@ -13,6 +13,7 @@ public enum State implements io.openems.edge.common.statemachine.State, O
RUNNING(11), //
GO_STOPPED(20), //
+ STOPPED(21), //
ERROR(30), //
;
@@ -50,18 +51,13 @@ public StateMachine(State initialState) {
@Override
public StateHandler getStateHandler(State state) {
- switch (state) {
- case UNDEFINED:
- return new UndefinedHandler();
- case GO_RUNNING:
- return new GoRunningHandler();
- case RUNNING:
- return new RunningHandler();
- case GO_STOPPED:
- return new GoStoppedHandler();
- case ERROR:
- return new ErrorHandler();
- }
- throw new IllegalArgumentException("Unknown State [" + state + "]");
+ return switch (state) {
+ case UNDEFINED -> new UndefinedHandler();
+ case GO_RUNNING -> new GoRunningHandler();
+ case RUNNING -> new RunningHandler();
+ case GO_STOPPED -> new GoStoppedHandler();
+ case STOPPED -> new StoppedHandler();
+ case ERROR -> new ErrorHandler();
+ };
}
}
\ No newline at end of file
diff --git a/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/StoppedHandler.java b/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/StoppedHandler.java
new file mode 100644
index 00000000000..050ac7c9583
--- /dev/null
+++ b/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/StoppedHandler.java
@@ -0,0 +1,33 @@
+package io.openems.edge.battery.fenecon.home.statemachine;
+
+import io.openems.edge.battery.fenecon.home.BatteryFeneconHomeImpl;
+import io.openems.edge.battery.fenecon.home.statemachine.StateMachine.State;
+import io.openems.edge.common.startstop.StartStop;
+import io.openems.edge.common.statemachine.StateHandler;
+
+public class StoppedHandler extends StateHandler {
+
+ @Override
+ public State runAndGetNextState(Context context) {
+ final var battery = context.getParent();
+
+ final int currentMinVoltage;
+ if (battery.getMinCellVoltage().isDefined()) {
+ currentMinVoltage = battery.getMinCellVoltage().get();
+ } else {
+ currentMinVoltage = battery.getMinCellVoltageChannel().getPastValues().lastEntry().getValue()
+ .orElse(Integer.MAX_VALUE);
+ }
+
+ if (currentMinVoltage < BatteryFeneconHomeImpl.DEFAULT_CRITICAL_MIN_VOLTAGE) {
+ battery._setLowMinVoltageFaultBatteryStopped(true);
+ } else {
+ battery._setLowMinVoltageFaultBatteryStopped(false);
+ }
+
+ // Mark as started
+ battery._setStartStop(StartStop.STOP);
+ return State.STOPPED;
+ }
+
+}
diff --git a/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/UndefinedHandler.java b/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/UndefinedHandler.java
index e5485be00c3..49b32ea48b5 100644
--- a/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/UndefinedHandler.java
+++ b/io.openems.edge.battery.fenecon.home/src/io/openems/edge/battery/fenecon/home/statemachine/UndefinedHandler.java
@@ -19,7 +19,9 @@ public State runAndGetNextState(Context context) {
if (battery.getModbusCommunicationFailed()) {
// Modbus Communication Failed -> try to start
yield State.GO_RUNNING;
+
} else if (battery.hasFaults()) {
+
// Has Faults -> error handling
yield State.ERROR;
} else {
@@ -29,7 +31,7 @@ public State runAndGetNextState(Context context) {
}
case STOP ->
- // STOP is impossible -> stuck in GO_STOPPED State
+ // force STOP
State.GO_STOPPED;
};
}
diff --git a/io.openems.edge.battery.fenecon.home/test/io/openems/edge/battery/fenecon/home/BatteryFeneconHomeImplTest.java b/io.openems.edge.battery.fenecon.home/test/io/openems/edge/battery/fenecon/home/BatteryFeneconHomeImplTest.java
index 1faf9d74e77..9327aaa91cc 100644
--- a/io.openems.edge.battery.fenecon.home/test/io/openems/edge/battery/fenecon/home/BatteryFeneconHomeImplTest.java
+++ b/io.openems.edge.battery.fenecon.home/test/io/openems/edge/battery/fenecon/home/BatteryFeneconHomeImplTest.java
@@ -32,6 +32,12 @@ public class BatteryFeneconHomeImplTest {
private static final ChannelAddress STATE_MACHINE = new ChannelAddress(BATTERY_ID,
BatteryFeneconHome.ChannelId.STATE_MACHINE.id());
+ private static final ChannelAddress LOW_MIN_VOLTAGE_WARNING = new ChannelAddress(BATTERY_ID,
+ BatteryFeneconHome.ChannelId.LOW_MIN_VOLTAGE_WARNING.id());
+ private static final ChannelAddress LOW_MIN_VOLTAGE_FAULT = new ChannelAddress(BATTERY_ID,
+ BatteryFeneconHome.ChannelId.LOW_MIN_VOLTAGE_FAULT.id());
+ private static final ChannelAddress LOW_MIN_VOLTAGE_FAULT_BATTERY_STOPPED = new ChannelAddress(BATTERY_ID,
+ BatteryFeneconHome.ChannelId.LOW_MIN_VOLTAGE_FAULT_BATTERY_STOPPED.id());
private static final ChannelAddress MODBUS_COMMUNICATION_FAILED = new ChannelAddress(BATTERY_ID,
ModbusComponent.ChannelId.MODBUS_COMMUNICATION_FAILED.id());
private static final ChannelAddress BMS_CONTROL = new ChannelAddress(BATTERY_ID,
@@ -42,6 +48,10 @@ public class BatteryFeneconHomeImplTest {
Battery.ChannelId.MAX_CELL_VOLTAGE.id());
private static final ChannelAddress CHARGE_MAX_CURRENT = new ChannelAddress(BATTERY_ID,
Battery.ChannelId.CHARGE_MAX_CURRENT.id());
+ private static final ChannelAddress CURRENT = new ChannelAddress(BATTERY_ID, Battery.ChannelId.CURRENT.id());
+ private static final ChannelAddress MIN_CELL_VOLTAGE = new ChannelAddress(BATTERY_ID,
+ Battery.ChannelId.MIN_CELL_VOLTAGE.id());
+
private static final ChannelAddress BATTERY_RELAY = new ChannelAddress(IO_ID, "InputOutput4");
private static ThrowingRunnable assertLog(BatteryFeneconHomeImpl sut, String message) {
@@ -304,4 +314,186 @@ public void testGetHardwareTypeFromRegisterValue() {
BatteryFeneconHomeImpl.parseHardwareTypeFromRegisterValue(640));
}
+
+ @Test
+ public void testMinVoltageGoStopped() throws Exception {
+ final var clock = new TimeLeapClock(Instant.parse("2020-01-01T01:00:00.00Z"), ZoneOffset.UTC);
+ var sut = new BatteryFeneconHomeImpl();
+ new ComponentTest(sut) //
+ .addReference("cm", new DummyConfigurationAdmin()) //
+ .addReference("componentManager", new DummyComponentManager(clock)) //
+ .addReference("setModbus", new DummyModbusBridge(MODBUS_ID)) //
+ .addComponent(new DummyInputOutput(IO_ID)) //
+ .activate(MyConfig.create() //
+ .setId(BATTERY_ID) //
+ .setModbusId(MODBUS_ID) //
+ .setModbusUnitId(0) //
+ .setStartStop(StartStopConfig.START) //
+ .setBatteryStartUpRelay("io0/InputOutput4")//
+ .build())//
+
+ .next(new TestCase() //
+ .input(BATTERY_RELAY, false) //
+ .input(BMS_CONTROL, true) // Switched On
+ .output(STATE_MACHINE, StateMachine.State.UNDEFINED))//
+ .next(new TestCase() //
+ .onBeforeProcessImage(assertLog(sut, "GoRunning-Undefined")) //
+ .output(STATE_MACHINE, StateMachine.State.GO_RUNNING)) //
+ .next(new TestCase() //
+ .onBeforeProcessImage(assertLog(sut, "GoRunning-StartUpRelayOff")) //
+ .output(STATE_MACHINE, StateMachine.State.GO_RUNNING))//
+ .next(new TestCase() //
+ .onBeforeProcessImage(assertLog(sut, "GoRunning-RetryModbusCommunication")) //
+ .output(STATE_MACHINE, StateMachine.State.GO_RUNNING))//
+ .next(new TestCase() //
+ .onBeforeProcessImage(assertLog(sut, "GoRunning-WaitForBmsControl")) //
+ .output(STATE_MACHINE, StateMachine.State.GO_RUNNING)) //
+ .next(new TestCase() //
+ .onBeforeProcessImage(assertLog(sut, "GoRunning-WaitForModbusCommunication")) //
+ .output(STATE_MACHINE, StateMachine.State.GO_RUNNING)) //
+ .next(new TestCase() //
+ .output(STATE_MACHINE, StateMachine.State.RUNNING))
+
+ /*
+ * Critical min voltage
+ */
+ .next(new TestCase("MinCellVoltage below critical value") //
+ .input(MIN_CELL_VOLTAGE, (BatteryFeneconHomeImpl.DEFAULT_CRITICAL_MIN_VOLTAGE - 100)) //
+ .input(CURRENT, 0) //
+ .output(LOW_MIN_VOLTAGE_WARNING, true) //
+ .output(LOW_MIN_VOLTAGE_FAULT, false) //
+ .output(STATE_MACHINE, StateMachine.State.RUNNING) //
+ .output(LOW_MIN_VOLTAGE_FAULT_BATTERY_STOPPED, false) //
+ .onAfterControllersCallbacks(
+ () -> clock.leap(BatteryFeneconHomeImpl.TIMEOUT - 10, ChronoUnit.SECONDS))) //
+ .next(new TestCase("MinCellVoltage below critical value - charging resets time") //
+ .input(MIN_CELL_VOLTAGE, (BatteryFeneconHomeImpl.DEFAULT_CRITICAL_MIN_VOLTAGE - 100)) //
+ .input(CURRENT, -300) //
+ .output(LOW_MIN_VOLTAGE_WARNING, true) //
+ .output(LOW_MIN_VOLTAGE_FAULT, false) //
+ .output(LOW_MIN_VOLTAGE_FAULT_BATTERY_STOPPED, false)) //
+ .next(new TestCase("MinCellVoltage below critical value - timer starts again") //
+ .input(CURRENT, 0) //
+ .input(MIN_CELL_VOLTAGE, (BatteryFeneconHomeImpl.DEFAULT_CRITICAL_MIN_VOLTAGE - 100)) //
+ .output(LOW_MIN_VOLTAGE_WARNING, true) //
+ .output(LOW_MIN_VOLTAGE_FAULT, false) //
+ .output(LOW_MIN_VOLTAGE_FAULT_BATTERY_STOPPED, false) //
+ .onAfterControllersCallbacks(
+ () -> clock.leap(BatteryFeneconHomeImpl.TIMEOUT - 10, ChronoUnit.SECONDS))) //
+ .next(new TestCase("MinCellVoltage below critical value - time not passed") //
+ .input(CURRENT, 0) //
+ .input(MIN_CELL_VOLTAGE, (BatteryFeneconHomeImpl.DEFAULT_CRITICAL_MIN_VOLTAGE - 100)) //
+ .output(LOW_MIN_VOLTAGE_WARNING, true) //
+ .output(LOW_MIN_VOLTAGE_FAULT, false) //
+ .output(LOW_MIN_VOLTAGE_FAULT_BATTERY_STOPPED, false) //
+ .onAfterControllersCallbacks(() -> clock.leap(15, ChronoUnit.SECONDS))) //
+ .next(new TestCase("MinCellVoltage below critical value - time passed") //
+ .input(CURRENT, 0) //
+ .input(MIN_CELL_VOLTAGE, (BatteryFeneconHomeImpl.DEFAULT_CRITICAL_MIN_VOLTAGE - 100)) //
+ .output(LOW_MIN_VOLTAGE_FAULT, true) //
+ .output(LOW_MIN_VOLTAGE_WARNING, false) //
+ .output(LOW_MIN_VOLTAGE_FAULT_BATTERY_STOPPED, false) //
+ .output(STATE_MACHINE, StateMachine.State.RUNNING)) //
+ .next(new TestCase("MinCellVoltage below critical value - error") //
+ .input(LOW_MIN_VOLTAGE_FAULT, true) //
+ .input(CURRENT, 0) //
+ .input(MIN_CELL_VOLTAGE, (BatteryFeneconHomeImpl.DEFAULT_CRITICAL_MIN_VOLTAGE - 100)) //
+ .output(LOW_MIN_VOLTAGE_FAULT, true) //
+ .output(LOW_MIN_VOLTAGE_WARNING, false) //
+ .output(LOW_MIN_VOLTAGE_FAULT_BATTERY_STOPPED, false)) //
+ .next(new TestCase() //
+ .output(STATE_MACHINE, StateMachine.State.ERROR)) //
+ .next(new TestCase("MinCellVoltage below critical value - go stopped") //
+ .input(LOW_MIN_VOLTAGE_FAULT, true) //
+ .input(CURRENT, 0) //
+
+ // MinCellVoltage would be null, but there is not DummyTimedata for not to test
+ // "getPastValues"
+ .input(MIN_CELL_VOLTAGE, (BatteryFeneconHomeImpl.DEFAULT_CRITICAL_MIN_VOLTAGE - 100)) //
+ .output(LOW_MIN_VOLTAGE_FAULT, true) //
+ .output(LOW_MIN_VOLTAGE_WARNING, false) //
+ .output(LOW_MIN_VOLTAGE_FAULT_BATTERY_STOPPED, false) //
+ .output(STATE_MACHINE, StateMachine.State.GO_STOPPED) //
+ .onAfterControllersCallbacks(() -> clock.leap(2_100, ChronoUnit.SECONDS))) // 35 minutes
+ .next(new TestCase() //
+ .input(MODBUS_COMMUNICATION_FAILED, true) //
+ ) //
+ .next(new TestCase("MinCellVoltage below critical value - stopped") //
+ .input(CURRENT, 0) //
+ .input(MODBUS_COMMUNICATION_FAILED, true) //
+ .input(MIN_CELL_VOLTAGE, (BatteryFeneconHomeImpl.DEFAULT_CRITICAL_MIN_VOLTAGE - 100)) //
+ .output(LOW_MIN_VOLTAGE_WARNING, false) //
+ .output(LOW_MIN_VOLTAGE_FAULT, false) //
+ .output(LOW_MIN_VOLTAGE_FAULT_BATTERY_STOPPED, true) //
+ .output(STATE_MACHINE, StateMachine.State.STOPPED) //
+ );
+ }
+
+ @Test
+ public void testMinVoltageCharging() throws Exception {
+ final var clock = new TimeLeapClock(Instant.parse("2020-01-01T01:00:00.00Z"), ZoneOffset.UTC);
+ var sut = new BatteryFeneconHomeImpl();
+ new ComponentTest(sut) //
+ .addReference("cm", new DummyConfigurationAdmin()) //
+ .addReference("componentManager", new DummyComponentManager(clock)) //
+ .addReference("setModbus", new DummyModbusBridge(MODBUS_ID)) //
+ .addComponent(new DummyInputOutput(IO_ID)) //
+ .activate(MyConfig.create() //
+ .setId(BATTERY_ID) //
+ .setModbusId(MODBUS_ID) //
+ .setModbusUnitId(0) //
+ .setStartStop(StartStopConfig.START) //
+ .setBatteryStartUpRelay("io0/InputOutput4")//
+ .build())//
+
+ .next(new TestCase() //
+ .input(BATTERY_RELAY, false) //
+ .input(BMS_CONTROL, true) // Switched On
+ .output(STATE_MACHINE, StateMachine.State.UNDEFINED))//
+ .next(new TestCase() //
+ .onBeforeProcessImage(assertLog(sut, "GoRunning-Undefined")) //
+ .output(STATE_MACHINE, StateMachine.State.GO_RUNNING)) //
+ .next(new TestCase() //
+ .onBeforeProcessImage(assertLog(sut, "GoRunning-StartUpRelayOff")) //
+ .output(STATE_MACHINE, StateMachine.State.GO_RUNNING))//
+ .next(new TestCase() //
+ .onBeforeProcessImage(assertLog(sut, "GoRunning-RetryModbusCommunication")) //
+ .output(STATE_MACHINE, StateMachine.State.GO_RUNNING))//
+ .next(new TestCase() //
+ .onBeforeProcessImage(assertLog(sut, "GoRunning-WaitForBmsControl")) //
+ .output(STATE_MACHINE, StateMachine.State.GO_RUNNING)) //
+ .next(new TestCase() //
+ .onBeforeProcessImage(assertLog(sut, "GoRunning-WaitForModbusCommunication")) //
+ .output(STATE_MACHINE, StateMachine.State.GO_RUNNING)) //
+ .next(new TestCase() //
+ .output(STATE_MACHINE, StateMachine.State.RUNNING))
+
+ /*
+ * Critical min voltage
+ */
+ .next(new TestCase("MinCellVoltage below critical value") //
+ .input(MIN_CELL_VOLTAGE, (BatteryFeneconHomeImpl.DEFAULT_CRITICAL_MIN_VOLTAGE - 100)) //
+ .input(CURRENT, 0) //
+ .output(LOW_MIN_VOLTAGE_WARNING, true) //
+ .output(LOW_MIN_VOLTAGE_FAULT, false) //
+ .output(STATE_MACHINE, StateMachine.State.RUNNING) //
+ .output(LOW_MIN_VOLTAGE_FAULT_BATTERY_STOPPED, false) //
+ .onAfterControllersCallbacks(
+ () -> clock.leap(BatteryFeneconHomeImpl.TIMEOUT - 10, ChronoUnit.SECONDS))) //
+ .next(new TestCase("MinCellVoltage below critical value - charging resets time") //
+ .input(MIN_CELL_VOLTAGE, (BatteryFeneconHomeImpl.DEFAULT_CRITICAL_MIN_VOLTAGE - 100)) //
+ .input(CURRENT, -300) //
+ .output(LOW_MIN_VOLTAGE_WARNING, true) //
+ .output(LOW_MIN_VOLTAGE_FAULT, false) //
+ .output(STATE_MACHINE, StateMachine.State.RUNNING) //
+ .output(LOW_MIN_VOLTAGE_FAULT_BATTERY_STOPPED, false)) //
+ .next(new TestCase("MinCellVoltage below critical value - charging") //
+ .input(CURRENT, -2000) //
+ .input(MIN_CELL_VOLTAGE, (BatteryFeneconHomeImpl.DEFAULT_CRITICAL_MIN_VOLTAGE + 50)) //
+ .output(LOW_MIN_VOLTAGE_WARNING, false) //
+ .output(LOW_MIN_VOLTAGE_FAULT, false) //
+ .output(STATE_MACHINE, StateMachine.State.RUNNING) //
+ .output(LOW_MIN_VOLTAGE_FAULT_BATTERY_STOPPED, false) //
+ );
+ }
}
diff --git a/io.openems.edge.battery.fenecon.home/test/io/openems/edge/battery/fenecon/home/TestStatic.java b/io.openems.edge.battery.fenecon.home/test/io/openems/edge/battery/fenecon/home/TestStatic.java
new file mode 100644
index 00000000000..3c8d218c3f4
--- /dev/null
+++ b/io.openems.edge.battery.fenecon.home/test/io/openems/edge/battery/fenecon/home/TestStatic.java
@@ -0,0 +1,24 @@
+package io.openems.edge.battery.fenecon.home;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+import io.openems.edge.battery.fenecon.home.BatteryFeneconHomeImpl.MinVoltageSubState;
+
+public class TestStatic {
+
+ @Test
+ public void testGetMinVoltageSubState() {
+
+ assertEquals(MinVoltageSubState.BELOW_LIMIT_CHARGING,
+ BatteryFeneconHomeImpl.getMinVoltageSubState(2800, 2700, -2000));
+
+ assertEquals(MinVoltageSubState.BELOW_LIMIT, BatteryFeneconHomeImpl.getMinVoltageSubState(2800, 2600, 0));
+ assertEquals(MinVoltageSubState.BELOW_LIMIT, BatteryFeneconHomeImpl.getMinVoltageSubState(2800, 2600, 2000));
+
+ assertEquals(MinVoltageSubState.ABOVE_LIMIT,
+ BatteryFeneconHomeImpl.getMinVoltageSubState(2800, Integer.MAX_VALUE, 0));
+ assertEquals(MinVoltageSubState.ABOVE_LIMIT, BatteryFeneconHomeImpl.getMinVoltageSubState(2800, 2900, 1000));
+ }
+}
diff --git a/io.openems.edge.batteryinverter.api/src/io/openems/edge/batteryinverter/api/SymmetricBatteryInverter.java b/io.openems.edge.batteryinverter.api/src/io/openems/edge/batteryinverter/api/SymmetricBatteryInverter.java
index 3e74c1bef9a..32aa035b4f1 100644
--- a/io.openems.edge.batteryinverter.api/src/io/openems/edge/batteryinverter/api/SymmetricBatteryInverter.java
+++ b/io.openems.edge.batteryinverter.api/src/io/openems/edge/batteryinverter/api/SymmetricBatteryInverter.java
@@ -106,6 +106,34 @@ public enum ChannelId implements io.openems.edge.common.channel.ChannelId {
*/
ACTIVE_DISCHARGE_ENERGY(Doc.of(OpenemsType.LONG) //
.unit(Unit.CUMULATED_WATT_HOURS) //
+ .persistencePriority(PersistencePriority.HIGH)//
+ ), //
+
+ /**
+ * Inverter DC Minimum Voltage.
+ *
+ *
+ * - Interface: SymmetricBatteryInverter
+ *
- Type: Integer
+ *
- Unit: V
+ *
+ */
+ DC_MIN_VOLTAGE(Doc.of(OpenemsType.INTEGER) //
+ .unit(Unit.VOLT) //
+ .persistencePriority(PersistencePriority.HIGH)//
+ ), //
+
+ /**
+ * Inverter DC Max Voltage.
+ *
+ *
+ * - Interface: SymmetricBatteryInverter
+ *
- Type: Integer
+ *
- Unit: V
+ *
+ */
+ DC_MAX_VOLTAGE(Doc.of(OpenemsType.INTEGER) //
+ .unit(Unit.VOLT) //
.persistencePriority(PersistencePriority.HIGH) //
);
@@ -358,4 +386,81 @@ public default void _setActiveDischargeEnergy(long value) {
this.getActiveDischargeEnergyChannel().setNextValue(value);
}
+ /**
+ * Gets the Channel for {@link ChannelId#DC_MIN_VOLTAGE}.
+ *
+ * @return the Channel
+ */
+ public default IntegerReadChannel getDcMinVoltageChannel() {
+ return this.channel(ChannelId.DC_MIN_VOLTAGE);
+ }
+
+ /**
+ * Gets the Minimum Inverter DC Voltage in [V]. See
+ * {@link ChannelId#DC_MIN_VOLTAGE}.
+ *
+ * @return the Channel {@link Value}
+ */
+ public default Value getDcMinVoltage() {
+ return this.getDcMinVoltageChannel().value();
+ }
+
+ /**
+ * Internal method to set the 'nextValue' on {@link ChannelId#DC_MIN_VOLTAGE}
+ * Channel.
+ *
+ * @param value the next value
+ */
+ public default void _setDcMinVoltage(Integer value) {
+ this.getDcMinVoltageChannel().setNextValue(value);
+ }
+
+ /**
+ * Internal method to set the 'nextValue' on {@link ChannelId#DC_MIN_VOLTAGE}
+ * Channel.
+ *
+ * @param value the next value
+ */
+ public default void _setDcMinVoltage(int value) {
+ this.getDcMinVoltageChannel().setNextValue(value);
+ }
+
+ /**
+ * Gets the Channel for {@link ChannelId#DC_MAX_VOLTAGE}.
+ *
+ * @return the Channel
+ */
+ public default IntegerReadChannel getDcMaxVoltageChannel() {
+ return this.channel(ChannelId.DC_MAX_VOLTAGE);
+ }
+
+ /**
+ * Gets the Maximum Inverter DC Voltage in [V]. See
+ * {@link ChannelId#DC_MAX_VOLTAGE}.
+ *
+ * @return the Channel {@link Value}
+ */
+ public default Value getDcMaxVoltage() {
+ return this.getDcMaxVoltageChannel().value();
+ }
+
+ /**
+ * Internal method to set the 'nextValue' on {@link ChannelId#DC_MAX_VOLTAGE}
+ * Channel.
+ *
+ * @param value the next value
+ */
+ public default void _setDcMaxVoltage(Integer value) {
+ this.getDcMaxVoltageChannel().setNextValue(value);
+ }
+
+ /**
+ * Internal method to set the 'nextValue' on {@link ChannelId#DC_MAX_VOLTAGE}
+ * Channel.
+ *
+ * @param value the next value
+ */
+ public default void _setDcMaxVoltage(int value) {
+ this.getDcMaxVoltageChannel().setNextValue(value);
+ }
}
diff --git a/io.openems.edge.batteryinverter.api/src/io/openems/edge/batteryinverter/test/DummyManagedSymmetricBatteryInverter.java b/io.openems.edge.batteryinverter.api/src/io/openems/edge/batteryinverter/test/DummyManagedSymmetricBatteryInverter.java
index c108b9466ec..6e9554e74e1 100644
--- a/io.openems.edge.batteryinverter.api/src/io/openems/edge/batteryinverter/test/DummyManagedSymmetricBatteryInverter.java
+++ b/io.openems.edge.batteryinverter.api/src/io/openems/edge/batteryinverter/test/DummyManagedSymmetricBatteryInverter.java
@@ -65,6 +65,28 @@ public DummyManagedSymmetricBatteryInverter withMaxApparentPower(int value) {
return this;
}
+ /**
+ * Set {@link SymmetricBatteryInverter.ChannelId#DC_MIN_VOLTAGE}.
+ *
+ * @param value the value
+ * @return myself
+ */
+ public DummyManagedSymmetricBatteryInverter withDcMinVoltage(int value) {
+ TestUtils.withValue(this, SymmetricBatteryInverter.ChannelId.DC_MIN_VOLTAGE, value);
+ return this;
+ }
+
+ /**
+ * Set {@link SymmetricBatteryInverter.ChannelId#DC_MAX_VOLTAGE}.
+ *
+ * @param value the value
+ * @return myself
+ */
+ public DummyManagedSymmetricBatteryInverter withDcMaxVoltage(int value) {
+ TestUtils.withValue(this, SymmetricBatteryInverter.ChannelId.DC_MAX_VOLTAGE, value);
+ return this;
+ }
+
@Override
public void run(Battery battery, int setActivePower, int setReactivePower) throws OpenemsNamedException {
this._setActivePower(setActivePower);
diff --git a/io.openems.edge.batteryinverter.kaco.blueplanetgridsave/src/io/openems/edge/batteryinverter/kaco/blueplanetgridsave/BatteryInverterKacoBlueplanetGridsaveImpl.java b/io.openems.edge.batteryinverter.kaco.blueplanetgridsave/src/io/openems/edge/batteryinverter/kaco/blueplanetgridsave/BatteryInverterKacoBlueplanetGridsaveImpl.java
index 976d430e141..80774e5c800 100644
--- a/io.openems.edge.batteryinverter.kaco.blueplanetgridsave/src/io/openems/edge/batteryinverter/kaco/blueplanetgridsave/BatteryInverterKacoBlueplanetGridsaveImpl.java
+++ b/io.openems.edge.batteryinverter.kaco.blueplanetgridsave/src/io/openems/edge/batteryinverter/kaco/blueplanetgridsave/BatteryInverterKacoBlueplanetGridsaveImpl.java
@@ -1,6 +1,7 @@
package io.openems.edge.batteryinverter.kaco.blueplanetgridsave;
import static io.openems.edge.common.channel.ChannelUtils.setWriteValueIfNotRead;
+import static io.openems.edge.common.sum.GridMode.ON_GRID;
import java.time.Duration;
import java.time.Instant;
@@ -54,7 +55,6 @@
import io.openems.edge.common.component.OpenemsComponent;
import io.openems.edge.common.startstop.StartStop;
import io.openems.edge.common.startstop.StartStoppable;
-import io.openems.edge.common.sum.GridMode;
import io.openems.edge.common.taskmanager.Priority;
import io.openems.edge.ess.power.api.Phase;
import io.openems.edge.ess.power.api.Pwr;
@@ -75,6 +75,8 @@ public class BatteryInverterKacoBlueplanetGridsaveImpl extends AbstractSunSpecBa
private static final int UNIT_ID = 1;
private static final int READ_FROM_MODBUS_BLOCK = 1;
+ private static final int DC_MIN_VOLTAGE_LIMIT = 650;
+ private static final int DC_MAX_VOLTAGE_LIMIT = 1315;
private final Logger log = LoggerFactory.getLogger(BatteryInverterKacoBlueplanetGridsaveImpl.class);
private final StateMachine stateMachine = new StateMachine(State.UNDEFINED);
@@ -145,7 +147,9 @@ public BatteryInverterKacoBlueplanetGridsaveImpl() {
StartStoppable.ChannelId.values(), //
BatteryInverterKacoBlueplanetGridsave.ChannelId.values() //
);
- this._setGridMode(GridMode.ON_GRID);
+ this._setGridMode(ON_GRID);
+ this._setDcMinVoltage(DC_MIN_VOLTAGE_LIMIT);
+ this._setDcMaxVoltage(DC_MAX_VOLTAGE_LIMIT);
}
@Activate
diff --git a/io.openems.edge.batteryinverter.kaco.blueplanetgridsave/src/io/openems/edge/batteryinverter/kaco/blueplanetgridsave/KacoSunSpecModel.java b/io.openems.edge.batteryinverter.kaco.blueplanetgridsave/src/io/openems/edge/batteryinverter/kaco/blueplanetgridsave/KacoSunSpecModel.java
index 139f38ba225..2757dbf6616 100644
--- a/io.openems.edge.batteryinverter.kaco.blueplanetgridsave/src/io/openems/edge/batteryinverter/kaco/blueplanetgridsave/KacoSunSpecModel.java
+++ b/io.openems.edge.batteryinverter.kaco.blueplanetgridsave/src/io/openems/edge/batteryinverter/kaco/blueplanetgridsave/KacoSunSpecModel.java
@@ -3,444 +3,129 @@
import io.openems.common.channel.AccessMode;
import io.openems.common.channel.Unit;
import io.openems.common.types.OptionsEnum;
+import io.openems.edge.bridge.modbus.sunspec.Point;
+import io.openems.edge.bridge.modbus.sunspec.Point.EnumPoint;
+import io.openems.edge.bridge.modbus.sunspec.Point.ScaleFactorPoint;
+import io.openems.edge.bridge.modbus.sunspec.Point.ScaledValuePoint;
+import io.openems.edge.bridge.modbus.sunspec.Point.ValuePoint;
import io.openems.edge.bridge.modbus.sunspec.SunSpecModel;
import io.openems.edge.bridge.modbus.sunspec.SunSpecModelType;
import io.openems.edge.bridge.modbus.sunspec.SunSpecPoint;
-import io.openems.edge.bridge.modbus.sunspec.SunSpecPoint.PointImpl;
-import io.openems.edge.bridge.modbus.sunspec.SunSpecPoint.PointType;
public enum KacoSunSpecModel implements SunSpecModel {
- S_64201(//
- "Bidirectional inverter control", //
+ S_64201("Bidirectional inverter control", //
"Bidirectional inverter control backend", //
- "", //
- 52, //
- KacoSunSpecModel.S64201.values(), //
- SunSpecModelType.VENDOR_SPECIFIC), //
- S_64202(//
- "Battery Charge Discharge Characteristic", //
+ 52 /* length */, KacoSunSpecModel.S64201.values(), SunSpecModelType.VENDOR_SPECIFIC), //
+ S_64202("Battery Charge Discharge Characteristic", //
"Bidirectional inverter battery charge discharge characteristic", //
- "", //
- 14, //
- KacoSunSpecModel.S64202.values(), //
- SunSpecModelType.VENDOR_SPECIFIC), //
- S_64203(//
- "Batterysystem Information", //
+ 14 /* length */, KacoSunSpecModel.S64202.values(), SunSpecModelType.VENDOR_SPECIFIC), //
+ S_64203("Batterysystem Information", //
"Batterysystem Information Frontend", //
- "", //
- 26, //
- KacoSunSpecModel.S64203.values(), //
- SunSpecModelType.VENDOR_SPECIFIC), //
- S_64204(//
- "Q(U) extended", //
+ 26 /* length */, KacoSunSpecModel.S64203.values(), SunSpecModelType.VENDOR_SPECIFIC), //
+ S_64204("Q(U) extended", //
"Q(U) offset extension", //
- "", //
- 8, //
- KacoSunSpecModel.S64204.values(), //
- SunSpecModelType.VENDOR_SPECIFIC //
- ); //
+ 8 /* length */, KacoSunSpecModel.S64204.values(), SunSpecModelType.VENDOR_SPECIFIC //
+ );
public static enum S64201 implements SunSpecPoint {
- VERSION_MAJOR(new PointImpl(//
- "S64201_VERSION_MAJOR", //
- "Version", //
- "Major Version of model", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VERSION_MINOR(new PointImpl(//
- "S64201_VERSION_MINOR", //
- "VerMinor", //
- "Minor Version of model", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- REQUESTED_STATE(new PointImpl(//
- "S64201_REQUESTED_STATE", //
- "RequestedState", //
- "Enumerated value. Control operating state", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S64201RequestedState.values())), //
- CURRENT_STATE(new PointImpl(//
- "S64201_CURRENT_STATE", //
- "CurrentState", //
- "Enumerated value. Operating State", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S64201CurrentState.values())),
- CONTROL_MODE(new PointImpl(//
- "S64201_CONTROL_MODE", //
- "ControlMode", //
- "Power Control mode", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S64201ControlMode.values())),
- RESERVED_5(new ReservedPointImpl("S64201_RESERVED_5")), //
- WATCHDOG(new PointImpl(//
- "S64201_WATCHDOG", //
- "Watchdog", //
- "Enable Watchdog", //
- """
- Register must be written with the desired watchdog timeout in seconds. \
- Watchdog timer is reset on every write access to the value written \
- to the register. 0 means watchdog is disabled. It is recommended to \
- re-write the register at least once before half of the watchdog timeout \
- has elapsed.""", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- W_SET_PCT(new PointImpl(//
- "S64201_W_SET_PCT", //
- "WSetPct", //
- "Active power output setpoint (in percent of WMax)", //
+ VERSION_MAJOR(new ValuePoint("S64201_VERSION_MAJOR", "Major Version of model", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ VERSION_MINOR(new ValuePoint("S64201_VERSION_MINOR", "Minor Version of model", "", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_ONLY, Unit.NONE)),
+ REQUESTED_STATE(new EnumPoint("S64201_REQUESTED_STATE", "Enumerated value. Control operating state", "", //
+ EnumPoint.Type.ENUM16, true, AccessMode.READ_WRITE, S64201RequestedState.values())), //
+ CURRENT_STATE(new EnumPoint("S64201_CURRENT_STATE", "Enumerated value. Operating State", "", //
+ EnumPoint.Type.ENUM16, true, AccessMode.READ_ONLY, S64201CurrentState.values())),
+ CONTROL_MODE(new EnumPoint("S64201_CONTROL_MODE", "Power Control mode", "", //
+ EnumPoint.Type.ENUM16, true, AccessMode.READ_WRITE, S64201ControlMode.values())),
+ RESERVED_5(new ReservedPoint("S64201_RESERVED_5")), //
+ WATCHDOG(new ValuePoint("S64201_WATCHDOG", "Enable Watchdog", """
+ Register must be written with the desired watchdog timeout in seconds. \
+ Watchdog timer is reset on every write access to the value written \
+ to the register. 0 means watchdog is disabled. It is recommended to \
+ re-write the register at least once before half of the watchdog timeout \
+ has elapsed.""", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_WRITE, Unit.SECONDS)),
+ W_SET_PCT(new ScaledValuePoint("S64201_W_SET_PCT", "Active power output setpoint (in percent of WMax)", //
"negative values mean charge", //
- PointType.INT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "W_SET_PCT_SF", //
- new OptionsEnum[0])), //
- VAR_SET_PCT(new PointImpl(//
- "S64201_VAR_SET_PCT", //
- "VarSetPct", //
- "Reactive power output setpoint (in percent of VAMax)", //
+ ValuePoint.Type.INT16, true, AccessMode.READ_WRITE, Unit.PERCENT, "W_SET_PCT_SF")), //
+ VAR_SET_PCT(new ScaledValuePoint("S64201_VAR_SET_PCT", "Reactive power output setpoint (in percent of VAMax)", //
"negative values mean charge", //
- PointType.INT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "VAR_SET_PCT_SF", //
- new OptionsEnum[0])), //
- RESERVED_9(new ReservedPointImpl("S64201_RESERVED_9")), //
- RESERVED_10(new ReservedPointImpl("S64201_RESERVED_10")), //
- RESERVED_11(new ReservedPointImpl("S64201_RESERVED_11")), //
- RESERVED_12(new ReservedPointImpl("S64201_RESERVED_12")), //
- RESERVED_13(new ReservedPointImpl("S64201_RESERVED_13")), //
- ST_VND(new PointImpl(//
- "S64201_ST_VND", //
- "StVnd", //
- "PrologState", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S64201StVnd.values())),
- ST_PU(new PointImpl(//
- "S64201_ST_PU", //
- "StPu", //
- "Power Unit State (DSP)", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S64201StPu.values())),
- ST_PCU(new PointImpl(//
- "S64201_ST_PCU", //
- "StPcu", //
- "Precharge unit state", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S64201StPcu.values())),
- ERR_PCU(new PointImpl(//
- "S64201_ERR_PCU", //
- "ErrPcu", //
- "Precharge unit error", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S64201ErrPcu.values())),
- WPARAM_RMP_TMS(new PointImpl(//
- "S64201_WPARAM_RMP_TMS", //
- "WparamRmpTms", //
+ ValuePoint.Type.INT16, true, AccessMode.READ_WRITE, Unit.PERCENT, "VAR_SET_PCT_SF")), //
+ RESERVED_9(new ReservedPoint("S64201_RESERVED_9")), //
+ RESERVED_10(new ReservedPoint("S64201_RESERVED_10")), //
+ RESERVED_11(new ReservedPoint("S64201_RESERVED_11")), //
+ RESERVED_12(new ReservedPoint("S64201_RESERVED_12")), //
+ RESERVED_13(new ReservedPoint("S64201_RESERVED_13")), //
+ ST_VND(new EnumPoint("S64201_ST_VND", "PrologState", "", //
+ EnumPoint.Type.ENUM16, false, AccessMode.READ_ONLY, S64201StVnd.values())),
+ ST_PU(new EnumPoint("S64201_ST_PU", "Power Unit State (DSP)", "", //
+ EnumPoint.Type.ENUM16, true, AccessMode.READ_ONLY, S64201StPu.values())),
+ ST_PCU(new EnumPoint("S64201_ST_PCU", "Precharge unit state", "", //
+ EnumPoint.Type.ENUM16, false, AccessMode.READ_ONLY, S64201StPcu.values())),
+ ERR_PCU(new EnumPoint("S64201_ERR_PCU", "Precharge unit error", "", //
+ EnumPoint.Type.ENUM16, false, AccessMode.READ_ONLY, S64201ErrPcu.values())),
+ WPARAM_RMP_TMS(new ValuePoint("S64201_WPARAM_RMP_TMS", "WparamRmpDecTmm", //
"The time of the PT1 in seconds (time to accomplish a change of 99,3% which means 5tau)"
+ " for active power (W) in response to changes of WSetPct.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.MILLISECONDS, //
- null, //
- new OptionsEnum[0])), //
- WPARAM_RMP_DEC_TMM(new PointImpl(//
- "S64201_WPARAM_RMP_DEC_TMM", //
- "WparamRmpDecTmm", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_WRITE, Unit.MILLISECONDS)), //
+ WPARAM_RMP_DEC_TMM(new ScaledValuePoint("S64201_WPARAM_RMP_DEC_TMM", "WparamRmpDecTmm", //
"The maximum rate at which the active power (W) value may be decreased in response to changes of WSetPct", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "RMP_INC_DEC_SF", //
- new OptionsEnum[0])), //
- WPARAM_RMP_INC_TMM(new PointImpl(//
- "S64201_WPARAM_RMP_INC_TMM", //
- "WparamRmpIncTmm", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_WRITE, Unit.PERCENT, "RMP_INC_DEC_SF")), //
+ WPARAM_RMP_INC_TMM(new ScaledValuePoint("S64201_WPARAM_RMP_INC_TMM", "WparamRmpIncTmm", //
"The maximum rate at which the active power (W) value may be increased in response to changes of WSetPct", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "RMP_INC_DEC_SF", //
- new OptionsEnum[0])), //
- RESERVED_21(new ReservedPointImpl("S64201_RESERVED_21")), //
- RESERVED_22(new ReservedPointImpl("S64201_RESERVED_22")), //
- W_PARAM_ENA(new PointImpl(//
- "S64201_W_PARAM_ENA", //
- "WParamEna", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_WRITE, Unit.PERCENT, "RMP_INC_DEC_SF")), //
+ RESERVED_21(new ReservedPoint("S64201_RESERVED_21")), //
+ RESERVED_22(new ReservedPoint("S64201_RESERVED_22")), //
+ W_PARAM_ENA(new EnumPoint("S64201_W_PARAM_ENA", "WSet_Ena control", //
"Enumerated value. Enable filter and ramp rate parameters for active power setpoint (W)", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S64201WParamEna.values())), //
- VAR_PARAM_RMP_TMS(new PointImpl(//
- "S64201_VAR_PARAM_RMP_TMS", //
- "VarParamRmpTms", //
+ EnumPoint.Type.ENUM16, true, AccessMode.READ_WRITE, S64201WParamEna.values())), //
+ VAR_PARAM_RMP_TMS(new ScaledValuePoint("S64201_VAR_PARAM_RMP_TMS", "VarParamRmpTms", //
"The time of the PT1 in seconds (time to accomplish a change of 99,3% which means 5tau) "
+ "for reactive power (var) in response to changes of VarSetPct.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- "RMP_TMS_SF", //
- new OptionsEnum[0])), //
- VAR_PARAM_RMP_DEC_TMM(new PointImpl(//
- "S64201_VAR_PARAM_RMP_DEC_TMM", //
- "VarParamRmpDecTmm", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_WRITE, Unit.SECONDS, "RMP_TMS_SF")), //
+ VAR_PARAM_RMP_DEC_TMM(new ScaledValuePoint("S64201_VAR_PARAM_RMP_DEC_TMM", "VarParamRmpDecTmm", //
"The maximum rate at which the reactive power (var) may be decreased in response to changes of VarSetPct.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "RMP_INC_DEC_SF", //
- new OptionsEnum[0])), //
- VAR_PARAM_RMP_INC_TMM(new PointImpl(//
- "S64201_VAR_PARAM_RMP_INC_TMM", //
- "VarParamRmpDecTmm", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_WRITE, Unit.PERCENT, "RMP_INC_DEC_SF")), //
+ VAR_PARAM_RMP_INC_TMM(new ScaledValuePoint("S64201_VAR_PARAM_RMP_INC_TMM", "VarParamRmpIncTmm", //
"The maximum rate at which the reactive power (var) may be increased in response to changes of VarSetPct.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "RMP_INC_DEC_SF", //
- new OptionsEnum[0])), //
- RESERVED_27(new ReservedPointImpl("S64201_RESERVED_27")), //
- RESERVED_28(new ReservedPointImpl("S64201_RESERVED_28")), //
- VAR_PARAM_ENA(new PointImpl(//
- "S64201_VAR_PARAM_ENA", //
- "VarParamEna", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_WRITE, Unit.PERCENT, "RMP_INC_DEC_SF")), //
+ RESERVED_27(new ReservedPoint("S64201_RESERVED_27")), //
+ RESERVED_28(new ReservedPoint("S64201_RESERVED_28")), //
+ VAR_PARAM_ENA(new EnumPoint("S64201_VAR_PARAM_ENA", "VarParam_Ena", //
"Enumerated value. Enable filter and ramp rate parameters for reactive power setpoint (var)", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S64201VarParamEna.values())), //
- PH_VPH_A(new PointImpl(//
- "S64201_PH_VPH_A", //
- "Phase Voltage AN", //
- "Phase Voltage AN", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_B(new PointImpl(//
- "S64201_PH_VPH_B", //
- "Phase Voltage BN", //
- "Phase Voltage BN", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_C(new PointImpl(//
- "S64201_PH_VPH_C", //
- "Phase Voltage CN", //
- "Phase Voltage CN", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- W(new PointImpl(//
- "S64201_W", //
- "Watts", //
- "AC Power", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- V_AR(new PointImpl(//
- "S64201_V_AR", //
- "VAr", //
- "AC Reactive Power", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "V_AR_SF", //
- new OptionsEnum[0])), //
- HZ(new PointImpl(//
- "S64201_HZ", //
- "Hz", //
- "Line Frequency", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.MILLIHERTZ, //
- "mHZ_SF", //
- new OptionsEnum[0])), //
- RESERVED_36(new ReservedPointImpl("S64201_RESERVED_36")), //
- RESERVED_37(new ReservedPointImpl("S64201_RESERVED_37")), //
- RESERVED_38(new ReservedPointImpl("S64201_RESERVED_38")), //
- RESERVED_39(new ReservedPointImpl("S64201_RESERVED_39")), //
- RESERVED_40(new ReservedPointImpl("S64201_RESERVED_40")), //
- RESERVED_41(new ReservedPointImpl("S64201_RESERVED_41")), //
- RESERVED_42(new ReservedPointImpl("S64201_RESERVED_42")), //
- RESERVED_43(new ReservedPointImpl("S64201_RESERVED_43")), //
- W_SET_PCT_SF(new PointImpl(//
- "S64201_W_SET_PCT_SF", //
- "WSetPct_SF", //
- "Scale factor for active power setpoint (% WMax)", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VAR_SET_PCT_SF(new PointImpl(//
- "S64201_VAR_SET_PCT_SF", //
- "VarSetPct_SF", //
- "Scale factor for reactive power setpoint (% VAMax)", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- RMP_TMS_SF(new PointImpl(//
- "S64201_RMP_TMS_SF", //
- "RmpTms_SF", //
- "Scale factor for PT1", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- RMP_INC_DEC_SF(new PointImpl(//
- "S64201_RMP_INC_DEC_SF", //
- "RmpIncDec_SF", //
- "Scale factor for increment and decrement ramps.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_SF(new PointImpl(//
- "S64201_V_SF", //
- "V_SF", //
- "Scale factor for voltage measurements", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W_SF(new PointImpl(//
- "S64201_W_SF", //
- "W_SF", //
- "Scale factor for active power measurement", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_AR_SF(new PointImpl(//
- "S64201_V_AR_SF", //
- "VAr_SF", //
- "Scale factor for reactive power measurement", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- HZ_SF(new PointImpl(//
- "S64201_HZ_SF", //
- "Hz_SF", //
- "Scale factor for frequency measurement", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ; //
+ EnumPoint.Type.ENUM16, true, AccessMode.READ_WRITE, S64201VarParamEna.values())), //
+ PH_VPH_A(new ScaledValuePoint("S64201_PH_VPH_A", "Phase Voltage AN", "", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_B(new ScaledValuePoint("S64201_PH_VPH_B", "Phase Voltage BN", "", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_C(new ScaledValuePoint("S64201_PH_VPH_C", "Phase Voltage CN", "", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ W(new ScaledValuePoint("S64201_W", "AC Power", "", //
+ ValuePoint.Type.INT16, true, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ V_AR(new ScaledValuePoint("S64201_V_AR", "AC Reactive Power", "", //
+ ValuePoint.Type.INT16, true, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "V_AR_SF")), //
+ HZ(new ScaledValuePoint("S64201_HZ", "Line Frequency", "", //
+ ValuePoint.Type.INT16, true, AccessMode.READ_ONLY, Unit.MILLIHERTZ, "mHZ_SF")), //
+ RESERVED_36(new ReservedPoint("S64201_RESERVED_36")), //
+ RESERVED_37(new ReservedPoint("S64201_RESERVED_37")), //
+ RESERVED_38(new ReservedPoint("S64201_RESERVED_38")), //
+ RESERVED_39(new ReservedPoint("S64201_RESERVED_39")), //
+ RESERVED_40(new ReservedPoint("S64201_RESERVED_40")), //
+ RESERVED_41(new ReservedPoint("S64201_RESERVED_41")), //
+ RESERVED_42(new ReservedPoint("S64201_RESERVED_42")), //
+ RESERVED_43(new ReservedPoint("S64201_RESERVED_43")), //
+ W_SET_PCT_SF(
+ new ScaleFactorPoint("S64201_W_SET_PCT_SF", "Scale factor for active power setpoint (% WMax)", "")), //
+ VAR_SET_PCT_SF(new ScaleFactorPoint("S64201_VAR_SET_PCT_SF",
+ "Scale factor for reactive power setpoint (% VAMax)", "")), //
+ RMP_TMS_SF(new ScaleFactorPoint("S64201_RMP_TMS_SF", "Scale factor for PT1", "")), //
+ RMP_INC_DEC_SF(
+ new ScaleFactorPoint("S64201_RMP_INC_DEC_SF", "Scale factor for increment and decrement ramps.", "")), //
+ V_SF(new ScaleFactorPoint("S64201_V_SF", "Scale factor for voltage measurements", "")), //
+ W_SF(new ScaleFactorPoint("S64201_W_SF", "Scale factor for active power measurement", "")), //
+ V_AR_SF(new ScaleFactorPoint("S64201_V_AR_SF", "Scale factor for reactive power measurement", "")), //
+ HZ_SF(new ScaleFactorPoint("S64201_HZ_SF", "Scale factor for frequency measurement", ""));
public static enum S64201RequestedState implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
@@ -854,145 +539,46 @@ public OptionsEnum getUndefined() {
}
}
- protected final PointImpl impl;
+ protected final Point impl;
- private S64201(PointImpl impl) {
+ private S64201(Point impl) {
this.impl = impl;
}
@Override
- public PointImpl get() {
+ public Point get() {
return this.impl;
}
}
// TODO Registers DIS_MIN_V to EN_LIMIT are repeated blocks
public static enum S64202 implements SunSpecPoint {
- VERSION_MAJOR(new PointImpl(//
- "S64202_VERSION_MAJOR", //
- "Version", //
- "Major Version of model", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VERSION_MINOR(new PointImpl(//
- "S64202_VERSION_MINOR", //
- "VerMinor", //
- "Minor Version of model", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- RESERVED_2(new ReservedPointImpl("S64202_RESERVED_2")), //
- RESERVED_3(new ReservedPointImpl("S64202_RESERVED_3")), //
- V_SF(new PointImpl(//
- "S64202_V_SF", //
- "V_SF", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- A_SF(new PointImpl(//
- "S64202_A_SF", //
- "A_SF", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DIS_MIN_V_0(new PointImpl(//
- "S64202_DIS_MIN_V_0", //
- "min. discharge voltage", //
- "min. discharge voltage", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- DIS_MAX_A_0(new PointImpl(//
- "S64202_DIS_MAX_A_0", //
- "max. discharge current", //
- "max. discharge current", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- DIS_CUTOFF_A_0(new PointImpl(//
- "S64202_DIS_CUTOFF_A_0", //
- "discharge cutoff current", //
- "Disconnect if discharge current lower than DisCutoffA", //
- "no auto disconnect if value is 0", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- CHA_MAX_V_0(new PointImpl(//
- "S64202_CHA_MAX_V_0", //
- "max. charge voltage", //
- "max. charge voltage", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- CHA_MAX_A_0(new PointImpl(//
- "S64202_CHA_MAX_A_0", //
- "max. charge current", //
- "max. charge current", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- CHA_CUTOFF_A_0(new PointImpl(//
- "S64202_CHA_CUTOFF_A_0", //
- "charge cutoff current", //
- "Disconnect if charge current lower than ChaCutoffA", //
- "no auto disconnect if value is 0", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- RESERVED_0(new ReservedPointImpl("S64202_RESERVED_0")), //
- EN_LIMIT_0(new PointImpl(//
- "S64202_EN_LIMIT_0", //
- "EnLimit", //
- "new battery limits are activated when EnLimit is 1", //
- "must be 0 or 1", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S64202EnLimit.values())), //
- ; //
+ VERSION_MAJOR(new ValuePoint("S64202_VERSION_MAJOR", "Major Version of model", "", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_ONLY, Unit.NONE)), //
+ VERSION_MINOR(new ValuePoint("S64202_VERSION_MINOR", "Minor Version of model", "", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_ONLY, Unit.NONE)), //
+ RESERVED_2(new ReservedPoint("S64202_RESERVED_2")), //
+ RESERVED_3(new ReservedPoint("S64202_RESERVED_3")), //
+ V_SF(new ScaleFactorPoint("S64202_V_SF", "", "")), //
+ A_SF(new ScaleFactorPoint("S64202_A_SF", "", "")), //
+ DIS_MIN_V_0(new ScaledValuePoint("S64202_DIS_MIN_V_0", "min. discharge voltage", "", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_WRITE, Unit.VOLT, "V_SF")), //
+ DIS_MAX_A_0(new ScaledValuePoint("S64202_DIS_MAX_A_0", "max. discharge current", "", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_WRITE, Unit.AMPERE, "A_SF")), //
+ DIS_CUTOFF_A_0(new ScaledValuePoint("S64202_DIS_CUTOFF_A_0", "discharge cutoff current", //
+ "Disconnect if discharge current lower than DisCutoffA. No auto disconnect if value is 0", //
+ ValuePoint.Type.UINT16, false, AccessMode.READ_WRITE, Unit.AMPERE, "A_SF")), //
+ CHA_MAX_V_0(new ScaledValuePoint("S64202_CHA_MAX_V_0", "max. charge voltage", "", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_WRITE, Unit.VOLT, "V_SF")), //
+ CHA_MAX_A_0(new ScaledValuePoint("S64202_CHA_MAX_A_0", "max. charge current", "", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_WRITE, Unit.AMPERE, "A_SF")), //
+ CHA_CUTOFF_A_0(new ScaledValuePoint("S64202_CHA_CUTOFF_A_0", "charge cutoff current", //
+ "Disconnect if charge current lower than ChaCutoffA. No auto disconnect if value is 0", //
+ ValuePoint.Type.UINT16, false, AccessMode.READ_WRITE, Unit.AMPERE, "A_SF")), //
+ RESERVED_0(new ReservedPoint("S64202_RESERVED_0")), //
+ EN_LIMIT_0(new EnumPoint("S64202_EN_LIMIT_0", "EnLimit", //
+ "new battery limits are activated when EnLimit is 1. Must be 0 or 1", //
+ EnumPoint.Type.ENUM16, true, AccessMode.READ_WRITE, S64202EnLimit.values()));
public static enum S64202EnLimit implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
@@ -1023,152 +609,44 @@ public OptionsEnum getUndefined() {
}
}
- protected final PointImpl impl;
+ protected final Point impl;
- private S64202(PointImpl impl) {
+ private S64202(Point impl) {
this.impl = impl;
}
@Override
- public PointImpl get() {
+ public Point get() {
return this.impl;
}
}
// TODO Registers BAT_ID to BAT_SW_SUM are repeated blocks
public static enum S64203 implements SunSpecPoint {
- VERSION_MAJOR(new PointImpl(//
- "S64203_VERSION_MAJOR", //
- "Version", //
- "Major Version of model", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VERSION_MINOR(new PointImpl(//
- "S64203_VERSION_MINOR", //
- "VerMinor", //
- "Minor Version of model", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- E_M_S_ERR_CODE(new PointImpl(//
- "S64203_E_M_S_ERR_CODE", //
- "Errorcode from EMS", //
- "Minor Version of model", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S64203EmsErrCode.values())),
- SOC_SF(new PointImpl(//
- "S64203_SOC_SF", //
- "SoC_SF", //
- "SoC scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- SOH_SF(new PointImpl(//
- "S64203_SOH_SF", //
- "SoH_SF", //
- "SoH scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TEMP_SF(new PointImpl(//
- "S64203_TEMP_SF", //
- "Temp_SF", //
- "temperature scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- BAT_ID_0(new PointImpl(//
- "S64203_BAT_ID_0", //
- "Battery ID / Serial number", //
- "Battery ID or Serial number", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- BAT_SOC_0(new PointImpl(//
- "S64203_BAT_SOC_0", //
- "SoC of battery", //
- "SoC of battery", //
+ VERSION_MAJOR(new ValuePoint("S64203_VERSION_MAJOR", "Major Version of model", "", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_ONLY, Unit.NONE)), //
+ VERSION_MINOR(new ValuePoint("S64203_VERSION_MINOR", "Minor Version of model", "", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_ONLY, Unit.NONE)), //
+ EMS_ERR_CODE(new EnumPoint("S64203_EMS_ERR_CODE", "Errorcode from EMS", "", //
+ EnumPoint.Type.ENUM16, false, AccessMode.READ_WRITE, S64203EmsErrCode.values())),
+ SOC_SF(new ScaleFactorPoint("S64203_SOC_SF", "SoC scale factor", "")), //
+ SOH_SF(new ScaleFactorPoint("S64203_SOH_SF", "SoH scale factor", "")), //
+ TEMP_SF(new ScaleFactorPoint("S64203_TEMP_SF", "temperature scale factor", "")), //
+ BAT_ID_0(new ValuePoint("S64203_BAT_ID_0", "Battery ID or Serial number", "", //
+ ValuePoint.Type.UINT16, false, AccessMode.READ_WRITE, Unit.VOLT)), //
+ BAT_SOC_0(new ScaledValuePoint("S64203_BAT_SOC_0", "SoC of battery", //
"valid range is from 0 to 100", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "SOC_SF", //
- new OptionsEnum[0])), //
- BAT_SOH_0(new PointImpl(//
- "S64203_BAT_SOH_0", //
- "SoH of battery", //
- "SoH of battery", //
+ ValuePoint.Type.UINT16, false, AccessMode.READ_WRITE, Unit.PERCENT, "SOC_SF")), //
+ BAT_SOH_0(new ScaledValuePoint("S64203_BAT_SOH_0", "SoH of battery", //
"valid range is from 0 to 100", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "SOH_SF", //
- new OptionsEnum[0])), //
- BAT_TEMP_0(new PointImpl(//
- "S64203_BAT_TEMP_0", //
- "Avg. temperature of battery", //
- "Avg. temperature of battery", //
+ ValuePoint.Type.UINT16, false, AccessMode.READ_WRITE, Unit.PERCENT, "SOH_SF")), //
+ BAT_TEMP_0(new ScaledValuePoint("S64203_BAT_TEMP_0", "Avg. temperature of battery",
"valid range is from -50 to 100", //
- PointType.INT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.DEGREE_CELSIUS, //
- "TEMP_SF", //
- new OptionsEnum[0])), //
- BAT_SW_VER_0(new PointImpl(//
- "S64203_BAT_SW_VER_0", //
- "Softwareversion of battery", //
- "Softwareversion of battery", //
- "", //
- PointType.STRING4, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- BAT_SW_SUM_0(new PointImpl(//
- "S64203_BAT_SW_SUM_0", //
- "Software checksum of battery", //
- "Software checksum of battery", //
- "", //
- PointType.STRING4, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
+ ValuePoint.Type.INT16, false, AccessMode.READ_WRITE, Unit.DEGREE_CELSIUS, "TEMP_SF")), //
+ BAT_SW_VER_0(new ValuePoint("S64203_BAT_SW_VER_0", "Softwareversion of battery", "", //
+ ValuePoint.Type.STRING4, false, AccessMode.READ_WRITE, Unit.NONE)), //
+ BAT_SW_SUM_0(new ValuePoint("S64203_BAT_SW_SUM_0", "Software checksum of battery", "", //
+ ValuePoint.Type.STRING4, false, AccessMode.READ_WRITE, Unit.NONE)), //
; //
public static enum S64203EmsErrCode implements OptionsEnum {
@@ -1198,109 +676,34 @@ public OptionsEnum getUndefined() {
}
}
- protected final PointImpl impl;
+ protected final Point impl;
- private S64203(PointImpl impl) {
+ private S64203(Point impl) {
this.impl = impl;
}
@Override
- public PointImpl get() {
+ public Point get() {
return this.impl;
}
}
public static enum S64204 implements SunSpecPoint {
- VERSION_MAJOR(new PointImpl(//
- "S64204_VERSION_MAJOR", //
- "Version", //
- "Major Version of model", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VERSION_MINOR(new PointImpl(//
- "S64204_VERSION_MINOR", //
- "VerMinor", //
- "Minor Version of model", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_OFF_PCT(new PointImpl(//
- "S64204_V_OFF_PCT", //
- "VOffPct", //
- "Q(U) grid voltage offset", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "V_OFF_PCT_SF", //
- new OptionsEnum[0])), //
- VAR_OFF_PCT(new PointImpl(//
- "S64204_VAR_OFF_PCT", //
- "VArOffPct", //
- "Q(U) reactive power offset (The depending reference is configured in model 126. "
- + "%refVal is %Wmax, %VArMax or %VArAval depending on value of DeptRef in model 126)", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "VAR_OFF_PCT_SF", //
- new OptionsEnum[0])), //
- RVRT_TMS(new PointImpl(//
- "S64204_RVRT_TMS", //
- "RvrtTms", //
- "Timeout period for volt-VAR curve selection", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- OFFSET_ENA(new PointImpl(//
- "S64204_OFFSET_ENA", //
- "OffsetEna", //
- "Q(U) dynamic Q/U offset enable", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S64204OffsetEna.values())), //
- V_OFF_PCT_SF(new PointImpl(//
- "S64204_V_OFF_PCT_SF", //
- "VOffPct_SF", //
- "Scale factor for offset voltage", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VAR_OFF_PCT_SF(new PointImpl(//
- "S64204_VAR_OFF_PCT_SF", //
- "VarOffPct_SF", //
- "Scale factor for reactive power offset", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])) //
- ; //
+ VERSION_MAJOR(new ValuePoint("S64204_VERSION_MAJOR", "Major Version of model", "", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_ONLY, Unit.NONE)), //
+ VERSION_MINOR(new ValuePoint("S64204_VERSION_MINOR", "Minor Version of model", "", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_ONLY, Unit.NONE)), //
+ V_OFF_PCT(new ScaledValuePoint("S64204_V_OFF_PCT", "Q(U) grid voltage offset", "", //
+ ValuePoint.Type.INT16, true, AccessMode.READ_WRITE, Unit.PERCENT, "V_OFF_PCT_SF")), //
+ VAR_OFF_PCT(new ScaledValuePoint("S64204_VAR_OFF_PCT", "VArOffPct", //
+ "Q(U) reactive power offset (The depending reference is configured in model 126. %refVal is %Wmax, %VArMax or %VArAval depending on value of DeptRef in model 126)", //
+ ValuePoint.Type.INT16, true, AccessMode.READ_WRITE, Unit.PERCENT, "VAR_OFF_PCT_SF")), //
+ RVRT_TMS(new ValuePoint("S64204_RVRT_TMS", "Timeout period for volt-VAR curve selection", "", //
+ ValuePoint.Type.UINT16, true, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ OFFSET_ENA(new EnumPoint("S64204_OFFSET_ENA", "Q(U) dynamic Q/U offset enable", "", //
+ EnumPoint.Type.ENUM16, true, AccessMode.READ_WRITE, S64204OffsetEna.values())), //
+ V_OFF_PCT_SF(new ScaleFactorPoint("S64204_V_OFF_PCT_SF", "Scale factor for offset voltage", "")), //
+ VAR_OFF_PCT_SF(new ScaleFactorPoint("S64204_VAR_OFF_PCT_SF", "Scale factor for reactive power offset", ""));
public static enum S64204OffsetEna implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
@@ -1331,30 +734,28 @@ public OptionsEnum getUndefined() {
}
}
- protected final PointImpl impl;
+ protected final Point impl;
- private S64204(PointImpl impl) {
+ private S64204(Point impl) {
this.impl = impl;
}
@Override
- public PointImpl get() {
+ public Point get() {
return this.impl;
}
}
public final String label;
public final String description;
- public final String notes;
public final int length;
public final SunSpecPoint[] points;
public final SunSpecModelType modelType;
- private KacoSunSpecModel(String label, String description, String notes, int length, SunSpecPoint[] points,
+ private KacoSunSpecModel(String label, String description, int length, SunSpecPoint[] points,
SunSpecModelType modelType) {
this.label = label;
this.description = description;
- this.notes = notes;
this.length = length;
this.points = points;
this.modelType = modelType;
@@ -1370,18 +771,9 @@ public String label() {
return this.label;
}
- private static class ReservedPointImpl extends PointImpl {
- protected ReservedPointImpl(String channelId) {
- super(channelId, //
- "Reserved", //
- "", //
- "", //
- PointType.PAD, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0]);
+ private static class ReservedPoint extends ValuePoint {
+ protected ReservedPoint(String channelId) {
+ super(channelId, "Reserved", "", ValuePoint.Type.PAD, false, AccessMode.READ_ONLY, Unit.NONE);
}
}
diff --git a/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/api/ElementToChannelScaleFactorConverter.java b/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/api/ElementToChannelScaleFactorConverter.java
index 75698cb16c2..cf558a53d99 100644
--- a/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/api/ElementToChannelScaleFactorConverter.java
+++ b/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/api/ElementToChannelScaleFactorConverter.java
@@ -1,7 +1,7 @@
package io.openems.edge.bridge.modbus.api;
import io.openems.common.exceptions.InvalidValueException;
-import io.openems.edge.bridge.modbus.sunspec.SunSpecPoint;
+import io.openems.edge.bridge.modbus.sunspec.Point.ScaledValuePoint;
import io.openems.edge.common.channel.ChannelId;
import io.openems.edge.common.channel.IntegerReadChannel;
import io.openems.edge.common.component.OpenemsComponent;
@@ -28,7 +28,7 @@ private static int getValueOrError(OpenemsComponent component, ChannelId channel
return channel.value().getOrError();
}
- public ElementToChannelScaleFactorConverter(OpenemsComponent component, SunSpecPoint point,
+ public ElementToChannelScaleFactorConverter(OpenemsComponent component, ScaledValuePoint point,
ChannelId scaleFactorChannel) {
super(//
// element -> channel
diff --git a/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/api/worker/internal/TasksSupplierImpl.java b/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/api/worker/internal/TasksSupplierImpl.java
index f583b94b284..e7c6a4bcb02 100644
--- a/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/api/worker/internal/TasksSupplierImpl.java
+++ b/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/api/worker/internal/TasksSupplierImpl.java
@@ -47,6 +47,7 @@ public synchronized void addProtocol(String sourceId, ModbusProtocol protocol) {
*/
public synchronized void removeProtocol(String sourceId) {
this.taskManagers.remove(sourceId);
+ this.nextLowPriorityTasks.removeIf(t -> t.a() == sourceId);
}
@Override
diff --git a/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/AbstractOpenemsSunSpecComponent.java b/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/AbstractOpenemsSunSpecComponent.java
index a45c8251a35..3b01f8ce0da 100644
--- a/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/AbstractOpenemsSunSpecComponent.java
+++ b/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/AbstractOpenemsSunSpecComponent.java
@@ -3,6 +3,7 @@
import static com.ghgande.j2mod.modbus.Modbus.ILLEGAL_ADDRESS_EXCEPTION;
import static io.openems.edge.bridge.modbus.api.ModbusUtils.readElementOnce;
import static io.openems.edge.bridge.modbus.api.ModbusUtils.readElementsOnce;
+import static io.openems.edge.bridge.modbus.sunspec.Utils.toUpperUnderscore;
import static java.util.concurrent.CompletableFuture.completedFuture;
import java.util.ArrayList;
@@ -37,6 +38,12 @@
import io.openems.edge.bridge.modbus.api.task.FC16WriteRegistersTask;
import io.openems.edge.bridge.modbus.api.task.FC3ReadRegistersTask;
import io.openems.edge.bridge.modbus.api.task.Task.ExecuteState;
+import io.openems.edge.bridge.modbus.sunspec.Point.BitFieldPoint;
+import io.openems.edge.bridge.modbus.sunspec.Point.BitFieldPoint.SunSpecBitPoint;
+import io.openems.edge.bridge.modbus.sunspec.Point.ChannelIdPoint;
+import io.openems.edge.bridge.modbus.sunspec.Point.ModbusElementPoint;
+import io.openems.edge.bridge.modbus.sunspec.Point.ScaleFactorPoint;
+import io.openems.edge.bridge.modbus.sunspec.Point.ScaledValuePoint;
import io.openems.edge.common.channel.Channel;
import io.openems.edge.common.taskmanager.Priority;
@@ -231,7 +238,7 @@ private Entry getActiveModelForId(int blockId) {
}
/**
- * Overwrite to provide custom SunSpecModel.
+ * Override to provide custom {@link SunSpecModel}.
*
* @param blockId the Block-Id
* @return the {@link SunSpecModel}
@@ -241,6 +248,21 @@ protected SunSpecModel getSunSpecModel(int blockId) throws IllegalArgumentExcept
return null;
}
+ /**
+ * Override to provide custom {@link SunSpecBitPoint}s.
+ *
+ *
+ * Use this to create a different mapping for SunSpec BitFields, e.g. Model 103
+ * "Vendor defined events".
+ *
+ * @param bfp the {@link BitFieldPoint}
+ * @return array of {@link SunSpecBitPoint}s; null or empty uses defaults from
+ * {@link DefaultSunSpecModel}.
+ */
+ protected SunSpecBitPoint[] getBitPoints(BitFieldPoint bfp) {
+ return null;
+ }
+
/**
* Is the SunSpec initialization completed?.
*
@@ -277,27 +299,25 @@ protected void addBlock(int startAddress, SunSpecModel model, Priority priority)
startAddress += 2;
for (var i = 0; i < model.points().length; i++) {
var point = model.points()[i];
- final var element = point.get().generateModbusElement(startAddress);
+ var elements = this.addModbusElementAndChannels(startAddress, model, point);
+ var length = elements.stream().mapToInt(e -> e.length).sum();
// Handle AccessMode
switch (point.get().accessMode) {
case READ_ONLY -> {
- readElements.add(element);
+ readElements.addAll(elements);
}
case READ_WRITE -> {
- readElements.add(element);
- writeElements.add(element);
+ readElements.addAll(elements);
+ writeElements.addAll(elements);
}
case WRITE_ONLY -> {
- readElements.add(new DummyRegisterElement(element.startAddress, element.length));
- writeElements.add(element);
+ readElements.add(new DummyRegisterElement(startAddress, length));
+ writeElements.addAll(elements);
}
}
- startAddress += element.length;
- var channelId = point.getChannelId();
- this.addChannel(channelId);
- this.m(channelId, element, this.generateElementToChannelConverter(model, point));
+ startAddress += length;
}
// Create Tasks and add them to the ModbusProtocol
@@ -313,6 +333,38 @@ protected void addBlock(int startAddress, SunSpecModel model, Priority priority)
}
}
+ /**
+ * Adds an Element of the block starting from startAddress and maps it to
+ * Channel(s).
+ *
+ * @param startAddress the address to start reading from
+ * @param model the {@link SunSpecModel}
+ * @param ssp the {@link SunSpecPoint}
+ * @return the added {@link ModbusElement}s
+ */
+ protected List addModbusElementAndChannels(int startAddress, SunSpecModel model, SunSpecPoint ssp) {
+ final var p = ssp.get();
+ // TODO migrate to Java 21 Switch Pattern Matching
+ if (p instanceof BitFieldPoint bfp) {
+ // Channels are added and mapped internally
+ var alternativeBitPoints = this.getBitPoints(bfp);
+ return bfp.generateModbusElements(this, channelId -> this.addChannel(channelId), startAddress,
+ alternativeBitPoints);
+ }
+
+ if (p instanceof ModbusElementPoint mep) {
+ final var element = mep.generateModbusElement(startAddress);
+ if (p instanceof ChannelIdPoint cp) {
+ var channelId = cp.channelId;
+ this.addChannel(channelId);
+ this.m(channelId, element, this.generateElementToChannelConverter(model, p));
+ }
+ return List.of(element);
+ }
+
+ return List.of();
+ }
+
/**
* Converts a list of {@link ModbusElement}s to sublists, prepared for Modbus
* {@link AbstractTask}s.
@@ -368,7 +420,7 @@ protected static List> preprocessModbusElements(List Channel */ value -> point.isDefined(value) ? value : null,
@@ -376,23 +428,26 @@ protected ElementToChannelConverter generateElementToChannelConverter(SunSpecMod
// Generate Scale-Factor converter (possibly null)
ElementToChannelConverter scaleFactorConverter = null;
- if (point.get().scaleFactor.isPresent()) {
- final var scaleFactor = point.get().scaleFactor.get();
- final var scaleFactorName = SunSpecCodeGenerator.toUpperUnderscore(scaleFactor);
+
+ if (point instanceof ScaledValuePoint svp) {
+ final var scaleFactorName = toUpperUnderscore(svp.scaleFactor);
scaleFactorConverter = Stream.of(model.points()) //
.filter(p -> p.name().equals(scaleFactorName)) //
- .map(sfp -> new ElementToChannelScaleFactorConverter(this, point, sfp.getChannelId())) //
- // Found matching Scale-Factor Point in SunSpec Modal
+ .map(SunSpecPoint::get) //
+ .filter(ScaleFactorPoint.class::isInstance) //
+ .map(ScaleFactorPoint.class::cast) //
+ .map(sfp -> new ElementToChannelScaleFactorConverter(this, svp, sfp.channelId)) //
+ // Found matching Scale-Factor Point in SunSpec Model
.findFirst()
// Else: try to parse constant Scale-Factor
.orElseGet(() -> {
try {
- return new ElementToChannelScaleFactorConverter(Integer.parseInt(scaleFactor));
+ return new ElementToChannelScaleFactorConverter(Integer.parseInt(svp.scaleFactor));
} catch (NumberFormatException e) {
// Unable to parse Scale-Factor to static value
- this.logError(this.log, "Unable to parse Scale-Factor [" + scaleFactor + "] for Point ["
- + point.name() + "]");
+ this.logError(this.log, "Unable to parse Scale-Factor [" + svp.scaleFactor + "] for Point ["
+ + point.name + "]");
return null;
}
}); //
@@ -408,32 +463,38 @@ protected ElementToChannelConverter generateElementToChannelConverter(SunSpecMod
/**
* Get the Channel for the given Point.
*
- * @param the Channel type
- * @param point the SunSpec Point
- * @return the optional Channel
+ * @param the Channel type
+ * @param ssp the {@link SunSpecPoint}
+ * @return the optional {@link Channel}
*/
- protected > Optional getSunSpecChannel(SunSpecPoint point) {
- try {
- return Optional.ofNullable(this.channel(point.getChannelId()));
- } catch (IllegalArgumentException e) {
- return Optional.empty();
+ protected > Optional getSunSpecChannel(SunSpecPoint ssp) {
+ var point = ssp.get();
+ if (point instanceof ChannelIdPoint cp) {
+ try {
+ return Optional.ofNullable(this.channel(cp.channelId));
+ } catch (IllegalArgumentException e) {
+ // Ignore
+ }
+ } else {
+ // Ignore
}
+ return Optional.empty();
}
/**
* Get the Channel for the given Point or throw an error if it is not available.
*
- * @param the Channel type
- * @param point the SunSpec Point
- * @return the optional Channel
+ * @param the Channel type
+ * @param ssp the {@link SunSpecPoint}
+ * @return the optional {@link Channel}
* @throws OpenemsException if Channel is not available
*/
@SuppressWarnings("unchecked")
- protected > T getSunSpecChannelOrError(SunSpecPoint point) throws OpenemsException {
- Optional> channelOpt = this.getSunSpecChannel(point);
+ protected > T getSunSpecChannelOrError(SunSpecPoint ssp) throws OpenemsException {
+ Optional> channelOpt = this.getSunSpecChannel(ssp);
if (!channelOpt.isPresent()) {
- throw new OpenemsException("SunSpec Channel for Point [" + point.getClass().getSimpleName() + "."
- + point.name() + "] is not available");
+ throw new OpenemsException("SunSpec Channel for Point [" + ssp.getClass().getSimpleName() + "." + ssp.name()
+ + "] is not available");
}
return (T) channelOpt.get();
}
diff --git a/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/DefaultSunSpecModel.java b/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/DefaultSunSpecModel.java
index f40ce5a9b4e..8911c6ee34e 100644
--- a/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/DefaultSunSpecModel.java
+++ b/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/DefaultSunSpecModel.java
@@ -3,618 +3,242 @@
package io.openems.edge.bridge.modbus.sunspec;
import io.openems.common.channel.AccessMode;
+import io.openems.common.channel.Level;
import io.openems.common.channel.Unit;
import io.openems.common.types.OptionsEnum;
+import io.openems.edge.bridge.modbus.sunspec.Point.BitFieldPoint;
+import io.openems.edge.bridge.modbus.sunspec.Point.BitFieldPoint.SunSpecBitPoint;
+import io.openems.edge.bridge.modbus.sunspec.Point.BitPoint;
+import io.openems.edge.bridge.modbus.sunspec.Point.EnumPoint;
+import io.openems.edge.bridge.modbus.sunspec.Point.ScaleFactorPoint;
+import io.openems.edge.bridge.modbus.sunspec.Point.ScaledValuePoint;
+import io.openems.edge.bridge.modbus.sunspec.Point.ValuePoint;
/**
* Do not touch this file. It is auto-generated by SunSpecCodeGenerator.
*/
public enum DefaultSunSpecModel implements SunSpecModel {
- S_1(//
- "Common", //
+ S_1("Common", //
"All SunSpec compliant devices must include this as the first model", //
- "", //
- 66, //
- DefaultSunSpecModel.S1.values(), //
- SunSpecModelType.COMMON //
- ), //
- S_2(//
- "Basic Aggregator", //
+ 66 /* length */, DefaultSunSpecModel.S1.values(), SunSpecModelType.COMMON), //
+ S_2("Basic Aggregator", //
"Aggregates a collection of models for a given model id", //
- "", //
- 14, //
- DefaultSunSpecModel.S2.values(), //
- SunSpecModelType.AGGREGATOR //
- ), //
- S_15(//
- "Interface Counters Model", //
+ 14 /* length */, DefaultSunSpecModel.S2.values(), SunSpecModelType.AGGREGATOR), //
+ S_15("Interface Counters Model", //
"Interface counters", //
- "", //
- 24, //
- DefaultSunSpecModel.S15.values(), //
- SunSpecModelType.NETWORK_CONFIGURATION //
- ), //
- S_18(//
- "Cellular Link", //
+ 24 /* length */, DefaultSunSpecModel.S15.values(), SunSpecModelType.NETWORK_CONFIGURATION), //
+ S_18("Cellular Link", //
"Include this model to support a cellular interface link", //
- "", //
- 22, //
- DefaultSunSpecModel.S18.values(), //
- SunSpecModelType.NETWORK_CONFIGURATION //
- ), //
- S_101(//
- "Inverter (Single Phase)", //
+ 22 /* length */, DefaultSunSpecModel.S18.values(), SunSpecModelType.NETWORK_CONFIGURATION), //
+ S_101("Inverter (Single Phase)", //
"Include this model for single phase inverter monitoring", //
- "", //
- 50, //
- DefaultSunSpecModel.S101.values(), //
- SunSpecModelType.INVERTER //
- ), //
- S_102(//
- "Inverter (Split-Phase)", //
+ 50 /* length */, DefaultSunSpecModel.S101.values(), SunSpecModelType.INVERTER), //
+ S_102("Inverter (Split-Phase)", //
"Include this model for split phase inverter monitoring", //
- "", //
- 50, //
- DefaultSunSpecModel.S102.values(), //
- SunSpecModelType.INVERTER //
- ), //
- S_103(//
- "Inverter (Three Phase)", //
+ 50 /* length */, DefaultSunSpecModel.S102.values(), SunSpecModelType.INVERTER), //
+ S_103("Inverter (Three Phase)", //
"Include this model for three phase inverter monitoring", //
- "", //
- 50, //
- DefaultSunSpecModel.S103.values(), //
- SunSpecModelType.INVERTER //
- ), //
- S_111(//
- "Inverter (Single Phase) FLOAT", //
+ 50 /* length */, DefaultSunSpecModel.S103.values(), SunSpecModelType.INVERTER), //
+ S_111("Inverter (Single Phase) FLOAT", //
"Include this model for single phase inverter monitoring using float values", //
- "", //
- 60, //
- DefaultSunSpecModel.S111.values(), //
- SunSpecModelType.INVERTER //
- ), //
- S_112(//
- "Inverter (Split Phase) FLOAT", //
+ 60 /* length */, DefaultSunSpecModel.S111.values(), SunSpecModelType.INVERTER), //
+ S_112("Inverter (Split Phase) FLOAT", //
"Include this model for split phase inverter monitoring using float values", //
- "", //
- 60, //
- DefaultSunSpecModel.S112.values(), //
- SunSpecModelType.INVERTER //
- ), //
- S_113(//
- "Inverter (Three Phase) FLOAT", //
+ 60 /* length */, DefaultSunSpecModel.S112.values(), SunSpecModelType.INVERTER), //
+ S_113("Inverter (Three Phase) FLOAT", //
"Include this model for three phase inverter monitoring using float values", //
- "", //
- 60, //
- DefaultSunSpecModel.S113.values(), //
- SunSpecModelType.INVERTER //
- ), //
- S_120(//
- "Nameplate", //
+ 60 /* length */, DefaultSunSpecModel.S113.values(), SunSpecModelType.INVERTER), //
+ S_120("Nameplate", //
"Inverter Controls Nameplate Ratings", //
- "", //
- 26, //
- DefaultSunSpecModel.S120.values(), //
- SunSpecModelType.INVERTER //
- ), //
- S_121(//
- "Basic Settings", //
+ 26 /* length */, DefaultSunSpecModel.S120.values(), SunSpecModelType.INVERTER), //
+ S_121("Basic Settings", //
"Inverter Controls Basic Settings", //
- "", //
- 30, //
- DefaultSunSpecModel.S121.values(), //
- SunSpecModelType.INVERTER //
- ), //
- S_122(//
- "Measurements_Status", //
+ 30 /* length */, DefaultSunSpecModel.S121.values(), SunSpecModelType.INVERTER), //
+ S_122("Measurements_Status", //
"Inverter Controls Extended Measurements and Status", //
- "", //
- 44, //
- DefaultSunSpecModel.S122.values(), //
- SunSpecModelType.INVERTER //
- ), //
- S_123(//
- "Immediate Controls", //
+ 44 /* length */, DefaultSunSpecModel.S122.values(), SunSpecModelType.INVERTER), //
+ S_123("Immediate Controls", //
"Immediate Inverter Controls", //
- "", //
- 24, //
- DefaultSunSpecModel.S123.values(), //
- SunSpecModelType.INVERTER //
- ), //
- S_124(//
- "Storage", //
+ 24 /* length */, DefaultSunSpecModel.S123.values(), SunSpecModelType.INVERTER), //
+ S_124("Storage", //
"Basic Storage Controls", //
- "", //
- 24, //
- DefaultSunSpecModel.S124.values(), //
- SunSpecModelType.INVERTER //
- ), //
- S_125(//
- "Pricing", //
+ 24 /* length */, DefaultSunSpecModel.S124.values(), SunSpecModelType.INVERTER), //
+ S_125("Pricing", //
"Pricing Signal", //
- "", //
- 8, //
- DefaultSunSpecModel.S125.values(), //
- SunSpecModelType.INVERTER //
- ), //
- S_127(//
- "Freq-Watt Param", //
+ 8 /* length */, DefaultSunSpecModel.S125.values(), SunSpecModelType.INVERTER), //
+ S_127("Freq-Watt Param", //
"Parameterized Frequency-Watt", //
- "", //
- 10, //
- DefaultSunSpecModel.S127.values(), //
- SunSpecModelType.INVERTER //
- ), //
- S_128(//
- "Dynamic Reactive Current", //
+ 10 /* length */, DefaultSunSpecModel.S127.values(), SunSpecModelType.INVERTER), //
+ S_128("Dynamic Reactive Current", //
"Dynamic Reactive Current", //
- "", //
- 14, //
- DefaultSunSpecModel.S128.values(), //
- SunSpecModelType.INVERTER //
- ), //
- S_145(//
- "Extended Settings", //
+ 14 /* length */, DefaultSunSpecModel.S128.values(), SunSpecModelType.INVERTER), //
+ S_145("Extended Settings", //
"Inverter controls extended settings", //
- "", //
- 8, //
- DefaultSunSpecModel.S145.values(), //
- SunSpecModelType.INVERTER //
- ), //
- S_201(//
- "Meter (Single Phase)single phase (AN or AB) meter", //
+ 8 /* length */, DefaultSunSpecModel.S145.values(), SunSpecModelType.INVERTER), //
+ S_201("Meter (Single Phase)single phase (AN or AB) meter", //
"Include this model for single phase (AN or AB) metering", //
+ 105 /* length */, DefaultSunSpecModel.S201.values(), SunSpecModelType.METER), //
+ S_202("split single phase (ABN) meter", //
"", //
- 105, //
- DefaultSunSpecModel.S201.values(), //
- SunSpecModelType.METER //
- ), //
- S_202(//
- "split single phase (ABN) meter", //
- "", //
- "", //
- 105, //
- DefaultSunSpecModel.S202.values(), //
- SunSpecModelType.METER //
- ), //
- S_203(//
- "wye-connect three phase (abcn) meter", //
- "", //
- "", //
- 105, //
- DefaultSunSpecModel.S203.values(), //
- SunSpecModelType.METER //
- ), //
- S_204(//
- "delta-connect three phase (abc) meter", //
+ 105 /* length */, DefaultSunSpecModel.S202.values(), SunSpecModelType.METER), //
+ S_203("wye-connect three phase (abcn) meter", //
"", //
+ 105 /* length */, DefaultSunSpecModel.S203.values(), SunSpecModelType.METER), //
+ S_204("delta-connect three phase (abc) meter", //
"", //
- 105, //
- DefaultSunSpecModel.S204.values(), //
- SunSpecModelType.METER //
- ), //
- S_305(//
- "GPS", //
+ 105 /* length */, DefaultSunSpecModel.S204.values(), SunSpecModelType.METER), //
+ S_305("GPS", //
"Include to support location measurements", //
- "", //
- 36, //
- DefaultSunSpecModel.S305.values(), //
- SunSpecModelType.ENVIRONMENTAL //
- ), //
- S_306(//
- "Reference Point Model", //
+ 36 /* length */, DefaultSunSpecModel.S305.values(), SunSpecModelType.ENVIRONMENTAL), //
+ S_306("Reference Point Model", //
"Include to support a standard reference point", //
- "", //
- 4, //
- DefaultSunSpecModel.S306.values(), //
- SunSpecModelType.ENVIRONMENTAL //
- ), //
- S_307(//
- "Base Met", //
+ 4 /* length */, DefaultSunSpecModel.S306.values(), SunSpecModelType.ENVIRONMENTAL), //
+ S_307("Base Met", //
"Base Meteorological Model", //
- "", //
- 11, //
- DefaultSunSpecModel.S307.values(), //
- SunSpecModelType.ENVIRONMENTAL //
- ), //
- S_308(//
- "Mini Met Model", //
+ 11 /* length */, DefaultSunSpecModel.S307.values(), SunSpecModelType.ENVIRONMENTAL), //
+ S_308("Mini Met Model", //
"Include to support a few basic measurements", //
- "", //
- 4, //
- DefaultSunSpecModel.S308.values(), //
- SunSpecModelType.ENVIRONMENTAL //
- ), //
- S_701(//
- "DER AC Measurement", //
+ 4 /* length */, DefaultSunSpecModel.S308.values(), SunSpecModelType.ENVIRONMENTAL), //
+ S_701("DER AC Measurement", //
"DER AC measurement model.", //
- "", //
- 153, //
- DefaultSunSpecModel.S701.values(), //
- SunSpecModelType.RESERVED_1 //
- ), //
- S_702(//
- "DER Capacity", //
+ 153 /* length */, DefaultSunSpecModel.S701.values(), SunSpecModelType.RESERVED_1), //
+ S_702("DER Capacity", //
"DER capacity model.", //
- "", //
- 50, //
- DefaultSunSpecModel.S702.values(), //
- SunSpecModelType.RESERVED_1 //
- ), //
- S_703(//
- "Enter Service", //
+ 50 /* length */, DefaultSunSpecModel.S702.values(), SunSpecModelType.RESERVED_1), //
+ S_703("Enter Service", //
"Enter service model.", //
- "", //
- 17, //
- DefaultSunSpecModel.S703.values(), //
- SunSpecModelType.RESERVED_1 //
- ), //
- S_704(//
- "DER AC Controls", //
+ 17 /* length */, DefaultSunSpecModel.S703.values(), SunSpecModelType.RESERVED_1), //
+ S_704("DER AC Controls", //
"DER AC controls model.", //
- "", //
- 57, //
- DefaultSunSpecModel.S704.values(), //
- SunSpecModelType.RESERVED_1 //
- ), //
- S_705(//
- "DER Volt-Var", //
+ 57 /* length */, DefaultSunSpecModel.S704.values(), SunSpecModelType.RESERVED_1), //
+ S_705("DER Volt-Var", //
"DER Volt-Var model.", //
- "", //
- 13, //
- DefaultSunSpecModel.S705.values(), //
- SunSpecModelType.RESERVED_1 //
- ), //
- S_706(//
- "DER Volt-Watt", //
+ 13 /* length */, DefaultSunSpecModel.S705.values(), SunSpecModelType.RESERVED_1), //
+ S_706("DER Volt-Watt", //
"DER Volt-Watt model.", //
- "", //
- 13, //
- DefaultSunSpecModel.S706.values(), //
- SunSpecModelType.RESERVED_1 //
- ), //
- S_707(//
- "DER Trip LV", //
+ 13 /* length */, DefaultSunSpecModel.S706.values(), SunSpecModelType.RESERVED_1), //
+ S_707("DER Trip LV", //
"DER low voltage trip model.", //
- "", //
- 7, //
- DefaultSunSpecModel.S707.values(), //
- SunSpecModelType.RESERVED_1 //
- ), //
- S_708(//
- "DER Trip HV", //
+ 7 /* length */, DefaultSunSpecModel.S707.values(), SunSpecModelType.RESERVED_1), //
+ S_708("DER Trip HV", //
"DER high voltage trip model.", //
- "", //
- 7, //
- DefaultSunSpecModel.S708.values(), //
- SunSpecModelType.RESERVED_1 //
- ), //
- S_709(//
- "DER Trip LF", //
+ 7 /* length */, DefaultSunSpecModel.S708.values(), SunSpecModelType.RESERVED_1), //
+ S_709("DER Trip LF", //
"DER low frequency trip model.", //
- "", //
- 7, //
- DefaultSunSpecModel.S709.values(), //
- SunSpecModelType.RESERVED_1 //
- ), //
- S_710(//
- "DER Trip HF", //
+ 7 /* length */, DefaultSunSpecModel.S709.values(), SunSpecModelType.RESERVED_1), //
+ S_710("DER Trip HF", //
"DER high frequency trip model.", //
- "", //
- 7, //
- DefaultSunSpecModel.S710.values(), //
- SunSpecModelType.RESERVED_1 //
- ), //
- S_711(//
- "DER Frequency Droop", //
+ 7 /* length */, DefaultSunSpecModel.S710.values(), SunSpecModelType.RESERVED_1), //
+ S_711("DER Frequency Droop", //
"DER Frequency Droop model.", //
- "", //
- 12, //
- DefaultSunSpecModel.S711.values(), //
- SunSpecModelType.RESERVED_1 //
- ), //
- S_712(//
- "DER Watt-Var", //
+ 12 /* length */, DefaultSunSpecModel.S711.values(), SunSpecModelType.RESERVED_1), //
+ S_712("DER Watt-Var", //
"DER Watt-Var model.", //
- "", //
- 12, //
- DefaultSunSpecModel.S712.values(), //
- SunSpecModelType.RESERVED_1 //
- ), //
- S_713(//
- "DER Storage Capacity", //
+ 12 /* length */, DefaultSunSpecModel.S712.values(), SunSpecModelType.RESERVED_1), //
+ S_713("DER Storage Capacity", //
"DER storage capacity.", //
- "", //
- 7, //
- DefaultSunSpecModel.S713.values(), //
- SunSpecModelType.RESERVED_1 //
- ), //
- S_714(//
- "DER DC Measurement", //
+ 7 /* length */, DefaultSunSpecModel.S713.values(), SunSpecModelType.RESERVED_1), //
+ S_714("DER DC Measurement", //
"DER DC measurement.", //
- "", //
- 18, //
- DefaultSunSpecModel.S714.values(), //
- SunSpecModelType.RESERVED_1 //
- ), //
- S_715(//
- "DERCtl", //
+ 18 /* length */, DefaultSunSpecModel.S714.values(), SunSpecModelType.RESERVED_1), //
+ S_715("DERCtl", //
"DER Control", //
- "", //
- 7, //
- DefaultSunSpecModel.S715.values(), //
- SunSpecModelType.RESERVED_1 //
- ), //
- S_801(//
- "Energy Storage Base Model (DEPRECATED)", //
+ 7 /* length */, DefaultSunSpecModel.S715.values(), SunSpecModelType.RESERVED_1), //
+ S_801("Energy Storage Base Model (DEPRECATED)", //
"This model has been deprecated.", //
+ 1 /* length */, DefaultSunSpecModel.S801.values(), SunSpecModelType.STORAGE), //
+ S_802("Battery Base Model", //
"", //
- 1, //
- DefaultSunSpecModel.S801.values(), //
- SunSpecModelType.STORAGE //
- ), //
- S_802(//
- "Battery Base Model", //
- "", //
- "", //
- 62, //
- DefaultSunSpecModel.S802.values(), //
- SunSpecModelType.STORAGE //
- ), //
- S_64001(//
- "Veris Status and Configuration", //
- "", //
- "", //
- 71, //
- DefaultSunSpecModel.S64001.values(), //
- SunSpecModelType.VENDOR_SPECIFIC //
- ), //
- S_64101(//
- "Eltek Inverter Extension", //
- "", //
+ 62 /* length */, DefaultSunSpecModel.S802.values(), SunSpecModelType.STORAGE), //
+ S_64001("Veris Status and Configuration", //
"", //
- 7, //
- DefaultSunSpecModel.S64101.values(), //
- SunSpecModelType.VENDOR_SPECIFIC //
- ), //
- S_64110(//
- "OutBack AXS device", //
+ 71 /* length */, DefaultSunSpecModel.S64001.values(), SunSpecModelType.VENDOR_SPECIFIC), //
+ S_64101("Eltek Inverter Extension", //
"", //
+ 7 /* length */, DefaultSunSpecModel.S64101.values(), SunSpecModelType.VENDOR_SPECIFIC), //
+ S_64111("Basic Charge Controller", //
"", //
- 282, //
- DefaultSunSpecModel.S64110.values(), //
- SunSpecModelType.VENDOR_SPECIFIC //
- ), //
- S_64111(//
- "Basic Charge Controller", //
+ 23 /* length */, DefaultSunSpecModel.S64111.values(), SunSpecModelType.VENDOR_SPECIFIC), //
+ S_64112("OutBack FM Charge Controller", //
"", //
- "", //
- 23, //
- DefaultSunSpecModel.S64111.values(), //
- SunSpecModelType.VENDOR_SPECIFIC //
- ), //
- S_64112(//
- "OutBack FM Charge Controller", //
- "", //
- "", //
- 64, //
- DefaultSunSpecModel.S64112.values(), //
- SunSpecModelType.VENDOR_SPECIFIC //
- ); //
+ 64 /* length */, DefaultSunSpecModel.S64112.values(), SunSpecModelType.VENDOR_SPECIFIC); //
public static enum S1 implements SunSpecPoint {
- MN(new PointImpl(//
- "S1_MN", //
- "Manufacturer", //
+ MN(new ValuePoint("S1_MN", "Manufacturer", //
"Well known value registered with SunSpec for compliance", //
- "", //
- PointType.STRING16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- MD(new PointImpl(//
- "S1_MD", //
- "Model", //
+ ValuePoint.Type.STRING16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ MD(new ValuePoint("S1_MD", "Model", //
"Manufacturer specific value (32 chars)", //
- "", //
- PointType.STRING16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- OPT(new PointImpl(//
- "S1_OPT", //
- "Options", //
+ ValuePoint.Type.STRING16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ OPT(new ValuePoint("S1_OPT", "Options", //
"Manufacturer specific value (16 chars)", //
- "", //
- PointType.STRING8, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VR(new PointImpl(//
- "S1_VR", //
- "Version", //
+ ValuePoint.Type.STRING8, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ VR(new ValuePoint("S1_VR", "Version", //
"Manufacturer specific value (16 chars)", //
- "", //
- PointType.STRING8, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- SN(new PointImpl(//
- "S1_SN", //
- "Serial Number", //
+ ValuePoint.Type.STRING8, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ SN(new ValuePoint("S1_SN", "Serial Number", //
"Manufacturer specific value (32 chars)", //
- "", //
- PointType.STRING16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DA(new PointImpl(//
- "S1_DA", //
- "Device Address", //
+ ValuePoint.Type.STRING16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ DA(new ValuePoint("S1_DA", "Device Address", //
"Modbus device address", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PAD(new PointImpl(//
- "S1_PAD", //
- "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ PAD(new ValuePoint("S1_PAD", "", //
"Force even alignment", //
- "", //
- PointType.PAD, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
+ ValuePoint.Type.PAD, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE));
- protected final PointImpl impl;
+ private final Point point;
- private S1(PointImpl impl) {
- this.impl = impl;
+ private S1(Point point) {
+ this.point = point;
}
@Override
- public PointImpl get() {
- return this.impl;
+ public Point get() {
+ return this.point;
}
}
public static enum S2 implements SunSpecPoint {
- AID(new PointImpl(//
- "S2_AID", //
- "AID", //
+ AID(new ValuePoint("S2_AID", "AID", //
"Aggregated model id", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- N(new PointImpl(//
- "S2_N", //
- "N", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ N(new ValuePoint("S2_N", "N", //
"Number of aggregated models", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- UN(new PointImpl(//
- "S2_UN", //
- "UN", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ UN(new ValuePoint("S2_UN", "UN", //
"Update Number. Incrementing number each time the mapping is changed. If the number is not changed from the last reading the direct access to a specific offset will result in reading the same logical model as before. Otherwise the entire model must be read to refresh the changes", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ST(new PointImpl(//
- "S2_ST", //
- "Status", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ ST(new EnumPoint("S2_ST", "Status", //
"Enumerated status code", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S2_St.values())), //
- ST_VND(new PointImpl(//
- "S2_ST_VND", //
- "Vendor Status", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S2_St.values())), //
+ ST_VND(new EnumPoint("S2_ST_VND", "Vendor Status", //
"Vendor specific status code", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT(new PointImpl(//
- "S2_EVT", //
- "Event Code", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, new OptionsEnum[0])), //
+ EVT(new BitFieldPoint("S2_EVT", "Event Code", //
"Bitmask event code", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S2_Evt.values())), //
- EVT_VND(new PointImpl(//
- "S2_EVT_VND", //
- "Vendor Event Code", //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, S2_Evt.values())), //
+ EVT_VND(new BitFieldPoint("S2_EVT_VND", "Vendor Event Code", //
"Vendor specific event code", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- CTL(new PointImpl(//
- "S2_CTL", //
- "Control", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ CTL(new EnumPoint("S2_CTL", "Control", //
"Control register for all aggregated devices", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S2_Ctl.values())), //
- CTL_VND(new PointImpl(//
- "S2_CTL_VND", //
- "Vendor Control", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, S2_Ctl.values())), //
+ CTL_VND(new EnumPoint("S2_CTL_VND", "Vendor Control", //
"Vendor control register for all aggregated devices", //
- "", //
- PointType.ENUM32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- CTL_VL(new PointImpl(//
- "S2_CTL_VL", //
- "Control Value", //
+ EnumPoint.Type.ENUM32, false /* mandatory? */, AccessMode.READ_ONLY, new OptionsEnum[0])), //
+ CTL_VL(new EnumPoint("S2_CTL_VL", "Control Value", //
"Numerical value used as a parameter to the control", //
- "", //
- PointType.ENUM32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
+ EnumPoint.Type.ENUM32, false /* mandatory? */, AccessMode.READ_ONLY, new OptionsEnum[0]));
- protected final PointImpl impl;
+ private final Point point;
- private S2(PointImpl impl) {
- this.impl = impl;
+ private S2(Point point) {
+ this.point = point;
}
@Override
- public PointImpl get() {
- return this.impl;
+ public Point get() {
+ return this.point;
}
}
@@ -623,7 +247,7 @@ public static enum S2_St implements OptionsEnum {
OFF(1, "OFF"), //
ON(2, "ON"), //
FULL(3, "FULL"), //
- FAULT(4, "FAULT"); //
+ FAULT(4, "FAULT");
private final int value;
private final String name;
@@ -649,51 +273,38 @@ public OptionsEnum getUndefined() {
}
}
- public static enum S2_Evt implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- GROUND_FAULT(0, "GROUND_FAULT"), //
- INPUT_OVER_VOLTAGE(1, "INPUT_OVER_VOLTAGE"), //
- RESERVED_2(2, "RESERVED_2"), //
- DC_DISCONNECT(3, "DC_DISCONNECT"), //
- RESERVED_4(4, "RESERVED_4"), //
- RESERVED_5(5, "RESERVED_5"), //
- MANUAL_SHUTDOWN(6, "MANUAL_SHUTDOWN"), //
- OVER_TEMPERATURE(7, "OVER_TEMPERATURE"), //
- RESERVED_8(8, "RESERVED_8"), //
- RESERVED_9(9, "RESERVED_9"), //
- RESERVED_10(10, "RESERVED_10"), //
- RESERVED_11(11, "RESERVED_11"), //
- BLOWN_FUSE(12, "BLOWN_FUSE"), //
- UNDER_TEMPERATURE(13, "UNDER_TEMPERATURE"), //
- MEMORY_LOSS(14, "MEMORY_LOSS"), //
- ARC_DETECTION(15, "ARC_DETECTION"), //
- THEFT_DETECTION(16, "THEFT_DETECTION"), //
- OUTPUT_OVER_CURRENT(17, "OUTPUT_OVER_CURRENT"), //
- OUTPUT_OVER_VOLTAGE(18, "OUTPUT_OVER_VOLTAGE"), //
- OUTPUT_UNDER_VOLTAGE(19, "OUTPUT_UNDER_VOLTAGE"), //
- TEST_FAILED(20, "TEST_FAILED"); //
-
- private final int value;
- private final String name;
-
- private S2_Evt(int value, String name) {
- this.value = value;
- this.name = name;
- }
+ public static enum S2_Evt implements SunSpecBitPoint {
+ GROUND_FAULT(new BitPoint(0, "S2_EVT_GROUND_FAULT", "Ground Fault", Level.INFO)), //
+ INPUT_OVER_VOLTAGE(new BitPoint(1, "S2_EVT_INPUT_OVER_VOLTAGE", "Input Over Voltage", Level.INFO)), //
+ RESERVED_2(new BitPoint(2, "S2_EVT_RESERVED_2", "Reserved 2")), //
+ DC_DISCONNECT(new BitPoint(3, "S2_EVT_DC_DISCONNECT", "DC Disconnect", Level.INFO)), //
+ RESERVED_4(new BitPoint(4, "S2_EVT_RESERVED_4", "Reserved 4")), //
+ RESERVED_5(new BitPoint(5, "S2_EVT_RESERVED_5", "Reserved 5")), //
+ MANUAL_SHUTDOWN(new BitPoint(6, "S2_EVT_MANUAL_SHUTDOWN", "Manual Shutdown", Level.INFO)), //
+ OVER_TEMPERATURE(new BitPoint(7, "S2_EVT_OVER_TEMPERATURE", "Over Temperature", Level.INFO)), //
+ RESERVED_8(new BitPoint(8, "S2_EVT_RESERVED_8", "Reserved 8")), //
+ RESERVED_9(new BitPoint(9, "S2_EVT_RESERVED_9", "Reserved 9")), //
+ RESERVED_10(new BitPoint(10, "S2_EVT_RESERVED_10", "Reserved 10")), //
+ RESERVED_11(new BitPoint(11, "S2_EVT_RESERVED_11", "Reserved 11")), //
+ BLOWN_FUSE(new BitPoint(12, "S2_EVT_BLOWN_FUSE", "Blown Fuse", Level.INFO)), //
+ UNDER_TEMPERATURE(new BitPoint(13, "S2_EVT_UNDER_TEMPERATURE", "Under Temperature", Level.INFO)), //
+ MEMORY_LOSS(new BitPoint(14, "S2_EVT_MEMORY_LOSS", "Memory Loss", Level.INFO)), //
+ ARC_DETECTION(new BitPoint(15, "S2_EVT_ARC_DETECTION", "Arc Detection", Level.INFO)), //
+ THEFT_DETECTION(new BitPoint(16, "S2_EVT_THEFT_DETECTION", "Theft Detection", Level.INFO)), //
+ OUTPUT_OVER_CURRENT(new BitPoint(17, "S2_EVT_OUTPUT_OVER_CURRENT", "Output Over Current", Level.INFO)), //
+ OUTPUT_OVER_VOLTAGE(new BitPoint(18, "S2_EVT_OUTPUT_OVER_VOLTAGE", "Output Over Voltage", Level.INFO)), //
+ OUTPUT_UNDER_VOLTAGE(new BitPoint(19, "S2_EVT_OUTPUT_UNDER_VOLTAGE", "Output Under Voltage", Level.INFO)), //
+ TEST_FAILED(new BitPoint(20, "S2_EVT_TEST_FAILED", "Test Failed", Level.INFO));
- @Override
- public int getValue() {
- return this.value;
- }
+ private final BitPoint point;
- @Override
- public String getName() {
- return this.name;
+ private S2_Evt(BitPoint point) {
+ this.point = point;
}
@Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
@@ -703,7 +314,7 @@ public static enum S2_Ctl implements OptionsEnum {
AUTOMATIC(1, "AUTOMATIC"), //
FORCE_OFF(2, "FORCE_OFF"), //
TEST(3, "TEST"), //
- THROTTLE(4, "THROTTLE"); //
+ THROTTLE(4, "THROTTLE");
private final int value;
private final String name;
@@ -730,715 +341,202 @@ public OptionsEnum getUndefined() {
}
public static enum S15 implements SunSpecPoint {
- CLR(new PointImpl(//
- "S15_CLR", //
- "Clear", //
+ CLR(new ValuePoint("S15_CLR", "Clear", //
"Write a \"1\" to clear all counters", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- IN_CNT(new PointImpl(//
- "S15_IN_CNT", //
- "Input Count", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ IN_CNT(new ValuePoint("S15_IN_CNT", "Input Count", //
"Number of bytes received", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- IN_UC_CNT(new PointImpl(//
- "S15_IN_UC_CNT", //
- "Input Unicast Count", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ IN_UC_CNT(new ValuePoint("S15_IN_UC_CNT", "Input Unicast Count", //
"Number of Unicast packets received", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- IN_N_UC_CNT(new PointImpl(//
- "S15_IN_N_UC_CNT", //
- "Input Non-Unicast Count", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ IN_N_UC_CNT(new ValuePoint("S15_IN_N_UC_CNT", "Input Non-Unicast Count", //
"Number of non-Unicast packets received", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- IN_DSC_CNT(new PointImpl(//
- "S15_IN_DSC_CNT", //
- "Input Discarded Count", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ IN_DSC_CNT(new ValuePoint("S15_IN_DSC_CNT", "Input Discarded Count", //
"Number of inbound packets received on the interface but discarded", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- IN_ERR_CNT(new PointImpl(//
- "S15_IN_ERR_CNT", //
- "Input Error Count", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ IN_ERR_CNT(new ValuePoint("S15_IN_ERR_CNT", "Input Error Count", //
"Number of inbound packets that contain errors (excluding discards)", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- IN_UNK_CNT(new PointImpl(//
- "S15_IN_UNK_CNT", //
- "Input Unknown Count", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ IN_UNK_CNT(new ValuePoint("S15_IN_UNK_CNT", "Input Unknown Count", //
"Number of inbound packets with unknown protocol", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- OUT_CNT(new PointImpl(//
- "S15_OUT_CNT", //
- "Output Count", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ OUT_CNT(new ValuePoint("S15_OUT_CNT", "Output Count", //
"Total number of bytes transmitted on this interface", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- OUT_UC_CNT(new PointImpl(//
- "S15_OUT_UC_CNT", //
- "Output Unicast Count", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ OUT_UC_CNT(new ValuePoint("S15_OUT_UC_CNT", "Output Unicast Count", //
"Number of Unicast packets transmitted", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- OUT_N_UC_CNT(new PointImpl(//
- "S15_OUT_N_UC_CNT", //
- "Output Non-Unicast Count", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ OUT_N_UC_CNT(new ValuePoint("S15_OUT_N_UC_CNT", "Output Non-Unicast Count", //
"Number of Non-Unicast packets transmitted", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- OUT_DSC_CNT(new PointImpl(//
- "S15_OUT_DSC_CNT", //
- "Output Discarded Count", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ OUT_DSC_CNT(new ValuePoint("S15_OUT_DSC_CNT", "Output Discarded Count", //
"Number of Discarded output packets", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- OUT_ERR_CNT(new PointImpl(//
- "S15_OUT_ERR_CNT", //
- "Output Error Count", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ OUT_ERR_CNT(new ValuePoint("S15_OUT_ERR_CNT", "Output Error Count", //
"Number of outbound error packets", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PAD(new PointImpl(//
- "S15_PAD", //
- "", //
- "", //
- "", //
- PointType.PAD, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S15(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ PAD(new ValuePoint("S15_PAD", "", "", //
+ ValuePoint.Type.PAD, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE));
+
+ private final Point point;
+
+ private S15(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
public static enum S18 implements SunSpecPoint {
- NAM(new PointImpl(//
- "S18_NAM", //
- "Name", //
+ NAM(new ValuePoint("S18_NAM", "Name", //
"Interface name", //
- "", //
- PointType.STRING4, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- IMEI(new PointImpl(//
- "S18_IMEI", //
- "IMEI", //
+ ValuePoint.Type.STRING4, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ IMEI(new ValuePoint("S18_IMEI", "IMEI", //
"International Mobile Equipment Identifier for the interface", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- APN(new PointImpl(//
- "S18_APN", //
- "APN", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ APN(new ValuePoint("S18_APN", "APN", //
"Access Point Name for the interface", //
- "", //
- PointType.STRING4, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- NUM(new PointImpl(//
- "S18_NUM", //
- "Number", //
+ ValuePoint.Type.STRING4, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ NUM(new ValuePoint("S18_NUM", "Number", //
"Phone number for the interface", //
- "", //
- PointType.STRING6, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PIN(new PointImpl(//
- "S18_PIN", //
- "PIN", //
+ ValuePoint.Type.STRING6, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ PIN(new ValuePoint("S18_PIN", "PIN", //
"Personal Identification Number for the interface", //
- "", //
- PointType.STRING6, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
+ ValuePoint.Type.STRING6, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE));
- protected final PointImpl impl;
+ private final Point point;
- private S18(PointImpl impl) {
- this.impl = impl;
+ private S18(Point point) {
+ this.point = point;
}
@Override
- public PointImpl get() {
- return this.impl;
+ public Point get() {
+ return this.point;
}
}
public static enum S101 implements SunSpecPoint {
- A(new PointImpl(//
- "S101_A", //
- "Amps", //
+ A(new ScaledValuePoint("S101_A", "Amps", //
"AC Current", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_A(new PointImpl(//
- "S101_APH_A", //
- "Amps PhaseA", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_A(new ScaledValuePoint("S101_APH_A", "Amps PhaseA", //
"Phase A Current", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_B(new PointImpl(//
- "S101_APH_B", //
- "Amps PhaseB", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_B(new ScaledValuePoint("S101_APH_B", "Amps PhaseB", //
"Phase B Current", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_C(new PointImpl(//
- "S101_APH_C", //
- "Amps PhaseC", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_C(new ScaledValuePoint("S101_APH_C", "Amps PhaseC", //
"Phase C Current", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- A_SF(new PointImpl(//
- "S101_A_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- P_P_VPH_A_B(new PointImpl(//
- "S101_P_P_VPH_A_B", //
- "Phase Voltage AB", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ A_SF(new ScaleFactorPoint("S101_A_SF", "", "")), //
+ P_P_VPH_A_B(new ScaledValuePoint("S101_P_P_VPH_A_B", "Phase Voltage AB", //
"Phase Voltage AB", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- P_P_VPH_B_C(new PointImpl(//
- "S101_P_P_VPH_B_C", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ P_P_VPH_B_C(new ScaledValuePoint("S101_P_P_VPH_B_C", "Phase Voltage BC", //
"Phase Voltage BC", //
- "Phase Voltage BC", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- P_P_VPH_C_A(new PointImpl(//
- "S101_P_P_VPH_C_A", //
- "Phase Voltage CA", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ P_P_VPH_C_A(new ScaledValuePoint("S101_P_P_VPH_C_A", "Phase Voltage CA", //
"Phase Voltage CA", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_A(new PointImpl(//
- "S101_PH_VPH_A", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_A(new ScaledValuePoint("S101_PH_VPH_A", "Phase Voltage AN", //
"Phase Voltage AN", //
- "Phase Voltage AN", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_B(new PointImpl(//
- "S101_PH_VPH_B", //
- "Phase Voltage BN", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_B(new ScaledValuePoint("S101_PH_VPH_B", "Phase Voltage BN", //
"Phase Voltage BN", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_C(new PointImpl(//
- "S101_PH_VPH_C", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_C(new ScaledValuePoint("S101_PH_VPH_C", "Phase Voltage CN", //
"Phase Voltage CN", //
- "Phase Voltage CN", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- V_SF(new PointImpl(//
- "S101_V_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W(new PointImpl(//
- "S101_W", //
- "Watts", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ V_SF(new ScaleFactorPoint("S101_V_SF", "", "")), //
+ W(new ScaledValuePoint("S101_W", "Watts", //
"AC Power", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- W_SF(new PointImpl(//
- "S101_W_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- HZ(new PointImpl(//
- "S101_HZ", //
- "Hz", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ W_SF(new ScaleFactorPoint("S101_W_SF", "", "")), //
+ HZ(new ScaledValuePoint("S101_HZ", "Hz", //
"Line Frequency", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.HERTZ, //
- "Hz_SF", //
- new OptionsEnum[0])), //
- HZ_S_F(new PointImpl(//
- "S101_HZ_S_F", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VA(new PointImpl(//
- "S101_VA", //
- "VA", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.HERTZ, "Hz_SF")), //
+ HZ_S_F(new ScaleFactorPoint("S101_HZ_S_F", "", "")), //
+ VA(new ScaledValuePoint("S101_VA", "VA", //
"AC Apparent Power", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- VA_SF(new PointImpl(//
- "S101_VA_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_AR(new PointImpl(//
- "S101_V_AR", //
- "VAr", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ VA_SF(new ScaleFactorPoint("S101_VA_SF", "", "")), //
+ V_AR(new ScaledValuePoint("S101_V_AR", "VAr", //
"AC Reactive Power", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VAr_SF", //
- new OptionsEnum[0])), //
- V_AR_S_F(new PointImpl(//
- "S101_V_AR_S_F", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PF(new PointImpl(//
- "S101_PF", //
- "PF", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VAr_SF")), //
+ V_AR_S_F(new ScaleFactorPoint("S101_V_AR_S_F", "", "")), //
+ PF(new ScaledValuePoint("S101_PF", "PF", //
"AC Power Factor", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- PF_SF(new PointImpl(//
- "S101_PF_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- WH(new PointImpl(//
- "S101_WH", //
- "WattHours", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ PF_SF(new ScaleFactorPoint("S101_PF_SF", "", "")), //
+ WH(new ScaledValuePoint("S101_WH", "WattHours", //
"AC Energy", //
- "", //
- PointType.ACC32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "WH_SF", //
- new OptionsEnum[0])), //
- WH_SF(new PointImpl(//
- "S101_WH_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DCA(new PointImpl(//
- "S101_DCA", //
- "DC Amps", //
+ ValuePoint.Type.ACC32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "WH_SF")), //
+ WH_SF(new ScaleFactorPoint("S101_WH_SF", "", "")), //
+ DCA(new ScaledValuePoint("S101_DCA", "DC Amps", //
"DC Current", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "DCA_SF", //
- new OptionsEnum[0])), //
- DCA_SF(new PointImpl(//
- "S101_DCA_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DCV(new PointImpl(//
- "S101_DCV", //
- "DC Voltage", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "DCA_SF")), //
+ DCA_SF(new ScaleFactorPoint("S101_DCA_SF", "", "")), //
+ DCV(new ScaledValuePoint("S101_DCV", "DC Voltage", //
"DC Voltage", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "DCV_SF", //
- new OptionsEnum[0])), //
- DCV_SF(new PointImpl(//
- "S101_DCV_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DCW(new PointImpl(//
- "S101_DCW", //
- "DC Watts", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "DCV_SF")), //
+ DCV_SF(new ScaleFactorPoint("S101_DCV_SF", "", "")), //
+ DCW(new ScaledValuePoint("S101_DCW", "DC Watts", //
"DC Power", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "DCW_SF", //
- new OptionsEnum[0])), //
- DCW_SF(new PointImpl(//
- "S101_DCW_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TMP_CAB(new PointImpl(//
- "S101_TMP_CAB", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "DCW_SF")), //
+ DCW_SF(new ScaleFactorPoint("S101_DCW_SF", "", "")), //
+ TMP_CAB(new ScaledValuePoint("S101_TMP_CAB", "Cabinet Temperature", //
"Cabinet Temperature", //
- "Cabinet Temperature", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "Tmp_SF", //
- new OptionsEnum[0])), //
- TMP_SNK(new PointImpl(//
- "S101_TMP_SNK", //
- "Heat Sink Temperature", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "Tmp_SF")), //
+ TMP_SNK(new ScaledValuePoint("S101_TMP_SNK", "Heat Sink Temperature", //
"Heat Sink Temperature", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "Tmp_SF", //
- new OptionsEnum[0])), //
- TMP_TRNS(new PointImpl(//
- "S101_TMP_TRNS", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "Tmp_SF")), //
+ TMP_TRNS(new ScaledValuePoint("S101_TMP_TRNS", "Transformer Temperature", //
"Transformer Temperature", //
- "Transformer Temperature", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "Tmp_SF", //
- new OptionsEnum[0])), //
- TMP_OT(new PointImpl(//
- "S101_TMP_OT", //
- "Other Temperature", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "Tmp_SF")), //
+ TMP_OT(new ScaledValuePoint("S101_TMP_OT", "Other Temperature", //
"Other Temperature", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "Tmp_SF", //
- new OptionsEnum[0])), //
- TMP_S_F(new PointImpl(//
- "S101_TMP_S_F", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ST(new PointImpl(//
- "S101_ST", //
- "Operating State", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "Tmp_SF")), //
+ TMP_S_F(new ScaleFactorPoint("S101_TMP_S_F", "", "")), //
+ ST(new EnumPoint("S101_ST", "Operating State", //
"Enumerated value. Operating state", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S101_St.values())), //
- ST_VND(new PointImpl(//
- "S101_ST_VND", //
- "Vendor Operating State", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S101_St.values())), //
+ ST_VND(new EnumPoint("S101_ST_VND", "Vendor Operating State", //
"Vendor specific operating state code", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT1(new PointImpl(//
- "S101_EVT1", //
- "Event1", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, new OptionsEnum[0])), //
+ EVT1(new BitFieldPoint("S101_EVT1", "Event1", //
"Bitmask value. Event fields", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S101_Evt1.values())), //
- EVT2(new PointImpl(//
- "S101_EVT2", //
- "Event Bitfield 2", //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, S101_Evt1.values())), //
+ EVT2(new BitFieldPoint("S101_EVT2", "Event Bitfield 2", //
"Reserved for future use", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND1(new PointImpl(//
- "S101_EVT_VND1", //
- "Vendor Event Bitfield 1", //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND1(new BitFieldPoint("S101_EVT_VND1", "Vendor Event Bitfield 1", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND2(new PointImpl(//
- "S101_EVT_VND2", //
- "Vendor Event Bitfield 2", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND2(new BitFieldPoint("S101_EVT_VND2", "Vendor Event Bitfield 2", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND3(new PointImpl(//
- "S101_EVT_VND3", //
- "Vendor Event Bitfield 3", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND3(new BitFieldPoint("S101_EVT_VND3", "Vendor Event Bitfield 3", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND4(new PointImpl(//
- "S101_EVT_VND4", //
- "Vendor Event Bitfield 4", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND4(new BitFieldPoint("S101_EVT_VND4", "Vendor Event Bitfield 4", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0]));
- protected final PointImpl impl;
+ private final Point point;
- private S101(PointImpl impl) {
- this.impl = impl;
+ private S101(Point point) {
+ this.point = point;
}
@Override
- public PointImpl get() {
- return this.impl;
+ public Point get() {
+ return this.point;
}
}
@@ -1451,7 +549,7 @@ public static enum S101_St implements OptionsEnum {
THROTTLED(5, "THROTTLED"), //
SHUTTING_DOWN(6, "SHUTTING_DOWN"), //
FAULT(7, "FAULT"), //
- STANDBY(8, "STANDBY"); //
+ STANDBY(8, "STANDBY");
private final int value;
private final String name;
@@ -1477,533 +575,152 @@ public OptionsEnum getUndefined() {
}
}
- public static enum S101_Evt1 implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- GROUND_FAULT(0, "GROUND_FAULT"), //
- DC_OVER_VOLT(1, "DC_OVER_VOLT"), //
- AC_DISCONNECT(2, "AC_DISCONNECT"), //
- DC_DISCONNECT(3, "DC_DISCONNECT"), //
- GRID_DISCONNECT(4, "GRID_DISCONNECT"), //
- CABINET_OPEN(5, "CABINET_OPEN"), //
- MANUAL_SHUTDOWN(6, "MANUAL_SHUTDOWN"), //
- OVER_TEMP(7, "OVER_TEMP"), //
- OVER_FREQUENCY(8, "OVER_FREQUENCY"), //
- UNDER_FREQUENCY(9, "UNDER_FREQUENCY"), //
- AC_OVER_VOLT(10, "AC_OVER_VOLT"), //
- AC_UNDER_VOLT(11, "AC_UNDER_VOLT"), //
- BLOWN_STRING_FUSE(12, "BLOWN_STRING_FUSE"), //
- UNDER_TEMP(13, "UNDER_TEMP"), //
- MEMORY_LOSS(14, "MEMORY_LOSS"), //
- HW_TEST_FAILURE(15, "HW_TEST_FAILURE"); //
-
- private final int value;
- private final String name;
-
- private S101_Evt1(int value, String name) {
- this.value = value;
- this.name = name;
- }
+ public static enum S101_Evt1 implements SunSpecBitPoint {
+ GROUND_FAULT(new BitPoint(0, "S101_EVT1_GROUND_FAULT", "Ground Fault", Level.INFO)), //
+ DC_OVER_VOLT(new BitPoint(1, "S101_EVT1_DC_OVER_VOLT", "DC Over Volt", Level.INFO)), //
+ AC_DISCONNECT(new BitPoint(2, "S101_EVT1_AC_DISCONNECT", "AC Disconnect", Level.INFO)), //
+ DC_DISCONNECT(new BitPoint(3, "S101_EVT1_DC_DISCONNECT", "DC Disconnect", Level.INFO)), //
+ GRID_DISCONNECT(new BitPoint(4, "S101_EVT1_GRID_DISCONNECT", "Grid Disconnect", Level.INFO)), //
+ CABINET_OPEN(new BitPoint(5, "S101_EVT1_CABINET_OPEN", "Cabinet Open", Level.INFO)), //
+ MANUAL_SHUTDOWN(new BitPoint(6, "S101_EVT1_MANUAL_SHUTDOWN", "Manual Shutdown", Level.INFO)), //
+ OVER_TEMP(new BitPoint(7, "S101_EVT1_OVER_TEMP", "Over Temp", Level.INFO)), //
+ OVER_FREQUENCY(new BitPoint(8, "S101_EVT1_OVER_FREQUENCY", "Over Frequency", Level.INFO)), //
+ UNDER_FREQUENCY(new BitPoint(9, "S101_EVT1_UNDER_FREQUENCY", "Under Frequency", Level.INFO)), //
+ AC_OVER_VOLT(new BitPoint(10, "S101_EVT1_AC_OVER_VOLT", "AC Over Volt", Level.INFO)), //
+ AC_UNDER_VOLT(new BitPoint(11, "S101_EVT1_AC_UNDER_VOLT", "AC Under Volt", Level.INFO)), //
+ BLOWN_STRING_FUSE(new BitPoint(12, "S101_EVT1_BLOWN_STRING_FUSE", "Blown String Fuse", Level.INFO)), //
+ UNDER_TEMP(new BitPoint(13, "S101_EVT1_UNDER_TEMP", "Under Temp", Level.INFO)), //
+ MEMORY_LOSS(new BitPoint(14, "S101_EVT1_MEMORY_LOSS", "Memory Loss", Level.INFO)), //
+ HW_TEST_FAILURE(new BitPoint(15, "S101_EVT1_HW_TEST_FAILURE", "HW Test Failure", Level.INFO));
- @Override
- public int getValue() {
- return this.value;
- }
+ private final BitPoint point;
- @Override
- public String getName() {
- return this.name;
+ private S101_Evt1(BitPoint point) {
+ this.point = point;
}
@Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
public static enum S102 implements SunSpecPoint {
- A(new PointImpl(//
- "S102_A", //
- "Amps", //
+ A(new ScaledValuePoint("S102_A", "Amps", //
"AC Current", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_A(new PointImpl(//
- "S102_APH_A", //
- "Amps PhaseA", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_A(new ScaledValuePoint("S102_APH_A", "Amps PhaseA", //
"Phase A Current", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_B(new PointImpl(//
- "S102_APH_B", //
- "Amps PhaseB", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_B(new ScaledValuePoint("S102_APH_B", "Amps PhaseB", //
"Phase B Current", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_C(new PointImpl(//
- "S102_APH_C", //
- "Amps PhaseC", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_C(new ScaledValuePoint("S102_APH_C", "Amps PhaseC", //
"Phase C Current", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- A_SF(new PointImpl(//
- "S102_A_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- P_P_VPH_A_B(new PointImpl(//
- "S102_P_P_VPH_A_B", //
- "Phase Voltage AB", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ A_SF(new ScaleFactorPoint("S102_A_SF", "", "")), //
+ P_P_VPH_A_B(new ScaledValuePoint("S102_P_P_VPH_A_B", "Phase Voltage AB", //
"Phase Voltage AB", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- P_P_VPH_B_C(new PointImpl(//
- "S102_P_P_VPH_B_C", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ P_P_VPH_B_C(new ScaledValuePoint("S102_P_P_VPH_B_C", "Phase Voltage BC", //
"Phase Voltage BC", //
- "Phase Voltage BC", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- P_P_VPH_C_A(new PointImpl(//
- "S102_P_P_VPH_C_A", //
- "Phase Voltage CA", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ P_P_VPH_C_A(new ScaledValuePoint("S102_P_P_VPH_C_A", "Phase Voltage CA", //
"Phase Voltage CA", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_A(new PointImpl(//
- "S102_PH_VPH_A", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_A(new ScaledValuePoint("S102_PH_VPH_A", "Phase Voltage AN", //
"Phase Voltage AN", //
- "Phase Voltage AN", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_B(new PointImpl(//
- "S102_PH_VPH_B", //
- "Phase Voltage BN", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_B(new ScaledValuePoint("S102_PH_VPH_B", "Phase Voltage BN", //
"Phase Voltage BN", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_C(new PointImpl(//
- "S102_PH_VPH_C", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_C(new ScaledValuePoint("S102_PH_VPH_C", "Phase Voltage CN", //
"Phase Voltage CN", //
- "Phase Voltage CN", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- V_SF(new PointImpl(//
- "S102_V_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W(new PointImpl(//
- "S102_W", //
- "Watts", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ V_SF(new ScaleFactorPoint("S102_V_SF", "", "")), //
+ W(new ScaledValuePoint("S102_W", "Watts", //
"AC Power", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- W_SF(new PointImpl(//
- "S102_W_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- HZ(new PointImpl(//
- "S102_HZ", //
- "Hz", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ W_SF(new ScaleFactorPoint("S102_W_SF", "", "")), //
+ HZ(new ScaledValuePoint("S102_HZ", "Hz", //
"Line Frequency", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.HERTZ, //
- "Hz_SF", //
- new OptionsEnum[0])), //
- HZ_S_F(new PointImpl(//
- "S102_HZ_S_F", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VA(new PointImpl(//
- "S102_VA", //
- "VA", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.HERTZ, "Hz_SF")), //
+ HZ_S_F(new ScaleFactorPoint("S102_HZ_S_F", "", "")), //
+ VA(new ScaledValuePoint("S102_VA", "VA", //
"AC Apparent Power", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- VA_SF(new PointImpl(//
- "S102_VA_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_AR(new PointImpl(//
- "S102_V_AR", //
- "VAr", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ VA_SF(new ScaleFactorPoint("S102_VA_SF", "", "")), //
+ V_AR(new ScaledValuePoint("S102_V_AR", "VAr", //
"AC Reactive Power", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VAr_SF", //
- new OptionsEnum[0])), //
- V_AR_S_F(new PointImpl(//
- "S102_V_AR_S_F", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PF(new PointImpl(//
- "S102_PF", //
- "PF", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VAr_SF")), //
+ V_AR_S_F(new ScaleFactorPoint("S102_V_AR_S_F", "", "")), //
+ PF(new ScaledValuePoint("S102_PF", "PF", //
"AC Power Factor", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- PF_SF(new PointImpl(//
- "S102_PF_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- WH(new PointImpl(//
- "S102_WH", //
- "WattHours", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ PF_SF(new ScaleFactorPoint("S102_PF_SF", "", "")), //
+ WH(new ScaledValuePoint("S102_WH", "WattHours", //
"AC Energy", //
- "", //
- PointType.ACC32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "WH_SF", //
- new OptionsEnum[0])), //
- WH_SF(new PointImpl(//
- "S102_WH_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DCA(new PointImpl(//
- "S102_DCA", //
- "DC Amps", //
+ ValuePoint.Type.ACC32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "WH_SF")), //
+ WH_SF(new ScaleFactorPoint("S102_WH_SF", "", "")), //
+ DCA(new ScaledValuePoint("S102_DCA", "DC Amps", //
"DC Current", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "DCA_SF", //
- new OptionsEnum[0])), //
- DCA_SF(new PointImpl(//
- "S102_DCA_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DCV(new PointImpl(//
- "S102_DCV", //
- "DC Voltage", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "DCA_SF")), //
+ DCA_SF(new ScaleFactorPoint("S102_DCA_SF", "", "")), //
+ DCV(new ScaledValuePoint("S102_DCV", "DC Voltage", //
"DC Voltage", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "DCV_SF", //
- new OptionsEnum[0])), //
- DCV_SF(new PointImpl(//
- "S102_DCV_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DCW(new PointImpl(//
- "S102_DCW", //
- "DC Watts", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "DCV_SF")), //
+ DCV_SF(new ScaleFactorPoint("S102_DCV_SF", "", "")), //
+ DCW(new ScaledValuePoint("S102_DCW", "DC Watts", //
"DC Power", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "DCW_SF", //
- new OptionsEnum[0])), //
- DCW_SF(new PointImpl(//
- "S102_DCW_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TMP_CAB(new PointImpl(//
- "S102_TMP_CAB", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "DCW_SF")), //
+ DCW_SF(new ScaleFactorPoint("S102_DCW_SF", "", "")), //
+ TMP_CAB(new ScaledValuePoint("S102_TMP_CAB", "Cabinet Temperature", //
"Cabinet Temperature", //
- "Cabinet Temperature", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "Tmp_SF", //
- new OptionsEnum[0])), //
- TMP_SNK(new PointImpl(//
- "S102_TMP_SNK", //
- "Heat Sink Temperature", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "Tmp_SF")), //
+ TMP_SNK(new ScaledValuePoint("S102_TMP_SNK", "Heat Sink Temperature", //
"Heat Sink Temperature", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "Tmp_SF", //
- new OptionsEnum[0])), //
- TMP_TRNS(new PointImpl(//
- "S102_TMP_TRNS", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "Tmp_SF")), //
+ TMP_TRNS(new ScaledValuePoint("S102_TMP_TRNS", "Transformer Temperature", //
"Transformer Temperature", //
- "Transformer Temperature", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "Tmp_SF", //
- new OptionsEnum[0])), //
- TMP_OT(new PointImpl(//
- "S102_TMP_OT", //
- "Other Temperature", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "Tmp_SF")), //
+ TMP_OT(new ScaledValuePoint("S102_TMP_OT", "Other Temperature", //
"Other Temperature", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "Tmp_SF", //
- new OptionsEnum[0])), //
- TMP_S_F(new PointImpl(//
- "S102_TMP_S_F", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ST(new PointImpl(//
- "S102_ST", //
- "Operating State", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "Tmp_SF")), //
+ TMP_S_F(new ScaleFactorPoint("S102_TMP_S_F", "", "")), //
+ ST(new EnumPoint("S102_ST", "Operating State", //
"Enumerated value. Operating state", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S102_St.values())), //
- ST_VND(new PointImpl(//
- "S102_ST_VND", //
- "Vendor Operating State", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S102_St.values())), //
+ ST_VND(new EnumPoint("S102_ST_VND", "Vendor Operating State", //
"Vendor specific operating state code", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT1(new PointImpl(//
- "S102_EVT1", //
- "Event1", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, new OptionsEnum[0])), //
+ EVT1(new BitFieldPoint("S102_EVT1", "Event1", //
"Bitmask value. Event fields", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S102_Evt1.values())), //
- EVT2(new PointImpl(//
- "S102_EVT2", //
- "Event Bitfield 2", //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, S102_Evt1.values())), //
+ EVT2(new BitFieldPoint("S102_EVT2", "Event Bitfield 2", //
"Reserved for future use", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND1(new PointImpl(//
- "S102_EVT_VND1", //
- "Vendor Event Bitfield 1", //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND1(new BitFieldPoint("S102_EVT_VND1", "Vendor Event Bitfield 1", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND2(new PointImpl(//
- "S102_EVT_VND2", //
- "Vendor Event Bitfield 2", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND2(new BitFieldPoint("S102_EVT_VND2", "Vendor Event Bitfield 2", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND3(new PointImpl(//
- "S102_EVT_VND3", //
- "Vendor Event Bitfield 3", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND3(new BitFieldPoint("S102_EVT_VND3", "Vendor Event Bitfield 3", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND4(new PointImpl(//
- "S102_EVT_VND4", //
- "Vendor Event Bitfield 4", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND4(new BitFieldPoint("S102_EVT_VND4", "Vendor Event Bitfield 4", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0]));
- protected final PointImpl impl;
+ private final Point point;
- private S102(PointImpl impl) {
- this.impl = impl;
+ private S102(Point point) {
+ this.point = point;
}
@Override
- public PointImpl get() {
- return this.impl;
+ public Point get() {
+ return this.point;
}
}
@@ -2016,7 +733,7 @@ public static enum S102_St implements OptionsEnum {
THROTTLED(5, "THROTTLED"), //
SHUTTING_DOWN(6, "SHUTTING_DOWN"), //
FAULT(7, "FAULT"), //
- STANDBY(8, "STANDBY"); //
+ STANDBY(8, "STANDBY");
private final int value;
private final String name;
@@ -2042,533 +759,152 @@ public OptionsEnum getUndefined() {
}
}
- public static enum S102_Evt1 implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- GROUND_FAULT(0, "GROUND_FAULT"), //
- DC_OVER_VOLT(1, "DC_OVER_VOLT"), //
- AC_DISCONNECT(2, "AC_DISCONNECT"), //
- DC_DISCONNECT(3, "DC_DISCONNECT"), //
- GRID_DISCONNECT(4, "GRID_DISCONNECT"), //
- CABINET_OPEN(5, "CABINET_OPEN"), //
- MANUAL_SHUTDOWN(6, "MANUAL_SHUTDOWN"), //
- OVER_TEMP(7, "OVER_TEMP"), //
- OVER_FREQUENCY(8, "OVER_FREQUENCY"), //
- UNDER_FREQUENCY(9, "UNDER_FREQUENCY"), //
- AC_OVER_VOLT(10, "AC_OVER_VOLT"), //
- AC_UNDER_VOLT(11, "AC_UNDER_VOLT"), //
- BLOWN_STRING_FUSE(12, "BLOWN_STRING_FUSE"), //
- UNDER_TEMP(13, "UNDER_TEMP"), //
- MEMORY_LOSS(14, "MEMORY_LOSS"), //
- HW_TEST_FAILURE(15, "HW_TEST_FAILURE"); //
-
- private final int value;
- private final String name;
-
- private S102_Evt1(int value, String name) {
- this.value = value;
- this.name = name;
- }
+ public static enum S102_Evt1 implements SunSpecBitPoint {
+ GROUND_FAULT(new BitPoint(0, "S102_EVT1_GROUND_FAULT", "Ground Fault", Level.INFO)), //
+ DC_OVER_VOLT(new BitPoint(1, "S102_EVT1_DC_OVER_VOLT", "DC Over Volt", Level.INFO)), //
+ AC_DISCONNECT(new BitPoint(2, "S102_EVT1_AC_DISCONNECT", "AC Disconnect", Level.INFO)), //
+ DC_DISCONNECT(new BitPoint(3, "S102_EVT1_DC_DISCONNECT", "DC Disconnect", Level.INFO)), //
+ GRID_DISCONNECT(new BitPoint(4, "S102_EVT1_GRID_DISCONNECT", "Grid Disconnect", Level.INFO)), //
+ CABINET_OPEN(new BitPoint(5, "S102_EVT1_CABINET_OPEN", "Cabinet Open", Level.INFO)), //
+ MANUAL_SHUTDOWN(new BitPoint(6, "S102_EVT1_MANUAL_SHUTDOWN", "Manual Shutdown", Level.INFO)), //
+ OVER_TEMP(new BitPoint(7, "S102_EVT1_OVER_TEMP", "Over Temp", Level.INFO)), //
+ OVER_FREQUENCY(new BitPoint(8, "S102_EVT1_OVER_FREQUENCY", "Over Frequency", Level.INFO)), //
+ UNDER_FREQUENCY(new BitPoint(9, "S102_EVT1_UNDER_FREQUENCY", "Under Frequency", Level.INFO)), //
+ AC_OVER_VOLT(new BitPoint(10, "S102_EVT1_AC_OVER_VOLT", "AC Over Volt", Level.INFO)), //
+ AC_UNDER_VOLT(new BitPoint(11, "S102_EVT1_AC_UNDER_VOLT", "AC Under Volt", Level.INFO)), //
+ BLOWN_STRING_FUSE(new BitPoint(12, "S102_EVT1_BLOWN_STRING_FUSE", "Blown String Fuse", Level.INFO)), //
+ UNDER_TEMP(new BitPoint(13, "S102_EVT1_UNDER_TEMP", "Under Temp", Level.INFO)), //
+ MEMORY_LOSS(new BitPoint(14, "S102_EVT1_MEMORY_LOSS", "Memory Loss", Level.INFO)), //
+ HW_TEST_FAILURE(new BitPoint(15, "S102_EVT1_HW_TEST_FAILURE", "HW Test Failure", Level.INFO));
- @Override
- public int getValue() {
- return this.value;
- }
+ private final BitPoint point;
- @Override
- public String getName() {
- return this.name;
+ private S102_Evt1(BitPoint point) {
+ this.point = point;
}
@Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
public static enum S103 implements SunSpecPoint {
- A(new PointImpl(//
- "S103_A", //
- "Amps", //
+ A(new ScaledValuePoint("S103_A", "Amps", //
"AC Current", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_A(new PointImpl(//
- "S103_APH_A", //
- "Amps PhaseA", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_A(new ScaledValuePoint("S103_APH_A", "Amps PhaseA", //
"Phase A Current", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_B(new PointImpl(//
- "S103_APH_B", //
- "Amps PhaseB", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_B(new ScaledValuePoint("S103_APH_B", "Amps PhaseB", //
"Phase B Current", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_C(new PointImpl(//
- "S103_APH_C", //
- "Amps PhaseC", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_C(new ScaledValuePoint("S103_APH_C", "Amps PhaseC", //
"Phase C Current", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- A_SF(new PointImpl(//
- "S103_A_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- P_P_VPH_A_B(new PointImpl(//
- "S103_P_P_VPH_A_B", //
- "Phase Voltage AB", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ A_SF(new ScaleFactorPoint("S103_A_SF", "", "")), //
+ P_P_VPH_A_B(new ScaledValuePoint("S103_P_P_VPH_A_B", "Phase Voltage AB", //
"Phase Voltage AB", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- P_P_VPH_B_C(new PointImpl(//
- "S103_P_P_VPH_B_C", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ P_P_VPH_B_C(new ScaledValuePoint("S103_P_P_VPH_B_C", "Phase Voltage BC", //
"Phase Voltage BC", //
- "Phase Voltage BC", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- P_P_VPH_C_A(new PointImpl(//
- "S103_P_P_VPH_C_A", //
- "Phase Voltage CA", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ P_P_VPH_C_A(new ScaledValuePoint("S103_P_P_VPH_C_A", "Phase Voltage CA", //
"Phase Voltage CA", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_A(new PointImpl(//
- "S103_PH_VPH_A", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_A(new ScaledValuePoint("S103_PH_VPH_A", "Phase Voltage AN", //
"Phase Voltage AN", //
- "Phase Voltage AN", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_B(new PointImpl(//
- "S103_PH_VPH_B", //
- "Phase Voltage BN", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_B(new ScaledValuePoint("S103_PH_VPH_B", "Phase Voltage BN", //
"Phase Voltage BN", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_C(new PointImpl(//
- "S103_PH_VPH_C", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_C(new ScaledValuePoint("S103_PH_VPH_C", "Phase Voltage CN", //
"Phase Voltage CN", //
- "Phase Voltage CN", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- V_SF(new PointImpl(//
- "S103_V_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W(new PointImpl(//
- "S103_W", //
- "Watts", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ V_SF(new ScaleFactorPoint("S103_V_SF", "", "")), //
+ W(new ScaledValuePoint("S103_W", "Watts", //
"AC Power", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- W_SF(new PointImpl(//
- "S103_W_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- HZ(new PointImpl(//
- "S103_HZ", //
- "Hz", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ W_SF(new ScaleFactorPoint("S103_W_SF", "", "")), //
+ HZ(new ScaledValuePoint("S103_HZ", "Hz", //
"Line Frequency", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.HERTZ, //
- "Hz_SF", //
- new OptionsEnum[0])), //
- HZ_S_F(new PointImpl(//
- "S103_HZ_S_F", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VA(new PointImpl(//
- "S103_VA", //
- "VA", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.HERTZ, "Hz_SF")), //
+ HZ_S_F(new ScaleFactorPoint("S103_HZ_S_F", "", "")), //
+ VA(new ScaledValuePoint("S103_VA", "VA", //
"AC Apparent Power", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- VA_SF(new PointImpl(//
- "S103_VA_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_AR(new PointImpl(//
- "S103_V_AR", //
- "VAr", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ VA_SF(new ScaleFactorPoint("S103_VA_SF", "", "")), //
+ V_AR(new ScaledValuePoint("S103_V_AR", "VAr", //
"AC Reactive Power", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VAr_SF", //
- new OptionsEnum[0])), //
- V_AR_S_F(new PointImpl(//
- "S103_V_AR_S_F", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PF(new PointImpl(//
- "S103_PF", //
- "PF", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VAr_SF")), //
+ V_AR_S_F(new ScaleFactorPoint("S103_V_AR_S_F", "", "")), //
+ PF(new ScaledValuePoint("S103_PF", "PF", //
"AC Power Factor", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- PF_SF(new PointImpl(//
- "S103_PF_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- WH(new PointImpl(//
- "S103_WH", //
- "WattHours", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ PF_SF(new ScaleFactorPoint("S103_PF_SF", "", "")), //
+ WH(new ScaledValuePoint("S103_WH", "WattHours", //
"AC Energy", //
- "", //
- PointType.ACC32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "WH_SF", //
- new OptionsEnum[0])), //
- WH_SF(new PointImpl(//
- "S103_WH_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DCA(new PointImpl(//
- "S103_DCA", //
- "DC Amps", //
+ ValuePoint.Type.ACC32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "WH_SF")), //
+ WH_SF(new ScaleFactorPoint("S103_WH_SF", "", "")), //
+ DCA(new ScaledValuePoint("S103_DCA", "DC Amps", //
"DC Current", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "DCA_SF", //
- new OptionsEnum[0])), //
- DCA_SF(new PointImpl(//
- "S103_DCA_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DCV(new PointImpl(//
- "S103_DCV", //
- "DC Voltage", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "DCA_SF")), //
+ DCA_SF(new ScaleFactorPoint("S103_DCA_SF", "", "")), //
+ DCV(new ScaledValuePoint("S103_DCV", "DC Voltage", //
"DC Voltage", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "DCV_SF", //
- new OptionsEnum[0])), //
- DCV_SF(new PointImpl(//
- "S103_DCV_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DCW(new PointImpl(//
- "S103_DCW", //
- "DC Watts", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "DCV_SF")), //
+ DCV_SF(new ScaleFactorPoint("S103_DCV_SF", "", "")), //
+ DCW(new ScaledValuePoint("S103_DCW", "DC Watts", //
"DC Power", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "DCW_SF", //
- new OptionsEnum[0])), //
- DCW_SF(new PointImpl(//
- "S103_DCW_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TMP_CAB(new PointImpl(//
- "S103_TMP_CAB", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "DCW_SF")), //
+ DCW_SF(new ScaleFactorPoint("S103_DCW_SF", "", "")), //
+ TMP_CAB(new ScaledValuePoint("S103_TMP_CAB", "Cabinet Temperature", //
"Cabinet Temperature", //
- "Cabinet Temperature", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "Tmp_SF", //
- new OptionsEnum[0])), //
- TMP_SNK(new PointImpl(//
- "S103_TMP_SNK", //
- "Heat Sink Temperature", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "Tmp_SF")), //
+ TMP_SNK(new ScaledValuePoint("S103_TMP_SNK", "Heat Sink Temperature", //
"Heat Sink Temperature", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "Tmp_SF", //
- new OptionsEnum[0])), //
- TMP_TRNS(new PointImpl(//
- "S103_TMP_TRNS", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "Tmp_SF")), //
+ TMP_TRNS(new ScaledValuePoint("S103_TMP_TRNS", "Transformer Temperature", //
"Transformer Temperature", //
- "Transformer Temperature", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "Tmp_SF", //
- new OptionsEnum[0])), //
- TMP_OT(new PointImpl(//
- "S103_TMP_OT", //
- "Other Temperature", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "Tmp_SF")), //
+ TMP_OT(new ScaledValuePoint("S103_TMP_OT", "Other Temperature", //
"Other Temperature", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "Tmp_SF", //
- new OptionsEnum[0])), //
- TMP_S_F(new PointImpl(//
- "S103_TMP_S_F", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ST(new PointImpl(//
- "S103_ST", //
- "Operating State", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "Tmp_SF")), //
+ TMP_S_F(new ScaleFactorPoint("S103_TMP_S_F", "", "")), //
+ ST(new EnumPoint("S103_ST", "Operating State", //
"Enumerated value. Operating state", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S103_St.values())), //
- ST_VND(new PointImpl(//
- "S103_ST_VND", //
- "Vendor Operating State", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S103_St.values())), //
+ ST_VND(new EnumPoint("S103_ST_VND", "Vendor Operating State", //
"Vendor specific operating state code", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT1(new PointImpl(//
- "S103_EVT1", //
- "Event1", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, new OptionsEnum[0])), //
+ EVT1(new BitFieldPoint("S103_EVT1", "Event1", //
"Bitmask value. Event fields", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S103_Evt1.values())), //
- EVT2(new PointImpl(//
- "S103_EVT2", //
- "Event Bitfield 2", //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, S103_Evt1.values())), //
+ EVT2(new BitFieldPoint("S103_EVT2", "Event Bitfield 2", //
"Reserved for future use", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND1(new PointImpl(//
- "S103_EVT_VND1", //
- "Vendor Event Bitfield 1", //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND1(new BitFieldPoint("S103_EVT_VND1", "Vendor Event Bitfield 1", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND2(new PointImpl(//
- "S103_EVT_VND2", //
- "Vendor Event Bitfield 2", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND2(new BitFieldPoint("S103_EVT_VND2", "Vendor Event Bitfield 2", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND3(new PointImpl(//
- "S103_EVT_VND3", //
- "Vendor Event Bitfield 3", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND3(new BitFieldPoint("S103_EVT_VND3", "Vendor Event Bitfield 3", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND4(new PointImpl(//
- "S103_EVT_VND4", //
- "Vendor Event Bitfield 4", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND4(new BitFieldPoint("S103_EVT_VND4", "Vendor Event Bitfield 4", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0]));
- protected final PointImpl impl;
+ private final Point point;
- private S103(PointImpl impl) {
- this.impl = impl;
+ private S103(Point point) {
+ this.point = point;
}
@Override
- public PointImpl get() {
- return this.impl;
+ public Point get() {
+ return this.point;
}
}
@@ -2581,7 +917,7 @@ public static enum S103_St implements OptionsEnum {
THROTTLED(5, "THROTTLED"), //
SHUTTING_DOWN(6, "SHUTTING_DOWN"), //
FAULT(7, "FAULT"), //
- STANDBY(8, "STANDBY"); //
+ STANDBY(8, "STANDBY");
private final int value;
private final String name;
@@ -2607,401 +943,140 @@ public OptionsEnum getUndefined() {
}
}
- public static enum S103_Evt1 implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- GROUND_FAULT(0, "GROUND_FAULT"), //
- DC_OVER_VOLT(1, "DC_OVER_VOLT"), //
- AC_DISCONNECT(2, "AC_DISCONNECT"), //
- DC_DISCONNECT(3, "DC_DISCONNECT"), //
- GRID_DISCONNECT(4, "GRID_DISCONNECT"), //
- CABINET_OPEN(5, "CABINET_OPEN"), //
- MANUAL_SHUTDOWN(6, "MANUAL_SHUTDOWN"), //
- OVER_TEMP(7, "OVER_TEMP"), //
- OVER_FREQUENCY(8, "OVER_FREQUENCY"), //
- UNDER_FREQUENCY(9, "UNDER_FREQUENCY"), //
- AC_OVER_VOLT(10, "AC_OVER_VOLT"), //
- AC_UNDER_VOLT(11, "AC_UNDER_VOLT"), //
- BLOWN_STRING_FUSE(12, "BLOWN_STRING_FUSE"), //
- UNDER_TEMP(13, "UNDER_TEMP"), //
- MEMORY_LOSS(14, "MEMORY_LOSS"), //
- HW_TEST_FAILURE(15, "HW_TEST_FAILURE"); //
-
- private final int value;
- private final String name;
-
- private S103_Evt1(int value, String name) {
- this.value = value;
- this.name = name;
- }
+ public static enum S103_Evt1 implements SunSpecBitPoint {
+ GROUND_FAULT(new BitPoint(0, "S103_EVT1_GROUND_FAULT", "Ground Fault", Level.INFO)), //
+ DC_OVER_VOLT(new BitPoint(1, "S103_EVT1_DC_OVER_VOLT", "DC Over Volt", Level.INFO)), //
+ AC_DISCONNECT(new BitPoint(2, "S103_EVT1_AC_DISCONNECT", "AC Disconnect", Level.INFO)), //
+ DC_DISCONNECT(new BitPoint(3, "S103_EVT1_DC_DISCONNECT", "DC Disconnect", Level.INFO)), //
+ GRID_DISCONNECT(new BitPoint(4, "S103_EVT1_GRID_DISCONNECT", "Grid Disconnect", Level.INFO)), //
+ CABINET_OPEN(new BitPoint(5, "S103_EVT1_CABINET_OPEN", "Cabinet Open", Level.INFO)), //
+ MANUAL_SHUTDOWN(new BitPoint(6, "S103_EVT1_MANUAL_SHUTDOWN", "Manual Shutdown", Level.INFO)), //
+ OVER_TEMP(new BitPoint(7, "S103_EVT1_OVER_TEMP", "Over Temp", Level.INFO)), //
+ OVER_FREQUENCY(new BitPoint(8, "S103_EVT1_OVER_FREQUENCY", "Over Frequency", Level.INFO)), //
+ UNDER_FREQUENCY(new BitPoint(9, "S103_EVT1_UNDER_FREQUENCY", "Under Frequency", Level.INFO)), //
+ AC_OVER_VOLT(new BitPoint(10, "S103_EVT1_AC_OVER_VOLT", "AC Over Volt", Level.INFO)), //
+ AC_UNDER_VOLT(new BitPoint(11, "S103_EVT1_AC_UNDER_VOLT", "AC Under Volt", Level.INFO)), //
+ BLOWN_STRING_FUSE(new BitPoint(12, "S103_EVT1_BLOWN_STRING_FUSE", "Blown String Fuse", Level.INFO)), //
+ UNDER_TEMP(new BitPoint(13, "S103_EVT1_UNDER_TEMP", "Under Temp", Level.INFO)), //
+ MEMORY_LOSS(new BitPoint(14, "S103_EVT1_MEMORY_LOSS", "Memory Loss", Level.INFO)), //
+ HW_TEST_FAILURE(new BitPoint(15, "S103_EVT1_HW_TEST_FAILURE", "HW Test Failure", Level.INFO));
- @Override
- public int getValue() {
- return this.value;
- }
+ private final BitPoint point;
- @Override
- public String getName() {
- return this.name;
+ private S103_Evt1(BitPoint point) {
+ this.point = point;
}
@Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
public static enum S111 implements SunSpecPoint {
- A(new PointImpl(//
- "S111_A", //
- "Amps", //
+ A(new ValuePoint("S111_A", "Amps", //
"AC Current", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- null, //
- new OptionsEnum[0])), //
- APH_A(new PointImpl(//
- "S111_APH_A", //
- "Amps PhaseA", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE)), //
+ APH_A(new ValuePoint("S111_APH_A", "Amps PhaseA", //
"Phase A Current", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- null, //
- new OptionsEnum[0])), //
- APH_B(new PointImpl(//
- "S111_APH_B", //
- "Amps PhaseB", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE)), //
+ APH_B(new ValuePoint("S111_APH_B", "Amps PhaseB", //
"Phase B Current", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- null, //
- new OptionsEnum[0])), //
- APH_C(new PointImpl(//
- "S111_APH_C", //
- "Amps PhaseC", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE)), //
+ APH_C(new ValuePoint("S111_APH_C", "Amps PhaseC", //
"Phase C Current", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- null, //
- new OptionsEnum[0])), //
- P_P_VPH_A_B(new PointImpl(//
- "S111_P_P_VPH_A_B", //
- "Phase Voltage AB", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE)), //
+ P_P_VPH_A_B(new ValuePoint("S111_P_P_VPH_A_B", "Phase Voltage AB", //
"Phase Voltage AB", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- P_P_VPH_B_C(new PointImpl(//
- "S111_P_P_VPH_B_C", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ P_P_VPH_B_C(new ValuePoint("S111_P_P_VPH_B_C", "Phase Voltage BC", //
"Phase Voltage BC", //
- "Phase Voltage BC", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- P_P_VPH_C_A(new PointImpl(//
- "S111_P_P_VPH_C_A", //
- "Phase Voltage CA", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ P_P_VPH_C_A(new ValuePoint("S111_P_P_VPH_C_A", "Phase Voltage CA", //
"Phase Voltage CA", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- PH_VPH_A(new PointImpl(//
- "S111_PH_VPH_A", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ PH_VPH_A(new ValuePoint("S111_PH_VPH_A", "Phase Voltage AN", //
"Phase Voltage AN", //
- "Phase Voltage AN", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- PH_VPH_B(new PointImpl(//
- "S111_PH_VPH_B", //
- "Phase Voltage BN", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ PH_VPH_B(new ValuePoint("S111_PH_VPH_B", "Phase Voltage BN", //
"Phase Voltage BN", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- PH_VPH_C(new PointImpl(//
- "S111_PH_VPH_C", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ PH_VPH_C(new ValuePoint("S111_PH_VPH_C", "Phase Voltage CN", //
"Phase Voltage CN", //
- "Phase Voltage CN", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- W(new PointImpl(//
- "S111_W", //
- "Watts", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ W(new ValuePoint("S111_W", "Watts", //
"AC Power", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- null, //
- new OptionsEnum[0])), //
- HZ(new PointImpl(//
- "S111_HZ", //
- "Hz", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT)), //
+ HZ(new ValuePoint("S111_HZ", "Hz", //
"Line Frequency", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.HERTZ, //
- null, //
- new OptionsEnum[0])), //
- VA(new PointImpl(//
- "S111_VA", //
- "VA", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.HERTZ)), //
+ VA(new ValuePoint("S111_VA", "VA", //
"AC Apparent Power", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- null, //
- new OptionsEnum[0])), //
- V_AR(new PointImpl(//
- "S111_V_AR", //
- "VAr", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE)), //
+ V_AR(new ValuePoint("S111_V_AR", "VAr", //
"AC Reactive Power", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- null, //
- new OptionsEnum[0])), //
- PF(new PointImpl(//
- "S111_PF", //
- "PF", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE)), //
+ PF(new ValuePoint("S111_PF", "PF", //
"AC Power Factor", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- WH(new PointImpl(//
- "S111_WH", //
- "WattHours", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ WH(new ValuePoint("S111_WH", "WattHours", //
"AC Energy", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- null, //
- new OptionsEnum[0])), //
- DCA(new PointImpl(//
- "S111_DCA", //
- "DC Amps", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS)), //
+ DCA(new ValuePoint("S111_DCA", "DC Amps", //
"DC Current", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- null, //
- new OptionsEnum[0])), //
- DCV(new PointImpl(//
- "S111_DCV", //
- "DC Voltage", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE)), //
+ DCV(new ValuePoint("S111_DCV", "DC Voltage", //
"DC Voltage", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- DCW(new PointImpl(//
- "S111_DCW", //
- "DC Watts", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ DCW(new ValuePoint("S111_DCW", "DC Watts", //
"DC Power", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- null, //
- new OptionsEnum[0])), //
- TMP_CAB(new PointImpl(//
- "S111_TMP_CAB", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT)), //
+ TMP_CAB(new ValuePoint("S111_TMP_CAB", "Cabinet Temperature", //
"Cabinet Temperature", //
- "Cabinet Temperature", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- null, //
- new OptionsEnum[0])), //
- TMP_SNK(new PointImpl(//
- "S111_TMP_SNK", //
- "Heat Sink Temperature", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS)), //
+ TMP_SNK(new ValuePoint("S111_TMP_SNK", "Heat Sink Temperature", //
"Heat Sink Temperature", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- null, //
- new OptionsEnum[0])), //
- TMP_TRNS(new PointImpl(//
- "S111_TMP_TRNS", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS)), //
+ TMP_TRNS(new ValuePoint("S111_TMP_TRNS", "Transformer Temperature", //
"Transformer Temperature", //
- "Transformer Temperature", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- null, //
- new OptionsEnum[0])), //
- TMP_OT(new PointImpl(//
- "S111_TMP_OT", //
- "Other Temperature", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS)), //
+ TMP_OT(new ValuePoint("S111_TMP_OT", "Other Temperature", //
"Other Temperature", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- null, //
- new OptionsEnum[0])), //
- ST(new PointImpl(//
- "S111_ST", //
- "Operating State", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS)), //
+ ST(new EnumPoint("S111_ST", "Operating State", //
"Enumerated value. Operating state", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S111_St.values())), //
- ST_VND(new PointImpl(//
- "S111_ST_VND", //
- "Vendor Operating State", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S111_St.values())), //
+ ST_VND(new EnumPoint("S111_ST_VND", "Vendor Operating State", //
"Vendor specific operating state code", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT1(new PointImpl(//
- "S111_EVT1", //
- "Event1", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, new OptionsEnum[0])), //
+ EVT1(new BitFieldPoint("S111_EVT1", "Event1", //
"Bitmask value. Event fields", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S111_Evt1.values())), //
- EVT2(new PointImpl(//
- "S111_EVT2", //
- "Event Bitfield 2", //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, S111_Evt1.values())), //
+ EVT2(new BitFieldPoint("S111_EVT2", "Event Bitfield 2", //
"Reserved for future use", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND1(new PointImpl(//
- "S111_EVT_VND1", //
- "Vendor Event Bitfield 1", //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND1(new BitFieldPoint("S111_EVT_VND1", "Vendor Event Bitfield 1", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND2(new PointImpl(//
- "S111_EVT_VND2", //
- "Vendor Event Bitfield 2", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND2(new BitFieldPoint("S111_EVT_VND2", "Vendor Event Bitfield 2", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND3(new PointImpl(//
- "S111_EVT_VND3", //
- "Vendor Event Bitfield 3", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND3(new BitFieldPoint("S111_EVT_VND3", "Vendor Event Bitfield 3", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND4(new PointImpl(//
- "S111_EVT_VND4", //
- "Vendor Event Bitfield 4", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND4(new BitFieldPoint("S111_EVT_VND4", "Vendor Event Bitfield 4", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0]));
- protected final PointImpl impl;
+ private final Point point;
- private S111(PointImpl impl) {
- this.impl = impl;
+ private S111(Point point) {
+ this.point = point;
}
@Override
- public PointImpl get() {
- return this.impl;
+ public Point get() {
+ return this.point;
}
}
@@ -3014,7 +1089,7 @@ public static enum S111_St implements OptionsEnum {
THROTTLED(5, "THROTTLED"), //
SHUTTING_DOWN(6, "SHUTTING_DOWN"), //
FAULT(7, "FAULT"), //
- STANDBY(8, "STANDBY"); //
+ STANDBY(8, "STANDBY");
private final int value;
private final String name;
@@ -3040,401 +1115,140 @@ public OptionsEnum getUndefined() {
}
}
- public static enum S111_Evt1 implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- GROUND_FAULT(0, "GROUND_FAULT"), //
- DC_OVER_VOLT(1, "DC_OVER_VOLT"), //
- AC_DISCONNECT(2, "AC_DISCONNECT"), //
- DC_DISCONNECT(3, "DC_DISCONNECT"), //
- GRID_DISCONNECT(4, "GRID_DISCONNECT"), //
- CABINET_OPEN(5, "CABINET_OPEN"), //
- MANUAL_SHUTDOWN(6, "MANUAL_SHUTDOWN"), //
- OVER_TEMP(7, "OVER_TEMP"), //
- OVER_FREQUENCY(8, "OVER_FREQUENCY"), //
- UNDER_FREQUENCY(9, "UNDER_FREQUENCY"), //
- AC_OVER_VOLT(10, "AC_OVER_VOLT"), //
- AC_UNDER_VOLT(11, "AC_UNDER_VOLT"), //
- BLOWN_STRING_FUSE(12, "BLOWN_STRING_FUSE"), //
- UNDER_TEMP(13, "UNDER_TEMP"), //
- MEMORY_LOSS(14, "MEMORY_LOSS"), //
- HW_TEST_FAILURE(15, "HW_TEST_FAILURE"); //
-
- private final int value;
- private final String name;
-
- private S111_Evt1(int value, String name) {
- this.value = value;
- this.name = name;
- }
+ public static enum S111_Evt1 implements SunSpecBitPoint {
+ GROUND_FAULT(new BitPoint(0, "S111_EVT1_GROUND_FAULT", "Ground Fault", Level.INFO)), //
+ DC_OVER_VOLT(new BitPoint(1, "S111_EVT1_DC_OVER_VOLT", "DC Over Volt", Level.INFO)), //
+ AC_DISCONNECT(new BitPoint(2, "S111_EVT1_AC_DISCONNECT", "AC Disconnect", Level.INFO)), //
+ DC_DISCONNECT(new BitPoint(3, "S111_EVT1_DC_DISCONNECT", "DC Disconnect", Level.INFO)), //
+ GRID_DISCONNECT(new BitPoint(4, "S111_EVT1_GRID_DISCONNECT", "Grid Disconnect", Level.INFO)), //
+ CABINET_OPEN(new BitPoint(5, "S111_EVT1_CABINET_OPEN", "Cabinet Open", Level.INFO)), //
+ MANUAL_SHUTDOWN(new BitPoint(6, "S111_EVT1_MANUAL_SHUTDOWN", "Manual Shutdown", Level.INFO)), //
+ OVER_TEMP(new BitPoint(7, "S111_EVT1_OVER_TEMP", "Over Temp", Level.INFO)), //
+ OVER_FREQUENCY(new BitPoint(8, "S111_EVT1_OVER_FREQUENCY", "Over Frequency", Level.INFO)), //
+ UNDER_FREQUENCY(new BitPoint(9, "S111_EVT1_UNDER_FREQUENCY", "Under Frequency", Level.INFO)), //
+ AC_OVER_VOLT(new BitPoint(10, "S111_EVT1_AC_OVER_VOLT", "AC Over Volt", Level.INFO)), //
+ AC_UNDER_VOLT(new BitPoint(11, "S111_EVT1_AC_UNDER_VOLT", "AC Under Volt", Level.INFO)), //
+ BLOWN_STRING_FUSE(new BitPoint(12, "S111_EVT1_BLOWN_STRING_FUSE", "Blown String Fuse", Level.INFO)), //
+ UNDER_TEMP(new BitPoint(13, "S111_EVT1_UNDER_TEMP", "Under Temp", Level.INFO)), //
+ MEMORY_LOSS(new BitPoint(14, "S111_EVT1_MEMORY_LOSS", "Memory Loss", Level.INFO)), //
+ HW_TEST_FAILURE(new BitPoint(15, "S111_EVT1_HW_TEST_FAILURE", "HW Test Failure", Level.INFO));
- @Override
- public int getValue() {
- return this.value;
- }
+ private final BitPoint point;
- @Override
- public String getName() {
- return this.name;
+ private S111_Evt1(BitPoint point) {
+ this.point = point;
}
@Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
public static enum S112 implements SunSpecPoint {
- A(new PointImpl(//
- "S112_A", //
- "Amps", //
+ A(new ValuePoint("S112_A", "Amps", //
"AC Current", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- null, //
- new OptionsEnum[0])), //
- APH_A(new PointImpl(//
- "S112_APH_A", //
- "Amps PhaseA", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE)), //
+ APH_A(new ValuePoint("S112_APH_A", "Amps PhaseA", //
"Phase A Current", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- null, //
- new OptionsEnum[0])), //
- APH_B(new PointImpl(//
- "S112_APH_B", //
- "Amps PhaseB", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE)), //
+ APH_B(new ValuePoint("S112_APH_B", "Amps PhaseB", //
"Phase B Current", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- null, //
- new OptionsEnum[0])), //
- APH_C(new PointImpl(//
- "S112_APH_C", //
- "Amps PhaseC", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE)), //
+ APH_C(new ValuePoint("S112_APH_C", "Amps PhaseC", //
"Phase C Current", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- null, //
- new OptionsEnum[0])), //
- P_P_VPH_A_B(new PointImpl(//
- "S112_P_P_VPH_A_B", //
- "Phase Voltage AB", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE)), //
+ P_P_VPH_A_B(new ValuePoint("S112_P_P_VPH_A_B", "Phase Voltage AB", //
"Phase Voltage AB", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- P_P_VPH_B_C(new PointImpl(//
- "S112_P_P_VPH_B_C", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ P_P_VPH_B_C(new ValuePoint("S112_P_P_VPH_B_C", "Phase Voltage BC", //
"Phase Voltage BC", //
- "Phase Voltage BC", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- P_P_VPH_C_A(new PointImpl(//
- "S112_P_P_VPH_C_A", //
- "Phase Voltage CA", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ P_P_VPH_C_A(new ValuePoint("S112_P_P_VPH_C_A", "Phase Voltage CA", //
"Phase Voltage CA", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- PH_VPH_A(new PointImpl(//
- "S112_PH_VPH_A", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ PH_VPH_A(new ValuePoint("S112_PH_VPH_A", "Phase Voltage AN", //
"Phase Voltage AN", //
- "Phase Voltage AN", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- PH_VPH_B(new PointImpl(//
- "S112_PH_VPH_B", //
- "Phase Voltage BN", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ PH_VPH_B(new ValuePoint("S112_PH_VPH_B", "Phase Voltage BN", //
"Phase Voltage BN", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- PH_VPH_C(new PointImpl(//
- "S112_PH_VPH_C", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ PH_VPH_C(new ValuePoint("S112_PH_VPH_C", "Phase Voltage CN", //
"Phase Voltage CN", //
- "Phase Voltage CN", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- W(new PointImpl(//
- "S112_W", //
- "Watts", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ W(new ValuePoint("S112_W", "Watts", //
"AC Power", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- null, //
- new OptionsEnum[0])), //
- HZ(new PointImpl(//
- "S112_HZ", //
- "Hz", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT)), //
+ HZ(new ValuePoint("S112_HZ", "Hz", //
"Line Frequency", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.HERTZ, //
- null, //
- new OptionsEnum[0])), //
- VA(new PointImpl(//
- "S112_VA", //
- "VA", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.HERTZ)), //
+ VA(new ValuePoint("S112_VA", "VA", //
"AC Apparent Power", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- null, //
- new OptionsEnum[0])), //
- V_AR(new PointImpl(//
- "S112_V_AR", //
- "VAr", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE)), //
+ V_AR(new ValuePoint("S112_V_AR", "VAr", //
"AC Reactive Power", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- null, //
- new OptionsEnum[0])), //
- PF(new PointImpl(//
- "S112_PF", //
- "PF", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE)), //
+ PF(new ValuePoint("S112_PF", "PF", //
"AC Power Factor", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- WH(new PointImpl(//
- "S112_WH", //
- "WattHours", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ WH(new ValuePoint("S112_WH", "WattHours", //
"AC Energy", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- null, //
- new OptionsEnum[0])), //
- DCA(new PointImpl(//
- "S112_DCA", //
- "DC Amps", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS)), //
+ DCA(new ValuePoint("S112_DCA", "DC Amps", //
"DC Current", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- null, //
- new OptionsEnum[0])), //
- DCV(new PointImpl(//
- "S112_DCV", //
- "DC Voltage", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE)), //
+ DCV(new ValuePoint("S112_DCV", "DC Voltage", //
"DC Voltage", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- DCW(new PointImpl(//
- "S112_DCW", //
- "DC Watts", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ DCW(new ValuePoint("S112_DCW", "DC Watts", //
"DC Power", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- null, //
- new OptionsEnum[0])), //
- TMP_CAB(new PointImpl(//
- "S112_TMP_CAB", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT)), //
+ TMP_CAB(new ValuePoint("S112_TMP_CAB", "Cabinet Temperature", //
"Cabinet Temperature", //
- "Cabinet Temperature", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- null, //
- new OptionsEnum[0])), //
- TMP_SNK(new PointImpl(//
- "S112_TMP_SNK", //
- "Heat Sink Temperature", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS)), //
+ TMP_SNK(new ValuePoint("S112_TMP_SNK", "Heat Sink Temperature", //
"Heat Sink Temperature", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- null, //
- new OptionsEnum[0])), //
- TMP_TRNS(new PointImpl(//
- "S112_TMP_TRNS", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS)), //
+ TMP_TRNS(new ValuePoint("S112_TMP_TRNS", "Transformer Temperature", //
"Transformer Temperature", //
- "Transformer Temperature", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- null, //
- new OptionsEnum[0])), //
- TMP_OT(new PointImpl(//
- "S112_TMP_OT", //
- "Other Temperature", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS)), //
+ TMP_OT(new ValuePoint("S112_TMP_OT", "Other Temperature", //
"Other Temperature", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- null, //
- new OptionsEnum[0])), //
- ST(new PointImpl(//
- "S112_ST", //
- "Operating State", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS)), //
+ ST(new EnumPoint("S112_ST", "Operating State", //
"Enumerated value. Operating state", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S112_St.values())), //
- ST_VND(new PointImpl(//
- "S112_ST_VND", //
- "Vendor Operating State", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S112_St.values())), //
+ ST_VND(new EnumPoint("S112_ST_VND", "Vendor Operating State", //
"Vendor specific operating state code", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT1(new PointImpl(//
- "S112_EVT1", //
- "Event1", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, new OptionsEnum[0])), //
+ EVT1(new BitFieldPoint("S112_EVT1", "Event1", //
"Bitmask value. Event fields", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S112_Evt1.values())), //
- EVT2(new PointImpl(//
- "S112_EVT2", //
- "Event Bitfield 2", //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, S112_Evt1.values())), //
+ EVT2(new BitFieldPoint("S112_EVT2", "Event Bitfield 2", //
"Reserved for future use", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND1(new PointImpl(//
- "S112_EVT_VND1", //
- "Vendor Event Bitfield 1", //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND1(new BitFieldPoint("S112_EVT_VND1", "Vendor Event Bitfield 1", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND2(new PointImpl(//
- "S112_EVT_VND2", //
- "Vendor Event Bitfield 2", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND2(new BitFieldPoint("S112_EVT_VND2", "Vendor Event Bitfield 2", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND3(new PointImpl(//
- "S112_EVT_VND3", //
- "Vendor Event Bitfield 3", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND3(new BitFieldPoint("S112_EVT_VND3", "Vendor Event Bitfield 3", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND4(new PointImpl(//
- "S112_EVT_VND4", //
- "Vendor Event Bitfield 4", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND4(new BitFieldPoint("S112_EVT_VND4", "Vendor Event Bitfield 4", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0]));
- protected final PointImpl impl;
+ private final Point point;
- private S112(PointImpl impl) {
- this.impl = impl;
+ private S112(Point point) {
+ this.point = point;
}
@Override
- public PointImpl get() {
- return this.impl;
+ public Point get() {
+ return this.point;
}
}
@@ -3447,7 +1261,7 @@ public static enum S112_St implements OptionsEnum {
THROTTLED(5, "THROTTLED"), //
SHUTTING_DOWN(6, "SHUTTING_DOWN"), //
FAULT(7, "FAULT"), //
- STANDBY(8, "STANDBY"); //
+ STANDBY(8, "STANDBY");
private final int value;
private final String name;
@@ -3473,401 +1287,140 @@ public OptionsEnum getUndefined() {
}
}
- public static enum S112_Evt1 implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- GROUND_FAULT(0, "GROUND_FAULT"), //
- DC_OVER_VOLT(1, "DC_OVER_VOLT"), //
- AC_DISCONNECT(2, "AC_DISCONNECT"), //
- DC_DISCONNECT(3, "DC_DISCONNECT"), //
- GRID_DISCONNECT(4, "GRID_DISCONNECT"), //
- CABINET_OPEN(5, "CABINET_OPEN"), //
- MANUAL_SHUTDOWN(6, "MANUAL_SHUTDOWN"), //
- OVER_TEMP(7, "OVER_TEMP"), //
- OVER_FREQUENCY(8, "OVER_FREQUENCY"), //
- UNDER_FREQUENCY(9, "UNDER_FREQUENCY"), //
- AC_OVER_VOLT(10, "AC_OVER_VOLT"), //
- AC_UNDER_VOLT(11, "AC_UNDER_VOLT"), //
- BLOWN_STRING_FUSE(12, "BLOWN_STRING_FUSE"), //
- UNDER_TEMP(13, "UNDER_TEMP"), //
- MEMORY_LOSS(14, "MEMORY_LOSS"), //
- HW_TEST_FAILURE(15, "HW_TEST_FAILURE"); //
-
- private final int value;
- private final String name;
-
- private S112_Evt1(int value, String name) {
- this.value = value;
- this.name = name;
- }
+ public static enum S112_Evt1 implements SunSpecBitPoint {
+ GROUND_FAULT(new BitPoint(0, "S112_EVT1_GROUND_FAULT", "Ground Fault", Level.INFO)), //
+ DC_OVER_VOLT(new BitPoint(1, "S112_EVT1_DC_OVER_VOLT", "DC Over Volt", Level.INFO)), //
+ AC_DISCONNECT(new BitPoint(2, "S112_EVT1_AC_DISCONNECT", "AC Disconnect", Level.INFO)), //
+ DC_DISCONNECT(new BitPoint(3, "S112_EVT1_DC_DISCONNECT", "DC Disconnect", Level.INFO)), //
+ GRID_DISCONNECT(new BitPoint(4, "S112_EVT1_GRID_DISCONNECT", "Grid Disconnect", Level.INFO)), //
+ CABINET_OPEN(new BitPoint(5, "S112_EVT1_CABINET_OPEN", "Cabinet Open", Level.INFO)), //
+ MANUAL_SHUTDOWN(new BitPoint(6, "S112_EVT1_MANUAL_SHUTDOWN", "Manual Shutdown", Level.INFO)), //
+ OVER_TEMP(new BitPoint(7, "S112_EVT1_OVER_TEMP", "Over Temp", Level.INFO)), //
+ OVER_FREQUENCY(new BitPoint(8, "S112_EVT1_OVER_FREQUENCY", "Over Frequency", Level.INFO)), //
+ UNDER_FREQUENCY(new BitPoint(9, "S112_EVT1_UNDER_FREQUENCY", "Under Frequency", Level.INFO)), //
+ AC_OVER_VOLT(new BitPoint(10, "S112_EVT1_AC_OVER_VOLT", "AC Over Volt", Level.INFO)), //
+ AC_UNDER_VOLT(new BitPoint(11, "S112_EVT1_AC_UNDER_VOLT", "AC Under Volt", Level.INFO)), //
+ BLOWN_STRING_FUSE(new BitPoint(12, "S112_EVT1_BLOWN_STRING_FUSE", "Blown String Fuse", Level.INFO)), //
+ UNDER_TEMP(new BitPoint(13, "S112_EVT1_UNDER_TEMP", "Under Temp", Level.INFO)), //
+ MEMORY_LOSS(new BitPoint(14, "S112_EVT1_MEMORY_LOSS", "Memory Loss", Level.INFO)), //
+ HW_TEST_FAILURE(new BitPoint(15, "S112_EVT1_HW_TEST_FAILURE", "HW Test Failure", Level.INFO));
- @Override
- public int getValue() {
- return this.value;
- }
+ private final BitPoint point;
- @Override
- public String getName() {
- return this.name;
+ private S112_Evt1(BitPoint point) {
+ this.point = point;
}
@Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
public static enum S113 implements SunSpecPoint {
- A(new PointImpl(//
- "S113_A", //
- "Amps", //
+ A(new ValuePoint("S113_A", "Amps", //
"AC Current", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- null, //
- new OptionsEnum[0])), //
- APH_A(new PointImpl(//
- "S113_APH_A", //
- "Amps PhaseA", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE)), //
+ APH_A(new ValuePoint("S113_APH_A", "Amps PhaseA", //
"Phase A Current", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- null, //
- new OptionsEnum[0])), //
- APH_B(new PointImpl(//
- "S113_APH_B", //
- "Amps PhaseB", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE)), //
+ APH_B(new ValuePoint("S113_APH_B", "Amps PhaseB", //
"Phase B Current", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- null, //
- new OptionsEnum[0])), //
- APH_C(new PointImpl(//
- "S113_APH_C", //
- "Amps PhaseC", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE)), //
+ APH_C(new ValuePoint("S113_APH_C", "Amps PhaseC", //
"Phase C Current", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- null, //
- new OptionsEnum[0])), //
- P_P_VPH_A_B(new PointImpl(//
- "S113_P_P_VPH_A_B", //
- "Phase Voltage AB", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE)), //
+ P_P_VPH_A_B(new ValuePoint("S113_P_P_VPH_A_B", "Phase Voltage AB", //
"Phase Voltage AB", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- P_P_VPH_B_C(new PointImpl(//
- "S113_P_P_VPH_B_C", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ P_P_VPH_B_C(new ValuePoint("S113_P_P_VPH_B_C", "Phase Voltage BC", //
"Phase Voltage BC", //
- "Phase Voltage BC", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- P_P_VPH_C_A(new PointImpl(//
- "S113_P_P_VPH_C_A", //
- "Phase Voltage CA", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ P_P_VPH_C_A(new ValuePoint("S113_P_P_VPH_C_A", "Phase Voltage CA", //
"Phase Voltage CA", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- PH_VPH_A(new PointImpl(//
- "S113_PH_VPH_A", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ PH_VPH_A(new ValuePoint("S113_PH_VPH_A", "Phase Voltage AN", //
"Phase Voltage AN", //
- "Phase Voltage AN", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- PH_VPH_B(new PointImpl(//
- "S113_PH_VPH_B", //
- "Phase Voltage BN", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ PH_VPH_B(new ValuePoint("S113_PH_VPH_B", "Phase Voltage BN", //
"Phase Voltage BN", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- PH_VPH_C(new PointImpl(//
- "S113_PH_VPH_C", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ PH_VPH_C(new ValuePoint("S113_PH_VPH_C", "Phase Voltage CN", //
"Phase Voltage CN", //
- "Phase Voltage CN", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- W(new PointImpl(//
- "S113_W", //
- "Watts", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ W(new ValuePoint("S113_W", "Watts", //
"AC Power", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- null, //
- new OptionsEnum[0])), //
- HZ(new PointImpl(//
- "S113_HZ", //
- "Hz", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT)), //
+ HZ(new ValuePoint("S113_HZ", "Hz", //
"Line Frequency", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.HERTZ, //
- null, //
- new OptionsEnum[0])), //
- VA(new PointImpl(//
- "S113_VA", //
- "VA", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.HERTZ)), //
+ VA(new ValuePoint("S113_VA", "VA", //
"AC Apparent Power", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- null, //
- new OptionsEnum[0])), //
- V_AR(new PointImpl(//
- "S113_V_AR", //
- "VAr", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE)), //
+ V_AR(new ValuePoint("S113_V_AR", "VAr", //
"AC Reactive Power", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- null, //
- new OptionsEnum[0])), //
- PF(new PointImpl(//
- "S113_PF", //
- "PF", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE)), //
+ PF(new ValuePoint("S113_PF", "PF", //
"AC Power Factor", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- WH(new PointImpl(//
- "S113_WH", //
- "WattHours", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ WH(new ValuePoint("S113_WH", "WattHours", //
"AC Energy", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- null, //
- new OptionsEnum[0])), //
- DCA(new PointImpl(//
- "S113_DCA", //
- "DC Amps", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS)), //
+ DCA(new ValuePoint("S113_DCA", "DC Amps", //
"DC Current", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- null, //
- new OptionsEnum[0])), //
- DCV(new PointImpl(//
- "S113_DCV", //
- "DC Voltage", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE)), //
+ DCV(new ValuePoint("S113_DCV", "DC Voltage", //
"DC Voltage", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- null, //
- new OptionsEnum[0])), //
- DCW(new PointImpl(//
- "S113_DCW", //
- "DC Watts", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT)), //
+ DCW(new ValuePoint("S113_DCW", "DC Watts", //
"DC Power", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- null, //
- new OptionsEnum[0])), //
- TMP_CAB(new PointImpl(//
- "S113_TMP_CAB", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT)), //
+ TMP_CAB(new ValuePoint("S113_TMP_CAB", "Cabinet Temperature", //
"Cabinet Temperature", //
- "Cabinet Temperature", //
- "", //
- PointType.FLOAT32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- null, //
- new OptionsEnum[0])), //
- TMP_SNK(new PointImpl(//
- "S113_TMP_SNK", //
- "Heat Sink Temperature", //
+ ValuePoint.Type.FLOAT32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS)), //
+ TMP_SNK(new ValuePoint("S113_TMP_SNK", "Heat Sink Temperature", //
"Heat Sink Temperature", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- null, //
- new OptionsEnum[0])), //
- TMP_TRNS(new PointImpl(//
- "S113_TMP_TRNS", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS)), //
+ TMP_TRNS(new ValuePoint("S113_TMP_TRNS", "Transformer Temperature", //
"Transformer Temperature", //
- "Transformer Temperature", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- null, //
- new OptionsEnum[0])), //
- TMP_OT(new PointImpl(//
- "S113_TMP_OT", //
- "Other Temperature", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS)), //
+ TMP_OT(new ValuePoint("S113_TMP_OT", "Other Temperature", //
"Other Temperature", //
- "", //
- PointType.FLOAT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- null, //
- new OptionsEnum[0])), //
- ST(new PointImpl(//
- "S113_ST", //
- "Operating State", //
+ ValuePoint.Type.FLOAT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS)), //
+ ST(new EnumPoint("S113_ST", "Operating State", //
"Enumerated value. Operating state", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S113_St.values())), //
- ST_VND(new PointImpl(//
- "S113_ST_VND", //
- "Vendor Operating State", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S113_St.values())), //
+ ST_VND(new EnumPoint("S113_ST_VND", "Vendor Operating State", //
"Vendor specific operating state code", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT1(new PointImpl(//
- "S113_EVT1", //
- "Event1", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, new OptionsEnum[0])), //
+ EVT1(new BitFieldPoint("S113_EVT1", "Event1", //
"Bitmask value. Event fields", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S113_Evt1.values())), //
- EVT2(new PointImpl(//
- "S113_EVT2", //
- "Event Bitfield 2", //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, S113_Evt1.values())), //
+ EVT2(new BitFieldPoint("S113_EVT2", "Event Bitfield 2", //
"Reserved for future use", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND1(new PointImpl(//
- "S113_EVT_VND1", //
- "Vendor Event Bitfield 1", //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND1(new BitFieldPoint("S113_EVT_VND1", "Vendor Event Bitfield 1", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND2(new PointImpl(//
- "S113_EVT_VND2", //
- "Vendor Event Bitfield 2", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND2(new BitFieldPoint("S113_EVT_VND2", "Vendor Event Bitfield 2", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND3(new PointImpl(//
- "S113_EVT_VND3", //
- "Vendor Event Bitfield 3", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND3(new BitFieldPoint("S113_EVT_VND3", "Vendor Event Bitfield 3", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND4(new PointImpl(//
- "S113_EVT_VND4", //
- "Vendor Event Bitfield 4", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND4(new BitFieldPoint("S113_EVT_VND4", "Vendor Event Bitfield 4", //
"Vendor defined events", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0]));
- protected final PointImpl impl;
+ private final Point point;
- private S113(PointImpl impl) {
- this.impl = impl;
+ private S113(Point point) {
+ this.point = point;
}
@Override
- public PointImpl get() {
- return this.impl;
+ public Point get() {
+ return this.point;
}
}
@@ -3880,7 +1433,7 @@ public static enum S113_St implements OptionsEnum {
THROTTLED(5, "THROTTLED"), //
SHUTTING_DOWN(6, "SHUTTING_DOWN"), //
FAULT(7, "FAULT"), //
- STANDBY(8, "STANDBY"); //
+ STANDBY(8, "STANDBY");
private final int value;
private final String name;
@@ -3906,353 +1459,123 @@ public OptionsEnum getUndefined() {
}
}
- public static enum S113_Evt1 implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- GROUND_FAULT(0, "GROUND_FAULT"), //
- DC_OVER_VOLT(1, "DC_OVER_VOLT"), //
- AC_DISCONNECT(2, "AC_DISCONNECT"), //
- DC_DISCONNECT(3, "DC_DISCONNECT"), //
- GRID_DISCONNECT(4, "GRID_DISCONNECT"), //
- CABINET_OPEN(5, "CABINET_OPEN"), //
- MANUAL_SHUTDOWN(6, "MANUAL_SHUTDOWN"), //
- OVER_TEMP(7, "OVER_TEMP"), //
- OVER_FREQUENCY(8, "OVER_FREQUENCY"), //
- UNDER_FREQUENCY(9, "UNDER_FREQUENCY"), //
- AC_OVER_VOLT(10, "AC_OVER_VOLT"), //
- AC_UNDER_VOLT(11, "AC_UNDER_VOLT"), //
- BLOWN_STRING_FUSE(12, "BLOWN_STRING_FUSE"), //
- UNDER_TEMP(13, "UNDER_TEMP"), //
- MEMORY_LOSS(14, "MEMORY_LOSS"), //
- HW_TEST_FAILURE(15, "HW_TEST_FAILURE"); //
-
- private final int value;
- private final String name;
-
- private S113_Evt1(int value, String name) {
- this.value = value;
- this.name = name;
- }
+ public static enum S113_Evt1 implements SunSpecBitPoint {
+ GROUND_FAULT(new BitPoint(0, "S113_EVT1_GROUND_FAULT", "Ground Fault", Level.INFO)), //
+ DC_OVER_VOLT(new BitPoint(1, "S113_EVT1_DC_OVER_VOLT", "DC Over Volt", Level.INFO)), //
+ AC_DISCONNECT(new BitPoint(2, "S113_EVT1_AC_DISCONNECT", "AC Disconnect", Level.INFO)), //
+ DC_DISCONNECT(new BitPoint(3, "S113_EVT1_DC_DISCONNECT", "DC Disconnect", Level.INFO)), //
+ GRID_DISCONNECT(new BitPoint(4, "S113_EVT1_GRID_DISCONNECT", "Grid Disconnect", Level.INFO)), //
+ CABINET_OPEN(new BitPoint(5, "S113_EVT1_CABINET_OPEN", "Cabinet Open", Level.INFO)), //
+ MANUAL_SHUTDOWN(new BitPoint(6, "S113_EVT1_MANUAL_SHUTDOWN", "Manual Shutdown", Level.INFO)), //
+ OVER_TEMP(new BitPoint(7, "S113_EVT1_OVER_TEMP", "Over Temp", Level.INFO)), //
+ OVER_FREQUENCY(new BitPoint(8, "S113_EVT1_OVER_FREQUENCY", "Over Frequency", Level.INFO)), //
+ UNDER_FREQUENCY(new BitPoint(9, "S113_EVT1_UNDER_FREQUENCY", "Under Frequency", Level.INFO)), //
+ AC_OVER_VOLT(new BitPoint(10, "S113_EVT1_AC_OVER_VOLT", "AC Over Volt", Level.INFO)), //
+ AC_UNDER_VOLT(new BitPoint(11, "S113_EVT1_AC_UNDER_VOLT", "AC Under Volt", Level.INFO)), //
+ BLOWN_STRING_FUSE(new BitPoint(12, "S113_EVT1_BLOWN_STRING_FUSE", "Blown String Fuse", Level.INFO)), //
+ UNDER_TEMP(new BitPoint(13, "S113_EVT1_UNDER_TEMP", "Under Temp", Level.INFO)), //
+ MEMORY_LOSS(new BitPoint(14, "S113_EVT1_MEMORY_LOSS", "Memory Loss", Level.INFO)), //
+ HW_TEST_FAILURE(new BitPoint(15, "S113_EVT1_HW_TEST_FAILURE", "HW Test Failure", Level.INFO));
- @Override
- public int getValue() {
- return this.value;
- }
+ private final BitPoint point;
- @Override
- public String getName() {
- return this.name;
+ private S113_Evt1(BitPoint point) {
+ this.point = point;
}
@Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
public static enum S120 implements SunSpecPoint {
- D_E_R_TYP(new PointImpl(//
- "S120_D_E_R_TYP", //
- "DERTyp", //
+ D_E_R_TYP(new EnumPoint("S120_D_E_R_TYP", "DERTyp", //
"Type of DER device. Default value is 4 to indicate PV device.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S120_DERTyp.values())), //
- W_RTG(new PointImpl(//
- "S120_W_RTG", //
- "WRtg", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S120_DERTyp.values())), //
+ W_RTG(new ScaledValuePoint("S120_W_RTG", "WRtg", //
"Continuous power output capability of the inverter.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "WRtg_SF", //
- new OptionsEnum[0])), //
- W_RTG_S_F(new PointImpl(//
- "S120_W_RTG_S_F", //
- "WRtg_SF", //
- "Scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_A_RTG(new PointImpl(//
- "S120_V_A_RTG", //
- "VARtg", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "WRtg_SF")), //
+ W_RTG_S_F(new ScaleFactorPoint("S120_W_RTG_S_F", "WRtg_SF", //
+ "Scale factor")), //
+ V_A_RTG(new ScaledValuePoint("S120_V_A_RTG", "VARtg", //
"Continuous Volt-Ampere capability of the inverter.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VARtg_SF", //
- new OptionsEnum[0])), //
- V_A_RTG_S_F(new PointImpl(//
- "S120_V_A_RTG_S_F", //
- "VARtg_SF", //
- "Scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_AR_RTG_Q1(new PointImpl(//
- "S120_V_AR_RTG_Q1", //
- "VArRtgQ1", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VARtg_SF")), //
+ V_A_RTG_S_F(new ScaleFactorPoint("S120_V_A_RTG_S_F", "VARtg_SF", //
+ "Scale factor")), //
+ V_AR_RTG_Q1(new ScaledValuePoint("S120_V_AR_RTG_Q1", "VArRtgQ1", //
"Continuous VAR capability of the inverter in quadrant 1.", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VArRtg_SF", //
- new OptionsEnum[0])), //
- V_AR_RTG_Q2(new PointImpl(//
- "S120_V_AR_RTG_Q2", //
- "VArRtgQ2", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VArRtg_SF")), //
+ V_AR_RTG_Q2(new ScaledValuePoint("S120_V_AR_RTG_Q2", "VArRtgQ2", //
"Continuous VAR capability of the inverter in quadrant 2.", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VArRtg_SF", //
- new OptionsEnum[0])), //
- V_AR_RTG_Q3(new PointImpl(//
- "S120_V_AR_RTG_Q3", //
- "VArRtgQ3", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VArRtg_SF")), //
+ V_AR_RTG_Q3(new ScaledValuePoint("S120_V_AR_RTG_Q3", "VArRtgQ3", //
"Continuous VAR capability of the inverter in quadrant 3.", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VArRtg_SF", //
- new OptionsEnum[0])), //
- V_AR_RTG_Q4(new PointImpl(//
- "S120_V_AR_RTG_Q4", //
- "VArRtgQ4", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VArRtg_SF")), //
+ V_AR_RTG_Q4(new ScaledValuePoint("S120_V_AR_RTG_Q4", "VArRtgQ4", //
"Continuous VAR capability of the inverter in quadrant 4.", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VArRtg_SF", //
- new OptionsEnum[0])), //
- V_AR_RTG_S_F(new PointImpl(//
- "S120_V_AR_RTG_S_F", //
- "VArRtg_SF", //
- "Scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- A_RTG(new PointImpl(//
- "S120_A_RTG", //
- "ARtg", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VArRtg_SF")), //
+ V_AR_RTG_S_F(new ScaleFactorPoint("S120_V_AR_RTG_S_F", "VArRtg_SF", //
+ "Scale factor")), //
+ A_RTG(new ScaledValuePoint("S120_A_RTG", "ARtg", //
"Maximum RMS AC current level capability of the inverter.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "ARtg_SF", //
- new OptionsEnum[0])), //
- A_RTG_S_F(new PointImpl(//
- "S120_A_RTG_S_F", //
- "ARtg_SF", //
- "Scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- P_F_RTG_Q1(new PointImpl(//
- "S120_P_F_RTG_Q1", //
- "PFRtgQ1", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "ARtg_SF")), //
+ A_RTG_S_F(new ScaleFactorPoint("S120_A_RTG_S_F", "ARtg_SF", //
+ "Scale factor")), //
+ P_F_RTG_Q1(new ScaledValuePoint("S120_P_F_RTG_Q1", "PFRtgQ1", //
"Minimum power factor capability of the inverter in quadrant 1.", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PFRtg_SF", //
- new OptionsEnum[0])), //
- P_F_RTG_Q2(new PointImpl(//
- "S120_P_F_RTG_Q2", //
- "PFRtgQ2", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PFRtg_SF")), //
+ P_F_RTG_Q2(new ScaledValuePoint("S120_P_F_RTG_Q2", "PFRtgQ2", //
"Minimum power factor capability of the inverter in quadrant 2.", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PFRtg_SF", //
- new OptionsEnum[0])), //
- P_F_RTG_Q3(new PointImpl(//
- "S120_P_F_RTG_Q3", //
- "PFRtgQ3", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PFRtg_SF")), //
+ P_F_RTG_Q3(new ScaledValuePoint("S120_P_F_RTG_Q3", "PFRtgQ3", //
"Minimum power factor capability of the inverter in quadrant 3.", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PFRtg_SF", //
- new OptionsEnum[0])), //
- P_F_RTG_Q4(new PointImpl(//
- "S120_P_F_RTG_Q4", //
- "PFRtgQ4", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PFRtg_SF")), //
+ P_F_RTG_Q4(new ScaledValuePoint("S120_P_F_RTG_Q4", "PFRtgQ4", //
"Minimum power factor capability of the inverter in quadrant 4.", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PFRtg_SF", //
- new OptionsEnum[0])), //
- P_F_RTG_S_F(new PointImpl(//
- "S120_P_F_RTG_S_F", //
- "PFRtg_SF", //
- "Scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W_H_RTG(new PointImpl(//
- "S120_W_H_RTG", //
- "WHRtg", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PFRtg_SF")), //
+ P_F_RTG_S_F(new ScaleFactorPoint("S120_P_F_RTG_S_F", "PFRtg_SF", //
+ "Scale factor")), //
+ W_H_RTG(new ScaledValuePoint("S120_W_H_RTG", "WHRtg", //
"Nominal energy rating of storage device.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "WHRtg_SF", //
- new OptionsEnum[0])), //
- W_H_RTG_S_F(new PointImpl(//
- "S120_W_H_RTG_S_F", //
- "WHRtg_SF", //
- "Scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- AHR_RTG(new PointImpl(//
- "S120_AHR_RTG", //
- "AhrRtg", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "WHRtg_SF")), //
+ W_H_RTG_S_F(new ScaleFactorPoint("S120_W_H_RTG_S_F", "WHRtg_SF", //
+ "Scale factor")), //
+ AHR_RTG(new ScaledValuePoint("S120_AHR_RTG", "AhrRtg", //
"The usable capacity of the battery. Maximum charge minus minimum charge from a technology capability perspective (Amp-hour capacity rating).", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE_HOURS, //
- "AhrRtg_SF", //
- new OptionsEnum[0])), //
- AHR_RTG_S_F(new PointImpl(//
- "S120_AHR_RTG_S_F", //
- "AhrRtg_SF", //
- "Scale factor for amp-hour rating.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- MAX_CHA_RTE(new PointImpl(//
- "S120_MAX_CHA_RTE", //
- "MaxChaRte", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE_HOURS, "AhrRtg_SF")), //
+ AHR_RTG_S_F(new ScaleFactorPoint("S120_AHR_RTG_S_F", "AhrRtg_SF", //
+ "Scale factor for amp-hour rating.")), //
+ MAX_CHA_RTE(new ScaledValuePoint("S120_MAX_CHA_RTE", "MaxChaRte", //
"Maximum rate of energy transfer into the storage device.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "MaxChaRte_SF", //
- new OptionsEnum[0])), //
- MAX_CHA_RTE_S_F(new PointImpl(//
- "S120_MAX_CHA_RTE_S_F", //
- "MaxChaRte_SF", //
- "Scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- MAX_DIS_CHA_RTE(new PointImpl(//
- "S120_MAX_DIS_CHA_RTE", //
- "MaxDisChaRte", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "MaxChaRte_SF")), //
+ MAX_CHA_RTE_S_F(new ScaleFactorPoint("S120_MAX_CHA_RTE_S_F", "MaxChaRte_SF", //
+ "Scale factor")), //
+ MAX_DIS_CHA_RTE(new ScaledValuePoint("S120_MAX_DIS_CHA_RTE", "MaxDisChaRte", //
"Maximum rate of energy transfer out of the storage device.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "MaxDisChaRte_SF", //
- new OptionsEnum[0])), //
- MAX_DIS_CHA_RTE_S_F(new PointImpl(//
- "S120_MAX_DIS_CHA_RTE_S_F", //
- "MaxDisChaRte_SF", //
- "Scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PAD(new PointImpl(//
- "S120_PAD", //
- "Pad", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "MaxDisChaRte_SF")), //
+ MAX_DIS_CHA_RTE_S_F(new ScaleFactorPoint("S120_MAX_DIS_CHA_RTE_S_F", "MaxDisChaRte_SF", //
+ "Scale factor")), //
+ PAD(new ValuePoint("S120_PAD", "Pad", //
"Pad register.", //
- "", //
- PointType.PAD, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
+ ValuePoint.Type.PAD, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE));
- protected final PointImpl impl;
+ private final Point point;
- private S120(PointImpl impl) {
- this.impl = impl;
+ private S120(Point point) {
+ this.point = point;
}
@Override
- public PointImpl get() {
- return this.impl;
+ public Point get() {
+ return this.point;
}
}
public static enum S120_DERTyp implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
PV(4, "PV"), //
- PV_STOR(82, "PV_STOR"); //
+ PV_STOR(82, "PV_STOR");
private final int value;
private final String name;
@@ -4279,353 +1602,103 @@ public OptionsEnum getUndefined() {
}
public static enum S121 implements SunSpecPoint {
- W_MAX(new PointImpl(//
- "S121_W_MAX", //
- "WMax", //
+ W_MAX(new ScaledValuePoint("S121_W_MAX", "WMax", //
"Setting for maximum power output. Default to WRtg.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.WATT, //
- "WMax_SF", //
- new OptionsEnum[0])), //
- V_REF(new PointImpl(//
- "S121_V_REF", //
- "VRef", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.WATT, "WMax_SF")), //
+ V_REF(new ScaledValuePoint("S121_V_REF", "VRef", //
"Voltage at the PCC.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.VOLT, //
- "VRef_SF", //
- new OptionsEnum[0])), //
- V_REF_OFS(new PointImpl(//
- "S121_V_REF_OFS", //
- "VRefOfs", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.VOLT, "VRef_SF")), //
+ V_REF_OFS(new ScaledValuePoint("S121_V_REF_OFS", "VRefOfs", //
"Offset from PCC to inverter.", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.VOLT, //
- "VRefOfs_SF", //
- new OptionsEnum[0])), //
- V_MAX(new PointImpl(//
- "S121_V_MAX", //
- "VMax", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.VOLT, "VRefOfs_SF")), //
+ V_MAX(new ScaledValuePoint("S121_V_MAX", "VMax", //
"Setpoint for maximum voltage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.VOLT, //
- "VMinMax_SF", //
- new OptionsEnum[0])), //
- V_MIN(new PointImpl(//
- "S121_V_MIN", //
- "VMin", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.VOLT, "VMinMax_SF")), //
+ V_MIN(new ScaledValuePoint("S121_V_MIN", "VMin", //
"Setpoint for minimum voltage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.VOLT, //
- "VMinMax_SF", //
- new OptionsEnum[0])), //
- V_A_MAX(new PointImpl(//
- "S121_V_A_MAX", //
- "VAMax", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.VOLT, "VMinMax_SF")), //
+ V_A_MAX(new ScaledValuePoint("S121_V_A_MAX", "VAMax", //
"Setpoint for maximum apparent power. Default to VARtg.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.VOLT_AMPERE, //
- "VAMax_SF", //
- new OptionsEnum[0])), //
- V_AR_MAX_Q1(new PointImpl(//
- "S121_V_AR_MAX_Q1", //
- "VArMaxQ1", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.VOLT_AMPERE, "VAMax_SF")), //
+ V_AR_MAX_Q1(new ScaledValuePoint("S121_V_AR_MAX_Q1", "VArMaxQ1", //
"Setting for maximum reactive power in quadrant 1. Default to VArRtgQ1.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VArMax_SF", //
- new OptionsEnum[0])), //
- V_AR_MAX_Q2(new PointImpl(//
- "S121_V_AR_MAX_Q2", //
- "VArMaxQ2", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.VOLT_AMPERE_REACTIVE, "VArMax_SF")), //
+ V_AR_MAX_Q2(new ScaledValuePoint("S121_V_AR_MAX_Q2", "VArMaxQ2", //
"Setting for maximum reactive power in quadrant 2. Default to VArRtgQ2.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VArMax_SF", //
- new OptionsEnum[0])), //
- V_AR_MAX_Q3(new PointImpl(//
- "S121_V_AR_MAX_Q3", //
- "VArMaxQ3", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.VOLT_AMPERE_REACTIVE, "VArMax_SF")), //
+ V_AR_MAX_Q3(new ScaledValuePoint("S121_V_AR_MAX_Q3", "VArMaxQ3", //
"Setting for maximum reactive power in quadrant 3. Default to VArRtgQ3.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VArMax_SF", //
- new OptionsEnum[0])), //
- V_AR_MAX_Q4(new PointImpl(//
- "S121_V_AR_MAX_Q4", //
- "VArMaxQ4", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.VOLT_AMPERE_REACTIVE, "VArMax_SF")), //
+ V_AR_MAX_Q4(new ScaledValuePoint("S121_V_AR_MAX_Q4", "VArMaxQ4", //
"Setting for maximum reactive power in quadrant 4. Default to VArRtgQ4.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VArMax_SF", //
- new OptionsEnum[0])), //
- W_GRA(new PointImpl(//
- "S121_W_GRA", //
- "WGra", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.VOLT_AMPERE_REACTIVE, "VArMax_SF")), //
+ W_GRA(new ScaledValuePoint("S121_W_GRA", "WGra", //
"Default ramp rate of change of active power due to command or internal action.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "WGra_SF", //
- new OptionsEnum[0])), //
- P_F_MIN_Q1(new PointImpl(//
- "S121_P_F_MIN_Q1", //
- "PFMinQ1", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.PERCENT, "WGra_SF")), //
+ P_F_MIN_Q1(new ScaledValuePoint("S121_P_F_MIN_Q1", "PFMinQ1", //
"Setpoint for minimum power factor value in quadrant 1. Default to PFRtgQ1.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "PFMin_SF", //
- new OptionsEnum[0])), //
- P_F_MIN_Q2(new PointImpl(//
- "S121_P_F_MIN_Q2", //
- "PFMinQ2", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "PFMin_SF")), //
+ P_F_MIN_Q2(new ScaledValuePoint("S121_P_F_MIN_Q2", "PFMinQ2", //
"Setpoint for minimum power factor value in quadrant 2. Default to PFRtgQ2.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "PFMin_SF", //
- new OptionsEnum[0])), //
- P_F_MIN_Q3(new PointImpl(//
- "S121_P_F_MIN_Q3", //
- "PFMinQ3", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "PFMin_SF")), //
+ P_F_MIN_Q3(new ScaledValuePoint("S121_P_F_MIN_Q3", "PFMinQ3", //
"Setpoint for minimum power factor value in quadrant 3. Default to PFRtgQ3.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "PFMin_SF", //
- new OptionsEnum[0])), //
- P_F_MIN_Q4(new PointImpl(//
- "S121_P_F_MIN_Q4", //
- "PFMinQ4", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "PFMin_SF")), //
+ P_F_MIN_Q4(new ScaledValuePoint("S121_P_F_MIN_Q4", "PFMinQ4", //
"Setpoint for minimum power factor value in quadrant 4. Default to PFRtgQ4.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "PFMin_SF", //
- new OptionsEnum[0])), //
- V_AR_ACT(new PointImpl(//
- "S121_V_AR_ACT", //
- "VArAct", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "PFMin_SF")), //
+ V_AR_ACT(new EnumPoint("S121_V_AR_ACT", "VArAct", //
"VAR action on change between charging and discharging: 1=switch 2=maintain VAR characterization.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S121_VArAct.values())), //
- CLC_TOT_V_A(new PointImpl(//
- "S121_CLC_TOT_V_A", //
- "ClcTotVA", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S121_VArAct.values())), //
+ CLC_TOT_V_A(new EnumPoint("S121_CLC_TOT_V_A", "ClcTotVA", //
"Calculation method for total apparent power. 1=vector 2=arithmetic.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S121_ClcTotVA.values())), //
- MAX_RMP_RTE(new PointImpl(//
- "S121_MAX_RMP_RTE", //
- "MaxRmpRte", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S121_ClcTotVA.values())), //
+ MAX_RMP_RTE(new ScaledValuePoint("S121_MAX_RMP_RTE", "MaxRmpRte", //
"Setpoint for maximum ramp rate as percentage of nominal maximum ramp rate. This setting will limit the rate that watts delivery to the grid can increase or decrease in response to intermittent PV generation.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "MaxRmpRte_SF", //
- new OptionsEnum[0])), //
- E_C_P_NOM_HZ(new PointImpl(//
- "S121_E_C_P_NOM_HZ", //
- "ECPNomHz", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.PERCENT, "MaxRmpRte_SF")), //
+ E_C_P_NOM_HZ(new ScaledValuePoint("S121_E_C_P_NOM_HZ", "ECPNomHz", //
"Setpoint for nominal frequency at the ECP.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.HERTZ, //
- "ECPNomHz_SF", //
- new OptionsEnum[0])), //
- CONN_PH(new PointImpl(//
- "S121_CONN_PH", //
- "ConnPh", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.HERTZ, "ECPNomHz_SF")), //
+ CONN_PH(new EnumPoint("S121_CONN_PH", "ConnPh", //
"Identity of connected phase for single phase inverters. A=1 B=2 C=3.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S121_ConnPh.values())), //
- W_MAX_S_F(new PointImpl(//
- "S121_W_MAX_S_F", //
- "WMax_SF", //
- "Scale factor for real power.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_REF_S_F(new PointImpl(//
- "S121_V_REF_S_F", //
- "VRef_SF", //
- "Scale factor for voltage at the PCC.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_REF_OFS_S_F(new PointImpl(//
- "S121_V_REF_OFS_S_F", //
- "VRefOfs_SF", //
- "Scale factor for offset voltage.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_MIN_MAX_S_F(new PointImpl(//
- "S121_V_MIN_MAX_S_F", //
- "VMinMax_SF", //
- "Scale factor for min/max voltages.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_A_MAX_S_F(new PointImpl(//
- "S121_V_A_MAX_S_F", //
- "VAMax_SF", //
- "Scale factor for apparent power.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_AR_MAX_S_F(new PointImpl(//
- "S121_V_AR_MAX_S_F", //
- "VArMax_SF", //
- "Scale factor for reactive power.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W_GRA_S_F(new PointImpl(//
- "S121_W_GRA_S_F", //
- "WGra_SF", //
- "Scale factor for default ramp rate.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- P_F_MIN_S_F(new PointImpl(//
- "S121_P_F_MIN_S_F", //
- "PFMin_SF", //
- "Scale factor for minimum power factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- MAX_RMP_RTE_S_F(new PointImpl(//
- "S121_MAX_RMP_RTE_S_F", //
- "MaxRmpRte_SF", //
- "Scale factor for maximum ramp percentage.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- E_C_P_NOM_HZ_S_F(new PointImpl(//
- "S121_E_C_P_NOM_HZ_S_F", //
- "ECPNomHz_SF", //
- "Scale factor for nominal frequency.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S121(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S121_ConnPh.values())), //
+ W_MAX_S_F(new ScaleFactorPoint("S121_W_MAX_S_F", "WMax_SF", //
+ "Scale factor for real power.")), //
+ V_REF_S_F(new ScaleFactorPoint("S121_V_REF_S_F", "VRef_SF", //
+ "Scale factor for voltage at the PCC.")), //
+ V_REF_OFS_S_F(new ScaleFactorPoint("S121_V_REF_OFS_S_F", "VRefOfs_SF", //
+ "Scale factor for offset voltage.")), //
+ V_MIN_MAX_S_F(new ScaleFactorPoint("S121_V_MIN_MAX_S_F", "VMinMax_SF", //
+ "Scale factor for min/max voltages.")), //
+ V_A_MAX_S_F(new ScaleFactorPoint("S121_V_A_MAX_S_F", "VAMax_SF", //
+ "Scale factor for apparent power.")), //
+ V_AR_MAX_S_F(new ScaleFactorPoint("S121_V_AR_MAX_S_F", "VArMax_SF", //
+ "Scale factor for reactive power.")), //
+ W_GRA_S_F(new ScaleFactorPoint("S121_W_GRA_S_F", "WGra_SF", //
+ "Scale factor for default ramp rate.")), //
+ P_F_MIN_S_F(new ScaleFactorPoint("S121_P_F_MIN_S_F", "PFMin_SF", //
+ "Scale factor for minimum power factor.")), //
+ MAX_RMP_RTE_S_F(new ScaleFactorPoint("S121_MAX_RMP_RTE_S_F", "MaxRmpRte_SF", //
+ "Scale factor for maximum ramp percentage.")), //
+ E_C_P_NOM_HZ_S_F(new ScaleFactorPoint("S121_E_C_P_NOM_HZ_S_F", "ECPNomHz_SF", //
+ "Scale factor for nominal frequency."));
+
+ private final Point point;
+
+ private S121(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
public static enum S121_VArAct implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
SWITCH(1, "SWITCH"), //
- MAINTAIN(2, "MAINTAIN"); //
+ MAINTAIN(2, "MAINTAIN");
private final int value;
private final String name;
@@ -4654,7 +1727,7 @@ public OptionsEnum getUndefined() {
public static enum S121_ClcTotVA implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
VECTOR(1, "VECTOR"), //
- ARITHMETIC(2, "ARITHMETIC"); //
+ ARITHMETIC(2, "ARITHMETIC");
private final int value;
private final String name;
@@ -4684,7 +1757,7 @@ public static enum S121_ConnPh implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
A(1, "A"), //
B(2, "B"), //
- C(3, "C"); //
+ C(3, "C");
private final int value;
private final String name;
@@ -4711,721 +1784,285 @@ public OptionsEnum getUndefined() {
}
public static enum S122 implements SunSpecPoint {
- P_V_CONN(new PointImpl(//
- "S122_P_V_CONN", //
- "PVConn", //
+ P_V_CONN(new BitFieldPoint("S122_P_V_CONN", "PVConn", //
"PV inverter present/available status. Enumerated value.", //
- "", //
- PointType.BITFIELD16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S122_PVConn.values())), //
- STOR_CONN(new PointImpl(//
- "S122_STOR_CONN", //
- "StorConn", //
+ BitFieldPoint.Type.BITFIELD16, true /* mandatory? */, AccessMode.READ_ONLY, S122_PVConn.values())), //
+ STOR_CONN(new BitFieldPoint("S122_STOR_CONN", "StorConn", //
"Storage inverter present/available status. Enumerated value.", //
- "", //
- PointType.BITFIELD16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S122_StorConn.values())), //
- E_C_P_CONN(new PointImpl(//
- "S122_E_C_P_CONN", //
- "ECPConn", //
+ BitFieldPoint.Type.BITFIELD16, true /* mandatory? */, AccessMode.READ_ONLY, S122_StorConn.values())), //
+ E_C_P_CONN(new BitFieldPoint("S122_E_C_P_CONN", "ECPConn", //
"ECP connection status: disconnected=0 connected=1.", //
- "", //
- PointType.BITFIELD16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S122_ECPConn.values())), //
- ACT_WH(new PointImpl(//
- "S122_ACT_WH", //
- "ActWh", //
+ BitFieldPoint.Type.BITFIELD16, true /* mandatory? */, AccessMode.READ_ONLY, S122_ECPConn.values())), //
+ ACT_WH(new ValuePoint("S122_ACT_WH", "ActWh", //
"AC lifetime active (real) energy output.", //
- "", //
- PointType.ACC64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- null, //
- new OptionsEnum[0])), //
- ACT_V_AH(new PointImpl(//
- "S122_ACT_V_AH", //
- "ActVAh", //
+ ValuePoint.Type.ACC64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS)), //
+ ACT_V_AH(new ValuePoint("S122_ACT_V_AH", "ActVAh", //
"AC lifetime apparent energy output.", //
- "", //
- PointType.ACC64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- null, //
- new OptionsEnum[0])), //
- ACT_V_ARH_Q1(new PointImpl(//
- "S122_ACT_V_ARH_Q1", //
- "ActVArhQ1", //
+ ValuePoint.Type.ACC64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS)), //
+ ACT_V_ARH_Q1(new ValuePoint("S122_ACT_V_ARH_Q1", "ActVArhQ1", //
"AC lifetime reactive energy output in quadrant 1.", //
- "", //
- PointType.ACC64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- null, //
- new OptionsEnum[0])), //
- ACT_V_ARH_Q2(new PointImpl(//
- "S122_ACT_V_ARH_Q2", //
- "ActVArhQ2", //
+ ValuePoint.Type.ACC64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS)), //
+ ACT_V_ARH_Q2(new ValuePoint("S122_ACT_V_ARH_Q2", "ActVArhQ2", //
"AC lifetime reactive energy output in quadrant 2.", //
- "", //
- PointType.ACC64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- null, //
- new OptionsEnum[0])), //
- ACT_V_ARH_Q3(new PointImpl(//
- "S122_ACT_V_ARH_Q3", //
- "ActVArhQ3", //
+ ValuePoint.Type.ACC64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS)), //
+ ACT_V_ARH_Q3(new ValuePoint("S122_ACT_V_ARH_Q3", "ActVArhQ3", //
"AC lifetime negative energy output in quadrant 3.", //
- "", //
- PointType.ACC64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- null, //
- new OptionsEnum[0])), //
- ACT_V_ARH_Q4(new PointImpl(//
- "S122_ACT_V_ARH_Q4", //
- "ActVArhQ4", //
+ ValuePoint.Type.ACC64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS)), //
+ ACT_V_ARH_Q4(new ValuePoint("S122_ACT_V_ARH_Q4", "ActVArhQ4", //
"AC lifetime reactive energy output in quadrant 4.", //
- "", //
- PointType.ACC64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- null, //
- new OptionsEnum[0])), //
- V_AR_AVAL(new PointImpl(//
- "S122_V_AR_AVAL", //
- "VArAval", //
+ ValuePoint.Type.ACC64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS)), //
+ V_AR_AVAL(new ScaledValuePoint("S122_V_AR_AVAL", "VArAval", //
"Amount of VARs available without impacting watts output.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VArAval_SF", //
- new OptionsEnum[0])), //
- V_AR_AVAL_S_F(new PointImpl(//
- "S122_V_AR_AVAL_S_F", //
- "VArAval_SF", //
- "Scale factor for available VARs.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W_AVAL(new PointImpl(//
- "S122_W_AVAL", //
- "WAval", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VArAval_SF")), //
+ V_AR_AVAL_S_F(new ScaleFactorPoint("S122_V_AR_AVAL_S_F", "VArAval_SF", //
+ "Scale factor for available VARs.")), //
+ W_AVAL(new ScaledValuePoint("S122_W_AVAL", "WAval", //
"Amount of Watts available.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "WAval_SF", //
- new OptionsEnum[0])), //
- W_AVAL_S_F(new PointImpl(//
- "S122_W_AVAL_S_F", //
- "WAval_SF", //
- "Scale factor for available Watts.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ST_SET_LIM_MSK(new PointImpl(//
- "S122_ST_SET_LIM_MSK", //
- "StSetLimMsk", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "WAval_SF")), //
+ W_AVAL_S_F(new ScaleFactorPoint("S122_W_AVAL_S_F", "WAval_SF", //
+ "Scale factor for available Watts.")), //
+ ST_SET_LIM_MSK(new BitFieldPoint("S122_ST_SET_LIM_MSK", "StSetLimMsk", //
"Bit Mask indicating setpoint limit(s) reached.", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S122_StSetLimMsk.values())), //
- ST_ACT_CTL(new PointImpl(//
- "S122_ST_ACT_CTL", //
- "StActCtl", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, S122_StSetLimMsk.values())), //
+ ST_ACT_CTL(new BitFieldPoint("S122_ST_ACT_CTL", "StActCtl", //
"Bit Mask indicating which inverter controls are currently active.", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S122_StActCtl.values())), //
- TM_SRC(new PointImpl(//
- "S122_TM_SRC", //
- "TmSrc", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, S122_StActCtl.values())), //
+ TM_SRC(new ValuePoint("S122_TM_SRC", "TmSrc", //
"Source of time synchronization.", //
- "", //
- PointType.STRING4, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TMS(new PointImpl(//
- "S122_TMS", //
- "Tms", //
+ ValuePoint.Type.STRING4, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ TMS(new ValuePoint("S122_TMS", "Tms", //
"Seconds since 01-01-2000 00:00 UTC", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- RT_ST(new PointImpl(//
- "S122_RT_ST", //
- "RtSt", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.SECONDS)), //
+ RT_ST(new BitFieldPoint("S122_RT_ST", "RtSt", //
"Bit Mask indicating active ride-through status.", //
- "", //
- PointType.BITFIELD16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S122_RtSt.values())), //
- RIS(new PointImpl(//
- "S122_RIS", //
- "Ris", //
+ BitFieldPoint.Type.BITFIELD16, false /* mandatory? */, AccessMode.READ_ONLY, S122_RtSt.values())), //
+ RIS(new ScaledValuePoint("S122_RIS", "Ris", //
"Isolation resistance.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "Ris_SF", //
- new OptionsEnum[0])), //
- RIS_S_F(new PointImpl(//
- "S122_RIS_S_F", //
- "Ris_SF", //
- "Scale factor for isolation resistance.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S122(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "Ris_SF")), //
+ RIS_S_F(new ScaleFactorPoint("S122_RIS_S_F", "Ris_SF", //
+ "Scale factor for isolation resistance."));
+
+ private final Point point;
+
+ private S122(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
- public static enum S122_PVConn implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- CONNECTED(0, "CONNECTED"), //
- AVAILABLE(1, "AVAILABLE"), //
- OPERATING(2, "OPERATING"), //
- TEST(3, "TEST"); //
+ public static enum S122_PVConn implements SunSpecBitPoint {
+ CONNECTED(new BitPoint(0, "S122_P_V_CONN_CONNECTED", "CONNECTED")), //
+ AVAILABLE(new BitPoint(1, "S122_P_V_CONN_AVAILABLE", "AVAILABLE")), //
+ OPERATING(new BitPoint(2, "S122_P_V_CONN_OPERATING", "OPERATING")), //
+ TEST(new BitPoint(3, "S122_P_V_CONN_TEST", "TEST"));
- private final int value;
- private final String name;
+ private final BitPoint point;
- private S122_PVConn(int value, String name) {
- this.value = value;
- this.name = name;
+ private S122_PVConn(BitPoint point) {
+ this.point = point;
}
@Override
- public int getValue() {
- return this.value;
- }
-
- @Override
- public String getName() {
- return this.name;
- }
-
- @Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
- public static enum S122_StorConn implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- CONNECTED(0, "CONNECTED"), //
- AVAILABLE(1, "AVAILABLE"), //
- OPERATING(2, "OPERATING"), //
- TEST(3, "TEST"); //
-
- private final int value;
- private final String name;
+ public static enum S122_StorConn implements SunSpecBitPoint {
+ CONNECTED(new BitPoint(0, "S122_STOR_CONN_CONNECTED", "CONNECTED")), //
+ AVAILABLE(new BitPoint(1, "S122_STOR_CONN_AVAILABLE", "AVAILABLE")), //
+ OPERATING(new BitPoint(2, "S122_STOR_CONN_OPERATING", "OPERATING")), //
+ TEST(new BitPoint(3, "S122_STOR_CONN_TEST", "TEST"));
- private S122_StorConn(int value, String name) {
- this.value = value;
- this.name = name;
- }
-
- @Override
- public int getValue() {
- return this.value;
- }
+ private final BitPoint point;
- @Override
- public String getName() {
- return this.name;
+ private S122_StorConn(BitPoint point) {
+ this.point = point;
}
@Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
- public static enum S122_ECPConn implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- CONNECTED(0, "CONNECTED"); //
+ public static enum S122_ECPConn implements SunSpecBitPoint {
+ CONNECTED(new BitPoint(0, "S122_E_C_P_CONN_CONNECTED", "CONNECTED"));
- private final int value;
- private final String name;
+ private final BitPoint point;
- private S122_ECPConn(int value, String name) {
- this.value = value;
- this.name = name;
+ private S122_ECPConn(BitPoint point) {
+ this.point = point;
}
@Override
- public int getValue() {
- return this.value;
- }
-
- @Override
- public String getName() {
- return this.name;
- }
-
- @Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
- public static enum S122_StSetLimMsk implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- W_MAX(0, "W_MAX"), //
- V_A_MAX(1, "V_A_MAX"), //
- V_AR_AVAL(2, "V_AR_AVAL"), //
- V_AR_MAX_Q1(3, "V_AR_MAX_Q1"), //
- V_AR_MAX_Q2(4, "V_AR_MAX_Q2"), //
- V_AR_MAX_Q3(5, "V_AR_MAX_Q3"), //
- V_AR_MAX_Q4(6, "V_AR_MAX_Q4"), //
- P_F_MIN_Q1(7, "P_F_MIN_Q1"), //
- P_F_MIN_Q2(8, "P_F_MIN_Q2"), //
- P_F_MIN_Q3(9, "P_F_MIN_Q3"), //
- P_F_MIN_Q4(10, "P_F_MIN_Q4"); //
-
- private final int value;
- private final String name;
+ public static enum S122_StSetLimMsk implements SunSpecBitPoint {
+ W_MAX(new BitPoint(0, "S122_ST_SET_LIM_MSK_W_MAX", "WMax")), //
+ V_A_MAX(new BitPoint(1, "S122_ST_SET_LIM_MSK_V_A_MAX", "VAMax")), //
+ V_AR_AVAL(new BitPoint(2, "S122_ST_SET_LIM_MSK_V_AR_AVAL", "VArAval")), //
+ V_AR_MAX_Q1(new BitPoint(3, "S122_ST_SET_LIM_MSK_V_AR_MAX_Q1", "VArMaxQ1")), //
+ V_AR_MAX_Q2(new BitPoint(4, "S122_ST_SET_LIM_MSK_V_AR_MAX_Q2", "VArMaxQ2")), //
+ V_AR_MAX_Q3(new BitPoint(5, "S122_ST_SET_LIM_MSK_V_AR_MAX_Q3", "VArMaxQ3")), //
+ V_AR_MAX_Q4(new BitPoint(6, "S122_ST_SET_LIM_MSK_V_AR_MAX_Q4", "VArMaxQ4")), //
+ P_F_MIN_Q1(new BitPoint(7, "S122_ST_SET_LIM_MSK_P_F_MIN_Q1", "PFMinQ1")), //
+ P_F_MIN_Q2(new BitPoint(8, "S122_ST_SET_LIM_MSK_P_F_MIN_Q2", "PFMinQ2")), //
+ P_F_MIN_Q3(new BitPoint(9, "S122_ST_SET_LIM_MSK_P_F_MIN_Q3", "PFMinQ3")), //
+ P_F_MIN_Q4(new BitPoint(10, "S122_ST_SET_LIM_MSK_P_F_MIN_Q4", "PFMinQ4"));
- private S122_StSetLimMsk(int value, String name) {
- this.value = value;
- this.name = name;
- }
+ private final BitPoint point;
- @Override
- public int getValue() {
- return this.value;
+ private S122_StSetLimMsk(BitPoint point) {
+ this.point = point;
}
@Override
- public String getName() {
- return this.name;
- }
-
- @Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
- public static enum S122_StActCtl implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- FIXED_W(0, "FIXED_W"), //
- FIXED_V_A_R(1, "FIXED_V_A_R"), //
- FIXED_P_F(2, "FIXED_P_F"), //
- VOLT_V_AR(3, "VOLT_V_AR"), //
- FREQ_WATT_PARAM(4, "FREQ_WATT_PARAM"), //
- FREQ_WATT_CURVE(5, "FREQ_WATT_CURVE"), //
- DYN_REACTIVE_CURRENT(6, "DYN_REACTIVE_CURRENT"), //
- LVRT(7, "LVRT"), //
- HVRT(8, "HVRT"), //
- WATT_P_F(9, "WATT_P_F"), //
- VOLT_WATT(10, "VOLT_WATT"), //
- SCHEDULED(12, "SCHEDULED"), //
- LFRT(13, "LFRT"), //
- HFRT(14, "HFRT"); //
+ public static enum S122_StActCtl implements SunSpecBitPoint {
+ FIXED_W(new BitPoint(0, "S122_ST_ACT_CTL_FIXED_W", "FixedW")), //
+ FIXED_V_A_R(new BitPoint(1, "S122_ST_ACT_CTL_FIXED_V_A_R", "FixedVAR")), //
+ FIXED_P_F(new BitPoint(2, "S122_ST_ACT_CTL_FIXED_P_F", "FixedPF")), //
+ VOLT_V_AR(new BitPoint(3, "S122_ST_ACT_CTL_VOLT_V_AR", "Volt-VAr")), //
+ FREQ_WATT_PARAM(new BitPoint(4, "S122_ST_ACT_CTL_FREQ_WATT_PARAM", "Freq-Watt-Param")), //
+ FREQ_WATT_CURVE(new BitPoint(5, "S122_ST_ACT_CTL_FREQ_WATT_CURVE", "Freq-Watt-Curve")), //
+ DYN_REACTIVE_CURRENT(new BitPoint(6, "S122_ST_ACT_CTL_DYN_REACTIVE_CURRENT", "Dyn-Reactive-Current")), //
+ LVRT(new BitPoint(7, "S122_ST_ACT_CTL_LVRT", "LVRT")), //
+ HVRT(new BitPoint(8, "S122_ST_ACT_CTL_HVRT", "HVRT")), //
+ WATT_P_F(new BitPoint(9, "S122_ST_ACT_CTL_WATT_P_F", "Watt-PF")), //
+ VOLT_WATT(new BitPoint(10, "S122_ST_ACT_CTL_VOLT_WATT", "Volt-Watt")), //
+ SCHEDULED(new BitPoint(12, "S122_ST_ACT_CTL_SCHEDULED", "Scheduled")), //
+ LFRT(new BitPoint(13, "S122_ST_ACT_CTL_LFRT", "LFRT")), //
+ HFRT(new BitPoint(14, "S122_ST_ACT_CTL_HFRT", "HFRT"));
- private final int value;
- private final String name;
+ private final BitPoint point;
- private S122_StActCtl(int value, String name) {
- this.value = value;
- this.name = name;
+ private S122_StActCtl(BitPoint point) {
+ this.point = point;
}
@Override
- public int getValue() {
- return this.value;
- }
-
- @Override
- public String getName() {
- return this.name;
- }
-
- @Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
- public static enum S122_RtSt implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- LVRT_ACTIVE(0, "LVRT_ACTIVE"), //
- HVRT_ACTIVE(1, "HVRT_ACTIVE"), //
- LFRT_ACTIVE(2, "LFRT_ACTIVE"), //
- HFRT_ACTIVE(3, "HFRT_ACTIVE"); //
+ public static enum S122_RtSt implements SunSpecBitPoint {
+ LVRT_ACTIVE(new BitPoint(0, "S122_RT_ST_LVRT_ACTIVE", "Lvrt Active")), //
+ HVRT_ACTIVE(new BitPoint(1, "S122_RT_ST_HVRT_ACTIVE", "Hvrt Active")), //
+ LFRT_ACTIVE(new BitPoint(2, "S122_RT_ST_LFRT_ACTIVE", "Lfrt Active")), //
+ HFRT_ACTIVE(new BitPoint(3, "S122_RT_ST_HFRT_ACTIVE", "Hfrt Active"));
- private final int value;
- private final String name;
+ private final BitPoint point;
- private S122_RtSt(int value, String name) {
- this.value = value;
- this.name = name;
+ private S122_RtSt(BitPoint point) {
+ this.point = point;
}
@Override
- public int getValue() {
- return this.value;
- }
-
- @Override
- public String getName() {
- return this.name;
- }
-
- @Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
public static enum S123 implements SunSpecPoint {
- CONN_WIN_TMS(new PointImpl(//
- "S123_CONN_WIN_TMS", //
- "Conn_WinTms", //
+ CONN_WIN_TMS(new ValuePoint("S123_CONN_WIN_TMS", "Conn_WinTms", //
"Time window for connect/disconnect.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- CONN_RVRT_TMS(new PointImpl(//
- "S123_CONN_RVRT_TMS", //
- "Conn_RvrtTms", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ CONN_RVRT_TMS(new ValuePoint("S123_CONN_RVRT_TMS", "Conn_RvrtTms", //
"Timeout period for connect/disconnect.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- CONN(new PointImpl(//
- "S123_CONN", //
- "Conn", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ CONN(new EnumPoint("S123_CONN", "Conn", //
"Enumerated valued. Connection control.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S123_Conn.values())), //
- W_MAX_LIM_PCT(new PointImpl(//
- "S123_W_MAX_LIM_PCT", //
- "WMaxLimPct", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_WRITE, S123_Conn.values())), //
+ W_MAX_LIM_PCT(new ScaledValuePoint("S123_W_MAX_LIM_PCT", "WMaxLimPct", //
"Set power output to specified level.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "WMaxLimPct_SF", //
- new OptionsEnum[0])), //
- W_MAX_LIM_PCT_WIN_TMS(new PointImpl(//
- "S123_W_MAX_LIM_PCT_WIN_TMS", //
- "WMaxLimPct_WinTms", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.PERCENT, "WMaxLimPct_SF")), //
+ W_MAX_LIM_PCT_WIN_TMS(new ValuePoint("S123_W_MAX_LIM_PCT_WIN_TMS", "WMaxLimPct_WinTms", //
"Time window for power limit change.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- W_MAX_LIM_PCT_RVRT_TMS(new PointImpl(//
- "S123_W_MAX_LIM_PCT_RVRT_TMS", //
- "WMaxLimPct_RvrtTms", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ W_MAX_LIM_PCT_RVRT_TMS(new ValuePoint("S123_W_MAX_LIM_PCT_RVRT_TMS", "WMaxLimPct_RvrtTms", //
"Timeout period for power limit.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- W_MAX_LIM_PCT_RMP_TMS(new PointImpl(//
- "S123_W_MAX_LIM_PCT_RMP_TMS", //
- "WMaxLimPct_RmpTms", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ W_MAX_LIM_PCT_RMP_TMS(new ValuePoint("S123_W_MAX_LIM_PCT_RMP_TMS", "WMaxLimPct_RmpTms", //
"Ramp time for moving from current setpoint to new setpoint.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- W_MAX_LIM_ENA(new PointImpl(//
- "S123_W_MAX_LIM_ENA", //
- "WMaxLim_Ena", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ W_MAX_LIM_ENA(new EnumPoint("S123_W_MAX_LIM_ENA", "WMaxLim_Ena", //
"Enumerated valued. Throttle enable/disable control.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S123_WMaxLim_Ena.values())), //
- OUT_P_F_SET(new PointImpl(//
- "S123_OUT_P_F_SET", //
- "OutPFSet", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_WRITE, S123_WMaxLim_Ena.values())), //
+ OUT_P_F_SET(new ScaledValuePoint("S123_OUT_P_F_SET", "OutPFSet", //
"Set power factor to specific value - cosine of angle.", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "OutPFSet_SF", //
- new OptionsEnum[0])), //
- OUT_P_F_SET_WIN_TMS(new PointImpl(//
- "S123_OUT_P_F_SET_WIN_TMS", //
- "OutPFSet_WinTms", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "OutPFSet_SF")), //
+ OUT_P_F_SET_WIN_TMS(new ValuePoint("S123_OUT_P_F_SET_WIN_TMS", "OutPFSet_WinTms", //
"Time window for power factor change.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- OUT_P_F_SET_RVRT_TMS(new PointImpl(//
- "S123_OUT_P_F_SET_RVRT_TMS", //
- "OutPFSet_RvrtTms", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ OUT_P_F_SET_RVRT_TMS(new ValuePoint("S123_OUT_P_F_SET_RVRT_TMS", "OutPFSet_RvrtTms", //
"Timeout period for power factor.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- OUT_P_F_SET_RMP_TMS(new PointImpl(//
- "S123_OUT_P_F_SET_RMP_TMS", //
- "OutPFSet_RmpTms", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ OUT_P_F_SET_RMP_TMS(new ValuePoint("S123_OUT_P_F_SET_RMP_TMS", "OutPFSet_RmpTms", //
"Ramp time for moving from current setpoint to new setpoint.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- OUT_P_F_SET_ENA(new PointImpl(//
- "S123_OUT_P_F_SET_ENA", //
- "OutPFSet_Ena", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ OUT_P_F_SET_ENA(new EnumPoint("S123_OUT_P_F_SET_ENA", "OutPFSet_Ena", //
"Enumerated valued. Fixed power factor enable/disable control.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S123_OutPFSet_Ena.values())), //
- V_AR_W_MAX_PCT(new PointImpl(//
- "S123_V_AR_W_MAX_PCT", //
- "VArWMaxPct", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_WRITE, S123_OutPFSet_Ena.values())), //
+ V_AR_W_MAX_PCT(new ScaledValuePoint("S123_V_AR_W_MAX_PCT", "VArWMaxPct", //
"Reactive power in percent of WMax.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "VArPct_SF", //
- new OptionsEnum[0])), //
- V_AR_MAX_PCT(new PointImpl(//
- "S123_V_AR_MAX_PCT", //
- "VArMaxPct", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.PERCENT, "VArPct_SF")), //
+ V_AR_MAX_PCT(new ScaledValuePoint("S123_V_AR_MAX_PCT", "VArMaxPct", //
"Reactive power in percent of VArMax.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "VArPct_SF", //
- new OptionsEnum[0])), //
- V_AR_AVAL_PCT(new PointImpl(//
- "S123_V_AR_AVAL_PCT", //
- "VArAvalPct", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.PERCENT, "VArPct_SF")), //
+ V_AR_AVAL_PCT(new ScaledValuePoint("S123_V_AR_AVAL_PCT", "VArAvalPct", //
"Reactive power in percent of VArAval.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "VArPct_SF", //
- new OptionsEnum[0])), //
- V_AR_PCT_WIN_TMS(new PointImpl(//
- "S123_V_AR_PCT_WIN_TMS", //
- "VArPct_WinTms", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.PERCENT, "VArPct_SF")), //
+ V_AR_PCT_WIN_TMS(new ValuePoint("S123_V_AR_PCT_WIN_TMS", "VArPct_WinTms", //
"Time window for VAR limit change.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- V_AR_PCT_RVRT_TMS(new PointImpl(//
- "S123_V_AR_PCT_RVRT_TMS", //
- "VArPct_RvrtTms", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ V_AR_PCT_RVRT_TMS(new ValuePoint("S123_V_AR_PCT_RVRT_TMS", "VArPct_RvrtTms", //
"Timeout period for VAR limit.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- V_AR_PCT_RMP_TMS(new PointImpl(//
- "S123_V_AR_PCT_RMP_TMS", //
- "VArPct_RmpTms", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ V_AR_PCT_RMP_TMS(new ValuePoint("S123_V_AR_PCT_RMP_TMS", "VArPct_RmpTms", //
"Ramp time for moving from current setpoint to new setpoint.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- V_AR_PCT_MOD(new PointImpl(//
- "S123_V_AR_PCT_MOD", //
- "VArPct_Mod", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ V_AR_PCT_MOD(new EnumPoint("S123_V_AR_PCT_MOD", "VArPct_Mod", //
"Enumerated value. VAR percent limit mode.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S123_VArPct_Mod.values())), //
- V_AR_PCT_ENA(new PointImpl(//
- "S123_V_AR_PCT_ENA", //
- "VArPct_Ena", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S123_VArPct_Mod.values())), //
+ V_AR_PCT_ENA(new EnumPoint("S123_V_AR_PCT_ENA", "VArPct_Ena", //
"Enumerated valued. Percent limit VAr enable/disable control.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S123_VArPct_Ena.values())), //
- W_MAX_LIM_PCT_S_F(new PointImpl(//
- "S123_W_MAX_LIM_PCT_S_F", //
- "WMaxLimPct_SF", //
- "Scale factor for power output percent.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- OUT_P_F_SET_S_F(new PointImpl(//
- "S123_OUT_P_F_SET_S_F", //
- "OutPFSet_SF", //
- "Scale factor for power factor.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_AR_PCT_S_F(new PointImpl(//
- "S123_V_AR_PCT_S_F", //
- "VArPct_SF", //
- "Scale factor for reactive power percent.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S123(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_WRITE, S123_VArPct_Ena.values())), //
+ W_MAX_LIM_PCT_S_F(new ScaleFactorPoint("S123_W_MAX_LIM_PCT_S_F", "WMaxLimPct_SF", //
+ "Scale factor for power output percent.")), //
+ OUT_P_F_SET_S_F(new ScaleFactorPoint("S123_OUT_P_F_SET_S_F", "OutPFSet_SF", //
+ "Scale factor for power factor.")), //
+ V_AR_PCT_S_F(new ScaleFactorPoint("S123_V_AR_PCT_S_F", "VArPct_SF", //
+ "Scale factor for reactive power percent."));
+
+ private final Point point;
+
+ private S123(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
public static enum S123_Conn implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISCONNECT(0, "DISCONNECT"), //
- CONNECT(1, "CONNECT"); //
+ CONNECT(1, "CONNECT");
private final int value;
private final String name;
@@ -5454,7 +2091,7 @@ public OptionsEnum getUndefined() {
public static enum S123_WMaxLim_Ena implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -5483,7 +2120,7 @@ public OptionsEnum getUndefined() {
public static enum S123_OutPFSet_Ena implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -5514,7 +2151,7 @@ public static enum S123_VArPct_Mod implements OptionsEnum {
NONE(0, "NONE"), //
W_MAX(1, "W_MAX"), //
V_AR_MAX(2, "V_AR_MAX"), //
- V_AR_AVAL(3, "V_AR_AVAL"); //
+ V_AR_AVAL(3, "V_AR_AVAL");
private final int value;
private final String name;
@@ -5543,7 +2180,7 @@ public OptionsEnum getUndefined() {
public static enum S123_VArPct_Ena implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -5570,309 +2207,95 @@ public OptionsEnum getUndefined() {
}
public static enum S124 implements SunSpecPoint {
- W_CHA_MAX(new PointImpl(//
- "S124_W_CHA_MAX", //
- "WChaMax", //
+ W_CHA_MAX(new ScaledValuePoint("S124_W_CHA_MAX", "WChaMax", //
"Setpoint for maximum charge.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.WATT, //
- "WChaMax_SF", //
- new OptionsEnum[0])), //
- W_CHA_GRA(new PointImpl(//
- "S124_W_CHA_GRA", //
- "WChaGra", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.WATT, "WChaMax_SF")), //
+ W_CHA_GRA(new ScaledValuePoint("S124_W_CHA_GRA", "WChaGra", //
"Setpoint for maximum charging rate. Default is MaxChaRte.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "WChaDisChaGra_SF", //
- new OptionsEnum[0])), //
- W_DIS_CHA_GRA(new PointImpl(//
- "S124_W_DIS_CHA_GRA", //
- "WDisChaGra", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.PERCENT, "WChaDisChaGra_SF")), //
+ W_DIS_CHA_GRA(new ScaledValuePoint("S124_W_DIS_CHA_GRA", "WDisChaGra", //
"Setpoint for maximum discharge rate. Default is MaxDisChaRte.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "WChaDisChaGra_SF", //
- new OptionsEnum[0])), //
- STOR_CTL_MOD(new PointImpl(//
- "S124_STOR_CTL_MOD", //
- "StorCtl_Mod", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.PERCENT, "WChaDisChaGra_SF")), //
+ STOR_CTL_MOD(new BitFieldPoint("S124_STOR_CTL_MOD", "StorCtl_Mod", //
"Activate hold/discharge/charge storage control mode. Bitfield value.", //
- "", //
- PointType.BITFIELD16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S124_StorCtl_Mod.values())), //
- V_A_CHA_MAX(new PointImpl(//
- "S124_V_A_CHA_MAX", //
- "VAChaMax", //
+ BitFieldPoint.Type.BITFIELD16, true /* mandatory? */, AccessMode.READ_WRITE, S124_StorCtl_Mod.values())), //
+ V_A_CHA_MAX(new ScaledValuePoint("S124_V_A_CHA_MAX", "VAChaMax", //
"Setpoint for maximum charging VA.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.VOLT_AMPERE, //
- "VAChaMax_SF", //
- new OptionsEnum[0])), //
- MIN_RSV_PCT(new PointImpl(//
- "S124_MIN_RSV_PCT", //
- "MinRsvPct", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.VOLT_AMPERE, "VAChaMax_SF")), //
+ MIN_RSV_PCT(new ScaledValuePoint("S124_MIN_RSV_PCT", "MinRsvPct", //
"Setpoint for minimum reserve for storage as a percentage of the nominal maximum storage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "MinRsvPct_SF", //
- new OptionsEnum[0])), //
- CHA_STATE(new PointImpl(//
- "S124_CHA_STATE", //
- "ChaState", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.PERCENT, "MinRsvPct_SF")), //
+ CHA_STATE(new ScaledValuePoint("S124_CHA_STATE", "ChaState", //
"Currently available energy as a percent of the capacity rating.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.PERCENT, //
- "ChaState_SF", //
- new OptionsEnum[0])), //
- STOR_AVAL(new PointImpl(//
- "S124_STOR_AVAL", //
- "StorAval", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.PERCENT, "ChaState_SF")), //
+ STOR_AVAL(new ScaledValuePoint("S124_STOR_AVAL", "StorAval", //
"State of charge (ChaState) minus storage reserve (MinRsvPct) times capacity rating (AhrRtg).", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE_HOURS, //
- "StorAval_SF", //
- new OptionsEnum[0])), //
- IN_BAT_V(new PointImpl(//
- "S124_IN_BAT_V", //
- "InBatV", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE_HOURS, "StorAval_SF")), //
+ IN_BAT_V(new ScaledValuePoint("S124_IN_BAT_V", "InBatV", //
"Internal battery voltage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "InBatV_SF", //
- new OptionsEnum[0])), //
- CHA_ST(new PointImpl(//
- "S124_CHA_ST", //
- "ChaSt", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "InBatV_SF")), //
+ CHA_ST(new EnumPoint("S124_CHA_ST", "ChaSt", //
"Charge status of storage device. Enumerated value.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S124_ChaSt.values())), //
- OUT_W_RTE(new PointImpl(//
- "S124_OUT_W_RTE", //
- "OutWRte", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, S124_ChaSt.values())), //
+ OUT_W_RTE(new ScaledValuePoint("S124_OUT_W_RTE", "OutWRte", //
"Percent of max discharge rate.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "InOutWRte_SF", //
- new OptionsEnum[0])), //
- IN_W_RTE(new PointImpl(//
- "S124_IN_W_RTE", //
- "InWRte", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.PERCENT, "InOutWRte_SF")), //
+ IN_W_RTE(new ScaledValuePoint("S124_IN_W_RTE", "InWRte", //
"Percent of max charging rate.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "InOutWRte_SF", //
- new OptionsEnum[0])), //
- IN_OUT_W_RTE_WIN_TMS(new PointImpl(//
- "S124_IN_OUT_W_RTE_WIN_TMS", //
- "InOutWRte_WinTms", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.PERCENT, "InOutWRte_SF")), //
+ IN_OUT_W_RTE_WIN_TMS(new ValuePoint("S124_IN_OUT_W_RTE_WIN_TMS", "InOutWRte_WinTms", //
"Time window for charge/discharge rate change.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- IN_OUT_W_RTE_RVRT_TMS(new PointImpl(//
- "S124_IN_OUT_W_RTE_RVRT_TMS", //
- "InOutWRte_RvrtTms", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ IN_OUT_W_RTE_RVRT_TMS(new ValuePoint("S124_IN_OUT_W_RTE_RVRT_TMS", "InOutWRte_RvrtTms", //
"Timeout period for charge/discharge rate.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- IN_OUT_W_RTE_RMP_TMS(new PointImpl(//
- "S124_IN_OUT_W_RTE_RMP_TMS", //
- "InOutWRte_RmpTms", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ IN_OUT_W_RTE_RMP_TMS(new ValuePoint("S124_IN_OUT_W_RTE_RMP_TMS", "InOutWRte_RmpTms", //
"Ramp time for moving from current setpoint to new setpoint.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- CHA_GRI_SET(new PointImpl(//
- "S124_CHA_GRI_SET", //
- "", //
- "", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S124_ChaGriSet.values())), //
- W_CHA_MAX_S_F(new PointImpl(//
- "S124_W_CHA_MAX_S_F", //
- "WChaMax_SF", //
- "Scale factor for maximum charge.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W_CHA_DIS_CHA_GRA_S_F(new PointImpl(//
- "S124_W_CHA_DIS_CHA_GRA_S_F", //
- "WChaDisChaGra_SF", //
- "Scale factor for maximum charge and discharge rate.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_A_CHA_MAX_S_F(new PointImpl(//
- "S124_V_A_CHA_MAX_S_F", //
- "VAChaMax_SF", //
- "Scale factor for maximum charging VA.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- MIN_RSV_PCT_S_F(new PointImpl(//
- "S124_MIN_RSV_PCT_S_F", //
- "MinRsvPct_SF", //
- "Scale factor for minimum reserve percentage.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- CHA_STATE_S_F(new PointImpl(//
- "S124_CHA_STATE_S_F", //
- "ChaState_SF", //
- "Scale factor for available energy percent.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- STOR_AVAL_S_F(new PointImpl(//
- "S124_STOR_AVAL_S_F", //
- "StorAval_SF", //
- "Scale factor for state of charge.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- IN_BAT_V_S_F(new PointImpl(//
- "S124_IN_BAT_V_S_F", //
- "InBatV_SF", //
- "Scale factor for battery voltage.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- IN_OUT_W_RTE_S_F(new PointImpl(//
- "S124_IN_OUT_W_RTE_S_F", //
- "InOutWRte_SF", //
- "Scale factor for percent charge/discharge rate.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S124(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
- }
- }
-
- public static enum S124_StorCtl_Mod implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- CHARGE(0, "CHARGE"), //
- DI_S_C_H_A_R_G_E(1, "DI_S_C_H_A_R_G_E"); //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ CHA_GRI_SET(new EnumPoint("S124_CHA_GRI_SET", "", "", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S124_ChaGriSet.values())), //
+ W_CHA_MAX_S_F(new ScaleFactorPoint("S124_W_CHA_MAX_S_F", "WChaMax_SF", //
+ "Scale factor for maximum charge.")), //
+ W_CHA_DIS_CHA_GRA_S_F(new ScaleFactorPoint("S124_W_CHA_DIS_CHA_GRA_S_F", "WChaDisChaGra_SF", //
+ "Scale factor for maximum charge and discharge rate.")), //
+ V_A_CHA_MAX_S_F(new ScaleFactorPoint("S124_V_A_CHA_MAX_S_F", "VAChaMax_SF", //
+ "Scale factor for maximum charging VA.")), //
+ MIN_RSV_PCT_S_F(new ScaleFactorPoint("S124_MIN_RSV_PCT_S_F", "MinRsvPct_SF", //
+ "Scale factor for minimum reserve percentage.")), //
+ CHA_STATE_S_F(new ScaleFactorPoint("S124_CHA_STATE_S_F", "ChaState_SF", //
+ "Scale factor for available energy percent.")), //
+ STOR_AVAL_S_F(new ScaleFactorPoint("S124_STOR_AVAL_S_F", "StorAval_SF", //
+ "Scale factor for state of charge.")), //
+ IN_BAT_V_S_F(new ScaleFactorPoint("S124_IN_BAT_V_S_F", "InBatV_SF", //
+ "Scale factor for battery voltage.")), //
+ IN_OUT_W_RTE_S_F(new ScaleFactorPoint("S124_IN_OUT_W_RTE_S_F", "InOutWRte_SF", //
+ "Scale factor for percent charge/discharge rate."));
- private final int value;
- private final String name;
+ private final Point point;
- private S124_StorCtl_Mod(int value, String name) {
- this.value = value;
- this.name = name;
+ private S124(Point point) {
+ this.point = point;
}
@Override
- public int getValue() {
- return this.value;
+ public Point get() {
+ return this.point;
}
+ }
- @Override
- public String getName() {
- return this.name;
+ public static enum S124_StorCtl_Mod implements SunSpecBitPoint {
+ CHARGE(new BitPoint(0, "S124_STOR_CTL_MOD_CHARGE", "CHARGE")), //
+ DISCHARGE(new BitPoint(1, "S124_STOR_CTL_MOD_DISCHARGE", "DISCHARGE"));
+
+ private final BitPoint point;
+
+ private S124_StorCtl_Mod(BitPoint point) {
+ this.point = point;
}
@Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
@@ -5884,7 +2307,7 @@ public static enum S124_ChaSt implements OptionsEnum {
CHARGING(4, "CHARGING"), //
FULL(5, "FULL"), //
HOLDING(6, "HOLDING"), //
- TESTING(7, "TESTING"); //
+ TESTING(7, "TESTING");
private final int value;
private final String name;
@@ -5913,7 +2336,7 @@ public OptionsEnum getUndefined() {
public static enum S124_ChaGriSet implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
PV(0, "PV"), //
- GRID(1, "GRID"); //
+ GRID(1, "GRID");
private final int value;
private final String name;
@@ -5940,132 +2363,53 @@ public OptionsEnum getUndefined() {
}
public static enum S125 implements SunSpecPoint {
- MOD_ENA(new PointImpl(//
- "S125_MOD_ENA", //
- "ModEna", //
+ MOD_ENA(new BitFieldPoint("S125_MOD_ENA", "ModEna", //
"Is price-based charge/discharge mode active?", //
- "", //
- PointType.BITFIELD16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S125_ModEna.values())), //
- SIG_TYPE(new PointImpl(//
- "S125_SIG_TYPE", //
- "SigType", //
+ BitFieldPoint.Type.BITFIELD16, true /* mandatory? */, AccessMode.READ_WRITE, S125_ModEna.values())), //
+ SIG_TYPE(new EnumPoint("S125_SIG_TYPE", "SigType", //
"Meaning of the pricing signal. When a Price schedule is used, type must match the schedule range variable description.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S125_SigType.values())), //
- SIG(new PointImpl(//
- "S125_SIG", //
- "Sig", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S125_SigType.values())), //
+ SIG(new ScaledValuePoint("S125_SIG", "Sig", //
"Utility/ESP specific pricing signal. Content depends on pricing signal type. When H/M/L type is specified. Low=0; Med=1; High=2.", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "Sig_SF", //
- new OptionsEnum[0])), //
- WIN_TMS(new PointImpl(//
- "S125_WIN_TMS", //
- "WinTms", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "Sig_SF")), //
+ WIN_TMS(new ValuePoint("S125_WIN_TMS", "WinTms", //
"Time window for charge/discharge pricing change.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- RVT_TMS(new PointImpl(//
- "S125_RVT_TMS", //
- "RvtTms", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ RVT_TMS(new ValuePoint("S125_RVT_TMS", "RvtTms", //
"Timeout period for charge/discharge pricing change.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- RMP_TMS(new PointImpl(//
- "S125_RMP_TMS", //
- "RmpTms", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ RMP_TMS(new ValuePoint("S125_RMP_TMS", "RmpTms", //
"Ramp time for moving from current charge or discharge level to new level.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- SIG_S_F(new PointImpl(//
- "S125_SIG_S_F", //
- "Sig_SF", //
- "Pricing signal scale factor.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PAD(new PointImpl(//
- "S125_PAD", //
- "", //
- "", //
- "", //
- PointType.PAD, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S125(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
- }
- }
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ SIG_S_F(new ScaleFactorPoint("S125_SIG_S_F", "Sig_SF", //
+ "Pricing signal scale factor.")), //
+ PAD(new ValuePoint("S125_PAD", "", "", //
+ ValuePoint.Type.PAD, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE));
- public static enum S125_ModEna implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- ENABLE(0, "ENABLE"); //
-
- private final int value;
- private final String name;
+ private final Point point;
- private S125_ModEna(int value, String name) {
- this.value = value;
- this.name = name;
+ private S125(Point point) {
+ this.point = point;
}
@Override
- public int getValue() {
- return this.value;
+ public Point get() {
+ return this.point;
}
+ }
- @Override
- public String getName() {
- return this.name;
+ public static enum S125_ModEna implements SunSpecBitPoint {
+ ENABLE(new BitPoint(0, "S125_MOD_ENA_ENABLE", "ENABLE"));
+
+ private final BitPoint point;
+
+ private S125_ModEna(BitPoint point) {
+ this.point = point;
}
@Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
@@ -6075,7 +2419,7 @@ public static enum S125_SigType implements OptionsEnum {
ABSOLUTE(1, "ABSOLUTE"), //
RELATIVE(2, "RELATIVE"), //
MULTIPLIER(3, "MULTIPLIER"), //
- LEVEL(4, "LEVEL"); //
+ LEVEL(4, "LEVEL");
private final int value;
private final String name;
@@ -6102,357 +2446,132 @@ public OptionsEnum getUndefined() {
}
public static enum S127 implements SunSpecPoint {
- W_GRA(new PointImpl(//
- "S127_W_GRA", //
- "WGra", //
+ W_GRA(new ScaledValuePoint("S127_W_GRA", "WGra", //
"The slope of the reduction in the maximum allowed watts output as a function of frequency.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "WGra_SF", //
- new OptionsEnum[0])), //
- HZ_STR(new PointImpl(//
- "S127_HZ_STR", //
- "HzStr", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.PERCENT, "WGra_SF")), //
+ HZ_STR(new ScaledValuePoint("S127_HZ_STR", "HzStr", //
"The frequency deviation from nominal frequency (ECPNomHz) at which a snapshot of the instantaneous power output is taken to act as the CAPPED power level (PM) and above which reduction in power output occurs.", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.HERTZ, //
- "HzStrStop_SF", //
- new OptionsEnum[0])), //
- HZ_STOP(new PointImpl(//
- "S127_HZ_STOP", //
- "HzStop", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.HERTZ, "HzStrStop_SF")), //
+ HZ_STOP(new ScaledValuePoint("S127_HZ_STOP", "HzStop", //
"The frequency deviation from nominal frequency (ECPNomHz) at which curtailed power output may return to normal and the cap on the power level value is removed.", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.HERTZ, //
- "HzStrStop_SF", //
- new OptionsEnum[0])), //
- HYS_ENA(new PointImpl(//
- "S127_HYS_ENA", //
- "HysEna", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.HERTZ, "HzStrStop_SF")), //
+ HYS_ENA(new BitFieldPoint("S127_HYS_ENA", "HysEna", //
"Enable hysteresis", //
- "", //
- PointType.BITFIELD16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S127_HysEna.values())), //
- MOD_ENA(new PointImpl(//
- "S127_MOD_ENA", //
- "ModEna", //
+ BitFieldPoint.Type.BITFIELD16, true /* mandatory? */, AccessMode.READ_WRITE, S127_HysEna.values())), //
+ MOD_ENA(new BitFieldPoint("S127_MOD_ENA", "ModEna", //
"Is Parameterized Frequency-Watt control active.", //
- "", //
- PointType.BITFIELD16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S127_ModEna.values())), //
- HZ_STOP_W_GRA(new PointImpl(//
- "S127_HZ_STOP_W_GRA", //
- "HzStopWGra", //
+ BitFieldPoint.Type.BITFIELD16, true /* mandatory? */, AccessMode.READ_WRITE, S127_ModEna.values())), //
+ HZ_STOP_W_GRA(new ScaledValuePoint("S127_HZ_STOP_W_GRA", "HzStopWGra", //
"The maximum time-based rate of change at which power output returns to normal after having been capped by an over frequency event.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "RmpIncDec_SF", //
- new OptionsEnum[0])), //
- W_GRA_S_F(new PointImpl(//
- "S127_W_GRA_S_F", //
- "WGra_SF", //
- "Scale factor for output gradient.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- HZ_STR_STOP_S_F(new PointImpl(//
- "S127_HZ_STR_STOP_S_F", //
- "HzStrStop_SF", //
- "Scale factor for frequency deviations.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- RMP_INC_DEC_S_F(new PointImpl(//
- "S127_RMP_INC_DEC_S_F", //
- "RmpIncDec_SF", //
- "Scale factor for increment and decrement ramps.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PAD(new PointImpl(//
- "S127_PAD", //
- "", //
- "", //
- "", //
- PointType.PAD, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S127(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
- }
- }
-
- public static enum S127_HysEna implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- ENABLED(0, "ENABLED"); //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.PERCENT, "RmpIncDec_SF")), //
+ W_GRA_S_F(new ScaleFactorPoint("S127_W_GRA_S_F", "WGra_SF", //
+ "Scale factor for output gradient.")), //
+ HZ_STR_STOP_S_F(new ScaleFactorPoint("S127_HZ_STR_STOP_S_F", "HzStrStop_SF", //
+ "Scale factor for frequency deviations.")), //
+ RMP_INC_DEC_S_F(new ScaleFactorPoint("S127_RMP_INC_DEC_S_F", "RmpIncDec_SF", //
+ "Scale factor for increment and decrement ramps.")), //
+ PAD(new ValuePoint("S127_PAD", "", "", //
+ ValuePoint.Type.PAD, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE));
- private final int value;
- private final String name;
+ private final Point point;
- private S127_HysEna(int value, String name) {
- this.value = value;
- this.name = name;
+ private S127(Point point) {
+ this.point = point;
}
@Override
- public int getValue() {
- return this.value;
- }
-
- @Override
- public String getName() {
- return this.name;
- }
-
- @Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public Point get() {
+ return this.point;
}
}
- public static enum S127_ModEna implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- ENABLED(0, "ENABLED"); //
+ public static enum S127_HysEna implements SunSpecBitPoint {
+ ENABLED(new BitPoint(0, "S127_HYS_ENA_ENABLED", "ENABLED"));
- private final int value;
- private final String name;
+ private final BitPoint point;
- private S127_ModEna(int value, String name) {
- this.value = value;
- this.name = name;
+ private S127_HysEna(BitPoint point) {
+ this.point = point;
}
@Override
- public int getValue() {
- return this.value;
+ public BitPoint get() {
+ return this.point;
}
+ }
- @Override
- public String getName() {
- return this.name;
+ public static enum S127_ModEna implements SunSpecBitPoint {
+ ENABLED(new BitPoint(0, "S127_MOD_ENA_ENABLED", "ENABLED"));
+
+ private final BitPoint point;
+
+ private S127_ModEna(BitPoint point) {
+ this.point = point;
}
@Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
public static enum S128 implements SunSpecPoint {
- AR_GRA_MOD(new PointImpl(//
- "S128_AR_GRA_MOD", //
- "ArGraMod", //
+ AR_GRA_MOD(new EnumPoint("S128_AR_GRA_MOD", "ArGraMod", //
"Indicates if gradients trend toward zero at the edges of the deadband or trend toward zero at the center of the deadband.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S128_ArGraMod.values())), //
- AR_GRA_SAG(new PointImpl(//
- "S128_AR_GRA_SAG", //
- "ArGraSag", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_WRITE, S128_ArGraMod.values())), //
+ AR_GRA_SAG(new ScaledValuePoint("S128_AR_GRA_SAG", "ArGraSag", //
"The gradient used to increase capacitive dynamic current. A value of 0 indicates no additional reactive current support.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "ArGra_SF", //
- new OptionsEnum[0])), //
- AR_GRA_SWELL(new PointImpl(//
- "S128_AR_GRA_SWELL", //
- "ArGraSwell", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "ArGra_SF")), //
+ AR_GRA_SWELL(new ScaledValuePoint("S128_AR_GRA_SWELL", "ArGraSwell", //
"The gradient used to increase inductive dynamic current. A value of 0 indicates no additional reactive current support.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "ArGra_SF", //
- new OptionsEnum[0])), //
- MOD_ENA(new PointImpl(//
- "S128_MOD_ENA", //
- "ModEna", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "ArGra_SF")), //
+ MOD_ENA(new BitFieldPoint("S128_MOD_ENA", "ModEna", //
"Activate dynamic reactive current model", //
- "", //
- PointType.BITFIELD16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S128_ModEna.values())), //
- FIL_TMS(new PointImpl(//
- "S128_FIL_TMS", //
- "FilTms", //
+ BitFieldPoint.Type.BITFIELD16, true /* mandatory? */, AccessMode.READ_WRITE, S128_ModEna.values())), //
+ FIL_TMS(new ValuePoint("S128_FIL_TMS", "FilTms", //
"The time window used to calculate the moving average voltage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- DB_V_MIN(new PointImpl(//
- "S128_DB_V_MIN", //
- "DbVMin", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ DB_V_MIN(new ScaledValuePoint("S128_DB_V_MIN", "DbVMin", //
"The lower delta voltage limit for which negative voltage deviations less than this value no dynamic vars are produced.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "VRefPct_SF", //
- new OptionsEnum[0])), //
- DB_V_MAX(new PointImpl(//
- "S128_DB_V_MAX", //
- "DbVMax", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.PERCENT, "VRefPct_SF")), //
+ DB_V_MAX(new ScaledValuePoint("S128_DB_V_MAX", "DbVMax", //
"The upper delta voltage limit for which positive voltage deviations less than this value no dynamic current produced.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "VRefPct_SF", //
- new OptionsEnum[0])), //
- BLK_ZN_V(new PointImpl(//
- "S128_BLK_ZN_V", //
- "BlkZnV", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.PERCENT, "VRefPct_SF")), //
+ BLK_ZN_V(new ScaledValuePoint("S128_BLK_ZN_V", "BlkZnV", //
"Block zone voltage which defines a lower voltage boundary below which no dynamic current is produced.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "VRefPct_SF", //
- new OptionsEnum[0])), //
- HYS_BLK_ZN_V(new PointImpl(//
- "S128_HYS_BLK_ZN_V", //
- "HysBlkZnV", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.PERCENT, "VRefPct_SF")), //
+ HYS_BLK_ZN_V(new ScaledValuePoint("S128_HYS_BLK_ZN_V", "HysBlkZnV", //
"Hysteresis voltage used with BlkZnV.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "VRefPct_SF", //
- new OptionsEnum[0])), //
- BLK_ZN_TMMS(new PointImpl(//
- "S128_BLK_ZN_TMMS", //
- "BlkZnTmms", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.PERCENT, "VRefPct_SF")), //
+ BLK_ZN_TMMS(new ValuePoint("S128_BLK_ZN_TMMS", "BlkZnTmms", //
"Block zone time the time before which reactive current support remains active regardless of how low the voltage drops.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.MILLISECONDS, //
- null, //
- new OptionsEnum[0])), //
- HOLD_TMMS(new PointImpl(//
- "S128_HOLD_TMMS", //
- "HoldTmms", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.MILLISECONDS)), //
+ HOLD_TMMS(new ValuePoint("S128_HOLD_TMMS", "HoldTmms", //
"Hold time during which reactive current support continues after the average voltage has entered the dead zone.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.MILLISECONDS, //
- null, //
- new OptionsEnum[0])), //
- AR_GRA_S_F(new PointImpl(//
- "S128_AR_GRA_S_F", //
- "ArGra_SF", //
- "Scale factor for the gradients.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_REF_PCT_S_F(new PointImpl(//
- "S128_V_REF_PCT_S_F", //
- "VRefPct_SF", //
- "Scale factor for the voltage zone and limit settings.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PAD(new PointImpl(//
- "S128_PAD", //
- "", //
- "", //
- "", //
- PointType.PAD, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S128(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.MILLISECONDS)), //
+ AR_GRA_S_F(new ScaleFactorPoint("S128_AR_GRA_S_F", "ArGra_SF", //
+ "Scale factor for the gradients.")), //
+ V_REF_PCT_S_F(new ScaleFactorPoint("S128_V_REF_PCT_S_F", "VRefPct_SF", //
+ "Scale factor for the voltage zone and limit settings.")), //
+ PAD(new ValuePoint("S128_PAD", "", "", //
+ ValuePoint.Type.PAD, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE));
+
+ private final Point point;
+
+ private S128(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
public static enum S128_ArGraMod implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
EDGE(0, "EDGE"), //
- CENTER(1, "CENTER"); //
+ CENTER(1, "CENTER");
private final int value;
private final String name;
@@ -6478,4688 +2597,1288 @@ public OptionsEnum getUndefined() {
}
}
- public static enum S128_ModEna implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- ENABLED(0, "ENABLED"); //
-
- private final int value;
- private final String name;
-
- private S128_ModEna(int value, String name) {
- this.value = value;
- this.name = name;
- }
+ public static enum S128_ModEna implements SunSpecBitPoint {
+ ENABLED(new BitPoint(0, "S128_MOD_ENA_ENABLED", "ENABLED"));
- @Override
- public int getValue() {
- return this.value;
- }
+ private final BitPoint point;
- @Override
- public String getName() {
- return this.name;
+ private S128_ModEna(BitPoint point) {
+ this.point = point;
}
@Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
public static enum S145 implements SunSpecPoint {
- NOM_RMP_UP_RTE(new PointImpl(//
- "S145_NOM_RMP_UP_RTE", //
- "Ramp Up Rate", //
+ NOM_RMP_UP_RTE(new ScaledValuePoint("S145_NOM_RMP_UP_RTE", "Ramp Up Rate", //
"Ramp up rate as a percentage of max current.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "Rmp_SF", //
- new OptionsEnum[0])), //
- NOM_RMP_DN_RTE(new PointImpl(//
- "S145_NOM_RMP_DN_RTE", //
- "NomRmpDnRte", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "Rmp_SF")), //
+ NOM_RMP_DN_RTE(new ScaledValuePoint("S145_NOM_RMP_DN_RTE", "NomRmpDnRte", //
"Ramp down rate as a percentage of max current.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "Rmp_SF", //
- new OptionsEnum[0])), //
- EMG_RMP_UP_RTE(new PointImpl(//
- "S145_EMG_RMP_UP_RTE", //
- "Emergency Ramp Up Rate", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "Rmp_SF")), //
+ EMG_RMP_UP_RTE(new ScaledValuePoint("S145_EMG_RMP_UP_RTE", "Emergency Ramp Up Rate", //
"Emergency ramp up rate as a percentage of max current.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "Rmp_SF", //
- new OptionsEnum[0])), //
- EMG_RMP_DN_RTE(new PointImpl(//
- "S145_EMG_RMP_DN_RTE", //
- "Emergency Ramp Down Rate", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "Rmp_SF")), //
+ EMG_RMP_DN_RTE(new ScaledValuePoint("S145_EMG_RMP_DN_RTE", "Emergency Ramp Down Rate", //
"Emergency ramp down rate as a percentage of max current.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "Rmp_SF", //
- new OptionsEnum[0])), //
- CONN_RMP_UP_RTE(new PointImpl(//
- "S145_CONN_RMP_UP_RTE", //
- "Connect Ramp Up Rate", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "Rmp_SF")), //
+ CONN_RMP_UP_RTE(new ScaledValuePoint("S145_CONN_RMP_UP_RTE", "Connect Ramp Up Rate", //
"Connect ramp up rate as a percentage of max current.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "Rmp_SF", //
- new OptionsEnum[0])), //
- CONN_RMP_DN_RTE(new PointImpl(//
- "S145_CONN_RMP_DN_RTE", //
- "Connect Ramp Down Rate", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "Rmp_SF")), //
+ CONN_RMP_DN_RTE(new ScaledValuePoint("S145_CONN_RMP_DN_RTE", "Connect Ramp Down Rate", //
"Connect ramp down rate as a percentage of max current.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "Rmp_SF", //
- new OptionsEnum[0])), //
- A_GRA(new PointImpl(//
- "S145_A_GRA", //
- "Default Ramp Rate", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "Rmp_SF")), //
+ A_GRA(new ScaledValuePoint("S145_A_GRA", "Default Ramp Rate", //
"Ramp rate specified in percent of max current.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "Rmp_SF", //
- new OptionsEnum[0])), //
- RMP_S_F(new PointImpl(//
- "S145_RMP_S_F", //
- "Ramp Rate Scale Factor", //
- "Ramp Rate Scale Factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S145(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "Rmp_SF")), //
+ RMP_S_F(new ScaleFactorPoint("S145_RMP_S_F", "Ramp Rate Scale Factor", //
+ "Ramp Rate Scale Factor"));
+
+ private final Point point;
+
+ private S145(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
public static enum S201 implements SunSpecPoint {
- A(new PointImpl(//
- "S201_A", //
- "Amps", //
+ A(new ScaledValuePoint("S201_A", "Amps", //
"Total AC Current", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_A(new PointImpl(//
- "S201_APH_A", //
- "Amps PhaseA", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_A(new ScaledValuePoint("S201_APH_A", "Amps PhaseA", //
"Phase A Current", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_B(new PointImpl(//
- "S201_APH_B", //
- "Amps PhaseB", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_B(new ScaledValuePoint("S201_APH_B", "Amps PhaseB", //
"Phase B Current", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_C(new PointImpl(//
- "S201_APH_C", //
- "Amps PhaseC", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_C(new ScaledValuePoint("S201_APH_C", "Amps PhaseC", //
"Phase C Current", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- A_SF(new PointImpl(//
- "S201_A_SF", //
- "", //
- "Current scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PH_V(new PointImpl(//
- "S201_PH_V", //
- "Voltage LN", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ A_SF(new ScaleFactorPoint("S201_A_SF", "", //
+ "Current scale factor")), //
+ PH_V(new ScaledValuePoint("S201_PH_V", "Voltage LN", //
"Line to Neutral AC Voltage (average of active phases)", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_A(new PointImpl(//
- "S201_PH_VPH_A", //
- "Phase Voltage AN", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_A(new ScaledValuePoint("S201_PH_VPH_A", "Phase Voltage AN", //
"Phase Voltage AN", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_B(new PointImpl(//
- "S201_PH_VPH_B", //
- "Phase Voltage BN", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_B(new ScaledValuePoint("S201_PH_VPH_B", "Phase Voltage BN", //
"Phase Voltage BN", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_C(new PointImpl(//
- "S201_PH_VPH_C", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_C(new ScaledValuePoint("S201_PH_VPH_C", "Phase Voltage CN", //
"Phase Voltage CN", //
- "Phase Voltage CN", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PPV(new PointImpl(//
- "S201_PPV", //
- "Voltage LL", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PPV(new ScaledValuePoint("S201_PPV", "Voltage LL", //
"Line to Line AC Voltage (average of active phases)", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- P_P_VPH_A_B(new PointImpl(//
- "S201_P_P_VPH_A_B", //
- "Phase Voltage AB", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ P_P_VPH_A_B(new ScaledValuePoint("S201_P_P_VPH_A_B", "Phase Voltage AB", //
"Phase Voltage AB", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- P_P_VPH_B_C(new PointImpl(//
- "S201_P_P_VPH_B_C", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ P_P_VPH_B_C(new ScaledValuePoint("S201_P_P_VPH_B_C", "Phase Voltage BC", //
"Phase Voltage BC", //
- "Phase Voltage BC", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- P_P_VPH_C_A(new PointImpl(//
- "S201_P_P_VPH_C_A", //
- "Phase Voltage CA", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ P_P_VPH_C_A(new ScaledValuePoint("S201_P_P_VPH_C_A", "Phase Voltage CA", //
"Phase Voltage CA", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- V_SF(new PointImpl(//
- "S201_V_SF", //
- "", //
- "Voltage scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- HZ(new PointImpl(//
- "S201_HZ", //
- "Hz", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ V_SF(new ScaleFactorPoint("S201_V_SF", "", //
+ "Voltage scale factor")), //
+ HZ(new ScaledValuePoint("S201_HZ", "Hz", //
"Frequency", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.HERTZ, //
- "Hz_SF", //
- new OptionsEnum[0])), //
- HZ_S_F(new PointImpl(//
- "S201_HZ_S_F", //
- "", //
- "Frequency scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W(new PointImpl(//
- "S201_W", //
- "Watts", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.HERTZ, "Hz_SF")), //
+ HZ_S_F(new ScaleFactorPoint("S201_HZ_S_F", "", //
+ "Frequency scale factor")), //
+ W(new ScaledValuePoint("S201_W", "Watts", //
"Total Real Power", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- WPH_A(new PointImpl(//
- "S201_WPH_A", //
- "Watts phase A", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- WPH_B(new PointImpl(//
- "S201_WPH_B", //
- "Watts phase B", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- WPH_C(new PointImpl(//
- "S201_WPH_C", //
- "Watts phase C", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- W_SF(new PointImpl(//
- "S201_W_SF", //
- "", //
- "Real Power scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VA(new PointImpl(//
- "S201_VA", //
- "VA", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ WPH_A(new ScaledValuePoint("S201_WPH_A", "Watts phase A", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ WPH_B(new ScaledValuePoint("S201_WPH_B", "Watts phase B", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ WPH_C(new ScaledValuePoint("S201_WPH_C", "Watts phase C", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ W_SF(new ScaleFactorPoint("S201_W_SF", "", //
+ "Real Power scale factor")), //
+ VA(new ScaledValuePoint("S201_VA", "VA", //
"AC Apparent Power", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- V_APH_A(new PointImpl(//
- "S201_V_APH_A", //
- "VA phase A", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- V_APH_B(new PointImpl(//
- "S201_V_APH_B", //
- "VA phase B", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- V_APH_C(new PointImpl(//
- "S201_V_APH_C", //
- "VA phase C", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- VA_SF(new PointImpl(//
- "S201_VA_SF", //
- "", //
- "Apparent Power scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VAR(new PointImpl(//
- "S201_VAR", //
- "VAR", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ V_APH_A(new ScaledValuePoint("S201_V_APH_A", "VA phase A", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ V_APH_B(new ScaledValuePoint("S201_V_APH_B", "VA phase B", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ V_APH_C(new ScaledValuePoint("S201_V_APH_C", "VA phase C", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ VA_SF(new ScaleFactorPoint("S201_VA_SF", "", //
+ "Apparent Power scale factor")), //
+ VAR(new ScaledValuePoint("S201_VAR", "VAR", //
"Reactive Power", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VAR_SF", //
- new OptionsEnum[0])), //
- V_A_RPH_A(new PointImpl(//
- "S201_V_A_RPH_A", //
- "VAR phase A", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VAR_SF", //
- new OptionsEnum[0])), //
- V_A_RPH_B(new PointImpl(//
- "S201_V_A_RPH_B", //
- "VAR phase B", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VAR_SF", //
- new OptionsEnum[0])), //
- V_A_RPH_C(new PointImpl(//
- "S201_V_A_RPH_C", //
- "VAR phase C", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VAR_SF", //
- new OptionsEnum[0])), //
- VAR_SF(new PointImpl(//
- "S201_VAR_SF", //
- "", //
- "Reactive Power scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PF(new PointImpl(//
- "S201_PF", //
- "PF", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VAR_SF")), //
+ V_A_RPH_A(new ScaledValuePoint("S201_V_A_RPH_A", "VAR phase A", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VAR_SF")), //
+ V_A_RPH_B(new ScaledValuePoint("S201_V_A_RPH_B", "VAR phase B", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VAR_SF")), //
+ V_A_RPH_C(new ScaledValuePoint("S201_V_A_RPH_C", "VAR phase C", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VAR_SF")), //
+ VAR_SF(new ScaleFactorPoint("S201_VAR_SF", "", //
+ "Reactive Power scale factor")), //
+ PF(new ScaledValuePoint("S201_PF", "PF", //
"Power Factor", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- P_FPH_A(new PointImpl(//
- "S201_P_FPH_A", //
- "PF phase A", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- P_FPH_B(new PointImpl(//
- "S201_P_FPH_B", //
- "PF phase B", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- P_FPH_C(new PointImpl(//
- "S201_P_FPH_C", //
- "PF phase C", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- PF_SF(new PointImpl(//
- "S201_PF_SF", //
- "", //
- "Power Factor scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TOT_WH_EXP(new PointImpl(//
- "S201_TOT_WH_EXP", //
- "Total Watt-hours Exported", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ P_FPH_A(new ScaledValuePoint("S201_P_FPH_A", "PF phase A", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ P_FPH_B(new ScaledValuePoint("S201_P_FPH_B", "PF phase B", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ P_FPH_C(new ScaledValuePoint("S201_P_FPH_C", "PF phase C", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ PF_SF(new ScaleFactorPoint("S201_PF_SF", "", //
+ "Power Factor scale factor")), //
+ TOT_WH_EXP(new ScaledValuePoint("S201_TOT_WH_EXP", "Total Watt-hours Exported", //
"Total Real Energy Exported", //
- "", //
- PointType.ACC32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_EXP_PH_A(new PointImpl(//
- "S201_TOT_WH_EXP_PH_A", //
- "Total Watt-hours Exported phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_EXP_PH_B(new PointImpl(//
- "S201_TOT_WH_EXP_PH_B", //
- "Total Watt-hours Exported phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_EXP_PH_C(new PointImpl(//
- "S201_TOT_WH_EXP_PH_C", //
- "Total Watt-hours Exported phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_IMP(new PointImpl(//
- "S201_TOT_WH_IMP", //
- "Total Watt-hours Imported", //
+ ValuePoint.Type.ACC32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_EXP_PH_A(new ScaledValuePoint("S201_TOT_WH_EXP_PH_A", "Total Watt-hours Exported phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_EXP_PH_B(new ScaledValuePoint("S201_TOT_WH_EXP_PH_B", "Total Watt-hours Exported phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_EXP_PH_C(new ScaledValuePoint("S201_TOT_WH_EXP_PH_C", "Total Watt-hours Exported phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_IMP(new ScaledValuePoint("S201_TOT_WH_IMP", "Total Watt-hours Imported", //
"Total Real Energy Imported", //
- "", //
- PointType.ACC32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_IMP_PH_A(new PointImpl(//
- "S201_TOT_WH_IMP_PH_A", //
- "Total Watt-hours Imported phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_IMP_PH_B(new PointImpl(//
- "S201_TOT_WH_IMP_PH_B", //
- "Total Watt-hours Imported phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_IMP_PH_C(new PointImpl(//
- "S201_TOT_WH_IMP_PH_C", //
- "Total Watt-hours Imported phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_S_F(new PointImpl(//
- "S201_TOT_WH_S_F", //
- "", //
- "Real Energy scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TOT_V_AH_EXP(new PointImpl(//
- "S201_TOT_V_AH_EXP", //
- "Total VA-hours Exported", //
+ ValuePoint.Type.ACC32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_IMP_PH_A(new ScaledValuePoint("S201_TOT_WH_IMP_PH_A", "Total Watt-hours Imported phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_IMP_PH_B(new ScaledValuePoint("S201_TOT_WH_IMP_PH_B", "Total Watt-hours Imported phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_IMP_PH_C(new ScaledValuePoint("S201_TOT_WH_IMP_PH_C", "Total Watt-hours Imported phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_S_F(new ScaleFactorPoint("S201_TOT_WH_S_F", "", //
+ "Real Energy scale factor")), //
+ TOT_V_AH_EXP(new ScaledValuePoint("S201_TOT_V_AH_EXP", "Total VA-hours Exported", //
"Total Apparent Energy Exported", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_EXP_PH_A(new PointImpl(//
- "S201_TOT_V_AH_EXP_PH_A", //
- "Total VA-hours Exported phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_EXP_PH_B(new PointImpl(//
- "S201_TOT_V_AH_EXP_PH_B", //
- "Total VA-hours Exported phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_EXP_PH_C(new PointImpl(//
- "S201_TOT_V_AH_EXP_PH_C", //
- "Total VA-hours Exported phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_IMP(new PointImpl(//
- "S201_TOT_V_AH_IMP", //
- "Total VA-hours Imported", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_EXP_PH_A(new ScaledValuePoint("S201_TOT_V_AH_EXP_PH_A", "Total VA-hours Exported phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_EXP_PH_B(new ScaledValuePoint("S201_TOT_V_AH_EXP_PH_B", "Total VA-hours Exported phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_EXP_PH_C(new ScaledValuePoint("S201_TOT_V_AH_EXP_PH_C", "Total VA-hours Exported phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_IMP(new ScaledValuePoint("S201_TOT_V_AH_IMP", "Total VA-hours Imported", //
"Total Apparent Energy Imported", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_IMP_PH_A(new PointImpl(//
- "S201_TOT_V_AH_IMP_PH_A", //
- "Total VA-hours Imported phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_IMP_PH_B(new PointImpl(//
- "S201_TOT_V_AH_IMP_PH_B", //
- "Total VA-hours Imported phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_IMP_PH_C(new PointImpl(//
- "S201_TOT_V_AH_IMP_PH_C", //
- "Total VA-hours Imported phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_S_F(new PointImpl(//
- "S201_TOT_V_AH_S_F", //
- "", //
- "Apparent Energy scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q1(new PointImpl(//
- "S201_TOT_V_ARH_IMP_Q1", //
- "Total VAR-hours Imported Q1", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_IMP_PH_A(new ScaledValuePoint("S201_TOT_V_AH_IMP_PH_A", "Total VA-hours Imported phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_IMP_PH_B(new ScaledValuePoint("S201_TOT_V_AH_IMP_PH_B", "Total VA-hours Imported phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_IMP_PH_C(new ScaledValuePoint("S201_TOT_V_AH_IMP_PH_C", "Total VA-hours Imported phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_S_F(new ScaleFactorPoint("S201_TOT_V_AH_S_F", "", //
+ "Apparent Energy scale factor")), //
+ TOT_V_ARH_IMP_Q1(new ScaledValuePoint("S201_TOT_V_ARH_IMP_Q1", "Total VAR-hours Imported Q1", //
"Total Reactive Energy Imported Quadrant 1", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q1_PH_A(new PointImpl(//
- "S201_TOT_V_ARH_IMP_Q1_PH_A", //
- "Total VAr-hours Imported Q1 phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q1_PH_B(new PointImpl(//
- "S201_TOT_V_ARH_IMP_Q1_PH_B", //
- "Total VAr-hours Imported Q1 phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q1_PH_C(new PointImpl(//
- "S201_TOT_V_ARH_IMP_Q1_PH_C", //
- "Total VAr-hours Imported Q1 phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q2(new PointImpl(//
- "S201_TOT_V_ARH_IMP_Q2", //
- "Total VAr-hours Imported Q2", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q1_PH_A(new ScaledValuePoint("S201_TOT_V_ARH_IMP_Q1_PH_A", "Total VAr-hours Imported Q1 phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q1_PH_B(new ScaledValuePoint("S201_TOT_V_ARH_IMP_Q1_PH_B", "Total VAr-hours Imported Q1 phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q1_PH_C(new ScaledValuePoint("S201_TOT_V_ARH_IMP_Q1_PH_C", "Total VAr-hours Imported Q1 phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q2(new ScaledValuePoint("S201_TOT_V_ARH_IMP_Q2", "Total VAr-hours Imported Q2", //
"Total Reactive Power Imported Quadrant 2", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q2_PH_A(new PointImpl(//
- "S201_TOT_V_ARH_IMP_Q2_PH_A", //
- "Total VAr-hours Imported Q2 phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q2_PH_B(new PointImpl(//
- "S201_TOT_V_ARH_IMP_Q2_PH_B", //
- "Total VAr-hours Imported Q2 phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q2_PH_C(new PointImpl(//
- "S201_TOT_V_ARH_IMP_Q2_PH_C", //
- "Total VAr-hours Imported Q2 phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q3(new PointImpl(//
- "S201_TOT_V_ARH_EXP_Q3", //
- "Total VAr-hours Exported Q3", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q2_PH_A(new ScaledValuePoint("S201_TOT_V_ARH_IMP_Q2_PH_A", "Total VAr-hours Imported Q2 phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q2_PH_B(new ScaledValuePoint("S201_TOT_V_ARH_IMP_Q2_PH_B", "Total VAr-hours Imported Q2 phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q2_PH_C(new ScaledValuePoint("S201_TOT_V_ARH_IMP_Q2_PH_C", "Total VAr-hours Imported Q2 phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q3(new ScaledValuePoint("S201_TOT_V_ARH_EXP_Q3", "Total VAr-hours Exported Q3", //
"Total Reactive Power Exported Quadrant 3", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q3_PH_A(new PointImpl(//
- "S201_TOT_V_ARH_EXP_Q3_PH_A", //
- "Total VAr-hours Exported Q3 phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q3_PH_B(new PointImpl(//
- "S201_TOT_V_ARH_EXP_Q3_PH_B", //
- "Total VAr-hours Exported Q3 phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q3_PH_C(new PointImpl(//
- "S201_TOT_V_ARH_EXP_Q3_PH_C", //
- "Total VAr-hours Exported Q3 phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q4(new PointImpl(//
- "S201_TOT_V_ARH_EXP_Q4", //
- "Total VAr-hours Exported Q4", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q3_PH_A(new ScaledValuePoint("S201_TOT_V_ARH_EXP_Q3_PH_A", "Total VAr-hours Exported Q3 phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q3_PH_B(new ScaledValuePoint("S201_TOT_V_ARH_EXP_Q3_PH_B", "Total VAr-hours Exported Q3 phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q3_PH_C(new ScaledValuePoint("S201_TOT_V_ARH_EXP_Q3_PH_C", "Total VAr-hours Exported Q3 phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q4(new ScaledValuePoint("S201_TOT_V_ARH_EXP_Q4", "Total VAr-hours Exported Q4", //
"Total Reactive Power Exported Quadrant 4", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q4_PH_A(new PointImpl(//
- "S201_TOT_V_ARH_EXP_Q4_PH_A", //
- "Total VAr-hours Exported Q4 Imported phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q4_PH_B(new PointImpl(//
- "S201_TOT_V_ARH_EXP_Q4_PH_B", //
- "Total VAr-hours Exported Q4 Imported phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q4_PH_C(new PointImpl(//
- "S201_TOT_V_ARH_EXP_Q4_PH_C", //
- "Total VAr-hours Exported Q4 Imported phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_S_F(new PointImpl(//
- "S201_TOT_V_ARH_S_F", //
- "", //
- "Reactive Energy scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT(new PointImpl(//
- "S201_EVT", //
- "Events", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q4_PH_A(new ScaledValuePoint("S201_TOT_V_ARH_EXP_Q4_PH_A", "Total VAr-hours Exported Q4 Imported phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q4_PH_B(new ScaledValuePoint("S201_TOT_V_ARH_EXP_Q4_PH_B", "Total VAr-hours Exported Q4 Imported phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q4_PH_C(new ScaledValuePoint("S201_TOT_V_ARH_EXP_Q4_PH_C", "Total VAr-hours Exported Q4 Imported phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_S_F(new ScaleFactorPoint("S201_TOT_V_ARH_S_F", "", //
+ "Reactive Energy scale factor")), //
+ EVT(new BitFieldPoint("S201_EVT", "Events", //
"Meter Event Flags", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S201_Evt.values())); //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, S201_Evt.values()));
- protected final PointImpl impl;
+ private final Point point;
- private S201(PointImpl impl) {
- this.impl = impl;
+ private S201(Point point) {
+ this.point = point;
}
@Override
- public PointImpl get() {
- return this.impl;
+ public Point get() {
+ return this.point;
}
}
- public static enum S201_Evt implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- POWER_FAILURE(2, "POWER_FAILURE"), //
- UNDER_VOLTAGE(3, "UNDER_VOLTAGE"), //
- LOW_P_F(4, "LOW_P_F"), //
- OVER_CURRENT(5, "OVER_CURRENT"), //
- OVER_VOLTAGE(6, "OVER_VOLTAGE"), //
- MISSING_SENSOR(7, "MISSING_SENSOR"), //
- OEM01(16, "OEM01"), //
- OEM02(17, "OEM02"), //
- OEM03(18, "OEM03"), //
- OEM04(19, "OEM04"), //
- OEM05(20, "OEM05"), //
- OEM06(21, "OEM06"), //
- OEM07(22, "OEM07"), //
- OEM08(23, "OEM08"), //
- OEM09(24, "OEM09"), //
- OEM10(25, "OEM10"), //
- OEM11(26, "OEM11"), //
- OEM12(27, "OEM12"), //
- OEM13(28, "OEM13"), //
- OEM14(29, "OEM14"), //
- OEM15(30, "OEM15"); //
+ public static enum S201_Evt implements SunSpecBitPoint {
+ POWER_FAILURE(new BitPoint(2, "S201_EVT_POWER_FAILURE", "Power_Failure")), //
+ UNDER_VOLTAGE(new BitPoint(3, "S201_EVT_UNDER_VOLTAGE", "Under_Voltage")), //
+ LOW_P_F(new BitPoint(4, "S201_EVT_LOW_P_F", "Low_PF")), //
+ OVER_CURRENT(new BitPoint(5, "S201_EVT_OVER_CURRENT", "Over_Current")), //
+ OVER_VOLTAGE(new BitPoint(6, "S201_EVT_OVER_VOLTAGE", "Over_Voltage")), //
+ MISSING_SENSOR(new BitPoint(7, "S201_EVT_MISSING_SENSOR", "Missing_Sensor")), //
+ OEM01(new BitPoint(16, "S201_EVT_OEM01", "OEM01")), //
+ OEM02(new BitPoint(17, "S201_EVT_OEM02", "OEM02")), //
+ OEM03(new BitPoint(18, "S201_EVT_OEM03", "OEM03")), //
+ OEM04(new BitPoint(19, "S201_EVT_OEM04", "OEM04")), //
+ OEM05(new BitPoint(20, "S201_EVT_OEM05", "OEM05")), //
+ OEM06(new BitPoint(21, "S201_EVT_OEM06", "OEM06")), //
+ OEM07(new BitPoint(22, "S201_EVT_OEM07", "OEM07")), //
+ OEM08(new BitPoint(23, "S201_EVT_OEM08", "OEM08")), //
+ OEM09(new BitPoint(24, "S201_EVT_OEM09", "OEM09")), //
+ OEM10(new BitPoint(25, "S201_EVT_OEM10", "OEM10")), //
+ OEM11(new BitPoint(26, "S201_EVT_OEM11", "OEM11")), //
+ OEM12(new BitPoint(27, "S201_EVT_OEM12", "OEM12")), //
+ OEM13(new BitPoint(28, "S201_EVT_OEM13", "OEM13")), //
+ OEM14(new BitPoint(29, "S201_EVT_OEM14", "OEM14")), //
+ OEM15(new BitPoint(30, "S201_EVT_OEM15", "OEM15"));
- private final int value;
- private final String name;
+ private final BitPoint point;
- private S201_Evt(int value, String name) {
- this.value = value;
- this.name = name;
+ private S201_Evt(BitPoint point) {
+ this.point = point;
}
@Override
- public int getValue() {
- return this.value;
- }
-
- @Override
- public String getName() {
- return this.name;
- }
-
- @Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
public static enum S202 implements SunSpecPoint {
- A(new PointImpl(//
- "S202_A", //
- "Amps", //
+ A(new ScaledValuePoint("S202_A", "Amps", //
"Total AC Current", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_A(new PointImpl(//
- "S202_APH_A", //
- "Amps PhaseA", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_A(new ScaledValuePoint("S202_APH_A", "Amps PhaseA", //
"Phase A Current", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_B(new PointImpl(//
- "S202_APH_B", //
- "Amps PhaseB", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_B(new ScaledValuePoint("S202_APH_B", "Amps PhaseB", //
"Phase B Current", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_C(new PointImpl(//
- "S202_APH_C", //
- "Amps PhaseC", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_C(new ScaledValuePoint("S202_APH_C", "Amps PhaseC", //
"Phase C Current", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- A_SF(new PointImpl(//
- "S202_A_SF", //
- "", //
- "Current scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PH_V(new PointImpl(//
- "S202_PH_V", //
- "Voltage LN", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ A_SF(new ScaleFactorPoint("S202_A_SF", "", //
+ "Current scale factor")), //
+ PH_V(new ScaledValuePoint("S202_PH_V", "Voltage LN", //
"Line to Neutral AC Voltage (average of active phases)", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_A(new PointImpl(//
- "S202_PH_VPH_A", //
- "Phase Voltage AN", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_A(new ScaledValuePoint("S202_PH_VPH_A", "Phase Voltage AN", //
"Phase Voltage AN", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_B(new PointImpl(//
- "S202_PH_VPH_B", //
- "Phase Voltage BN", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_B(new ScaledValuePoint("S202_PH_VPH_B", "Phase Voltage BN", //
"Phase Voltage BN", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_C(new PointImpl(//
- "S202_PH_VPH_C", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_C(new ScaledValuePoint("S202_PH_VPH_C", "Phase Voltage CN", //
"Phase Voltage CN", //
- "Phase Voltage CN", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PPV(new PointImpl(//
- "S202_PPV", //
- "Voltage LL", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PPV(new ScaledValuePoint("S202_PPV", "Voltage LL", //
"Line to Line AC Voltage (average of active phases)", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_A_B(new PointImpl(//
- "S202_PH_VPH_A_B", //
- "Phase Voltage AB", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_A_B(new ScaledValuePoint("S202_PH_VPH_A_B", "Phase Voltage AB", //
"Phase Voltage AB", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_B_C(new PointImpl(//
- "S202_PH_VPH_B_C", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_B_C(new ScaledValuePoint("S202_PH_VPH_B_C", "Phase Voltage BC", //
"Phase Voltage BC", //
- "Phase Voltage BC", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_C_A(new PointImpl(//
- "S202_PH_VPH_C_A", //
- "Phase Voltage CA", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_C_A(new ScaledValuePoint("S202_PH_VPH_C_A", "Phase Voltage CA", //
"Phase Voltage CA", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- V_SF(new PointImpl(//
- "S202_V_SF", //
- "", //
- "Voltage scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- HZ(new PointImpl(//
- "S202_HZ", //
- "Hz", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ V_SF(new ScaleFactorPoint("S202_V_SF", "", //
+ "Voltage scale factor")), //
+ HZ(new ScaledValuePoint("S202_HZ", "Hz", //
"Frequency", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.HERTZ, //
- "Hz_SF", //
- new OptionsEnum[0])), //
- HZ_S_F(new PointImpl(//
- "S202_HZ_S_F", //
- "", //
- "Frequency scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W(new PointImpl(//
- "S202_W", //
- "Watts", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.HERTZ, "Hz_SF")), //
+ HZ_S_F(new ScaleFactorPoint("S202_HZ_S_F", "", //
+ "Frequency scale factor")), //
+ W(new ScaledValuePoint("S202_W", "Watts", //
"Total Real Power", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- WPH_A(new PointImpl(//
- "S202_WPH_A", //
- "Watts phase A", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- WPH_B(new PointImpl(//
- "S202_WPH_B", //
- "Watts phase B", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- WPH_C(new PointImpl(//
- "S202_WPH_C", //
- "Watts phase C", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- W_SF(new PointImpl(//
- "S202_W_SF", //
- "", //
- "Real Power scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VA(new PointImpl(//
- "S202_VA", //
- "VA", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ WPH_A(new ScaledValuePoint("S202_WPH_A", "Watts phase A", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ WPH_B(new ScaledValuePoint("S202_WPH_B", "Watts phase B", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ WPH_C(new ScaledValuePoint("S202_WPH_C", "Watts phase C", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ W_SF(new ScaleFactorPoint("S202_W_SF", "", //
+ "Real Power scale factor")), //
+ VA(new ScaledValuePoint("S202_VA", "VA", //
"AC Apparent Power", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- V_APH_A(new PointImpl(//
- "S202_V_APH_A", //
- "VA phase A", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- V_APH_B(new PointImpl(//
- "S202_V_APH_B", //
- "VA phase B", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- V_APH_C(new PointImpl(//
- "S202_V_APH_C", //
- "VA phase C", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- VA_SF(new PointImpl(//
- "S202_VA_SF", //
- "", //
- "Apparent Power scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VAR(new PointImpl(//
- "S202_VAR", //
- "VAR", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ V_APH_A(new ScaledValuePoint("S202_V_APH_A", "VA phase A", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ V_APH_B(new ScaledValuePoint("S202_V_APH_B", "VA phase B", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ V_APH_C(new ScaledValuePoint("S202_V_APH_C", "VA phase C", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ VA_SF(new ScaleFactorPoint("S202_VA_SF", "", //
+ "Apparent Power scale factor")), //
+ VAR(new ScaledValuePoint("S202_VAR", "VAR", //
"Reactive Power", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VAR_SF", //
- new OptionsEnum[0])), //
- V_A_RPH_A(new PointImpl(//
- "S202_V_A_RPH_A", //
- "VAR phase A", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VAR_SF", //
- new OptionsEnum[0])), //
- V_A_RPH_B(new PointImpl(//
- "S202_V_A_RPH_B", //
- "VAR phase B", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VAR_SF", //
- new OptionsEnum[0])), //
- V_A_RPH_C(new PointImpl(//
- "S202_V_A_RPH_C", //
- "VAR phase C", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VAR_SF", //
- new OptionsEnum[0])), //
- VAR_SF(new PointImpl(//
- "S202_VAR_SF", //
- "", //
- "Reactive Power scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PF(new PointImpl(//
- "S202_PF", //
- "PF", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VAR_SF")), //
+ V_A_RPH_A(new ScaledValuePoint("S202_V_A_RPH_A", "VAR phase A", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VAR_SF")), //
+ V_A_RPH_B(new ScaledValuePoint("S202_V_A_RPH_B", "VAR phase B", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VAR_SF")), //
+ V_A_RPH_C(new ScaledValuePoint("S202_V_A_RPH_C", "VAR phase C", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VAR_SF")), //
+ VAR_SF(new ScaleFactorPoint("S202_VAR_SF", "", //
+ "Reactive Power scale factor")), //
+ PF(new ScaledValuePoint("S202_PF", "PF", //
"Power Factor", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- P_FPH_A(new PointImpl(//
- "S202_P_FPH_A", //
- "PF phase A", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- P_FPH_B(new PointImpl(//
- "S202_P_FPH_B", //
- "PF phase B", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- P_FPH_C(new PointImpl(//
- "S202_P_FPH_C", //
- "PF phase C", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- PF_SF(new PointImpl(//
- "S202_PF_SF", //
- "", //
- "Power Factor scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TOT_WH_EXP(new PointImpl(//
- "S202_TOT_WH_EXP", //
- "Total Watt-hours Exported", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ P_FPH_A(new ScaledValuePoint("S202_P_FPH_A", "PF phase A", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ P_FPH_B(new ScaledValuePoint("S202_P_FPH_B", "PF phase B", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ P_FPH_C(new ScaledValuePoint("S202_P_FPH_C", "PF phase C", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ PF_SF(new ScaleFactorPoint("S202_PF_SF", "", //
+ "Power Factor scale factor")), //
+ TOT_WH_EXP(new ScaledValuePoint("S202_TOT_WH_EXP", "Total Watt-hours Exported", //
"Total Real Energy Exported", //
- "", //
- PointType.ACC32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_EXP_PH_A(new PointImpl(//
- "S202_TOT_WH_EXP_PH_A", //
- "Total Watt-hours Exported phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_EXP_PH_B(new PointImpl(//
- "S202_TOT_WH_EXP_PH_B", //
- "Total Watt-hours Exported phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_EXP_PH_C(new PointImpl(//
- "S202_TOT_WH_EXP_PH_C", //
- "Total Watt-hours Exported phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_IMP(new PointImpl(//
- "S202_TOT_WH_IMP", //
- "Total Watt-hours Imported", //
+ ValuePoint.Type.ACC32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_EXP_PH_A(new ScaledValuePoint("S202_TOT_WH_EXP_PH_A", "Total Watt-hours Exported phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_EXP_PH_B(new ScaledValuePoint("S202_TOT_WH_EXP_PH_B", "Total Watt-hours Exported phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_EXP_PH_C(new ScaledValuePoint("S202_TOT_WH_EXP_PH_C", "Total Watt-hours Exported phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_IMP(new ScaledValuePoint("S202_TOT_WH_IMP", "Total Watt-hours Imported", //
"Total Real Energy Imported", //
- "", //
- PointType.ACC32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_IMP_PH_A(new PointImpl(//
- "S202_TOT_WH_IMP_PH_A", //
- "Total Watt-hours Imported phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_IMP_PH_B(new PointImpl(//
- "S202_TOT_WH_IMP_PH_B", //
- "Total Watt-hours Imported phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_IMP_PH_C(new PointImpl(//
- "S202_TOT_WH_IMP_PH_C", //
- "Total Watt-hours Imported phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_S_F(new PointImpl(//
- "S202_TOT_WH_S_F", //
- "", //
- "Real Energy scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TOT_V_AH_EXP(new PointImpl(//
- "S202_TOT_V_AH_EXP", //
- "Total VA-hours Exported", //
+ ValuePoint.Type.ACC32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_IMP_PH_A(new ScaledValuePoint("S202_TOT_WH_IMP_PH_A", "Total Watt-hours Imported phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_IMP_PH_B(new ScaledValuePoint("S202_TOT_WH_IMP_PH_B", "Total Watt-hours Imported phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_IMP_PH_C(new ScaledValuePoint("S202_TOT_WH_IMP_PH_C", "Total Watt-hours Imported phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_S_F(new ScaleFactorPoint("S202_TOT_WH_S_F", "", //
+ "Real Energy scale factor")), //
+ TOT_V_AH_EXP(new ScaledValuePoint("S202_TOT_V_AH_EXP", "Total VA-hours Exported", //
"Total Apparent Energy Exported", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_EXP_PH_A(new PointImpl(//
- "S202_TOT_V_AH_EXP_PH_A", //
- "Total VA-hours Exported phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_EXP_PH_B(new PointImpl(//
- "S202_TOT_V_AH_EXP_PH_B", //
- "Total VA-hours Exported phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_EXP_PH_C(new PointImpl(//
- "S202_TOT_V_AH_EXP_PH_C", //
- "Total VA-hours Exported phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_IMP(new PointImpl(//
- "S202_TOT_V_AH_IMP", //
- "Total VA-hours Imported", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_EXP_PH_A(new ScaledValuePoint("S202_TOT_V_AH_EXP_PH_A", "Total VA-hours Exported phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_EXP_PH_B(new ScaledValuePoint("S202_TOT_V_AH_EXP_PH_B", "Total VA-hours Exported phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_EXP_PH_C(new ScaledValuePoint("S202_TOT_V_AH_EXP_PH_C", "Total VA-hours Exported phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_IMP(new ScaledValuePoint("S202_TOT_V_AH_IMP", "Total VA-hours Imported", //
"Total Apparent Energy Imported", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_IMP_PH_A(new PointImpl(//
- "S202_TOT_V_AH_IMP_PH_A", //
- "Total VA-hours Imported phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_IMP_PH_B(new PointImpl(//
- "S202_TOT_V_AH_IMP_PH_B", //
- "Total VA-hours Imported phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_IMP_PH_C(new PointImpl(//
- "S202_TOT_V_AH_IMP_PH_C", //
- "Total VA-hours Imported phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_S_F(new PointImpl(//
- "S202_TOT_V_AH_S_F", //
- "", //
- "Apparent Energy scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q1(new PointImpl(//
- "S202_TOT_V_ARH_IMP_Q1", //
- "Total VAR-hours Imported Q1", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_IMP_PH_A(new ScaledValuePoint("S202_TOT_V_AH_IMP_PH_A", "Total VA-hours Imported phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_IMP_PH_B(new ScaledValuePoint("S202_TOT_V_AH_IMP_PH_B", "Total VA-hours Imported phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_IMP_PH_C(new ScaledValuePoint("S202_TOT_V_AH_IMP_PH_C", "Total VA-hours Imported phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_S_F(new ScaleFactorPoint("S202_TOT_V_AH_S_F", "", //
+ "Apparent Energy scale factor")), //
+ TOT_V_ARH_IMP_Q1(new ScaledValuePoint("S202_TOT_V_ARH_IMP_Q1", "Total VAR-hours Imported Q1", //
"Total Reactive Energy Imported Quadrant 1", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q1_PH_A(new PointImpl(//
- "S202_TOT_V_ARH_IMP_Q1_PH_A", //
- "Total VAr-hours Imported Q1 phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q1_PH_B(new PointImpl(//
- "S202_TOT_V_ARH_IMP_Q1_PH_B", //
- "Total VAr-hours Imported Q1 phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q1_PH_C(new PointImpl(//
- "S202_TOT_V_ARH_IMP_Q1_PH_C", //
- "Total VAr-hours Imported Q1 phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q2(new PointImpl(//
- "S202_TOT_V_ARH_IMP_Q2", //
- "Total VAr-hours Imported Q2", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q1_PH_A(new ScaledValuePoint("S202_TOT_V_ARH_IMP_Q1_PH_A", "Total VAr-hours Imported Q1 phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q1_PH_B(new ScaledValuePoint("S202_TOT_V_ARH_IMP_Q1_PH_B", "Total VAr-hours Imported Q1 phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q1_PH_C(new ScaledValuePoint("S202_TOT_V_ARH_IMP_Q1_PH_C", "Total VAr-hours Imported Q1 phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q2(new ScaledValuePoint("S202_TOT_V_ARH_IMP_Q2", "Total VAr-hours Imported Q2", //
"Total Reactive Power Imported Quadrant 2", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q2_PH_A(new PointImpl(//
- "S202_TOT_V_ARH_IMP_Q2_PH_A", //
- "Total VAr-hours Imported Q2 phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q2_PH_B(new PointImpl(//
- "S202_TOT_V_ARH_IMP_Q2_PH_B", //
- "Total VAr-hours Imported Q2 phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q2_PH_C(new PointImpl(//
- "S202_TOT_V_ARH_IMP_Q2_PH_C", //
- "Total VAr-hours Imported Q2 phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q3(new PointImpl(//
- "S202_TOT_V_ARH_EXP_Q3", //
- "Total VAr-hours Exported Q3", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q2_PH_A(new ScaledValuePoint("S202_TOT_V_ARH_IMP_Q2_PH_A", "Total VAr-hours Imported Q2 phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q2_PH_B(new ScaledValuePoint("S202_TOT_V_ARH_IMP_Q2_PH_B", "Total VAr-hours Imported Q2 phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q2_PH_C(new ScaledValuePoint("S202_TOT_V_ARH_IMP_Q2_PH_C", "Total VAr-hours Imported Q2 phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q3(new ScaledValuePoint("S202_TOT_V_ARH_EXP_Q3", "Total VAr-hours Exported Q3", //
"Total Reactive Power Exported Quadrant 3", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q3_PH_A(new PointImpl(//
- "S202_TOT_V_ARH_EXP_Q3_PH_A", //
- "Total VAr-hours Exported Q3 phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q3_PH_B(new PointImpl(//
- "S202_TOT_V_ARH_EXP_Q3_PH_B", //
- "Total VAr-hours Exported Q3 phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q3_PH_C(new PointImpl(//
- "S202_TOT_V_ARH_EXP_Q3_PH_C", //
- "Total VAr-hours Exported Q3 phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q4(new PointImpl(//
- "S202_TOT_V_ARH_EXP_Q4", //
- "Total VAr-hours Exported Q4", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q3_PH_A(new ScaledValuePoint("S202_TOT_V_ARH_EXP_Q3_PH_A", "Total VAr-hours Exported Q3 phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q3_PH_B(new ScaledValuePoint("S202_TOT_V_ARH_EXP_Q3_PH_B", "Total VAr-hours Exported Q3 phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q3_PH_C(new ScaledValuePoint("S202_TOT_V_ARH_EXP_Q3_PH_C", "Total VAr-hours Exported Q3 phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q4(new ScaledValuePoint("S202_TOT_V_ARH_EXP_Q4", "Total VAr-hours Exported Q4", //
"Total Reactive Power Exported Quadrant 4", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q4_PH_A(new PointImpl(//
- "S202_TOT_V_ARH_EXP_Q4_PH_A", //
- "Total VAr-hours Exported Q4 Imported phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q4_PH_B(new PointImpl(//
- "S202_TOT_V_ARH_EXP_Q4_PH_B", //
- "Total VAr-hours Exported Q4 Imported phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q4_PH_C(new PointImpl(//
- "S202_TOT_V_ARH_EXP_Q4_PH_C", //
- "Total VAr-hours Exported Q4 Imported phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_S_F(new PointImpl(//
- "S202_TOT_V_ARH_S_F", //
- "", //
- "Reactive Energy scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT(new PointImpl(//
- "S202_EVT", //
- "Events", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q4_PH_A(new ScaledValuePoint("S202_TOT_V_ARH_EXP_Q4_PH_A", "Total VAr-hours Exported Q4 Imported phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q4_PH_B(new ScaledValuePoint("S202_TOT_V_ARH_EXP_Q4_PH_B", "Total VAr-hours Exported Q4 Imported phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q4_PH_C(new ScaledValuePoint("S202_TOT_V_ARH_EXP_Q4_PH_C", "Total VAr-hours Exported Q4 Imported phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_S_F(new ScaleFactorPoint("S202_TOT_V_ARH_S_F", "", //
+ "Reactive Energy scale factor")), //
+ EVT(new BitFieldPoint("S202_EVT", "Events", //
"Meter Event Flags", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S202_Evt.values())); //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, S202_Evt.values()));
- protected final PointImpl impl;
+ private final Point point;
- private S202(PointImpl impl) {
- this.impl = impl;
+ private S202(Point point) {
+ this.point = point;
}
@Override
- public PointImpl get() {
- return this.impl;
+ public Point get() {
+ return this.point;
}
}
- public static enum S202_Evt implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- POWER_FAILURE(2, "POWER_FAILURE"), //
- UNDER_VOLTAGE(3, "UNDER_VOLTAGE"), //
- LOW_P_F(4, "LOW_P_F"), //
- OVER_CURRENT(5, "OVER_CURRENT"), //
- OVER_VOLTAGE(6, "OVER_VOLTAGE"), //
- MISSING_SENSOR(7, "MISSING_SENSOR"), //
- RESERVED1(8, "RESERVED1"), //
- RESERVED2(9, "RESERVED2"), //
- RESERVED3(10, "RESERVED3"), //
- RESERVED4(11, "RESERVED4"), //
- RESERVED5(12, "RESERVED5"), //
- RESERVED6(13, "RESERVED6"), //
- RESERVED7(14, "RESERVED7"), //
- RESERVED8(15, "RESERVED8"), //
- OEM01(16, "OEM01"), //
- OEM02(17, "OEM02"), //
- OEM03(18, "OEM03"), //
- OEM04(19, "OEM04"), //
- OEM05(20, "OEM05"), //
- OEM06(21, "OEM06"), //
- OEM07(22, "OEM07"), //
- OEM08(23, "OEM08"), //
- OEM09(24, "OEM09"), //
- OEM10(25, "OEM10"), //
- OEM11(26, "OEM11"), //
- OEM12(27, "OEM12"), //
- OEM13(28, "OEM13"), //
- OEM14(29, "OEM14"), //
- OEM15(30, "OEM15"); //
+ public static enum S202_Evt implements SunSpecBitPoint {
+ POWER_FAILURE(new BitPoint(2, "S202_EVT_POWER_FAILURE", "Power_Failure")), //
+ UNDER_VOLTAGE(new BitPoint(3, "S202_EVT_UNDER_VOLTAGE", "Under_Voltage")), //
+ LOW_P_F(new BitPoint(4, "S202_EVT_LOW_P_F", "Low_PF")), //
+ OVER_CURRENT(new BitPoint(5, "S202_EVT_OVER_CURRENT", "Over_Current")), //
+ OVER_VOLTAGE(new BitPoint(6, "S202_EVT_OVER_VOLTAGE", "Over_Voltage")), //
+ MISSING_SENSOR(new BitPoint(7, "S202_EVT_MISSING_SENSOR", "Missing_Sensor")), //
+ RESERVED1(new BitPoint(8, "S202_EVT_RESERVED1", "Reserved1")), //
+ RESERVED2(new BitPoint(9, "S202_EVT_RESERVED2", "Reserved2")), //
+ RESERVED3(new BitPoint(10, "S202_EVT_RESERVED3", "Reserved3")), //
+ RESERVED4(new BitPoint(11, "S202_EVT_RESERVED4", "Reserved4")), //
+ RESERVED5(new BitPoint(12, "S202_EVT_RESERVED5", "Reserved5")), //
+ RESERVED6(new BitPoint(13, "S202_EVT_RESERVED6", "Reserved6")), //
+ RESERVED7(new BitPoint(14, "S202_EVT_RESERVED7", "Reserved7")), //
+ RESERVED8(new BitPoint(15, "S202_EVT_RESERVED8", "Reserved8")), //
+ OEM01(new BitPoint(16, "S202_EVT_OEM01", "OEM01")), //
+ OEM02(new BitPoint(17, "S202_EVT_OEM02", "OEM02")), //
+ OEM03(new BitPoint(18, "S202_EVT_OEM03", "OEM03")), //
+ OEM04(new BitPoint(19, "S202_EVT_OEM04", "OEM04")), //
+ OEM05(new BitPoint(20, "S202_EVT_OEM05", "OEM05")), //
+ OEM06(new BitPoint(21, "S202_EVT_OEM06", "OEM06")), //
+ OEM07(new BitPoint(22, "S202_EVT_OEM07", "OEM07")), //
+ OEM08(new BitPoint(23, "S202_EVT_OEM08", "OEM08")), //
+ OEM09(new BitPoint(24, "S202_EVT_OEM09", "OEM09")), //
+ OEM10(new BitPoint(25, "S202_EVT_OEM10", "OEM10")), //
+ OEM11(new BitPoint(26, "S202_EVT_OEM11", "OEM11")), //
+ OEM12(new BitPoint(27, "S202_EVT_OEM12", "OEM12")), //
+ OEM13(new BitPoint(28, "S202_EVT_OEM13", "OEM13")), //
+ OEM14(new BitPoint(29, "S202_EVT_OEM14", "OEM14")), //
+ OEM15(new BitPoint(30, "S202_EVT_OEM15", "OEM15"));
- private final int value;
- private final String name;
+ private final BitPoint point;
- private S202_Evt(int value, String name) {
- this.value = value;
- this.name = name;
+ private S202_Evt(BitPoint point) {
+ this.point = point;
}
@Override
- public int getValue() {
- return this.value;
- }
-
- @Override
- public String getName() {
- return this.name;
- }
-
- @Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
public static enum S203 implements SunSpecPoint {
- A(new PointImpl(//
- "S203_A", //
- "Amps", //
+ A(new ScaledValuePoint("S203_A", "Amps", //
"Total AC Current", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_A(new PointImpl(//
- "S203_APH_A", //
- "Amps PhaseA", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_A(new ScaledValuePoint("S203_APH_A", "Amps PhaseA", //
"Phase A Current", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_B(new PointImpl(//
- "S203_APH_B", //
- "Amps PhaseB", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_B(new ScaledValuePoint("S203_APH_B", "Amps PhaseB", //
"Phase B Current", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_C(new PointImpl(//
- "S203_APH_C", //
- "Amps PhaseC", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_C(new ScaledValuePoint("S203_APH_C", "Amps PhaseC", //
"Phase C Current", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- A_SF(new PointImpl(//
- "S203_A_SF", //
- "", //
- "Current scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PH_V(new PointImpl(//
- "S203_PH_V", //
- "Voltage LN", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ A_SF(new ScaleFactorPoint("S203_A_SF", "", //
+ "Current scale factor")), //
+ PH_V(new ScaledValuePoint("S203_PH_V", "Voltage LN", //
"Line to Neutral AC Voltage (average of active phases)", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_A(new PointImpl(//
- "S203_PH_VPH_A", //
- "Phase Voltage AN", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_A(new ScaledValuePoint("S203_PH_VPH_A", "Phase Voltage AN", //
"Phase Voltage AN", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_B(new PointImpl(//
- "S203_PH_VPH_B", //
- "Phase Voltage BN", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_B(new ScaledValuePoint("S203_PH_VPH_B", "Phase Voltage BN", //
"Phase Voltage BN", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_C(new PointImpl(//
- "S203_PH_VPH_C", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_C(new ScaledValuePoint("S203_PH_VPH_C", "Phase Voltage CN", //
"Phase Voltage CN", //
- "Phase Voltage CN", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PPV(new PointImpl(//
- "S203_PPV", //
- "Voltage LL", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PPV(new ScaledValuePoint("S203_PPV", "Voltage LL", //
"Line to Line AC Voltage (average of active phases)", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_A_B(new PointImpl(//
- "S203_PH_VPH_A_B", //
- "Phase Voltage AB", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_A_B(new ScaledValuePoint("S203_PH_VPH_A_B", "Phase Voltage AB", //
"Phase Voltage AB", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_B_C(new PointImpl(//
- "S203_PH_VPH_B_C", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_B_C(new ScaledValuePoint("S203_PH_VPH_B_C", "Phase Voltage BC", //
"Phase Voltage BC", //
- "Phase Voltage BC", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_C_A(new PointImpl(//
- "S203_PH_VPH_C_A", //
- "Phase Voltage CA", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_C_A(new ScaledValuePoint("S203_PH_VPH_C_A", "Phase Voltage CA", //
"Phase Voltage CA", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- V_SF(new PointImpl(//
- "S203_V_SF", //
- "", //
- "Voltage scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- HZ(new PointImpl(//
- "S203_HZ", //
- "Hz", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ V_SF(new ScaleFactorPoint("S203_V_SF", "", //
+ "Voltage scale factor")), //
+ HZ(new ScaledValuePoint("S203_HZ", "Hz", //
"Frequency", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.HERTZ, //
- "Hz_SF", //
- new OptionsEnum[0])), //
- HZ_S_F(new PointImpl(//
- "S203_HZ_S_F", //
- "", //
- "Frequency scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W(new PointImpl(//
- "S203_W", //
- "Watts", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.HERTZ, "Hz_SF")), //
+ HZ_S_F(new ScaleFactorPoint("S203_HZ_S_F", "", //
+ "Frequency scale factor")), //
+ W(new ScaledValuePoint("S203_W", "Watts", //
"Total Real Power", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- WPH_A(new PointImpl(//
- "S203_WPH_A", //
- "Watts phase A", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- WPH_B(new PointImpl(//
- "S203_WPH_B", //
- "Watts phase B", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- WPH_C(new PointImpl(//
- "S203_WPH_C", //
- "Watts phase C", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- W_SF(new PointImpl(//
- "S203_W_SF", //
- "", //
- "Real Power scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VA(new PointImpl(//
- "S203_VA", //
- "VA", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ WPH_A(new ScaledValuePoint("S203_WPH_A", "Watts phase A", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ WPH_B(new ScaledValuePoint("S203_WPH_B", "Watts phase B", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ WPH_C(new ScaledValuePoint("S203_WPH_C", "Watts phase C", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ W_SF(new ScaleFactorPoint("S203_W_SF", "", //
+ "Real Power scale factor")), //
+ VA(new ScaledValuePoint("S203_VA", "VA", //
"AC Apparent Power", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- V_APH_A(new PointImpl(//
- "S203_V_APH_A", //
- "VA phase A", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- V_APH_B(new PointImpl(//
- "S203_V_APH_B", //
- "VA phase B", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- V_APH_C(new PointImpl(//
- "S203_V_APH_C", //
- "VA phase C", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- VA_SF(new PointImpl(//
- "S203_VA_SF", //
- "", //
- "Apparent Power scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VAR(new PointImpl(//
- "S203_VAR", //
- "VAR", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ V_APH_A(new ScaledValuePoint("S203_V_APH_A", "VA phase A", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ V_APH_B(new ScaledValuePoint("S203_V_APH_B", "VA phase B", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ V_APH_C(new ScaledValuePoint("S203_V_APH_C", "VA phase C", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ VA_SF(new ScaleFactorPoint("S203_VA_SF", "", //
+ "Apparent Power scale factor")), //
+ VAR(new ScaledValuePoint("S203_VAR", "VAR", //
"Reactive Power", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VAR_SF", //
- new OptionsEnum[0])), //
- V_A_RPH_A(new PointImpl(//
- "S203_V_A_RPH_A", //
- "VAR phase A", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VAR_SF", //
- new OptionsEnum[0])), //
- V_A_RPH_B(new PointImpl(//
- "S203_V_A_RPH_B", //
- "VAR phase B", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VAR_SF", //
- new OptionsEnum[0])), //
- V_A_RPH_C(new PointImpl(//
- "S203_V_A_RPH_C", //
- "VAR phase C", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VAR_SF", //
- new OptionsEnum[0])), //
- VAR_SF(new PointImpl(//
- "S203_VAR_SF", //
- "", //
- "Reactive Power scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PF(new PointImpl(//
- "S203_PF", //
- "PF", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VAR_SF")), //
+ V_A_RPH_A(new ScaledValuePoint("S203_V_A_RPH_A", "VAR phase A", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VAR_SF")), //
+ V_A_RPH_B(new ScaledValuePoint("S203_V_A_RPH_B", "VAR phase B", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VAR_SF")), //
+ V_A_RPH_C(new ScaledValuePoint("S203_V_A_RPH_C", "VAR phase C", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VAR_SF")), //
+ VAR_SF(new ScaleFactorPoint("S203_VAR_SF", "", //
+ "Reactive Power scale factor")), //
+ PF(new ScaledValuePoint("S203_PF", "PF", //
"Power Factor", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- P_FPH_A(new PointImpl(//
- "S203_P_FPH_A", //
- "PF phase A", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- P_FPH_B(new PointImpl(//
- "S203_P_FPH_B", //
- "PF phase B", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- P_FPH_C(new PointImpl(//
- "S203_P_FPH_C", //
- "PF phase C", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- PF_SF(new PointImpl(//
- "S203_PF_SF", //
- "", //
- "Power Factor scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TOT_WH_EXP(new PointImpl(//
- "S203_TOT_WH_EXP", //
- "Total Watt-hours Exported", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ P_FPH_A(new ScaledValuePoint("S203_P_FPH_A", "PF phase A", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ P_FPH_B(new ScaledValuePoint("S203_P_FPH_B", "PF phase B", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ P_FPH_C(new ScaledValuePoint("S203_P_FPH_C", "PF phase C", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ PF_SF(new ScaleFactorPoint("S203_PF_SF", "", //
+ "Power Factor scale factor")), //
+ TOT_WH_EXP(new ScaledValuePoint("S203_TOT_WH_EXP", "Total Watt-hours Exported", //
"Total Real Energy Exported", //
- "", //
- PointType.ACC32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_EXP_PH_A(new PointImpl(//
- "S203_TOT_WH_EXP_PH_A", //
- "Total Watt-hours Exported phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_EXP_PH_B(new PointImpl(//
- "S203_TOT_WH_EXP_PH_B", //
- "Total Watt-hours Exported phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_EXP_PH_C(new PointImpl(//
- "S203_TOT_WH_EXP_PH_C", //
- "Total Watt-hours Exported phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_IMP(new PointImpl(//
- "S203_TOT_WH_IMP", //
- "Total Watt-hours Imported", //
+ ValuePoint.Type.ACC32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_EXP_PH_A(new ScaledValuePoint("S203_TOT_WH_EXP_PH_A", "Total Watt-hours Exported phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_EXP_PH_B(new ScaledValuePoint("S203_TOT_WH_EXP_PH_B", "Total Watt-hours Exported phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_EXP_PH_C(new ScaledValuePoint("S203_TOT_WH_EXP_PH_C", "Total Watt-hours Exported phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_IMP(new ScaledValuePoint("S203_TOT_WH_IMP", "Total Watt-hours Imported", //
"Total Real Energy Imported", //
- "", //
- PointType.ACC32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_IMP_PH_A(new PointImpl(//
- "S203_TOT_WH_IMP_PH_A", //
- "Total Watt-hours Imported phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_IMP_PH_B(new PointImpl(//
- "S203_TOT_WH_IMP_PH_B", //
- "Total Watt-hours Imported phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_IMP_PH_C(new PointImpl(//
- "S203_TOT_WH_IMP_PH_C", //
- "Total Watt-hours Imported phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_S_F(new PointImpl(//
- "S203_TOT_WH_S_F", //
- "", //
- "Real Energy scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TOT_V_AH_EXP(new PointImpl(//
- "S203_TOT_V_AH_EXP", //
- "Total VA-hours Exported", //
+ ValuePoint.Type.ACC32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_IMP_PH_A(new ScaledValuePoint("S203_TOT_WH_IMP_PH_A", "Total Watt-hours Imported phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_IMP_PH_B(new ScaledValuePoint("S203_TOT_WH_IMP_PH_B", "Total Watt-hours Imported phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_IMP_PH_C(new ScaledValuePoint("S203_TOT_WH_IMP_PH_C", "Total Watt-hours Imported phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_S_F(new ScaleFactorPoint("S203_TOT_WH_S_F", "", //
+ "Real Energy scale factor")), //
+ TOT_V_AH_EXP(new ScaledValuePoint("S203_TOT_V_AH_EXP", "Total VA-hours Exported", //
"Total Apparent Energy Exported", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_EXP_PH_A(new PointImpl(//
- "S203_TOT_V_AH_EXP_PH_A", //
- "Total VA-hours Exported phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_EXP_PH_B(new PointImpl(//
- "S203_TOT_V_AH_EXP_PH_B", //
- "Total VA-hours Exported phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_EXP_PH_C(new PointImpl(//
- "S203_TOT_V_AH_EXP_PH_C", //
- "Total VA-hours Exported phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_IMP(new PointImpl(//
- "S203_TOT_V_AH_IMP", //
- "Total VA-hours Imported", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_EXP_PH_A(new ScaledValuePoint("S203_TOT_V_AH_EXP_PH_A", "Total VA-hours Exported phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_EXP_PH_B(new ScaledValuePoint("S203_TOT_V_AH_EXP_PH_B", "Total VA-hours Exported phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_EXP_PH_C(new ScaledValuePoint("S203_TOT_V_AH_EXP_PH_C", "Total VA-hours Exported phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_IMP(new ScaledValuePoint("S203_TOT_V_AH_IMP", "Total VA-hours Imported", //
"Total Apparent Energy Imported", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_IMP_PH_A(new PointImpl(//
- "S203_TOT_V_AH_IMP_PH_A", //
- "Total VA-hours Imported phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_IMP_PH_B(new PointImpl(//
- "S203_TOT_V_AH_IMP_PH_B", //
- "Total VA-hours Imported phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_IMP_PH_C(new PointImpl(//
- "S203_TOT_V_AH_IMP_PH_C", //
- "Total VA-hours Imported phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_S_F(new PointImpl(//
- "S203_TOT_V_AH_S_F", //
- "", //
- "Apparent Energy scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q1(new PointImpl(//
- "S203_TOT_V_ARH_IMP_Q1", //
- "Total VAR-hours Imported Q1", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_IMP_PH_A(new ScaledValuePoint("S203_TOT_V_AH_IMP_PH_A", "Total VA-hours Imported phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_IMP_PH_B(new ScaledValuePoint("S203_TOT_V_AH_IMP_PH_B", "Total VA-hours Imported phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_IMP_PH_C(new ScaledValuePoint("S203_TOT_V_AH_IMP_PH_C", "Total VA-hours Imported phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_S_F(new ScaleFactorPoint("S203_TOT_V_AH_S_F", "", //
+ "Apparent Energy scale factor")), //
+ TOT_V_ARH_IMP_Q1(new ScaledValuePoint("S203_TOT_V_ARH_IMP_Q1", "Total VAR-hours Imported Q1", //
"Total Reactive Energy Imported Quadrant 1", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q1_PH_A(new PointImpl(//
- "S203_TOT_V_ARH_IMP_Q1_PH_A", //
- "Total VAr-hours Imported Q1 phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q1_PH_B(new PointImpl(//
- "S203_TOT_V_ARH_IMP_Q1_PH_B", //
- "Total VAr-hours Imported Q1 phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q1_PH_C(new PointImpl(//
- "S203_TOT_V_ARH_IMP_Q1_PH_C", //
- "Total VAr-hours Imported Q1 phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q2(new PointImpl(//
- "S203_TOT_V_ARH_IMP_Q2", //
- "Total VAr-hours Imported Q2", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q1_PH_A(new ScaledValuePoint("S203_TOT_V_ARH_IMP_Q1_PH_A", "Total VAr-hours Imported Q1 phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q1_PH_B(new ScaledValuePoint("S203_TOT_V_ARH_IMP_Q1_PH_B", "Total VAr-hours Imported Q1 phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q1_PH_C(new ScaledValuePoint("S203_TOT_V_ARH_IMP_Q1_PH_C", "Total VAr-hours Imported Q1 phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q2(new ScaledValuePoint("S203_TOT_V_ARH_IMP_Q2", "Total VAr-hours Imported Q2", //
"Total Reactive Power Imported Quadrant 2", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q2_PH_A(new PointImpl(//
- "S203_TOT_V_ARH_IMP_Q2_PH_A", //
- "Total VAr-hours Imported Q2 phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q2_PH_B(new PointImpl(//
- "S203_TOT_V_ARH_IMP_Q2_PH_B", //
- "Total VAr-hours Imported Q2 phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q2_PH_C(new PointImpl(//
- "S203_TOT_V_ARH_IMP_Q2_PH_C", //
- "Total VAr-hours Imported Q2 phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q3(new PointImpl(//
- "S203_TOT_V_ARH_EXP_Q3", //
- "Total VAr-hours Exported Q3", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q2_PH_A(new ScaledValuePoint("S203_TOT_V_ARH_IMP_Q2_PH_A", "Total VAr-hours Imported Q2 phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q2_PH_B(new ScaledValuePoint("S203_TOT_V_ARH_IMP_Q2_PH_B", "Total VAr-hours Imported Q2 phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q2_PH_C(new ScaledValuePoint("S203_TOT_V_ARH_IMP_Q2_PH_C", "Total VAr-hours Imported Q2 phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q3(new ScaledValuePoint("S203_TOT_V_ARH_EXP_Q3", "Total VAr-hours Exported Q3", //
"Total Reactive Power Exported Quadrant 3", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q3_PH_A(new PointImpl(//
- "S203_TOT_V_ARH_EXP_Q3_PH_A", //
- "Total VAr-hours Exported Q3 phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q3_PH_B(new PointImpl(//
- "S203_TOT_V_ARH_EXP_Q3_PH_B", //
- "Total VAr-hours Exported Q3 phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q3_PH_C(new PointImpl(//
- "S203_TOT_V_ARH_EXP_Q3_PH_C", //
- "Total VAr-hours Exported Q3 phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q4(new PointImpl(//
- "S203_TOT_V_ARH_EXP_Q4", //
- "Total VAr-hours Exported Q4", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q3_PH_A(new ScaledValuePoint("S203_TOT_V_ARH_EXP_Q3_PH_A", "Total VAr-hours Exported Q3 phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q3_PH_B(new ScaledValuePoint("S203_TOT_V_ARH_EXP_Q3_PH_B", "Total VAr-hours Exported Q3 phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q3_PH_C(new ScaledValuePoint("S203_TOT_V_ARH_EXP_Q3_PH_C", "Total VAr-hours Exported Q3 phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q4(new ScaledValuePoint("S203_TOT_V_ARH_EXP_Q4", "Total VAr-hours Exported Q4", //
"Total Reactive Power Exported Quadrant 4", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q4_PH_A(new PointImpl(//
- "S203_TOT_V_ARH_EXP_Q4_PH_A", //
- "Total VAr-hours Exported Q4 Imported phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q4_PH_B(new PointImpl(//
- "S203_TOT_V_ARH_EXP_Q4_PH_B", //
- "Total VAr-hours Exported Q4 Imported phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q4_PH_C(new PointImpl(//
- "S203_TOT_V_ARH_EXP_Q4_PH_C", //
- "Total VAr-hours Exported Q4 Imported phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_S_F(new PointImpl(//
- "S203_TOT_V_ARH_S_F", //
- "", //
- "Reactive Energy scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT(new PointImpl(//
- "S203_EVT", //
- "Events", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q4_PH_A(new ScaledValuePoint("S203_TOT_V_ARH_EXP_Q4_PH_A", "Total VAr-hours Exported Q4 Imported phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q4_PH_B(new ScaledValuePoint("S203_TOT_V_ARH_EXP_Q4_PH_B", "Total VAr-hours Exported Q4 Imported phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q4_PH_C(new ScaledValuePoint("S203_TOT_V_ARH_EXP_Q4_PH_C", "Total VAr-hours Exported Q4 Imported phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_S_F(new ScaleFactorPoint("S203_TOT_V_ARH_S_F", "", //
+ "Reactive Energy scale factor")), //
+ EVT(new BitFieldPoint("S203_EVT", "Events", //
"Meter Event Flags", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S203_Evt.values())); //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, S203_Evt.values()));
- protected final PointImpl impl;
+ private final Point point;
- private S203(PointImpl impl) {
- this.impl = impl;
+ private S203(Point point) {
+ this.point = point;
}
@Override
- public PointImpl get() {
- return this.impl;
+ public Point get() {
+ return this.point;
}
}
- public static enum S203_Evt implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- POWER_FAILURE(2, "POWER_FAILURE"), //
- UNDER_VOLTAGE(3, "UNDER_VOLTAGE"), //
- LOW_P_F(4, "LOW_P_F"), //
- OVER_CURRENT(5, "OVER_CURRENT"), //
- OVER_VOLTAGE(6, "OVER_VOLTAGE"), //
- MISSING_SENSOR(7, "MISSING_SENSOR"), //
- RESERVED1(8, "RESERVED1"), //
- RESERVED2(9, "RESERVED2"), //
- RESERVED3(10, "RESERVED3"), //
- RESERVED4(11, "RESERVED4"), //
- RESERVED5(12, "RESERVED5"), //
- RESERVED6(13, "RESERVED6"), //
- RESERVED7(14, "RESERVED7"), //
- RESERVED8(15, "RESERVED8"), //
- OEM01(16, "OEM01"), //
- OEM02(17, "OEM02"), //
- OEM03(18, "OEM03"), //
- OEM04(19, "OEM04"), //
- OEM05(20, "OEM05"), //
- OEM06(21, "OEM06"), //
- OEM07(22, "OEM07"), //
- OEM08(23, "OEM08"), //
- OEM09(24, "OEM09"), //
- OEM10(25, "OEM10"), //
- OEM11(26, "OEM11"), //
- OEM12(27, "OEM12"), //
- OEM13(28, "OEM13"), //
- OEM14(29, "OEM14"), //
- OEM15(30, "OEM15"); //
-
- private final int value;
- private final String name;
+ public static enum S203_Evt implements SunSpecBitPoint {
+ POWER_FAILURE(new BitPoint(2, "S203_EVT_POWER_FAILURE", "Power_Failure")), //
+ UNDER_VOLTAGE(new BitPoint(3, "S203_EVT_UNDER_VOLTAGE", "Under_Voltage")), //
+ LOW_P_F(new BitPoint(4, "S203_EVT_LOW_P_F", "Low_PF")), //
+ OVER_CURRENT(new BitPoint(5, "S203_EVT_OVER_CURRENT", "Over_Current")), //
+ OVER_VOLTAGE(new BitPoint(6, "S203_EVT_OVER_VOLTAGE", "Over_Voltage")), //
+ MISSING_SENSOR(new BitPoint(7, "S203_EVT_MISSING_SENSOR", "Missing_Sensor")), //
+ RESERVED1(new BitPoint(8, "S203_EVT_RESERVED1", "Reserved1")), //
+ RESERVED2(new BitPoint(9, "S203_EVT_RESERVED2", "Reserved2")), //
+ RESERVED3(new BitPoint(10, "S203_EVT_RESERVED3", "Reserved3")), //
+ RESERVED4(new BitPoint(11, "S203_EVT_RESERVED4", "Reserved4")), //
+ RESERVED5(new BitPoint(12, "S203_EVT_RESERVED5", "Reserved5")), //
+ RESERVED6(new BitPoint(13, "S203_EVT_RESERVED6", "Reserved6")), //
+ RESERVED7(new BitPoint(14, "S203_EVT_RESERVED7", "Reserved7")), //
+ RESERVED8(new BitPoint(15, "S203_EVT_RESERVED8", "Reserved8")), //
+ OEM01(new BitPoint(16, "S203_EVT_OEM01", "OEM01")), //
+ OEM02(new BitPoint(17, "S203_EVT_OEM02", "OEM02")), //
+ OEM03(new BitPoint(18, "S203_EVT_OEM03", "OEM03")), //
+ OEM04(new BitPoint(19, "S203_EVT_OEM04", "OEM04")), //
+ OEM05(new BitPoint(20, "S203_EVT_OEM05", "OEM05")), //
+ OEM06(new BitPoint(21, "S203_EVT_OEM06", "OEM06")), //
+ OEM07(new BitPoint(22, "S203_EVT_OEM07", "OEM07")), //
+ OEM08(new BitPoint(23, "S203_EVT_OEM08", "OEM08")), //
+ OEM09(new BitPoint(24, "S203_EVT_OEM09", "OEM09")), //
+ OEM10(new BitPoint(25, "S203_EVT_OEM10", "OEM10")), //
+ OEM11(new BitPoint(26, "S203_EVT_OEM11", "OEM11")), //
+ OEM12(new BitPoint(27, "S203_EVT_OEM12", "OEM12")), //
+ OEM13(new BitPoint(28, "S203_EVT_OEM13", "OEM13")), //
+ OEM14(new BitPoint(29, "S203_EVT_OEM14", "OEM14")), //
+ OEM15(new BitPoint(30, "S203_EVT_OEM15", "OEM15"));
- private S203_Evt(int value, String name) {
- this.value = value;
- this.name = name;
- }
-
- @Override
- public int getValue() {
- return this.value;
- }
+ private final BitPoint point;
- @Override
- public String getName() {
- return this.name;
+ private S203_Evt(BitPoint point) {
+ this.point = point;
}
@Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
public static enum S204 implements SunSpecPoint {
- A(new PointImpl(//
- "S204_A", //
- "Amps", //
+ A(new ScaledValuePoint("S204_A", "Amps", //
"Total AC Current", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_A(new PointImpl(//
- "S204_APH_A", //
- "Amps PhaseA", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_A(new ScaledValuePoint("S204_APH_A", "Amps PhaseA", //
"Phase A Current", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_B(new PointImpl(//
- "S204_APH_B", //
- "Amps PhaseB", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_B(new ScaledValuePoint("S204_APH_B", "Amps PhaseB", //
"Phase B Current", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- APH_C(new PointImpl(//
- "S204_APH_C", //
- "Amps PhaseC", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ APH_C(new ScaledValuePoint("S204_APH_C", "Amps PhaseC", //
"Phase C Current", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- A_SF(new PointImpl(//
- "S204_A_SF", //
- "", //
- "Current scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PH_V(new PointImpl(//
- "S204_PH_V", //
- "Voltage LN", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ A_SF(new ScaleFactorPoint("S204_A_SF", "", //
+ "Current scale factor")), //
+ PH_V(new ScaledValuePoint("S204_PH_V", "Voltage LN", //
"Line to Neutral AC Voltage (average of active phases)", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_A(new PointImpl(//
- "S204_PH_VPH_A", //
- "Phase Voltage AN", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_A(new ScaledValuePoint("S204_PH_VPH_A", "Phase Voltage AN", //
"Phase Voltage AN", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_B(new PointImpl(//
- "S204_PH_VPH_B", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_B(new ScaledValuePoint("S204_PH_VPH_B", "Phase Voltage BN", //
"Phase Voltage BN", //
- "Phase Voltage BN", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_C(new PointImpl(//
- "S204_PH_VPH_C", //
- "Phase Voltage CN", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_C(new ScaledValuePoint("S204_PH_VPH_C", "Phase Voltage CN", //
"Phase Voltage CN", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PPV(new PointImpl(//
- "S204_PPV", //
- "Voltage LL", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PPV(new ScaledValuePoint("S204_PPV", "Voltage LL", //
"Line to Line AC Voltage (average of active phases)", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_A_B(new PointImpl(//
- "S204_PH_VPH_A_B", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_A_B(new ScaledValuePoint("S204_PH_VPH_A_B", "Phase Voltage AB", //
"Phase Voltage AB", //
- "Phase Voltage AB", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_B_C(new PointImpl(//
- "S204_PH_VPH_B_C", //
- "Phase Voltage BC", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_B_C(new ScaledValuePoint("S204_PH_VPH_B_C", "Phase Voltage BC", //
"Phase Voltage BC", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- PH_VPH_C_A(new PointImpl(//
- "S204_PH_VPH_C_A", //
- "Phase Voltage CA", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ PH_VPH_C_A(new ScaledValuePoint("S204_PH_VPH_C_A", "Phase Voltage CA", //
"Phase Voltage CA", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- V_SF(new PointImpl(//
- "S204_V_SF", //
- "", //
- "Voltage scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- HZ(new PointImpl(//
- "S204_HZ", //
- "Hz", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ V_SF(new ScaleFactorPoint("S204_V_SF", "", //
+ "Voltage scale factor")), //
+ HZ(new ScaledValuePoint("S204_HZ", "Hz", //
"Frequency", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.HERTZ, //
- "Hz_SF", //
- new OptionsEnum[0])), //
- HZ_S_F(new PointImpl(//
- "S204_HZ_S_F", //
- "", //
- "Frequency scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W(new PointImpl(//
- "S204_W", //
- "Watts", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.HERTZ, "Hz_SF")), //
+ HZ_S_F(new ScaleFactorPoint("S204_HZ_S_F", "", //
+ "Frequency scale factor")), //
+ W(new ScaledValuePoint("S204_W", "Watts", //
"Total Real Power", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- WPH_A(new PointImpl(//
- "S204_WPH_A", //
- "Watts phase A", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- WPH_B(new PointImpl(//
- "S204_WPH_B", //
- "Watts phase B", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- WPH_C(new PointImpl(//
- "S204_WPH_C", //
- "Watts phase C", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- W_SF(new PointImpl(//
- "S204_W_SF", //
- "", //
- "Real Power scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VA(new PointImpl(//
- "S204_VA", //
- "VA", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ WPH_A(new ScaledValuePoint("S204_WPH_A", "Watts phase A", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ WPH_B(new ScaledValuePoint("S204_WPH_B", "Watts phase B", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ WPH_C(new ScaledValuePoint("S204_WPH_C", "Watts phase C", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ W_SF(new ScaleFactorPoint("S204_W_SF", "", //
+ "Real Power scale factor")), //
+ VA(new ScaledValuePoint("S204_VA", "VA", //
"AC Apparent Power", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- V_APH_A(new PointImpl(//
- "S204_V_APH_A", //
- "VA phase A", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- V_APH_B(new PointImpl(//
- "S204_V_APH_B", //
- "VA phase B", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- V_APH_C(new PointImpl(//
- "S204_V_APH_C", //
- "VA phase C", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- VA_SF(new PointImpl(//
- "S204_VA_SF", //
- "", //
- "Apparent Power scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VAR(new PointImpl(//
- "S204_VAR", //
- "VAR", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ V_APH_A(new ScaledValuePoint("S204_V_APH_A", "VA phase A", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ V_APH_B(new ScaledValuePoint("S204_V_APH_B", "VA phase B", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ V_APH_C(new ScaledValuePoint("S204_V_APH_C", "VA phase C", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ VA_SF(new ScaleFactorPoint("S204_VA_SF", "", //
+ "Apparent Power scale factor")), //
+ VAR(new ScaledValuePoint("S204_VAR", "VAR", //
"Reactive Power", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VAR_SF", //
- new OptionsEnum[0])), //
- V_A_RPH_A(new PointImpl(//
- "S204_V_A_RPH_A", //
- "VAR phase A", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VAR_SF", //
- new OptionsEnum[0])), //
- V_A_RPH_B(new PointImpl(//
- "S204_V_A_RPH_B", //
- "VAR phase B", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VAR_SF", //
- new OptionsEnum[0])), //
- V_A_RPH_C(new PointImpl(//
- "S204_V_A_RPH_C", //
- "VAR phase C", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VAR_SF", //
- new OptionsEnum[0])), //
- VAR_SF(new PointImpl(//
- "S204_VAR_SF", //
- "", //
- "Reactive Power scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PF(new PointImpl(//
- "S204_PF", //
- "PF", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VAR_SF")), //
+ V_A_RPH_A(new ScaledValuePoint("S204_V_A_RPH_A", "VAR phase A", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VAR_SF")), //
+ V_A_RPH_B(new ScaledValuePoint("S204_V_A_RPH_B", "VAR phase B", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VAR_SF")), //
+ V_A_RPH_C(new ScaledValuePoint("S204_V_A_RPH_C", "VAR phase C", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "VAR_SF")), //
+ VAR_SF(new ScaleFactorPoint("S204_VAR_SF", "", //
+ "Reactive Power scale factor")), //
+ PF(new ScaledValuePoint("S204_PF", "PF", //
"Power Factor", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- P_FPH_A(new PointImpl(//
- "S204_P_FPH_A", //
- "PF phase A", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- P_FPH_B(new PointImpl(//
- "S204_P_FPH_B", //
- "PF phase B", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- P_FPH_C(new PointImpl(//
- "S204_P_FPH_C", //
- "PF phase C", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- PF_SF(new PointImpl(//
- "S204_PF_SF", //
- "", //
- "Power Factor scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TOT_WH_EXP(new PointImpl(//
- "S204_TOT_WH_EXP", //
- "Total Watt-hours Exported", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ P_FPH_A(new ScaledValuePoint("S204_P_FPH_A", "PF phase A", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ P_FPH_B(new ScaledValuePoint("S204_P_FPH_B", "PF phase B", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ P_FPH_C(new ScaledValuePoint("S204_P_FPH_C", "PF phase C", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ PF_SF(new ScaleFactorPoint("S204_PF_SF", "", //
+ "Power Factor scale factor")), //
+ TOT_WH_EXP(new ScaledValuePoint("S204_TOT_WH_EXP", "Total Watt-hours Exported", //
"Total Real Energy Exported", //
- "", //
- PointType.ACC32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_EXP_PH_A(new PointImpl(//
- "S204_TOT_WH_EXP_PH_A", //
- "Total Watt-hours Exported phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_EXP_PH_B(new PointImpl(//
- "S204_TOT_WH_EXP_PH_B", //
- "Total Watt-hours Exported phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_EXP_PH_C(new PointImpl(//
- "S204_TOT_WH_EXP_PH_C", //
- "Total Watt-hours Exported phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_IMP(new PointImpl(//
- "S204_TOT_WH_IMP", //
- "Total Watt-hours Imported", //
+ ValuePoint.Type.ACC32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_EXP_PH_A(new ScaledValuePoint("S204_TOT_WH_EXP_PH_A", "Total Watt-hours Exported phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_EXP_PH_B(new ScaledValuePoint("S204_TOT_WH_EXP_PH_B", "Total Watt-hours Exported phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_EXP_PH_C(new ScaledValuePoint("S204_TOT_WH_EXP_PH_C", "Total Watt-hours Exported phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_IMP(new ScaledValuePoint("S204_TOT_WH_IMP", "Total Watt-hours Imported", //
"Total Real Energy Imported", //
- "", //
- PointType.ACC32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_IMP_PH_A(new PointImpl(//
- "S204_TOT_WH_IMP_PH_A", //
- "Total Watt-hours Imported phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_IMP_PH_B(new PointImpl(//
- "S204_TOT_WH_IMP_PH_B", //
- "Total Watt-hours Imported phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_IMP_PH_C(new PointImpl(//
- "S204_TOT_WH_IMP_PH_C", //
- "Total Watt-hours Imported phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_S_F(new PointImpl(//
- "S204_TOT_WH_S_F", //
- "", //
- "Real Energy scale factor", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TOT_V_AH_EXP(new PointImpl(//
- "S204_TOT_V_AH_EXP", //
- "Total VA-hours Exported", //
+ ValuePoint.Type.ACC32, true /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_IMP_PH_A(new ScaledValuePoint("S204_TOT_WH_IMP_PH_A", "Total Watt-hours Imported phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_IMP_PH_B(new ScaledValuePoint("S204_TOT_WH_IMP_PH_B", "Total Watt-hours Imported phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_IMP_PH_C(new ScaledValuePoint("S204_TOT_WH_IMP_PH_C", "Total Watt-hours Imported phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_S_F(new ScaleFactorPoint("S204_TOT_WH_S_F", "", //
+ "Real Energy scale factor")), //
+ TOT_V_AH_EXP(new ScaledValuePoint("S204_TOT_V_AH_EXP", "Total VA-hours Exported", //
"Total Apparent Energy Exported", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_EXP_PH_A(new PointImpl(//
- "S204_TOT_V_AH_EXP_PH_A", //
- "Total VA-hours Exported phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_EXP_PH_B(new PointImpl(//
- "S204_TOT_V_AH_EXP_PH_B", //
- "Total VA-hours Exported phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_EXP_PH_C(new PointImpl(//
- "S204_TOT_V_AH_EXP_PH_C", //
- "Total VA-hours Exported phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_IMP(new PointImpl(//
- "S204_TOT_V_AH_IMP", //
- "Total VA-hours Imported", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_EXP_PH_A(new ScaledValuePoint("S204_TOT_V_AH_EXP_PH_A", "Total VA-hours Exported phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_EXP_PH_B(new ScaledValuePoint("S204_TOT_V_AH_EXP_PH_B", "Total VA-hours Exported phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_EXP_PH_C(new ScaledValuePoint("S204_TOT_V_AH_EXP_PH_C", "Total VA-hours Exported phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_IMP(new ScaledValuePoint("S204_TOT_V_AH_IMP", "Total VA-hours Imported", //
"Total Apparent Energy Imported", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_IMP_PH_A(new PointImpl(//
- "S204_TOT_V_AH_IMP_PH_A", //
- "Total VA-hours Imported phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_IMP_PH_B(new PointImpl(//
- "S204_TOT_V_AH_IMP_PH_B", //
- "Total VA-hours Imported phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_IMP_PH_C(new PointImpl(//
- "S204_TOT_V_AH_IMP_PH_C", //
- "Total VA-hours Imported phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_HOURS, //
- "TotVAh_SF", //
- new OptionsEnum[0])), //
- TOT_V_AH_S_F(new PointImpl(//
- "S204_TOT_V_AH_S_F", //
- "", //
- "Apparent Energy scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q1(new PointImpl(//
- "S204_TOT_V_ARH_IMP_Q1", //
- "Total VAR-hours Imported Q1", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_IMP_PH_A(new ScaledValuePoint("S204_TOT_V_AH_IMP_PH_A", "Total VA-hours Imported phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_IMP_PH_B(new ScaledValuePoint("S204_TOT_V_AH_IMP_PH_B", "Total VA-hours Imported phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_IMP_PH_C(new ScaledValuePoint("S204_TOT_V_AH_IMP_PH_C", "Total VA-hours Imported phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_HOURS, "TotVAh_SF")), //
+ TOT_V_AH_S_F(new ScaleFactorPoint("S204_TOT_V_AH_S_F", "", //
+ "Apparent Energy scale factor")), //
+ TOT_V_ARH_IMP_Q1(new ScaledValuePoint("S204_TOT_V_ARH_IMP_Q1", "Total VAR-hours Imported Q1", //
"Total Reactive Energy Imported Quadrant 1", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q1_PH_A(new PointImpl(//
- "S204_TOT_V_ARH_IMP_Q1_PH_A", //
- "Total VAr-hours Imported Q1 phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q1_PH_B(new PointImpl(//
- "S204_TOT_V_ARH_IMP_Q1_PH_B", //
- "Total VAr-hours Imported Q1 phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q1_PH_C(new PointImpl(//
- "S204_TOT_V_ARH_IMP_Q1_PH_C", //
- "Total VAr-hours Imported Q1 phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q2(new PointImpl(//
- "S204_TOT_V_ARH_IMP_Q2", //
- "Total VAr-hours Imported Q2", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q1_PH_A(new ScaledValuePoint("S204_TOT_V_ARH_IMP_Q1_PH_A", "Total VAr-hours Imported Q1 phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q1_PH_B(new ScaledValuePoint("S204_TOT_V_ARH_IMP_Q1_PH_B", "Total VAr-hours Imported Q1 phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q1_PH_C(new ScaledValuePoint("S204_TOT_V_ARH_IMP_Q1_PH_C", "Total VAr-hours Imported Q1 phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q2(new ScaledValuePoint("S204_TOT_V_ARH_IMP_Q2", "Total VAr-hours Imported Q2", //
"Total Reactive Power Imported Quadrant 2", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q2_PH_A(new PointImpl(//
- "S204_TOT_V_ARH_IMP_Q2_PH_A", //
- "Total VAr-hours Imported Q2 phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q2_PH_B(new PointImpl(//
- "S204_TOT_V_ARH_IMP_Q2_PH_B", //
- "Total VAr-hours Imported Q2 phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_IMP_Q2_PH_C(new PointImpl(//
- "S204_TOT_V_ARH_IMP_Q2_PH_C", //
- "Total VAr-hours Imported Q2 phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q3(new PointImpl(//
- "S204_TOT_V_ARH_EXP_Q3", //
- "Total VAr-hours Exported Q3", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q2_PH_A(new ScaledValuePoint("S204_TOT_V_ARH_IMP_Q2_PH_A", "Total VAr-hours Imported Q2 phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q2_PH_B(new ScaledValuePoint("S204_TOT_V_ARH_IMP_Q2_PH_B", "Total VAr-hours Imported Q2 phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_IMP_Q2_PH_C(new ScaledValuePoint("S204_TOT_V_ARH_IMP_Q2_PH_C", "Total VAr-hours Imported Q2 phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q3(new ScaledValuePoint("S204_TOT_V_ARH_EXP_Q3", "Total VAr-hours Exported Q3", //
"Total Reactive Power Exported Quadrant 3", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q3_PH_A(new PointImpl(//
- "S204_TOT_V_ARH_EXP_Q3_PH_A", //
- "Total VAr-hours Exported Q3 phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q3_PH_B(new PointImpl(//
- "S204_TOT_V_ARH_EXP_Q3_PH_B", //
- "Total VAr-hours Exported Q3 phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q3_PH_C(new PointImpl(//
- "S204_TOT_V_ARH_EXP_Q3_PH_C", //
- "Total VAr-hours Exported Q3 phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q4(new PointImpl(//
- "S204_TOT_V_ARH_EXP_Q4", //
- "Total VAr-hours Exported Q4", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q3_PH_A(new ScaledValuePoint("S204_TOT_V_ARH_EXP_Q3_PH_A", "Total VAr-hours Exported Q3 phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q3_PH_B(new ScaledValuePoint("S204_TOT_V_ARH_EXP_Q3_PH_B", "Total VAr-hours Exported Q3 phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q3_PH_C(new ScaledValuePoint("S204_TOT_V_ARH_EXP_Q3_PH_C", "Total VAr-hours Exported Q3 phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q4(new ScaledValuePoint("S204_TOT_V_ARH_EXP_Q4", "Total VAr-hours Exported Q4", //
"Total Reactive Power Exported Quadrant 4", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q4_PH_A(new PointImpl(//
- "S204_TOT_V_ARH_EXP_Q4_PH_A", //
- "Total VAr-hours Exported Q4 Imported phase A", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q4_PH_B(new PointImpl(//
- "S204_TOT_V_ARH_EXP_Q4_PH_B", //
- "Total VAr-hours Exported Q4 Imported phase B", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_EXP_Q4_PH_C(new PointImpl(//
- "S204_TOT_V_ARH_EXP_Q4_PH_C", //
- "Total VAr-hours Exported Q4 Imported phase C", //
- "", //
- "", //
- PointType.ACC32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVArh_SF", //
- new OptionsEnum[0])), //
- TOT_V_ARH_S_F(new PointImpl(//
- "S204_TOT_V_ARH_S_F", //
- "", //
- "Reactive Energy scale factor", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT(new PointImpl(//
- "S204_EVT", //
- "Events", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q4_PH_A(new ScaledValuePoint("S204_TOT_V_ARH_EXP_Q4_PH_A", "Total VAr-hours Exported Q4 Imported phase A", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q4_PH_B(new ScaledValuePoint("S204_TOT_V_ARH_EXP_Q4_PH_B", "Total VAr-hours Exported Q4 Imported phase B", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_EXP_Q4_PH_C(new ScaledValuePoint("S204_TOT_V_ARH_EXP_Q4_PH_C", "Total VAr-hours Exported Q4 Imported phase C", "", //
+ ValuePoint.Type.ACC32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVArh_SF")), //
+ TOT_V_ARH_S_F(new ScaleFactorPoint("S204_TOT_V_ARH_S_F", "", //
+ "Reactive Energy scale factor")), //
+ EVT(new BitFieldPoint("S204_EVT", "Events", //
"Meter Event Flags", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S204_Evt.values())); //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, S204_Evt.values()));
- protected final PointImpl impl;
+ private final Point point;
- private S204(PointImpl impl) {
- this.impl = impl;
+ private S204(Point point) {
+ this.point = point;
}
@Override
- public PointImpl get() {
- return this.impl;
+ public Point get() {
+ return this.point;
}
}
- public static enum S204_Evt implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- POWER_FAILURE(2, "POWER_FAILURE"), //
- UNDER_VOLTAGE(3, "UNDER_VOLTAGE"), //
- LOW_P_F(4, "LOW_P_F"), //
- OVER_CURRENT(5, "OVER_CURRENT"), //
- OVER_VOLTAGE(6, "OVER_VOLTAGE"), //
- MISSING_SENSOR(7, "MISSING_SENSOR"), //
- RESERVED1(8, "RESERVED1"), //
- RESERVED2(9, "RESERVED2"), //
- RESERVED3(10, "RESERVED3"), //
- RESERVED4(11, "RESERVED4"), //
- RESERVED5(12, "RESERVED5"), //
- RESERVED6(13, "RESERVED6"), //
- RESERVED7(14, "RESERVED7"), //
- RESERVED8(15, "RESERVED8"), //
- OEM01(16, "OEM01"), //
- OEM02(17, "OEM02"), //
- OEM03(18, "OEM03"), //
- OEM04(19, "OEM04"), //
- OEM05(20, "OEM05"), //
- OEM06(21, "OEM06"), //
- OEM07(22, "OEM07"), //
- OEM08(23, "OEM08"), //
- OEM09(24, "OEM09"), //
- OEM10(25, "OEM10"), //
- OEM11(26, "OEM11"), //
- OEM12(27, "OEM12"), //
- OEM13(28, "OEM13"), //
- OEM14(29, "OEM14"), //
- OEM15(30, "OEM15"); //
+ public static enum S204_Evt implements SunSpecBitPoint {
+ POWER_FAILURE(new BitPoint(2, "S204_EVT_POWER_FAILURE", "Power_Failure")), //
+ UNDER_VOLTAGE(new BitPoint(3, "S204_EVT_UNDER_VOLTAGE", "Under_Voltage")), //
+ LOW_P_F(new BitPoint(4, "S204_EVT_LOW_P_F", "Low_PF")), //
+ OVER_CURRENT(new BitPoint(5, "S204_EVT_OVER_CURRENT", "Over_Current")), //
+ OVER_VOLTAGE(new BitPoint(6, "S204_EVT_OVER_VOLTAGE", "Over_Voltage")), //
+ MISSING_SENSOR(new BitPoint(7, "S204_EVT_MISSING_SENSOR", "Missing_Sensor")), //
+ RESERVED1(new BitPoint(8, "S204_EVT_RESERVED1", "Reserved1")), //
+ RESERVED2(new BitPoint(9, "S204_EVT_RESERVED2", "Reserved2")), //
+ RESERVED3(new BitPoint(10, "S204_EVT_RESERVED3", "Reserved3")), //
+ RESERVED4(new BitPoint(11, "S204_EVT_RESERVED4", "Reserved4")), //
+ RESERVED5(new BitPoint(12, "S204_EVT_RESERVED5", "Reserved5")), //
+ RESERVED6(new BitPoint(13, "S204_EVT_RESERVED6", "Reserved6")), //
+ RESERVED7(new BitPoint(14, "S204_EVT_RESERVED7", "Reserved7")), //
+ RESERVED8(new BitPoint(15, "S204_EVT_RESERVED8", "Reserved8")), //
+ OEM01(new BitPoint(16, "S204_EVT_OEM01", "OEM01")), //
+ OEM02(new BitPoint(17, "S204_EVT_OEM02", "OEM02")), //
+ OEM03(new BitPoint(18, "S204_EVT_OEM03", "OEM03")), //
+ OEM04(new BitPoint(19, "S204_EVT_OEM04", "OEM04")), //
+ OEM05(new BitPoint(20, "S204_EVT_OEM05", "OEM05")), //
+ OEM06(new BitPoint(21, "S204_EVT_OEM06", "OEM06")), //
+ OEM07(new BitPoint(22, "S204_EVT_OEM07", "OEM07")), //
+ OEM08(new BitPoint(23, "S204_EVT_OEM08", "OEM08")), //
+ OEM09(new BitPoint(24, "S204_EVT_OEM09", "OEM09")), //
+ OEM10(new BitPoint(25, "S204_EVT_OEM10", "OEM10")), //
+ OEM11(new BitPoint(26, "S204_EVT_OEM11", "OEM11")), //
+ OEM12(new BitPoint(27, "S204_EVT_OEM12", "OEM12")), //
+ OEM13(new BitPoint(28, "S204_EVT_OEM13", "OEM13")), //
+ OEM14(new BitPoint(29, "S204_EVT_OEM14", "OEM14")), //
+ OEM15(new BitPoint(30, "S204_EVT_OEM15", "OEM15"));
- private final int value;
- private final String name;
+ private final BitPoint point;
- private S204_Evt(int value, String name) {
- this.value = value;
- this.name = name;
+ private S204_Evt(BitPoint point) {
+ this.point = point;
}
@Override
- public int getValue() {
- return this.value;
- }
-
- @Override
- public String getName() {
- return this.name;
- }
-
- @Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
public static enum S305 implements SunSpecPoint {
- TM(new PointImpl(//
- "S305_TM", //
- "Tm", //
+ TM(new ValuePoint("S305_TM", "Tm", //
"UTC 24 hour time stamp to millisecond hhmmss.sssZ format", //
- "", //
- PointType.STRING6, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DATE(new PointImpl(//
- "S305_DATE", //
- "Date", //
+ ValuePoint.Type.STRING6, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ DATE(new ValuePoint("S305_DATE", "Date", //
"UTC Date string YYYYMMDD format", //
- "", //
- PointType.STRING4, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- LOC(new PointImpl(//
- "S305_LOC", //
- "Location", //
+ ValuePoint.Type.STRING4, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ LOC(new ValuePoint("S305_LOC", "Location", //
"Location string (40 chars max)", //
- "", //
- PointType.STRING20, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- LAT(new PointImpl(//
- "S305_LAT", //
- "Lat", //
+ ValuePoint.Type.STRING20, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ LAT(new ScaledValuePoint("S305_LAT", "Lat", //
"Latitude with seven degrees of precision", //
- "", //
- PointType.INT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "-7", //
- new OptionsEnum[0])), //
- LONG(new PointImpl(//
- "S305_LONG", //
- "Long", //
+ ValuePoint.Type.INT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "-7")), //
+ LONG(new ScaledValuePoint("S305_LONG", "Long", //
"Longitude with seven degrees of precision", //
- "", //
- PointType.INT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "-7", //
- new OptionsEnum[0])), //
- ALT(new PointImpl(//
- "S305_ALT", //
- "Altitude", //
+ ValuePoint.Type.INT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "-7")), //
+ ALT(new ValuePoint("S305_ALT", "Altitude", //
"Altitude measurement in meters", //
- "", //
- PointType.INT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
+ ValuePoint.Type.INT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE));
- protected final PointImpl impl;
+ private final Point point;
- private S305(PointImpl impl) {
- this.impl = impl;
+ private S305(Point point) {
+ this.point = point;
}
@Override
- public PointImpl get() {
- return this.impl;
+ public Point get() {
+ return this.point;
}
}
public static enum S306 implements SunSpecPoint {
- GHI(new PointImpl(//
- "S306_GHI", //
- "GHI", //
+ GHI(new ValuePoint("S306_GHI", "GHI", //
"Global Horizontal Irradiance", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- A(new PointImpl(//
- "S306_A", //
- "Amps", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ A(new ValuePoint("S306_A", "Amps", //
"Current measurement at reference point", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V(new PointImpl(//
- "S306_V", //
- "Voltage", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ V(new ValuePoint("S306_V", "Voltage", //
"Voltage measurement at reference point", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TMP(new PointImpl(//
- "S306_TMP", //
- "Temperature", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ TMP(new ValuePoint("S306_TMP", "Temperature", //
"Temperature measurement at reference point", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE));
- protected final PointImpl impl;
+ private final Point point;
- private S306(PointImpl impl) {
- this.impl = impl;
+ private S306(Point point) {
+ this.point = point;
}
@Override
- public PointImpl get() {
- return this.impl;
+ public Point get() {
+ return this.point;
}
}
public static enum S307 implements SunSpecPoint {
- TMP_AMB(new PointImpl(//
- "S307_TMP_AMB", //
- "Ambient Temperature", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "-1", //
- new OptionsEnum[0])), //
- RH(new PointImpl(//
- "S307_RH", //
- "Relative Humidity", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PRES(new PointImpl(//
- "S307_PRES", //
- "Barometric Pressure", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- WND_SPD(new PointImpl(//
- "S307_WND_SPD", //
- "Wind Speed", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- WND_DIR(new PointImpl(//
- "S307_WND_DIR", //
- "Wind Direction", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- RAIN(new PointImpl(//
- "S307_RAIN", //
- "Rainfall", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- SNW(new PointImpl(//
- "S307_SNW", //
- "Snow Depth", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PPT(new PointImpl(//
- "S307_PPT", //
- "Precipitation Type", //
+ TMP_AMB(new ScaledValuePoint("S307_TMP_AMB", "Ambient Temperature", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "-1")), //
+ RH(new ValuePoint("S307_RH", "Relative Humidity", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ PRES(new ValuePoint("S307_PRES", "Barometric Pressure", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ WND_SPD(new ValuePoint("S307_WND_SPD", "Wind Speed", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ WND_DIR(new ValuePoint("S307_WND_DIR", "Wind Direction", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ RAIN(new ValuePoint("S307_RAIN", "Rainfall", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ SNW(new ValuePoint("S307_SNW", "Snow Depth", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ PPT(new ValuePoint("S307_PPT", "Precipitation Type", //
"Precipitation Type (WMO 4680 SYNOP code reference)", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ELEC_FLD(new PointImpl(//
- "S307_ELEC_FLD", //
- "Electric Field", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- SUR_WET(new PointImpl(//
- "S307_SUR_WET", //
- "Surface Wetness", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- SOIL_WET(new PointImpl(//
- "S307_SOIL_WET", //
- "Soil Wetness", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S307(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ ELEC_FLD(new ValuePoint("S307_ELEC_FLD", "Electric Field", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ SUR_WET(new ValuePoint("S307_SUR_WET", "Surface Wetness", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ SOIL_WET(new ValuePoint("S307_SOIL_WET", "Soil Wetness", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE));
+
+ private final Point point;
+
+ private S307(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
public static enum S308 implements SunSpecPoint {
- GHI(new PointImpl(//
- "S308_GHI", //
- "GHI", //
+ GHI(new ValuePoint("S308_GHI", "GHI", //
"Global Horizontal Irradiance", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TMP_B_O_M(new PointImpl(//
- "S308_TMP_B_O_M", //
- "Temp", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ TMP_B_O_M(new ScaledValuePoint("S308_TMP_B_O_M", "Temp", //
"Back of module temperature measurement", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "-1", //
- new OptionsEnum[0])), //
- TMP_AMB(new PointImpl(//
- "S308_TMP_AMB", //
- "Ambient Temperature", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "-1", //
- new OptionsEnum[0])), //
- WND_SPD(new PointImpl(//
- "S308_WND_SPD", //
- "Wind Speed", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S308(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "-1")), //
+ TMP_AMB(new ScaledValuePoint("S308_TMP_AMB", "Ambient Temperature", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "-1")), //
+ WND_SPD(new ValuePoint("S308_WND_SPD", "Wind Speed", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE));
+
+ private final Point point;
+
+ private S308(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
public static enum S701 implements SunSpecPoint {
- A_C_TYPE(new PointImpl(//
- "S701_A_C_TYPE", //
- "AC Wiring Type", //
+ A_C_TYPE(new EnumPoint("S701_A_C_TYPE", "AC Wiring Type", //
"AC wiring type.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S701_ACType.values())), //
- ST(new PointImpl(//
- "S701_ST", //
- "Operating State", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S701_ACType.values())), //
+ ST(new EnumPoint("S701_ST", "Operating State", //
"Operating state of the DER.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S701_St.values())), //
- INV_ST(new PointImpl(//
- "S701_INV_ST", //
- "Inverter State", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, S701_St.values())), //
+ INV_ST(new EnumPoint("S701_INV_ST", "Inverter State", //
"Enumerated value. Inverter state.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S701_InvSt.values())), //
- CONN_ST(new PointImpl(//
- "S701_CONN_ST", //
- "Grid Connection State", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, S701_InvSt.values())), //
+ CONN_ST(new EnumPoint("S701_CONN_ST", "Grid Connection State", //
"Grid connection state of the DER.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S701_ConnSt.values())), //
- ALRM(new PointImpl(//
- "S701_ALRM", //
- "Alarm Bitfield", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, S701_ConnSt.values())), //
+ ALRM(new BitFieldPoint("S701_ALRM", "Alarm Bitfield", //
"Active alarms for the DER.", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S701_Alrm.values())), //
- D_E_R_MODE(new PointImpl(//
- "S701_D_E_R_MODE", //
- "DER Operational Characteristics", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, S701_Alrm.values())), //
+ D_E_R_MODE(new BitFieldPoint("S701_D_E_R_MODE", "DER Operational Characteristics", //
"Current operational characteristics of the DER.", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S701_DERMode.values())), //
- W(new PointImpl(//
- "S701_W", //
- "Active Power", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, S701_DERMode.values())), //
+ W(new ScaledValuePoint("S701_W", "Active Power", //
"Total active power. Active power is positive for DER generation and negative for absorption.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- VA(new PointImpl(//
- "S701_VA", //
- "Apparent Power", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ VA(new ScaledValuePoint("S701_VA", "Apparent Power", //
"Total apparent power.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- VAR(new PointImpl(//
- "S701_VAR", //
- "Reactive Power", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ VAR(new ScaledValuePoint("S701_VAR", "Reactive Power", //
"Total reactive power.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "Var_SF", //
- new OptionsEnum[0])), //
- PF(new PointImpl(//
- "S701_PF", //
- "Power Factor", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "Var_SF")), //
+ PF(new ScaledValuePoint("S701_PF", "Power Factor", //
"Power factor. The sign of power factor should be the sign of active power.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- A(new PointImpl(//
- "S701_A", //
- "Total AC Current", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ A(new ScaledValuePoint("S701_A", "Total AC Current", //
"Total AC current.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- LLV(new PointImpl(//
- "S701_LLV", //
- "Voltage LL", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ LLV(new ScaledValuePoint("S701_LLV", "Voltage LL", //
"Line to line AC voltage as an average of active phases.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- LNV(new PointImpl(//
- "S701_LNV", //
- "Voltage LN", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ LNV(new ScaledValuePoint("S701_LNV", "Voltage LN", //
"Line to neutral AC voltage as an average of active phases.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- HZ(new PointImpl(//
- "S701_HZ", //
- "Frequency", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ HZ(new ScaledValuePoint("S701_HZ", "Frequency", //
"AC frequency.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.HERTZ, //
- "Hz_SF", //
- new OptionsEnum[0])), //
- TOT_WH_INJ(new PointImpl(//
- "S701_TOT_WH_INJ", //
- "Total Energy Injected", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.HERTZ, "Hz_SF")), //
+ TOT_WH_INJ(new ScaledValuePoint("S701_TOT_WH_INJ", "Total Energy Injected", //
"Total active energy injected (Quadrants 1 & 4).", //
- "", //
- PointType.UINT64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_ABS(new PointImpl(//
- "S701_TOT_WH_ABS", //
- "Total Energy Absorbed", //
+ ValuePoint.Type.UINT64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_ABS(new ScaledValuePoint("S701_TOT_WH_ABS", "Total Energy Absorbed", //
"Total active energy absorbed (Quadrants 2 & 3).", //
- "", //
- PointType.UINT64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_VARH_INJ(new PointImpl(//
- "S701_TOT_VARH_INJ", //
- "Total Reactive Energy Inj", //
+ ValuePoint.Type.UINT64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_VARH_INJ(new ScaledValuePoint("S701_TOT_VARH_INJ", "Total Reactive Energy Inj", //
"Total reactive energy injected (Quadrants 1 & 2).", //
- "", //
- PointType.UINT64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVarh_SF", //
- new OptionsEnum[0])), //
- TOT_VARH_ABS(new PointImpl(//
- "S701_TOT_VARH_ABS", //
- "Total Reactive Energy Abs", //
+ ValuePoint.Type.UINT64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVarh_SF")), //
+ TOT_VARH_ABS(new ScaledValuePoint("S701_TOT_VARH_ABS", "Total Reactive Energy Abs", //
"Total reactive energy absorbed (Quadrants 3 & 4).", //
- "", //
- PointType.UINT64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVarh_SF", //
- new OptionsEnum[0])), //
- TMP_AMB(new PointImpl(//
- "S701_TMP_AMB", //
- "Ambient Temperature", //
+ ValuePoint.Type.UINT64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVarh_SF")), //
+ TMP_AMB(new ScaledValuePoint("S701_TMP_AMB", "Ambient Temperature", //
"Ambient temperature.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "Tmp_SF", //
- new OptionsEnum[0])), //
- TMP_CAB(new PointImpl(//
- "S701_TMP_CAB", //
- "Cabinet Temperature", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "Tmp_SF")), //
+ TMP_CAB(new ScaledValuePoint("S701_TMP_CAB", "Cabinet Temperature", //
"Cabinet temperature.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "Tmp_SF", //
- new OptionsEnum[0])), //
- TMP_SNK(new PointImpl(//
- "S701_TMP_SNK", //
- "Heat Sink Temperature", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "Tmp_SF")), //
+ TMP_SNK(new ScaledValuePoint("S701_TMP_SNK", "Heat Sink Temperature", //
"Heat sink temperature.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "Tmp_SF", //
- new OptionsEnum[0])), //
- TMP_TRNS(new PointImpl(//
- "S701_TMP_TRNS", //
- "Transformer Temperature", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "Tmp_SF")), //
+ TMP_TRNS(new ScaledValuePoint("S701_TMP_TRNS", "Transformer Temperature", //
"Transformer temperature.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "Tmp_SF", //
- new OptionsEnum[0])), //
- TMP_SW(new PointImpl(//
- "S701_TMP_SW", //
- "IGBT/MOSFET Temperature", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "Tmp_SF")), //
+ TMP_SW(new ScaledValuePoint("S701_TMP_SW", "IGBT/MOSFET Temperature", //
"IGBT/MOSFET temperature.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "Tmp_SF", //
- new OptionsEnum[0])), //
- TMP_OT(new PointImpl(//
- "S701_TMP_OT", //
- "Other Temperature", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "Tmp_SF")), //
+ TMP_OT(new ScaledValuePoint("S701_TMP_OT", "Other Temperature", //
"Other temperature.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "Tmp_SF", //
- new OptionsEnum[0])), //
- WL1(new PointImpl(//
- "S701_WL1", //
- "Watts L1", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.DEGREE_CELSIUS, "Tmp_SF")), //
+ WL1(new ScaledValuePoint("S701_WL1", "Watts L1", //
"Active power L1.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- VAL1(new PointImpl(//
- "S701_VAL1", //
- "VA L1", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ VAL1(new ScaledValuePoint("S701_VAL1", "VA L1", //
"Apparent power L1.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- VAR_L1(new PointImpl(//
- "S701_VAR_L1", //
- "Var L1", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ VAR_L1(new ScaledValuePoint("S701_VAR_L1", "Var L1", //
"Reactive power L1.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "Var_SF", //
- new OptionsEnum[0])), //
- PFL1(new PointImpl(//
- "S701_PFL1", //
- "PF L1", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "Var_SF")), //
+ PFL1(new ScaledValuePoint("S701_PFL1", "PF L1", //
"Power factor phase L1.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- AL1(new PointImpl(//
- "S701_AL1", //
- "Amps L1", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ AL1(new ScaledValuePoint("S701_AL1", "Amps L1", //
"Current phase L1.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- VL1L2(new PointImpl(//
- "S701_VL1L2", //
- "Phase Voltage L1-L2", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ VL1L2(new ScaledValuePoint("S701_VL1L2", "Phase Voltage L1-L2", //
"Phase voltage L1-L2.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- VL1(new PointImpl(//
- "S701_VL1", //
- "Phase Voltage L1-N", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ VL1(new ScaledValuePoint("S701_VL1", "Phase Voltage L1-N", //
"Phase voltage L1-N.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- TOT_WH_INJ_L1(new PointImpl(//
- "S701_TOT_WH_INJ_L1", //
- "Total Watt-Hours Inj L1", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ TOT_WH_INJ_L1(new ScaledValuePoint("S701_TOT_WH_INJ_L1", "Total Watt-Hours Inj L1", //
"Total active energy injected L1.", //
- "", //
- PointType.UINT64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_ABS_L1(new PointImpl(//
- "S701_TOT_WH_ABS_L1", //
- "Total Watt-Hours Abs L1", //
+ ValuePoint.Type.UINT64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_ABS_L1(new ScaledValuePoint("S701_TOT_WH_ABS_L1", "Total Watt-Hours Abs L1", //
"Total active energy absorbed L1.", //
- "", //
- PointType.UINT64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_VARH_INJ_L1(new PointImpl(//
- "S701_TOT_VARH_INJ_L1", //
- "Total Var-Hours Inj L1", //
+ ValuePoint.Type.UINT64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_VARH_INJ_L1(new ScaledValuePoint("S701_TOT_VARH_INJ_L1", "Total Var-Hours Inj L1", //
"Total reactive energy injected L1.", //
- "", //
- PointType.UINT64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVarh_SF", //
- new OptionsEnum[0])), //
- TOT_VARH_ABS_L1(new PointImpl(//
- "S701_TOT_VARH_ABS_L1", //
- "Total Var-Hours Abs L1", //
+ ValuePoint.Type.UINT64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVarh_SF")), //
+ TOT_VARH_ABS_L1(new ScaledValuePoint("S701_TOT_VARH_ABS_L1", "Total Var-Hours Abs L1", //
"Total reactive energy absorbed L1.", //
- "", //
- PointType.UINT64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVarh_SF", //
- new OptionsEnum[0])), //
- WL2(new PointImpl(//
- "S701_WL2", //
- "Watts L2", //
+ ValuePoint.Type.UINT64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVarh_SF")), //
+ WL2(new ScaledValuePoint("S701_WL2", "Watts L2", //
"Active power L2.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- VAL2(new PointImpl(//
- "S701_VAL2", //
- "VA L2", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ VAL2(new ScaledValuePoint("S701_VAL2", "VA L2", //
"Apparent power L2.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- VAR_L2(new PointImpl(//
- "S701_VAR_L2", //
- "Var L2", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ VAR_L2(new ScaledValuePoint("S701_VAR_L2", "Var L2", //
"Reactive power L2.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "Var_SF", //
- new OptionsEnum[0])), //
- PFL2(new PointImpl(//
- "S701_PFL2", //
- "PF L2", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "Var_SF")), //
+ PFL2(new ScaledValuePoint("S701_PFL2", "PF L2", //
"Power factor L2.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- AL2(new PointImpl(//
- "S701_AL2", //
- "Amps L2", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ AL2(new ScaledValuePoint("S701_AL2", "Amps L2", //
"Current L2.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- VL2L3(new PointImpl(//
- "S701_VL2L3", //
- "Phase Voltage L2-L3", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ VL2L3(new ScaledValuePoint("S701_VL2L3", "Phase Voltage L2-L3", //
"Phase voltage L2-L3.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- VL2(new PointImpl(//
- "S701_VL2", //
- "Phase Voltage L2-N", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ VL2(new ScaledValuePoint("S701_VL2", "Phase Voltage L2-N", //
"Phase voltage L2-N.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- TOT_WH_INJ_L2(new PointImpl(//
- "S701_TOT_WH_INJ_L2", //
- "Total Watt-Hours Inj L2", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ TOT_WH_INJ_L2(new ScaledValuePoint("S701_TOT_WH_INJ_L2", "Total Watt-Hours Inj L2", //
"Total active energy injected L2.", //
- "", //
- PointType.UINT64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_ABS_L2(new PointImpl(//
- "S701_TOT_WH_ABS_L2", //
- "Total Watt-Hours Abs L2", //
+ ValuePoint.Type.UINT64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_ABS_L2(new ScaledValuePoint("S701_TOT_WH_ABS_L2", "Total Watt-Hours Abs L2", //
"Total active energy absorbed L2.", //
- "", //
- PointType.UINT64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_VARH_INJ_L2(new PointImpl(//
- "S701_TOT_VARH_INJ_L2", //
- "Total Var-Hours Inj L2", //
+ ValuePoint.Type.UINT64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_VARH_INJ_L2(new ScaledValuePoint("S701_TOT_VARH_INJ_L2", "Total Var-Hours Inj L2", //
"Total reactive energy injected L2.", //
- "", //
- PointType.UINT64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVarh_SF", //
- new OptionsEnum[0])), //
- TOT_VARH_ABS_L2(new PointImpl(//
- "S701_TOT_VARH_ABS_L2", //
- "Total Var-Hours Abs L2", //
+ ValuePoint.Type.UINT64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVarh_SF")), //
+ TOT_VARH_ABS_L2(new ScaledValuePoint("S701_TOT_VARH_ABS_L2", "Total Var-Hours Abs L2", //
"Total reactive energy absorbed L2.", //
- "", //
- PointType.UINT64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVarh_SF", //
- new OptionsEnum[0])), //
- WL3(new PointImpl(//
- "S701_WL3", //
- "Watts L3", //
+ ValuePoint.Type.UINT64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVarh_SF")), //
+ WL3(new ScaledValuePoint("S701_WL3", "Watts L3", //
"Active power L3.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- VAL3(new PointImpl(//
- "S701_VAL3", //
- "VA L3", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ VAL3(new ScaledValuePoint("S701_VAL3", "VA L3", //
"Apparent power L3.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- VAR_L3(new PointImpl(//
- "S701_VAR_L3", //
- "Var L3", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ VAR_L3(new ScaledValuePoint("S701_VAR_L3", "Var L3", //
"Reactive power L3.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "Var_SF", //
- new OptionsEnum[0])), //
- PFL3(new PointImpl(//
- "S701_PFL3", //
- "PF L3", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "Var_SF")), //
+ PFL3(new ScaledValuePoint("S701_PFL3", "PF L3", //
"Power factor L3.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- AL3(new PointImpl(//
- "S701_AL3", //
- "Amps L3", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ AL3(new ScaledValuePoint("S701_AL3", "Amps L3", //
"Current L3.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- VL3L1(new PointImpl(//
- "S701_VL3L1", //
- "Phase Voltage L3-L1", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ VL3L1(new ScaledValuePoint("S701_VL3L1", "Phase Voltage L3-L1", //
"Phase voltage L3-L1.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- VL3(new PointImpl(//
- "S701_VL3", //
- "Phase Voltage L3-N", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ VL3(new ScaledValuePoint("S701_VL3", "Phase Voltage L3-N", //
"Phase voltage L3-N.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- TOT_WH_INJ_L3(new PointImpl(//
- "S701_TOT_WH_INJ_L3", //
- "Total Watt-Hours Inj L3", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ TOT_WH_INJ_L3(new ScaledValuePoint("S701_TOT_WH_INJ_L3", "Total Watt-Hours Inj L3", //
"Total active energy injected L3.", //
- "", //
- PointType.UINT64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_WH_ABS_L3(new PointImpl(//
- "S701_TOT_WH_ABS_L3", //
- "Total Watt-Hours Abs L3", //
+ ValuePoint.Type.UINT64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_WH_ABS_L3(new ScaledValuePoint("S701_TOT_WH_ABS_L3", "Total Watt-Hours Abs L3", //
"Total active energy absorbed L3.", //
- "", //
- PointType.UINT64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "TotWh_SF", //
- new OptionsEnum[0])), //
- TOT_VARH_INJ_L3(new PointImpl(//
- "S701_TOT_VARH_INJ_L3", //
- "Total Var-Hours Inj L3", //
+ ValuePoint.Type.UINT64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "TotWh_SF")), //
+ TOT_VARH_INJ_L3(new ScaledValuePoint("S701_TOT_VARH_INJ_L3", "Total Var-Hours Inj L3", //
"Total reactive energy injected L3.", //
- "", //
- PointType.UINT64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVarh_SF", //
- new OptionsEnum[0])), //
- TOT_VARH_ABS_L3(new PointImpl(//
- "S701_TOT_VARH_ABS_L3", //
- "Total Var-Hours Abs L3", //
+ ValuePoint.Type.UINT64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVarh_SF")), //
+ TOT_VARH_ABS_L3(new ScaledValuePoint("S701_TOT_VARH_ABS_L3", "Total Var-Hours Abs L3", //
"Total reactive energy absorbed L3.", //
- "", //
- PointType.UINT64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE_HOURS, //
- "TotVarh_SF", //
- new OptionsEnum[0])), //
- THROT_PCT(new PointImpl(//
- "S701_THROT_PCT", //
- "Throttling In Pct", //
+ ValuePoint.Type.UINT64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE_HOURS, "TotVarh_SF")), //
+ THROT_PCT(new ValuePoint("S701_THROT_PCT", "Throttling In Pct", //
"Throttling in pct of maximum active power.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- THROT_SRC(new PointImpl(//
- "S701_THROT_SRC", //
- "Throttle Source Information", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ THROT_SRC(new BitFieldPoint("S701_THROT_SRC", "Throttle Source Information", //
"Active throttling source.", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S701_ThrotSrc.values())), //
- A_SF(new PointImpl(//
- "S701_A_SF", //
- "Current Scale Factor", //
- "Current scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_SF(new PointImpl(//
- "S701_V_SF", //
- "Voltage Scale Factor", //
- "Voltage scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- HZ_S_F(new PointImpl(//
- "S701_HZ_S_F", //
- "Frequency Scale Factor", //
- "Frequency scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W_SF(new PointImpl(//
- "S701_W_SF", //
- "Active Power Scale Factor", //
- "Active power scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PF_SF(new PointImpl(//
- "S701_PF_SF", //
- "Power Factor Scale Factor", //
- "Power factor scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VA_SF(new PointImpl(//
- "S701_VA_SF", //
- "Apparent Power Scale Factor", //
- "Apparent power scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VAR_S_F(new PointImpl(//
- "S701_VAR_S_F", //
- "Reactive Power Scale Factor", //
- "Reactive power scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TOT_WH_S_F(new PointImpl(//
- "S701_TOT_WH_S_F", //
- "Active Energy Scale Factor", //
- "Active energy scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TOT_VARH_S_F(new PointImpl(//
- "S701_TOT_VARH_S_F", //
- "Reactive Energy Scale Factor", //
- "Reactive energy scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TMP_S_F(new PointImpl(//
- "S701_TMP_S_F", //
- "Temperature Scale Factor", //
- "Temperature scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- MN_ALRM_INFO(new PointImpl(//
- "S701_MN_ALRM_INFO", //
- "Manufacturer Alarm Info", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, S701_ThrotSrc.values())), //
+ A_SF(new ScaleFactorPoint("S701_A_SF", "Current Scale Factor", //
+ "Current scale factor.")), //
+ V_SF(new ScaleFactorPoint("S701_V_SF", "Voltage Scale Factor", //
+ "Voltage scale factor.")), //
+ HZ_S_F(new ScaleFactorPoint("S701_HZ_S_F", "Frequency Scale Factor", //
+ "Frequency scale factor.")), //
+ W_SF(new ScaleFactorPoint("S701_W_SF", "Active Power Scale Factor", //
+ "Active power scale factor.")), //
+ PF_SF(new ScaleFactorPoint("S701_PF_SF", "Power Factor Scale Factor", //
+ "Power factor scale factor.")), //
+ VA_SF(new ScaleFactorPoint("S701_VA_SF", "Apparent Power Scale Factor", //
+ "Apparent power scale factor.")), //
+ VAR_S_F(new ScaleFactorPoint("S701_VAR_S_F", "Reactive Power Scale Factor", //
+ "Reactive power scale factor.")), //
+ TOT_WH_S_F(new ScaleFactorPoint("S701_TOT_WH_S_F", "Active Energy Scale Factor", //
+ "Active energy scale factor.")), //
+ TOT_VARH_S_F(new ScaleFactorPoint("S701_TOT_VARH_S_F", "Reactive Energy Scale Factor", //
+ "Reactive energy scale factor.")), //
+ TMP_S_F(new ScaleFactorPoint("S701_TMP_S_F", "Temperature Scale Factor", //
+ "Temperature scale factor.")), //
+ MN_ALRM_INFO(new ValuePoint("S701_MN_ALRM_INFO", "Manufacturer Alarm Info", //
"Manufacturer alarm information. Valid if MANUFACTURER_ALRM indication is active.", //
- "", //
- PointType.STRING32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
+ ValuePoint.Type.STRING32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE));
- protected final PointImpl impl;
+ private final Point point;
- private S701(PointImpl impl) {
- this.impl = impl;
+ private S701(Point point) {
+ this.point = point;
}
@Override
- public PointImpl get() {
- return this.impl;
+ public Point get() {
+ return this.point;
}
}
@@ -11167,7 +3886,7 @@ public static enum S701_ACType implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
SINGLE_PHASE(0, "SINGLE_PHASE"), //
SPLIT_PHASE(1, "SPLIT_PHASE"), //
- THREE_PHASE(2, "THREE_PHASE"); //
+ THREE_PHASE(2, "THREE_PHASE");
private final int value;
private final String name;
@@ -11196,7 +3915,7 @@ public OptionsEnum getUndefined() {
public static enum S701_St implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
OFF(0, "OFF"), //
- ON(1, "ON"); //
+ ON(1, "ON");
private final int value;
private final String name;
@@ -11231,7 +3950,7 @@ public static enum S701_InvSt implements OptionsEnum {
THROTTLED(4, "THROTTLED"), //
SHUTTING_DOWN(5, "SHUTTING_DOWN"), //
FAULT(6, "FAULT"), //
- STANDBY(7, "STANDBY"); //
+ STANDBY(7, "STANDBY");
private final int value;
private final String name;
@@ -11259,87 +3978,13 @@ public OptionsEnum getUndefined() {
public static enum S701_ConnSt implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
- DISCONNECTED(0, "DISCONNECTED"), //
- CONNECTED(1, "CONNECTED"); //
-
- private final int value;
- private final String name;
-
- private S701_ConnSt(int value, String name) {
- this.value = value;
- this.name = name;
- }
-
- @Override
- public int getValue() {
- return this.value;
- }
-
- @Override
- public String getName() {
- return this.name;
- }
-
- @Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
- }
- }
-
- public static enum S701_Alrm implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- GROUND_FAULT(0, "GROUND_FAULT"), //
- DC_OVER_VOLT(1, "DC_OVER_VOLT"), //
- AC_DISCONNECT(2, "AC_DISCONNECT"), //
- DC_DISCONNECT(3, "DC_DISCONNECT"), //
- GRID_DISCONNECT(4, "GRID_DISCONNECT"), //
- CABINET_OPEN(5, "CABINET_OPEN"), //
- MANUAL_SHUTDOWN(6, "MANUAL_SHUTDOWN"), //
- OVER_TEMP(7, "OVER_TEMP"), //
- OVER_FREQUENCY(8, "OVER_FREQUENCY"), //
- UNDER_FREQUENCY(9, "UNDER_FREQUENCY"), //
- AC_OVER_VOLT(10, "AC_OVER_VOLT"), //
- AC_UNDER_VOLT(11, "AC_UNDER_VOLT"), //
- BLOWN_STRING_FUSE(12, "BLOWN_STRING_FUSE"), //
- UNDER_TEMP(13, "UNDER_TEMP"), //
- MEMORY_LOSS(14, "MEMORY_LOSS"), //
- HW_TEST_FAILURE(15, "HW_TEST_FAILURE"), //
- MANUFACTURER_ALRM(16, "MANUFACTURER_ALRM"); //
-
- private final int value;
- private final String name;
-
- private S701_Alrm(int value, String name) {
- this.value = value;
- this.name = name;
- }
-
- @Override
- public int getValue() {
- return this.value;
- }
-
- @Override
- public String getName() {
- return this.name;
- }
-
- @Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
- }
- }
-
- public static enum S701_DERMode implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- GRID_FOLLOWING(0, "GRID_FOLLOWING"), //
- GRID_FORMING(1, "GRID_FORMING"), //
- PV_CLIPPED(2, "PV_CLIPPED"); //
+ DISCONNECTED(0, "DISCONNECTED"), //
+ CONNECTED(1, "CONNECTED");
private final int value;
private final String name;
- private S701_DERMode(int value, String name) {
+ private S701_ConnSt(int value, String name) {
this.value = value;
this.name = name;
}
@@ -11360,605 +4005,241 @@ public OptionsEnum getUndefined() {
}
}
- public static enum S701_ThrotSrc implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- MAX_W(0, "MAX_W"), //
- FIXED_W(1, "FIXED_W"), //
- FIXED_VAR(2, "FIXED_VAR"), //
- FIXED_PF(3, "FIXED_PF"), //
- VOLT_VAR(4, "VOLT_VAR"), //
- FREQ_WATT(5, "FREQ_WATT"), //
- DYN_REACT_CURR(6, "DYN_REACT_CURR"), //
- LVRT(7, "LVRT"), //
- HVRT(8, "HVRT"), //
- WATT_VAR(9, "WATT_VAR"), //
- VOLT_WATT(10, "VOLT_WATT"), //
- SCHEDULED(11, "SCHEDULED"), //
- LFRT(12, "LFRT"), //
- HFRT(13, "HFRT"), //
- DERATED(14, "DERATED"); //
+ public static enum S701_Alrm implements SunSpecBitPoint {
+ GROUND_FAULT(new BitPoint(0, "S701_ALRM_GROUND_FAULT", "Ground Fault")), //
+ DC_OVER_VOLT(new BitPoint(1, "S701_ALRM_DC_OVER_VOLT", "DC Over Volt")), //
+ AC_DISCONNECT(new BitPoint(2, "S701_ALRM_AC_DISCONNECT", "AC Disconnect")), //
+ DC_DISCONNECT(new BitPoint(3, "S701_ALRM_DC_DISCONNECT", "DC Disconnect")), //
+ GRID_DISCONNECT(new BitPoint(4, "S701_ALRM_GRID_DISCONNECT", "Grid Disconnect")), //
+ CABINET_OPEN(new BitPoint(5, "S701_ALRM_CABINET_OPEN", "Cabinet Open")), //
+ MANUAL_SHUTDOWN(new BitPoint(6, "S701_ALRM_MANUAL_SHUTDOWN", "Manual Shutdown")), //
+ OVER_TEMP(new BitPoint(7, "S701_ALRM_OVER_TEMP", "Over Temp")), //
+ OVER_FREQUENCY(new BitPoint(8, "S701_ALRM_OVER_FREQUENCY", "Over Frequency")), //
+ UNDER_FREQUENCY(new BitPoint(9, "S701_ALRM_UNDER_FREQUENCY", "Under Frequency")), //
+ AC_OVER_VOLT(new BitPoint(10, "S701_ALRM_AC_OVER_VOLT", "AC Over Volt")), //
+ AC_UNDER_VOLT(new BitPoint(11, "S701_ALRM_AC_UNDER_VOLT", "AC Under Volt")), //
+ BLOWN_STRING_FUSE(new BitPoint(12, "S701_ALRM_BLOWN_STRING_FUSE", "Blown String Fuse")), //
+ UNDER_TEMP(new BitPoint(13, "S701_ALRM_UNDER_TEMP", "Under Temp")), //
+ MEMORY_LOSS(new BitPoint(14, "S701_ALRM_MEMORY_LOSS", "Memory Loss")), //
+ HW_TEST_FAILURE(new BitPoint(15, "S701_ALRM_HW_TEST_FAILURE", "HW Test Failure")), //
+ MANUFACTURER_ALRM(new BitPoint(16, "S701_ALRM_MANUFACTURER_ALRM", "Manufacturer Alrm"));
- private final int value;
- private final String name;
+ private final BitPoint point;
- private S701_ThrotSrc(int value, String name) {
- this.value = value;
- this.name = name;
+ private S701_Alrm(BitPoint point) {
+ this.point = point;
}
@Override
- public int getValue() {
- return this.value;
+ public BitPoint get() {
+ return this.point;
+ }
+ }
+
+ public static enum S701_DERMode implements SunSpecBitPoint {
+ GRID_FOLLOWING(new BitPoint(0, "S701_D_E_R_MODE_GRID_FOLLOWING", "Grid Following")), //
+ GRID_FORMING(new BitPoint(1, "S701_D_E_R_MODE_GRID_FORMING", "Grid Forming")), //
+ PV_CLIPPED(new BitPoint(2, "S701_D_E_R_MODE_PV_CLIPPED", "Pv Clipped"));
+
+ private final BitPoint point;
+
+ private S701_DERMode(BitPoint point) {
+ this.point = point;
}
@Override
- public String getName() {
- return this.name;
+ public BitPoint get() {
+ return this.point;
+ }
+ }
+
+ public static enum S701_ThrotSrc implements SunSpecBitPoint {
+ MAX_W(new BitPoint(0, "S701_THROT_SRC_MAX_W", "Max W")), //
+ FIXED_W(new BitPoint(1, "S701_THROT_SRC_FIXED_W", "Fixed W")), //
+ FIXED_VAR(new BitPoint(2, "S701_THROT_SRC_FIXED_VAR", "Fixed Var")), //
+ FIXED_PF(new BitPoint(3, "S701_THROT_SRC_FIXED_PF", "Fixed Pf")), //
+ VOLT_VAR(new BitPoint(4, "S701_THROT_SRC_VOLT_VAR", "Volt Var")), //
+ FREQ_WATT(new BitPoint(5, "S701_THROT_SRC_FREQ_WATT", "Freq Watt")), //
+ DYN_REACT_CURR(new BitPoint(6, "S701_THROT_SRC_DYN_REACT_CURR", "Dyn React Curr")), //
+ LVRT(new BitPoint(7, "S701_THROT_SRC_LVRT", "LVRT")), //
+ HVRT(new BitPoint(8, "S701_THROT_SRC_HVRT", "HVRT")), //
+ WATT_VAR(new BitPoint(9, "S701_THROT_SRC_WATT_VAR", "Watt Var")), //
+ VOLT_WATT(new BitPoint(10, "S701_THROT_SRC_VOLT_WATT", "Volt Watt")), //
+ SCHEDULED(new BitPoint(11, "S701_THROT_SRC_SCHEDULED", "SCHEDULED")), //
+ LFRT(new BitPoint(12, "S701_THROT_SRC_LFRT", "LFRT")), //
+ HFRT(new BitPoint(13, "S701_THROT_SRC_HFRT", "HFRT")), //
+ DERATED(new BitPoint(14, "S701_THROT_SRC_DERATED", "DERATED"));
+
+ private final BitPoint point;
+
+ private S701_ThrotSrc(BitPoint point) {
+ this.point = point;
}
@Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
public static enum S702 implements SunSpecPoint {
- W_MAX_RTG(new PointImpl(//
- "S702_W_MAX_RTG", //
- "Active Power Max Rating", //
+ W_MAX_RTG(new ScaledValuePoint("S702_W_MAX_RTG", "Active Power Max Rating", //
"Maximum active power rating at unity power factor in watts.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- W_OVR_EXT_RTG(new PointImpl(//
- "S702_W_OVR_EXT_RTG", //
- "Active Power (Over-Excited) Rating", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ W_OVR_EXT_RTG(new ScaledValuePoint("S702_W_OVR_EXT_RTG", "Active Power (Over-Excited) Rating", //
"Active power rating at specified over-excited power factor in watts.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- W_OVR_EXT_RTG_P_F(new PointImpl(//
- "S702_W_OVR_EXT_RTG_P_F", //
- "Specified Over-Excited PF", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ W_OVR_EXT_RTG_P_F(new ScaledValuePoint("S702_W_OVR_EXT_RTG_P_F", "Specified Over-Excited PF", //
"Specified over-excited power factor.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- W_UND_EXT_RTG(new PointImpl(//
- "S702_W_UND_EXT_RTG", //
- "Active Power (Under-Excited) Rating", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ W_UND_EXT_RTG(new ScaledValuePoint("S702_W_UND_EXT_RTG", "Active Power (Under-Excited) Rating", //
"Active power rating at specified under-excited power factor in watts.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- W_UND_EXT_RTG_P_F(new PointImpl(//
- "S702_W_UND_EXT_RTG_P_F", //
- "Specified Under-Excited PF", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ W_UND_EXT_RTG_P_F(new ScaledValuePoint("S702_W_UND_EXT_RTG_P_F", "Specified Under-Excited PF", //
"Specified under-excited power factor.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- V_A_MAX_RTG(new PointImpl(//
- "S702_V_A_MAX_RTG", //
- "Apparent Power Max Rating", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ V_A_MAX_RTG(new ScaledValuePoint("S702_V_A_MAX_RTG", "Apparent Power Max Rating", //
"Maximum apparent power rating in voltamperes.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- VAR_MAX_INJ_RTG(new PointImpl(//
- "S702_VAR_MAX_INJ_RTG", //
- "Reactive Power Injected Rating", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ VAR_MAX_INJ_RTG(new ScaledValuePoint("S702_VAR_MAX_INJ_RTG", "Reactive Power Injected Rating", //
"Maximum injected reactive power rating in vars.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "Var_SF", //
- new OptionsEnum[0])), //
- VAR_MAX_ABS_RTG(new PointImpl(//
- "S702_VAR_MAX_ABS_RTG", //
- "Reactive Power Absorbed Rating", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "Var_SF")), //
+ VAR_MAX_ABS_RTG(new ScaledValuePoint("S702_VAR_MAX_ABS_RTG", "Reactive Power Absorbed Rating", //
"Maximum absorbed reactive power rating in vars.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "Var_SF", //
- new OptionsEnum[0])), //
- W_CHA_RTE_MAX_RTG(new PointImpl(//
- "S702_W_CHA_RTE_MAX_RTG", //
- "Charge Rate Max Rating", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE_REACTIVE, "Var_SF")), //
+ W_CHA_RTE_MAX_RTG(new ScaledValuePoint("S702_W_CHA_RTE_MAX_RTG", "Charge Rate Max Rating", //
"Maximum active power charge rate in watts.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- W_DIS_CHA_RTE_MAX_RTG(new PointImpl(//
- "S702_W_DIS_CHA_RTE_MAX_RTG", //
- "Discharge Rate Max Rating", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ W_DIS_CHA_RTE_MAX_RTG(new ScaledValuePoint("S702_W_DIS_CHA_RTE_MAX_RTG", "Discharge Rate Max Rating", //
"Maximum active power discharge rate in watts.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- V_A_CHA_RTE_MAX_RTG(new PointImpl(//
- "S702_V_A_CHA_RTE_MAX_RTG", //
- "Charge Rate Max VA Rating", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ V_A_CHA_RTE_MAX_RTG(new ScaledValuePoint("S702_V_A_CHA_RTE_MAX_RTG", "Charge Rate Max VA Rating", //
"Maximum apparent power charge rate in voltamperes.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- V_A_DIS_CHA_RTE_MAX_RTG(new PointImpl(//
- "S702_V_A_DIS_CHA_RTE_MAX_RTG", //
- "Discharge Rate Max VA Rating", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ V_A_DIS_CHA_RTE_MAX_RTG(new ScaledValuePoint("S702_V_A_DIS_CHA_RTE_MAX_RTG", "Discharge Rate Max VA Rating", //
"Maximum apparent power discharge rate in voltamperes.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- V_NOM_RTG(new PointImpl(//
- "S702_V_NOM_RTG", //
- "AC Voltage Nominal Rating", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT_AMPERE, "VA_SF")), //
+ V_NOM_RTG(new ScaledValuePoint("S702_V_NOM_RTG", "AC Voltage Nominal Rating", //
"AC voltage nominal rating.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- V_MAX_RTG(new PointImpl(//
- "S702_V_MAX_RTG", //
- "AC Voltage Max Rating", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ V_MAX_RTG(new ScaledValuePoint("S702_V_MAX_RTG", "AC Voltage Max Rating", //
"AC voltage maximum rating.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- V_MIN_RTG(new PointImpl(//
- "S702_V_MIN_RTG", //
- "AC Voltage Min Rating", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ V_MIN_RTG(new ScaledValuePoint("S702_V_MIN_RTG", "AC Voltage Min Rating", //
"AC voltage minimum rating.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- A_MAX_RTG(new PointImpl(//
- "S702_A_MAX_RTG", //
- "AC Current Max Rating", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ A_MAX_RTG(new ScaledValuePoint("S702_A_MAX_RTG", "AC Current Max Rating", //
"AC current maximum rating in amps.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- P_F_OVR_EXT_RTG(new PointImpl(//
- "S702_P_F_OVR_EXT_RTG", //
- "PF Over-Excited Rating", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ P_F_OVR_EXT_RTG(new ScaledValuePoint("S702_P_F_OVR_EXT_RTG", "PF Over-Excited Rating", //
"Power factor over-excited rating.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- P_F_UND_EXT_RTG(new PointImpl(//
- "S702_P_F_UND_EXT_RTG", //
- "PF Under-Excited Rating", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ P_F_UND_EXT_RTG(new ScaledValuePoint("S702_P_F_UND_EXT_RTG", "PF Under-Excited Rating", //
"Power factor under-excited rating.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- REACT_SUSCEPT_RTG(new PointImpl(//
- "S702_REACT_SUSCEPT_RTG", //
- "Reactive Susceptance", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "PF_SF")), //
+ REACT_SUSCEPT_RTG(new ScaledValuePoint("S702_REACT_SUSCEPT_RTG", "Reactive Susceptance", //
"Reactive susceptance that remains connected to the Area EPS in the cease to energize and trip state.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "S_SF", //
- new OptionsEnum[0])), //
- NOR_OP_CAT_RTG(new PointImpl(//
- "S702_NOR_OP_CAT_RTG", //
- "Normal Operating Category", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "S_SF")), //
+ NOR_OP_CAT_RTG(new EnumPoint("S702_NOR_OP_CAT_RTG", "Normal Operating Category", //
"Normal operating performance category as specified in IEEE 1547-2018.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S702_NorOpCatRtg.values())), //
- ABN_OP_CAT_RTG(new PointImpl(//
- "S702_ABN_OP_CAT_RTG", //
- "Abnormal Operating Category", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, S702_NorOpCatRtg.values())), //
+ ABN_OP_CAT_RTG(new EnumPoint("S702_ABN_OP_CAT_RTG", "Abnormal Operating Category", //
"Abnormal operating performance category as specified in IEEE 1547-2018.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S702_AbnOpCatRtg.values())), //
- CTRL_MODES(new PointImpl(//
- "S702_CTRL_MODES", //
- "Supported Control Modes", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, S702_AbnOpCatRtg.values())), //
+ CTRL_MODES(new BitFieldPoint("S702_CTRL_MODES", "Supported Control Modes", //
"Supported control mode functions.", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S702_CtrlModes.values())), //
- INT_ISLAND_CAT_RTG(new PointImpl(//
- "S702_INT_ISLAND_CAT_RTG", //
- "Intentional Island Categories", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, S702_CtrlModes.values())), //
+ INT_ISLAND_CAT_RTG(new BitFieldPoint("S702_INT_ISLAND_CAT_RTG", "Intentional Island Categories", //
"Intentional island categories.", //
- "", //
- PointType.BITFIELD16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S702_IntIslandCatRtg.values())), //
- W_MAX(new PointImpl(//
- "S702_W_MAX", //
- "Active Power Max Setting", //
+ BitFieldPoint.Type.BITFIELD16, false /* mandatory? */, AccessMode.READ_ONLY, S702_IntIslandCatRtg.values())), //
+ W_MAX(new ScaledValuePoint("S702_W_MAX", "Active Power Max Setting", //
"Maximum active power setting used to adjust maximum active power setting.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- W_MAX_OVR_EXT(new PointImpl(//
- "S702_W_MAX_OVR_EXT", //
- "Active Power (Over-Excited) Setting", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.WATT, "W_SF")), //
+ W_MAX_OVR_EXT(new ScaledValuePoint("S702_W_MAX_OVR_EXT", "Active Power (Over-Excited) Setting", //
"Active power setting at specified over-excited power factor in watts.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- W_OVR_EXT_P_F(new PointImpl(//
- "S702_W_OVR_EXT_P_F", //
- "Specified Over-Excited PF", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.WATT, "W_SF")), //
+ W_OVR_EXT_P_F(new ScaledValuePoint("S702_W_OVR_EXT_P_F", "Specified Over-Excited PF", //
"Specified over-excited power factor.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- W_MAX_UND_EXT(new PointImpl(//
- "S702_W_MAX_UND_EXT", //
- "Active Power (Under-Excited) Setting", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "PF_SF")), //
+ W_MAX_UND_EXT(new ScaledValuePoint("S702_W_MAX_UND_EXT", "Active Power (Under-Excited) Setting", //
"Active power setting at specified under-excited power factor in watts.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- W_UND_EXT_P_F(new PointImpl(//
- "S702_W_UND_EXT_P_F", //
- "Specified Under-Excited PF", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.WATT, "W_SF")), //
+ W_UND_EXT_P_F(new ScaledValuePoint("S702_W_UND_EXT_P_F", "Specified Under-Excited PF", //
"Specified under-excited power factor.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- V_A_MAX(new PointImpl(//
- "S702_V_A_MAX", //
- "Apparent Power Max Setting", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "PF_SF")), //
+ V_A_MAX(new ScaledValuePoint("S702_V_A_MAX", "Apparent Power Max Setting", //
"Maximum apparent power setting used to adjust maximum apparent power rating.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- VAR_MAX_INJ(new PointImpl(//
- "S702_VAR_MAX_INJ", //
- "Reactive Power Injected Setting", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.VOLT_AMPERE, "VA_SF")), //
+ VAR_MAX_INJ(new ScaledValuePoint("S702_VAR_MAX_INJ", "Reactive Power Injected Setting", //
"Maximum injected reactive power setting used to adjust maximum injected reactive power rating.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "Var_SF", //
- new OptionsEnum[0])), //
- VAR_MAX_ABS(new PointImpl(//
- "S702_VAR_MAX_ABS", //
- "Reactive Power Absorbed Setting", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.VOLT_AMPERE_REACTIVE, "Var_SF")), //
+ VAR_MAX_ABS(new ScaledValuePoint("S702_VAR_MAX_ABS", "Reactive Power Absorbed Setting", //
"Maximum absorbed reactive power setting used to adjust maximum absorbed reactive power rating.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "Var_SF", //
- new OptionsEnum[0])), //
- W_CHA_RTE_MAX(new PointImpl(//
- "S702_W_CHA_RTE_MAX", //
- "Charge Rate Max Setting", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.VOLT_AMPERE_REACTIVE, "Var_SF")), //
+ W_CHA_RTE_MAX(new ScaledValuePoint("S702_W_CHA_RTE_MAX", "Charge Rate Max Setting", //
"Maximum active power charge rate setting used to adjust maximum active power charge rate rating.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- W_DIS_CHA_RTE_MAX(new PointImpl(//
- "S702_W_DIS_CHA_RTE_MAX", //
- "Discharge Rate Max Setting", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.WATT, "W_SF")), //
+ W_DIS_CHA_RTE_MAX(new ScaledValuePoint("S702_W_DIS_CHA_RTE_MAX", "Discharge Rate Max Setting", //
"Maximum active power discharge rate setting used to adjust maximum active power discharge rate rating.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- V_A_CHA_RTE_MAX(new PointImpl(//
- "S702_V_A_CHA_RTE_MAX", //
- "Charge Rate Max VA Setting", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.WATT, "W_SF")), //
+ V_A_CHA_RTE_MAX(new ScaledValuePoint("S702_V_A_CHA_RTE_MAX", "Charge Rate Max VA Setting", //
"Maximum apparent power charge rate setting used to adjust maximum apparent power charge rate rating.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- V_A_DIS_CHA_RTE_MAX(new PointImpl(//
- "S702_V_A_DIS_CHA_RTE_MAX", //
- "Discharge Rate Max VA Setting", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.VOLT_AMPERE, "VA_SF")), //
+ V_A_DIS_CHA_RTE_MAX(new ScaledValuePoint("S702_V_A_DIS_CHA_RTE_MAX", "Discharge Rate Max VA Setting", //
"Maximum apparent power discharge rate setting used to adjust maximum apparent power discharge rate rating.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.VOLT_AMPERE, //
- "VA_SF", //
- new OptionsEnum[0])), //
- V_NOM(new PointImpl(//
- "S702_V_NOM", //
- "Nominal AC Voltage Setting", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.VOLT_AMPERE, "VA_SF")), //
+ V_NOM(new ScaledValuePoint("S702_V_NOM", "Nominal AC Voltage Setting", //
"Nominal AC voltage setting.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- V_MAX(new PointImpl(//
- "S702_V_MAX", //
- "AC Voltage Max Setting", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.VOLT, "V_SF")), //
+ V_MAX(new ScaledValuePoint("S702_V_MAX", "AC Voltage Max Setting", //
"AC voltage maximum setting used to adjust AC voltage maximum rating.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- V_MIN(new PointImpl(//
- "S702_V_MIN", //
- "AC Voltage Min Setting", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.VOLT, "V_SF")), //
+ V_MIN(new ScaledValuePoint("S702_V_MIN", "AC Voltage Min Setting", //
"AC voltage minimum setting used to adjust AC voltage minimum rating.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- A_MAX(new PointImpl(//
- "S702_A_MAX", //
- "AC Current Max Setting", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.VOLT, "V_SF")), //
+ A_MAX(new ScaledValuePoint("S702_A_MAX", "AC Current Max Setting", //
"Maximum AC current setting used to adjust maximum AC current rating.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- P_F_OVR_EXT(new PointImpl(//
- "S702_P_F_OVR_EXT", //
- "PF Over-Excited Setting", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.AMPERE, "A_SF")), //
+ P_F_OVR_EXT(new ScaledValuePoint("S702_P_F_OVR_EXT", "PF Over-Excited Setting", //
"Power factor over-excited setting.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- P_F_UND_EXT(new PointImpl(//
- "S702_P_F_UND_EXT", //
- "PF Under-Excited Setting", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "PF_SF")), //
+ P_F_UND_EXT(new ScaledValuePoint("S702_P_F_UND_EXT", "PF Under-Excited Setting", //
"Power factor under-excited setting.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "PF_SF", //
- new OptionsEnum[0])), //
- INT_ISLAND_CAT(new PointImpl(//
- "S702_INT_ISLAND_CAT", //
- "Intentional Island Categories", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "PF_SF")), //
+ INT_ISLAND_CAT(new BitFieldPoint("S702_INT_ISLAND_CAT", "Intentional Island Categories", //
"Intentional island categories.", //
- "", //
- PointType.BITFIELD16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S702_IntIslandCat.values())), //
- W_SF(new PointImpl(//
- "S702_W_SF", //
- "Active Power Scale Factor", //
- "Active power scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PF_SF(new PointImpl(//
- "S702_PF_SF", //
- "Power Factor Scale Factor", //
- "Power factor scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VA_SF(new PointImpl(//
- "S702_VA_SF", //
- "Apparent Power Scale Factor", //
- "Apparent power scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VAR_S_F(new PointImpl(//
- "S702_VAR_S_F", //
- "Reactive Power Scale Factor", //
- "Reactive power scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_SF(new PointImpl(//
- "S702_V_SF", //
- "Voltage Scale Factor", //
- "Voltage scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- A_SF(new PointImpl(//
- "S702_A_SF", //
- "Current Scale Factor", //
- "Current scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S_SF(new PointImpl(//
- "S702_S_SF", //
- "Susceptance Scale Factor", //
- "Susceptance scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S702(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ BitFieldPoint.Type.BITFIELD16, false /* mandatory? */, AccessMode.READ_WRITE, S702_IntIslandCat.values())), //
+ W_SF(new ScaleFactorPoint("S702_W_SF", "Active Power Scale Factor", //
+ "Active power scale factor.")), //
+ PF_SF(new ScaleFactorPoint("S702_PF_SF", "Power Factor Scale Factor", //
+ "Power factor scale factor.")), //
+ VA_SF(new ScaleFactorPoint("S702_VA_SF", "Apparent Power Scale Factor", //
+ "Apparent power scale factor.")), //
+ VAR_S_F(new ScaleFactorPoint("S702_VAR_S_F", "Reactive Power Scale Factor", //
+ "Reactive power scale factor.")), //
+ V_SF(new ScaleFactorPoint("S702_V_SF", "Voltage Scale Factor", //
+ "Voltage scale factor.")), //
+ A_SF(new ScaleFactorPoint("S702_A_SF", "Current Scale Factor", //
+ "Current scale factor.")), //
+ S_SF(new ScaleFactorPoint("S702_S_SF", "Susceptance Scale Factor", //
+ "Susceptance scale factor."));
+
+ private final Point point;
+
+ private S702(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
public static enum S702_NorOpCatRtg implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
CAT_A(0, "CAT_A"), //
- CAT_B(1, "CAT_B"); //
+ CAT_B(1, "CAT_B");
private final int value;
private final String name;
@@ -11988,7 +4269,7 @@ public static enum S702_AbnOpCatRtg implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
CAT_1(0, "CAT_1"), //
CAT_2(1, "CAT_2"), //
- CAT_3(2, "CAT_3"); //
+ CAT_3(2, "CAT_3");
private final int value;
private final String name;
@@ -12014,248 +4295,119 @@ public OptionsEnum getUndefined() {
}
}
- public static enum S702_CtrlModes implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- MAX_W(0, "MAX_W"), //
- FIXED_W(1, "FIXED_W"), //
- FIXED_VAR(2, "FIXED_VAR"), //
- FIXED_PF(3, "FIXED_PF"), //
- VOLT_VAR(4, "VOLT_VAR"), //
- FREQ_WATT(5, "FREQ_WATT"), //
- DYN_REACT_CURR(6, "DYN_REACT_CURR"), //
- LV_TRIP(7, "LV_TRIP"), //
- HV_TRIP(8, "HV_TRIP"), //
- WATT_VAR(9, "WATT_VAR"), //
- VOLT_WATT(10, "VOLT_WATT"), //
- SCHEDULED(11, "SCHEDULED"), //
- LF_TRIP(12, "LF_TRIP"), //
- HF_TRIP(13, "HF_TRIP"); //
-
- private final int value;
- private final String name;
-
- private S702_CtrlModes(int value, String name) {
- this.value = value;
- this.name = name;
- }
+ public static enum S702_CtrlModes implements SunSpecBitPoint {
+ MAX_W(new BitPoint(0, "S702_CTRL_MODES_MAX_W", "Max W")), //
+ FIXED_W(new BitPoint(1, "S702_CTRL_MODES_FIXED_W", "Fixed W")), //
+ FIXED_VAR(new BitPoint(2, "S702_CTRL_MODES_FIXED_VAR", "Fixed Var")), //
+ FIXED_PF(new BitPoint(3, "S702_CTRL_MODES_FIXED_PF", "Fixed Pf")), //
+ VOLT_VAR(new BitPoint(4, "S702_CTRL_MODES_VOLT_VAR", "Volt Var")), //
+ FREQ_WATT(new BitPoint(5, "S702_CTRL_MODES_FREQ_WATT", "Freq Watt")), //
+ DYN_REACT_CURR(new BitPoint(6, "S702_CTRL_MODES_DYN_REACT_CURR", "Dyn React Curr")), //
+ LV_TRIP(new BitPoint(7, "S702_CTRL_MODES_LV_TRIP", "Lv Trip")), //
+ HV_TRIP(new BitPoint(8, "S702_CTRL_MODES_HV_TRIP", "Hv Trip")), //
+ WATT_VAR(new BitPoint(9, "S702_CTRL_MODES_WATT_VAR", "Watt Var")), //
+ VOLT_WATT(new BitPoint(10, "S702_CTRL_MODES_VOLT_WATT", "Volt Watt")), //
+ SCHEDULED(new BitPoint(11, "S702_CTRL_MODES_SCHEDULED", "SCHEDULED")), //
+ LF_TRIP(new BitPoint(12, "S702_CTRL_MODES_LF_TRIP", "Lf Trip")), //
+ HF_TRIP(new BitPoint(13, "S702_CTRL_MODES_HF_TRIP", "Hf Trip"));
- @Override
- public int getValue() {
- return this.value;
- }
+ private final BitPoint point;
- @Override
- public String getName() {
- return this.name;
+ private S702_CtrlModes(BitPoint point) {
+ this.point = point;
}
@Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
- public static enum S702_IntIslandCatRtg implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- UNCATEGORIZED(0, "UNCATEGORIZED"), //
- INT_ISL_CAPABLE(1, "INT_ISL_CAPABLE"), //
- BLACK_START_CAPABLE(2, "BLACK_START_CAPABLE"), //
- ISOCH_CAPABLE(3, "ISOCH_CAPABLE"); //
-
- private final int value;
- private final String name;
-
- private S702_IntIslandCatRtg(int value, String name) {
- this.value = value;
- this.name = name;
- }
+ public static enum S702_IntIslandCatRtg implements SunSpecBitPoint {
+ UNCATEGORIZED(new BitPoint(0, "S702_INT_ISLAND_CAT_RTG_UNCATEGORIZED", "UNCATEGORIZED")), //
+ INT_ISL_CAPABLE(new BitPoint(1, "S702_INT_ISLAND_CAT_RTG_INT_ISL_CAPABLE", "Int Isl Capable")), //
+ BLACK_START_CAPABLE(new BitPoint(2, "S702_INT_ISLAND_CAT_RTG_BLACK_START_CAPABLE", "Black Start Capable")), //
+ ISOCH_CAPABLE(new BitPoint(3, "S702_INT_ISLAND_CAT_RTG_ISOCH_CAPABLE", "Isoch Capable"));
- @Override
- public int getValue() {
- return this.value;
- }
+ private final BitPoint point;
- @Override
- public String getName() {
- return this.name;
+ private S702_IntIslandCatRtg(BitPoint point) {
+ this.point = point;
}
@Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
- public static enum S702_IntIslandCat implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- UNCATEGORIZED(0, "UNCATEGORIZED"), //
- INT_ISL_CAPABLE(1, "INT_ISL_CAPABLE"), //
- BLACK_START_CAPABLE(2, "BLACK_START_CAPABLE"), //
- ISOCH_CAPABLE(3, "ISOCH_CAPABLE"); //
-
- private final int value;
- private final String name;
-
- private S702_IntIslandCat(int value, String name) {
- this.value = value;
- this.name = name;
- }
+ public static enum S702_IntIslandCat implements SunSpecBitPoint {
+ UNCATEGORIZED(new BitPoint(0, "S702_INT_ISLAND_CAT_UNCATEGORIZED", "UNCATEGORIZED")), //
+ INT_ISL_CAPABLE(new BitPoint(1, "S702_INT_ISLAND_CAT_INT_ISL_CAPABLE", "Int Isl Capable")), //
+ BLACK_START_CAPABLE(new BitPoint(2, "S702_INT_ISLAND_CAT_BLACK_START_CAPABLE", "Black Start Capable")), //
+ ISOCH_CAPABLE(new BitPoint(3, "S702_INT_ISLAND_CAT_ISOCH_CAPABLE", "Isoch Capable"));
- @Override
- public int getValue() {
- return this.value;
- }
+ private final BitPoint point;
- @Override
- public String getName() {
- return this.name;
+ private S702_IntIslandCat(BitPoint point) {
+ this.point = point;
}
@Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
public static enum S703 implements SunSpecPoint {
- ES(new PointImpl(//
- "S703_ES", //
- "Permit Enter Service", //
+ ES(new EnumPoint("S703_ES", "Permit Enter Service", //
"Permit enter service.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S703_ES.values())), //
- E_S_V_HI(new PointImpl(//
- "S703_E_S_V_HI", //
- "Enter Service Voltage High", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S703_ES.values())), //
+ E_S_V_HI(new ScaledValuePoint("S703_E_S_V_HI", "Enter Service Voltage High", //
"Enter service voltage high threshold as percent of normal voltage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "V_SF", //
- new OptionsEnum[0])), //
- E_S_V_LO(new PointImpl(//
- "S703_E_S_V_LO", //
- "Enter Service Voltage Low", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "V_SF")), //
+ E_S_V_LO(new ScaledValuePoint("S703_E_S_V_LO", "Enter Service Voltage Low", //
"Enter service voltage low threshold as percent of normal voltage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "V_SF", //
- new OptionsEnum[0])), //
- E_S_HZ_HI(new PointImpl(//
- "S703_E_S_HZ_HI", //
- "Enter Service Frequency High", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "V_SF")), //
+ E_S_HZ_HI(new ScaledValuePoint("S703_E_S_HZ_HI", "Enter Service Frequency High", //
"Enter service frequency high threshold.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.HERTZ, //
- "Hz_SF", //
- new OptionsEnum[0])), //
- E_S_HZ_LO(new PointImpl(//
- "S703_E_S_HZ_LO", //
- "Enter Service Frequency Low", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_WRITE, Unit.HERTZ, "Hz_SF")), //
+ E_S_HZ_LO(new ScaledValuePoint("S703_E_S_HZ_LO", "Enter Service Frequency Low", //
"Enter service frequency low threshold.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.HERTZ, //
- "Hz_SF", //
- new OptionsEnum[0])), //
- E_S_DLY_TMS(new PointImpl(//
- "S703_E_S_DLY_TMS", //
- "Enter Service Delay Time", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_WRITE, Unit.HERTZ, "Hz_SF")), //
+ E_S_DLY_TMS(new ValuePoint("S703_E_S_DLY_TMS", "Enter Service Delay Time", //
"Enter service delay time in seconds.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- E_S_RND_TMS(new PointImpl(//
- "S703_E_S_RND_TMS", //
- "Enter Service Random Delay", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ E_S_RND_TMS(new ValuePoint("S703_E_S_RND_TMS", "Enter Service Random Delay", //
"Enter service random delay in seconds.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- E_S_RMP_TMS(new PointImpl(//
- "S703_E_S_RMP_TMS", //
- "Enter Service Ramp Time", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ E_S_RMP_TMS(new ValuePoint("S703_E_S_RMP_TMS", "Enter Service Ramp Time", //
"Enter service ramp time in seconds.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- E_S_DLY_REM_TMS(new PointImpl(//
- "S703_E_S_DLY_REM_TMS", //
- "Enter Service Delay Remaining", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ E_S_DLY_REM_TMS(new ValuePoint("S703_E_S_DLY_REM_TMS", "Enter Service Delay Remaining", //
"Enter service delay time remaining in seconds.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- V_SF(new PointImpl(//
- "S703_V_SF", //
- "Voltage Scale Factor", //
- "Voltage percentage scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- HZ_S_F(new PointImpl(//
- "S703_HZ_S_F", //
- "Frequency Scale Factor", //
- "Frequency scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S703(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.SECONDS)), //
+ V_SF(new ScaleFactorPoint("S703_V_SF", "Voltage Scale Factor", //
+ "Voltage percentage scale factor.")), //
+ HZ_S_F(new ScaleFactorPoint("S703_HZ_S_F", "Frequency Scale Factor", //
+ "Frequency scale factor."));
+
+ private final Point point;
+
+ private S703(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
public static enum S703_ES implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -12282,496 +4434,146 @@ public OptionsEnum getUndefined() {
}
public static enum S704 implements SunSpecPoint {
- P_F_W_INJ_ENA(new PointImpl(//
- "S704_P_F_W_INJ_ENA", //
- "Power Factor Enable (W Inj) Enable", //
+ P_F_W_INJ_ENA(new EnumPoint("S704_P_F_W_INJ_ENA", "Power Factor Enable (W Inj) Enable", //
"Power factor enable when injecting active power.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S704_PFWInjEna.values())), //
- P_F_W_INJ_ENA_RVRT(new PointImpl(//
- "S704_P_F_W_INJ_ENA_RVRT", //
- "Power Factor Reversion Enable (W Inj)", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S704_PFWInjEna.values())), //
+ P_F_W_INJ_ENA_RVRT(new EnumPoint("S704_P_F_W_INJ_ENA_RVRT", "Power Factor Reversion Enable (W Inj)", //
"Power factor reversion timer when injecting active power enable.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S704_PFWInjEnaRvrt.values())), //
- P_F_W_INJ_RVRT_TMS(new PointImpl(//
- "S704_P_F_W_INJ_RVRT_TMS", //
- "PF Reversion Time (W Inj)", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S704_PFWInjEnaRvrt.values())), //
+ P_F_W_INJ_RVRT_TMS(new ValuePoint("S704_P_F_W_INJ_RVRT_TMS", "PF Reversion Time (W Inj)", //
"Power factor reversion timer when injecting active power.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- P_F_W_INJ_RVRT_REM(new PointImpl(//
- "S704_P_F_W_INJ_RVRT_REM", //
- "PF Reversion Time Rem (W Inj)", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ P_F_W_INJ_RVRT_REM(new ValuePoint("S704_P_F_W_INJ_RVRT_REM", "PF Reversion Time Rem (W Inj)", //
"Power factor reversion time remaining when injecting active power.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- P_F_W_ABS_ENA(new PointImpl(//
- "S704_P_F_W_ABS_ENA", //
- "Power Factor Enable (W Abs) Enable", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.SECONDS)), //
+ P_F_W_ABS_ENA(new EnumPoint("S704_P_F_W_ABS_ENA", "Power Factor Enable (W Abs) Enable", //
"Power factor enable when absorbing active power.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S704_PFWAbsEna.values())), //
- P_F_W_ABS_ENA_RVRT(new PointImpl(//
- "S704_P_F_W_ABS_ENA_RVRT", //
- "Power Factor Reversion Enable (W Abs)", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S704_PFWAbsEna.values())), //
+ P_F_W_ABS_ENA_RVRT(new EnumPoint("S704_P_F_W_ABS_ENA_RVRT", "Power Factor Reversion Enable (W Abs)", //
"Power factor reversion timer when absorbing active power enable.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S704_PFWAbsEnaRvrt.values())), //
- P_F_W_ABS_RVRT_TMS(new PointImpl(//
- "S704_P_F_W_ABS_RVRT_TMS", //
- "PF Reversion Time (W Abs)", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S704_PFWAbsEnaRvrt.values())), //
+ P_F_W_ABS_RVRT_TMS(new ValuePoint("S704_P_F_W_ABS_RVRT_TMS", "PF Reversion Time (W Abs)", //
"Power factor reversion timer when absorbing active power.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- P_F_W_ABS_RVRT_REM(new PointImpl(//
- "S704_P_F_W_ABS_RVRT_REM", //
- "PF Reversion Time Rem (W Abs)", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ P_F_W_ABS_RVRT_REM(new ValuePoint("S704_P_F_W_ABS_RVRT_REM", "PF Reversion Time Rem (W Abs)", //
"Power factor reversion time remaining when absorbing active power.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- W_MAX_LIM_PCT_ENA(new PointImpl(//
- "S704_W_MAX_LIM_PCT_ENA", //
- "Limit Max Power Pct Enable", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.SECONDS)), //
+ W_MAX_LIM_PCT_ENA(new EnumPoint("S704_W_MAX_LIM_PCT_ENA", "Limit Max Power Pct Enable", //
"Limit maximum active power percent enable.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S704_WMaxLimPctEna.values())), //
- W_MAX_LIM_PCT(new PointImpl(//
- "S704_W_MAX_LIM_PCT", //
- "Limit Max Power Pct Setpoint", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S704_WMaxLimPctEna.values())), //
+ W_MAX_LIM_PCT(new ScaledValuePoint("S704_W_MAX_LIM_PCT", "Limit Max Power Pct Setpoint", //
"Limit maximum active power percent value.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "WMaxLimPct_SF", //
- new OptionsEnum[0])), //
- W_MAX_LIM_PCT_RVRT(new PointImpl(//
- "S704_W_MAX_LIM_PCT_RVRT", //
- "Reversion Limit Max Power Pct", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "WMaxLimPct_SF")), //
+ W_MAX_LIM_PCT_RVRT(new ScaledValuePoint("S704_W_MAX_LIM_PCT_RVRT", "Reversion Limit Max Power Pct", //
"Reversion limit maximum active power percent value.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "WMaxLimPct_SF", //
- new OptionsEnum[0])), //
- W_MAX_LIM_PCT_ENA_RVRT(new PointImpl(//
- "S704_W_MAX_LIM_PCT_ENA_RVRT", //
- "Reversion Limit Max Power Pct Enable", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "WMaxLimPct_SF")), //
+ W_MAX_LIM_PCT_ENA_RVRT(new EnumPoint("S704_W_MAX_LIM_PCT_ENA_RVRT", "Reversion Limit Max Power Pct Enable", //
"Reversion limit maximum active power percent value enable.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S704_WMaxLimPctEnaRvrt.values())), //
- W_MAX_LIM_PCT_RVRT_TMS(new PointImpl(//
- "S704_W_MAX_LIM_PCT_RVRT_TMS", //
- "Limit Max Power Pct Reversion Time", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S704_WMaxLimPctEnaRvrt.values())), //
+ W_MAX_LIM_PCT_RVRT_TMS(new ValuePoint("S704_W_MAX_LIM_PCT_RVRT_TMS", "Limit Max Power Pct Reversion Time", //
"Limit maximum active power percent reversion time.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- W_MAX_LIM_PCT_RVRT_REM(new PointImpl(//
- "S704_W_MAX_LIM_PCT_RVRT_REM", //
- "Limit Max Power Pct Rev Time Rem", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ W_MAX_LIM_PCT_RVRT_REM(new ValuePoint("S704_W_MAX_LIM_PCT_RVRT_REM", "Limit Max Power Pct Rev Time Rem", //
"Limit maximum active power percent reversion time remaining.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- W_SET_ENA(new PointImpl(//
- "S704_W_SET_ENA", //
- "Set Active Power Enable", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.SECONDS)), //
+ W_SET_ENA(new EnumPoint("S704_W_SET_ENA", "Set Active Power Enable", //
"Set active power enable.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S704_WSetEna.values())), //
- W_SET_MOD(new PointImpl(//
- "S704_W_SET_MOD", //
- "Set Active Power Mode", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S704_WSetEna.values())), //
+ W_SET_MOD(new EnumPoint("S704_W_SET_MOD", "Set Active Power Mode", //
"Set active power mode.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S704_WSetMod.values())), //
- W_SET(new PointImpl(//
- "S704_W_SET", //
- "Active Power Setpoint (W)", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S704_WSetMod.values())), //
+ W_SET(new ScaledValuePoint("S704_W_SET", "Active Power Setpoint (W)", //
"Active power setting value in watts.", //
- "", //
- PointType.INT32, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.WATT, //
- "WSet_SF", //
- new OptionsEnum[0])), //
- W_SET_RVRT(new PointImpl(//
- "S704_W_SET_RVRT", //
- "Reversion Active Power (W)", //
+ ValuePoint.Type.INT32, false /* mandatory? */, AccessMode.READ_WRITE, Unit.WATT, "WSet_SF")), //
+ W_SET_RVRT(new ScaledValuePoint("S704_W_SET_RVRT", "Reversion Active Power (W)", //
"Reversion active power setting value in watts.", //
- "", //
- PointType.INT32, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.WATT, //
- "WSet_SF", //
- new OptionsEnum[0])), //
- W_SET_PCT(new PointImpl(//
- "S704_W_SET_PCT", //
- "Active Power Setpoint (Pct)", //
+ ValuePoint.Type.INT32, false /* mandatory? */, AccessMode.READ_WRITE, Unit.WATT, "WSet_SF")), //
+ W_SET_PCT(new ScaledValuePoint("S704_W_SET_PCT", "Active Power Setpoint (Pct)", //
"Active power setting value as percent.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "WSetPct_SF", //
- new OptionsEnum[0])), //
- W_SET_PCT_RVRT(new PointImpl(//
- "S704_W_SET_PCT_RVRT", //
- "Reversion Active Power (Pct)", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "WSetPct_SF")), //
+ W_SET_PCT_RVRT(new ScaledValuePoint("S704_W_SET_PCT_RVRT", "Reversion Active Power (Pct)", //
"Reversion active power setting value as percent.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "WSetPct_SF", //
- new OptionsEnum[0])), //
- W_SET_ENA_RVRT(new PointImpl(//
- "S704_W_SET_ENA_RVRT", //
- "Reversion Active Power Enable", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "WSetPct_SF")), //
+ W_SET_ENA_RVRT(new EnumPoint("S704_W_SET_ENA_RVRT", "Reversion Active Power Enable", //
"Reversion active power function enable.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S704_WSetEnaRvrt.values())), //
- W_SET_RVRT_TMS(new PointImpl(//
- "S704_W_SET_RVRT_TMS", //
- "Active Power Reversion Time", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S704_WSetEnaRvrt.values())), //
+ W_SET_RVRT_TMS(new ValuePoint("S704_W_SET_RVRT_TMS", "Active Power Reversion Time", //
"Set active power reversion time.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- W_SET_RVRT_REM(new PointImpl(//
- "S704_W_SET_RVRT_REM", //
- "Active Power Rev Time Rem", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ W_SET_RVRT_REM(new ValuePoint("S704_W_SET_RVRT_REM", "Active Power Rev Time Rem", //
"Set active power reversion time remaining.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- VAR_SET_ENA(new PointImpl(//
- "S704_VAR_SET_ENA", //
- "Set Reactive Power Enable", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.SECONDS)), //
+ VAR_SET_ENA(new EnumPoint("S704_VAR_SET_ENA", "Set Reactive Power Enable", //
"Set reactive power enable.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S704_VarSetEna.values())), //
- VAR_SET_MOD(new PointImpl(//
- "S704_VAR_SET_MOD", //
- "Set Reactive Power Mode", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S704_VarSetEna.values())), //
+ VAR_SET_MOD(new EnumPoint("S704_VAR_SET_MOD", "Set Reactive Power Mode", //
"Set reactive power mode.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S704_VarSetMod.values())), //
- VAR_SET_PRI(new PointImpl(//
- "S704_VAR_SET_PRI", //
- "Reactive Power Priority", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S704_VarSetMod.values())), //
+ VAR_SET_PRI(new EnumPoint("S704_VAR_SET_PRI", "Reactive Power Priority", //
"Reactive power priority.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S704_VarSetPri.values())), //
- VAR_SET(new PointImpl(//
- "S704_VAR_SET", //
- "Reactive Power Setpoint (Vars)", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S704_VarSetPri.values())), //
+ VAR_SET(new ScaledValuePoint("S704_VAR_SET", "Reactive Power Setpoint (Vars)", //
"Reactive power setting value in vars.", //
- "", //
- PointType.INT32, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VarSet_SF", //
- new OptionsEnum[0])), //
- VAR_SET_RVRT(new PointImpl(//
- "S704_VAR_SET_RVRT", //
- "Reversion Reactive Power (Vars)", //
+ ValuePoint.Type.INT32, false /* mandatory? */, AccessMode.READ_WRITE, Unit.VOLT_AMPERE_REACTIVE, "VarSet_SF")), //
+ VAR_SET_RVRT(new ScaledValuePoint("S704_VAR_SET_RVRT", "Reversion Reactive Power (Vars)", //
"Reversion reactive power setting value in vars.", //
- "", //
- PointType.INT32, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.VOLT_AMPERE_REACTIVE, //
- "VarSet_SF", //
- new OptionsEnum[0])), //
- VAR_SET_PCT(new PointImpl(//
- "S704_VAR_SET_PCT", //
- "Reactive Power Setpoint (Pct)", //
+ ValuePoint.Type.INT32, false /* mandatory? */, AccessMode.READ_WRITE, Unit.VOLT_AMPERE_REACTIVE, "VarSet_SF")), //
+ VAR_SET_PCT(new ScaledValuePoint("S704_VAR_SET_PCT", "Reactive Power Setpoint (Pct)", //
"Reactive power setting value as percent.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "VarSetPct_SF", //
- new OptionsEnum[0])), //
- VAR_SET_PCT_RVRT(new PointImpl(//
- "S704_VAR_SET_PCT_RVRT", //
- "Reversion Reactive Power (Pct)", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "VarSetPct_SF")), //
+ VAR_SET_PCT_RVRT(new ScaledValuePoint("S704_VAR_SET_PCT_RVRT", "Reversion Reactive Power (Pct)", //
"Reversion reactive power setting value as percent.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- "VarSetPct_SF", //
- new OptionsEnum[0])), //
- VAR_SET_ENA_RVRT(new PointImpl(//
- "S704_VAR_SET_ENA_RVRT", //
- "Reversion Reactive Power Enable", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE, "VarSetPct_SF")), //
+ VAR_SET_ENA_RVRT(new EnumPoint("S704_VAR_SET_ENA_RVRT", "Reversion Reactive Power Enable", //
"Reversion reactive power function enable.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S704_VarSetEnaRvrt.values())), //
- VAR_SET_RVRT_TMS(new PointImpl(//
- "S704_VAR_SET_RVRT_TMS", //
- "Reactive Power Reversion Time", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S704_VarSetEnaRvrt.values())), //
+ VAR_SET_RVRT_TMS(new ValuePoint("S704_VAR_SET_RVRT_TMS", "Reactive Power Reversion Time", //
"Set reactive power reversion time.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- VAR_SET_RVRT_REM(new PointImpl(//
- "S704_VAR_SET_RVRT_REM", //
- "Reactive Power Rev Time Rem", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ VAR_SET_RVRT_REM(new ValuePoint("S704_VAR_SET_RVRT_REM", "Reactive Power Rev Time Rem", //
"Set reactive power reversion time remaining.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- W_RMP(new PointImpl(//
- "S704_W_RMP", //
- "Normal Ramp Rate", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.SECONDS)), //
+ W_RMP(new ValuePoint("S704_W_RMP", "Normal Ramp Rate", //
"Ramp rate for increases in active power during normal generation.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W_RMP_REF(new PointImpl(//
- "S704_W_RMP_REF", //
- "Normal Ramp Rate Reference", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ W_RMP_REF(new EnumPoint("S704_W_RMP_REF", "Normal Ramp Rate Reference", //
"Ramp rate reference unit for increases in active power or current during normal generation.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S704_WRmpRef.values())), //
- VAR_RMP(new PointImpl(//
- "S704_VAR_RMP", //
- "Reactive Power Ramp Rate", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S704_WRmpRef.values())), //
+ VAR_RMP(new ValuePoint("S704_VAR_RMP", "Reactive Power Ramp Rate", //
"Ramp rate based on max reactive power per second.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ANTI_ISL_ENA(new PointImpl(//
- "S704_ANTI_ISL_ENA", //
- "Anti-Islanding Enable", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ ANTI_ISL_ENA(new EnumPoint("S704_ANTI_ISL_ENA", "Anti-Islanding Enable", //
"Anti-islanding enable.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S704_AntiIslEna.values())), //
- PF_SF(new PointImpl(//
- "S704_PF_SF", //
- "Power Factor Scale Factor", //
- "Power factor scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W_MAX_LIM_PCT_S_F(new PointImpl(//
- "S704_W_MAX_LIM_PCT_S_F", //
- "Limit Max Power Scale Factor", //
- "Limit maximum power scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W_SET_S_F(new PointImpl(//
- "S704_W_SET_S_F", //
- "Active Power Scale Factor", //
- "Active power scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W_SET_PCT_S_F(new PointImpl(//
- "S704_W_SET_PCT_S_F", //
- "Active Power Pct Scale Factor", //
- "Active power pct scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VAR_SET_S_F(new PointImpl(//
- "S704_VAR_SET_S_F", //
- "Reactive Power Scale Factor", //
- "Reactive power scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- VAR_SET_PCT_S_F(new PointImpl(//
- "S704_VAR_SET_PCT_S_F", //
- "Reactive Power Pct Scale Factor", //
- "Reactive power pct scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S704(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S704_AntiIslEna.values())), //
+ PF_SF(new ScaleFactorPoint("S704_PF_SF", "Power Factor Scale Factor", //
+ "Power factor scale factor.")), //
+ W_MAX_LIM_PCT_S_F(new ScaleFactorPoint("S704_W_MAX_LIM_PCT_S_F", "Limit Max Power Scale Factor", //
+ "Limit maximum power scale factor.")), //
+ W_SET_S_F(new ScaleFactorPoint("S704_W_SET_S_F", "Active Power Scale Factor", //
+ "Active power scale factor.")), //
+ W_SET_PCT_S_F(new ScaleFactorPoint("S704_W_SET_PCT_S_F", "Active Power Pct Scale Factor", //
+ "Active power pct scale factor.")), //
+ VAR_SET_S_F(new ScaleFactorPoint("S704_VAR_SET_S_F", "Reactive Power Scale Factor", //
+ "Reactive power scale factor.")), //
+ VAR_SET_PCT_S_F(new ScaleFactorPoint("S704_VAR_SET_PCT_S_F", "Reactive Power Pct Scale Factor", //
+ "Reactive power pct scale factor."));
+
+ private final Point point;
+
+ private S704(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
public static enum S704_PFWInjEna implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -12800,7 +4602,7 @@ public OptionsEnum getUndefined() {
public static enum S704_PFWInjEnaRvrt implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -12829,7 +4631,7 @@ public OptionsEnum getUndefined() {
public static enum S704_PFWAbsEna implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -12858,7 +4660,7 @@ public OptionsEnum getUndefined() {
public static enum S704_PFWAbsEnaRvrt implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -12887,7 +4689,7 @@ public OptionsEnum getUndefined() {
public static enum S704_WMaxLimPctEna implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -12916,7 +4718,7 @@ public OptionsEnum getUndefined() {
public static enum S704_WMaxLimPctEnaRvrt implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -12945,7 +4747,7 @@ public OptionsEnum getUndefined() {
public static enum S704_WSetEna implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -12974,7 +4776,7 @@ public OptionsEnum getUndefined() {
public static enum S704_WSetMod implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
W_MAX_PCT(0, "W_MAX_PCT"), //
- WATTS(1, "WATTS"); //
+ WATTS(1, "WATTS");
private final int value;
private final String name;
@@ -13003,7 +4805,7 @@ public OptionsEnum getUndefined() {
public static enum S704_WSetEnaRvrt implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -13032,7 +4834,7 @@ public OptionsEnum getUndefined() {
public static enum S704_VarSetEna implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -13064,7 +4866,7 @@ public static enum S704_VarSetMod implements OptionsEnum {
VAR_MAX_PCT(1, "VAR_MAX_PCT"), //
VAR_AVAIL_PCT(2, "VAR_AVAIL_PCT"), //
VA_MAX_PCT(3, "VA_MAX_PCT"), //
- VARS(4, "VARS"); //
+ VARS(4, "VARS");
private final int value;
private final String name;
@@ -13094,7 +4896,7 @@ public static enum S704_VarSetPri implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
ACTIVE(0, "ACTIVE"), //
REACTIVE(1, "REACTIVE"), //
- VENDOR(2, "VENDOR"); //
+ VENDOR(2, "VENDOR");
private final int value;
private final String name;
@@ -13123,7 +4925,7 @@ public OptionsEnum getUndefined() {
public static enum S704_VarSetEnaRvrt implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -13152,7 +4954,7 @@ public OptionsEnum getUndefined() {
public static enum S704_WRmpRef implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
A_MAX(0, "A_MAX"), //
- W_MAX(1, "W_MAX"); //
+ W_MAX(1, "W_MAX");
private final int value;
private final String name;
@@ -13181,7 +4983,7 @@ public OptionsEnum getUndefined() {
public static enum S704_AntiIslEna implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -13208,144 +5010,53 @@ public OptionsEnum getUndefined() {
}
public static enum S705 implements SunSpecPoint {
- ENA(new PointImpl(//
- "S705_ENA", //
- "DER Volt-Var Module Enable", //
+ ENA(new EnumPoint("S705_ENA", "DER Volt-Var Module Enable", //
"Volt-Var control enable.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S705_Ena.values())), //
- ADPT_CRV_REQ(new PointImpl(//
- "S705_ADPT_CRV_REQ", //
- "Adopt Curve Request", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_WRITE, S705_Ena.values())), //
+ ADPT_CRV_REQ(new ValuePoint("S705_ADPT_CRV_REQ", "Adopt Curve Request", //
"Index of curve points to adopt. First curve index is 1.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ADPT_CRV_RSLT(new PointImpl(//
- "S705_ADPT_CRV_RSLT", //
- "Adopt Curve Result", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ ADPT_CRV_RSLT(new EnumPoint("S705_ADPT_CRV_RSLT", "Adopt Curve Result", //
"Result of last adopt curve operation.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S705_AdptCrvRslt.values())), //
- N_PT(new PointImpl(//
- "S705_N_PT", //
- "Number Of Points", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S705_AdptCrvRslt.values())), //
+ N_PT(new ValuePoint("S705_N_PT", "Number Of Points", //
"Number of curve points supported.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- N_CRV(new PointImpl(//
- "S705_N_CRV", //
- "Stored Curve Count", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ N_CRV(new ValuePoint("S705_N_CRV", "Stored Curve Count", //
"Number of stored curves supported.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- RVRT_TMS(new PointImpl(//
- "S705_RVRT_TMS", //
- "Reversion Timeout", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ RVRT_TMS(new ValuePoint("S705_RVRT_TMS", "Reversion Timeout", //
"Reversion time in seconds. 0 = No reversion time.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- RVRT_REM(new PointImpl(//
- "S705_RVRT_REM", //
- "Reversion Time Remaining", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ RVRT_REM(new ValuePoint("S705_RVRT_REM", "Reversion Time Remaining", //
"Reversion time remaining in seconds.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- RVRT_CRV(new PointImpl(//
- "S705_RVRT_CRV", //
- "Reversion Curve", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.SECONDS)), //
+ RVRT_CRV(new ValuePoint("S705_RVRT_CRV", "Reversion Curve", //
"Default curve after reversion timeout.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_SF(new PointImpl(//
- "S705_V_SF", //
- "Voltage Scale Factor", //
- "Scale factor for curve voltage points.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DEPT_REF_S_F(new PointImpl(//
- "S705_DEPT_REF_S_F", //
- "Var Scale Factor", //
- "Scale factor for curve var points.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- RSP_TMS_S_F(new PointImpl(//
- "S705_RSP_TMS_S_F", //
- "Open-Loop Scale Factor", //
- "Open loop response time scale factor.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S705(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ V_SF(new ScaleFactorPoint("S705_V_SF", "Voltage Scale Factor", //
+ "Scale factor for curve voltage points.")), //
+ DEPT_REF_S_F(new ScaleFactorPoint("S705_DEPT_REF_S_F", "Var Scale Factor", //
+ "Scale factor for curve var points.")), //
+ RSP_TMS_S_F(new ScaleFactorPoint("S705_RSP_TMS_S_F", "Open-Loop Scale Factor", //
+ "Open loop response time scale factor."));
+
+ private final Point point;
+
+ private S705(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
public static enum S705_Ena implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -13375,7 +5086,7 @@ public static enum S705_AdptCrvRslt implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
IN_PROGRESS(0, "IN_PROGRESS"), //
COMPLETED(1, "COMPLETED"), //
- FAILED(2, "FAILED"); //
+ FAILED(2, "FAILED");
private final int value;
private final String name;
@@ -13402,144 +5113,53 @@ public OptionsEnum getUndefined() {
}
public static enum S706 implements SunSpecPoint {
- ENA(new PointImpl(//
- "S706_ENA", //
- "DER Volt-Watt Module Enable", //
+ ENA(new EnumPoint("S706_ENA", "DER Volt-Watt Module Enable", //
"Volt-Watt control enable.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S706_Ena.values())), //
- ADPT_CRV_REQ(new PointImpl(//
- "S706_ADPT_CRV_REQ", //
- "Adopt Curve Request", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_WRITE, S706_Ena.values())), //
+ ADPT_CRV_REQ(new ValuePoint("S706_ADPT_CRV_REQ", "Adopt Curve Request", //
"Index of curve points to adopt. First curve index is 1.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ADPT_CRV_RSLT(new PointImpl(//
- "S706_ADPT_CRV_RSLT", //
- "Adopt Curve Result", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ ADPT_CRV_RSLT(new EnumPoint("S706_ADPT_CRV_RSLT", "Adopt Curve Result", //
"Result of last adopt curve operation.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S706_AdptCrvRslt.values())), //
- N_PT(new PointImpl(//
- "S706_N_PT", //
- "Number Of Points", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S706_AdptCrvRslt.values())), //
+ N_PT(new ValuePoint("S706_N_PT", "Number Of Points", //
"Number of curve points supported.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- N_CRV(new PointImpl(//
- "S706_N_CRV", //
- "Stored Curve Count", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ N_CRV(new ValuePoint("S706_N_CRV", "Stored Curve Count", //
"Number of stored curves supported.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- RVRT_TMS(new PointImpl(//
- "S706_RVRT_TMS", //
- "Reversion Timeout", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ RVRT_TMS(new ValuePoint("S706_RVRT_TMS", "Reversion Timeout", //
"Reversion time in seconds. 0 = No reversion time.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- RVRT_REM(new PointImpl(//
- "S706_RVRT_REM", //
- "Reversion Time Remaining", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ RVRT_REM(new ValuePoint("S706_RVRT_REM", "Reversion Time Remaining", //
"Reversion time remaining in seconds.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- RVRT_CRV(new PointImpl(//
- "S706_RVRT_CRV", //
- "Reversion Curve", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.SECONDS)), //
+ RVRT_CRV(new ValuePoint("S706_RVRT_CRV", "Reversion Curve", //
"Default curve after reversion timeout.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_SF(new PointImpl(//
- "S706_V_SF", //
- "Voltage Scale Factor", //
- "Scale factor for curve voltage points.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DEPT_REF_S_F(new PointImpl(//
- "S706_DEPT_REF_S_F", //
- "Watt Scale Factor", //
- "Scale factor for curve watt points.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- RSP_TMS_S_F(new PointImpl(//
- "S706_RSP_TMS_S_F", //
- "Open-Loop Scale Factor", //
- "Open loop response time scale factor.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S706(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ V_SF(new ScaleFactorPoint("S706_V_SF", "Voltage Scale Factor", //
+ "Scale factor for curve voltage points.")), //
+ DEPT_REF_S_F(new ScaleFactorPoint("S706_DEPT_REF_S_F", "Watt Scale Factor", //
+ "Scale factor for curve watt points.")), //
+ RSP_TMS_S_F(new ScaleFactorPoint("S706_RSP_TMS_S_F", "Open-Loop Scale Factor", //
+ "Open loop response time scale factor."));
+
+ private final Point point;
+
+ private S706(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
public static enum S706_Ena implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -13569,7 +5189,7 @@ public static enum S706_AdptCrvRslt implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
IN_PROGRESS(0, "IN_PROGRESS"), //
COMPLETED(1, "COMPLETED"), //
- FAILED(2, "FAILED"); //
+ FAILED(2, "FAILED");
private final int value;
private final String name;
@@ -13596,100 +5216,42 @@ public OptionsEnum getUndefined() {
}
public static enum S707 implements SunSpecPoint {
- ENA(new PointImpl(//
- "S707_ENA", //
- "DER Trip LV Module Enable", //
+ ENA(new EnumPoint("S707_ENA", "DER Trip LV Module Enable", //
"DER low voltage trip control enable.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S707_Ena.values())), //
- ADPT_CRV_REQ(new PointImpl(//
- "S707_ADPT_CRV_REQ", //
- "Adopt Curve Request", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_WRITE, S707_Ena.values())), //
+ ADPT_CRV_REQ(new ValuePoint("S707_ADPT_CRV_REQ", "Adopt Curve Request", //
"Index of curve points to adopt. First curve index is 1.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ADPT_CRV_RSLT(new PointImpl(//
- "S707_ADPT_CRV_RSLT", //
- "Adopt Curve Result", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ ADPT_CRV_RSLT(new EnumPoint("S707_ADPT_CRV_RSLT", "Adopt Curve Result", //
"Result of last adopt curve operation.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S707_AdptCrvRslt.values())), //
- N_PT(new PointImpl(//
- "S707_N_PT", //
- "Number Of Points", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S707_AdptCrvRslt.values())), //
+ N_PT(new ValuePoint("S707_N_PT", "Number Of Points", //
"Number of curve points supported.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- N_CRV_SET(new PointImpl(//
- "S707_N_CRV_SET", //
- "Stored Curve Count", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ N_CRV_SET(new ValuePoint("S707_N_CRV_SET", "Stored Curve Count", //
"Number of stored curves supported.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_SF(new PointImpl(//
- "S707_V_SF", //
- "Voltage Scale Factor", //
- "Scale factor for curve voltage points.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TMS_S_F(new PointImpl(//
- "S707_TMS_S_F", //
- "Time Point Scale Factor", //
- "Scale factor for curve time points.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S707(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ V_SF(new ScaleFactorPoint("S707_V_SF", "Voltage Scale Factor", //
+ "Scale factor for curve voltage points.")), //
+ TMS_S_F(new ScaleFactorPoint("S707_TMS_S_F", "Time Point Scale Factor", //
+ "Scale factor for curve time points."));
+
+ private final Point point;
+
+ private S707(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
public static enum S707_Ena implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -13719,7 +5281,7 @@ public static enum S707_AdptCrvRslt implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
IN_PROGRESS(0, "IN_PROGRESS"), //
COMPLETED(1, "COMPLETED"), //
- FAILED(2, "FAILED"); //
+ FAILED(2, "FAILED");
private final int value;
private final String name;
@@ -13746,100 +5308,42 @@ public OptionsEnum getUndefined() {
}
public static enum S708 implements SunSpecPoint {
- ENA(new PointImpl(//
- "S708_ENA", //
- "DER Trip HV Module Enable", //
+ ENA(new EnumPoint("S708_ENA", "DER Trip HV Module Enable", //
"DER high voltage trip control enable.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S708_Ena.values())), //
- ADPT_CRV_REQ(new PointImpl(//
- "S708_ADPT_CRV_REQ", //
- "Adopt Curve Request", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_WRITE, S708_Ena.values())), //
+ ADPT_CRV_REQ(new ValuePoint("S708_ADPT_CRV_REQ", "Adopt Curve Request", //
"Index of curve points to adopt. First curve index is 1.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ADPT_CRV_RSLT(new PointImpl(//
- "S708_ADPT_CRV_RSLT", //
- "Adopt Curve Result", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ ADPT_CRV_RSLT(new EnumPoint("S708_ADPT_CRV_RSLT", "Adopt Curve Result", //
"Result of last adopt curve operation.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S708_AdptCrvRslt.values())), //
- N_PT(new PointImpl(//
- "S708_N_PT", //
- "Number Of Points", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S708_AdptCrvRslt.values())), //
+ N_PT(new ValuePoint("S708_N_PT", "Number Of Points", //
"Number of curve points supported.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- N_CRV_SET(new PointImpl(//
- "S708_N_CRV_SET", //
- "Stored Curve Count", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ N_CRV_SET(new ValuePoint("S708_N_CRV_SET", "Stored Curve Count", //
"Number of stored curves supported.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_SF(new PointImpl(//
- "S708_V_SF", //
- "Voltage Scale Factor", //
- "Scale factor for curve voltage points.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TMS_S_F(new PointImpl(//
- "S708_TMS_S_F", //
- "Time Point Scale Factor", //
- "Scale factor for curve time points.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S708(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ V_SF(new ScaleFactorPoint("S708_V_SF", "Voltage Scale Factor", //
+ "Scale factor for curve voltage points.")), //
+ TMS_S_F(new ScaleFactorPoint("S708_TMS_S_F", "Time Point Scale Factor", //
+ "Scale factor for curve time points."));
+
+ private final Point point;
+
+ private S708(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
public static enum S708_Ena implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -13869,7 +5373,7 @@ public static enum S708_AdptCrvRslt implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
IN_PROGRESS(0, "IN_PROGRESS"), //
COMPLETED(1, "COMPLETED"), //
- FAILED(2, "FAILED"); //
+ FAILED(2, "FAILED");
private final int value;
private final String name;
@@ -13896,100 +5400,42 @@ public OptionsEnum getUndefined() {
}
public static enum S709 implements SunSpecPoint {
- ENA(new PointImpl(//
- "S709_ENA", //
- "DER Trip LF Module Enable", //
+ ENA(new EnumPoint("S709_ENA", "DER Trip LF Module Enable", //
"DER low frequency trip control enable.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S709_Ena.values())), //
- ADPT_CRV_REQ(new PointImpl(//
- "S709_ADPT_CRV_REQ", //
- "Adopt Curve Request", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_WRITE, S709_Ena.values())), //
+ ADPT_CRV_REQ(new ValuePoint("S709_ADPT_CRV_REQ", "Adopt Curve Request", //
"Index of curve points to adopt. First curve index is 1.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ADPT_CRV_RSLT(new PointImpl(//
- "S709_ADPT_CRV_RSLT", //
- "Adopt Curve Result", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ ADPT_CRV_RSLT(new EnumPoint("S709_ADPT_CRV_RSLT", "Adopt Curve Result", //
"Result of last adopt curve operation.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S709_AdptCrvRslt.values())), //
- N_PT(new PointImpl(//
- "S709_N_PT", //
- "Number Of Points", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S709_AdptCrvRslt.values())), //
+ N_PT(new ValuePoint("S709_N_PT", "Number Of Points", //
"Number of curve points supported.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- N_CRV_SET(new PointImpl(//
- "S709_N_CRV_SET", //
- "Stored Curve Count", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ N_CRV_SET(new ValuePoint("S709_N_CRV_SET", "Stored Curve Count", //
"Number of stored curves supported.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- HZ_S_F(new PointImpl(//
- "S709_HZ_S_F", //
- "Frequency Scale Factor", //
- "Scale factor for curve frequency points.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TMS_S_F(new PointImpl(//
- "S709_TMS_S_F", //
- "Time Point Scale Factor", //
- "Scale factor for curve time points.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S709(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ HZ_S_F(new ScaleFactorPoint("S709_HZ_S_F", "Frequency Scale Factor", //
+ "Scale factor for curve frequency points.")), //
+ TMS_S_F(new ScaleFactorPoint("S709_TMS_S_F", "Time Point Scale Factor", //
+ "Scale factor for curve time points."));
+
+ private final Point point;
+
+ private S709(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
public static enum S709_Ena implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -14019,7 +5465,7 @@ public static enum S709_AdptCrvRslt implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
IN_PROGRESS(0, "IN_PROGRESS"), //
COMPLETED(1, "COMPLETED"), //
- FAILED(2, "FAILED"); //
+ FAILED(2, "FAILED");
private final int value;
private final String name;
@@ -14046,100 +5492,42 @@ public OptionsEnum getUndefined() {
}
public static enum S710 implements SunSpecPoint {
- ENA(new PointImpl(//
- "S710_ENA", //
- "DER Trip HF Module Enable", //
+ ENA(new EnumPoint("S710_ENA", "DER Trip HF Module Enable", //
"DER high frequency trip control enable.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S710_Ena.values())), //
- ADPT_CRV_REQ(new PointImpl(//
- "S710_ADPT_CRV_REQ", //
- "Adopt Curve Request", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_WRITE, S710_Ena.values())), //
+ ADPT_CRV_REQ(new ValuePoint("S710_ADPT_CRV_REQ", "Adopt Curve Request", //
"Index of curve points to adopt. First curve index is 1.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ADPT_CRV_RSLT(new PointImpl(//
- "S710_ADPT_CRV_RSLT", //
- "Adopt Curve Result", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ ADPT_CRV_RSLT(new EnumPoint("S710_ADPT_CRV_RSLT", "Adopt Curve Result", //
"Result of last adopt curve operation.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S710_AdptCrvRslt.values())), //
- N_PT(new PointImpl(//
- "S710_N_PT", //
- "Number Of Points", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S710_AdptCrvRslt.values())), //
+ N_PT(new ValuePoint("S710_N_PT", "Number Of Points", //
"Number of curve points supported.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- N_CRV_SET(new PointImpl(//
- "S710_N_CRV_SET", //
- "Stored Curve Count", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ N_CRV_SET(new ValuePoint("S710_N_CRV_SET", "Stored Curve Count", //
"Number of stored curves supported.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- HZ_S_F(new PointImpl(//
- "S710_HZ_S_F", //
- "Frequency Scale Factor", //
- "Scale factor for curve frequency points.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TMS_S_F(new PointImpl(//
- "S710_TMS_S_F", //
- "Time Point Scale Factor", //
- "Scale factor for curve time points.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S710(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ HZ_S_F(new ScaleFactorPoint("S710_HZ_S_F", "Frequency Scale Factor", //
+ "Scale factor for curve frequency points.")), //
+ TMS_S_F(new ScaleFactorPoint("S710_TMS_S_F", "Time Point Scale Factor", //
+ "Scale factor for curve time points."));
+
+ private final Point point;
+
+ private S710(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
public static enum S710_Ena implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -14169,7 +5557,7 @@ public static enum S710_AdptCrvRslt implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
IN_PROGRESS(0, "IN_PROGRESS"), //
COMPLETED(1, "COMPLETED"), //
- FAILED(2, "FAILED"); //
+ FAILED(2, "FAILED");
private final int value;
private final String name;
@@ -14196,133 +5584,50 @@ public OptionsEnum getUndefined() {
}
public static enum S711 implements SunSpecPoint {
- ENA(new PointImpl(//
- "S711_ENA", //
- "DER Frequency Droop Module Enable", //
+ ENA(new EnumPoint("S711_ENA", "DER Frequency Droop Module Enable", //
"DER Frequency-Watt (Frequency-Droop) control enable.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S711_Ena.values())), //
- ADPT_CTL_REQ(new PointImpl(//
- "S711_ADPT_CTL_REQ", //
- "Set Active Control Request", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_WRITE, S711_Ena.values())), //
+ ADPT_CTL_REQ(new ValuePoint("S711_ADPT_CTL_REQ", "Set Active Control Request", //
"Set active control. 0 = No active control.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ADPT_CTL_RSLT(new PointImpl(//
- "S711_ADPT_CTL_RSLT", //
- "Set Active Control Result", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ ADPT_CTL_RSLT(new EnumPoint("S711_ADPT_CTL_RSLT", "Set Active Control Result", //
"Result of last set active control operation.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S711_AdptCtlRslt.values())), //
- N_CTL(new PointImpl(//
- "S711_N_CTL", //
- "Stored Control Count", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S711_AdptCtlRslt.values())), //
+ N_CTL(new ValuePoint("S711_N_CTL", "Stored Control Count", //
"Number of stored controls supported.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- RVRT_TMS(new PointImpl(//
- "S711_RVRT_TMS", //
- "Reversion Timeout", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ RVRT_TMS(new ValuePoint("S711_RVRT_TMS", "Reversion Timeout", //
"Reversion time in seconds. 0 = No reversion time.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- RVRT_REM(new PointImpl(//
- "S711_RVRT_REM", //
- "Reversion Time Left", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ RVRT_REM(new ValuePoint("S711_RVRT_REM", "Reversion Time Left", //
"Reversion time remaining in seconds.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- RVRT_CTL(new PointImpl(//
- "S711_RVRT_CTL", //
- "Reversion Control", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.SECONDS)), //
+ RVRT_CTL(new ValuePoint("S711_RVRT_CTL", "Reversion Control", //
"Default control after reversion timeout.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DB_S_F(new PointImpl(//
- "S711_DB_S_F", //
- "Deadband Scale Factor", //
- "Deadband scale factor.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- K_SF(new PointImpl(//
- "S711_K_SF", //
- "Frequency Change Scale Factor", //
- "Frequency change scale factor.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- RSP_TMS_S_F(new PointImpl(//
- "S711_RSP_TMS_S_F", //
- "Open-Loop Scale Factor", //
- "Open loop response time scale factor.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S711(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ DB_S_F(new ScaleFactorPoint("S711_DB_S_F", "Deadband Scale Factor", //
+ "Deadband scale factor.")), //
+ K_SF(new ScaleFactorPoint("S711_K_SF", "Frequency Change Scale Factor", //
+ "Frequency change scale factor.")), //
+ RSP_TMS_S_F(new ScaleFactorPoint("S711_RSP_TMS_S_F", "Open-Loop Scale Factor", //
+ "Open loop response time scale factor."));
+
+ private final Point point;
+
+ private S711(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
public static enum S711_Ena implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -14352,7 +5657,7 @@ public static enum S711_AdptCtlRslt implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
IN_PROGRESS(0, "IN_PROGRESS"), //
COMPLETED(1, "COMPLETED"), //
- FAILED(2, "FAILED"); //
+ FAILED(2, "FAILED");
private final int value;
private final String name;
@@ -14379,133 +5684,51 @@ public OptionsEnum getUndefined() {
}
public static enum S712 implements SunSpecPoint {
- ENA(new PointImpl(//
- "S712_ENA", //
- "DER Watt-Var Module Enable", //
+ ENA(new EnumPoint("S712_ENA", "DER Watt-Var Module Enable", //
"DER Watt-Var control enable.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S712_Ena.values())), //
- ADPT_CRV_REQ(new PointImpl(//
- "S712_ADPT_CRV_REQ", //
- "Set Active Curve Request", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_WRITE, S712_Ena.values())), //
+ ADPT_CRV_REQ(new ValuePoint("S712_ADPT_CRV_REQ", "Set Active Curve Request", //
"Set active curve. 0 = No active curve.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ADPT_CRV_RSLT(new PointImpl(//
- "S712_ADPT_CRV_RSLT", //
- "Set Active Curve Result", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ ADPT_CRV_RSLT(new EnumPoint("S712_ADPT_CRV_RSLT", "Set Active Curve Result", //
"Result of last set active curve operation.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S712_AdptCrvRslt.values())), //
- N_PT(new PointImpl(//
- "S712_N_PT", //
- "Number Of Points", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S712_AdptCrvRslt.values())), //
+ N_PT(new ValuePoint("S712_N_PT", "Number Of Points", //
"Number of curve points supported.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- N_CRV(new PointImpl(//
- "S712_N_CRV", //
- "Stored Curve Count", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ N_CRV(new ValuePoint("S712_N_CRV", "Stored Curve Count", //
"Number of stored curves supported.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- RVRT_TMS(new PointImpl(//
- "S712_RVRT_TMS", //
- "Reversion Timeout", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ RVRT_TMS(new ValuePoint("S712_RVRT_TMS", "Reversion Timeout", //
"Reversion time in seconds. 0 = No reversion time.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- RVRT_REM(new PointImpl(//
- "S712_RVRT_REM", //
- "Reversion Time Left", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_WRITE, Unit.SECONDS)), //
+ RVRT_REM(new ValuePoint("S712_RVRT_REM", "Reversion Time Left", //
"Reversion time remaining in seconds.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.SECONDS, //
- null, //
- new OptionsEnum[0])), //
- RVRT_CRV(new PointImpl(//
- "S712_RVRT_CRV", //
- "Reversion Curve", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.SECONDS)), //
+ RVRT_CRV(new ValuePoint("S712_RVRT_CRV", "Reversion Curve", //
"Default curve after reversion timeout.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W_SF(new PointImpl(//
- "S712_W_SF", //
- "Active Power Scale Factor", //
- "Scale factor for curve active power points.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DEPT_REF_S_F(new PointImpl(//
- "S712_DEPT_REF_S_F", //
- "Var Scale Factor", //
- "Scale factor for curve var points.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S712(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ W_SF(new ScaleFactorPoint("S712_W_SF", "Active Power Scale Factor", //
+ "Scale factor for curve active power points.")), //
+ DEPT_REF_S_F(new ScaleFactorPoint("S712_DEPT_REF_S_F", "Var Scale Factor", //
+ "Scale factor for curve var points."));
+
+ private final Point point;
+
+ private S712(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
public static enum S712_Ena implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -14535,7 +5758,7 @@ public static enum S712_AdptCrvRslt implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
IN_PROGRESS(0, "IN_PROGRESS"), //
COMPLETED(1, "COMPLETED"), //
- FAILED(2, "FAILED"); //
+ FAILED(2, "FAILED");
private final int value;
private final String name;
@@ -14562,93 +5785,35 @@ public OptionsEnum getUndefined() {
}
public static enum S713 implements SunSpecPoint {
- W_H_RTG(new PointImpl(//
- "S713_W_H_RTG", //
- "Energy Rating", //
+ W_H_RTG(new ScaledValuePoint("S713_W_H_RTG", "Energy Rating", //
"Energy rating of the DER storage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "WH_SF", //
- new OptionsEnum[0])), //
- W_H_AVAIL(new PointImpl(//
- "S713_W_H_AVAIL", //
- "Energy Available", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "WH_SF")), //
+ W_H_AVAIL(new ScaledValuePoint("S713_W_H_AVAIL", "Energy Available", //
"Energy available of the DER storage (WHAvail = WHRtg * SoC * SoH)", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "WH_SF", //
- new OptionsEnum[0])), //
- SO_C(new PointImpl(//
- "S713_SO_C", //
- "State of Charge", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "WH_SF")), //
+ SO_C(new ScaledValuePoint("S713_SO_C", "State of Charge", //
"State of charge of the DER storage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "Pct_SF", //
- new OptionsEnum[0])), //
- SO_H(new PointImpl(//
- "S713_SO_H", //
- "State of Health", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "Pct_SF")), //
+ SO_H(new ScaledValuePoint("S713_SO_H", "State of Health", //
"State of health of the DER storage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "Pct_SF", //
- new OptionsEnum[0])), //
- STA(new PointImpl(//
- "S713_STA", //
- "Status", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "Pct_SF")), //
+ STA(new EnumPoint("S713_STA", "Status", //
"Storage status.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S713_Sta.values())), //
- WH_SF(new PointImpl(//
- "S713_WH_SF", //
- "Energy Scale Factor", //
- "Scale factor for energy capacity.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PCT_S_F(new PointImpl(//
- "S713_PCT_S_F", //
- "Percent Scale Factor", //
- "Scale factor for percentage.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S713(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, S713_Sta.values())), //
+ WH_SF(new ScaleFactorPoint("S713_WH_SF", "Energy Scale Factor", //
+ "Scale factor for energy capacity.")), //
+ PCT_S_F(new ScaleFactorPoint("S713_PCT_S_F", "Percent Scale Factor", //
+ "Scale factor for percentage."));
+
+ private final Point point;
+
+ private S713(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
@@ -14656,7 +5821,7 @@ public static enum S713_Sta implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
OK(0, "OK"), //
WARNING(1, "WARNING"), //
- ERROR(2, "ERROR"); //
+ ERROR(2, "ERROR");
private final int value;
private final String name;
@@ -14683,213 +5848,80 @@ public OptionsEnum getUndefined() {
}
public static enum S714 implements SunSpecPoint {
- PRT_ALRMS(new PointImpl(//
- "S714_PRT_ALRMS", //
- "Port Alarms", //
+ PRT_ALRMS(new BitFieldPoint("S714_PRT_ALRMS", "Port Alarms", //
"Bitfield of ports with active alarms. Bit is 1 if port has an active alarm. Bit 0 is first port.", //
- "", //
- PointType.BITFIELD32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- N_PRT(new PointImpl(//
- "S714_N_PRT", //
- "Number Of Ports", //
+ BitFieldPoint.Type.BITFIELD32, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ N_PRT(new ValuePoint("S714_N_PRT", "Number Of Ports", //
"Number of DC ports.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DCA(new PointImpl(//
- "S714_DCA", //
- "DC Current", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ DCA(new ScaledValuePoint("S714_DCA", "DC Current", //
"Total DC current for all ports.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "DCA_SF", //
- new OptionsEnum[0])), //
- DCW(new PointImpl(//
- "S714_DCW", //
- "DC Power", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "DCA_SF")), //
+ DCW(new ScaledValuePoint("S714_DCW", "DC Power", //
"Total DC power for all ports.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "DCW_SF", //
- new OptionsEnum[0])), //
- D_C_WH_INJ(new PointImpl(//
- "S714_D_C_WH_INJ", //
- "DC Energy Injected", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "DCW_SF")), //
+ D_C_WH_INJ(new ScaledValuePoint("S714_D_C_WH_INJ", "DC Energy Injected", //
"Total cumulative DC energy injected for all ports.", //
- "", //
- PointType.UINT64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "DCWH_SF", //
- new OptionsEnum[0])), //
- D_C_WH_ABS(new PointImpl(//
- "S714_D_C_WH_ABS", //
- "DC Energy Absorbed", //
+ ValuePoint.Type.UINT64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "DCWH_SF")), //
+ D_C_WH_ABS(new ScaledValuePoint("S714_D_C_WH_ABS", "DC Energy Absorbed", //
"Total cumulative DC energy absorbed for all ports.", //
- "", //
- PointType.UINT64, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "DCWH_SF", //
- new OptionsEnum[0])), //
- DCA_SF(new PointImpl(//
- "S714_DCA_SF", //
- "DC Current Scale Factor", //
- "DC current scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DCV_SF(new PointImpl(//
- "S714_DCV_SF", //
- "DC Voltage Scale Factor", //
- "DC voltage scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DCW_SF(new PointImpl(//
- "S714_DCW_SF", //
- "DC Power Scale Factor", //
- "DC power scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DCWH_SF(new PointImpl(//
- "S714_DCWH_SF", //
- "DC Energy Scale Factor", //
- "DC energy scale factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TMP_S_F(new PointImpl(//
- "S714_TMP_S_F", //
- "Temperature Scale Factor", //
- "Temperature Scale Factor.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S714(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ ValuePoint.Type.UINT64, false /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "DCWH_SF")), //
+ DCA_SF(new ScaleFactorPoint("S714_DCA_SF", "DC Current Scale Factor", //
+ "DC current scale factor.")), //
+ DCV_SF(new ScaleFactorPoint("S714_DCV_SF", "DC Voltage Scale Factor", //
+ "DC voltage scale factor.")), //
+ DCW_SF(new ScaleFactorPoint("S714_DCW_SF", "DC Power Scale Factor", //
+ "DC power scale factor.")), //
+ DCWH_SF(new ScaleFactorPoint("S714_DCWH_SF", "DC Energy Scale Factor", //
+ "DC energy scale factor.")), //
+ TMP_S_F(new ScaleFactorPoint("S714_TMP_S_F", "Temperature Scale Factor", //
+ "Temperature Scale Factor."));
+
+ private final Point point;
+
+ private S714(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
public static enum S715 implements SunSpecPoint {
- LOC_REM_CTL(new PointImpl(//
- "S715_LOC_REM_CTL", //
- "Control Mode", //
+ LOC_REM_CTL(new EnumPoint("S715_LOC_REM_CTL", "Control Mode", //
"DER control mode. Enumeration.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S715_LocRemCtl.values())), //
- D_E_R_HB(new PointImpl(//
- "S715_D_E_R_HB", //
- "DER Heartbeat", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, S715_LocRemCtl.values())), //
+ D_E_R_HB(new ValuePoint("S715_D_E_R_HB", "DER Heartbeat", //
"Value is incremented every second by the DER with periodic resets to zero.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- CONTROLLER_HB(new PointImpl(//
- "S715_CONTROLLER_HB", //
- "Controller Heartbeat", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ CONTROLLER_HB(new ValuePoint("S715_CONTROLLER_HB", "Controller Heartbeat", //
"Value is incremented every second by the controller with periodic resets to zero.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ALARM_RESET(new PointImpl(//
- "S715_ALARM_RESET", //
- "Alarm Reset", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ ALARM_RESET(new ValuePoint("S715_ALARM_RESET", "Alarm Reset", //
"Used to reset any latched alarms. 1 = Reset.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- OP_CTL(new PointImpl(//
- "S715_OP_CTL", //
- "Set Operation", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ OP_CTL(new EnumPoint("S715_OP_CTL", "Set Operation", //
"Commands to PCS. Enumerated value.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S715_OpCtl.values())); //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, S715_OpCtl.values()));
- protected final PointImpl impl;
+ private final Point point;
- private S715(PointImpl impl) {
- this.impl = impl;
+ private S715(Point point) {
+ this.point = point;
}
@Override
- public PointImpl get() {
- return this.impl;
+ public Point get() {
+ return this.point;
}
}
public static enum S715_LocRemCtl implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
REMOTE(0, "REMOTE"), //
- LOCAL(1, "LOCAL"); //
+ LOCAL(1, "LOCAL");
private final int value;
private final String name;
@@ -14920,7 +5952,7 @@ public static enum S715_OpCtl implements OptionsEnum {
STOP(0, "STOP"), //
START(1, "START"), //
ENTER_STANDBY(2, "ENTER_STANDBY"), //
- EXIT_STANDBY(3, "EXIT_STANDBY"); //
+ EXIT_STANDBY(3, "EXIT_STANDBY");
private final int value;
private final String name;
@@ -14947,657 +5979,189 @@ public OptionsEnum getUndefined() {
}
public static enum S801 implements SunSpecPoint {
- DEPRECATED(new PointImpl(//
- "S801_DEPRECATED", //
- "Deprecated Model", //
+ DEPRECATED(new EnumPoint("S801_DEPRECATED", "Deprecated Model", //
"This model has been deprecated.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, new OptionsEnum[0]));
- protected final PointImpl impl;
+ private final Point point;
- private S801(PointImpl impl) {
- this.impl = impl;
+ private S801(Point point) {
+ this.point = point;
}
@Override
- public PointImpl get() {
- return this.impl;
+ public Point get() {
+ return this.point;
}
}
public static enum S802 implements SunSpecPoint {
- A_H_RTG(new PointImpl(//
- "S802_A_H_RTG", //
- "Nameplate Charge Capacity", //
+ A_H_RTG(new ScaledValuePoint("S802_A_H_RTG", "Nameplate Charge Capacity", //
"Nameplate charge capacity in amp-hours.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE_HOURS, //
- "AHRtg_SF", //
- new OptionsEnum[0])), //
- W_H_RTG(new PointImpl(//
- "S802_W_H_RTG", //
- "Nameplate Energy Capacity", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE_HOURS, "AHRtg_SF")), //
+ W_H_RTG(new ScaledValuePoint("S802_W_H_RTG", "Nameplate Energy Capacity", //
"Nameplate energy capacity in DC watt-hours.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.CUMULATED_WATT_HOURS, //
- "WHRtg_SF", //
- new OptionsEnum[0])), //
- W_CHA_RTE_MAX(new PointImpl(//
- "S802_W_CHA_RTE_MAX", //
- "Nameplate Max Charge Rate", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.CUMULATED_WATT_HOURS, "WHRtg_SF")), //
+ W_CHA_RTE_MAX(new ScaledValuePoint("S802_W_CHA_RTE_MAX", "Nameplate Max Charge Rate", //
"Maximum rate of energy transfer into the storage device in DC watts.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "WChaDisChaMax_SF", //
- new OptionsEnum[0])), //
- W_DIS_CHA_RTE_MAX(new PointImpl(//
- "S802_W_DIS_CHA_RTE_MAX", //
- "Nameplate Max Discharge Rate", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "WChaDisChaMax_SF")), //
+ W_DIS_CHA_RTE_MAX(new ScaledValuePoint("S802_W_DIS_CHA_RTE_MAX", "Nameplate Max Discharge Rate", //
"Maximum rate of energy transfer out of the storage device in DC watts.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "WChaDisChaMax_SF", //
- new OptionsEnum[0])), //
- DIS_CHA_RTE(new PointImpl(//
- "S802_DIS_CHA_RTE", //
- "Self Discharge Rate", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "WChaDisChaMax_SF")), //
+ DIS_CHA_RTE(new ScaledValuePoint("S802_DIS_CHA_RTE", "Self Discharge Rate", //
"Self discharge rate. Percentage of capacity (WHRtg) discharged per day.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.PERCENT, //
- "DisChaRte_SF", //
- new OptionsEnum[0])), //
- SO_C_MAX(new PointImpl(//
- "S802_SO_C_MAX", //
- "Nameplate Max SoC", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.PERCENT, "DisChaRte_SF")), //
+ SO_C_MAX(new ScaledValuePoint("S802_SO_C_MAX", "Nameplate Max SoC", //
"Manufacturer maximum state of charge, expressed as a percentage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.PERCENT, //
- "SoC_SF", //
- new OptionsEnum[0])), //
- SO_C_MIN(new PointImpl(//
- "S802_SO_C_MIN", //
- "Nameplate Min SoC", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.PERCENT, "SoC_SF")), //
+ SO_C_MIN(new ScaledValuePoint("S802_SO_C_MIN", "Nameplate Min SoC", //
"Manufacturer minimum state of charge, expressed as a percentage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.PERCENT, //
- "SoC_SF", //
- new OptionsEnum[0])), //
- SOC_RSV_MAX(new PointImpl(//
- "S802_SOC_RSV_MAX", //
- "Max Reserve Percent", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.PERCENT, "SoC_SF")), //
+ SOC_RSV_MAX(new ScaledValuePoint("S802_SOC_RSV_MAX", "Max Reserve Percent", //
"Setpoint for maximum reserve for storage as a percentage of the nominal maximum storage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "SoC_SF", //
- new OptionsEnum[0])), //
- SO_C_RSV_MIN(new PointImpl(//
- "S802_SO_C_RSV_MIN", //
- "Min Reserve Percent", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.PERCENT, "SoC_SF")), //
+ SO_C_RSV_MIN(new ScaledValuePoint("S802_SO_C_RSV_MIN", "Min Reserve Percent", //
"Setpoint for minimum reserve for storage as a percentage of the nominal maximum storage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.PERCENT, //
- "SoC_SF", //
- new OptionsEnum[0])), //
- SO_C(new PointImpl(//
- "S802_SO_C", //
- "State of Charge", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.PERCENT, "SoC_SF")), //
+ SO_C(new ScaledValuePoint("S802_SO_C", "State of Charge", //
"State of charge, expressed as a percentage.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.PERCENT, //
- "SoC_SF", //
- new OptionsEnum[0])), //
- DO_D(new PointImpl(//
- "S802_DO_D", //
- "Depth of Discharge", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.PERCENT, "SoC_SF")), //
+ DO_D(new ScaledValuePoint("S802_DO_D", "Depth of Discharge", //
"Depth of discharge, expressed as a percentage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.PERCENT, //
- "DoD_SF", //
- new OptionsEnum[0])), //
- SO_H(new PointImpl(//
- "S802_SO_H", //
- "State of Health", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.PERCENT, "DoD_SF")), //
+ SO_H(new ScaledValuePoint("S802_SO_H", "State of Health", //
"Percentage of battery life remaining.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.PERCENT, //
- "SoH_SF", //
- new OptionsEnum[0])), //
- N_CYC(new PointImpl(//
- "S802_N_CYC", //
- "Cycle Count", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.PERCENT, "SoH_SF")), //
+ N_CYC(new ValuePoint("S802_N_CYC", "Cycle Count", //
"Number of cycles executed in the battery.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- CHA_ST(new PointImpl(//
- "S802_CHA_ST", //
- "Charge Status", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ CHA_ST(new EnumPoint("S802_CHA_ST", "Charge Status", //
"Charge status of storage device. Enumeration.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S802_ChaSt.values())), //
- LOC_REM_CTL(new PointImpl(//
- "S802_LOC_REM_CTL", //
- "Control Mode", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, S802_ChaSt.values())), //
+ LOC_REM_CTL(new EnumPoint("S802_LOC_REM_CTL", "Control Mode", //
"Battery control mode. Enumeration.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S802_LocRemCtl.values())), //
- HB(new PointImpl(//
- "S802_HB", //
- "Battery Heartbeat", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S802_LocRemCtl.values())), //
+ HB(new ValuePoint("S802_HB", "Battery Heartbeat", //
"Value is incremented every second with periodic resets to zero.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- CTRL_HB(new PointImpl(//
- "S802_CTRL_HB", //
- "Controller Heartbeat", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ CTRL_HB(new ValuePoint("S802_CTRL_HB", "Controller Heartbeat", //
"Value is incremented every second with periodic resets to zero.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ALM_RST(new PointImpl(//
- "S802_ALM_RST", //
- "Alarm Reset", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ ALM_RST(new ValuePoint("S802_ALM_RST", "Alarm Reset", //
"Used to reset any latched alarms. 1 = Reset.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TYP(new PointImpl(//
- "S802_TYP", //
- "Battery Type", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_WRITE, Unit.NONE)), //
+ TYP(new EnumPoint("S802_TYP", "Battery Type", //
"Type of battery. Enumeration.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S802_Typ.values())), //
- STATE(new PointImpl(//
- "S802_STATE", //
- "State of the Battery Bank", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S802_Typ.values())), //
+ STATE(new EnumPoint("S802_STATE", "State of the Battery Bank", //
"State of the battery bank. Enumeration.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S802_State.values())), //
- STATE_VND(new PointImpl(//
- "S802_STATE_VND", //
- "Vendor Battery Bank State", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S802_State.values())), //
+ STATE_VND(new EnumPoint("S802_STATE_VND", "Vendor Battery Bank State", //
"Vendor specific battery bank state. Enumeration.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- WARR_DT(new PointImpl(//
- "S802_WARR_DT", //
- "Warranty Date", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, new OptionsEnum[0])), //
+ WARR_DT(new ValuePoint("S802_WARR_DT", "Warranty Date", //
"Date the device warranty expires.", //
- "", //
- PointType.UINT32, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT1(new PointImpl(//
- "S802_EVT1", //
- "Battery Event 1 Bitfield", //
+ ValuePoint.Type.UINT32, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ EVT1(new BitFieldPoint("S802_EVT1", "Battery Event 1 Bitfield", //
"Alarms and warnings. Bit flags.", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S802_Evt1.values())), //
- EVT2(new PointImpl(//
- "S802_EVT2", //
- "Battery Event 2 Bitfield", //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, S802_Evt1.values())), //
+ EVT2(new BitFieldPoint("S802_EVT2", "Battery Event 2 Bitfield", //
"Alarms and warnings. Bit flags.", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND1(new PointImpl(//
- "S802_EVT_VND1", //
- "Vendor Event Bitfield 1", //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND1(new BitFieldPoint("S802_EVT_VND1", "Vendor Event Bitfield 1", //
"Vendor defined events.", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- EVT_VND2(new PointImpl(//
- "S802_EVT_VND2", //
- "Vendor Event Bitfield 2", //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ EVT_VND2(new BitFieldPoint("S802_EVT_VND2", "Vendor Event Bitfield 2", //
"Vendor defined events.", //
- "", //
- PointType.BITFIELD32, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V(new PointImpl(//
- "S802_V", //
- "External Battery Voltage", //
+ BitFieldPoint.Type.BITFIELD32, true /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ V(new ScaledValuePoint("S802_V", "External Battery Voltage", //
"DC Bus Voltage.", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- V_MAX(new PointImpl(//
- "S802_V_MAX", //
- "Max Battery Voltage", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ V_MAX(new ScaledValuePoint("S802_V_MAX", "Max Battery Voltage", //
"Instantaneous maximum battery voltage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- V_MIN(new PointImpl(//
- "S802_V_MIN", //
- "Min Battery Voltage", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ V_MIN(new ScaledValuePoint("S802_V_MIN", "Min Battery Voltage", //
"Instantaneous minimum battery voltage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- CELL_V_MAX(new PointImpl(//
- "S802_CELL_V_MAX", //
- "Max Cell Voltage", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ CELL_V_MAX(new ScaledValuePoint("S802_CELL_V_MAX", "Max Cell Voltage", //
"Maximum voltage for all cells in the bank.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "CellV_SF", //
- new OptionsEnum[0])), //
- CELL_V_MAX_STR(new PointImpl(//
- "S802_CELL_V_MAX_STR", //
- "Max Cell Voltage String", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "CellV_SF")), //
+ CELL_V_MAX_STR(new ValuePoint("S802_CELL_V_MAX_STR", "Max Cell Voltage String", //
"String containing the cell with maximum voltage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- CELL_V_MAX_MOD(new PointImpl(//
- "S802_CELL_V_MAX_MOD", //
- "Max Cell Voltage Module", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ CELL_V_MAX_MOD(new ValuePoint("S802_CELL_V_MAX_MOD", "Max Cell Voltage Module", //
"Module containing the cell with maximum voltage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- CELL_V_MIN(new PointImpl(//
- "S802_CELL_V_MIN", //
- "Min Cell Voltage", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ CELL_V_MIN(new ScaledValuePoint("S802_CELL_V_MIN", "Min Cell Voltage", //
"Minimum voltage for all cells in the bank.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "CellV_SF", //
- new OptionsEnum[0])), //
- CELL_V_MIN_STR(new PointImpl(//
- "S802_CELL_V_MIN_STR", //
- "Min Cell Voltage String", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "CellV_SF")), //
+ CELL_V_MIN_STR(new ValuePoint("S802_CELL_V_MIN_STR", "Min Cell Voltage String", //
"String containing the cell with minimum voltage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- CELL_V_MIN_MOD(new PointImpl(//
- "S802_CELL_V_MIN_MOD", //
- "Min Cell Voltage Module", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ CELL_V_MIN_MOD(new ValuePoint("S802_CELL_V_MIN_MOD", "Min Cell Voltage Module", //
"Module containing the cell with minimum voltage.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- CELL_V_AVG(new PointImpl(//
- "S802_CELL_V_AVG", //
- "Average Cell Voltage", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ CELL_V_AVG(new ScaledValuePoint("S802_CELL_V_AVG", "Average Cell Voltage", //
"Average cell voltage for all cells in the bank.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "CellV_SF", //
- new OptionsEnum[0])), //
- A(new PointImpl(//
- "S802_A", //
- "Total DC Current", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "CellV_SF")), //
+ A(new ScaledValuePoint("S802_A", "Total DC Current", //
"Total DC current flowing to/from the battery bank.", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- A_CHA_MAX(new PointImpl(//
- "S802_A_CHA_MAX", //
- "Max Charge Current", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ A_CHA_MAX(new ScaledValuePoint("S802_A_CHA_MAX", "Max Charge Current", //
"Instantaneous maximum DC charge current.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "AMax_SF", //
- new OptionsEnum[0])), //
- A_DIS_CHA_MAX(new PointImpl(//
- "S802_A_DIS_CHA_MAX", //
- "Max Discharge Current", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "AMax_SF")), //
+ A_DIS_CHA_MAX(new ScaledValuePoint("S802_A_DIS_CHA_MAX", "Max Discharge Current", //
"Instantaneous maximum DC discharge current.", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "AMax_SF", //
- new OptionsEnum[0])), //
- W(new PointImpl(//
- "S802_W", //
- "Total Power", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "AMax_SF")), //
+ W(new ScaledValuePoint("S802_W", "Total Power", //
"Total power flowing to/from the battery bank.", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- REQ_INV_STATE(new PointImpl(//
- "S802_REQ_INV_STATE", //
- "Inverter State Request", //
+ ValuePoint.Type.INT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ REQ_INV_STATE(new EnumPoint("S802_REQ_INV_STATE", "Inverter State Request", //
"Request from battery to start or stop the inverter. Enumeration.", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S802_ReqInvState.values())), //
- REQ_W(new PointImpl(//
- "S802_REQ_W", //
- "Battery Power Request", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, S802_ReqInvState.values())), //
+ REQ_W(new ScaledValuePoint("S802_REQ_W", "Battery Power Request", //
"AC Power requested by battery.", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "W_SF", //
- new OptionsEnum[0])), //
- SET_OP(new PointImpl(//
- "S802_SET_OP", //
- "Set Operation", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "W_SF")), //
+ SET_OP(new EnumPoint("S802_SET_OP", "Set Operation", //
"Instruct the battery bank to perform an operation such as connecting. Enumeration.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S802_SetOp.values())), //
- SET_INV_STATE(new PointImpl(//
- "S802_SET_INV_STATE", //
- "Set Inverter State", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_WRITE, S802_SetOp.values())), //
+ SET_INV_STATE(new EnumPoint("S802_SET_INV_STATE", "Set Inverter State", //
"Set the current state of the inverter.", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- S802_SetInvState.values())), //
- A_H_RTG_S_F(new PointImpl(//
- "S802_A_H_RTG_S_F", //
- "", //
- "Scale factor for charge capacity.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W_H_RTG_S_F(new PointImpl(//
- "S802_W_H_RTG_S_F", //
- "", //
- "Scale factor for energy capacity.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W_CHA_DIS_CHA_MAX_S_F(new PointImpl(//
- "S802_W_CHA_DIS_CHA_MAX_S_F", //
- "", //
- "Scale factor for maximum charge and discharge rate.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DIS_CHA_RTE_S_F(new PointImpl(//
- "S802_DIS_CHA_RTE_S_F", //
- "", //
- "Scale factor for self discharge rate.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- SO_C_S_F(new PointImpl(//
- "S802_SO_C_S_F", //
- "", //
- "Scale factor for state of charge values.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DO_D_S_F(new PointImpl(//
- "S802_DO_D_S_F", //
- "", //
- "Scale factor for depth of discharge.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- SO_H_S_F(new PointImpl(//
- "S802_SO_H_S_F", //
- "", //
- "Scale factor for state of health.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_SF(new PointImpl(//
- "S802_V_SF", //
- "", //
- "Scale factor for DC bus voltage.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- CELL_V_S_F(new PointImpl(//
- "S802_CELL_V_S_F", //
- "", //
- "Scale factor for cell voltage.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- A_SF(new PointImpl(//
- "S802_A_SF", //
- "", //
- "Scale factor for DC current.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- A_MAX_S_F(new PointImpl(//
- "S802_A_MAX_S_F", //
- "", //
- "Scale factor for instantaneous DC charge/discharge current.", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- W_SF(new PointImpl(//
- "S802_W_SF", //
- "", //
- "Scale factor for AC power request.", //
- "", //
- PointType.SUNSSF, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S802(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_WRITE, S802_SetInvState.values())), //
+ A_H_RTG_S_F(new ScaleFactorPoint("S802_A_H_RTG_S_F", "", //
+ "Scale factor for charge capacity.")), //
+ W_H_RTG_S_F(new ScaleFactorPoint("S802_W_H_RTG_S_F", "", //
+ "Scale factor for energy capacity.")), //
+ W_CHA_DIS_CHA_MAX_S_F(new ScaleFactorPoint("S802_W_CHA_DIS_CHA_MAX_S_F", "", //
+ "Scale factor for maximum charge and discharge rate.")), //
+ DIS_CHA_RTE_S_F(new ScaleFactorPoint("S802_DIS_CHA_RTE_S_F", "", //
+ "Scale factor for self discharge rate.")), //
+ SO_C_S_F(new ScaleFactorPoint("S802_SO_C_S_F", "", //
+ "Scale factor for state of charge values.")), //
+ DO_D_S_F(new ScaleFactorPoint("S802_DO_D_S_F", "", //
+ "Scale factor for depth of discharge.")), //
+ SO_H_S_F(new ScaleFactorPoint("S802_SO_H_S_F", "", //
+ "Scale factor for state of health.")), //
+ V_SF(new ScaleFactorPoint("S802_V_SF", "", //
+ "Scale factor for DC bus voltage.")), //
+ CELL_V_S_F(new ScaleFactorPoint("S802_CELL_V_S_F", "", //
+ "Scale factor for cell voltage.")), //
+ A_SF(new ScaleFactorPoint("S802_A_SF", "", //
+ "Scale factor for DC current.")), //
+ A_MAX_S_F(new ScaleFactorPoint("S802_A_MAX_S_F", "", //
+ "Scale factor for instantaneous DC charge/discharge current.")), //
+ W_SF(new ScaleFactorPoint("S802_W_SF", "", //
+ "Scale factor for AC power request."));
+
+ private final Point point;
+
+ private S802(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
@@ -15609,7 +6173,7 @@ public static enum S802_ChaSt implements OptionsEnum {
CHARGING(4, "CHARGING"), //
FULL(5, "FULL"), //
HOLDING(6, "HOLDING"), //
- TESTING(7, "TESTING"); //
+ TESTING(7, "TESTING");
private final int value;
private final String name;
@@ -15638,7 +6202,7 @@ public OptionsEnum getUndefined() {
public static enum S802_LocRemCtl implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
REMOTE(0, "REMOTE"), //
- LOCAL(1, "LOCAL"); //
+ LOCAL(1, "LOCAL");
private final int value;
private final String name;
@@ -15677,7 +6241,7 @@ public static enum S802_Typ implements OptionsEnum {
RECHARGEABLE_ALKALINE(8, "RECHARGEABLE_ALKALINE"), //
SODIUM_SULFUR(9, "SODIUM_SULFUR"), //
FLOW(10, "FLOW"), //
- OTHER(99, "OTHER"); //
+ OTHER(99, "OTHER");
private final int value;
private final String name;
@@ -15711,7 +6275,7 @@ public static enum S802_State implements OptionsEnum {
STANDBY(4, "STANDBY"), //
SOC_PROTECTION(5, "SOC_PROTECTION"), //
SUSPENDING(6, "SUSPENDING"), //
- FAULT(99, "FAULT"); //
+ FAULT(99, "FAULT");
private final int value;
private final String name;
@@ -15737,60 +6301,47 @@ public OptionsEnum getUndefined() {
}
}
- public static enum S802_Evt1 implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- COMMUNICATION_ERROR(0, "COMMUNICATION_ERROR"), //
- OVER_TEMP_ALARM(1, "OVER_TEMP_ALARM"), //
- OVER_TEMP_WARNING(2, "OVER_TEMP_WARNING"), //
- UNDER_TEMP_ALARM(3, "UNDER_TEMP_ALARM"), //
- UNDER_TEMP_WARNING(4, "UNDER_TEMP_WARNING"), //
- OVER_CHARGE_CURRENT_ALARM(5, "OVER_CHARGE_CURRENT_ALARM"), //
- OVER_CHARGE_CURRENT_WARNING(6, "OVER_CHARGE_CURRENT_WARNING"), //
- OVER_DISCHARGE_CURRENT_ALARM(7, "OVER_DISCHARGE_CURRENT_ALARM"), //
- OVER_DISCHARGE_CURRENT_WARNING(8, "OVER_DISCHARGE_CURRENT_WARNING"), //
- OVER_VOLT_ALARM(9, "OVER_VOLT_ALARM"), //
- OVER_VOLT_WARNING(10, "OVER_VOLT_WARNING"), //
- UNDER_VOLT_ALARM(11, "UNDER_VOLT_ALARM"), //
- UNDER_VOLT_WARNING(12, "UNDER_VOLT_WARNING"), //
- UNDER_SOC_MIN_ALARM(13, "UNDER_SOC_MIN_ALARM"), //
- UNDER_SOC_MIN_WARNING(14, "UNDER_SOC_MIN_WARNING"), //
- OVER_SOC_MAX_ALARM(15, "OVER_SOC_MAX_ALARM"), //
- OVER_SOC_MAX_WARNING(16, "OVER_SOC_MAX_WARNING"), //
- VOLTAGE_IMBALANCE_WARNING(17, "VOLTAGE_IMBALANCE_WARNING"), //
- TEMPERATURE_IMBALANCE_ALARM(18, "TEMPERATURE_IMBALANCE_ALARM"), //
- TEMPERATURE_IMBALANCE_WARNING(19, "TEMPERATURE_IMBALANCE_WARNING"), //
- CONTACTOR_ERROR(20, "CONTACTOR_ERROR"), //
- FAN_ERROR(21, "FAN_ERROR"), //
- GROUND_FAULT(22, "GROUND_FAULT"), //
- OPEN_DOOR_ERROR(23, "OPEN_DOOR_ERROR"), //
- CURRENT_IMBALANCE_WARNING(24, "CURRENT_IMBALANCE_WARNING"), //
- OTHER_ALARM(25, "OTHER_ALARM"), //
- OTHER_WARNING(26, "OTHER_WARNING"), //
- RESERVED_1(27, "RESERVED_1"), //
- CONFIGURATION_ALARM(28, "CONFIGURATION_ALARM"), //
- CONFIGURATION_WARNING(29, "CONFIGURATION_WARNING"); //
-
- private final int value;
- private final String name;
-
- private S802_Evt1(int value, String name) {
- this.value = value;
- this.name = name;
- }
+ public static enum S802_Evt1 implements SunSpecBitPoint {
+ COMMUNICATION_ERROR(new BitPoint(0, "S802_EVT1_COMMUNICATION_ERROR", "Communication Error")), //
+ OVER_TEMP_ALARM(new BitPoint(1, "S802_EVT1_OVER_TEMP_ALARM", "Over Temp Alarm")), //
+ OVER_TEMP_WARNING(new BitPoint(2, "S802_EVT1_OVER_TEMP_WARNING", "Over Temp Warning")), //
+ UNDER_TEMP_ALARM(new BitPoint(3, "S802_EVT1_UNDER_TEMP_ALARM", "Under Temp Alarm")), //
+ UNDER_TEMP_WARNING(new BitPoint(4, "S802_EVT1_UNDER_TEMP_WARNING", "Under Temp Warning")), //
+ OVER_CHARGE_CURRENT_ALARM(new BitPoint(5, "S802_EVT1_OVER_CHARGE_CURRENT_ALARM", "Over Charge Current Alarm")), //
+ OVER_CHARGE_CURRENT_WARNING(new BitPoint(6, "S802_EVT1_OVER_CHARGE_CURRENT_WARNING", "Over Charge Current Warning")), //
+ OVER_DISCHARGE_CURRENT_ALARM(new BitPoint(7, "S802_EVT1_OVER_DISCHARGE_CURRENT_ALARM", "Over Discharge Current Alarm")), //
+ OVER_DISCHARGE_CURRENT_WARNING(new BitPoint(8, "S802_EVT1_OVER_DISCHARGE_CURRENT_WARNING", "Over Discharge Current Warning")), //
+ OVER_VOLT_ALARM(new BitPoint(9, "S802_EVT1_OVER_VOLT_ALARM", "Over Volt Alarm")), //
+ OVER_VOLT_WARNING(new BitPoint(10, "S802_EVT1_OVER_VOLT_WARNING", "Over Volt Warning")), //
+ UNDER_VOLT_ALARM(new BitPoint(11, "S802_EVT1_UNDER_VOLT_ALARM", "Under Volt Alarm")), //
+ UNDER_VOLT_WARNING(new BitPoint(12, "S802_EVT1_UNDER_VOLT_WARNING", "Under Volt Warning")), //
+ UNDER_SOC_MIN_ALARM(new BitPoint(13, "S802_EVT1_UNDER_SOC_MIN_ALARM", "Under Soc Min Alarm")), //
+ UNDER_SOC_MIN_WARNING(new BitPoint(14, "S802_EVT1_UNDER_SOC_MIN_WARNING", "Under Soc Min Warning")), //
+ OVER_SOC_MAX_ALARM(new BitPoint(15, "S802_EVT1_OVER_SOC_MAX_ALARM", "Over Soc Max Alarm")), //
+ OVER_SOC_MAX_WARNING(new BitPoint(16, "S802_EVT1_OVER_SOC_MAX_WARNING", "Over Soc Max Warning")), //
+ VOLTAGE_IMBALANCE_WARNING(new BitPoint(17, "S802_EVT1_VOLTAGE_IMBALANCE_WARNING", "Voltage Imbalance Warning")), //
+ TEMPERATURE_IMBALANCE_ALARM(new BitPoint(18, "S802_EVT1_TEMPERATURE_IMBALANCE_ALARM", "Temperature Imbalance Alarm")), //
+ TEMPERATURE_IMBALANCE_WARNING(new BitPoint(19, "S802_EVT1_TEMPERATURE_IMBALANCE_WARNING", "Temperature Imbalance Warning")), //
+ CONTACTOR_ERROR(new BitPoint(20, "S802_EVT1_CONTACTOR_ERROR", "Contactor Error")), //
+ FAN_ERROR(new BitPoint(21, "S802_EVT1_FAN_ERROR", "Fan Error")), //
+ GROUND_FAULT(new BitPoint(22, "S802_EVT1_GROUND_FAULT", "Ground Fault")), //
+ OPEN_DOOR_ERROR(new BitPoint(23, "S802_EVT1_OPEN_DOOR_ERROR", "Open Door Error")), //
+ CURRENT_IMBALANCE_WARNING(new BitPoint(24, "S802_EVT1_CURRENT_IMBALANCE_WARNING", "Current Imbalance Warning")), //
+ OTHER_ALARM(new BitPoint(25, "S802_EVT1_OTHER_ALARM", "Other Alarm")), //
+ OTHER_WARNING(new BitPoint(26, "S802_EVT1_OTHER_WARNING", "Other Warning")), //
+ RESERVED_1(new BitPoint(27, "S802_EVT1_RESERVED_1", "Reserved 1")), //
+ CONFIGURATION_ALARM(new BitPoint(28, "S802_EVT1_CONFIGURATION_ALARM", "Configuration Alarm")), //
+ CONFIGURATION_WARNING(new BitPoint(29, "S802_EVT1_CONFIGURATION_WARNING", "Configuration Warning"));
- @Override
- public int getValue() {
- return this.value;
- }
+ private final BitPoint point;
- @Override
- public String getName() {
- return this.name;
+ private S802_Evt1(BitPoint point) {
+ this.point = point;
}
@Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public BitPoint get() {
+ return this.point;
}
}
@@ -15798,7 +6349,7 @@ public static enum S802_ReqInvState implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
NO_REQUEST(0, "NO_REQUEST"), //
START(1, "START"), //
- STOP(2, "STOP"); //
+ STOP(2, "STOP");
private final int value;
private final String name;
@@ -15827,7 +6378,7 @@ public OptionsEnum getUndefined() {
public static enum S802_SetOp implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
CONNECT(1, "CONNECT"), //
- DISCONNECT(2, "DISCONNECT"); //
+ DISCONNECT(2, "DISCONNECT");
private final int value;
private final String name;
@@ -15857,7 +6408,7 @@ public static enum S802_SetInvState implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
INVERTER_STOPPED(1, "INVERTER_STOPPED"), //
INVERTER_STANDBY(2, "INVERTER_STANDBY"), //
- INVERTER_STARTED(3, "INVERTER_STARTED"); //
+ INVERTER_STARTED(3, "INVERTER_STARTED");
private final int value;
private final String name;
@@ -15884,1407 +6435,169 @@ public OptionsEnum getUndefined() {
}
public static enum S64001 implements SunSpecPoint {
- CMD(new PointImpl(//
- "S64001_CMD", //
- "Command Code", //
- "", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_WRITE, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- H_W_REV(new PointImpl(//
- "S64001_H_W_REV", //
- "Hardware Revision", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- R_S_F_W_REV(new PointImpl(//
- "S64001_R_S_F_W_REV", //
- "RS FW Revision", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- O_S_F_W_REV(new PointImpl(//
- "S64001_O_S_F_W_REV", //
- "OS FW Revision", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- PROD_REV(new PointImpl(//
- "S64001_PROD_REV", //
- "Product Revision", //
- "", //
- "", //
- PointType.STRING2, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- BOOTS(new PointImpl(//
- "S64001_BOOTS", //
- "Boot Count", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- SWITCH(new PointImpl(//
- "S64001_SWITCH", //
- "DIP Switches", //
- "", //
- "", //
- PointType.BITFIELD16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- SENSORS(new PointImpl(//
- "S64001_SENSORS", //
- "Num Detected Sensors", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TALKING(new PointImpl(//
- "S64001_TALKING", //
- "Num Communicating Sensors", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- STATUS(new PointImpl(//
- "S64001_STATUS", //
- "System Status", //
- "", //
- "", //
- PointType.BITFIELD16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- CONFIG(new PointImpl(//
- "S64001_CONFIG", //
- "System Configuration", //
- "", //
- "", //
- PointType.BITFIELD16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- L_E_DBLINK(new PointImpl(//
- "S64001_L_E_DBLINK", //
- "LED Blink Threshold", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- L_E_DON(new PointImpl(//
- "S64001_L_E_DON", //
- "LED On Threshold", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- RESERVED(new PointImpl(//
- "S64001_RESERVED", //
- "", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- LOC(new PointImpl(//
- "S64001_LOC", //
- "Location String", //
- "", //
- "", //
- PointType.STRING16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S1ID(new PointImpl(//
- "S64001_S1ID", //
- "Sensor 1 Unit ID", //
- "", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S1_ADDR(new PointImpl(//
- "S64001_S1_ADDR", //
- "Sensor 1 Address", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S1_O_S_VER(new PointImpl(//
- "S64001_S1_O_S_VER", //
- "Sensor 1 OS Version", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S1_VER(new PointImpl(//
- "S64001_S1_VER", //
- "Sensor 1 Product Version", //
- "", //
- "", //
- PointType.STRING2, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S1_SERIAL(new PointImpl(//
- "S64001_S1_SERIAL", //
- "Sensor 1 Serial Num", //
- "", //
- "", //
- PointType.STRING5, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S2ID(new PointImpl(//
- "S64001_S2ID", //
- "Sensor 2 Unit ID", //
- "", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S2_ADDR(new PointImpl(//
- "S64001_S2_ADDR", //
- "Sensor 2 Address", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S2_O_S_VER(new PointImpl(//
- "S64001_S2_O_S_VER", //
- "Sensor 2 OS Version", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S2_VER(new PointImpl(//
- "S64001_S2_VER", //
- "Sensor 2 Product Version", //
- "", //
- "", //
- PointType.STRING2, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S2_SERIAL(new PointImpl(//
- "S64001_S2_SERIAL", //
- "Sensor 2 Serial Num", //
- "", //
- "", //
- PointType.STRING5, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S3ID(new PointImpl(//
- "S64001_S3ID", //
- "Sensor 3 Unit ID", //
- "", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S3_ADDR(new PointImpl(//
- "S64001_S3_ADDR", //
- "Sensor 3 Address", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S3_O_S_VER(new PointImpl(//
- "S64001_S3_O_S_VER", //
- "Sensor 3 OS Version", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S3_VER(new PointImpl(//
- "S64001_S3_VER", //
- "Sensor 3 Product Version", //
- "", //
- "", //
- PointType.STRING2, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S3_SERIAL(new PointImpl(//
- "S64001_S3_SERIAL", //
- "Sensor 3 Serial Num", //
- "", //
- "", //
- PointType.STRING5, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S4ID(new PointImpl(//
- "S64001_S4ID", //
- "Sensor 4 Unit ID", //
- "", //
- "", //
- PointType.ENUM16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S4_ADDR(new PointImpl(//
- "S64001_S4_ADDR", //
- "Sensor 4 Address", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S4_O_S_VER(new PointImpl(//
- "S64001_S4_O_S_VER", //
- "Sensor 4 OS Version", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S4_VER(new PointImpl(//
- "S64001_S4_VER", //
- "Sensor 4 Product Version", //
- "", //
- "", //
- PointType.STRING2, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S4_SERIAL(new PointImpl(//
- "S64001_S4_SERIAL", //
- "Sensor 4 Serial Num", //
- "", //
- "", //
- PointType.STRING5, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S64001(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ CMD(new EnumPoint("S64001_CMD", "Command Code", "", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_WRITE, new OptionsEnum[0])), //
+ H_W_REV(new ValuePoint("S64001_H_W_REV", "Hardware Revision", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ R_S_F_W_REV(new ValuePoint("S64001_R_S_F_W_REV", "RS FW Revision", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ O_S_F_W_REV(new ValuePoint("S64001_O_S_F_W_REV", "OS FW Revision", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ PROD_REV(new ValuePoint("S64001_PROD_REV", "Product Revision", "", //
+ ValuePoint.Type.STRING2, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ BOOTS(new ValuePoint("S64001_BOOTS", "Boot Count", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ SWITCH(new BitFieldPoint("S64001_SWITCH", "DIP Switches", "", //
+ BitFieldPoint.Type.BITFIELD16, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ SENSORS(new ValuePoint("S64001_SENSORS", "Num Detected Sensors", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ TALKING(new ValuePoint("S64001_TALKING", "Num Communicating Sensors", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ STATUS(new BitFieldPoint("S64001_STATUS", "System Status", "", //
+ BitFieldPoint.Type.BITFIELD16, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ CONFIG(new BitFieldPoint("S64001_CONFIG", "System Configuration", "", //
+ BitFieldPoint.Type.BITFIELD16, false /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ L_E_DBLINK(new ValuePoint("S64001_L_E_DBLINK", "LED Blink Threshold", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ L_E_DON(new ValuePoint("S64001_L_E_DON", "LED On Threshold", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ RESERVED(new ValuePoint("S64001_RESERVED", "", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ LOC(new ValuePoint("S64001_LOC", "Location String", "", //
+ ValuePoint.Type.STRING16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ S1ID(new EnumPoint("S64001_S1ID", "Sensor 1 Unit ID", "", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, new OptionsEnum[0])), //
+ S1_ADDR(new ValuePoint("S64001_S1_ADDR", "Sensor 1 Address", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ S1_O_S_VER(new ValuePoint("S64001_S1_O_S_VER", "Sensor 1 OS Version", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ S1_VER(new ValuePoint("S64001_S1_VER", "Sensor 1 Product Version", "", //
+ ValuePoint.Type.STRING2, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ S1_SERIAL(new ValuePoint("S64001_S1_SERIAL", "Sensor 1 Serial Num", "", //
+ ValuePoint.Type.STRING5, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ S2ID(new EnumPoint("S64001_S2ID", "Sensor 2 Unit ID", "", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, new OptionsEnum[0])), //
+ S2_ADDR(new ValuePoint("S64001_S2_ADDR", "Sensor 2 Address", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ S2_O_S_VER(new ValuePoint("S64001_S2_O_S_VER", "Sensor 2 OS Version", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ S2_VER(new ValuePoint("S64001_S2_VER", "Sensor 2 Product Version", "", //
+ ValuePoint.Type.STRING2, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ S2_SERIAL(new ValuePoint("S64001_S2_SERIAL", "Sensor 2 Serial Num", "", //
+ ValuePoint.Type.STRING5, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ S3ID(new EnumPoint("S64001_S3ID", "Sensor 3 Unit ID", "", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, new OptionsEnum[0])), //
+ S3_ADDR(new ValuePoint("S64001_S3_ADDR", "Sensor 3 Address", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ S3_O_S_VER(new ValuePoint("S64001_S3_O_S_VER", "Sensor 3 OS Version", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ S3_VER(new ValuePoint("S64001_S3_VER", "Sensor 3 Product Version", "", //
+ ValuePoint.Type.STRING2, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ S3_SERIAL(new ValuePoint("S64001_S3_SERIAL", "Sensor 3 Serial Num", "", //
+ ValuePoint.Type.STRING5, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ S4ID(new EnumPoint("S64001_S4ID", "Sensor 4 Unit ID", "", //
+ EnumPoint.Type.ENUM16, false /* mandatory? */, AccessMode.READ_ONLY, new OptionsEnum[0])), //
+ S4_ADDR(new ValuePoint("S64001_S4_ADDR", "Sensor 4 Address", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ S4_O_S_VER(new ValuePoint("S64001_S4_O_S_VER", "Sensor 4 OS Version", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ S4_VER(new ValuePoint("S64001_S4_VER", "Sensor 4 Product Version", "", //
+ ValuePoint.Type.STRING2, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ S4_SERIAL(new ValuePoint("S64001_S4_SERIAL", "Sensor 4 Serial Num", "", //
+ ValuePoint.Type.STRING5, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE));
+
+ private final Point point;
+
+ private S64001(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
public static enum S64101 implements SunSpecPoint {
- ELTEK_COUNTRY_CODE(new PointImpl(//
- "S64101_ELTEK_COUNTRY_CODE", //
- "", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ELTEK_FEEDING_PHASE(new PointImpl(//
- "S64101_ELTEK_FEEDING_PHASE", //
- "", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ELTEK_A_P_D_METHOD(new PointImpl(//
- "S64101_ELTEK_A_P_D_METHOD", //
- "", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ELTEK_A_P_D_POWER_REF(new PointImpl(//
- "S64101_ELTEK_A_P_D_POWER_REF", //
- "", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ELTEK_R_P_S_METHOD(new PointImpl(//
- "S64101_ELTEK_R_P_S_METHOD", //
- "", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ELTEK_R_P_S_Q_REF(new PointImpl(//
- "S64101_ELTEK_R_P_S_Q_REF", //
- "", //
- "", //
- "", //
- PointType.UINT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ELTEK_R_P_S_COS_PHI_REF(new PointImpl(//
- "S64101_ELTEK_R_P_S_COS_PHI_REF", //
- "", //
- "", //
- "", //
- PointType.INT16, //
- false, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S64101(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
- }
- }
-
- public static enum S64110 implements SunSpecPoint {
- MAJOR_F_W_REV(new PointImpl(//
- "S64110_MAJOR_F_W_REV", //
- "AXS Major Firmware Number", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- MID_F_W_REV(new PointImpl(//
- "S64110_MID_F_W_REV", //
- "AXS Mid Firmware Number", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- MINOR_F_W_REV(new PointImpl(//
- "S64110_MINOR_F_W_REV", //
- "AXS Minor Firmware Number", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ENCRYP_KEY(new PointImpl(//
- "S64110_ENCRYP_KEY", //
- "Encryption Key", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- M_A_C_ADDRESS(new PointImpl(//
- "S64110_M_A_C_ADDRESS", //
- "MAC Address", //
- "", //
- "", //
- PointType.STRING7, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- WRITE_PASSWORD(new PointImpl(//
- "S64110_WRITE_PASSWORD", //
- "Write Password", //
- "", //
- "", //
- PointType.STRING8, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ENABLE_D_H_C_P(new PointImpl(//
- "S64110_ENABLE_D_H_C_P", //
- "Enable DHCP", //
- "", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- T_C_P_I_P_ADDRESS(new PointImpl(//
- "S64110_T_C_P_I_P_ADDRESS", //
- "TCPIP Address", //
- "", //
- "", //
- PointType.IPADDR, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- GATEWAY_ADDRESS(new PointImpl(//
- "S64110_GATEWAY_ADDRESS", //
- "TCPIP Gateway", //
- "", //
- "", //
- PointType.IPADDR, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- T_C_P_I_P_NETMASK(new PointImpl(//
- "S64110_T_C_P_I_P_NETMASK", //
- "TCPIP Netmask", //
- "", //
- "", //
- PointType.IPADDR, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- D_N_S1_ADDRESS(new PointImpl(//
- "S64110_D_N_S1_ADDRESS", //
- "TCPIP DNS1", //
- "", //
- "", //
- PointType.IPADDR, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- D_N_S2_ADDRESS(new PointImpl(//
- "S64110_D_N_S2_ADDRESS", //
- "TCPIP DNS2", //
- "", //
- "", //
- PointType.IPADDR, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- MODBUS_PORT(new PointImpl(//
- "S64110_MODBUS_PORT", //
- "ModBus Port", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S_M_T_P_SERVER_NM(new PointImpl(//
- "S64110_S_M_T_P_SERVER_NM", //
- "SMTP Server Name", //
- "", //
- "", //
- PointType.STRING20, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S_M_T_P_ACCOUNT_NM(new PointImpl(//
- "S64110_S_M_T_P_ACCOUNT_NM", //
- "SMTP Account Name", //
- "", //
- "", //
- PointType.STRING16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S_M_T_P_ENABLE_S_S_L(new PointImpl(//
- "S64110_S_M_T_P_ENABLE_S_S_L", //
- "Enable SMTP SSL", //
- "", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S64110_SMTP_enable_SSL.values())), //
- S_M_T_P_PASSWORD(new PointImpl(//
- "S64110_S_M_T_P_PASSWORD", //
- "SMTP Password", //
- "", //
- "", //
- PointType.STRING8, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- S_M_T_P_USER_NM(new PointImpl(//
- "S64110_S_M_T_P_USER_NM", //
- "SMTP User Name", //
- "", //
- "", //
- PointType.STRING20, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- STAT_EMAIL_INT(new PointImpl(//
- "S64110_STAT_EMAIL_INT", //
- "Status Email Interval", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- STAT_START_H_R(new PointImpl(//
- "S64110_STAT_START_H_R", //
- "Status Email Start Hour", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- STAT_EMAIL_SUB(new PointImpl(//
- "S64110_STAT_EMAIL_SUB", //
- "Status Email Subject", //
- "", //
- "", //
- PointType.STRING25, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- STAT_EMAIL_ADDR1(new PointImpl(//
- "S64110_STAT_EMAIL_ADDR1", //
- "Status Email to Address 1", //
- "", //
- "", //
- PointType.STRING20, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- STAT_EMAIL_ADDR2(new PointImpl(//
- "S64110_STAT_EMAIL_ADDR2", //
- "Status Email to Address 2", //
- "", //
- "", //
- PointType.STRING20, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ALARM_EMAIL_EN(new PointImpl(//
- "S64110_ALARM_EMAIL_EN", //
- "Enable Alarm Email", //
- "", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S64110_Alarm_email_en.values())), //
- ALARM_EMAIL_SUB(new PointImpl(//
- "S64110_ALARM_EMAIL_SUB", //
- "Alarm Email Subject", //
- "", //
- "", //
- PointType.STRING25, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ALARM_EMAIL_ADDR1(new PointImpl(//
- "S64110_ALARM_EMAIL_ADDR1", //
- "Alarm Email to Address 1", //
- "", //
- "", //
- PointType.STRING20, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- ALARM_EMAIL_ADDR2(new PointImpl(//
- "S64110_ALARM_EMAIL_ADDR2", //
- "Alarm Email to Address 2", //
- "", //
- "", //
- PointType.STRING20, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- F_T_P_PASSWORD(new PointImpl(//
- "S64110_F_T_P_PASSWORD", //
- "FTP Password", //
- "", //
- "", //
- PointType.STRING8, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- T_E_L_N_E_T_PASSWORD(new PointImpl(//
- "S64110_T_E_L_N_E_T_PASSWORD", //
- "Telnet Password", //
- "", //
- "", //
- PointType.STRING8, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- LOG_WRITE_INT(new PointImpl(//
- "S64110_LOG_WRITE_INT", //
- "SD-Card Datalog Write Interval", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- LOG_RETAIN(new PointImpl(//
- "S64110_LOG_RETAIN", //
- "SD-Card Datalog Retain", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- LOG_MODE(new PointImpl(//
- "S64110_LOG_MODE", //
- "SD-Card Datalog Mode", //
- "", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S64110_Log_mode.values())), //
- N_T_P_SERVER_NM(new PointImpl(//
- "S64110_N_T_P_SERVER_NM", //
- "NTP Timer Server Name", //
- "", //
- "", //
- PointType.STRING20, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- N_T_P_ENABLE(new PointImpl(//
- "S64110_N_T_P_ENABLE", //
- "Enable Network Time", //
- "", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S64110_NTP_enable.values())), //
- TIME_ZONE(new PointImpl(//
- "S64110_TIME_ZONE", //
- "Time Zone", //
- "", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DATE_YEAR(new PointImpl(//
- "S64110_DATE_YEAR", //
- "Year", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DATE_MONTH(new PointImpl(//
- "S64110_DATE_MONTH", //
- "Month", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- DATE_DAY(new PointImpl(//
- "S64110_DATE_DAY", //
- "Day", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TIME_HOUR(new PointImpl(//
- "S64110_TIME_HOUR", //
- "Hour", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TIME_MINUTE(new PointImpl(//
- "S64110_TIME_MINUTE", //
- "Minute", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- TIME_SECOND(new PointImpl(//
- "S64110_TIME_SECOND", //
- "Second", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- BATTERY_TEMP(new PointImpl(//
- "S64110_BATTERY_TEMP", //
- "Battery Temperature", //
- "", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "Temp_SF", //
- new OptionsEnum[0])), //
- AMBIENT_TEMP(new PointImpl(//
- "S64110_AMBIENT_TEMP", //
- "Ambient Temperature", //
- "", //
- "", //
- PointType.INT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.DEGREE_CELSIUS, //
- "Temp_SF", //
- new OptionsEnum[0])), //
- TEMP_S_F(new PointImpl(//
- "S64110_TEMP_S_F", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- A_X_S_ERROR(new PointImpl(//
- "S64110_A_X_S_ERROR", //
- "AXS Error", //
- "", //
- "", //
- PointType.BITFIELD16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- A_X_S_STATUS(new PointImpl(//
- "S64110_A_X_S_STATUS", //
- "AXS Status", //
- "", //
- "", //
- PointType.BITFIELD16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- A_X_S_SPARE(new PointImpl(//
- "S64110_A_X_S_SPARE", //
- "Spare", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S64110(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
- }
- }
-
- public static enum S64110_SMTP_enable_SSL implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- ASX_DISABLED(0, "ASX_DISABLED"), //
- ASX_ENABLED(1, "ASX_ENABLED"); //
-
- private final int value;
- private final String name;
-
- private S64110_SMTP_enable_SSL(int value, String name) {
- this.value = value;
- this.name = name;
- }
-
- @Override
- public int getValue() {
- return this.value;
- }
-
- @Override
- public String getName() {
- return this.name;
- }
-
- @Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
- }
- }
-
- public static enum S64110_Alarm_email_en implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- ASX_DISABLED(0, "ASX_DISABLED"), //
- ASX_ENABLED(1, "ASX_ENABLED"); //
-
- private final int value;
- private final String name;
-
- private S64110_Alarm_email_en(int value, String name) {
- this.value = value;
- this.name = name;
- }
-
- @Override
- public int getValue() {
- return this.value;
- }
-
- @Override
- public String getName() {
- return this.name;
- }
-
- @Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
- }
- }
-
- public static enum S64110_Log_mode implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- LOG_DISABLED(0, "LOG_DISABLED"), //
- LOG_EXCEL(1, "LOG_EXCEL"), //
- LOG_COMPACT(2, "LOG_COMPACT"); //
-
- private final int value;
- private final String name;
-
- private S64110_Log_mode(int value, String name) {
- this.value = value;
- this.name = name;
- }
-
- @Override
- public int getValue() {
- return this.value;
- }
-
- @Override
- public String getName() {
- return this.name;
- }
-
- @Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
- }
- }
-
- public static enum S64110_NTP_enable implements OptionsEnum {
- UNDEFINED(-1, "Undefined"), //
- ASX_DISABLED(0, "ASX_DISABLED"), //
- ASX_ENABLED(1, "ASX_ENABLED"); //
+ ELTEK_COUNTRY_CODE(new ValuePoint("S64101_ELTEK_COUNTRY_CODE", "", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ ELTEK_FEEDING_PHASE(new ValuePoint("S64101_ELTEK_FEEDING_PHASE", "", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ ELTEK_A_P_D_METHOD(new ValuePoint("S64101_ELTEK_A_P_D_METHOD", "", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ ELTEK_A_P_D_POWER_REF(new ValuePoint("S64101_ELTEK_A_P_D_POWER_REF", "", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ ELTEK_R_P_S_METHOD(new ValuePoint("S64101_ELTEK_R_P_S_METHOD", "", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ ELTEK_R_P_S_Q_REF(new ValuePoint("S64101_ELTEK_R_P_S_Q_REF", "", "", //
+ ValuePoint.Type.UINT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ ELTEK_R_P_S_COS_PHI_REF(new ValuePoint("S64101_ELTEK_R_P_S_COS_PHI_REF", "", "", //
+ ValuePoint.Type.INT16, false /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE));
- private final int value;
- private final String name;
-
- private S64110_NTP_enable(int value, String name) {
- this.value = value;
- this.name = name;
- }
-
- @Override
- public int getValue() {
- return this.value;
- }
+ private final Point point;
- @Override
- public String getName() {
- return this.name;
+ private S64101(Point point) {
+ this.point = point;
}
@Override
- public OptionsEnum getUndefined() {
- return UNDEFINED;
+ public Point get() {
+ return this.point;
}
}
public static enum S64111 implements SunSpecPoint {
- PORT(new PointImpl(//
- "S64111_PORT", //
- "Port Number", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_SF(new PointImpl(//
- "S64111_V_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- A_SF(new PointImpl(//
- "S64111_A_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- P_SF(new PointImpl(//
- "S64111_P_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- AH_SF(new PointImpl(//
- "S64111_AH_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- KWH_SF(new PointImpl(//
- "S64111_KWH_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- BATT_V(new PointImpl(//
- "S64111_BATT_V", //
- "Battery Voltage", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- ARRAY_V(new PointImpl(//
- "S64111_ARRAY_V", //
- "Array Voltage", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- OUTPUT_A(new PointImpl(//
- "S64111_OUTPUT_A", //
- "Output Current", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "A_SF", //
- new OptionsEnum[0])), //
- INPUT_A(new PointImpl(//
- "S64111_INPUT_A", //
- "Array Current", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "P_SF", //
- new OptionsEnum[0])), //
- CHARGER_ST(new PointImpl(//
- "S64111_CHARGER_ST", //
- "Operating State", //
- "", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S64111_ChargerSt.values())), //
- OUTPUT_W(new PointImpl(//
- "S64111_OUTPUT_W", //
- "Output Wattage", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "P_SF", //
- new OptionsEnum[0])), //
- TODAY_MIN_BAT_V(new PointImpl(//
- "S64111_TODAY_MIN_BAT_V", //
- "Today's Minimum Battery Voltage", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- TODAY_MAX_BAT_V(new PointImpl(//
- "S64111_TODAY_MAX_BAT_V", //
- "Today's Maximum Battery Voltage", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- VOCV(new PointImpl(//
- "S64111_VOCV", //
- "VOC", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- TODAY_MAX_V_O_C(new PointImpl(//
- "S64111_TODAY_MAX_V_O_C", //
- "Today's Maximum VOC", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- TODAYK_WH_OUTPUT(new PointImpl(//
- "S64111_TODAYK_WH_OUTPUT", //
- "Today's kWh", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.KILOWATT_HOURS, //
- "KWH_SF", //
- new OptionsEnum[0])), //
- TODAY_A_H_OUTPUT(new PointImpl(//
- "S64111_TODAY_A_H_OUTPUT", //
- "Today's AH", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE_HOURS, //
- "AH_SF", //
- new OptionsEnum[0])), //
- LIFE_TIME_K_W_H_OUT(new PointImpl(//
- "S64111_LIFE_TIME_K_W_H_OUT", //
- "Lifetime kWh", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.KILOWATT_HOURS, //
- "P_SF", //
- new OptionsEnum[0])), //
- LIFE_TIME_A_H_OUT(new PointImpl(//
- "S64111_LIFE_TIME_A_H_OUT", //
- "Lifetime kAH", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.KILOAMPERE_HOURS, //
- "KWH_SF", //
- new OptionsEnum[0])), //
- LIFE_TIME_MAX_OUT(new PointImpl(//
- "S64111_LIFE_TIME_MAX_OUT", //
- "Lifetime Maximum Output Wattage", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "P_SF", //
- new OptionsEnum[0])), //
- LIFE_TIME_MAX_BATT(new PointImpl(//
- "S64111_LIFE_TIME_MAX_BATT", //
- "Lifetime Maximum Battery Voltage", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- LIFE_TIME_MAX_V_O_C(new PointImpl(//
- "S64111_LIFE_TIME_MAX_V_O_C", //
- "Lifetime Maximum VOC Voltage", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S64111(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ PORT(new ValuePoint("S64111_PORT", "Port Number", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ V_SF(new ScaleFactorPoint("S64111_V_SF", "", "")), //
+ A_SF(new ScaleFactorPoint("S64111_A_SF", "", "")), //
+ P_SF(new ScaleFactorPoint("S64111_P_SF", "", "")), //
+ AH_SF(new ScaleFactorPoint("S64111_AH_SF", "", "")), //
+ KWH_SF(new ScaleFactorPoint("S64111_KWH_SF", "", "")), //
+ BATT_V(new ScaledValuePoint("S64111_BATT_V", "Battery Voltage", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ ARRAY_V(new ScaledValuePoint("S64111_ARRAY_V", "Array Voltage", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ OUTPUT_A(new ScaledValuePoint("S64111_OUTPUT_A", "Output Current", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "A_SF")), //
+ INPUT_A(new ScaledValuePoint("S64111_INPUT_A", "Array Current", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "P_SF")), //
+ CHARGER_ST(new EnumPoint("S64111_CHARGER_ST", "Operating State", "", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S64111_ChargerSt.values())), //
+ OUTPUT_W(new ScaledValuePoint("S64111_OUTPUT_W", "Output Wattage", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "P_SF")), //
+ TODAY_MIN_BAT_V(new ScaledValuePoint("S64111_TODAY_MIN_BAT_V", "Today's Minimum Battery Voltage", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ TODAY_MAX_BAT_V(new ScaledValuePoint("S64111_TODAY_MAX_BAT_V", "Today's Maximum Battery Voltage", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ VOCV(new ScaledValuePoint("S64111_VOCV", "VOC", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ TODAY_MAX_V_O_C(new ScaledValuePoint("S64111_TODAY_MAX_V_O_C", "Today's Maximum VOC", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ TODAYK_WH_OUTPUT(new ScaledValuePoint("S64111_TODAYK_WH_OUTPUT", "Today's kWh", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.KILOWATT_HOURS, "KWH_SF")), //
+ TODAY_A_H_OUTPUT(new ScaledValuePoint("S64111_TODAY_A_H_OUTPUT", "Today's AH", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE_HOURS, "AH_SF")), //
+ LIFE_TIME_K_W_H_OUT(new ScaledValuePoint("S64111_LIFE_TIME_K_W_H_OUT", "Lifetime kWh", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.KILOWATT_HOURS, "P_SF")), //
+ LIFE_TIME_A_H_OUT(new ScaledValuePoint("S64111_LIFE_TIME_A_H_OUT", "Lifetime kAH", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.KILOAMPERE_HOURS, "KWH_SF")), //
+ LIFE_TIME_MAX_OUT(new ScaledValuePoint("S64111_LIFE_TIME_MAX_OUT", "Lifetime Maximum Output Wattage", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "P_SF")), //
+ LIFE_TIME_MAX_BATT(new ScaledValuePoint("S64111_LIFE_TIME_MAX_BATT", "Lifetime Maximum Battery Voltage", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ LIFE_TIME_MAX_V_O_C(new ScaledValuePoint("S64111_LIFE_TIME_MAX_V_O_C", "Lifetime Maximum VOC Voltage", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF"));
+
+ private final Point point;
+
+ private S64111(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
@@ -17294,7 +6607,7 @@ public static enum S64111_ChargerSt implements OptionsEnum {
FLOAT(1, "FLOAT"), //
BULK(2, "BULK"), //
ABSORB(3, "ABSORB"), //
- EQ(4, "EQ"); //
+ EQ(4, "EQ");
private final int value;
private final String name;
@@ -17321,720 +6634,138 @@ public OptionsEnum getUndefined() {
}
public static enum S64112 implements SunSpecPoint {
- PORT(new PointImpl(//
- "S64112_PORT", //
- "Port Number", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- V_SF(new PointImpl(//
- "S64112_V_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- C_SF(new PointImpl(//
- "S64112_C_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- H_SF(new PointImpl(//
- "S64112_H_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- P_SF(new PointImpl(//
- "S64112_P_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- AH_SF(new PointImpl(//
- "S64112_AH_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- KWH_SF(new PointImpl(//
- "S64112_KWH_SF", //
- "", //
- "", //
- "", //
- PointType.SUNSSF, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- C_C_CONFIG_FAULT(new PointImpl(//
- "S64112_C_C_CONFIG_FAULT", //
- "Faults", //
- "", //
- "", //
- PointType.BITFIELD16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- C_C_CONFIG_ABSORB_V(new PointImpl(//
- "S64112_C_C_CONFIG_ABSORB_V", //
- "Absorb", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_ABSORB_HR(new PointImpl(//
- "S64112_C_C_CONFIG_ABSORB_HR", //
- "Absorb Time", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "H_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_ABSORB_END_A(new PointImpl(//
- "S64112_C_C_CONFIG_ABSORB_END_A", //
- "Absorb End", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_REBULK_V(new PointImpl(//
- "S64112_C_C_CONFIG_REBULK_V", //
- "Rebulk", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_FLOAT_V(new PointImpl(//
- "S64112_C_C_CONFIG_FLOAT_V", //
- "Float", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_MAX_CHG_A(new PointImpl(//
- "S64112_C_C_CONFIG_MAX_CHG_A", //
- "Maximum Charge", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_EQUALIZE_V(new PointImpl(//
- "S64112_C_C_CONFIG_EQUALIZE_V", //
- "Equalize", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_EQUALIZE_HR(new PointImpl(//
- "S64112_C_C_CONFIG_EQUALIZE_HR", //
- "Equalize Time", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- C_C_CONFIG_AUTO_EQUALIZE(new PointImpl(//
- "S64112_C_C_CONFIG_AUTO_EQUALIZE", //
- "Auto Equalize Interval", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- C_C_CONFIG_M_P_P_T_MODE(new PointImpl(//
- "S64112_C_C_CONFIG_M_P_P_T_MODE", //
- "MPPT mode", //
- "", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S64112_CC_Config_MPPT_mode.values())), //
- C_C_CONFIG_SWEEP_WIDTH(new PointImpl(//
- "S64112_C_C_CONFIG_SWEEP_WIDTH", //
- "Sweep Width", //
- "", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S64112_CC_Config_sweep_width.values())), //
- C_C_CONFIG_SWEEP_MAX(new PointImpl(//
- "S64112_C_C_CONFIG_SWEEP_MAX", //
- "Sweep Maximum", //
- "", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S64112_CC_Config_sweep_max.values())), //
- C_C_CONFIG_U_PICK_DUTY_CYC(new PointImpl(//
- "S64112_C_C_CONFIG_U_PICK_DUTY_CYC", //
- "U-Pick PWM Duty Cycle", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_GRID_TIE(new PointImpl(//
- "S64112_C_C_CONFIG_GRID_TIE", //
- "Grid Tie Mode", //
- "", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S64112_CC_Config_grid_tie.values())), //
- C_C_CONFIG_TEMP_COMP(new PointImpl(//
- "S64112_C_C_CONFIG_TEMP_COMP", //
- "Temp Comp Mode", //
- "", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S64112_CC_Config_temp_comp.values())), //
- C_C_CONFIG_TEMP_COMP_LLIMT(new PointImpl(//
- "S64112_C_C_CONFIG_TEMP_COMP_LLIMT", //
- "Temp Comp Lower Limit", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_TEMP_COMP_HLIMT(new PointImpl(//
- "S64112_C_C_CONFIG_TEMP_COMP_HLIMT", //
- "Temp Comp Upper Limit", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_AUTO_RESTART(new PointImpl(//
- "S64112_C_C_CONFIG_AUTO_RESTART", //
- "Auto Restart Mode", //
- "", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S64112_CC_Config_auto_restart.values())), //
- C_C_CONFIG_WAKEUP_V_O_C(new PointImpl(//
- "S64112_C_C_CONFIG_WAKEUP_V_O_C", //
- "Wakeup VOC Change", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_SNOOZE_MODE_A(new PointImpl(//
- "S64112_C_C_CONFIG_SNOOZE_MODE_A", //
- "Snooze Mode", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_WAKEUP_INTERVAL(new PointImpl(//
- "S64112_C_C_CONFIG_WAKEUP_INTERVAL", //
- "Wakeup Interval", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- C_C_CONFIG_A_U_X_MODE(new PointImpl(//
- "S64112_C_C_CONFIG_A_U_X_MODE", //
- "AUX Output Mode", //
- "", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S64112_CC_Config_AUX_mode.values())), //
- C_C_CONFIG_A_U_X_CONTROL(new PointImpl(//
- "S64112_C_C_CONFIG_A_U_X_CONTROL", //
- "AUX Output Control", //
- "", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S64112_CC_Config_AUX_control.values())), //
- C_C_CONFIG_A_U_X_STATE(new PointImpl(//
- "S64112_C_C_CONFIG_A_U_X_STATE", //
- "AUX Output State", //
- "", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S64112_CC_Config_AUX_state.values())), //
- C_C_CONFIG_A_U_X_POLARITY(new PointImpl(//
- "S64112_C_C_CONFIG_A_U_X_POLARITY", //
- "AUX Output Polarity", //
- "", //
- "", //
- PointType.ENUM16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- S64112_CC_Config_AUX_polarity.values())), //
- C_C_CONFIG_A_U_X_L_BATT_DISC(new PointImpl(//
- "S64112_C_C_CONFIG_A_U_X_L_BATT_DISC", //
- "AUX Low Battery Disconnect", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_A_U_X_L_BATT_RCON(new PointImpl(//
- "S64112_C_C_CONFIG_A_U_X_L_BATT_RCON", //
- "AUX Low Battery Reconnect", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_A_U_X_L_BATT_DLY(new PointImpl(//
- "S64112_C_C_CONFIG_A_U_X_L_BATT_DLY", //
- "AUX Low Battery Disconnect Delay", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- C_C_CONFIG_A_U_X_VENT_FAN_V(new PointImpl(//
- "S64112_C_C_CONFIG_A_U_X_VENT_FAN_V", //
- "AUX Vent Fan", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_A_U_X_P_V_TRIGGER_V(new PointImpl(//
- "S64112_C_C_CONFIG_A_U_X_P_V_TRIGGER_V", //
- "AUX PV Trigger", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_A_U_X_P_V_TRG_H_TM(new PointImpl(//
- "S64112_C_C_CONFIG_A_U_X_P_V_TRG_H_TM", //
- "AUX PV Trigger Hold Time", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- C_C_CONFIG_A_U_X_NLITE_THRS_V(new PointImpl(//
- "S64112_C_C_CONFIG_A_U_X_NLITE_THRS_V", //
- "AUX Night Light Threshold", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_A_U_X_NLITE_ON_TM(new PointImpl(//
- "S64112_C_C_CONFIG_A_U_X_NLITE_ON_TM", //
- "AUX Night Light On Time", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "H_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_A_U_X_NLITE_ON_HIST(new PointImpl(//
- "S64112_C_C_CONFIG_A_U_X_NLITE_ON_HIST", //
- "AUX Night Light On Hysteresis", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- C_C_CONFIG_A_U_X_NLITE_OFF_HIST(new PointImpl(//
- "S64112_C_C_CONFIG_A_U_X_NLITE_OFF_HIST", //
- "AUX Night Light Off Hysteresis", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- C_C_CONFIG_A_U_X_ERROR_BATT_V(new PointImpl(//
- "S64112_C_C_CONFIG_A_U_X_ERROR_BATT_V", //
- "AUX Error Output Low Battery", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_A_U_X_DIVERT_H_TIME(new PointImpl(//
- "S64112_C_C_CONFIG_A_U_X_DIVERT_H_TIME", //
- "AUX Divert Hold Time", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_A_U_X_DIVERT_DLY_TIME(new PointImpl(//
- "S64112_C_C_CONFIG_A_U_X_DIVERT_DLY_TIME", //
- "AUX Divert Delay Time", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- C_C_CONFIG_A_U_X_DIVERT_REL_V(new PointImpl(//
- "S64112_C_C_CONFIG_A_U_X_DIVERT_REL_V", //
- "AUX Divert Relative", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_A_U_X_DIVERT_HYST_V(new PointImpl(//
- "S64112_C_C_CONFIG_A_U_X_DIVERT_HYST_V", //
- "AUX Divert Hysteresis", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_MAJOR_F_W_REV(new PointImpl(//
- "S64112_C_C_CONFIG_MAJOR_F_W_REV", //
- "FM CC Major Firmware Number", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- C_C_CONFIG_MID_F_W_REV(new PointImpl(//
- "S64112_C_C_CONFIG_MID_F_W_REV", //
- "FM CC Mid Firmware Number", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- C_C_CONFIG_MINOR_F_W_REV(new PointImpl(//
- "S64112_C_C_CONFIG_MINOR_F_W_REV", //
- "FM CC Minor Firmware Number", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- C_C_CONFIG_DATA_LOG_DAY_OFFSET(new PointImpl(//
- "S64112_C_C_CONFIG_DATA_LOG_DAY_OFFSET", //
- "Set Data Log Day Offset", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- C_C_CONFIG_DATA_LOG_CUR_DAY_OFF(new PointImpl(//
- "S64112_C_C_CONFIG_DATA_LOG_CUR_DAY_OFF", //
- "Current Data Log Day Offset", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- C_C_CONFIG_DATA_LOG_DAILY_A_H(new PointImpl(//
- "S64112_C_C_CONFIG_DATA_LOG_DAILY_A_H", //
- "Data Log Daily (Ah)", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE_HOURS, //
- null, //
- new OptionsEnum[0])), //
- C_C_CONFIG_DATA_LOG_DAILY_K_W_H(new PointImpl(//
- "S64112_C_C_CONFIG_DATA_LOG_DAILY_K_W_H", //
- "Data Log Daily (kWh)", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.KILOWATT_HOURS, //
- "KWH_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_DATA_LOG_MAX_OUT_A(new PointImpl(//
- "S64112_C_C_CONFIG_DATA_LOG_MAX_OUT_A", //
- "Data Log Daily Maximum Output (A)", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.AMPERE, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_DATA_LOG_MAX_OUT_W(new PointImpl(//
- "S64112_C_C_CONFIG_DATA_LOG_MAX_OUT_W", //
- "Data Log Daily Maximum Output (W)", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.WATT, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_DATA_LOG_ABSORB_T(new PointImpl(//
- "S64112_C_C_CONFIG_DATA_LOG_ABSORB_T", //
- "Data Log Daily Absorb Time", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- C_C_CONFIG_DATA_LOG_FLOAT_T(new PointImpl(//
- "S64112_C_C_CONFIG_DATA_LOG_FLOAT_T", //
- "Data Log Daily Float Time", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- C_C_CONFIG_DATA_LOG_MIN_BATT_V(new PointImpl(//
- "S64112_C_C_CONFIG_DATA_LOG_MIN_BATT_V", //
- "Data Log Daily Minimum Battery", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_DATA_LOG_MAX_BATT_V(new PointImpl(//
- "S64112_C_C_CONFIG_DATA_LOG_MAX_BATT_V", //
- "Data Log Daily Maximum Battery", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_DATA_LOG_MAX_INPUT_V(new PointImpl(//
- "S64112_C_C_CONFIG_DATA_LOG_MAX_INPUT_V", //
- "Data Log Daily Maximum Input", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.VOLT, //
- "V_SF", //
- new OptionsEnum[0])), //
- C_C_CONFIG_DATA_LOG_CLEAR(new PointImpl(//
- "S64112_C_C_CONFIG_DATA_LOG_CLEAR", //
- "Data Log Clear", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])), //
- C_C_CONFIG_DATA_LOG_CLR_COMP(new PointImpl(//
- "S64112_C_C_CONFIG_DATA_LOG_CLR_COMP", //
- "Data Log Clear Complement", //
- "", //
- "", //
- PointType.UINT16, //
- true, //
- AccessMode.READ_ONLY, //
- Unit.NONE, //
- null, //
- new OptionsEnum[0])); //
-
- protected final PointImpl impl;
-
- private S64112(PointImpl impl) {
- this.impl = impl;
- }
-
- @Override
- public PointImpl get() {
- return this.impl;
+ PORT(new ValuePoint("S64112_PORT", "Port Number", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ V_SF(new ScaleFactorPoint("S64112_V_SF", "", "")), //
+ C_SF(new ScaleFactorPoint("S64112_C_SF", "", "")), //
+ H_SF(new ScaleFactorPoint("S64112_H_SF", "", "")), //
+ P_SF(new ScaleFactorPoint("S64112_P_SF", "", "")), //
+ AH_SF(new ScaleFactorPoint("S64112_AH_SF", "", "")), //
+ KWH_SF(new ScaleFactorPoint("S64112_KWH_SF", "", "")), //
+ C_C_CONFIG_FAULT(new BitFieldPoint("S64112_C_C_CONFIG_FAULT", "Faults", "", //
+ BitFieldPoint.Type.BITFIELD16, true /* mandatory? */, AccessMode.READ_ONLY, new SunSpecBitPoint[0])), //
+ C_C_CONFIG_ABSORB_V(new ScaledValuePoint("S64112_C_C_CONFIG_ABSORB_V", "Absorb", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ C_C_CONFIG_ABSORB_HR(new ScaledValuePoint("S64112_C_C_CONFIG_ABSORB_HR", "Absorb Time", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "H_SF")), //
+ C_C_CONFIG_ABSORB_END_A(new ScaledValuePoint("S64112_C_C_CONFIG_ABSORB_END_A", "Absorb End", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "V_SF")), //
+ C_C_CONFIG_REBULK_V(new ScaledValuePoint("S64112_C_C_CONFIG_REBULK_V", "Rebulk", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ C_C_CONFIG_FLOAT_V(new ScaledValuePoint("S64112_C_C_CONFIG_FLOAT_V", "Float", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ C_C_CONFIG_MAX_CHG_A(new ScaledValuePoint("S64112_C_C_CONFIG_MAX_CHG_A", "Maximum Charge", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "V_SF")), //
+ C_C_CONFIG_EQUALIZE_V(new ScaledValuePoint("S64112_C_C_CONFIG_EQUALIZE_V", "Equalize", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ C_C_CONFIG_EQUALIZE_HR(new ValuePoint("S64112_C_C_CONFIG_EQUALIZE_HR", "Equalize Time", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ C_C_CONFIG_AUTO_EQUALIZE(new ValuePoint("S64112_C_C_CONFIG_AUTO_EQUALIZE", "Auto Equalize Interval", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ C_C_CONFIG_M_P_P_T_MODE(new EnumPoint("S64112_C_C_CONFIG_M_P_P_T_MODE", "MPPT mode", "", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S64112_CC_Config_MPPT_mode.values())), //
+ C_C_CONFIG_SWEEP_WIDTH(new EnumPoint("S64112_C_C_CONFIG_SWEEP_WIDTH", "Sweep Width", "", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S64112_CC_Config_sweep_width.values())), //
+ C_C_CONFIG_SWEEP_MAX(new EnumPoint("S64112_C_C_CONFIG_SWEEP_MAX", "Sweep Maximum", "", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S64112_CC_Config_sweep_max.values())), //
+ C_C_CONFIG_U_PICK_DUTY_CYC(new ScaledValuePoint("S64112_C_C_CONFIG_U_PICK_DUTY_CYC", "U-Pick PWM Duty Cycle", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "V_SF")), //
+ C_C_CONFIG_GRID_TIE(new EnumPoint("S64112_C_C_CONFIG_GRID_TIE", "Grid Tie Mode", "", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S64112_CC_Config_grid_tie.values())), //
+ C_C_CONFIG_TEMP_COMP(new EnumPoint("S64112_C_C_CONFIG_TEMP_COMP", "Temp Comp Mode", "", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S64112_CC_Config_temp_comp.values())), //
+ C_C_CONFIG_TEMP_COMP_LLIMT(new ScaledValuePoint("S64112_C_C_CONFIG_TEMP_COMP_LLIMT", "Temp Comp Lower Limit", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ C_C_CONFIG_TEMP_COMP_HLIMT(new ScaledValuePoint("S64112_C_C_CONFIG_TEMP_COMP_HLIMT", "Temp Comp Upper Limit", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ C_C_CONFIG_AUTO_RESTART(new EnumPoint("S64112_C_C_CONFIG_AUTO_RESTART", "Auto Restart Mode", "", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S64112_CC_Config_auto_restart.values())), //
+ C_C_CONFIG_WAKEUP_V_O_C(new ScaledValuePoint("S64112_C_C_CONFIG_WAKEUP_V_O_C", "Wakeup VOC Change", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ C_C_CONFIG_SNOOZE_MODE_A(new ScaledValuePoint("S64112_C_C_CONFIG_SNOOZE_MODE_A", "Snooze Mode", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "V_SF")), //
+ C_C_CONFIG_WAKEUP_INTERVAL(new ValuePoint("S64112_C_C_CONFIG_WAKEUP_INTERVAL", "Wakeup Interval", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ C_C_CONFIG_A_U_X_MODE(new EnumPoint("S64112_C_C_CONFIG_A_U_X_MODE", "AUX Output Mode", "", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S64112_CC_Config_AUX_mode.values())), //
+ C_C_CONFIG_A_U_X_CONTROL(new EnumPoint("S64112_C_C_CONFIG_A_U_X_CONTROL", "AUX Output Control", "", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S64112_CC_Config_AUX_control.values())), //
+ C_C_CONFIG_A_U_X_STATE(new EnumPoint("S64112_C_C_CONFIG_A_U_X_STATE", "AUX Output State", "", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S64112_CC_Config_AUX_state.values())), //
+ C_C_CONFIG_A_U_X_POLARITY(new EnumPoint("S64112_C_C_CONFIG_A_U_X_POLARITY", "AUX Output Polarity", "", //
+ EnumPoint.Type.ENUM16, true /* mandatory? */, AccessMode.READ_ONLY, S64112_CC_Config_AUX_polarity.values())), //
+ C_C_CONFIG_A_U_X_L_BATT_DISC(new ScaledValuePoint("S64112_C_C_CONFIG_A_U_X_L_BATT_DISC", "AUX Low Battery Disconnect", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ C_C_CONFIG_A_U_X_L_BATT_RCON(new ScaledValuePoint("S64112_C_C_CONFIG_A_U_X_L_BATT_RCON", "AUX Low Battery Reconnect", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ C_C_CONFIG_A_U_X_L_BATT_DLY(new ValuePoint("S64112_C_C_CONFIG_A_U_X_L_BATT_DLY", "AUX Low Battery Disconnect Delay", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ C_C_CONFIG_A_U_X_VENT_FAN_V(new ScaledValuePoint("S64112_C_C_CONFIG_A_U_X_VENT_FAN_V", "AUX Vent Fan", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ C_C_CONFIG_A_U_X_P_V_TRIGGER_V(new ScaledValuePoint("S64112_C_C_CONFIG_A_U_X_P_V_TRIGGER_V", "AUX PV Trigger", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ C_C_CONFIG_A_U_X_P_V_TRG_H_TM(new ValuePoint("S64112_C_C_CONFIG_A_U_X_P_V_TRG_H_TM", "AUX PV Trigger Hold Time", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ C_C_CONFIG_A_U_X_NLITE_THRS_V(new ScaledValuePoint("S64112_C_C_CONFIG_A_U_X_NLITE_THRS_V", "AUX Night Light Threshold", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ C_C_CONFIG_A_U_X_NLITE_ON_TM(new ScaledValuePoint("S64112_C_C_CONFIG_A_U_X_NLITE_ON_TM", "AUX Night Light On Time", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "H_SF")), //
+ C_C_CONFIG_A_U_X_NLITE_ON_HIST(new ValuePoint("S64112_C_C_CONFIG_A_U_X_NLITE_ON_HIST", "AUX Night Light On Hysteresis", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ C_C_CONFIG_A_U_X_NLITE_OFF_HIST(new ValuePoint("S64112_C_C_CONFIG_A_U_X_NLITE_OFF_HIST", "AUX Night Light Off Hysteresis", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ C_C_CONFIG_A_U_X_ERROR_BATT_V(new ScaledValuePoint("S64112_C_C_CONFIG_A_U_X_ERROR_BATT_V", "AUX Error Output Low Battery", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ C_C_CONFIG_A_U_X_DIVERT_H_TIME(new ScaledValuePoint("S64112_C_C_CONFIG_A_U_X_DIVERT_H_TIME", "AUX Divert Hold Time", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE, "V_SF")), //
+ C_C_CONFIG_A_U_X_DIVERT_DLY_TIME(new ValuePoint("S64112_C_C_CONFIG_A_U_X_DIVERT_DLY_TIME", "AUX Divert Delay Time", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ C_C_CONFIG_A_U_X_DIVERT_REL_V(new ScaledValuePoint("S64112_C_C_CONFIG_A_U_X_DIVERT_REL_V", "AUX Divert Relative", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ C_C_CONFIG_A_U_X_DIVERT_HYST_V(new ScaledValuePoint("S64112_C_C_CONFIG_A_U_X_DIVERT_HYST_V", "AUX Divert Hysteresis", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ C_C_CONFIG_MAJOR_F_W_REV(new ValuePoint("S64112_C_C_CONFIG_MAJOR_F_W_REV", "FM CC Major Firmware Number", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ C_C_CONFIG_MID_F_W_REV(new ValuePoint("S64112_C_C_CONFIG_MID_F_W_REV", "FM CC Mid Firmware Number", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ C_C_CONFIG_MINOR_F_W_REV(new ValuePoint("S64112_C_C_CONFIG_MINOR_F_W_REV", "FM CC Minor Firmware Number", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ C_C_CONFIG_DATA_LOG_DAY_OFFSET(new ValuePoint("S64112_C_C_CONFIG_DATA_LOG_DAY_OFFSET", "Set Data Log Day Offset", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ C_C_CONFIG_DATA_LOG_CUR_DAY_OFF(new ValuePoint("S64112_C_C_CONFIG_DATA_LOG_CUR_DAY_OFF", "Current Data Log Day Offset", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ C_C_CONFIG_DATA_LOG_DAILY_A_H(new ValuePoint("S64112_C_C_CONFIG_DATA_LOG_DAILY_A_H", "Data Log Daily (Ah)", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE_HOURS)), //
+ C_C_CONFIG_DATA_LOG_DAILY_K_W_H(new ScaledValuePoint("S64112_C_C_CONFIG_DATA_LOG_DAILY_K_W_H", "Data Log Daily (kWh)", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.KILOWATT_HOURS, "KWH_SF")), //
+ C_C_CONFIG_DATA_LOG_MAX_OUT_A(new ScaledValuePoint("S64112_C_C_CONFIG_DATA_LOG_MAX_OUT_A", "Data Log Daily Maximum Output (A)", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.AMPERE, "V_SF")), //
+ C_C_CONFIG_DATA_LOG_MAX_OUT_W(new ScaledValuePoint("S64112_C_C_CONFIG_DATA_LOG_MAX_OUT_W", "Data Log Daily Maximum Output (W)", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.WATT, "V_SF")), //
+ C_C_CONFIG_DATA_LOG_ABSORB_T(new ValuePoint("S64112_C_C_CONFIG_DATA_LOG_ABSORB_T", "Data Log Daily Absorb Time", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ C_C_CONFIG_DATA_LOG_FLOAT_T(new ValuePoint("S64112_C_C_CONFIG_DATA_LOG_FLOAT_T", "Data Log Daily Float Time", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ C_C_CONFIG_DATA_LOG_MIN_BATT_V(new ScaledValuePoint("S64112_C_C_CONFIG_DATA_LOG_MIN_BATT_V", "Data Log Daily Minimum Battery", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ C_C_CONFIG_DATA_LOG_MAX_BATT_V(new ScaledValuePoint("S64112_C_C_CONFIG_DATA_LOG_MAX_BATT_V", "Data Log Daily Maximum Battery", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ C_C_CONFIG_DATA_LOG_MAX_INPUT_V(new ScaledValuePoint("S64112_C_C_CONFIG_DATA_LOG_MAX_INPUT_V", "Data Log Daily Maximum Input", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.VOLT, "V_SF")), //
+ C_C_CONFIG_DATA_LOG_CLEAR(new ValuePoint("S64112_C_C_CONFIG_DATA_LOG_CLEAR", "Data Log Clear", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE)), //
+ C_C_CONFIG_DATA_LOG_CLR_COMP(new ValuePoint("S64112_C_C_CONFIG_DATA_LOG_CLR_COMP", "Data Log Clear Complement", "", //
+ ValuePoint.Type.UINT16, true /* mandatory? */, AccessMode.READ_ONLY, Unit.NONE));
+
+ private final Point point;
+
+ private S64112(Point point) {
+ this.point = point;
+ }
+
+ @Override
+ public Point get() {
+ return this.point;
}
}
@@ -18042,7 +6773,7 @@ public static enum S64112_CC_Config_MPPT_mode implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
AUTO(0, "AUTO"), //
U_PICK(1, "U_PICK"), //
- WIND(2, "WIND"); //
+ WIND(2, "WIND");
private final int value;
private final String name;
@@ -18071,7 +6802,7 @@ public OptionsEnum getUndefined() {
public static enum S64112_CC_Config_sweep_width implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
HALF(0, "HALF"), //
- FULL(1, "FULL"); //
+ FULL(1, "FULL");
private final int value;
private final String name;
@@ -18102,7 +6833,7 @@ public static enum S64112_CC_Config_sweep_max implements OptionsEnum {
EIGHTY_PERCENT(0, "EIGHTY_PERCENT"), //
EIGHTY_FIVE_PERCENT(1, "EIGHTY_FIVE_PERCENT"), //
NINTY_PERCENT(2, "NINTY_PERCENT"), //
- NINTY_NINE_PERCENT(3, "NINTY_NINE_PERCENT"); //
+ NINTY_NINE_PERCENT(3, "NINTY_NINE_PERCENT");
private final int value;
private final String name;
@@ -18131,7 +6862,7 @@ public OptionsEnum getUndefined() {
public static enum S64112_CC_Config_grid_tie implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -18160,7 +6891,7 @@ public OptionsEnum getUndefined() {
public static enum S64112_CC_Config_temp_comp implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
WIDE(0, "WIDE"), //
- LIMITED(1, "LIMITED"); //
+ LIMITED(1, "LIMITED");
private final int value;
private final String name;
@@ -18190,7 +6921,7 @@ public static enum S64112_CC_Config_auto_restart implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
OFF(0, "OFF"), //
EVERY_90_MINUTES(1, "EVERY_90_MINUTES"), //
- EVERY_90_MINUTES_IF_ABSORB_OR_FLOAT(2, "EVERY_90_MINUTES_IF_ABSORB_OR_FLOAT"); //
+ EVERY_90_MINUTES_IF_ABSORB_OR_FLOAT(2, "EVERY_90_MINUTES_IF_ABSORB_OR_FLOAT");
private final int value;
private final String name;
@@ -18226,7 +6957,7 @@ public static enum S64112_CC_Config_AUX_mode implements OptionsEnum {
VENT_FAN(5, "VENT_FAN"), //
P_V_TRIGGER(6, "P_V_TRIGGER"), //
ERROR_OUTPUT(7, "ERROR_OUTPUT"), //
- NIGHT_LIGHT(8, "NIGHT_LIGHT"); //
+ NIGHT_LIGHT(8, "NIGHT_LIGHT");
private final int value;
private final String name;
@@ -18256,7 +6987,7 @@ public static enum S64112_CC_Config_AUX_control implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
OFF(0, "OFF"), //
AUTO(1, "AUTO"), //
- ON(2, "ON"); //
+ ON(2, "ON");
private final int value;
private final String name;
@@ -18285,7 +7016,7 @@ public OptionsEnum getUndefined() {
public static enum S64112_CC_Config_AUX_state implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
DISABLED(0, "DISABLED"), //
- ENABLED(1, "ENABLED"); //
+ ENABLED(1, "ENABLED");
private final int value;
private final String name;
@@ -18314,7 +7045,7 @@ public OptionsEnum getUndefined() {
public static enum S64112_CC_Config_AUX_polarity implements OptionsEnum {
UNDEFINED(-1, "Undefined"), //
LOW(0, "LOW"), //
- HIGH(1, "HIGH"); //
+ HIGH(1, "HIGH");
private final int value;
private final String name;
@@ -18342,16 +7073,14 @@ public OptionsEnum getUndefined() {
public final String label;
public final String description;
- public final String notes;
public final int length;
public final SunSpecPoint[] points;
public final SunSpecModelType modelType;
- private DefaultSunSpecModel(String label, String description, String notes, int length, SunSpecPoint[] points,
+ private DefaultSunSpecModel(String label, String description, int length, SunSpecPoint[] points,
SunSpecModelType modelType) {
this.label = label;
this.description = description;
- this.notes = notes;
this.length = length;
this.points = points;
this.modelType = modelType;
diff --git a/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/Point.java b/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/Point.java
new file mode 100644
index 00000000000..3ea9dc3bbdd
--- /dev/null
+++ b/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/Point.java
@@ -0,0 +1,418 @@
+package io.openems.edge.bridge.modbus.sunspec;
+
+import static io.openems.common.channel.AccessMode.READ_ONLY;
+import static io.openems.edge.bridge.modbus.api.element.AbstractModbusElement.FillElementsPriority.HIGH;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.function.Consumer;
+
+import io.openems.common.channel.AccessMode;
+import io.openems.common.channel.Level;
+import io.openems.common.channel.Unit;
+import io.openems.common.types.OpenemsType;
+import io.openems.common.types.OptionsEnum;
+import io.openems.edge.bridge.modbus.api.element.BitsWordElement;
+import io.openems.edge.bridge.modbus.api.element.DummyRegisterElement;
+import io.openems.edge.bridge.modbus.api.element.FloatDoublewordElement;
+import io.openems.edge.bridge.modbus.api.element.FloatQuadruplewordElement;
+import io.openems.edge.bridge.modbus.api.element.ModbusElement;
+import io.openems.edge.bridge.modbus.api.element.SignedDoublewordElement;
+import io.openems.edge.bridge.modbus.api.element.SignedQuadruplewordElement;
+import io.openems.edge.bridge.modbus.api.element.SignedWordElement;
+import io.openems.edge.bridge.modbus.api.element.StringWordElement;
+import io.openems.edge.bridge.modbus.api.element.UnsignedDoublewordElement;
+import io.openems.edge.bridge.modbus.api.element.UnsignedQuadruplewordElement;
+import io.openems.edge.bridge.modbus.api.element.UnsignedWordElement;
+import io.openems.edge.common.channel.ChannelId;
+import io.openems.edge.common.channel.Doc;
+import io.openems.edge.common.channel.internal.AbstractDoc;
+import io.openems.edge.common.channel.internal.OpenemsTypeDoc;
+
+/**
+ * The internal PointImpl object for easier handling in Enums.
+ */
+public abstract sealed class Point {
+
+ /**
+ * A Point that relates to a {@link ModbusElement}.
+ */
+ protected static sealed interface ModbusElementPoint {
+
+ /**
+ * Generates the {@link ModbusElement}.
+ *
+ * @param startAddress the start-address
+ * @return the {@link ModbusElement}
+ */
+ public ModbusElement generateModbusElement(int startAddress);
+ }
+
+ public static sealed interface Type {
+
+ public static final short UNDEFINED_8 = Short.MIN_VALUE /* -32768 */;
+ public static final int UNDEFINED_16 = 65535;
+ public static final long UNDEFINED_32 = 4294967295L;
+
+ /**
+ * Returns true if the value represents a 'defined' value in SunSpec.
+ *
+ * @param value the value; never null
+ * @return true for defined values
+ */
+ public boolean isDefined(Object value);
+ }
+
+ public final String name;
+ public final String description;
+ public final Point.Type type;
+ public final boolean mandatory;
+ public final AccessMode accessMode;
+
+ public Point(String name, String label, String description, Point.Type type, boolean mandatory,
+ AccessMode accessMode) {
+ this.name = name;
+ this.description = description;
+ this.type = type;
+ this.mandatory = mandatory;
+ this.accessMode = accessMode;
+ }
+
+ /**
+ * Returns true if the value represents a 'defined' value in SunSpec.
+ *
+ * @param value the value
+ * @return true for defined values
+ */
+ public boolean isDefined(Object value) {
+ if (this.type != null && value != null) {
+ return this.type.isDefined(value);
+ }
+ return false;
+ }
+
+ /**
+ * Represents a Point with a ChannelId.
+ */
+ public abstract static sealed class ChannelIdPoint extends Point
+ permits Point.ValuePoint, Point.EnumPoint, Point.ScaleFactorPoint, Point.BitPoint {
+
+ public final ChannelId channelId;
+
+ private ChannelIdPoint(String name, String label, String description, Point.Type type, boolean mandatory,
+ AccessMode accessMode, AbstractDoc> doc) {
+ super(name, label, description, type, mandatory, accessMode);
+ if (!label.isBlank() && !description.isBlank()) {
+ doc.text(label + ". " + description);
+ } else if (!label.isBlank()) {
+ doc.text(label);
+ } else {
+ doc.text(description);
+ }
+ doc.accessMode(accessMode);
+ this.channelId = new SunSChannelId<>(name, doc);
+ }
+
+ }
+
+ /**
+ * Represents a Point with a discrete value.
+ */
+ public static non-sealed class ValuePoint extends Point.ChannelIdPoint implements ModbusElementPoint {
+
+ public static enum Type implements Point.Type {
+ INT16(1), UINT16(1), COUNT(1), ACC16(1), INT32(2), UINT32(2), FLOAT32(2), ACC32(2), INT64(4), UINT64(4),
+ FLOAT64(4), ACC64(4), STRING2(2), STRING4(4), STRING5(5), STRING6(6), STRING7(7), STRING8(8), STRING12(12),
+ STRING16(16), STRING20(20), STRING25(25), STRING32(32),
+ /* use PAD for reserved points */
+ PAD(1), IPADDR(1), IPV6ADDR(16), EUI48(6);
+
+ public final int length;
+
+ private Type(int length) {
+ this.length = length;
+ }
+
+ @Override
+ public boolean isDefined(Object value) {
+ return switch (this) {
+ case INT16 -> !value.equals(UNDEFINED_8);
+ case UINT16, COUNT -> !value.equals(UNDEFINED_16);
+ case ACC16, ACC32, IPADDR, ACC64, IPV6ADDR -> !value.equals(0);
+ case INT32 -> !value.equals(0x80000000); // TODO correct?
+ case UINT32 -> !value.equals(UNDEFINED_32);
+ case INT64 -> !value.equals(0x8000000000000000L); // TODO correct?
+ case UINT64 -> !value.equals(0xFFFFFFFFFFFFFFFFL); // TODO correct?
+ case FLOAT32 -> !value.equals(Float.NaN);
+ case FLOAT64 -> false; // TODO not implemented
+ case PAD // This point is never needed/reserved
+ -> false;
+ case STRING12, STRING16, STRING2, STRING20, STRING25, STRING32, STRING4, STRING5, STRING6, STRING7,
+ STRING8 ->
+ !"".equals(value);
+ case EUI48 -> false; // TODO not implemented
+ };
+ }
+ }
+
+ private final Type type;
+
+ private ValuePoint(String name, String label, String description, ValuePoint.Type type, boolean mandatory,
+ AccessMode accessMode, Unit unit, OpenemsTypeDoc> doc) {
+ super(name, label, description, type, mandatory, accessMode, doc.unit(unit));
+ this.type = type;
+ }
+
+ public ValuePoint(String name, String label, String description, ValuePoint.Type type, boolean mandatory,
+ AccessMode accessMode, Unit unit) {
+ this(name, label, description, type, mandatory, accessMode, unit, //
+ Doc.of(//
+ switch (type) {
+ case UINT16, ACC16, INT16, COUNT, INT32, PAD, // ignore
+ EUI48, FLOAT32 // avoid floating point numbers; FLOAT32 might not fit in INTEGER
+ -> OpenemsType.INTEGER;
+ case ACC32, IPADDR, UINT32, UINT64, ACC64, INT64, IPV6ADDR, //
+ FLOAT64 // avoid floating point numbers
+ -> OpenemsType.LONG;
+ case STRING2, STRING4, STRING5, STRING6, STRING7, STRING8, STRING12, STRING16, STRING20,
+ STRING25, STRING32 //
+ -> OpenemsType.STRING;
+ }));
+ }
+
+ @Override
+ public ModbusElement generateModbusElement(int startAddress) {
+ return switch (this.type) {
+ case UINT16, ACC16 //
+ -> new UnsignedWordElement(startAddress);
+ case INT16, COUNT //
+ -> new SignedWordElement(startAddress);
+ case UINT32, ACC32, IPADDR //
+ -> new UnsignedDoublewordElement(startAddress);
+ case INT32 //
+ -> new SignedDoublewordElement(startAddress);
+ case UINT64, ACC64 //
+ -> new UnsignedQuadruplewordElement(startAddress);
+ case INT64 //
+ -> new SignedQuadruplewordElement(startAddress);
+ case FLOAT32 //
+ -> new FloatDoublewordElement(startAddress);
+ case PAD //
+ -> new DummyRegisterElement(startAddress);
+ case FLOAT64 //
+ -> new FloatQuadruplewordElement(startAddress);
+ case EUI48, IPV6ADDR // this would be UINT128
+ -> null;
+ case STRING2 -> new StringWordElement(startAddress, 2);
+ case STRING4 -> new StringWordElement(startAddress, 4);
+ case STRING5 -> new StringWordElement(startAddress, 5);
+ case STRING6 -> new StringWordElement(startAddress, 6);
+ case STRING7 -> new StringWordElement(startAddress, 7);
+ case STRING8 -> new StringWordElement(startAddress, 8);
+ case STRING12 -> new StringWordElement(startAddress, 12);
+ case STRING16 -> new StringWordElement(startAddress, 16);
+ case STRING20 -> new StringWordElement(startAddress, 20);
+ case STRING25 -> new StringWordElement(startAddress, 25);
+ case STRING32 -> new StringWordElement(startAddress, 32);
+ };
+ }
+ }
+
+ /**
+ * Represents a Point with a defined Scale-Factor.
+ */
+ public static final class ScaledValuePoint extends Point.ValuePoint {
+ public final String scaleFactor;
+
+ public ScaledValuePoint(String name, String label, String description, ValuePoint.Type type, boolean mandatory,
+ AccessMode accessMode, Unit unit, String scaleFactor) {
+ super(name, label, description, type, mandatory, accessMode, unit, Doc.of(OpenemsType.FLOAT));
+ this.scaleFactor = scaleFactor;
+ }
+ }
+
+ /**
+ * Represents a Scale-Factor Point.
+ */
+ public static final class ScaleFactorPoint extends Point.ChannelIdPoint implements ModbusElementPoint {
+
+ public static enum Type implements Point.Type {
+ SUNSSF(1);
+
+ public final int length;
+
+ private Type(int length) {
+ this.length = length;
+ }
+
+ @Override
+ public boolean isDefined(Object value) {
+ return switch (this) {
+ case SUNSSF -> !value.equals(UNDEFINED_8);
+ };
+ }
+ }
+
+ public ScaleFactorPoint(String name, String label, String description) {
+ super(name, label, description, Type.SUNSSF, true, READ_ONLY, Doc.of(OpenemsType.INTEGER));
+ }
+
+ @Override
+ public ModbusElement generateModbusElement(int startAddress) {
+ return new SignedWordElement(startAddress) //
+ .fillElementsPriority(HIGH);
+ }
+ }
+
+ /**
+ * Represents a Point with an Enum value.
+ */
+ public static final class EnumPoint extends Point.ChannelIdPoint implements ModbusElementPoint {
+
+ public static enum Type implements Point.Type {
+ ENUM16(1), ENUM32(2);
+
+ public final int length;
+
+ private Type(int length) {
+ this.length = length;
+ }
+
+ @Override
+ public boolean isDefined(Object value) {
+ return switch (this) {
+ case ENUM16 -> !value.equals(UNDEFINED_16);
+ case ENUM32 -> !value.equals(UNDEFINED_32);
+ };
+ }
+ }
+
+ private final Type type;
+
+ public EnumPoint(String name, String label, String description, EnumPoint.Type type, boolean mandatory,
+ AccessMode accessMode, OptionsEnum[] options) {
+ super(name, label, description, type, mandatory, accessMode, Doc.of(options));
+ this.type = type;
+ }
+
+ @Override
+ public ModbusElement generateModbusElement(int startAddress) {
+ return switch (this.type) {
+ case ENUM16 //
+ -> new UnsignedWordElement(startAddress);
+ case ENUM32 //
+ -> new UnsignedDoublewordElement(startAddress);
+ };
+ }
+
+ }
+
+ /**
+ * Represents a Point with BitField values.
+ */
+ public static final class BitFieldPoint extends Point {
+
+ public interface SunSpecBitPoint extends SunSpecPoint {
+ @Override
+ public BitPoint get();
+ }
+
+ public static enum Type implements Point.Type {
+ BITFIELD16(1), BITFIELD32(2);
+
+ public final int length;
+
+ private Type(int length) {
+ this.length = length;
+ }
+
+ @Override
+ public boolean isDefined(Object value) {
+ return switch (this) {
+ case BITFIELD16 -> !value.equals(UNDEFINED_16);
+ case BITFIELD32 -> !value.equals(UNDEFINED_32);
+ };
+ }
+ }
+
+ public final SunSpecBitPoint[] points;
+ public final BitFieldPoint.Type type;
+
+ public BitFieldPoint(String name, String label, String description, BitFieldPoint.Type type, boolean mandatory,
+ AccessMode accessMode, SunSpecBitPoint[] points) {
+ super(name, label, description, type, mandatory, accessMode); //
+ this.points = points;
+ this.type = type;
+ }
+
+ /**
+ * Generates the {@link ModbusElement}s.
+ *
+ * @param parent the parent
+ * {@link AbstractOpenemsSunSpecComponent}
+ * @param addChannel callback to add a Channel to parent (because the
+ * method is protected)
+ * @param startAddress the start-address
+ * @param alternativeBitPoints alternative {@link SunSpecBitPoint}s
+ * @return the {@link ModbusElement}s
+ */
+ public List generateModbusElements(AbstractOpenemsSunSpecComponent parent,
+ Consumer addChannel, int startAddress, SunSpecBitPoint[] alternativeBitPoints) {
+ final SunSpecBitPoint[] points;
+ if (alternativeBitPoints != null && alternativeBitPoints.length > 0) {
+ points = alternativeBitPoints;
+ } else {
+ points = this.points;
+ }
+
+ return switch (this.type) {
+ case BITFIELD16 -> {
+ var bwe = new BitsWordElement(startAddress, parent);
+ Arrays.stream(points).forEach(ssbp -> {
+ var bit = ssbp.get().bit;
+ var channelId = ssbp.get().channelId;
+ addChannel.accept(channelId);
+ bwe.bit(bit, channelId);
+ });
+ yield List.of(bwe);
+ }
+ case BITFIELD32 -> {
+ var bwe0 = new BitsWordElement(startAddress, parent);
+ var bwe1 = new BitsWordElement(startAddress + 1, parent);
+ Arrays.stream(points).forEach(ssbp -> {
+ var bit = ssbp.get().bit;
+ var channelId = ssbp.get().channelId;
+ addChannel.accept(channelId);
+ if (bit > 15) {
+ bwe1.bit(bit - 16, channelId);
+ } else {
+ bwe0.bit(bit, channelId);
+ }
+ });
+ yield List.of(bwe0, bwe1);
+ }
+ };
+ }
+ }
+
+ /**
+ * Represents one Bit within a BitFieldPoint.
+ */
+ public static final class BitPoint extends Point.ChannelIdPoint {
+
+ public final int bit;
+
+ private BitPoint(int bit, String name, String label, AbstractDoc> doc) {
+ super(name, label, "", null /* point type */, false, AccessMode.READ_ONLY, doc);
+ this.bit = bit;
+ }
+
+ public BitPoint(int bit, String name, String label) {
+ this(bit, name, label, Doc.of(OpenemsType.BOOLEAN));
+ }
+
+ public BitPoint(int bit, String name, String label, Level level) {
+ this(bit, name, label, Doc.of(level));
+ }
+ }
+}
\ No newline at end of file
diff --git a/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/SunSpecCodeGenerator.java b/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/SunSpecCodeGenerator.java
deleted file mode 100644
index a9827f5ce18..00000000000
--- a/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/SunSpecCodeGenerator.java
+++ /dev/null
@@ -1,787 +0,0 @@
-package io.openems.edge.bridge.modbus.sunspec;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Optional;
-import java.util.Set;
-import java.util.function.Function;
-
-import com.google.common.base.CaseFormat;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-
-import io.openems.common.channel.AccessMode;
-import io.openems.common.channel.Unit;
-import io.openems.common.exceptions.OpenemsError.OpenemsNamedException;
-import io.openems.common.exceptions.OpenemsException;
-import io.openems.common.function.ThrowingFunction;
-import io.openems.common.utils.JsonUtils;
-import io.openems.edge.bridge.modbus.sunspec.SunSpecPoint.PointCategory;
-import io.openems.edge.bridge.modbus.sunspec.SunSpecPoint.PointType;
-
-/**
- * This tool converts SunSpec Json definitions to Java code suitable for the
- * OpenEMS SunSpec implementation.
- *
- *
- * Download Json files from https://github.com/sunspec/models.
- */
-public class SunSpecCodeGenerator {
-
- /**
- * Path to the SunSpec model Json files; download them from
- * https://github.com/sunspec/models.
- */
- private static final String SUNSPEC_JSON_PATH = System.getProperty("user.home") + "\\git\\sunspec\\json\\";
- /**
- * Path to the generated output file.
- */
- private static final String OUT_FILE_PATH = System.getProperty("user.dir")
- + "\\src\\io\\openems\\edge\\bridge\\modbus\\sunspec\\DefaultSunSpecModel.java";
-
- /**
- * Json files that should be ignored; mainly because certain features are not
- * implemented yet.
- */
- private static final Set IGNORE_FILES = new HashSet<>(Arrays.asList(//
- "model_3.json", //
- "model_4.json", //
- "model_5.json", //
- "model_6.json", //
- "model_7.json", //
- "model_8.json", //
- "model_9.json", //
- "model_10.json", //
- "model_11.json", //
- "model_12.json", //
- "model_13.json", //
- "model_14.json", //
- "model_16.json", //
- "model_17.json", //
- "model_19.json", //
- "model_126.json", //
- "model_129.json", //
- "model_130.json", //
- "model_131.json", //
- "model_132.json", //
- "model_133.json", //
- "model_134.json", //
- "model_135.json", //
- "model_136.json", //
- "model_137.json", //
- "model_138.json", //
- "model_139.json", //
- "model_140.json", //
- "model_141.json", //
- "model_142.json", //
- "model_143.json", //
- "model_144.json", //
- "model_160.json", //
- "model_211.json", //
- "model_212.json", //
- "model_213.json", //
- "model_214.json", //
- "model_220.json", //
- "model_302.json", //
- "model_303.json", //
- "model_304.json", //
- "model_401.json", //
- "model_402.json", //
- "model_403.json", //
- "model_404.json", //
- "model_501.json", //
- "model_502.json", //
- "model_601.json", //
- "model_803.json", //
- "model_804.json", //
- "model_805.json", //
- "model_806.json", //
- "model_807.json", //
- "model_808.json", //
- "model_809.json", //
- "model_63001.json", //
- "model_63002.json", //
- "model_64020.json" //
- ));
-
- /**
- * Run this method to start the code generator.
- *
- * @param args not supported
- * @throws Exception on error
- */
- public static void main(String[] args) throws Exception {
- System.out.println(SUNSPEC_JSON_PATH);
- var generator = new SunSpecCodeGenerator();
- var models = generator.parseSunSpecFiles();
- generator.writeSunSpecModelJavaFile(models);
- }
-
- /**
- * Parses all SunSpec Json files in a directory.
- *
- * @return a list of Models
- * @throws Exception on error
- */
- private List parseSunSpecFiles() throws Exception {
- List result = new ArrayList<>();
- for (File file : new File(SUNSPEC_JSON_PATH).listFiles(file -> //
- file.getName().startsWith("model") //
- && file.getName().endsWith(".json") //
- && !IGNORE_FILES.contains(file.getName()))) {
- try {
- var model = this.parseSunSpecFile(Files.readString(file.toPath()));
- result.add(model);
-
- } catch (Exception e) {
- throw new Exception("Error while reading from " + file, e);
- }
- }
- // Sort by model ids to have an ordered output
- result.sort(new Comparator() {
- @Override
- public int compare(Model m1, Model m2) {
- return m1.id - m2.id;
- }
- });
-
- return result;
- }
-
- /**
- * Parses a SunSpec Json file.
- *
- * @param file the SunSpec Json file handler
- * @return the Model
- * @throws Exception on error
- */
- private Model parseSunSpecFile(String file) throws Exception {
- var json = JsonUtils.parseToJsonObject(file);
-
- var generator = new SunSpecCodeGenerator();
- return generator.parseSunSpecModels(json);
- }
-
- /**
- * Parses the element sunSpecModels.
- *
- *
- * <sunSpecModels v="1">
- *
- *
- *
- * - xs:attribute name="v" type="xs:string" default="1"
- *
- *
- * @param sunSpecModels the 'sunSpecModels' json
- * @return the Model
- * @throws OpenemsNamedException on error
- * @throws JSONException on json error
- */
- private Model parseSunSpecModels(JsonObject sunSpecModels) throws OpenemsNamedException {
- return new Model(sunSpecModels);
- }
-
- /**
- * Writes the SunSpecModel.java file.
- *
- * @param models a list of Models
- * @throws IOException on error
- */
- private void writeSunSpecModelJavaFile(List models) throws IOException {
- try (var w = Files.newBufferedWriter(Paths.get(OUT_FILE_PATH))) {
- w.write("// CHECKSTYLE:OFF");
- w.newLine();
- w.newLine();
- w.write("package io.openems.edge.bridge.modbus.sunspec;");
- w.newLine();
- w.newLine();
- w.write("import io.openems.common.channel.AccessMode;");
- w.newLine();
- w.write("import io.openems.common.channel.Unit;");
- w.newLine();
- w.write("import io.openems.common.types.OptionsEnum;");
- w.newLine();
- w.newLine();
- w.write("/**");
- w.newLine();
- w.write(" * Do not touch this file. It is auto-generated by SunSpecCodeGenerator.");
- w.newLine();
- w.write(" */");
- w.newLine();
- w.write("public enum DefaultSunSpecModel implements SunSpecModel {");
- w.newLine();
-
- /*
- * Write main Model enum
- */
- for (var i = 0; i < models.size(); i++) {
- var model = models.get(i);
- w.write(" S_" + model.id + "(//");
- w.newLine();
- w.write(" \"" + esc(model.label) + "\", //");
- w.newLine();
- w.write(" \"" + esc(model.description) + "\", //");
- w.newLine();
- w.write(" \"" + esc(model.notes) + "\", //");
- w.newLine();
- w.write(" " + model.len + ", //");
- w.newLine();
- w.write(" DefaultSunSpecModel.S" + model.id + ".values(), //");
- w.newLine();
- w.write(" SunSpecModelType." + model.modelType + " //");
- w.newLine();
- w.write(" )");
- if (i == models.size() - 1) {
- w.write("; //");
- } else {
- w.write(", //");
- }
- w.newLine();
- }
- w.newLine();
-
- /*
- * For each Model write enum with SunSpecPoints
- */
- for (Model model : models) {
- w.write(" public static enum S" + model.id + " implements SunSpecPoint {");
- w.newLine();
- for (var i = 0; i < model.points.size(); i++) {
- var point = model.points.get(i);
- var pointUpperId = toUpperUnderscore(point.id);
- w.write(" " + pointUpperId + "(new PointImpl(//");
- w.newLine();
- w.write(" \"S" + model.id + "_" + pointUpperId + "\", //");
- w.newLine();
- w.write(" \"" + esc(point.label) + "\", //");
- w.newLine();
- w.write(" \"" + esc(point.description) + "\", //");
- w.newLine();
- w.write(" \"" + esc(point.notes) + "\", //");
- w.newLine();
- w.write(" PointType." + point.type.name() + ", //");
- w.newLine();
- w.write(" " + point.mandatory + ", //");
- w.newLine();
- w.write(" AccessMode." + point.accessMode.name() + ", //");
- w.newLine();
- w.write(" Unit." + point.unit.name() + ", //");
- w.newLine();
- w.write(" "
- + (point.scaleFactor.isPresent() ? "\"" + point.scaleFactor.get() + "\"" : null) + ", //");
- w.newLine();
- if (point.symbols.length == 0) {
- w.write(" new OptionsEnum[0]))");
- } else {
- w.write(" S" + model.id + "_" + point.id + ".values()))");
- }
-
- if (i == model.points.size() - 1) {
- w.write("; //");
- } else {
- w.write(", //");
- }
- w.newLine();
- }
- w.newLine();
- w.write(" protected final PointImpl impl;");
- w.newLine();
- w.newLine();
- w.write(" private S" + model.id + "(PointImpl impl) {");
- w.newLine();
- w.write(" this.impl = impl;");
- w.newLine();
- w.write(" }");
- w.newLine();
- w.newLine();
- w.write(" @Override");
- w.newLine();
- w.write(" public PointImpl get() {");
- w.newLine();
- w.write(" return this.impl;");
- w.newLine();
- w.write(" }");
- w.newLine();
- w.write(" }");
- w.newLine();
- w.newLine();
-
- /*
- * For SunSpecPoints with Symbols write OpenEMS OptionsEnum
- */
- for (Point point : model.points) {
- if (point.symbols.length == 0) {
- continue;
- }
-
- w.write(" public static enum S" + model.id + "_" + point.id + " implements OptionsEnum {");
- w.newLine();
- w.write(" UNDEFINED(-1, \"Undefined\"), //");
- w.newLine();
- for (var i = 0; i < point.symbols.length; i++) {
- var symbol = point.symbols[i];
- var symbolId = symbol.id;
- symbolId = toUpperUnderscore(symbolId);
-
- switch (symbolId) {
- case "RESERVED":
- symbolId = symbolId + "_" + symbol.value; // avoid duplicated "RESERVED" ids.
- break;
- }
-
- w.write(" " + symbolId + "(" + symbol.value + ", \"" + symbolId + "\")");
- if (i == point.symbols.length - 1) {
- w.write("; //");
- } else {
- w.write(", //");
- }
- w.newLine();
- }
- w.newLine();
- w.write(" private final int value;");
- w.newLine();
- w.write(" private final String name;");
- w.newLine();
- w.newLine();
- w.write(" private S" + model.id + "_" + point.id + "(int value, String name) {");
- w.newLine();
- w.write(" this.value = value;");
- w.newLine();
- w.write(" this.name = name;");
- w.newLine();
- w.write(" }");
- w.newLine();
- w.newLine();
- w.write(" @Override");
- w.newLine();
- w.write(" public int getValue() {");
- w.newLine();
- w.write(" return this.value;");
- w.newLine();
- w.write(" }");
- w.newLine();
- w.newLine();
- w.write(" @Override");
- w.newLine();
- w.write(" public String getName() {");
- w.newLine();
- w.write(" return this.name;");
- w.newLine();
- w.write(" }");
- w.newLine();
- w.newLine();
- w.write(" @Override");
- w.newLine();
- w.write(" public OptionsEnum getUndefined() {");
- w.newLine();
- w.write(" return UNDEFINED;");
- w.newLine();
- w.write(" }");
- w.newLine();
- w.write(" }");
- w.newLine();
- w.newLine();
- }
- }
-
- w.write(" public final String label;");
- w.newLine();
- w.write(" public final String description;");
- w.newLine();
- w.write(" public final String notes;");
- w.newLine();
- w.write(" public final int length;");
- w.newLine();
- w.write(" public final SunSpecPoint[] points;");
- w.newLine();
- w.write(" public final SunSpecModelType modelType;");
- w.newLine();
- w.newLine();
- w.write(" private DefaultSunSpecModel(String label, String description, String notes, int length, SunSpecPoint[] points,");
- w.newLine();
- w.write(" SunSpecModelType modelType) {");
- w.newLine();
- w.write(" this.label = label;");
- w.newLine();
- w.write(" this.description = description;");
- w.newLine();
- w.write(" this.notes = notes;");
- w.newLine();
- w.write(" this.length = length;");
- w.newLine();
- w.write(" this.points = points;");
- w.newLine();
- w.write(" this.modelType = modelType;");
- w.newLine();
- w.write(" }");
- w.newLine();
- w.newLine();
- w.write(" @Override");
- w.newLine();
- w.write(" public SunSpecPoint[] points() {");
- w.newLine();
- w.write(" return this.points;");
- w.newLine();
- w.write(" }");
- w.newLine();
- w.newLine();
- w.write(" @Override");
- w.newLine();
- w.write(" public String label() {");
- w.newLine();
- w.write(" return this.label;");
- w.newLine();
- w.write(" }");
- w.newLine();
- w.write("}");
- w.newLine();
- w.write("// CHECKSTYLE:ON");
- w.newLine();
- }
- }
-
- /**
- * Helper method to escape a string.
- *
- * @param string original string
- * @return escaped string
- */
- private static final String esc(String string) {
- if (string == null) {
- return "";
- }
- return string //
- .replaceAll("[^\\x00-\\x7F]", "") // non-ascii chars
- .replace("\"", "\\\"") // escape backslash
- .trim();
- }
-
- /**
- * POJO container for a SunSpec Model.
- */
- public static class Model {
- protected final int id;
- protected final int len;
- protected final String name;
- protected final List points;
- protected final SunSpecModelType modelType;
-
- protected String label = "";
- protected String description = "";
- protected String notes = "";
-
- public Model(JsonObject model) throws OpenemsNamedException {
- this.id = JsonUtils.getAsInt(model, "id");
- var group = model.get("group").getAsJsonObject();
- this.name = JsonUtils.getAsString(group, "name");
- this.label = JsonUtils.getAsStringOrElse(group, "label", "");
- this.description = JsonUtils.getAsStringOrElse(group, "desc", "");
- var points = JsonUtils.getAsJsonArray(group, "points");
-
- var list = new ArrayList();
- var offset = 0;
- for (var i = 0; i < points.size(); i++) {
- var p = new Point(points.get(i).getAsJsonObject(), offset);
- // ID and length not to be considered as points
- if (!p.id.equals("ID") && !p.id.equals("L")) {
- list.add(p);
- }
- offset += p.len;
- }
- this.points = list;
- this.len = this.points.stream().map(p -> p.len).reduce(0, (t, p) -> t + p);
- this.modelType = SunSpecModelType.getModelType(this.id);
- }
-
- /**
- * Gets the Point with the given Id.
- *
- * @param id the Point-ID
- * @return the Point
- * @throws OpenemsException on error
- */
- public Point getPoint(String id) throws OpenemsException {
- for (Point point : this.points) {
- if (point.id.equals(id)) {
- return point;
- }
- }
- throw new OpenemsException("Unable to find Point with ID " + id);
- }
-
- @Override
- public String toString() {
- return "Model [id=" + this.id + ", name=" + this.name + ", points=" + this.points + ", label=" + this.label
- + ", description=" + this.description + ", notes=" + this.notes + "]";
- }
-
- }
-
- /**
- * POJO container for a SunSpec Point.
- */
- public static class Point {
-
- protected final String id;
- protected final int len;
- protected final int offset;
- protected final PointType type;
- protected final Optional scaleFactor;
- protected final Unit unit;
- protected final AccessMode accessMode;
- protected final boolean mandatory;
- protected final PointCategory category;
- protected final Symbol[] symbols;
-
- protected String label;
- protected String description;
- protected String notes;
-
- public Point(JsonObject point, int offset) throws OpenemsNamedException {
- this.id = JsonUtils.getAsString(point, "name");
- this.len = JsonUtils.getAsInt(point, "size");
- this.label = JsonUtils.getAsStringOrElse(point, "label", "");
- this.description = JsonUtils.getAsStringOrElse(point, "desc", "");
- this.offset = offset;
- var t = JsonUtils.getAsString(point, "type");
- if (t.equals("string")) {
- this.type = PointType.valueOf("STRING" + this.len);
- } else {
- this.type = PointType.valueOf(t.toUpperCase());
- }
- var sf = JsonUtils.getAsOptionalPrimitive(point, "sf");
- if (sf.isPresent()) {
- this.scaleFactor = Optional.of(sf.get().getAsString());
- } else {
- this.scaleFactor = Optional.empty();
- }
- this.unit = toUnit(JsonUtils.getAsStringOrElse(point, "units", ""));
- var access = JsonUtils.getAsStringOrElse(point, "access", "r");
- switch (access.toLowerCase()) {
- case "wo":
- this.accessMode = AccessMode.WRITE_ONLY;
- break;
- case "rw":
- this.accessMode = AccessMode.READ_WRITE;
- break;
- case "r":
- case "ro":
- default:
- this.accessMode = AccessMode.READ_ONLY;
- break;
- }
- this.mandatory = JsonUtils.getAsOptionalString(point, "mandatory").isPresent();
- this.category = PointCategory.MEASUREMENT;
-
- var symbolsJsonOpt = JsonUtils.getAsOptionalJsonArray(point, "symbols");
- Symbol[] symbols;
- if (symbolsJsonOpt.isPresent()) {
- var symbolsJson = symbolsJsonOpt.get();
- symbols = new Symbol[symbolsJson.size()];
- for (var i = 0; i < symbolsJson.size(); i++) {
- var symbol = symbolsJson.get(i);
- symbols[i] = new Symbol(symbol);
- }
- } else {
- symbols = new Symbol[0];
- }
- this.symbols = symbols;
-
- }
-
- static Unit toUnit(String unit) throws OpenemsNamedException {
- final ThrowingFunction toUnit = s -> {
- s = s.trim();
- if (s.contains(" ")) {
- s = s.substring(0, s.indexOf(" "));
- }
- switch (s) {
- case "":
- case "%ARtg/%dV":
- case "bps": // not available in OpenEMS
- case "cos()": // not available in OpenEMS
- case "deg": // not available in OpenEMS
- case "Degrees": // not available in OpenEMS
- case "hhmmss": // not available in OpenEMS
- case "hhmmss.sssZ": // not available in OpenEMS
- case "HPa": // not available in OpenEMS
- case "kO": // not available in OpenEMS
- case "Mbps": // not available in OpenEMS
- case "meters": // not available in OpenEMS
- case "mm": // not available in OpenEMS
- case "mps": // not available in OpenEMS
- case "m/s": // not available in OpenEMS
- case "ohms": // not available in OpenEMS
- case "Pct": // not available in OpenEMS
- case "PF": // not available in OpenEMS
- case "SF": // not available in OpenEMS
- case "text": // not available in OpenEMS
- case "Tmd": // not available in OpenEMS
- case "Tmh": // not available in OpenEMS
- case "Tms": // not available in OpenEMS
- case "Various": // not available in OpenEMS
- case "Vm": // not available in OpenEMS
- case "W/m2": // not available in OpenEMS
- case "YYYYMMDD": // not available in OpenEMS
- case "S": // not available in OpenEMS
- case "%Max/Sec": // not available in OpenEMS
- return Unit.NONE;
- case "%":
- case "%WHRtg":
- return Unit.PERCENT;
- case "A":
- return Unit.AMPERE;
- case "Ah":
- case "AH":
- return Unit.AMPERE_HOURS;
- case "C":
- return Unit.DEGREE_CELSIUS;
- case "Hz":
- return Unit.HERTZ;
- case "kAH":
- return Unit.KILOAMPERE_HOURS;
- case "kWh":
- return Unit.KILOWATT_HOURS;
- case "mSecs":
- return Unit.MILLISECONDS;
- case "Secs":
- return Unit.SECONDS;
- case "V":
- return Unit.VOLT;
- case "VA":
- return Unit.VOLT_AMPERE;
- case "VAh":
- return Unit.VOLT_AMPERE_HOURS;
- case "var":
- case "Var":
- return Unit.VOLT_AMPERE_REACTIVE;
- case "varh":
- case "Varh":
- return Unit.VOLT_AMPERE_REACTIVE_HOURS;
- case "W":
- return Unit.WATT;
- case "Wh":
- case "WH":
- // Validate manually: OpenEMS distinguishes CUMULATED and DISCRETE Watt-Hours.
- return Unit.CUMULATED_WATT_HOURS;
- }
- throw new OpenemsException("Unhandled unit [" + s + "]");
- };
- return toUnit.apply(unit);
- }
-
- /**
- * Gets the Symbol with the given Id.
- *
- * @param id the Symbol-Id
- * @return the Symbol
- * @throws OpenemsException on error
- */
- public Symbol getSymbol(String id) throws OpenemsException {
- for (Symbol symbol : this.symbols) {
- if (symbol.id.equals(id)) {
- return symbol;
- }
- }
- throw new OpenemsException("Unable to find Symbol with ID " + id);
- }
-
- @Override
- public String toString() {
- return "Point [id=" + this.id + ", len=" + this.len + ", offset=" + this.offset + ", type=" + this.type
- + ", scaleFactor=" + this.scaleFactor.orElse("") + ", unit=" + this.unit + ", access="
- + this.accessMode + ", mandatory=" + this.mandatory + ", category=" + this.category + ", symbols="
- + Arrays.toString(this.symbols) + ", label=" + this.label + ", description=" + this.description
- + ", notes=" + this.notes + "]";
- }
-
- /**
- * POJO container for a SunSpec Point Symbol.
- */
- public static class Symbol {
- protected final String id;
- protected final int value;
-
- protected String label;
- protected String description;
- protected String notes;
-
- private static Function idCleaner = id -> {
- switch (id) {
- case "ggOFF":
- case "ggSLEEPING":
- case "ggSTARTING":
- case "ggTHROTTLED":
- case "ggSHUTTING_DOWN":
- case "ggFAULT":
- case "ggSTANDBY":
- // Special handling for ID 111 point "Operating State"
- // TODO: create pull-request to fix Json file upstream
- return id.substring(2);
- case "M_EVENT_Power_Failure":
- case "M_EVENT_Under_Voltage":
- case "M_EVENT_Low_PF":
- case "M_EVENT_Over_Current":
- case "M_EVENT_Over_Voltage":
- case "M_EVENT_Missing_Sensor":
- case "M_EVENT_Reserved1":
- case "M_EVENT_Reserved2":
- case "M_EVENT_Reserved3":
- case "M_EVENT_Reserved4":
- case "M_EVENT_Reserved5":
- case "M_EVENT_Reserved6":
- case "M_EVENT_Reserved7":
- case "M_EVENT_Reserved8":
- case "M_EVENT_OEM01":
- case "M_EVENT_OEM02":
- case "M_EVENT_OEM03":
- case "M_EVENT_OEM04":
- case "M_EVENT_OEM05":
- case "M_EVENT_OEM06":
- case "M_EVENT_OEM07":
- case "M_EVENT_OEM08":
- case "M_EVENT_OEM09":
- case "M_EVENT_OEM10":
- case "M_EVENT_OEM11":
- case "M_EVENT_OEM12":
- case "M_EVENT_OEM13":
- case "M_EVENT_OEM14":
- case "M_EVENT_OEM15":
- // Special handling for ID 202 point "Events"
- return id.substring(8);
- default:
- return id;
- }
- };
-
- protected Symbol(String id, int value) {
- this.id = idCleaner.apply(id);
- this.value = value;
- }
-
- public Symbol(JsonElement symbol) throws OpenemsNamedException {
- this(JsonUtils.getAsString(symbol, "name"), JsonUtils.getAsInt(symbol, "value"));
- this.label = JsonUtils.getAsStringOrElse(symbol, "label", "");
- }
- }
- }
-
- protected static String toUpperUnderscore(String string) {
- string = string //
- .replace("-", "_") //
- .replace(" ", "_");
- if (!string.toUpperCase().equals(string)) {
- string = CaseFormat.UPPER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, string);
- }
- return string.replace("__", "_");
- }
-
-}
diff --git a/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/SunSpecModelType.java b/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/SunSpecModelType.java
index 903de11fe4d..283172c97b9 100644
--- a/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/SunSpecModelType.java
+++ b/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/SunSpecModelType.java
@@ -1,5 +1,7 @@
package io.openems.edge.bridge.modbus.sunspec;
+import java.util.Arrays;
+
/**
* This is taken from the first sheet inside the SunSpec excel file.
*/
@@ -18,20 +20,24 @@ public enum SunSpecModelType {
RESERVED_2(900, 63000), //
VENDOR_SPECIFIC(64000, 65535);
- protected final int startId;
- protected final int endId;
+ private final int startId;
+ private final int endId;
private SunSpecModelType(int startId, int endId) {
this.startId = startId;
this.endId = endId;
}
- protected static SunSpecModelType getModelType(int id) {
- for (SunSpecModelType type : SunSpecModelType.values()) {
- if (type.startId <= id && type.endId >= id) {
- return type;
- }
- }
- throw new IllegalArgumentException("There is no SunSpec Model-Type for ID " + id);
+ /**
+ * Get a {@link SunSpecModelType} by its id.
+ *
+ * @param id the id
+ * @return The {@link SunSpecModelType}
+ */
+ public static SunSpecModelType getModelType(int id) {
+ return Arrays.stream(SunSpecModelType.values()) //
+ .filter(t -> t.startId <= id && t.endId >= id) //
+ .findFirst() //
+ .orElseThrow(() -> new IllegalArgumentException("There is no SunSpec Model-Type for ID " + id));
}
}
\ No newline at end of file
diff --git a/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/SunSpecPoint.java b/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/SunSpecPoint.java
index 0cc555f62d8..601a580817b 100644
--- a/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/SunSpecPoint.java
+++ b/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/SunSpecPoint.java
@@ -1,27 +1,7 @@
package io.openems.edge.bridge.modbus.sunspec;
-import static io.openems.edge.bridge.modbus.api.element.AbstractModbusElement.FillElementsPriority.HIGH;
-
-import java.util.Optional;
-
-import io.openems.common.channel.AccessMode;
-import io.openems.common.channel.Unit;
-import io.openems.common.types.OpenemsType;
-import io.openems.common.types.OptionsEnum;
-import io.openems.edge.bridge.modbus.api.element.DummyRegisterElement;
-import io.openems.edge.bridge.modbus.api.element.FloatDoublewordElement;
-import io.openems.edge.bridge.modbus.api.element.FloatQuadruplewordElement;
-import io.openems.edge.bridge.modbus.api.element.ModbusElement;
-import io.openems.edge.bridge.modbus.api.element.SignedDoublewordElement;
-import io.openems.edge.bridge.modbus.api.element.SignedQuadruplewordElement;
-import io.openems.edge.bridge.modbus.api.element.SignedWordElement;
-import io.openems.edge.bridge.modbus.api.element.StringWordElement;
-import io.openems.edge.bridge.modbus.api.element.UnsignedDoublewordElement;
-import io.openems.edge.bridge.modbus.api.element.UnsignedQuadruplewordElement;
-import io.openems.edge.bridge.modbus.api.element.UnsignedWordElement;
+import io.openems.edge.bridge.modbus.sunspec.Point.ChannelIdPoint;
import io.openems.edge.common.channel.ChannelId;
-import io.openems.edge.common.channel.Doc;
-import io.openems.edge.common.channel.EnumDoc;
/**
* Holds one "Point" or "Register" within a SunSpec "Model" or "Block".
@@ -39,184 +19,22 @@ public interface SunSpecPoint {
public String name();
/**
- * The internal PointImpl object for easier handling in Enums.
+ * The internal {@link Point} object for easier handling in Enums.
*
* @return the internal PointImpl
*/
- public PointImpl get();
-
- /**
- * Returns true if the value represents a 'defined' value in SunSpec.
- *
- * @param value the value
- * @return true for defined values
- */
- public default boolean isDefined(Object value) {
- return PointType.isDefined(this.get().type, value);
- }
+ public Point get();
/**
* Gets the {@link ChannelId} for this Point.
*
* @return the ChannelId.
*/
- public default SunSChannelId> getChannelId() {
- return this.get().channelId;
- }
-
- /**
- * The internal PointImpl object for easier handling in Enums.
- */
- public static class PointImpl {
- public final String label;
- public final String description;
- public final String notes;
- public final PointType type;
- public final boolean mandatory;
- public final AccessMode accessMode;
- public final Unit unit;
- public final SunSChannelId> channelId;
- public final Optional scaleFactor;
- public final OptionsEnum[] options;
-
- public PointImpl(String channelId, String label, String description, String notes, PointType type,
- boolean mandatory, AccessMode accessMode, Unit unit, String scaleFactor, OptionsEnum[] options) {
- this.label = label;
- this.description = description;
- this.notes = notes;
- this.type = type;
- this.mandatory = mandatory;
- this.accessMode = accessMode;
- this.unit = unit;
- this.scaleFactor = Optional.ofNullable(scaleFactor);
- if (options.length == 0) {
- this.channelId = new SunSChannelId<>(channelId, //
- Doc.of(this.getMatchingOpenemsType(this.scaleFactor.isPresent())) //
- .unit(unit) //
- .accessMode(accessMode));
- } else {
- this.channelId = new SunSChannelId<>(channelId, //
- new EnumDoc(options) //
- .accessMode(accessMode));
- }
- this.options = options;
- }
-
- /**
- * Generates a Modbus Element for the given point + startAddress.
- *
- * @param startAddress the startAddress of the Point
- * @return a new Modbus Element
- */
- public final ModbusElement generateModbusElement(Integer startAddress) {
- return switch (this.type) {
- case UINT16, ACC16, ENUM16, BITFIELD16 -> new UnsignedWordElement(startAddress);
- case SUNSSF -> new SignedWordElement(startAddress)//
- .fillElementsPriority(HIGH);
- case INT16, COUNT -> new SignedWordElement(startAddress);
- case UINT32, ACC32, ENUM32, BITFIELD32, IPADDR -> new UnsignedDoublewordElement(startAddress);
- case INT32 -> new SignedDoublewordElement(startAddress);
- case UINT64, ACC64 -> new UnsignedQuadruplewordElement(startAddress);
- case INT64 -> new SignedQuadruplewordElement(startAddress);
- case FLOAT32 -> new FloatDoublewordElement(startAddress);
- case PAD -> new DummyRegisterElement(startAddress);
- case FLOAT64 -> new FloatQuadruplewordElement(startAddress);
- case EUI48 -> null;
- case IPV6ADDR // TODO this would be UINT128
- -> null;
- case STRING2 -> new StringWordElement(startAddress, 2);
- case STRING4 -> new StringWordElement(startAddress, 4);
- case STRING5 -> new StringWordElement(startAddress, 5);
- case STRING6 -> new StringWordElement(startAddress, 6);
- case STRING7 -> new StringWordElement(startAddress, 7);
- case STRING8 -> new StringWordElement(startAddress, 8);
- case STRING12 -> new StringWordElement(startAddress, 12);
- case STRING16 -> new StringWordElement(startAddress, 16);
- case STRING20 -> new StringWordElement(startAddress, 20);
- case STRING25 -> new StringWordElement(startAddress, 25);
- case STRING32 -> new StringWordElement(startAddress, 32);
- default -> throw new IllegalArgumentException(
- "Point [" + this.label + "]: Type [" + this.type + "] is not supported!");
- };
+ public default ChannelId getChannelId() {
+ var p = this.get();
+ if (p instanceof ChannelIdPoint cp) {
+ return cp.channelId;
}
-
- /**
- * Gets the {@link OpenemsType} that matches this SunSpec-Type.
- *
- * @param hasScaleFactor true if this Point has a ScaleFactor. If true, a
- * floating point type is applied to avoid rounding
- * errors.
- * @return the {@link OpenemsType}
- */
- public final OpenemsType getMatchingOpenemsType(boolean hasScaleFactor) {
- if (hasScaleFactor) {
- return OpenemsType.FLOAT;
- }
-
- // TODO: map to floating point OpenemsType when appropriate
- return switch (this.type) {
- case UINT16, ACC16, ENUM16, BITFIELD16, INT16, SUNSSF, COUNT, INT32, PAD, // ignore
- EUI48, FLOAT32 // avoid floating point numbers; FLOAT32 might not fit in INTEGER
- -> OpenemsType.INTEGER;
- case ACC32, BITFIELD32, ENUM32, IPADDR, UINT32, UINT64, ACC64, INT64, IPV6ADDR, //
- FLOAT64 // avoid floating point numbers
- -> OpenemsType.LONG;
- case STRING2, STRING4, STRING5, STRING6, STRING7, STRING8, STRING12, STRING16, STRING20, STRING25,
- STRING32 ->
- OpenemsType.STRING;
- default -> throw new IllegalArgumentException("Unable to get matching OpenemsType for " + this.type);
-
- };
- }
- }
-
- public static enum PointType {
- INT16(1), UINT16(1), COUNT(1), ACC16(1), INT32(2), UINT32(2), FLOAT32(2), ACC32(2), INT64(4), UINT64(4),
- FLOAT64(4), ACC64(4), ENUM16(1), ENUM32(2), BITFIELD16(1), BITFIELD32(2), SUNSSF(1), STRING2(2), STRING4(4),
- STRING5(5), STRING6(6), STRING7(7), STRING8(8), STRING12(12), STRING16(16), STRING20(20), STRING25(25),
- STRING32(32),
- /* use PAD for reserved points */
- PAD(1), IPADDR(1), IPV6ADDR(16), EUI48(6);
-
- public final int length;
-
- private PointType(int length) {
- this.length = length;
- }
-
- /**
- * Returns true if the value represents a 'defined' value in SunSpec.
- *
- * @param type the PointType
- * @param value the value
- * @return true for defined values
- */
- public static boolean isDefined(PointType type, Object value) {
- if (value == null) {
- return false;
- }
- return switch (type) {
- case INT16, SUNSSF -> !value.equals(Short.MIN_VALUE /* -32768 */);
- case UINT16, ENUM16, BITFIELD16, COUNT -> !value.equals(65535);
- case ACC16, ACC32, IPADDR, ACC64, IPV6ADDR -> !value.equals(0);
- case INT32 -> !value.equals(0x80000000); // TODO correct?
- case UINT32, ENUM32, BITFIELD32 -> !value.equals(4294967295L);
- case INT64 -> !value.equals(0x8000000000000000L); // TODO correct?
- case UINT64 -> !value.equals(0xFFFFFFFFFFFFFFFFL); // TODO correct?
- case FLOAT32 -> !value.equals(Float.NaN);
- case FLOAT64 -> false; // TODO not implemented
- case PAD // This point is never needed/reserved
- -> false;
- case STRING12, STRING16, STRING2, STRING20, STRING25, STRING32, STRING4, STRING5, STRING6, STRING7,
- STRING8 ->
- !"".equals(value);
- case EUI48 -> false; // TODO not implemented
- default -> false;
- };
- }
- }
-
- public static enum PointCategory {
- NONE, MEASUREMENT, METERED, STATUS, EVENT, SETTING, CONTROL;
+ throw new IllegalAccessError("SunSpecPoint [" + this.name() + "] has no Channel-ID");
}
}
\ No newline at end of file
diff --git a/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/SunSpecPointCategory.java b/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/SunSpecPointCategory.java
new file mode 100644
index 00000000000..6788e0a651b
--- /dev/null
+++ b/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/SunSpecPointCategory.java
@@ -0,0 +1,5 @@
+package io.openems.edge.bridge.modbus.sunspec;
+
+public enum SunSpecPointCategory {
+ NONE, MEASUREMENT, METERED, STATUS, EVENT, SETTING, CONTROL;
+}
\ No newline at end of file
diff --git a/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/Utils.java b/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/Utils.java
new file mode 100644
index 00000000000..34208137fa4
--- /dev/null
+++ b/io.openems.edge.bridge.modbus/src/io/openems/edge/bridge/modbus/sunspec/Utils.java
@@ -0,0 +1,50 @@
+package io.openems.edge.bridge.modbus.sunspec;
+
+import static java.util.stream.Collectors.joining;
+
+import java.util.stream.Stream;
+
+import com.google.common.base.CaseFormat;
+
+public class Utils {
+
+ private Utils() {
+ }
+
+ /**
+ * Converts a String ID to UPPER_UNDERSCORE.
+ *
+ * @param string the source string
+ * @return the converted string
+ */
+ public static String toUpperUnderscore(String string) {
+ string = string //
+ .replace("-", "_") //
+ .replace(" ", "_");
+ if (!string.toUpperCase().equals(string)) {
+ string = CaseFormat.UPPER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, string);
+ }
+ return string.replace("__", "_");
+ }
+
+ /**
+ * Converts a String ID to a human readable label.
+ *
+ * @param string the source string
+ * @return the converted string
+ */
+ public static String toLabel(String string) {
+ if (string.toUpperCase() != string || !string.contains("_")) {
+ // Directly return non-uppercase strings
+ return string;
+ }
+ // Taken from https://stackoverflow.com/a/28560959/4137113
+ return Stream.of(string.trim().split("\\s|_")) //
+ .filter(word -> word.length() > 0) //
+ .map(word -> switch (word) {
+ case "AC", "DC", "HW" -> word;
+ default -> word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase(); //
+ }) //
+ .collect(joining(" "));
+ }
+}
diff --git a/io.openems.edge.bridge.modbus/test/io/openems/edge/bridge/modbus/sunspec/AbstractOpenemsSunSpecComponentTest.java b/io.openems.edge.bridge.modbus/test/io/openems/edge/bridge/modbus/sunspec/AbstractOpenemsSunSpecComponentTest.java
index a4526ef63dd..2ce0c196ec0 100644
--- a/io.openems.edge.bridge.modbus/test/io/openems/edge/bridge/modbus/sunspec/AbstractOpenemsSunSpecComponentTest.java
+++ b/io.openems.edge.bridge.modbus/test/io/openems/edge/bridge/modbus/sunspec/AbstractOpenemsSunSpecComponentTest.java
@@ -24,6 +24,7 @@
import io.openems.edge.bridge.modbus.api.LogVerbosity;
import io.openems.edge.bridge.modbus.api.element.ModbusElement;
import io.openems.edge.bridge.modbus.api.element.StringWordElement;
+import io.openems.edge.bridge.modbus.sunspec.Point.ModbusElementPoint;
import io.openems.edge.bridge.modbus.sunspec.dummy.MyConfig;
import io.openems.edge.bridge.modbus.sunspec.dummy.MySunSpecComponentImpl;
import io.openems.edge.common.test.AbstractComponentTest.TestCase;
@@ -38,14 +39,16 @@ public void testPreprocessModbusElements() throws OpenemsException {
var elements = new ArrayList();
var startAddress = 0;
for (var point : DefaultSunSpecModel.S_701.points()) {
- var element = point.get().generateModbusElement(startAddress);
- startAddress += element.length;
- elements.add(element);
+ if (point.get() instanceof ModbusElementPoint mep) { // without BitFieldPoints
+ var element = mep.generateModbusElement(startAddress);
+ startAddress += element.length;
+ elements.add(element);
+ }
}
var sut = preprocessModbusElements(elements);
assertEquals(2, sut.size()); // two sublists
- assertEquals(69, sut.get(0).size()); // first task
+ assertEquals(66, sut.get(0).size()); // first task
assertEquals(1, sut.get(1).size()); // second task
assertEquals(StringWordElement.class, sut.get(1).get(0).getClass()); // second task
}
@@ -66,7 +69,7 @@ private static ImmutableSortedMap.Builder generateSunSpec() {
.put(40003, 66); // Length of the SunSpec Block
IntStream.range(40004, 40070).forEach(i -> b.put(i, 0));
b //
- .put(40070, 123) // SunSpec Block-ID
+ .put(40070, 103) // SunSpec Block-ID
.put(40071, 24); // Length of the SunSpec Block
IntStream.range(40072, 40096).forEach(i -> b.put(i, 0));
b //
@@ -119,7 +122,7 @@ public void test() throws Exception {
testWithEndOfMap(slave, bridge, testBridge, cmp, testCmp);
testWithIllegalAddress(slave, bridge, testBridge, cmp, testCmp);
- assertFalse(cmp.getSunSpecChannel(DefaultSunSpecModel.S103.APH_A).isPresent());
+ assertFalse(cmp.getSunSpecChannel(DefaultSunSpecModel.S101.APH_A).isPresent());
assertNotNull(cmp.getSunSpecChannelOrError(DefaultSunSpecModel.S702.W_MAX_RTG));
} finally {
@@ -150,7 +153,7 @@ private static void testWithEndOfMap(ModbusSlave slave, BridgeModbusTcpImpl brid
cycle(testBridge, testCmp, 5, 100);
- assertEquals(58, cmp.channels().size());
+ assertEquals(101, cmp.channels().size());
}
private static void testWithIllegalAddress(ModbusSlave slave, BridgeModbusTcpImpl bridge, ComponentTest testBridge,
@@ -166,6 +169,6 @@ private static void testWithIllegalAddress(ModbusSlave slave, BridgeModbusTcpImp
cycle(testBridge, testCmp, 1, 2000); // wait for defective component
cycle(testBridge, testCmp, 2, 100);
- assertEquals(58, cmp.channels().size());
+ assertEquals(101, cmp.channels().size());
}
}
diff --git a/io.openems.edge.bridge.modbus/test/io/openems/edge/bridge/modbus/sunspec/UtilsTest.java b/io.openems.edge.bridge.modbus/test/io/openems/edge/bridge/modbus/sunspec/UtilsTest.java
new file mode 100644
index 00000000000..f11b02dae9b
--- /dev/null
+++ b/io.openems.edge.bridge.modbus/test/io/openems/edge/bridge/modbus/sunspec/UtilsTest.java
@@ -0,0 +1,21 @@
+package io.openems.edge.bridge.modbus.sunspec;
+
+import static io.openems.edge.bridge.modbus.sunspec.Utils.toLabel;
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class UtilsTest {
+
+ @Test
+ public void testToLabel() {
+ assertEquals("Not Configured", toLabel("NOT_CONFIGURED"));
+ assertEquals("Reserved 8", toLabel("RESERVED_8"));
+ assertEquals("FixedPF", toLabel("FixedPF"));
+ assertEquals("Volt-VAr", toLabel("Volt-VAr"));
+ assertEquals("Freq-Watt-Param", toLabel("Freq-Watt-Param"));
+ assertEquals("LVRT", toLabel("LVRT"));
+ assertEquals("DC Over Volt", toLabel("DC_OVER_VOLT"));
+ }
+
+}
diff --git a/io.openems.edge.bridge.modbus/test/io/openems/edge/bridge/modbus/sunspec/generator/FluentWriter.java b/io.openems.edge.bridge.modbus/test/io/openems/edge/bridge/modbus/sunspec/generator/FluentWriter.java
new file mode 100644
index 00000000000..c38354b35c2
--- /dev/null
+++ b/io.openems.edge.bridge.modbus/test/io/openems/edge/bridge/modbus/sunspec/generator/FluentWriter.java
@@ -0,0 +1,131 @@
+package io.openems.edge.bridge.modbus.sunspec.generator;
+
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.function.Supplier;
+
+public class FluentWriter implements AutoCloseable {
+
+ private final BufferedWriter w;
+
+ /**
+ * Builds a {@link FluentWriter}.
+ *
+ * @param path the path
+ * @return a {@link FluentWriter}
+ * @throws IOException on error
+ */
+ public static FluentWriter to(String path) throws IOException {
+ return new FluentWriter(Paths.get(path));
+ }
+
+ private FluentWriter(Path path) throws IOException {
+ this.w = Files.newBufferedWriter(path);
+ }
+
+ /**
+ * Writes line without final newLine.
+ *
+ * @param line the line
+ * @return myself
+ * @throws IOException on error
+ */
+ public FluentWriter write(String line) throws IOException {
+ this.w.write(line);
+ return this;
+ }
+
+ /**
+ * Writes text without final newLine if predicate is true.
+ *
+ * @param predicate the predicate; if true write text
+ * @param text the text Supplier
+ * @return myself
+ * @throws IOException on error
+ */
+ public FluentWriter writeIf(boolean predicate, Supplier text) throws IOException {
+ if (predicate) {
+ this.write(text.get());
+ }
+ return this;
+ }
+
+ /**
+ * Writes true- or false-text without final newLine.
+ *
+ * @param predicate the predicate; if true write true-line; if false write
+ * false-line
+ * @param trueText the true-text
+ * @param falseText the false-text
+ * @return myself
+ * @throws IOException on error
+ */
+ public FluentWriter writeIf(boolean predicate, String trueText, String falseText) throws IOException {
+ return predicate //
+ ? this.write(trueText) //
+ : this.write(falseText);
+ }
+
+ /**
+ * Writes line with final newLine.
+ *
+ * @param line the line
+ * @return myself
+ * @throws IOException on error
+ */
+ public FluentWriter writeln(String line) throws IOException {
+ this.w.write(line);
+ this.w.newLine();
+ return this;
+ }
+
+ /**
+ * Writes line if predicate is true.
+ *
+ * @param predicate the predicate; if true write line
+ * @param line the line
+ * @return myself
+ * @throws IOException on error
+ */
+ public FluentWriter writelnIf(boolean predicate, String line) throws IOException {
+ if (predicate) {
+ this.writeln(line);
+ }
+ return this;
+ }
+
+ /**
+ * Writes true- or false-line without final newLine.
+ *
+ * @param predicate the predicate; if true write true-line; if false write
+ * false-line
+ * @param trueLine the true-line
+ * @param falseLine the false-line
+ * @return myself
+ * @throws IOException on error
+ */
+ public FluentWriter writelnIf(boolean predicate, String trueLine, String falseLine) throws IOException {
+ return predicate //
+ ? this.writeln(trueLine) //
+ : this.writeln(falseLine);
+ }
+
+ /**
+ * Writes an empty newLine.
+ *
+ * @return myself
+ * @throws IOException on error
+ */
+ public FluentWriter blank() throws IOException {
+ this.w.newLine();
+ return this;
+ }
+
+ @Override
+ public void close() throws IOException {
+ this.w.close();
+ }
+}
\ No newline at end of file
diff --git a/io.openems.edge.bridge.modbus/test/io/openems/edge/bridge/modbus/sunspec/generator/Model.java b/io.openems.edge.bridge.modbus/test/io/openems/edge/bridge/modbus/sunspec/generator/Model.java
new file mode 100644
index 00000000000..3c7e716fed5
--- /dev/null
+++ b/io.openems.edge.bridge.modbus/test/io/openems/edge/bridge/modbus/sunspec/generator/Model.java
@@ -0,0 +1,74 @@
+package io.openems.edge.bridge.modbus.sunspec.generator;
+
+import static io.openems.common.utils.JsonUtils.getAsInt;
+import static io.openems.common.utils.JsonUtils.getAsJsonArray;
+import static io.openems.common.utils.JsonUtils.getAsJsonObject;
+import static io.openems.common.utils.JsonUtils.getAsString;
+import static io.openems.common.utils.JsonUtils.getAsStringOrElse;
+
+import com.google.common.collect.ImmutableList;
+import com.google.gson.JsonObject;
+
+import io.openems.common.exceptions.OpenemsError.OpenemsNamedException;
+import io.openems.common.exceptions.OpenemsException;
+import io.openems.edge.bridge.modbus.sunspec.SunSpecModelType;
+
+/**
+ * POJO container for a SunSpec Model.
+ */
+public record Model(int id, int len, String name, String label, String description, ImmutableList points,
+ SunSpecModelType modelType) {
+
+ /**
+ * Builds a {@link Model} from a {@link JsonObject}.
+ *
+ * @param model the {@link JsonObject}
+ * @return a {@link Model}
+ * @throws OpenemsNamedException on error
+ */
+ public static Model fromJson(JsonObject model) throws OpenemsNamedException {
+ var id = getAsInt(model, "id");
+ var group = model.get("group").getAsJsonObject();
+ var name = getAsString(group, "name");
+ var label = getAsStringOrElse(group, "label", "");
+ var description = getAsStringOrElse(group, "desc", "");
+
+ var offset = 0;
+ final var list = ImmutableList.builder();
+ for (var point : getAsJsonArray(group, "points")) {
+ var p = Point.fromJson(getAsJsonObject(point), offset);
+ // ID and length not to be considered as points
+ if (!p.id().equals("ID") && !p.id().equals("L")) {
+ list.add(p);
+ }
+ offset += p.len();
+ }
+ var points = list.build();
+ var len = points.stream() //
+ .map(Point::len) //
+ .reduce(0, (t, p) -> t + p);
+ var modelType = SunSpecModelType.getModelType(id);
+ return new Model(id, len, name, label, description, points, modelType);
+ }
+
+ /**
+ * Gets the Point with the given Id.
+ *
+ * @param id the Point-ID
+ * @return the Point
+ * @throws OpenemsException on error
+ */
+ public Point getPoint(String id) throws OpenemsException {
+ return this.points.stream() //
+ .filter(p -> p.id() == id) //
+ .findFirst() //
+ .orElseThrow(() -> new OpenemsException("Unable to find Point with ID " + id));
+ }
+
+ @Override
+ public String toString() {
+ return "Model [id=" + this.id + ", name=" + this.name + ", points=" + this.points + ", label=" + this.label
+ + ", description=" + this.description + "]";
+ }
+
+}
\ No newline at end of file
diff --git a/io.openems.edge.bridge.modbus/test/io/openems/edge/bridge/modbus/sunspec/generator/Point.java b/io.openems.edge.bridge.modbus/test/io/openems/edge/bridge/modbus/sunspec/generator/Point.java
new file mode 100644
index 00000000000..4f0c17e5eb5
--- /dev/null
+++ b/io.openems.edge.bridge.modbus/test/io/openems/edge/bridge/modbus/sunspec/generator/Point.java
@@ -0,0 +1,193 @@
+package io.openems.edge.bridge.modbus.sunspec.generator;
+
+import static io.openems.common.utils.JsonUtils.getAsInt;
+import static io.openems.common.utils.JsonUtils.getAsOptionalJsonArray;
+import static io.openems.common.utils.JsonUtils.getAsOptionalPrimitive;
+import static io.openems.common.utils.JsonUtils.getAsOptionalString;
+import static io.openems.common.utils.JsonUtils.getAsString;
+import static io.openems.common.utils.JsonUtils.getAsStringOrElse;
+
+import java.util.Arrays;
+import java.util.Optional;
+
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+
+import io.openems.common.channel.AccessMode;
+import io.openems.common.channel.Unit;
+import io.openems.common.exceptions.OpenemsError.OpenemsNamedException;
+import io.openems.common.exceptions.OpenemsException;
+import io.openems.common.function.ThrowingFunction;
+import io.openems.edge.bridge.modbus.sunspec.SunSpecPointCategory;
+
+/**
+ * POJO container for a SunSpec Point.
+ */
+public record Point(String id, int len, int offset, String type, Optional scaleFactor, Unit unit,
+ AccessMode accessMode, boolean mandatory, SunSpecPointCategory category, Point.Symbol[] symbols, String label,
+ String description) {
+
+ /**
+ * Builds a {@link Point} from a {@link JsonObject}.
+ *
+ * @param point the {@link JsonObject}
+ * @param offset the address offset
+ * @return a {@link Point}
+ * @throws OpenemsNamedException on error
+ */
+ public static Point fromJson(JsonObject point, int offset) throws OpenemsNamedException {
+ var id = getAsString(point, "name");
+ var len = getAsInt(point, "size");
+ var label = getAsStringOrElse(point, "label", "");
+ var description = getAsStringOrElse(point, "desc", "");
+ final String type;
+ var t = getAsString(point, "type");
+ if (t.equals("string")) {
+ type = "STRING" + len;
+ } else {
+ type = t.toUpperCase();
+ }
+ var scaleFactor = getAsOptionalPrimitive(point, "sf").map(sf -> sf.getAsString());
+ var unit = toUnit(getAsStringOrElse(point, "units", ""));
+ var accessMode = switch (getAsStringOrElse(point, "access", "r").toLowerCase()) {
+ case "wo" //
+ -> AccessMode.WRITE_ONLY;
+ case "rw" //
+ -> AccessMode.READ_WRITE;
+ default // "r", "ro"
+ -> AccessMode.READ_ONLY;
+ };
+ var mandatory = getAsOptionalString(point, "mandatory").isPresent();
+ var category = SunSpecPointCategory.MEASUREMENT;
+
+ var symbolsJsonOpt = getAsOptionalJsonArray(point, "symbols");
+ final Point.Symbol[] symbols;
+ if (symbolsJsonOpt.isPresent()) {
+ var symbolsJson = symbolsJsonOpt.get();
+ symbols = new Point.Symbol[symbolsJson.size()];
+ for (var i = 0; i < symbolsJson.size(); i++) {
+ var symbol = symbolsJson.get(i);
+ symbols[i] = Symbol.fromJson(symbol);
+ }
+ } else {
+ symbols = new Point.Symbol[0];
+ }
+ return new Point(id, len, offset, type, scaleFactor, unit, accessMode, mandatory, category, symbols, label,
+ description);
+ }
+
+ private static Unit toUnit(String unit) throws OpenemsNamedException {
+ final ThrowingFunction toUnit = s -> {
+ s = s.trim();
+ if (s.contains(" ")) {
+ s = s.substring(0, s.indexOf(" "));
+ }
+ return switch (s) {
+ case "", "%ARtg/%dV", "bps", "cos()", "deg", "Degrees", "hhmmss", "hhmmss.sssZ", "HPa", "kO", "Mbps",
+ "meters", "mm", "mps", "m/s", "ohms", "Pct", "PF", "SF", "text", "Tmd", "Tmh", "Tms", "Various",
+ "Vm", "W/m2", "YYYYMMDD", "S", "%Max/Sec" ->
+ Unit.NONE;
+ case "%", "%WHRtg" //
+ -> Unit.PERCENT;
+ case "A" //
+ -> Unit.AMPERE;
+ case "Ah", "AH" //
+ -> Unit.AMPERE_HOURS;
+ case "C" //
+ -> Unit.DEGREE_CELSIUS;
+ case "Hz" //
+ -> Unit.HERTZ;
+ case "kAH" //
+ -> Unit.KILOAMPERE_HOURS;
+ case "kWh" //
+ -> Unit.KILOWATT_HOURS;
+ case "mSecs" //
+ -> Unit.MILLISECONDS;
+ case "Secs" //
+ -> Unit.SECONDS;
+ case "V" //
+ -> Unit.VOLT;
+ case "VA" //
+ -> Unit.VOLT_AMPERE;
+ case "VAh" //
+ -> Unit.VOLT_AMPERE_HOURS;
+ case "var", "Var" //
+ -> Unit.VOLT_AMPERE_REACTIVE;
+ case "varh", "Varh" //
+ -> Unit.VOLT_AMPERE_REACTIVE_HOURS;
+ case "W" //
+ -> Unit.WATT;
+ case "Wh", "WH" // Validate manually: OpenEMS distinguishes CUMULATED and DISCRETE Watt-Hours.
+ -> Unit.CUMULATED_WATT_HOURS;
+ default //
+ -> throw new OpenemsException("Unhandled unit [" + s + "]");
+ };
+ };
+ return toUnit.apply(unit);
+ }
+
+ /**
+ * Gets the Symbol with the given Id.
+ *
+ * @param id the Symbol-Id
+ * @return the Symbol
+ * @throws OpenemsException on error
+ */
+ public Point.Symbol getSymbol(String id) throws OpenemsException {
+ for (var symbol : this.symbols) {
+ if (symbol.id.equals(id)) {
+ return symbol;
+ }
+ }
+ throw new OpenemsException("Unable to find Symbol with ID " + id);
+ }
+
+ @Override
+ public String toString() {
+ return "Point [id=" + this.id + ", len=" + this.len + ", offset=" + this.offset + ", type=" + this.type
+ + ", scaleFactor=" + this.scaleFactor.orElse("") + ", unit=" + this.unit + ", access=" + this.accessMode
+ + ", mandatory=" + this.mandatory + ", category=" + this.category + ", symbols="
+ + Arrays.toString(this.symbols) + ", label=" + this.label + ", description=" + this.description + "]";
+ }
+
+ /**
+ * POJO container for a SunSpec Point Symbol.
+ */
+ public static record Symbol(String id, int value, String label) {
+
+ /**
+ * Builds a {@link Symbol} from a {@link JsonElement}.
+ *
+ * @param symbol the {@link JsonElement}
+ * @return a {@link Symbol}
+ * @throws OpenemsNamedException on error
+ */
+ public static Symbol fromJson(JsonElement symbol) throws OpenemsNamedException {
+ var id = cleanId(getAsString(symbol, "name"));
+ var value = getAsInt(symbol, "value");
+ var label = getAsStringOrElse(symbol, "label", "");
+ return new Symbol(id, value, label);
+ }
+
+ private static String cleanId(String id) {
+ return switch (id) {
+ // Special handling for ID 111 point "Operating State"
+ case "ggOFF", "ggSLEEPING", "ggSTARTING", "ggTHROTTLED", "ggSHUTTING_DOWN", "ggFAULT", "ggSTANDBY" //
+ -> id.substring(2);
+
+ // Special handling for ID 202 point "Events"
+ case "M_EVENT_Power_Failure", "M_EVENT_Under_Voltage", "M_EVENT_Low_PF", "M_EVENT_Over_Current",
+ "M_EVENT_Over_Voltage", "M_EVENT_Missing_Sensor", "M_EVENT_Reserved1", "M_EVENT_Reserved2",
+ "M_EVENT_Reserved3", "M_EVENT_Reserved4", "M_EVENT_Reserved5", "M_EVENT_Reserved6",
+ "M_EVENT_Reserved7", "M_EVENT_Reserved8", "M_EVENT_OEM01", "M_EVENT_OEM02", "M_EVENT_OEM03",
+ "M_EVENT_OEM04", "M_EVENT_OEM05", "M_EVENT_OEM06", "M_EVENT_OEM07", "M_EVENT_OEM08",
+ "M_EVENT_OEM09", "M_EVENT_OEM10", "M_EVENT_OEM11", "M_EVENT_OEM12", "M_EVENT_OEM13",
+ "M_EVENT_OEM14", "M_EVENT_OEM15" //
+ -> id.substring(8);
+
+ default //
+ -> id;
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/io.openems.edge.bridge.modbus/test/io/openems/edge/bridge/modbus/sunspec/generator/SunSpecCodeGenerator.java b/io.openems.edge.bridge.modbus/test/io/openems/edge/bridge/modbus/sunspec/generator/SunSpecCodeGenerator.java
new file mode 100644
index 00000000000..fd12bff73d0
--- /dev/null
+++ b/io.openems.edge.bridge.modbus/test/io/openems/edge/bridge/modbus/sunspec/generator/SunSpecCodeGenerator.java
@@ -0,0 +1,505 @@
+package io.openems.edge.bridge.modbus.sunspec.generator;
+
+import static io.openems.common.utils.JsonUtils.parseToJsonObject;
+import static io.openems.edge.bridge.modbus.sunspec.Utils.toLabel;
+import static io.openems.edge.bridge.modbus.sunspec.Utils.toUpperUnderscore;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import com.google.gson.JsonObject;
+
+import io.openems.common.channel.Level;
+import io.openems.common.exceptions.OpenemsError.OpenemsNamedException;
+import io.openems.edge.common.channel.BooleanReadChannel;
+import io.openems.edge.common.channel.StateChannel;
+
+/**
+ * This tool converts SunSpec Json definitions to Java code suitable for the
+ * OpenEMS SunSpec implementation.
+ *
+ *
+ * Download Json files from https://github.com/sunspec/models.
+ */
+public class SunSpecCodeGenerator {
+
+ /**
+ * Path to the SunSpec model Json files; download them from
+ * https://github.com/sunspec/models.
+ */
+ private static final String SUNSPEC_JSON_PATH = System.getProperty("user.home") + "\\git\\sunspec\\json\\";
+ /**
+ * Path to the generated output file.
+ */
+ private static final String OUT_FILE_PATH = System.getProperty("user.dir")
+ + "\\src\\io\\openems\\edge\\bridge\\modbus\\sunspec\\DefaultSunSpecModel.java";
+
+ /**
+ * Json files that should be ignored; mainly because certain features are not
+ * implemented yet.
+ */
+ private static final Set IGNORE_FILES = new HashSet<>(Arrays.asList(//
+ "model_3.json", //
+ "model_4.json", //
+ "model_5.json", //
+ "model_6.json", //
+ "model_7.json", //
+ "model_8.json", //
+ "model_9.json", //
+ "model_10.json", //
+ "model_11.json", //
+ "model_12.json", //
+ "model_13.json", //
+ "model_14.json", //
+ "model_16.json", //
+ "model_17.json", //
+ "model_19.json", //
+ "model_126.json", //
+ "model_129.json", //
+ "model_130.json", //
+ "model_131.json", //
+ "model_132.json", //
+ "model_133.json", //
+ "model_134.json", //
+ "model_135.json", //
+ "model_136.json", //
+ "model_137.json", //
+ "model_138.json", //
+ "model_139.json", //
+ "model_140.json", //
+ "model_141.json", //
+ "model_142.json", //
+ "model_143.json", //
+ "model_144.json", //
+ "model_160.json", //
+ "model_211.json", //
+ "model_212.json", //
+ "model_213.json", //
+ "model_214.json", //
+ "model_220.json", //
+ "model_302.json", //
+ "model_303.json", //
+ "model_304.json", //
+ "model_401.json", //
+ "model_402.json", //
+ "model_403.json", //
+ "model_404.json", //
+ "model_501.json", //
+ "model_502.json", //
+ "model_601.json", //
+ "model_803.json", //
+ "model_804.json", //
+ "model_805.json", //
+ "model_806.json", //
+ "model_807.json", //
+ "model_808.json", //
+ "model_809.json", //
+ "model_63001.json", //
+ "model_63002.json", //
+ "model_64020.json" //
+ ));
+
+ /**
+ * Run this method to start the code generator.
+ *
+ * @param args not supported
+ * @throws Exception on error
+ */
+ public static void main(String[] args) throws Exception {
+ System.out.println("Parsing SunSpec files from " + SUNSPEC_JSON_PATH);
+ var generator = new SunSpecCodeGenerator();
+ var models = generator.parseSunSpecFiles();
+ generator.writeSunSpecModelJavaFile(models);
+ }
+
+ /**
+ * Parses all SunSpec Json files in a directory.
+ *
+ * @return a list of Models
+ * @throws Exception on error
+ */
+ private List parseSunSpecFiles() throws Exception {
+ List result = new ArrayList<>();
+ for (var file : new File(SUNSPEC_JSON_PATH).listFiles(file -> //
+ file.getName().startsWith("model") //
+ && file.getName().endsWith(".json") //
+ && !IGNORE_FILES.contains(file.getName()))) {
+ try {
+ var model = this.parseSunSpecFile(Files.readString(file.toPath()));
+ result.add(model);
+
+ } catch (Exception e) {
+ throw new Exception("Error while reading from " + file, e);
+ }
+ }
+ // Sort by model ids to have an ordered output
+ result.sort(new Comparator() {
+ @Override
+ public int compare(Model m1, Model m2) {
+ return m1.id() - m2.id();
+ }
+ });
+
+ return result;
+ }
+
+ /**
+ * Parses a SunSpec Json file.
+ *
+ * @param file the SunSpec Json file handler
+ * @return the Model
+ * @throws Exception on error
+ */
+ private Model parseSunSpecFile(String file) throws Exception {
+ var json = parseToJsonObject(file);
+
+ var generator = new SunSpecCodeGenerator();
+ return generator.parseSunSpecModels(json);
+ }
+
+ /**
+ * Parses the element sunSpecModels.
+ *
+ *
+ * <sunSpecModels v="1">
+ *
+ *
+ *
+ * - xs:attribute name="v" type="xs:string" default="1"
+ *
+ *
+ * @param sunSpecModels the 'sunSpecModels' json
+ * @return the Model
+ * @throws OpenemsNamedException on error
+ * @throws JSONException on json error
+ */
+ private Model parseSunSpecModels(JsonObject sunSpecModels) throws OpenemsNamedException {
+ return Model.fromJson(sunSpecModels);
+ }
+
+ private static enum PointType {
+ VALUE("ValuePoint", "ValuePoint.Type"), //
+ SCALED_VALUE("ScaledValuePoint", "ValuePoint.Type"), //
+ SCALE_FACTOR("ScaleFactorPoint", "ScaleFactorPoint.Type"), //
+ ENUM("EnumPoint", "EnumPoint.Type"), //
+ BITFIELD("BitFieldPoint", "BitFieldPoint.Type");
+
+ public final String clazz;
+ public final String typeClazz;
+
+ private PointType(String clazz, String type) {
+ this.clazz = clazz;
+ this.typeClazz = type;
+ }
+
+ public static PointType evaluate(Point point) {
+ if (point.scaleFactor().isPresent()) {
+ return PointType.SCALED_VALUE;
+ }
+ switch (point.type()) {
+ case "ENUM16", "ENUM32":
+ return PointType.ENUM;
+ case "SUNSSF":
+ return PointType.SCALE_FACTOR;
+ case "BITFIELD16", "BITFIELD32":
+ return PointType.BITFIELD;
+ }
+ return PointType.VALUE;
+ }
+ }
+
+ /**
+ * Writes the SunSpecModel.java file.
+ *
+ * @param models a list of Models
+ * @throws IOException on error
+ */
+ private void writeSunSpecModelJavaFile(List models) throws IOException {
+ try (var w = FluentWriter.to(OUT_FILE_PATH)) {
+ w //
+ .writeln("// CHECKSTYLE:OFF") //
+ .blank() //
+ .writeln("package io.openems.edge.bridge.modbus.sunspec;") //
+ .blank() //
+ .writeln("import io.openems.common.channel.AccessMode;") //
+ .writeln("import io.openems.common.channel.Level;") //
+ .writeln("import io.openems.common.channel.Unit;") //
+ .writeln("import io.openems.common.types.OptionsEnum;") //
+ .writeln("import io.openems.edge.bridge.modbus.sunspec.Point.BitFieldPoint;") //
+ .writeln("import io.openems.edge.bridge.modbus.sunspec.Point.BitFieldPoint.SunSpecBitPoint;") //
+ .writeln("import io.openems.edge.bridge.modbus.sunspec.Point.BitPoint;") //
+ .writeln("import io.openems.edge.bridge.modbus.sunspec.Point.EnumPoint;") //
+ .writeln("import io.openems.edge.bridge.modbus.sunspec.Point.ScaleFactorPoint;") //
+ .writeln("import io.openems.edge.bridge.modbus.sunspec.Point.ScaledValuePoint;") //
+ .writeln("import io.openems.edge.bridge.modbus.sunspec.Point.ValuePoint;") //
+ .blank() //
+ .writeln("/**") //
+ .writeln(" * Do not touch this file. It is auto-generated by SunSpecCodeGenerator.") //
+ .writeln(" */") //
+ .writeln("public enum DefaultSunSpecModel implements SunSpecModel {");
+
+ /*
+ * Write main Model enum
+ */
+ for (var i = 0; i < models.size(); i++) {
+ var model = models.get(i);
+ w //
+ .writeln(" S_" + model.id() + "(" //
+ + "\"" + esc(model.label()) + "\", //") //
+ .writeln(" \"" + esc(model.description()) + "\", //") //
+ .write(" " + model.len() + " /* length */, " //
+ + "DefaultSunSpecModel.S" + model.id() + ".values(), " //
+ + "SunSpecModelType." + model.modelType()) //
+ .writelnIf(i == models.size() - 1, //
+ "); //", //
+ "), //");
+ }
+ w.blank();
+
+ /*
+ * For each Model write enum with SunSpecPoints
+ */
+ for (var model : models) {
+ w.writeln(" public static enum S" + model.id() + " implements SunSpecPoint {");
+ for (var i = 0; i < model.points().size(); i++) {
+ final var point = model.points().get(i);
+ final var pointUpperId = toUpperUnderscore(point.id());
+ final var pointType = PointType.evaluate(point);
+ w //
+ .write(" " + pointUpperId + "(new " + pointType.clazz + "(" //
+ + "\"S" + model.id() + "_" + pointUpperId + "\", " //
+ + "\"" + esc(point.label()) + "\", ");
+ if (!point.description().isEmpty()) {
+ w.writeln("//").write(" ");
+ }
+ w.write("\"" + esc(point.description()) + "\""); //
+
+ if (pointType != PointType.SCALE_FACTOR) {
+ w //
+ .writeln(", //") //
+ .write(" " + pointType.typeClazz + "." + point.type() + ", " //
+ + point.mandatory() + " /* mandatory? */" //
+ + ", AccessMode." + point.accessMode().name());
+ if (pointType == PointType.VALUE || pointType == PointType.SCALED_VALUE) {
+ w //
+ .write(", Unit." + point.unit().name());
+ }
+ if (pointType == PointType.SCALED_VALUE) {
+ w //
+ .write(", \"" + point.scaleFactor().get() + "\"");
+ } else if (pointType == PointType.ENUM) {
+ w //
+ .write(", ") //
+ .writeIf(point.symbols().length == 0, //
+ "new OptionsEnum[0]", //
+ "S" + model.id() + "_" + point.id() + ".values()");
+ } else if (pointType == PointType.BITFIELD) {
+ w //
+ .write(", ") //
+ .writeIf(point.symbols().length == 0, //
+ "new SunSpecBitPoint[0]", //
+ "S" + model.id() + "_" + point.id() + ".values()");
+ }
+ }
+
+ w.writelnIf(i == model.points().size() - 1, //
+ "));", //
+ ")), //");
+ }
+ w //
+ .blank() //
+ .writeln(" private final Point point;") //
+ .blank() //
+ .writeln(" private S" + model.id() + "(Point point) {") //
+ .writeln(" this.point = point;") //
+ .writeln(" }") //
+ .blank() //
+ .writeln(" @Override") //
+ .writeln(" public Point get() {") //
+ .writeln(" return this.point;") //
+ .writeln(" }") //
+ .writeln(" }") //
+ .blank();
+
+ // Handle SunSpecPoints with Symbols
+ for (var point : model.points()) {
+ if (point.symbols().length == 0) {
+ continue;
+ }
+ final var pointType = PointType.evaluate(point);
+ /*
+ * Handle Enum points
+ */
+ if (pointType == PointType.ENUM) {
+ w //
+ .writeln(" public static enum S" + model.id() + "_" + point.id()
+ + " implements OptionsEnum {") //
+ .writeln(" UNDEFINED(-1, \"Undefined\"), //");
+ for (var i = 0; i < point.symbols().length; i++) {
+ final var symbol = point.symbols()[i];
+ var symbolId = toUpperUnderscore(symbol.id());
+
+ switch (symbolId) {
+ case "RESERVED":
+ symbolId = symbolId + "_" + symbol.value(); // avoid duplicated "RESERVED" ids.
+ break;
+ }
+
+ w //
+ .write(" " + symbolId + "(" + symbol.value() + ", \"" + symbolId + "\")") //
+ .writelnIf(i == point.symbols().length - 1, //
+ ";", //
+ ", //");
+ }
+ w.blank() //
+ .writeln(" private final int value;") //
+ .writeln(" private final String name;") //
+ .blank() //
+ .writeln(" private S" + model.id() + "_" + point.id()
+ + "(int value, String name) {") //
+ .writeln(" this.value = value;") //
+ .writeln(" this.name = name;") //
+ .writeln(" }") //
+ .blank() //
+ .writeln(" @Override") //
+ .writeln(" public int getValue() {") //
+ .writeln(" return this.value;") //
+ .writeln(" }") //
+ .blank() //
+ .writeln(" @Override") //
+ .writeln(" public String getName() {") //
+ .writeln(" return this.name;") //
+ .writeln(" }") //
+ .blank() //
+ .writeln(" @Override") //
+ .writeln(" public OptionsEnum getUndefined() {") //
+ .writeln(" return UNDEFINED;") //
+ .writeln(" }") //
+ .writeln(" }") //
+ .blank();
+
+ } else if (pointType == PointType.BITFIELD) {
+ /*
+ * Handle BitField points
+ */
+ final var name = "S" + model.id() + "_" + point.id();
+ w.writeln(" public static enum " + name + " implements SunSpecBitPoint {");
+ for (var i = 0; i < point.symbols().length; i++) {
+ final var symbol = point.symbols()[i];
+ var symbolId = toUpperUnderscore(symbol.id());
+ var channelId = toUpperUnderscore(name) + "_" + symbolId;
+ var label = toLabel(symbol.id());
+ var level = getBitLevel(channelId);
+ w //
+ .write(" " + symbolId + "(new BitPoint(" + symbol.value() + ", \""
+ + channelId + "\", \"" + label + "\"") //
+ .writeIf(level != null, () -> ", Level." + level.name()) //
+ .write("))") //
+ .writelnIf(i == point.symbols().length - 1, //
+ ";", //
+ ", //");
+ }
+ w //
+ .blank() //
+ .writeln(" private final BitPoint point;") //
+ .blank() //
+ .writeln(" private " + name + "(BitPoint point) {") //
+ .writeln(" this.point = point;") //
+ .writeln(" }") //
+ .blank() //
+ .writeln(" @Override") //
+ .writeln(" public BitPoint get() {") //
+ .writeln(" return this.point;") //
+ .writeln(" }") //
+ .writeln(" }") //
+ .blank();
+
+ }
+ }
+ }
+
+ w //
+ .writeln(" public final String label;") //
+ .writeln(" public final String description;") //
+ .writeln(" public final int length;") //
+ .writeln(" public final SunSpecPoint[] points;") //
+ .writeln(" public final SunSpecModelType modelType;") //
+ .blank() //
+ .writeln(
+ " private DefaultSunSpecModel(String label, String description, int length, SunSpecPoint[] points,") //
+ .writeln(" SunSpecModelType modelType) {") //
+ .writeln(" this.label = label;") //
+ .writeln(" this.description = description;") //
+ .writeln(" this.length = length;") //
+ .writeln(" this.points = points;") //
+ .writeln(" this.modelType = modelType;") //
+ .writeln(" }") //
+ .blank() //
+ .writeln(" @Override") //
+ .writeln(" public SunSpecPoint[] points() {") //
+ .writeln(" return this.points;") //
+ .writeln(" }") //
+ .blank() //
+ .writeln(" @Override") //
+ .writeln(" public String label() {") //
+ .writeln(" return this.label;") //
+ .writeln(" }") //
+ .writeln("}") //
+ .writeln("// CHECKSTYLE:ON");
+ }
+
+ }
+
+ /**
+ * Gets the {@link StateChannel}-Level per Channel-ID.
+ *
+ * @param channelId the upper-case Channel-ID, e.g. "S2_EVT_GROUND_FAULT"
+ * @return {@link Level}, defaults to {@link Level#OK}; or null to create a
+ * {@link BooleanReadChannel}
+ */
+ private static Level getBitLevel(String channelId) {
+ // RESERVED
+ if (channelId.contains("RESERVED")) {
+ return null;
+ }
+
+ // Level.WARNING Points
+ for (var prefix : new String[] { "S2_EVT_", "S101_EVT1_", "S102_EVT1_", "S103_EVT1_", "S111_EVT1_",
+ "S112_EVT1_", "S113_EVT1_" }) {
+ if (channelId.startsWith(prefix)) {
+ // TODO: those should be Level.WARNING
+ return Level.INFO;
+ }
+
+ }
+
+ return switch (channelId) {
+ // This is the position for Channel-ID specific Levels
+ default -> null;
+ };
+ }
+
+ /**
+ * Helper method to escape a string.
+ *
+ * @param string original string
+ * @return escaped string
+ */
+ private static final String esc(String string) {
+ if (string == null) {
+ return "";
+ }
+ return string //
+ .replaceAll("[^\\x00-\\x7F]", "") // non-ascii chars
+ .replace("\"", "\\\"") // escape backslash
+ .trim();
+ }
+
+}
diff --git a/io.openems.edge.common/src/io/openems/edge/common/channel/EnumDoc.java b/io.openems.edge.common/src/io/openems/edge/common/channel/EnumDoc.java
index ad081859f0f..92306580030 100644
--- a/io.openems.edge.common/src/io/openems/edge/common/channel/EnumDoc.java
+++ b/io.openems.edge.common/src/io/openems/edge/common/channel/EnumDoc.java
@@ -43,7 +43,9 @@ public OptionsEnum[] getOptions() {
* @return myself
*/
public EnumDoc initialValue(OptionsEnum initialValue) {
- this.initialValue(initialValue.getValue());
+ if (initialValue != null) {
+ this.initialValue(initialValue.getValue());
+ }
return this.self();
}
diff --git a/io.openems.edge.common/src/io/openems/edge/common/filter/Pt1filter.java b/io.openems.edge.common/src/io/openems/edge/common/filter/Pt1filter.java
index 75029dce386..3e1e56219be 100644
--- a/io.openems.edge.common/src/io/openems/edge/common/filter/Pt1filter.java
+++ b/io.openems.edge.common/src/io/openems/edge/common/filter/Pt1filter.java
@@ -2,18 +2,19 @@
public class Pt1filter {
- private final double filterTimeConstant;
+ private final int filterTimeConstant;
- private double yOld = 0.0;
- private double cycleTime = 0.0;
+ private double result;
+ private int cycleTime;
/**
* Creates a PT1 filter.
*
* @param filterTimeConstant filter time constant in seconds.
- * @param cycleTime cycle time of calling applyPt1Filter in seconds
+ * @param cycleTime cycle time of calling applyPt1Filter in
+ * milliseconds
*/
- public Pt1filter(double filterTimeConstant, double cycleTime) {
+ public Pt1filter(int filterTimeConstant, int cycleTime) {
this.filterTimeConstant = filterTimeConstant;
this.cycleTime = cycleTime;
}
@@ -23,7 +24,7 @@ public Pt1filter(double filterTimeConstant, double cycleTime) {
*
* @param cycleTime cycle time of calling applyPt1Filter in seconds
*/
- public void setCycleTime(double cycleTime) {
+ public void setCycleTime(int cycleTime) {
this.cycleTime = cycleTime;
}
@@ -33,19 +34,15 @@ public void setCycleTime(double cycleTime) {
* @param value the input value
* @return the filtered value
*/
- public double applyPt1Filter(double value) {
- // cycle time has not to be zero
- if (this.cycleTime == 0.0) {
- return (0.0);
- }
+ public int applyPt1Filter(double value) {
// disable PT1-Filter if time constant is zero
- if (this.filterTimeConstant == 0.0) {
- this.yOld = value;
- return (value);
+ if (this.filterTimeConstant == 0) {
+ this.result = value;
+ return (int) value;
}
// apply filter
- this.yOld = (value + this.filterTimeConstant / this.cycleTime * this.yOld)
- / (1 + this.filterTimeConstant / this.cycleTime);
- return this.yOld;
+ final var cycle = this.cycleTime / 1000.;
+ this.result = (value + this.filterTimeConstant / cycle * this.result) / (1 + this.filterTimeConstant / cycle);
+ return (int) this.result;
}
}
\ No newline at end of file
diff --git a/io.openems.edge.core/src/io/openems/edge/app/integratedsystem/FeneconHome20.java b/io.openems.edge.core/src/io/openems/edge/app/integratedsystem/FeneconHome20.java
index 083bd11673b..f0c98903754 100644
--- a/io.openems.edge.core/src/io/openems/edge/app/integratedsystem/FeneconHome20.java
+++ b/io.openems.edge.core/src/io/openems/edge/app/integratedsystem/FeneconHome20.java
@@ -259,6 +259,7 @@ public FeneconHome20(//
}
}
+ @SuppressWarnings("removal")
@Override
protected ThrowingTriFunction, Language, AppConfiguration, OpenemsNamedException> appPropertyConfigurationFactory() {
return (t, p, l) -> {
diff --git a/io.openems.edge.core/src/io/openems/edge/app/integratedsystem/FeneconHome30.java b/io.openems.edge.core/src/io/openems/edge/app/integratedsystem/FeneconHome30.java
index 34d2c672789..60c8bacec42 100644
--- a/io.openems.edge.core/src/io/openems/edge/app/integratedsystem/FeneconHome30.java
+++ b/io.openems.edge.core/src/io/openems/edge/app/integratedsystem/FeneconHome30.java
@@ -260,6 +260,7 @@ public FeneconHome30(//
}
}
+ @SuppressWarnings("removal")
@Override
protected ThrowingTriFunction, Language, AppConfiguration, OpenemsNamedException> appPropertyConfigurationFactory() {
return (t, p, l) -> {
diff --git a/io.openems.edge.core/src/io/openems/edge/app/timeofusetariff/AwattarHourly.java b/io.openems.edge.core/src/io/openems/edge/app/timeofusetariff/AwattarHourly.java
index 06dbbf9b32f..2a239b4579a 100644
--- a/io.openems.edge.core/src/io/openems/edge/app/timeofusetariff/AwattarHourly.java
+++ b/io.openems.edge.core/src/io/openems/edge/app/timeofusetariff/AwattarHourly.java
@@ -10,6 +10,7 @@
import org.osgi.service.cm.ConfigurationAdmin;
import org.osgi.service.component.ComponentContext;
import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import com.google.common.collect.Lists;
@@ -56,7 +57,6 @@
"properties":{
"CTRL_ESS_TIME_OF_USE_TARIFF_ID": "ctrlEssTimeOfUseTariff0",
"TIME_OF_USE_TARIFF_PROVIDER_ID": "timeOfUseTariff0",
- "CONTROL_MODE": {@link ControlMode},
"ZONE": {@link Zone},
},
"appDescriptor": {
@@ -65,7 +65,7 @@
}
*
*/
-@org.osgi.service.component.annotations.Component(name = "App.TimeOfUseTariff.Awattar")
+@Component(name = "App.TimeOfUseTariff.Awattar")
public class AwattarHourly extends AbstractOpenemsAppWithProps
implements OpenemsApp {
diff --git a/io.openems.edge.core/src/io/openems/edge/app/timeofusetariff/EntsoE.java b/io.openems.edge.core/src/io/openems/edge/app/timeofusetariff/EntsoE.java
index cb773d1e584..417b2e8a67b 100644
--- a/io.openems.edge.core/src/io/openems/edge/app/timeofusetariff/EntsoE.java
+++ b/io.openems.edge.core/src/io/openems/edge/app/timeofusetariff/EntsoE.java
@@ -8,6 +8,7 @@
import org.osgi.service.cm.ConfigurationAdmin;
import org.osgi.service.component.ComponentContext;
import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import com.google.common.collect.Lists;
@@ -63,7 +64,7 @@
}
*
*/
-@org.osgi.service.component.annotations.Component(name = "App.TimeOfUseTariff.ENTSO-E")
+@Component(name = "App.TimeOfUseTariff.ENTSO-E")
public class EntsoE extends AbstractOpenemsAppWithProps
implements OpenemsApp {
// TODO provide image in folder
diff --git a/io.openems.edge.core/src/io/openems/edge/app/timeofusetariff/RabotCharge.java b/io.openems.edge.core/src/io/openems/edge/app/timeofusetariff/RabotCharge.java
new file mode 100644
index 00000000000..c423c7bbcb9
--- /dev/null
+++ b/io.openems.edge.core/src/io/openems/edge/app/timeofusetariff/RabotCharge.java
@@ -0,0 +1,188 @@
+package io.openems.edge.app.timeofusetariff;
+
+import static io.openems.edge.core.appmanager.formly.enums.InputType.PASSWORD;
+import static io.openems.edge.core.appmanager.validator.Checkables.checkHome;
+
+import java.util.Map;
+import java.util.function.Function;
+
+import org.osgi.service.cm.ConfigurationAdmin;
+import org.osgi.service.component.ComponentContext;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Reference;
+
+import com.google.common.collect.Lists;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonPrimitive;
+
+import io.openems.common.exceptions.OpenemsError.OpenemsNamedException;
+import io.openems.common.function.ThrowingTriFunction;
+import io.openems.common.oem.OpenemsEdgeOem;
+import io.openems.common.session.Language;
+import io.openems.common.types.EdgeConfig;
+import io.openems.common.utils.JsonUtils;
+import io.openems.edge.app.common.props.CommonProps;
+import io.openems.edge.app.timeofusetariff.RabotCharge.Property;
+import io.openems.edge.common.component.ComponentManager;
+import io.openems.edge.core.appmanager.AbstractOpenemsApp;
+import io.openems.edge.core.appmanager.AbstractOpenemsAppWithProps;
+import io.openems.edge.core.appmanager.AppConfiguration;
+import io.openems.edge.core.appmanager.AppDef;
+import io.openems.edge.core.appmanager.AppDescriptor;
+import io.openems.edge.core.appmanager.ComponentManagerSupplier;
+import io.openems.edge.core.appmanager.ComponentUtil;
+import io.openems.edge.core.appmanager.ConfigurationTarget;
+import io.openems.edge.core.appmanager.Nameable;
+import io.openems.edge.core.appmanager.OpenemsApp;
+import io.openems.edge.core.appmanager.OpenemsAppCardinality;
+import io.openems.edge.core.appmanager.OpenemsAppCategory;
+import io.openems.edge.core.appmanager.Type;
+import io.openems.edge.core.appmanager.dependency.Tasks;
+import io.openems.edge.core.appmanager.dependency.aggregatetask.SchedulerByCentralOrderConfiguration.SchedulerComponent;
+import io.openems.edge.core.appmanager.formly.JsonFormlyUtil;
+import io.openems.edge.core.appmanager.validator.ValidatorConfig;
+
+/**
+ * Describes a App for RabotCharge.
+ *
+ *
+ {
+ "appId":"App.TimeOfUseTariff.RabotCharge",
+ "alias":"Rabot Charge",
+ "instanceId": UUID,
+ "image": base64,
+ "properties":{
+ "CTRL_ESS_TIME_OF_USE_TARIFF_ID": "ctrlEssTimeOfUseTariff0",
+ "TIME_OF_USE_TARIFF_PROVIDER_ID": "timeOfUseTariff0",
+ "ACCESS_TOKEN": {token}
+ },
+ "appDescriptor": {
+ "websiteUrl": {@link AppDescriptor#getWebsiteUrl()}
+ }
+ }
+ *
+ */
+@Component(name = "App.TimeOfUseTariff.RabotCharge")
+public class RabotCharge extends AbstractOpenemsAppWithProps
+ implements OpenemsApp {
+
+ public static enum Property implements Type, Nameable {
+ // Component-IDs
+ CTRL_ESS_TIME_OF_USE_TARIFF_ID(AppDef.componentId("ctrlEssTimeOfUseTariff0")), //
+ TIME_OF_USE_TARIFF_PROVIDER_ID(AppDef.componentId("timeOfUseTariff0")), //
+
+ // Properties
+ ALIAS(CommonProps.alias()), //
+ ACCESS_TOKEN(AppDef.copyOfGeneric(CommonProps.defaultDef(), def -> def//
+ .setTranslatedLabelWithAppPrefix(".accessToken.label") //
+ .setTranslatedDescriptionWithAppPrefix(".accessToken.description") //
+ .setRequired(true) //
+ .setField(JsonFormlyUtil::buildInput, (app, prop, l, params, field) -> {
+ field.setInputType(PASSWORD);
+ }) //
+ .bidirectional(TIME_OF_USE_TARIFF_PROVIDER_ID, "accessToken",
+ ComponentManagerSupplier::getComponentManager, t -> {
+ return JsonUtils.getAsOptionalString(t) //
+ .map(s -> {
+ if (s.isEmpty()) {
+ return null;
+ }
+ return new JsonPrimitive("xxx");
+ }) //
+ .orElse(null);
+ })));
+
+ private final AppDef super RabotCharge, ? super Property, ? super Type.Parameter.BundleParameter> def;
+
+ private Property(AppDef super RabotCharge, ? super Property, ? super Type.Parameter.BundleParameter> def) {
+ this.def = def;
+ }
+
+ @Override
+ public Property self() {
+ return this;
+ }
+
+ @Override
+ public AppDef super RabotCharge, ? super Property, ? super Type.Parameter.BundleParameter> def() {
+ return this.def;
+ }
+
+ @Override
+ public Function, Type.Parameter.BundleParameter> getParamter() {
+ return Type.Parameter.functionOf(AbstractOpenemsApp::getTranslationBundle);
+ }
+ }
+
+ @Activate
+ public RabotCharge(@Reference ComponentManager componentManager, ComponentContext context,
+ @Reference ConfigurationAdmin cm, @Reference ComponentUtil componentUtil) {
+ super(componentManager, context, cm, componentUtil);
+ }
+
+ @Override
+ protected ThrowingTriFunction, Language, AppConfiguration, OpenemsNamedException> appPropertyConfigurationFactory() {
+ return (t, p, l) -> {
+ final var ctrlEssTimeOfUseTariffId = this.getId(t, p, Property.CTRL_ESS_TIME_OF_USE_TARIFF_ID);
+ final var timeOfUseTariffProviderId = this.getId(t, p, Property.TIME_OF_USE_TARIFF_PROVIDER_ID);
+
+ final var alias = this.getString(p, l, Property.ALIAS);
+ final var accessToken = this.getValueOrDefault(p, Property.ACCESS_TOKEN, null);
+
+ var components = Lists.newArrayList(//
+ new EdgeConfig.Component(ctrlEssTimeOfUseTariffId, alias, "Controller.Ess.Time-Of-Use-Tariff",
+ JsonUtils.buildJsonObject() //
+ .addProperty("ess.id", "ess0") //
+ .build()), //
+ new EdgeConfig.Component(timeOfUseTariffProviderId, this.getName(l), "TimeOfUseTariff.RabotCharge",
+ JsonUtils.buildJsonObject() //
+ .onlyIf(accessToken != null && !accessToken.equals("xxx"), b -> {
+ b.addProperty("accessToken", accessToken);
+ }) //
+ .build())//
+ );
+
+ return AppConfiguration.create() //
+ .addTask(Tasks.component(components)) //
+ .addTask(Tasks.schedulerByCentralOrder(new SchedulerComponent(ctrlEssTimeOfUseTariffId,
+ "Controller.Ess.Time-Of-Use-Tariff", this.getAppId()))) //
+ .addTask(Tasks.persistencePredictor("_sum/UnmanagedConsumptionActivePower")) //
+ .build();
+ };
+ }
+
+ @Override
+ public AppDescriptor getAppDescriptor(OpenemsEdgeOem oem) {
+ return AppDescriptor.create() //
+ .setWebsiteUrl(oem.getAppWebsiteUrl(this.getAppId())) //
+ .build();
+ }
+
+ @Override
+ public OpenemsAppCategory[] getCategories() {
+ return new OpenemsAppCategory[] { OpenemsAppCategory.TIME_OF_USE_TARIFF };
+ }
+
+ @Override
+ protected Property[] propertyValues() {
+ return Property.values();
+ }
+
+ @Override
+ public OpenemsAppCardinality getCardinality() {
+ return OpenemsAppCardinality.SINGLE_IN_CATEGORY;
+ }
+
+ @Override
+ protected ValidatorConfig.Builder getValidateBuilder() {
+ return ValidatorConfig.create() //
+ .setCompatibleCheckableConfigs(checkHome());
+ }
+
+ @Override
+ protected RabotCharge getApp() {
+ return this;
+ }
+
+}
diff --git a/io.openems.edge.core/src/io/openems/edge/app/timeofusetariff/StromdaoCorrently.java b/io.openems.edge.core/src/io/openems/edge/app/timeofusetariff/StromdaoCorrently.java
index 61521495bca..603fb81f5ba 100644
--- a/io.openems.edge.core/src/io/openems/edge/app/timeofusetariff/StromdaoCorrently.java
+++ b/io.openems.edge.core/src/io/openems/edge/app/timeofusetariff/StromdaoCorrently.java
@@ -8,6 +8,7 @@
import org.osgi.service.cm.ConfigurationAdmin;
import org.osgi.service.component.ComponentContext;
import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import com.google.common.collect.Lists;
@@ -61,7 +62,7 @@
}
*
*/
-@org.osgi.service.component.annotations.Component(name = "App.TimeOfUseTariff.Stromdao")
+@Component(name = "App.TimeOfUseTariff.Stromdao")
public class StromdaoCorrently extends
AbstractOpenemsAppWithProps implements OpenemsApp {
diff --git a/io.openems.edge.core/src/io/openems/edge/app/timeofusetariff/Tibber.java b/io.openems.edge.core/src/io/openems/edge/app/timeofusetariff/Tibber.java
index d3bb47f83bf..38b7b7b8b8b 100644
--- a/io.openems.edge.core/src/io/openems/edge/app/timeofusetariff/Tibber.java
+++ b/io.openems.edge.core/src/io/openems/edge/app/timeofusetariff/Tibber.java
@@ -9,6 +9,7 @@
import org.osgi.service.cm.ConfigurationAdmin;
import org.osgi.service.component.ComponentContext;
import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import com.google.common.collect.Lists;
@@ -64,7 +65,7 @@
}
*
*/
-@org.osgi.service.component.annotations.Component(name = "App.TimeOfUseTariff.Tibber")
+@Component(name = "App.TimeOfUseTariff.Tibber")
public class Tibber extends AbstractOpenemsAppWithProps
implements OpenemsApp {
diff --git a/io.openems.edge.core/src/io/openems/edge/core/appmanager/translation_de.properties b/io.openems.edge.core/src/io/openems/edge/core/appmanager/translation_de.properties
index d0e0f07245e..36d9b9dd184 100644
--- a/io.openems.edge.core/src/io/openems/edge/core/appmanager/translation_de.properties
+++ b/io.openems.edge.core/src/io/openems/edge/core/appmanager/translation_de.properties
@@ -350,6 +350,10 @@ App.TimeOfUseTariff.ENTSO-E.biddingZone.option.sweden_se3 = Schweden (SE3)
App.TimeOfUseTariff.ENTSO-E.biddingZone.option.sweden_se4 = Schweden (SE4)
App.TimeOfUseTariff.ENTSO-E.biddingZone.option.belgium = Belgien
App.TimeOfUseTariff.ENTSO-E.biddingZone.option.netherlands = Niederlande
+App.TimeOfUseTariff.RabotCharge.Name = Time-of-Use Tariff (rabot.charge)
+App.TimeOfUseTariff.RabotCharge.Name.short = rabot.charge
+App.TimeOfUseTariff.RabotCharge.accessToken.label = Token
+App.TimeOfUseTariff.RabotCharge.accessToken.description = Bitte stellen Sie das von rabot.charge bereitgestellte persönliche Zugangstoken bereit. Um ein Token zu erhalten, wenden Sie sich bitte an rabot.charge.
App.TimeOfUseTariff.Stromdao.Name = Dynamischer Stromtarif (Stromdao Corrently)
App.TimeOfUseTariff.Stromdao.Name.short = Stromdao Corrently
App.TimeOfUseTariff.Stromdao.zipCode.label = PLZ
diff --git a/io.openems.edge.core/src/io/openems/edge/core/appmanager/translation_en.properties b/io.openems.edge.core/src/io/openems/edge/core/appmanager/translation_en.properties
index 75b69cbbf27..fe9c08c25f9 100644
--- a/io.openems.edge.core/src/io/openems/edge/core/appmanager/translation_en.properties
+++ b/io.openems.edge.core/src/io/openems/edge/core/appmanager/translation_en.properties
@@ -349,6 +349,10 @@ App.TimeOfUseTariff.ENTSO-E.biddingZone.option.sweden_se3 = Sweden (SE3)
App.TimeOfUseTariff.ENTSO-E.biddingZone.option.sweden_se4 = Sweden (SE4)
App.TimeOfUseTariff.ENTSO-E.biddingZone.option.belgium = Belgium
App.TimeOfUseTariff.ENTSO-E.biddingZone.option.netherlands = Netherlands
+App.TimeOfUseTariff.RabotCharge.Name = Time-of-Use Tariff (rabot.charge)
+App.TimeOfUseTariff.RabotCharge.Name.short = rabot.charge
+App.TimeOfUseTariff.RabotCharge.accessToken.label = Token
+App.TimeOfUseTariff.RabotCharge.accessToken.description = Please provide personal access token provided by rabot.charge. to get one, please contact rabot.charge.
App.TimeOfUseTariff.Stromdao.Name = Time-of-Use Tariff (STROMDAO Corrently)
App.TimeOfUseTariff.Stromdao.Name.short = STROMDAO Corrently
App.TimeOfUseTariff.Stromdao.zipCode.label = ZIP Code
diff --git a/io.openems.edge.core/src/io/openems/edge/core/host/NetworkInterface.java b/io.openems.edge.core/src/io/openems/edge/core/host/NetworkInterface.java
index e88a7868206..4cce05f0a93 100644
--- a/io.openems.edge.core/src/io/openems/edge/core/host/NetworkInterface.java
+++ b/io.openems.edge.core/src/io/openems/edge/core/host/NetworkInterface.java
@@ -1,5 +1,11 @@
package io.openems.edge.core.host;
+import static io.openems.common.utils.JsonUtils.buildJsonArray;
+import static io.openems.common.utils.JsonUtils.buildJsonObject;
+import static io.openems.common.utils.JsonUtils.getAsInet4Address;
+import static io.openems.common.utils.JsonUtils.getAsString;
+import static io.openems.common.utils.JsonUtils.getOptionalSubElement;
+
import java.net.Inet4Address;
import java.util.HashSet;
import java.util.Optional;
@@ -41,70 +47,70 @@ public class NetworkInterface {
* @throws OpenemsNamedException on error
*/
public static NetworkInterface> from(String name, JsonObject j) throws OpenemsNamedException {
+ var gateway = parseInet4Address(j, "gateway");
+ var metric = parseInteger(j, "metric");
+ var dns = parseInet4Address(j, "dns");
+ var addresses = parseAddresses(j);
+ var dhcp = parseBoolean(j, "dhcp");
+ var linkLocalAddressing = parseBoolean(j, "linkLocalAddressing");
+
+ return new NetworkInterface(name, dhcp, linkLocalAddressing, gateway, dns, addresses, metric, null);
+ }
- // Gateway
- ConfigurationProperty gateway;
- {
- ConfigurationProperty gatewayString = ConfigurationProperty
- .fromJsonElement(JsonUtils.getOptionalSubElement(j, "gateway"), JsonUtils::getAsString);
- if (gatewayString.isSet()) {
- if (gatewayString.getValue() == null || gatewayString.getValue().trim().isEmpty()) {
- gateway = ConfigurationProperty.asNull();
- } else {
- gateway = ConfigurationProperty.fromJsonElement(
- Optional.of(new JsonPrimitive(gatewayString.getValue())), JsonUtils::getAsInet4Address);
- }
+ private static ConfigurationProperty parseInet4Address(JsonObject j, String member)
+ throws OpenemsNamedException {
+ ConfigurationProperty gatewayString = ConfigurationProperty
+ .fromJsonElement(getOptionalSubElement(j, member), JsonUtils::getAsString);
+ if (gatewayString.isSet()) {
+ if (gatewayString.getValue() == null || gatewayString.getValue().trim().isEmpty()) {
+ return ConfigurationProperty.asNull();
} else {
- gateway = ConfigurationProperty.asNotSet();
+ return ConfigurationProperty.fromJsonElement(//
+ Optional.of(new JsonPrimitive(gatewayString.getValue())), JsonUtils::getAsInet4Address);
}
+ } else {
+ return ConfigurationProperty.asNotSet();
}
+ }
- // DNS
- ConfigurationProperty dns;
- {
- ConfigurationProperty dnsString = ConfigurationProperty
- .fromJsonElement(JsonUtils.getOptionalSubElement(j, "dns"), JsonUtils::getAsString);
- if (dnsString.isSet()) {
- if (dnsString.getValue() == null || dnsString.getValue().trim().isEmpty()) {
- dns = ConfigurationProperty.asNull();
- } else {
- dns = ConfigurationProperty.fromJsonElement(Optional.of(new JsonPrimitive(dnsString.getValue())),
- JsonUtils::getAsInet4Address);
- }
+ private static ConfigurationProperty parseInteger(JsonObject j, String member)
+ throws OpenemsNamedException {
+ ConfigurationProperty metricElement = ConfigurationProperty
+ .fromJsonElement(getOptionalSubElement(j, member), JsonUtils::getAsInt);
+ if (metricElement.isSet()) {
+ if (metricElement.getValue() == null) {
+ return ConfigurationProperty.asNull();
} else {
- dns = ConfigurationProperty.asNotSet();
+ return ConfigurationProperty.fromJsonElement(//
+ Optional.of(new JsonPrimitive(metricElement.getValue())), JsonUtils::getAsInt);
}
+ } else {
+ return ConfigurationProperty.asNotSet();
}
+ }
- // Addresses
- ConfigurationProperty> addresses;
- {
- ConfigurationProperty addressesArray = ConfigurationProperty
- .fromJsonElement(JsonUtils.getOptionalSubElement(j, "addresses"), JsonUtils::getAsJsonArray);
- if (addressesArray.isSet()) {
- var value = new HashSet();
- for (JsonElement element : addressesArray.getValue()) {
- var label = JsonUtils.getAsString(element, "label");
- var address = JsonUtils.getAsInet4Address(element, "address");
- var subnetmask = JsonUtils.getAsInet4Address(element, "subnetmask");
- var cidr = Inet4AddressWithSubnetmask.getCidrFromSubnetmask(subnetmask);
- value.add(new Inet4AddressWithSubnetmask(label, address, cidr));
- }
- addresses = ConfigurationProperty.of(value);
- } else {
- addresses = ConfigurationProperty.asNotSet();
+ private static ConfigurationProperty> parseAddresses(JsonObject j)
+ throws OpenemsNamedException {
+ ConfigurationProperty addressesArray = ConfigurationProperty
+ .fromJsonElement(getOptionalSubElement(j, "addresses"), JsonUtils::getAsJsonArray);
+ if (addressesArray.isSet()) {
+ var value = new HashSet();
+ for (JsonElement element : addressesArray.getValue()) {
+ var label = getAsString(element, "label");
+ var address = getAsInet4Address(element, "address");
+ var subnetmask = getAsInet4Address(element, "subnetmask");
+ var cidr = Inet4AddressWithSubnetmask.getCidrFromSubnetmask(subnetmask);
+ value.add(new Inet4AddressWithSubnetmask(label, address, cidr));
}
+ return ConfigurationProperty.of(value);
+ } else {
+ return ConfigurationProperty.asNotSet();
}
+ }
- // DHCP
- ConfigurationProperty dhcp = ConfigurationProperty
- .fromJsonElement(JsonUtils.getOptionalSubElement(j, "dhcp"), JsonUtils::getAsBoolean);
-
- // linkLocalAddressing
- ConfigurationProperty linkLocalAddressing = ConfigurationProperty
- .fromJsonElement(JsonUtils.getOptionalSubElement(j, "linkLocalAddressing"), JsonUtils::getAsBoolean);
-
- return new NetworkInterface(name, dhcp, linkLocalAddressing, gateway, dns, addresses, null);
+ private static ConfigurationProperty parseBoolean(JsonObject j, String member)
+ throws OpenemsNamedException {
+ return ConfigurationProperty.fromJsonElement(getOptionalSubElement(j, member), JsonUtils::getAsBoolean);
}
private final String name;
@@ -113,6 +119,7 @@ public static NetworkInterface> from(String name, JsonObject j) throws Openems
private ConfigurationProperty gateway;
private ConfigurationProperty dns;
private ConfigurationProperty> addresses;
+ private ConfigurationProperty metric;
/**
* An arbitrary attachment to this NetworkInterface. Can be used to store e.g. a
@@ -126,6 +133,7 @@ public NetworkInterface(String name, //
ConfigurationProperty gateway, //
ConfigurationProperty dns, //
ConfigurationProperty> addresses, //
+ ConfigurationProperty metric, //
A attachment) throws OpenemsException {
this.name = name;
this.dhcp = dhcp;
@@ -134,6 +142,7 @@ public NetworkInterface(String name, //
this.dns = dns;
this.attachment = attachment;
this.addresses = addresses;
+ this.metric = metric;
}
/**
@@ -172,6 +181,15 @@ public ConfigurationProperty getGateway() {
return this.gateway;
}
+ /**
+ * Gets the network interface metric.
+ *
+ * @return the Metric
+ */
+ public ConfigurationProperty getMetric() {
+ return this.metric;
+ }
+
/**
* Gets the addresses configured in the network.
*
@@ -227,6 +245,7 @@ public ConfigurationProperty> getAddressesInclud
* "linkLocalAddressing": boolean,
* "gateway": string,
* "dns": string,
+ * "metric": number,
* "addresses": [{
* "label": string,
* "address": string,
@@ -239,20 +258,22 @@ public ConfigurationProperty> getAddressesInclud
* @throws OpenemsNamedException on error.
*/
public JsonObject toJson() {
- var result = JsonUtils.buildJsonObject() //
+ var result = buildJsonObject() //
.onlyIf(this.dhcp.isSet(), //
b -> b.addProperty("dhcp", this.dhcp.getValue()))
.onlyIf(this.linkLocalAddressing.isSet(), //
b -> b.addProperty("linkLocalAddressing", this.linkLocalAddressing.getValue()))
.onlyIf(!this.gateway.isNull(), //
b -> b.addProperty("gateway", this.gateway.getValue().getHostAddress()))
+ .onlyIf(!this.metric.isNull(), //
+ b -> b.addProperty("metric", this.metric.getValue().intValue()))
.onlyIf(!this.dns.isNull(), //
b -> b.addProperty("dns", this.dns.getValue().getHostAddress()))
.onlyIf(this.addresses.isSet(), //
b -> {
- var arr = JsonUtils.buildJsonArray();
+ var arr = buildJsonArray();
for (var address : this.addresses.getValue()) {
- arr.add(JsonUtils.buildJsonObject() //
+ arr.add(buildJsonObject() //
.addProperty("label", address.getLabel())
.addProperty("address", address.getInet4Address().getHostAddress())
.addProperty("subnetmask", address.getSubnetmaskAsString()).build());
@@ -271,43 +292,27 @@ public JsonObject toJson() {
public boolean updateFrom(NetworkInterface> change) {
var isChanged = false;
if (change.getDhcp().isSet()) {
- if (change.getDhcp() == null) {
- this.dhcp = ConfigurationProperty.asNotSet();
- } else {
- this.dhcp = change.getDhcp();
- }
+ this.dhcp = change.getDhcp();
isChanged = true;
}
if (change.getLinkLocalAddressing().isSet()) {
- if (change.getLinkLocalAddressing() == null) {
- this.linkLocalAddressing = ConfigurationProperty.asNotSet();
- } else {
- this.linkLocalAddressing = change.getLinkLocalAddressing();
- }
+ this.linkLocalAddressing = change.getLinkLocalAddressing();
isChanged = true;
}
if (change.getGateway().isSet()) {
- if (change.getGateway() == null) {
- this.gateway = ConfigurationProperty.asNotSet();
- } else {
- this.gateway = change.getGateway();
- }
+ this.gateway = change.getGateway();
+ isChanged = true;
+ }
+ if (change.getMetric().isSet()) {
+ this.metric = change.getMetric();
isChanged = true;
}
if (change.getDns().isSet()) {
- if (change.getDns() == null) {
- this.dns = ConfigurationProperty.asNotSet();
- } else {
- this.dns = change.getDns();
- }
+ this.dns = change.getDns();
isChanged = true;
}
if (change.getAddresses().isSet()) {
- if (change.getAddresses() == null) {
- this.addresses = ConfigurationProperty.asNotSet();
- } else {
- this.addresses = change.getAddressesIncludingDefaults();
- }
+ this.addresses = change.getAddressesIncludingDefaults();
isChanged = true;
}
return isChanged;
diff --git a/io.openems.edge.core/src/io/openems/edge/core/host/OperatingSystemDebianSystemd.java b/io.openems.edge.core/src/io/openems/edge/core/host/OperatingSystemDebianSystemd.java
index 5b0765051d2..f74bd442b16 100644
--- a/io.openems.edge.core/src/io/openems/edge/core/host/OperatingSystemDebianSystemd.java
+++ b/io.openems.edge.core/src/io/openems/edge/core/host/OperatingSystemDebianSystemd.java
@@ -56,9 +56,16 @@ public class OperatingSystemDebianSystemd implements OperatingSystem {
private static final String NETWORK_BASE_PATH = "/etc/systemd/network";
private static final Path UDEV_PATH = Paths.get("/etc/udev/rules.d/99-usb-serial.rules");
+ private static final int DEFAULT_METRIC = 1024;
+ private static final String MATCH_SECTION = "[Match]";
+ private static final String NETWORK_SECTION = "[Network]";
+ private static final String ROUTE_SECTION = "[Route]";
+ private static final String DHCP_SECTION = "[DHCP]";
+ private static final String ADDRESS_SECTION = "[Address]";
+ private static final String EMPTY_SECTION = "";
private static enum Block {
- UNDEFINED, MATCH, NETWORK, ADDRESS
+ UNDEFINED, MATCH, NETWORK, ADDRESS, ROUTE, DHCP
}
private final HostImpl parent;
@@ -195,16 +202,15 @@ private List toFileFormat(User user, NetworkInterface> iface) throws O
result.add("# changedBy: " //
+ user.getName());
result.add("# changedAt: " //
- + LocalDateTime.now().truncatedTo(ChronoUnit.MINUTES).toString() //
- );
- result.add("[Match]");
+ + LocalDateTime.now().truncatedTo(ChronoUnit.MINUTES).toString());
+
+ // Match Section
+ result.add(MATCH_SECTION);
result.add("Name=" + iface.getName());
- result.add("");
+ result.add(EMPTY_SECTION);
- result.add("[Network]");
- if (iface.getGateway().isSetAndNotNull()) {
- result.add("Gateway=" + iface.getGateway().getValue().getHostAddress());
- }
+ // Network Section
+ result.add(NETWORK_SECTION);
if (iface.getDhcp().isSetAndNotNull()) {
result.add("DHCP=" + (iface.getDhcp().getValue() ? "yes" : "no"));
}
@@ -214,11 +220,31 @@ private List toFileFormat(User user, NetworkInterface> iface) throws O
if (iface.getLinkLocalAddressing().isSetAndNotNull()) {
result.add("LinkLocalAddressing=" + (iface.getLinkLocalAddressing().getValue() ? "yes" : "no"));
}
+
+ var metric = DEFAULT_METRIC;
+ if (iface.getMetric().isSetAndNotNull()) {
+ metric = iface.getMetric().getValue().intValue();
+ }
+
+ if (iface.getDhcp().isSetAndNotNull()) {
+ var dhcp = iface.getDhcp().getValue();
+ result.add(EMPTY_SECTION);
+ if (dhcp) { // dhcp == yes
+ result.add(DHCP_SECTION);
+ result.add("RouteMetric=" + metric);
+ } else {
+ result.add(ROUTE_SECTION);
+ if (iface.getGateway().isSetAndNotNull()) {
+ result.add("Gateway=" + iface.getGateway().getValue().getHostAddress());
+ }
+ result.add("Metric=" + metric);
+ }
+ }
if (iface.getAddresses().isSetAndNotNull()) {
for (var address : iface.getAddresses().getValue()) {
final var label = address.getLabel();
- result.add("");
- result.add("[Address]");
+ result.add(EMPTY_SECTION);
+ result.add(ADDRESS_SECTION);
result.add("Address=" + address.toString());
if (!label.isBlank()) {
result.add("Label=" + label);
@@ -393,6 +419,10 @@ public String getUsbConfiguration() throws OpenemsNamedException {
.compile("^Gateway=(" + NetworkConfiguration.PATTERN_INET4ADDRESS + ")$");
private static final Pattern NETWORK_DNS = Pattern //
.compile("^DNS=(" + NetworkConfiguration.PATTERN_INET4ADDRESS + ")$");
+ private static final Pattern GATEWAY_METRIC = Pattern //
+ .compile("^Metric=([0-9]+)$");
+ private static final Pattern ROUTE_METRIC = Pattern //
+ .compile("^RouteMetric=([0-9]+)$");
/**
* Parses a Systemd-Networkd configuration file.
@@ -419,6 +449,8 @@ protected static NetworkInterface parseSystemdNetworkdConfigurationFile(L
ConfigurationProperty.asNotSet());
final var gateway = new AtomicReference>(//
ConfigurationProperty.asNotSet());
+ final var metric = new AtomicReference>(//
+ ConfigurationProperty.asNotSet());
final var dns = new AtomicReference>(//
ConfigurationProperty.asNotSet());
final var addresses = new AtomicReference>>(//
@@ -438,16 +470,22 @@ protected static NetworkInterface parseSystemdNetworkdConfigurationFile(L
*/
if (line.startsWith("[")) {
switch (line) {
- case "[Match]":
+ case MATCH_SECTION:
currentBlock = Block.MATCH;
break;
- case "[Network]":
+ case NETWORK_SECTION:
currentBlock = Block.NETWORK;
break;
- case "[Address]":
+ case ADDRESS_SECTION:
tmpAddress.set(null);
currentBlock = Block.ADDRESS;
break;
+ case ROUTE_SECTION:
+ currentBlock = Block.ROUTE;
+ break;
+ case DHCP_SECTION:
+ currentBlock = Block.DHCP;
+ break;
default:
currentBlock = Block.UNDEFINED;
break;
@@ -486,8 +524,6 @@ protected static NetworkInterface parseSystemdNetworkdConfigurationFile(L
addresses.set(ConfigurationProperty.of(addressDetails));
});
break;
- case UNDEFINED:
- break;
case ADDRESS:
onMatchString(NETWORK_ADDRESS, line, property -> {
// Storing here temporarily so that we can use it if when we find label.
@@ -518,11 +554,27 @@ protected static NetworkInterface parseSystemdNetworkdConfigurationFile(L
addressDetails.add(address);
});
break;
+ case ROUTE:
+ onMatchInet4Address(NETWORK_GATEWAY, line, property -> {
+ gateway.set(ConfigurationProperty.of(property));
+ });
+ onMatchString(GATEWAY_METRIC, line, property -> {
+ metric.set(ConfigurationProperty.of(Integer.parseInt(property)));
+ });
+ break;
+ case DHCP:
+ onMatchString(ROUTE_METRIC, line, property -> {
+ metric.set(ConfigurationProperty.of(Integer.parseInt(property)));
+ });
+ break;
+ case UNDEFINED:
+ break;
default:
break;
}
}
return new NetworkInterface<>(name.get(), //
- dhcp.get(), linkLocalAddressing.get(), gateway.get(), dns.get(), addresses.get(), attachment);
+ dhcp.get(), linkLocalAddressing.get(), gateway.get(), dns.get(), addresses.get(), metric.get(),
+ attachment);
}
}
diff --git a/io.openems.edge.core/src/io/openems/edge/core/host/jsonrpc/SetNetworkConfigRequest.java b/io.openems.edge.core/src/io/openems/edge/core/host/jsonrpc/SetNetworkConfigRequest.java
index dbd8186d247..fff7cf8ce8c 100644
--- a/io.openems.edge.core/src/io/openems/edge/core/host/jsonrpc/SetNetworkConfigRequest.java
+++ b/io.openems.edge.core/src/io/openems/edge/core/host/jsonrpc/SetNetworkConfigRequest.java
@@ -26,6 +26,7 @@
* "dhcp"?: boolean,
* "linkLocalAddressing"?: boolean,
* "gateway"?: string,
+ * "metric"?:integer,
* "dns"?: string,
* "addresses"?: [{
* "label": string,
diff --git a/io.openems.edge.core/test/io/openems/edge/core/appmanager/Apps.java b/io.openems.edge.core/test/io/openems/edge/core/appmanager/Apps.java
index f599054f244..49d88adf37d 100644
--- a/io.openems.edge.core/test/io/openems/edge/core/appmanager/Apps.java
+++ b/io.openems.edge.core/test/io/openems/edge/core/appmanager/Apps.java
@@ -50,6 +50,7 @@
import io.openems.edge.app.pvselfconsumption.SelfConsumptionOptimization;
import io.openems.edge.app.timeofusetariff.AwattarHourly;
import io.openems.edge.app.timeofusetariff.EntsoE;
+import io.openems.edge.app.timeofusetariff.RabotCharge;
import io.openems.edge.app.timeofusetariff.StromdaoCorrently;
import io.openems.edge.app.timeofusetariff.Tibber;
import io.openems.edge.common.component.ComponentManager;
@@ -130,6 +131,16 @@ public static final EntsoE entsoE(AppManagerTestBundle t) {
return app(t, EntsoE::new, "App.TimeOfUseTariff.ENTSO-E");
}
+ /**
+ * Test method for creating a {@link RabotCharge}.
+ *
+ * @param t the {@link AppManagerTestBundle}
+ * @return the {@link OpenemsApp} instance
+ */
+ public static final RabotCharge rabotCharge(AppManagerTestBundle t) {
+ return app(t, RabotCharge::new, "App.TimeOfUseTariff.RabotCharge");
+ }
+
/**
* Test method for creating a {@link StromdaoCorrently}.
*
diff --git a/io.openems.edge.core/test/io/openems/edge/core/appmanager/ComponentUtilTest.java b/io.openems.edge.core/test/io/openems/edge/core/appmanager/ComponentUtilTest.java
index 9f7ca0686de..e490643abad 100644
--- a/io.openems.edge.core/test/io/openems/edge/core/appmanager/ComponentUtilTest.java
+++ b/io.openems.edge.core/test/io/openems/edge/core/appmanager/ComponentUtilTest.java
@@ -53,15 +53,16 @@ public void testEqualsJsonElementJsonElement() {
public void testEqualsListOfNetworkInterface() throws Exception {
var expectedInet4Addresses = new HashSet();
expectedInet4Addresses.add(Inet4AddressWithSubnetmask.fromString("foo", "192.168.178.2/24"));
- List> expected = Lists.newArrayList(new NetworkInterface("eth0",
- ConfigurationProperty.of(false), ConfigurationProperty.of(false), ConfigurationProperty.asNull(),
- ConfigurationProperty.asNull(), ConfigurationProperty.of(expectedInet4Addresses), null));
+ List> expected = Lists
+ .newArrayList(new NetworkInterface("eth0", ConfigurationProperty.of(false),
+ ConfigurationProperty.of(false), ConfigurationProperty.asNull(), ConfigurationProperty.asNull(),
+ ConfigurationProperty.of(expectedInet4Addresses), ConfigurationProperty.of(145), null));
var actualInet4Addresses = new HashSet();
actualInet4Addresses.add(Inet4AddressWithSubnetmask.fromString("foo", "192.168.178.2/24"));
var networkInterface = new NetworkInterface("eth0", ConfigurationProperty.of(false),
ConfigurationProperty.of(false), ConfigurationProperty.asNull(), ConfigurationProperty.asNull(),
- ConfigurationProperty.of(actualInet4Addresses), null);
+ ConfigurationProperty.of(actualInet4Addresses), ConfigurationProperty.of(145), null);
List> actual = Lists.newArrayList(networkInterface);
diff --git a/io.openems.edge.core/test/io/openems/edge/core/appmanager/TestTranslations.java b/io.openems.edge.core/test/io/openems/edge/core/appmanager/TestTranslations.java
index b70a23488fd..e414179bc38 100644
--- a/io.openems.edge.core/test/io/openems/edge/core/appmanager/TestTranslations.java
+++ b/io.openems.edge.core/test/io/openems/edge/core/appmanager/TestTranslations.java
@@ -38,6 +38,9 @@ public void beforeEach() throws Exception {
this.apps.add(new TestTranslation(Apps.entsoE(t), true, JsonUtils.buildJsonObject() //
.addProperty("BIDDING_ZONE", "GERMANY") //
.build()));
+ this.apps.add(new TestTranslation(Apps.rabotCharge(t), true, JsonUtils.buildJsonObject() //
+ .addProperty("ACCESS_TOKEN", "123456789") //
+ .build()));
this.apps.add(new TestTranslation(Apps.stromdaoCorrently(t), true, JsonUtils.buildJsonObject() //
.addProperty("ZIP_CODE", "123456789") //
.build()));
diff --git a/io.openems.edge.core/test/io/openems/edge/core/host/OperatingSystemDebianSystemdTest.java b/io.openems.edge.core/test/io/openems/edge/core/host/OperatingSystemDebianSystemdTest.java
index 3e3a12f3fb5..e071594e3eb 100644
--- a/io.openems.edge.core/test/io/openems/edge/core/host/OperatingSystemDebianSystemdTest.java
+++ b/io.openems.edge.core/test/io/openems/edge/core/host/OperatingSystemDebianSystemdTest.java
@@ -1,6 +1,10 @@
package io.openems.edge.core.host;
+import static io.openems.common.utils.JsonUtils.prettyToString;
+import static io.openems.edge.core.host.OperatingSystemDebianSystemd.parseSystemdNetworkdConfigurationFile;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
import java.util.List;
@@ -14,7 +18,7 @@ public class OperatingSystemDebianSystemdTest {
@Test
public void test() throws OpenemsNamedException {
- List lines = Lists.newArrayList(//
+ var lines = Lists.newArrayList(//
"[Match]", //
"Name=eth0", //
"", //
@@ -27,17 +31,33 @@ public void test() throws OpenemsNamedException {
"Label=normal" //
);
- NetworkInterface