diff --git a/README.md b/README.md
index 056ec58..de9b513 100644
--- a/README.md
+++ b/README.md
@@ -1,39 +1,39 @@
-# SGr-JavaSamples
-
+# SmartGridready Java Samples
## Index
+
[Summary](#summary)
[Installation](#installation)
[Architecture](#architecture)
[Code description](#code-description-for-the-samplecommunicator)
-
## Summary
-SGr-JavaSamples provides sample projects that demonstrate the use of the SGr Communication Handler Library. The goal is to set up a test environment that allows to connect SGr components and different 'products' (heat pump, charging station, inverter, battery, electricity meter etc.) through the SGr communication interface.
+SGr-JavaSamples provides sample projects that demonstrate the use of the SGr Communication Handler Library. The goal is to set up a test environment that allows to connect SGr components and different 'products' (heat pump, charging station, inverter, battery, electricity meter etc.) through the SGr communication interface.
## Installation
### Requirements / Prerequisites
+
- Java JDK version >= Java 11
### Clone
+
- Create a new folder for the project (eg. 'SGrJavaSamples').
- Clone the following project to a new folder: https://github.com/SmartgridReady/SGrJavaSamples.git
Rem: The folder [your-local-project-folder]/SampleCommunicator/src/main/resources contains the device description XML-files used by the SGrJavaSamples.
### Build
+
- Open the [your-local-project-folder]/SampleCommunicator with your IDE.
- Run the Gradle 'build' target in your IDE
- You can also run Gradle from the command line. Change to the directory [your-local-project-folder]/SampleCommunicator and run: `gradlew clean build`
-
## Architecture

-
### Component: Communicator
@@ -52,7 +52,7 @@ Rem: The folder [your-local-project-folder]/SampleCommunicator/src/main/resource
The Communicator loads a device driver for the communication interface of the product (e.g. Modbus RTU/TCP, REST...).
The communicator reads or sets (analyses and/or controls) the data points.
-
+
### Component: XML (XML-Profile)
@@ -121,7 +121,7 @@ Rem: The folder [your-local-project-folder]/SampleCommunicator/src/main/resource
Description:
-
The XML file describes the ''function profiles', data points and attributes that can be addressed over the SGr interface. The XML file also provides general information about the 'Product'.
+
The XML file describes the ''function profiles', data points and attributes that can be addressed over the SGr interface. The XML file also provides general information about the 'Product'.
Responsibilities:
@@ -129,12 +129,12 @@ Rem: The folder [your-local-project-folder]/SampleCommunicator/src/main/resource
Providing general data on the Product.
Provide the data necessary for mapping the SGr Generic Interface with the External Interface.
-
+
### Component: External Interface (EI)
@@ -263,7 +263,6 @@ If you are happy owner of a WAGO Smart-Meter you can read the read values from t
You find the sample code on [github](SampleCommunicator/src/main/java/com/smartgridready/communicator/example/WagoSmartMeterCommunicator.java)
-
## Further information / contact information
Webssite: [https://smartgridready.ch/](https://smartgridready.ch/)
diff --git a/SampleCommunicator/build.gradle b/SampleCommunicator/build.gradle
index 9933e5d..231ff4c 100644
--- a/SampleCommunicator/build.gradle
+++ b/SampleCommunicator/build.gradle
@@ -15,13 +15,13 @@ repositories {
mavenCentral()
maven {
- url "https://nexus.library.smartgridready.ch/repository/maven-releases/"
+ url = "https://nexus.library.smartgridready.ch/repository/maven-releases/"
mavenContent {
releasesOnly()
}
}
maven {
- url "https://nexus.library.smartgridready.ch/repository/maven-snapshots/"
+ url = "https://nexus.library.smartgridready.ch/repository/maven-snapshots/"
mavenContent {
snapshotsOnly()
}
@@ -43,27 +43,65 @@ java {
dependencies {
// SGr dependencies
- implementation group: 'com.smartgridready', name: 'sgr-commhandler', version: '2.4.1'
+ implementation group: 'com.smartgridready', name: 'sgr-commhandler', version: '2.4.2'
runtimeOnly group: 'com.smartgridready', name: 'sgr-driver-j2mod', version: '1.0.0'
runtimeOnly group: 'com.smartgridready', name: 'sgr-driver-apachehttp', version: '2.1.1'
runtimeOnly group: 'com.smartgridready', name: 'sgr-driver-hivemq', version: '2.0.1'
// Logging
- implementation group: 'org.slf4j', name: 'slf4j-api', version: '2.0.10'
+ implementation group: 'org.slf4j', name: 'slf4j-api', version: '2.0.17'
implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.19.0'
implementation group: 'org.apache.logging.log4j', name: 'log4j-slf4j2-impl', version: '2.19.0'
// Use JUnit test framework
- implementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.10.2'
- runtimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.10.2'
+ implementation 'org.junit.jupiter:junit-jupiter:5.13.4'
+ runtimeOnly 'org.junit.platform:junit-platform-launcher'
- implementation group: 'org.mockito', name: 'mockito-core', version: '5.12.0'
- implementation group: 'org.mockito', name: 'mockito-junit-jupiter', version: '5.12.0'
+ implementation group: 'org.mockito', name: 'mockito-core', version: '5.18.0'
+ implementation group: 'org.mockito', name: 'mockito-junit-jupiter', version: '5.18.0'
implementation group: 'org.mockito', name: 'mockito-inline', version: '5.2.0'
- implementation group: 'org.awaitility', name: 'awaitility', version: '4.2.0'
+ implementation group: 'org.awaitility', name: 'awaitility', version: '4.2.2'
}
test {
useJUnitPlatform() // needed to run JUnit 5 test with gradle
}
+
+// can run the examples from project root
+
+tasks.register("runBasicSampleCommunicator", JavaExec) {
+ group = ApplicationPlugin.APPLICATION_GROUP
+ classpath = sourceSets.main.runtimeClasspath
+ mainClass = 'com.smartgridready.communicator.example.BasicSampleCommunicator'
+}
+
+tasks.register("runBasicSampleCommunicatorClassic", JavaExec) {
+ group = ApplicationPlugin.APPLICATION_GROUP
+ classpath = sourceSets.main.runtimeClasspath
+ mainClass = 'com.smartgridready.communicator.example.BasicSampleCommunicatorClassic'
+}
+
+tasks.register("runEnumAndBitmapSampleCommunicator", JavaExec) {
+ group = ApplicationPlugin.APPLICATION_GROUP
+ classpath = sourceSets.main.runtimeClasspath
+ mainClass = 'com.smartgridready.communicator.example.EnumAndBitmapSampleCommunicator'
+}
+
+tasks.register("runMqttSampleCommunicator", JavaExec) {
+ group = ApplicationPlugin.APPLICATION_GROUP
+ classpath = sourceSets.main.runtimeClasspath
+ mainClass = 'com.smartgridready.communicator.example.MqttSampleCommunicator'
+}
+
+tasks.register("runRestSampleCommunicator", JavaExec) {
+ group = ApplicationPlugin.APPLICATION_GROUP
+ classpath = sourceSets.main.runtimeClasspath
+ mainClass = 'com.smartgridready.communicator.example.RestSampleCommunicator'
+}
+
+tasks.register("runWagoSmartMeterCommunicator", JavaExec) {
+ group = ApplicationPlugin.APPLICATION_GROUP
+ classpath = sourceSets.main.runtimeClasspath
+ mainClass = 'com.smartgridready.communicator.example.WagoSmartMeterCommunicator'
+}
diff --git a/SampleCommunicator/gradle/wrapper/gradle-wrapper.jar b/SampleCommunicator/gradle/wrapper/gradle-wrapper.jar
index a4b76b9..1b33c55 100644
Binary files a/SampleCommunicator/gradle/wrapper/gradle-wrapper.jar and b/SampleCommunicator/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/SampleCommunicator/gradle/wrapper/gradle-wrapper.properties b/SampleCommunicator/gradle/wrapper/gradle-wrapper.properties
index e2847c8..d4081da 100644
--- a/SampleCommunicator/gradle/wrapper/gradle-wrapper.properties
+++ b/SampleCommunicator/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/SampleCommunicator/gradlew b/SampleCommunicator/gradlew
index f5feea6..23d15a9 100644
--- a/SampleCommunicator/gradlew
+++ b/SampleCommunicator/gradlew
@@ -86,8 +86,7 @@ done
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
-APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
-' "$PWD" ) || exit
+APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@@ -115,7 +114,7 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM.
@@ -206,7 +205,7 @@ fi
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
-# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
@@ -214,7 +213,7 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
- org.gradle.wrapper.GradleWrapperMain \
+ -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.
diff --git a/SampleCommunicator/gradlew.bat b/SampleCommunicator/gradlew.bat
index 9d21a21..db3a6ac 100644
--- a/SampleCommunicator/gradlew.bat
+++ b/SampleCommunicator/gradlew.bat
@@ -70,11 +70,11 @@ goto fail
:execute
@rem Setup the command line
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+set CLASSPATH=
@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
diff --git a/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/AsynchronousSampleCommunicatorTest.java b/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/AsynchronousSampleCommunicatorTest.java
index 38c3cac..a9950ba 100644
--- a/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/AsynchronousSampleCommunicatorTest.java
+++ b/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/AsynchronousSampleCommunicatorTest.java
@@ -116,9 +116,9 @@ private void doBuildAndRunDatastructureTest() {
//
// Just define the return type of getVal() (Value), the functional-profile name, the data point name and the getter method of the
// commhandler API to be called. When ReadExec is executed it will call the callable and save the result within an AsyncResult member.
- ReadExec wagoVoltageACL1 = new ReadExec<>("VoltageAC", "VoltageL1", wagoModbusDevice::getVal);
- ReadExec wagoVoltageACL2 = new ReadExec<>("VoltageAC", "VoltageL2", wagoModbusDevice::getVal);
- ReadExec wagoVoltageACL3 = new ReadExec<>("VoltageAC", "VoltageL3", wagoModbusDevice::getVal);
+ ReadExec wagoVoltageACL1 = new ReadExec<>("VoltageAC", "VoltageACL1_N", wagoModbusDevice::getVal);
+ ReadExec wagoVoltageACL2 = new ReadExec<>("VoltageAC", "VoltageACL2_N", wagoModbusDevice::getVal);
+ ReadExec wagoVoltageACL3 = new ReadExec<>("VoltageAC", "VoltageACL3_N", wagoModbusDevice::getVal);
ReadExec clemapActPowerACtot1 = new ReadExec<>("ActivePowerAC", "ActivePowerACtot", clemapRestApiDevice1::getVal);
ReadExec clemapActPowerACtot2 = new ReadExec<>("ActivePowerAC", "ActivePowerACtot", clemapRestApiDevice2::getVal);
@@ -128,7 +128,7 @@ private void doBuildAndRunDatastructureTest() {
WriteExec garoWallboxBHemsCurrLim = new WriteExec<>("Curtailment", "HemsCurrentLimit", garoModbusDeviceB::setVal);
// 3. Wire the tasks to define which tasks can be executed in parallel and which ones must be executed in sequence
- // (example: The executables access the same device via modbus and therefore cannot be executed in parallel).
+ // (example: The executables access the same device via Modbus and therefore cannot be executed in parallel).
// Do create a new Parallel() or a new Sequence() and add ReadExec and WriteExec instances to them.
// To achieve this, you can create either a new 'Parallel()' or 'Sequence()' processing chain and add 'ReadExec'
// and 'WriteExec' instances to them as needed. Additionally, you have the flexibility to nest 'Parallel()' and 'Sequence()'
diff --git a/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/BasicSampleCommunicator.java b/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/BasicSampleCommunicator.java
index 2cbc51a..f80bb13 100644
--- a/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/BasicSampleCommunicator.java
+++ b/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/BasicSampleCommunicator.java
@@ -67,8 +67,9 @@ public class BasicSampleCommunicator
private static final Logger LOG = LoggerFactory.getLogger(BasicSampleCommunicator.class);
private static final String PROFILE_VOLTAGE_AC = "VoltageAC";
- private static final String DEVICE_DESCRIPTION_FILE_NAME = "SGr_04_0014_0000_WAGO_SmartMeterV0.2.1.xml";
+ private static final String DEVICE_DESCRIPTION_FILE_NAME = "SGr_00_0014_0000_WAGO_SmartMeter_V0.3.xml";
private static final String SERIAL_PORT_NAME = "COM3";
+ private static final String SERIAL_PARITY = "NONE";
public static void main(String[] argv)
{
@@ -84,6 +85,7 @@ public static void main(String[] argv)
//
final var configProperties = new Properties();
configProperties.setProperty("serial_port", SERIAL_PORT_NAME);
+ configProperties.setProperty("serial_parity", SERIAL_PARITY);
GenDeviceApi sgcpDevice;
@@ -93,10 +95,12 @@ public static void main(String[] argv)
// mandatory: inject device description (EID)
.eid(EidLoader.getDeviceDescriptionInputStream(DEVICE_DESCRIPTION_FILE_NAME))
// optional: inject the ModbusFactory mock
- .useModbusClientFactory(new MockModbusClientFactory(false))
- // optional: inject the configuration
- .properties(configProperties)
- .build();
+ .useModbusClientFactory(new MockModbusClientFactory(false))
+ // optional: use shared Modbus RTU gateway registry to allow multiple devices on same RS-485 bus
+ .useSharedModbusRtu(true)
+ // optional: inject the configuration
+ .properties(configProperties)
+ .build();
}
catch ( GenDriverException | RestApiAuthenticationException | IOException e )
{
@@ -116,20 +120,20 @@ public static void main(String[] argv)
// Read specific values from the device.
// - "PROFILE_VOLTAGE_AC" is the name of the functional profile.
- // - "VoltageL1", "VoltageL2" and "VoltageL3" are the names of the Datapoints that
+ // - "VoltageACL1_N", "VoltageACL2_N" and "VoltageACL3_N" are the names of the data points that
// report the values corresponding to their names.
//
- // Hint: You can only read values for functional profiles and datapoints that exist
+ // Hint: You can only read values for functional profiles and data points that exist
// in the device description (EID).
//
- final var val1 = sgcpDevice.getVal(PROFILE_VOLTAGE_AC, "VoltageL1").getFloat32();
- final var val2 = sgcpDevice.getVal(PROFILE_VOLTAGE_AC, "VoltageL2").getFloat32();
- final var val3 = sgcpDevice.getVal(PROFILE_VOLTAGE_AC, "VoltageL3").getFloat32();
- final var log = String.format("Wago-Meter, %s: L1=%.2fV, L2=%.2fV, L3=%.2fV", PROFILE_VOLTAGE_AC, val1, val2, val3);
+ final var val1 = sgcpDevice.getVal(PROFILE_VOLTAGE_AC, "VoltageACL1_N").getFloat32();
+ final var val2 = sgcpDevice.getVal(PROFILE_VOLTAGE_AC, "VoltageACL2_N").getFloat32();
+ final var val3 = sgcpDevice.getVal(PROFILE_VOLTAGE_AC, "VoltageACL3_N").getFloat32();
+ final var log = String.format("WAGO-Meter, %s: L1=%.2fV, L2=%.2fV, L3=%.2fV", PROFILE_VOLTAGE_AC, val1, val2, val3);
LOG.info(log);
final var val4 = sgcpDevice.getVal("CurrentDirection", "CurrentDirL1");
- final var log2 = String.format("Wago-Meter, %s: L1=%s", "CurrentDirection", val4.getString());
+ final var log2 = String.format("WAGO-Meter, %s: L1=%s", "CurrentDirection", val4.getString());
LOG.info(log2);
// REMARK: An example for setVal() you find in EnumAndBitmapSampleCommunicator
@@ -144,23 +148,23 @@ public static void main(String[] argv)
// Or simply just the device configuration info.
final var configurationInfo = sgcpDevice.getDeviceConfigurationInfo();
- LOG.info("DeviceConfigurationInfo:" + ciToString(configurationInfo, 1));
+ LOG.info("Device configuration info:" + ciToString(configurationInfo, 1));
// Or just the functional profiles.
final var functionalProfiles = sgcpDevice.getFunctionalProfiles();
- LOG.info("FunctionalProfiles:" + fpsToString(functionalProfiles, 1, true));
+ LOG.info("Functional profiles:" + fpsToString(functionalProfiles, 1, true));
// Get a specific functional profile.
final var functionalProfile = sgcpDevice.getFunctionalProfile(functionalProfiles.get(0).getName());
- LOG.info("FunctionalProfile:" + fpToString(functionalProfile, 1, false));
+ LOG.info("Functional profile:" + fpToString(functionalProfile, 1, false));
// Get data points of a specific functional profile.
final var dataPoints = sgcpDevice.getDataPoints(functionalProfile.getName());
- LOG.info("DataPoints:" + dpsToString(dataPoints, 1, true));
+ LOG.info("Data points:" + dpsToString(dataPoints, 1, true));
// Get a specific data point of a specific functional profile.
final var dataPoint = sgcpDevice.getDataPoint(functionalProfile.getName(), dataPoints.get(0).getName());
- LOG.info("DataPoint:" + dpToString(dataPoint, 1, false));
+ LOG.info("Data point:" + dpToString(dataPoint, 1, false));
}
catch (Exception e)
{
@@ -268,10 +272,10 @@ private static String fpToString(FunctionalProfile fp, int numOfTabs, boolean sh
if (!shortLog)
{
- sb.append("\n" + tabs + "profileType: " + fp.getProfileType());
- sb.append("\n" + tabs + "category: " + fp.getCategory());
- sb.append("\n" + tabs + "genericAttributes: " + gaToString(fp.getGenericAttributes(), numOfTabs + 1));
- sb.append("\n" + tabs + "dataPoints: " + dpsToString(fp.getDataPoints(), numOfTabs + 1, true));
+ sb.append("\n" + tabs + "profile type: " + fp.getProfileType());
+ sb.append("\n" + tabs + "category: " + fp.getCategory());
+ sb.append("\n" + tabs + "generic attributes: " + gaToString(fp.getGenericAttributes(), numOfTabs + 1));
+ sb.append("\n" + tabs + "data points: " + dpsToString(fp.getDataPoints(), numOfTabs + 1, true));
sb.append("\n" + tabs + "---");
}
return sb.toString();
diff --git a/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/BasicSampleCommunicatorClassic.java b/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/BasicSampleCommunicatorClassic.java
index 724fabd..a82508f 100644
--- a/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/BasicSampleCommunicatorClassic.java
+++ b/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/BasicSampleCommunicatorClassic.java
@@ -62,8 +62,9 @@ public class BasicSampleCommunicatorClassic {
private static final Logger LOG = LoggerFactory.getLogger(BasicSampleCommunicator.class);
private static final String PROFILE_VOLTAGE_AC = "VoltageAC";
- private static final String DEVICE_DESCRIPTION_FILE_NAME = "SGr_04_0014_0000_WAGO_SmartMeterV0.2.1.xml";
+ private static final String DEVICE_DESCRIPTION_FILE_NAME = "SGr_00_0014_0000_WAGO_SmartMeter_V0.3.xml";
private static final String SERIAL_PORT_NAME = "COM3";
+ private static final String SERIAL_PARITY = "NONE";
public static void main(String[] argv) {
@@ -74,13 +75,14 @@ public static void main(String[] argv) {
//
Properties configProperties = new Properties();
configProperties.setProperty("port_name", SERIAL_PORT_NAME);
+ configProperties.setProperty("serial_parity", SERIAL_PARITY);
String deviceDescFilePath = getDeviceDescriptionFilePath();
DeviceDescriptionLoader loader = new DeviceDescriptionLoader();
DeviceFrame sgcpMeter = loader.load( "", deviceDescFilePath);
// Step 2:
// Load the suitable device driver to communicate with the device. The example below uses
- // mocked driver for modbus RTU.
+ // mocked driver for Modbus RTU.
//
// Change the driver to the real driver, suitable for your device. For example:
// - GenDriverAPI4Modbus mbTCP = new GenDriverAPI4ModbusTCP("127.0.0.1", 502)
@@ -89,28 +91,28 @@ public static void main(String[] argv) {
GenDriverAPI4Modbus mbRTUMock = new GenDriverAPI4ModbusMock(false);
// Step 2 (Modbus RTU only):
- // Initialise the serial COM port used by the modbus transport service.
+ // Initialise the serial COM port used by the Modbus transport service.
//
mbRTUMock.connect();
// Step 3:
- // Instantiate a modbus device. Provide the device description and the device driver
+ // Instantiate a Modbus device. Provide the device description and the device driver
// instance to be used for the device.
SGrModbusDevice sgcpDevice = new SGrModbusDevice(sgcpMeter, mbRTUMock );
// Step 4:
// Read the values from the device.
// - "PROFILE_VOLTAGE_AC" is the name of the functional profile.
- // - "VoltageL1", "VoltageL2" and "VoltageL3" are the names of the Datapoints that
+ // - "VoltageACL1_N", "VoltageACL2_N" and "VoltageACL3_N" are the names of the data points that
// report the values corresponding to their names.
//
- // Hint: You can only read values for functional profiles and datapoints that exist
+ // Hint: You can only read values for functional profiles and data points that exist
// in the device description XML.
//
- float val1 = sgcpDevice.getVal(PROFILE_VOLTAGE_AC, "VoltageL1").getFloat32();
- float val2 = sgcpDevice.getVal(PROFILE_VOLTAGE_AC, "VoltageL2").getFloat32();
- float val3 = sgcpDevice.getVal(PROFILE_VOLTAGE_AC, "VoltageL3").getFloat32();
- String log = String.format("Wago-Meter CurrentAC: %.2fV, %.2fV, %.2fV", val1, val2, val3);
+ float val1 = sgcpDevice.getVal(PROFILE_VOLTAGE_AC, "VoltageACL1_N").getFloat32();
+ float val2 = sgcpDevice.getVal(PROFILE_VOLTAGE_AC, "VoltageACL2_N").getFloat32();
+ float val3 = sgcpDevice.getVal(PROFILE_VOLTAGE_AC, "VoltageACL3_N").getFloat32();
+ String log = String.format("WAGO-Meter CurrentAC: %.2fV, %.2fV, %.2fV", val1, val2, val3);
LOG.info(log);
// Step 5:
@@ -119,7 +121,7 @@ public static void main(String[] argv) {
mbRTUMock.disconnect();
} catch (Exception e) {
LOG.error("Error loading device description. ", e);
- }
+ }
}
private static String getDeviceDescriptionFilePath() throws FileNotFoundException {
diff --git a/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/EnumAndBitmapSampleCommunicator.java b/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/EnumAndBitmapSampleCommunicator.java
index 2ca1f00..dc9bec8 100644
--- a/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/EnumAndBitmapSampleCommunicator.java
+++ b/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/EnumAndBitmapSampleCommunicator.java
@@ -36,7 +36,7 @@
* This class provides examples on how to handle enumerations and bitmaps,
* using the current SmartGridready commhandler library.
*
- * The program uses a mocked modbus driver and can be run without an attached device/product.
+ * The program uses a mocked Modbus driver and can be run without an attached device/product.
* All configuration parameters of the EID are hard-coded, therefore no configuration properties need to be set.
*/
public class EnumAndBitmapSampleCommunicator
diff --git a/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/MqttSampleCommunicator.java b/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/MqttSampleCommunicator.java
index 4ffebbe..5acf67d 100644
--- a/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/MqttSampleCommunicator.java
+++ b/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/MqttSampleCommunicator.java
@@ -71,7 +71,7 @@ public class MqttSampleCommunicator
private static final Logger LOG = LoggerFactory.getLogger(MqttSampleCommunicator.class);
/** This example is tied to this EID-XML. */
- private static final String DEVICE_DESCRIPTION_FILE_NAME = "SGr_02_mmmmm_dddd_WagoTestsystem_MQTT.xml";
+ private static final String DEVICE_DESCRIPTION_FILE_NAME = "SGr_04_0014_0000_WAGO_Testsystem_MQTT_V1.0.xml";
public static void main(String[] args)
@@ -160,7 +160,7 @@ public static void main(String[] args)
}
/**
- * Mock of a MQTT client factory for the EID-XML "SGr_02_mmmmm_dddd_WagoTestsystem_MQTT.xml".
+ * Mock of a MQTT client factory for the EID-XML "SGr_04_0014_0000_WAGO_Testsystem_MQTT_V1.0.xml".
*/
class MockMessagingClientFactory implements GenMessagingClientFactory
{
diff --git a/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/RestSampleCommunicator.java b/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/RestSampleCommunicator.java
index 34439a0..95da955 100644
--- a/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/RestSampleCommunicator.java
+++ b/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/RestSampleCommunicator.java
@@ -71,7 +71,7 @@ public class RestSampleCommunicator
private static final Logger LOG = LoggerFactory.getLogger(RestSampleCommunicator.class);
/** This example is tied to this EID-XML. */
- private static final String DEVICE_DESCRIPTION_FILE_NAME = "SGr_01_mmmm_dddd_Shelly_TRV_RestAPILocal_V0.1.xml";
+ private static final String DEVICE_DESCRIPTION_FILE_NAME = "SGr_04_mmmm_dddd_Shelly_TRV_RestAPILocal_V0.1.xml";
/** This URI is not important, can have any value. */
private static final String BASE_URI = "https://example.com/";
@@ -158,7 +158,7 @@ public static void main(String[] args)
/**
- * Mock of a REST client for the EID-XML "SGr_01_mmmm_dddd_Shelly_TRV_RestAPILocal_V0.1.xml".
+ * Mock of a REST client for the EID-XML "SGr_04_mmmm_dddd_Shelly_TRV_RestAPILocal_V0.1.xml".
*/
class RestClientFactory implements GenHttpClientFactory
{
diff --git a/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/WagoSmartMeterCommunicator.java b/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/WagoSmartMeterCommunicator.java
index ac9c324..fe3fc4f 100644
--- a/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/WagoSmartMeterCommunicator.java
+++ b/SampleCommunicator/src/main/java/com/smartgridready/communicator/example/WagoSmartMeterCommunicator.java
@@ -30,6 +30,7 @@
/**
* This class provides an example on how to communicate with a WAGO smart meter over Modbus RTU (RS-485),
* using the current SmartGridready commhandler library.
+ * Supports products of the WAGO 879-3xxx line.
*
* The device is instantiated the new fashioned way, using the device builder. A shared Modbus driver
* registry is used in order to support multiple SGr devices on the same serial connection.
@@ -39,9 +40,10 @@
public class WagoSmartMeterCommunicator
{
private static final Logger LOG = LoggerFactory.getLogger(WagoSmartMeterCommunicator.class);
- private static final String DEVICE_DESCRIPTION_FILE_NAME = "SGr_04_0014_0000_WAGO_SmartMeterV0.2.1.xml";
+ private static final String DEVICE_DESCRIPTION_FILE_NAME = "SGr_00_0014_0000_WAGO_SmartMeter_V0.3.xml";
private static final String SERIAL_PORT_NAME = "COM3";
-
+ private static final String SERIAL_PARITY = "NONE";
+
public static void main(String[] argv)
{
try
@@ -49,6 +51,7 @@ public static void main(String[] argv)
// configuration placeholders to be replaced in EID
final var configProperties = new Properties();
configProperties.setProperty("serial_port", SERIAL_PORT_NAME);
+ configProperties.setProperty("serial_parity", SERIAL_PARITY);
final var device = new SGrDeviceBuilder()
.useSharedModbusRtu(true)
@@ -62,7 +65,7 @@ public static void main(String[] argv)
LOG.info("Device-interface {}", device.getDeviceInfo().getInterfaceType());
// Read the values from all data points and log them
- final var deviceData = device.getDeviceInfo().getValues();
+ final var deviceData = device.getValues();
deviceData.forEach(dataPointValue -> LOG.info(dataPointValue.toString()));
// close transport
diff --git a/SampleCommunicator/src/main/resources/SGr_00_0014_0000_WAGO_SmartMeter_V0.3.xml b/SampleCommunicator/src/main/resources/SGr_00_0014_0000_WAGO_SmartMeter_V0.3.xml
new file mode 100644
index 0000000..74415c8
--- /dev/null
+++ b/SampleCommunicator/src/main/resources/SGr_00_0014_0000_WAGO_SmartMeter_V0.3.xml
@@ -0,0 +1,2955 @@
+
+
+
+ WAGO 879-3xxx
+ WAGO
+ 0
+
+ Draft
+
+
+
+ WAGO Beta Test File
+ 879-3xxx
+ SubMeter
+
+
+
+
+
+ en
+ https://www.wago.com/us/energy-consumption-meter/p/879-3000
+
+
+
+
+
+ de
+ https://www.wago.com/de/stromwandler-spannungsabgriffe/energieverbrauchszaehler/p/879-3000
+
+
+
+
+
+ it
+ https://www.wago.com/it/trasformatori-di-corrente-e-derivatori-di-tensione/misuratore-del-consumo-di-energia/p/879-3000
+
+ SubMeterElectricity
+ true
+ 1.0.0
+ 1.0.0
+ 879-3xxx
+ mains1Phase
+ 4 Watt
+ WAGO/ls
+ m
+
+ 0
+ 3
+ 0
+
+
+
+
+ slave_id
+
+
+
+ 1
+
+ Modbus slave ID.
+ en
+
+
+
+
+ serial_port
+
+
+
+
+ The serial port name when accessed via serial port.
+ en
+
+
+
+
+ serial_baudrate
+
+
+
+ 1200
+
+
+ 2400
+
+
+ 4800
+
+
+ 9600
+
+
+ 19200
+
+
+ 38400
+
+
+ 57600
+
+
+ 115200
+
+
+
+ 9600
+
+ The baudrate when accessed via serial port.
+ en
+
+
+
+
+ serial_databits
+
+
+
+ 8
+
+
+
+ 8
+
+ The number of data bits when accessed via serial port.
+ en
+
+
+
+
+ serial_stopbits
+
+
+
+ 1
+
+
+
+ 1
+
+ The number of stop bits when accessed via serial port.
+ en
+
+
+
+
+ serial_parity
+
+
+
+ EVEN
+
+
+ ODD
+
+
+ NONE
+
+
+
+ EVEN
+
+ The parity when accessed via serial port.
+ en
+
+
+
+
+
+
+ SpecialQualityRequirement
+
+
+
+ METAS
+ NONE
+
+
+ Precision
+
+
+
+ 2.0
+ PERCENT
+
+
+
+
+
+ RTU
+
+ {{slave_id}}
+ {{serial_port}}
+ {{serial_baudrate}}
+ {{serial_databits}}
+ {{serial_parity}}
+ {{serial_stopbits}}
+
+ 1200
+ 2400
+ 4800
+ 9600
+ 19200
+ 38400
+ 57600
+ 115200
+ 8
+ EVEN
+ NONE
+ ODD
+ 1
+
+
+ false
+ BigEndian
+
+
+ 1600
+
+
+
+
+ VoltageAC
+
+ 0
+ Metering
+ VoltageAC
+ m
+
+ 1
+ 0
+ 0
+
+
+
+
+
+ Messung der Spannung
+ Monitoring Funktionsprofil für Stromerzeuger und Stromverbraucher zur Kontrolle der Systemlast und/oder für regeltechnische
+ Zwecke.
+
+
Dieses Funktionsprofil erlaubt sowohl die Messung der Spannung auf einer Phase wie auch auf drei Phasen.
+ Eine der folgenden Varianten muss bei der Implementierung des Funktionsprofiles umgesetzt werden:
+
+
Einphasige Geräte geben die Spannung über die erste Phase an (VoltageACL1_N)
+
3-phasige Geräte in Sternschaltung geben die Spannung pro Phase gegen den Nullleiter an (VoltageACL1_N, VoltageACL2_N, VoltageACL2_N).
+
3-phasige Geräte in Dreiecksschaltung geben die Spannung zwischen den Phasen an (VoltageACL1_L2, VoltageACL1_L3, VoltageACL2_L3).
+
+
+ ]]>
+
+ de
+
+
+
+
+ Voltage measurement
+ Monitoring functional profile for power generators and consumers for reflecting the voltage.
+
+
This functional profile allows measurement of the voltage on a single phase of three phases.
+ One of the following approaches must be applied when implementing the functional profile:
+
+
Single-phase devices use the total voltage with the first data point (VoltageACL1_N)
+
Three-phase devices in star configuration provide the voltage per phase vs. neutral using three data points (VoltageACL1_N, VoltageACL2_N, VoltageACL3_N).
+
Three-phase devices in delta configuration provide the voltage between phases using three data points (VoltageACL1_L2, VoltageACL1_L3, VoltageACL2_L3).
+
+
+ ]]>
+
+ en
+
+
+
+
+
+ VoltageACL1_N
+ R
+
+
+
+ VOLTS
+
+ Erfassung der Spannung zwischen Phase 1 und Nullleiter
+ de
+
+
+ Measurement of the voltage between phase 1 and neutral
+ en
+
+
+
+
+
+
+ 20482
+ HoldRegister
+ 2
+
+
+
+
+ VoltageACL2_N
+ R
+
+
+
+ VOLTS
+
+ Erfassung der Spannung zwischen Phase 2 und Nullleiter
+ de
+
+
+ Measurement of the voltage between phase 2 and neutral
+ en
+
+
+
+
+
+
+ 20484
+ HoldRegister
+ 2
+
+
+
+
+ VoltageACL3_N
+ R
+
+
+
+ VOLTS
+
+ Erfassung der Spannung zwischen Phase 3 und Nullleiter
+ de
+
+
+ Measurement of the voltage between phase 3 and neutral
+ en
+
+
+
+
+
+
+ 20486
+ HoldRegister
+ 2
+
+
+
+
+ VoltageACL1_L2
+ R
+
+
+
+ VOLTS
+
+ Erfassung der Spannung zwischen Phase 1-2
+ de
+
+
+ Measurement of the voltage between phase 1-2
+ en
+
+
+
+
+
+
+ 20530
+ HoldRegister
+ 2
+
+
+
+
+ VoltageACL1_L3
+ R
+
+
+
+ VOLTS
+
+ Erfassung der Spannung zwischen Phase 1-3
+ de
+
+
+ Measurement of the voltage between phase 1-3
+ en
+
+
+
+
+
+
+ 20532
+ HoldRegister
+ 2
+
+
+
+
+ VoltageACL2_L3
+ R
+
+
+
+ VOLTS
+
+ Erfassung der Spannung zwischen Phase 2-3
+ de
+
+
+ Measurement of the voltage between phase 2-3
+ en
+
+
+
+
+
+
+ 20534
+ HoldRegister
+ 2
+
+
+
+
+
+
+ Frequency
+
+ 0
+ Metering
+ Frequency
+ m
+
+ 1
+ 0
+ 0
+
+
+
+
+
+ Messung der Frequenz
+ Monitoring-Funktionsprofil zur Kontrolle der Netzbelastung.
+
+
Abweichungen zur Sollfrequenz sind ein
+ Indikator für die Netzbelastung und können für steuernde und regeltechnische Zwecke verwendet werden.
+ ]]>
+
+ de
+
+
+
+
+ Frequency measurement
+ Monitoring functional profile for reflecting the network load.
+
+
Differences to the nominal frequency indicate the network load and can be used for system control.
+ ]]>
+
+ en
+
+
+
+
+
+ Frequency
+ R
+
+
+
+ HERTZ
+
+ Erfassung des Frequenz
+ de
+
+
+ Frequency measurement
+ en
+
+
+
+
+
+
+ 20488
+ HoldRegister
+ 2
+
+
+
+
+
+
+ CurrentAC
+
+ 0
+ Metering
+ CurrentAC
+ m
+
+ 1
+ 0
+ 0
+
+
+
+
+
+ Messung der Stromstärke
+ Monitoring Funktionsprofil für Stromerzeuger und Stromverbraucher zur Kontrolle der Systemlast und/oder für regeltechnische
+ Zwecke.
+
+
Dieses Funktionsprofil erlaubt sowohl die Messung der Stromstärke auf einer Phase wie auch auf drei Phasen.
+ Eine der folgenden Varianten muss bei der Implementierung des Funktionsprofiles umgesetzt werden:
+
+
Einphasige Geräte geben die Stromstärke über die erste Phase an (CurrentAC1)
+
3-phasige Geräte geben die Stromstärke pro Phase an (CurrentAC1, CurrentAC2, CurrentAC3)
+
+
+
+
Die Implementierung der Messung der Stromstärke auf dem Nulleiter (CurrentACN) ist optional möglich.
+ ]]>
+
+ de
+
+
+
+
+ Current measurement
+ Monitoring functional profile for power generators and consumers for reflecting the current.
+
+
This functional profile allows measurement of the current on a single phase of three phases.
+ One of the following approaches must be applied when implementing the functional profile:
+
+
Single-phase devices use the total current with the first data point (CurrentAC1)
+
Three-phase devices give the current per phase using three data points (ActivePowerACL1, ActivePowerACL2, ActivePowerACL3)
+
+
+
+
The implementation of a data point measuring the current on the neutral conductor is optional (via data point CurrentACN).
+ ]]>
+
+ en
+
+
+
+
+
+ CurrentACL1
+ R
+
+
+
+ AMPERES
+
+ Erfassung des Stromes in Phase 1
+ de
+
+
+ Current measurement of phase 1
+ en
+
+
+
+
+
+
+ 20492
+ HoldRegister
+ 2
+
+
+
+
+ CurrentACL2
+ R
+
+
+
+ AMPERES
+
+ Erfassung des Stromes in Phase 2
+ de
+
+
+ Current measurement of phase 2
+ en
+
+
+
+
+
+
+ 20494
+ HoldRegister
+ 2
+
+
+
+
+ CurrentACL3
+ R
+
+
+
+ AMPERES
+
+ Erfassung des Stromes in Phase 3
+ de
+
+
+ Current measurement of phase 3
+ en
+
+
+
+
+
+
+ 20496
+ HoldRegister
+ 2
+
+
+
+
+
+
+ ActivePowerAC_Net
+
+ 0
+ Metering
+ ActivePowerAC
+ m
+
+ 1
+ 1
+ 0
+
+
+
+
+
+ Messung der Wirkleistung
+ Monitoring-Funktionsprofil für Stromerzeuger und Stromverbraucher zur Messung der Wirkleistung.
+
+
Dieses Funktionsprofil erlaubt sowohl die Messung der Totalleistung wie auch die Leistung der drei
+ einzelnen Phasen. Eine der folgenden Varianten muss bei der Implementierung des Funktionsprofiles
+ umgesetzt werden:
+
+
Einphasige Geräte geben die Totalleistung an (ActivePowerACtot)
+
3-phasige Geräte ohne Totalleistungsmessung geben die Leistung pro Phase an (ActivePowerACL1, ActivePowerACL2, ActivePowerACL3)
+
3-phasige Geräte mit Einzelphasen- und Totalleistungsmessung geben alle Datenpunkte an
+
+
+
+
Das generische Attribut MeteringDirection gibt die Messrichtung an:
+
+
Net ist ein bilanzierter Wert (Standard), positiv (Bezug) oder negativ (Einspeisung)
+
Import ist der Bezug vom Verteilnetz, positiv
+
Export ist die Einspeisung ins Verteilnetz, positiv
+
+
+
+
Das generische Attribut MeteringTariffNr gibt die Nummer des Tarifregisters an.
+ Der Wert 0 bedeutet tariflos bzw. gesamt, ein positiver Wert ist ein spezifisches Tarifregister.
+
+ ]]>
+
+ de
+
+
+
+
+ Active Power Measurement
+ Monitoring functional profile for power generators and consumers for measuring the active power.
+
+
With this functional profile you can measure the total active power as well as the active power of
+ the three individual phases. One of the following options must be implemented for fulfilling the functional profile:
+
+
Single-phase devices use the total active power data point (ActivePowerACtot)
+
Three-phase devices without measurement of the total active power use the data points per phase (ActivePowerACL1, ActivePowerACL2, ActivePowerACL3)
+
Three-phase devices with measurement of the total active power use all data points
+
+
+
+
The generic attribute MeteringDirection defines the direction of measurement:
+
+
Net is a net value (default), positive (import) or negative (export)
+
Import is the import from grid, a positive value
+
Export is the export to grid, a positive value
+
+
+
+
The generic attribute MeteringTariffNr defines the tariff register number.
+ A value of 0 means tariff-less or total, a positive number a specific tariff register.
+
+ ]]>
+
+ en
+
+
+
+
+ MeteringDirection
+
+
+
+ Net
+ Net or balance value
+
+
+ Import
+ Import from grid
+
+
+ Export
+ Export to grid
+
+
+
+ Net
+ NONE
+
+
+ MeteringTariffNr
+
+
+
+ 0
+ NONE
+
+
+
+
+
+ ActivePowerACtot
+ R
+
+
+
+ KILOWATTS
+
+ Erfassung der gesamten Wirkleistung
+ de
+
+
+ Total active power measurement
+ en
+
+
+
+
+
+
+ 20498
+ HoldRegister
+ 2
+
+
+
+
+ ActivePowerACL1
+ R
+
+
+
+ KILOWATTS
+
+ Erfassung der Wirkleistung Phase 1
+ de
+
+
+ Active power measurement of phase 1
+ en
+
+
+
+
+
+
+ 20500
+ HoldRegister
+ 2
+
+
+
+
+ ActivePowerACL2
+ R
+
+
+
+ KILOWATTS
+
+ Erfassung der Wirkleistung Phase 2
+ de
+
+
+ Active power measurement of phase 2
+ en
+
+
+
+
+
+
+ 20502
+ HoldRegister
+ 2
+
+
+
+
+ ActivePowerACL3
+ R
+
+
+
+ KILOWATTS
+
+ Erfassung der Wirkleistung Phase 3
+ de
+
+
+ Active power measurement of phase 3
+ en
+
+
+
+
+
+
+ 20504
+ HoldRegister
+ 2
+
+
+
+
+
+
+ ReactivePowerAC_Net
+
+ 0
+ Metering
+ ReactivePowerAC
+ m
+
+ 1
+ 1
+ 0
+
+
+
+
+
+ Messung der Blindleistung
+ Monitoring-Funktionsprofil für Stromerzeuger und Stromverbraucher zur Messung der Blindleistung im Wechselstromnetz, für
+ regeltechnische Zwecke und/oder zur Überwachung von regulatorischen Vorgaben bei Leistungstarifen.
+
+
Dieses Funktionsprofil erlaubt sowohl die Messung der Gesamtblindleistung wie auch die Blindleistung der drei
+ einzelnen Phasen. Eine der folgenden Varianten muss bei der Implementierung des Funktionsprofiles
+ umgesetzt werden:
+
+
Einphasige Geräte geben die Gesamtblindleistung an (ReactivePowerACtot)
+
3-phasige Geräte ohne Gesamtblindleistungsmessung geben die Blindleistung pro Phase an (ReactivePowerACL1, ReactivePowerACL2, ReactivePowerACL3)
+
3-phasige Geräte mit Einzelphasen- und Gesamtblindleistungsmessung geben alle Datenpunkte an
+
+
+
+
Das generische Attribut MeteringDirection gibt die Messrichtung an:
+
+
Net ist ein bilanzierter Wert (Standard), positiv (Bezug) oder negativ (Einspeisung)
+
Import ist der Bezug vom Verteilnetz, positiv
+
Export ist die Einspeisung ins Verteilnetz, positiv
+
+
+
+
Das generische Attribut MeteringTariffNr gibt die Nummer des Tarifregisters an.
+ Der Wert 0 bedeutet tariflos bzw. gesamt, ein positiver Wert ist ein spezifisches Tarifregister.
+
+ ]]>
+
+ de
+
+
+
+
+ Reactive Power Measurement
+ Monitoring functional profile for power generators and consumers for reflecting the reactive power.
+
+
With this functional profile you can measure the total active power as well as the active power of the three individual phases.
+ One of the following options must be implemented for fulfilling the functional profile:
+
+
Single-phase devices use the total reactive power data point (ReactivePowerACtot)
+
Three-phase devices without measurement of the total reactive power use the data points per phase (ReactivePowerACL1, ReactivePowerACL2, ReactivePowerACL3)
+
Three-phase devices with measurement of the total reactive power use all data points
+
+
+
+
The generic attribute MeteringDirection defines the direction of measurement:
+
+
Net is a net value (default), positive (import) or negative (export)
+
Import is the import from grid, a positive value
+
Export is the export to grid, a positive value
+
+
+
+
The generic attribute MeteringTariffNr defines the tariff register number.
+ A value of 0 means tariff-less or total, a positive number a specific tariff register.
+
+ ]]>
+
+ en
+
+
+
+
+ MeteringDirection
+
+
+
+ Net
+ Net or balance value
+
+
+ Import
+ Import from grid
+
+
+ Export
+ Export to grid
+
+
+
+ Net
+ NONE
+
+
+ MeteringTariffNr
+
+
+
+ 0
+ NONE
+
+
+
+
+
+ ReactivePowerACtot
+ R
+
+
+
+ KILOVOLT_AMPERES_REACTIVE
+
+ Erfassung der gesamten Blindleistung
+ de
+
+
+ Total reactive power measurement
+ en
+
+
+
+
+
+
+ 20506
+ HoldRegister
+ 2
+
+
+
+
+ ReactivePowerACL1
+ R
+
+
+
+ KILOVOLT_AMPERES_REACTIVE
+
+ Erfassung der Blindleistung Phase 1
+ de
+
+
+ Reactive power measurement of phase 1
+ en
+
+
+
+
+
+
+ 20508
+ HoldRegister
+ 2
+
+
+
+
+ ReactivePowerACL2
+ R
+
+
+
+ KILOVOLT_AMPERES_REACTIVE
+
+ Erfassung der Blindleistung Phase 2
+ de
+
+
+ Reactive power measurement of phase 2
+ en
+
+
+
+
+
+
+ 20510
+ HoldRegister
+ 2
+
+
+
+
+ ReactivePowerACL3
+ R
+
+
+
+ KILOVOLT_AMPERES_REACTIVE
+
+ Erfassung der Blindleistung Phase 3
+ de
+
+
+ Reactive power measurement of phase 3
+ en
+
+
+
+
+
+
+ 20512
+ HoldRegister
+ 2
+
+
+
+
+
+
+ ApparentPowerAC_Net
+
+ 0
+ Metering
+ ApparentPowerAC
+ m
+
+ 1
+ 1
+ 0
+
+
+
+
+
+ Die Messung der Scheinleistung erfolgt zur Messung Scheinleistung im Wechselstromnetz, für regeltechnische Zwecke.
+
+ Je nach Optimierungsanwendung muss diese Erfassung zuverlässig im Takt von 10 Mal/Sekunde bis zum Minutentakt erfolgen.
+ Bei der Einführung von Leistungstarifen müssen für diese Messung auch regulatorische Vorgaben
+ beachtet werden. Typische Nachbarprofile sind Controller oder Datenlogger.
+
+
Das generische Attribut MeteringDirection gibt die Messrichtung an:
+
+
Net ist ein bilanzierter Wert (Standard), positiv (Bezug) oder negativ (Einspeisung)
+
Import ist der Bezug vom Verteilnetz, positiv
+
Export ist die Einspeisung ins Verteilnetz, positiv
+
+
+
+
Das generische Attribut MeteringTariffNr gibt die Nummer des Tarifregisters an.
+ Der Wert 0 bedeutet tariflos bzw. gesamt, ein positiver Wert ist ein spezifisches Tarifregister.
+
+ ]]>
+
+ de
+
+
+
+
+ Measurement of the apparent power is performed to measure the apparent power in the AC grid, for regulation purposes.
+
+ Depending on the optimization application, a measurement interval of 10 times/second up to once a minute is required.
+ After introduction of demand tariffs regulatory standards have to be followed.
+ Typical neighboring profiles are communicator or data logger.
+
+
The generic attribute MeteringDirection defines the direction of measurement:
+
+
Net is a net value (default), positive (import) or negative (export)
+
Import is the import from grid, a positive value
+
Export is the export to grid, a positive value
+
+
+
+
The generic attribute MeteringTariffNr defines the tariff register number.
+ A value of 0 means tariff-less or total, a positive number a specific tariff register.
+
+ ]]>
+
+ en
+
+
+
+
+ MeteringDirection
+
+
+
+ Net
+ Net or balance value
+
+
+ Import
+ Import from grid
+
+
+ Export
+ Export to grid
+
+
+
+ Net
+ NONE
+
+
+ MeteringTariffNr
+
+
+
+ 0
+ NONE
+
+
+
+
+
+ ApparentPowerACtot
+ R
+
+
+
+ KILOVOLT_AMPERES_REACTIVE
+
+ Erfassung der gesamten Scheinleistung
+ de
+
+
+ Measurement of the total apparent power
+ en
+
+
+
+
+
+
+ 20514
+ HoldRegister
+ 2
+
+
+
+
+ ApparentPowerACL1
+ R
+
+
+
+ KILOVOLT_AMPERES_REACTIVE
+
+ Erfassung der Scheinleistung in Phase 1
+ de
+
+
+ Measurement of the apparent power in phase 1
+ en
+
+
+
+
+
+
+ 20516
+ HoldRegister
+ 2
+
+
+
+
+ ApparentPowerACL2
+ R
+
+
+
+ KILOVOLT_AMPERES_REACTIVE
+
+ Erfassung der Scheinleistung in Phase 2
+ de
+
+
+ Measurement of the apparent power in phase 2
+ en
+
+
+
+
+
+
+ 20518
+ HoldRegister
+ 2
+
+
+
+
+ ApparentPowerACL3
+ R
+
+
+
+ KILOVOLT_AMPERES_REACTIVE
+
+ Erfassung der Scheinleistung Phase 3
+ de
+
+
+ Measurement of the apparent power in phase 3
+ en
+
+
+
+
+
+
+ 20520
+ HoldRegister
+ 2
+
+
+
+
+
+
+ PowerFactor
+
+ 0
+ Metering
+ PowerFactor
+ m
+
+ 1
+ 0
+ 0
+
+
+
+
+
+ Der PowerFactor entspricht der Division der Wirkleistung durch die Scheinleistung.
+ Er ist nicht zu verwechseln mit dem Klirrfaktor, welcher den Oberwellenanteil misst. In einem overwellenfreien System entspricht der Power Faktor
+ genau arccos(phi) und wird mit zunehmenden Oberwellen schlechter.
+ ]]>
+
+ de
+
+
+
+
+ The power factor is the active power divided by the apparent power.
+ It is not to be confused with the distortion factor, which measures the harmonics ratio. In a system with no harmonics the power factor
+ is equal to arccos(phi) and gets worse with increasing harmonics.
+ ]]>
+
+ en
+
+
+
+
+
+ PowerFactorACtot
+ R
+
+
+
+ PERCENT
+ 100
+
+ Erfassung des gesamten Power Factors
+ de
+
+
+ Measurement of the total power factor
+ en
+
+
+
+
+
+
+ 20522
+ HoldRegister
+ 2
+
+
+
+
+ PowerFactorACL1
+ R
+
+
+
+ PERCENT
+ 100
+
+ Erfassung des Power Factors in Phase 1
+ de
+
+
+ Measurement of the power factor in phase 1
+ en
+
+
+
+
+
+
+ 20524
+ HoldRegister
+ 2
+
+
+
+
+ PowerFactorACL2
+ R
+
+
+
+ PERCENT
+ 100
+
+ Erfassung des Power Factors in Phase 2
+ de
+
+
+ Measurement of the power factor in phase 2
+ en
+
+
+
+
+
+
+ 20526
+ HoldRegister
+ 2
+
+
+
+
+ PowerFactorACL3
+ R
+
+
+
+ PERCENT
+ 100
+
+ Erfassung des Power Factors in Phase 3
+ de
+
+
+ Measurement of the power factor in phase 3
+ en
+
+
+
+
+
+
+ 20528
+ HoldRegister
+ 2
+
+
+
+
+
+
+ ActiveEnergyAC_Net
+
+ 0
+ Metering
+ ActiveEnergyAC
+ m
+
+ 1
+ 1
+ 0
+
+
+
+
+
+ Energy measurement
+ Monitoring functional profile for power generators and consumers for measuring the active energy.
+
+
Data is typically recorded by an energy manager (or a billing software).
+
+
With this functional profile you can measure the total energy as well as the energy of the three
+ individual phases. One of the following options must be implemented for fulfilling the functional profile:
+
+
Single-phase devices use the total energy data point (ActiveEnergyACtot)
+
Three-phase devices without measurement of the total energy use the data points per (ActiveEnergyACL1, ActiveEnergyACL2, ActiveEnergyACL3)
+
Three-phase devices with measurement of the total energy all data points
+
+
+
+
The generic attribute MeteringDirection defines the direction of measurement:
+
+
Net is a net value (default), positive (import) or negative (export)
+
Import is the import from grid, a positive value
+
Export is the export to grid, a positive value
+
+
+
+
The generic attribute MeteringTariffNr defines the tariff register number.
+ A value of 0 means tariff-less or total, a positive number a specific tariff register.
+
+ ]]>
+
+ en
+
+
+
+
+ Messung der Wirkenergie
+ Monitoring-Funktionsprofil für Stromerzeuger und Stromverbraucher zur Messung der Wirkenergie.
+
+
Die Datenaufnahme erfolgt typischerweise durch einen Energiemanager (oder eine Abrechnungssoftware).
+
+
Dieses Funktionsprofil erlaubt sowohl die Messung der Gesamtenergie wie auch die Messung der Energie
+ der drei einzelnen Phasen. Eine der folgenden Varianten muss bei der Implementierung des Funktionsprofiles
+ umgesetzt werden:
+
+
1-phasige Geräte geben die Gesamtenergie an (ActiveEnergyACtot)
+
3-phasige Geräte ohne Gesamtenergiemessung geben die Energiemenge pro Phase an (ActiveEnergyACL1, ActiveEnergyACL2, ActiveEnergyACL3)
+
3-phasige Geräte mit Einzelphasen- und Gesamtenergiemessung geben alle Datenpunkte an
+
+
+
+
Das generische Attribut MeteringDirection gibt die Messrichtung an:
+
+
Net ist ein bilanzierter Wert (Standard), positiv (Bezug) oder negativ (Einspeisung)
+
Import ist der Bezug vom Verteilnetz, positiv
+
Export ist die Einspeisung ins Verteilnetz, positiv
+
+
+
+
Das generische Attribut MeteringTariffNr gibt die Nummer des Tarifregisters an.
+ Der Wert 0 bedeutet tariflos bzw. gesamt, ein positiver Wert ist ein spezifisches Tarifregister.
+
+ ]]>
+
+ de
+
+
+
+
+ MeteringDirection
+
+
+
+ Net
+ Net or balance value
+
+
+ Import
+ Import from grid
+
+
+ Export
+ Export to grid
+
+
+
+ Net
+ NONE
+
+
+ MeteringTariffNr
+
+
+
+ 0
+ NONE
+
+
+
+
+
+ ActiveEnergyACtot
+ R
+
+
+
+ KILOWATT_HOURS
+
+ Total energy measurement
+ en
+
+
+ Erfassung der gesamten Wirkenergie
+ de
+
+
+
+
+
+
+ 24576
+ HoldRegister
+ 2
+
+
+
+
+ ActiveEnergyACL1
+ R
+
+
+
+ KILOWATT_HOURS
+
+ Energy measurement of phase 1
+ en
+
+
+ Erfassung der Wirkenergie Phase 1
+ de
+
+
+
+
+
+
+ 24582
+ HoldRegister
+ 2
+
+
+
+
+ ActiveEnergyACL2
+ R
+
+
+
+ KILOWATT_HOURS
+
+ Energy measurement of phase 2
+ en
+
+
+ Erfassung der Wirkenergie Phase 2
+ de
+
+
+
+
+
+
+ 24584
+ HoldRegister
+ 2
+
+
+
+
+ ActiveEnergyACL3
+ R
+
+
+
+ KILOWATT_HOURS
+
+ Energy measurement of phase 3
+ en
+
+
+ Erfassung der Wirkenergie Phase 3
+ de
+
+
+
+
+
+
+ 24586
+ HoldRegister
+ 2
+
+
+
+
+
+
+ ReactiveEnergyAC_Net
+
+ 0
+ Metering
+ ReactiveEnergyAC
+ m
+
+ 1
+ 1
+ 0
+
+
+
+
+
+ Messung der Blindenergie: Die Datenaufnahme erfolgt typischerweise periodisch durch das EMS (oder eine Abrechnungssoftware), welche Messwerte aufnimmt und mit dem Zeitwert ergänzt.
+ Auch auf Seite der Netzbetreiber oder Aggregatoren braucht ein Energiewert zu Bilanzierungszwecken immer den Zeitstempel. Typische Nachbarprofile sind Communicator.
+
+
Das generische Attribut MeteringDirection gibt die Messrichtung an:
+
+
Net ist ein bilanzierter Wert (Standard), positiv (Bezug) oder negativ (Einspeisung)
+
Import ist der Bezug vom Verteilnetz, positiv
+
Export ist die Einspeisung ins Verteilnetz, positiv
+
+
+
+
Das generische Attribut MeteringTariffNr gibt die Nummer des Tarifregisters an.
+ Der Wert 0 bedeutet tariflos bzw. gesamt, ein positiver Wert ist ein spezifisches Tarifregister.
+
+ ]]>
+
+ de
+
+
+
+
+ Measurement of reactive energy: Data acquisition is performed periodically by the EMS (or a billing software), which collects measurements and adds a time stamp.
+ An energy measurement needs a time stamp for balance purposes, even on the grid provider or aggregator side. Typical neighboring profiles are communicator.
+
+
The generic attribute MeteringDirection defines the direction of measurement:
+
+
Net is a net value (default), positive (import) or negative (export)
+
Import is the import from grid, a positive value
+
Export is the export to grid, a positive value
+
+
+
+
The generic attribute MeteringTariffNr defines the tariff register number.
+ A value of 0 means tariff-less or total, a positive number a specific tariff register.
+
+ ]]>
+
+ en
+
+
+
+
+ MeteringDirection
+
+
+
+ Net
+ Net or balance value
+
+
+ Import
+ Import from grid
+
+
+ Export
+ Export to grid
+
+
+
+ Net
+ NONE
+
+
+ MeteringTariffNr
+
+
+
+ 0
+ NONE
+
+
+
+
+
+ ReactiveEnergyACtot
+ R
+
+
+
+ KILOVOLT_AMPERES_REACTIVE_HOURS
+
+ Erfassung der gesamten Blindenergie
+ de
+
+
+ Measurement of the total reactive energy
+ en
+
+
+
+
+
+
+ 24612
+ HoldRegister
+ 2
+
+
+
+
+ ReactiveEnergyACL1
+ R
+
+
+
+ KILOVOLT_AMPERES_REACTIVE_HOURS
+
+ Erfassung der Blindenergie in Phase 1
+ de
+
+
+ Measurement of the reactive energy in phase 1
+ en
+
+
+
+
+
+
+ 24618
+ HoldRegister
+ 2
+
+
+
+
+ ReactiveEnergyACL2
+ R
+
+
+
+ KILOVOLT_AMPERES_REACTIVE_HOURS
+
+ Erfassung der Blindenergie in Phase 2
+ de
+
+
+ Measurement of the reactive energy in phase 2
+ en
+
+
+
+
+
+
+ 24620
+ HoldRegister
+ 2
+
+
+
+
+ ReactiveEnergyACL3
+ R
+
+
+
+ KILOVOLT_AMPERES_REACTIVE_HOURS
+
+ Erfassung der Blindenergie in Phase 3
+ de
+
+
+ Measurement of the reactive energy in phase 3
+ en
+
+
+
+
+
+
+ 24622
+ HoldRegister
+ 2
+
+
+
+
+
+
+ ActiveEnergyAC_Import
+
+ 0
+ Metering
+ ActiveEnergyAC
+ m
+
+ 1
+ 1
+ 0
+
+
+
+
+
+ Energy measurement
+ Monitoring functional profile for power generators and consumers for measuring the active energy.
+
+
Data is typically recorded by an energy manager (or a billing software).
+
+
With this functional profile you can measure the total energy as well as the energy of the three
+ individual phases. One of the following options must be implemented for fulfilling the functional profile:
+
+
Single-phase devices use the total energy data point (ActiveEnergyACtot)
+
Three-phase devices without measurement of the total energy use the data points per (ActiveEnergyACL1, ActiveEnergyACL2, ActiveEnergyACL3)
+
Three-phase devices with measurement of the total energy all data points
+
+
+
+
The generic attribute MeteringDirection defines the direction of measurement:
+
+
Net is a net value (default), positive (import) or negative (export)
+
Import is the import from grid, a positive value
+
Export is the export to grid, a positive value
+
+
+
+
The generic attribute MeteringTariffNr defines the tariff register number.
+ A value of 0 means tariff-less or total, a positive number a specific tariff register.
+
+ ]]>
+
+ en
+
+
+
+
+ Messung der Wirkenergie
+ Monitoring-Funktionsprofil für Stromerzeuger und Stromverbraucher zur Messung der Wirkenergie.
+
+
Die Datenaufnahme erfolgt typischerweise durch einen Energiemanager (oder eine Abrechnungssoftware).
+
+
Dieses Funktionsprofil erlaubt sowohl die Messung der Gesamtenergie wie auch die Messung der Energie
+ der drei einzelnen Phasen. Eine der folgenden Varianten muss bei der Implementierung des Funktionsprofiles
+ umgesetzt werden:
+
+
1-phasige Geräte geben die Gesamtenergie an (ActiveEnergyACtot)
+
3-phasige Geräte ohne Gesamtenergiemessung geben die Energiemenge pro Phase an (ActiveEnergyACL1, ActiveEnergyACL2, ActiveEnergyACL3)
+
3-phasige Geräte mit Einzelphasen- und Gesamtenergiemessung geben alle Datenpunkte an
+
+
+
+
Das generische Attribut MeteringDirection gibt die Messrichtung an:
+
+
Net ist ein bilanzierter Wert (Standard), positiv (Bezug) oder negativ (Einspeisung)
+
Import ist der Bezug vom Verteilnetz, positiv
+
Export ist die Einspeisung ins Verteilnetz, positiv
+
+
+
+
Das generische Attribut MeteringTariffNr gibt die Nummer des Tarifregisters an.
+ Der Wert 0 bedeutet tariflos bzw. gesamt, ein positiver Wert ist ein spezifisches Tarifregister.
+
+ ]]>
+
+ de
+
+
+
+
+ MeteringDirection
+
+
+
+ Net
+ Net or balance value
+
+
+ Import
+ Import from grid
+
+
+ Export
+ Export to grid
+
+
+
+ Import
+ NONE
+
+
+ MeteringTariffNr
+
+
+
+ 0
+ NONE
+
+
+
+
+
+ ActiveEnergyACtot
+ R
+
+
+
+ KILOWATT_HOURS
+
+ Total energy measurement
+ en
+
+
+ Erfassung der gesamten Wirkenergie
+ de
+
+
+
+
+
+
+ 24588
+ HoldRegister
+ 2
+
+
+
+
+ ActiveEnergyACL1
+ R
+
+
+
+ KILOWATT_HOURS
+
+ Energy measurement of phase 1
+ en
+
+
+ Erfassung der Wirkenergie Phase 1
+ de
+
+
+
+
+
+
+ 24594
+ HoldRegister
+ 2
+
+
+
+
+ ActiveEnergyACL2
+ R
+
+
+
+ KILOWATT_HOURS
+
+ Energy measurement of phase 2
+ en
+
+
+ Erfassung der Wirkenergie Phase 2
+ de
+
+
+
+
+
+
+ 24596
+ HoldRegister
+ 2
+
+
+
+
+ ActiveEnergyACL3
+ R
+
+
+
+ KILOWATT_HOURS
+
+ Energy measurement of phase 3
+ en
+
+
+ Erfassung der Wirkenergie Phase 3
+ de
+
+
+
+
+
+
+ 24598
+ HoldRegister
+ 2
+
+
+
+
+
+
+ ReactiveEnergyAC_Import
+
+ 0
+ Metering
+ ReactiveEnergyAC
+ m
+
+ 1
+ 1
+ 0
+
+
+
+
+
+ Messung der Blindenergie: Die Datenaufnahme erfolgt typischerweise periodisch durch das EMS (oder eine Abrechnungssoftware), welche Messwerte aufnimmt und mit dem Zeitwert ergänzt.
+ Auch auf Seite der Netzbetreiber oder Aggregatoren braucht ein Energiewert zu Bilanzierungszwecken immer den Zeitstempel. Typische Nachbarprofile sind Communicator.
+
+
Das generische Attribut MeteringDirection gibt die Messrichtung an:
+
+
Net ist ein bilanzierter Wert (Standard), positiv (Bezug) oder negativ (Einspeisung)
+
Import ist der Bezug vom Verteilnetz, positiv
+
Export ist die Einspeisung ins Verteilnetz, positiv
+
+
+
+
Das generische Attribut MeteringTariffNr gibt die Nummer des Tarifregisters an.
+ Der Wert 0 bedeutet tariflos bzw. gesamt, ein positiver Wert ist ein spezifisches Tarifregister.
+
+ ]]>
+
+ de
+
+
+
+
+ Measurement of reactive energy: Data acquisition is performed periodically by the EMS (or a billing software), which collects measurements and adds a time stamp.
+ An energy measurement needs a time stamp for balance purposes, even on the grid provider or aggregator side. Typical neighboring profiles are communicator.
+
+
The generic attribute MeteringDirection defines the direction of measurement:
+
+
Net is a net value (default), positive (import) or negative (export)
+
Import is the import from grid, a positive value
+
Export is the export to grid, a positive value
+
+
+
+
The generic attribute MeteringTariffNr defines the tariff register number.
+ A value of 0 means tariff-less or total, a positive number a specific tariff register.
+
+ ]]>
+
+ en
+
+
+
+
+ MeteringDirection
+
+
+
+ Net
+ Net or balance value
+
+
+ Import
+ Import from grid
+
+
+ Export
+ Export to grid
+
+
+
+ Import
+ NONE
+
+
+ MeteringTariffNr
+
+
+
+ 0
+ NONE
+
+
+
+
+
+ ReactiveEnergyACtot
+ R
+
+
+
+ KILOVOLT_AMPERES_REACTIVE_HOURS
+
+ Erfassung der gesamten Blindenergie
+ de
+
+
+ Measurement of the total reactive energy
+ en
+
+
+
+
+
+
+ 24624
+ HoldRegister
+ 2
+
+
+
+
+ ReactiveEnergyACL1
+ R
+
+
+
+ KILOVOLT_AMPERES_REACTIVE_HOURS
+
+ Erfassung der Blindenergie in Phase 1
+ de
+
+
+ Measurement of the reactive energy in phase 1
+ en
+
+
+
+
+
+
+ 24630
+ HoldRegister
+ 2
+
+
+
+
+ ReactiveEnergyACL2
+ R
+
+
+
+ KILOVOLT_AMPERES_REACTIVE_HOURS
+
+ Erfassung der Blindenergie in Phase 2
+ de
+
+
+ Measurement of the reactive energy in phase 2
+ en
+
+
+
+
+
+
+ 24632
+ HoldRegister
+ 2
+
+
+
+
+ ReactiveEnergyACL3
+ R
+
+
+
+ KILOVOLT_AMPERES_REACTIVE_HOURS
+
+ Erfassung der Blindenergie in Phase 3
+ de
+
+
+ Measurement of the reactive energy in phase 3
+ en
+
+
+
+
+
+
+ 24634
+ HoldRegister
+ 2
+
+
+
+
+
+
+ ActiveEnergyAC_Export
+
+ 0
+ Metering
+ ActiveEnergyAC
+ m
+
+ 1
+ 1
+ 0
+
+
+
+
+
+ Energy measurement
+ Monitoring functional profile for power generators and consumers for measuring the active energy.
+
+
Data is typically recorded by an energy manager (or a billing software).
+
+
With this functional profile you can measure the total energy as well as the energy of the three
+ individual phases. One of the following options must be implemented for fulfilling the functional profile:
+
+
Single-phase devices use the total energy data point (ActiveEnergyACtot)
+
Three-phase devices without measurement of the total energy use the data points per (ActiveEnergyACL1, ActiveEnergyACL2, ActiveEnergyACL3)
+
Three-phase devices with measurement of the total energy all data points
+
+
+
+
The generic attribute MeteringDirection defines the direction of measurement:
+
+
Net is a net value (default), positive (import) or negative (export)
+
Import is the import from grid, a positive value
+
Export is the export to grid, a positive value
+
+
+
+
The generic attribute MeteringTariffNr defines the tariff register number.
+ A value of 0 means tariff-less or total, a positive number a specific tariff register.
+
+ ]]>
+
+ en
+
+
+
+
+ Messung der Wirkenergie
+ Monitoring-Funktionsprofil für Stromerzeuger und Stromverbraucher zur Messung der Wirkenergie.
+
+
Die Datenaufnahme erfolgt typischerweise durch einen Energiemanager (oder eine Abrechnungssoftware).
+
+
Dieses Funktionsprofil erlaubt sowohl die Messung der Gesamtenergie wie auch die Messung der Energie
+ der drei einzelnen Phasen. Eine der folgenden Varianten muss bei der Implementierung des Funktionsprofiles
+ umgesetzt werden:
+
+
1-phasige Geräte geben die Gesamtenergie an (ActiveEnergyACtot)
+
3-phasige Geräte ohne Gesamtenergiemessung geben die Energiemenge pro Phase an (ActiveEnergyACL1, ActiveEnergyACL2, ActiveEnergyACL3)
+
3-phasige Geräte mit Einzelphasen- und Gesamtenergiemessung geben alle Datenpunkte an
+
+
+
+
Das generische Attribut MeteringDirection gibt die Messrichtung an:
+
+
Net ist ein bilanzierter Wert (Standard), positiv (Bezug) oder negativ (Einspeisung)
+
Import ist der Bezug vom Verteilnetz, positiv
+
Export ist die Einspeisung ins Verteilnetz, positiv
+
+
+
+
Das generische Attribut MeteringTariffNr gibt die Nummer des Tarifregisters an.
+ Der Wert 0 bedeutet tariflos bzw. gesamt, ein positiver Wert ist ein spezifisches Tarifregister.
+
+ ]]>
+
+ de
+
+
+
+
+ MeteringDirection
+
+
+
+ Net
+ Net or balance value
+
+
+ Import
+ Import from grid
+
+
+ Export
+ Export to grid
+
+
+
+ Export
+ NONE
+
+
+ MeteringTariffNr
+
+
+
+ 0
+ NONE
+
+
+
+
+
+ ActiveEnergyACtot
+ R
+
+
+
+ KILOWATT_HOURS
+
+ Total energy measurement
+ en
+
+
+ Erfassung der gesamten Wirkenergie
+ de
+
+
+
+
+
+
+ 24600
+ HoldRegister
+ 2
+
+
+
+
+ ActiveEnergyACL1
+ R
+
+
+
+ KILOWATT_HOURS
+
+ Energy measurement of phase 1
+ en
+
+
+ Erfassung der Wirkenergie Phase 1
+ de
+
+
+
+
+
+
+ 24606
+ HoldRegister
+ 2
+
+
+
+
+ ActiveEnergyACL2
+ R
+
+
+
+ KILOWATT_HOURS
+
+ Energy measurement of phase 2
+ en
+
+
+ Erfassung der Wirkenergie Phase 2
+ de
+
+
+
+
+
+
+ 24608
+ HoldRegister
+ 2
+
+
+
+
+ ActiveEnergyACL3
+ R
+
+
+
+ KILOWATT_HOURS
+
+ Energy measurement of phase 3
+ en
+
+
+ Erfassung der Wirkenergie Phase 3
+ de
+
+
+
+
+
+
+ 24610
+ HoldRegister
+ 2
+
+
+
+
+
+
+ ReactiveEnergyAC_Export
+
+ 0
+ Metering
+ ReactiveEnergyAC
+ m
+
+ 1
+ 1
+ 0
+
+
+
+
+
+ Messung der Blindenergie: Die Datenaufnahme erfolgt typischerweise periodisch durch das EMS (oder eine Abrechnungssoftware), welche Messwerte aufnimmt und mit dem Zeitwert ergänzt.
+ Auch auf Seite der Netzbetreiber oder Aggregatoren braucht ein Energiewert zu Bilanzierungszwecken immer den Zeitstempel. Typische Nachbarprofile sind Communicator.
+
+
Das generische Attribut MeteringDirection gibt die Messrichtung an:
+
+
Net ist ein bilanzierter Wert (Standard), positiv (Bezug) oder negativ (Einspeisung)
+
Import ist der Bezug vom Verteilnetz, positiv
+
Export ist die Einspeisung ins Verteilnetz, positiv
+
+
+
+
Das generische Attribut MeteringTariffNr gibt die Nummer des Tarifregisters an.
+ Der Wert 0 bedeutet tariflos bzw. gesamt, ein positiver Wert ist ein spezifisches Tarifregister.
+
+ ]]>
+
+ de
+
+
+
+
+ Measurement of reactive energy: Data acquisition is performed periodically by the EMS (or a billing software), which collects measurements and adds a time stamp.
+ An energy measurement needs a time stamp for balance purposes, even on the grid provider or aggregator side. Typical neighboring profiles are communicator.
+
+
The generic attribute MeteringDirection defines the direction of measurement:
+
+
Net is a net value (default), positive (import) or negative (export)
+
Import is the import from grid, a positive value
+
Export is the export to grid, a positive value
+
+
+
+
The generic attribute MeteringTariffNr defines the tariff register number.
+ A value of 0 means tariff-less or total, a positive number a specific tariff register.
+
+ ]]>
+
+ en
+
+
+
+
+ MeteringDirection
+
+
+
+ Net
+ Net or balance value
+
+
+ Import
+ Import from grid
+
+
+ Export
+ Export to grid
+
+
+
+ Export
+ NONE
+
+
+ MeteringTariffNr
+
+
+
+ 0
+ NONE
+
+
+
+
+
+ ReactiveEnergyACtot
+ R
+
+
+
+ KILOVOLT_AMPERES_REACTIVE_HOURS
+
+ Erfassung der gesamten Blindenergie
+ de
+
+
+ Measurement of the total reactive energy
+ en
+
+
+
+
+
+
+ 24636
+ HoldRegister
+ 2
+
+
+
+
+ ReactiveEnergyACL1
+ R
+
+
+
+ KILOVOLT_AMPERES_REACTIVE_HOURS
+
+ Erfassung der Blindenergie in Phase 1
+ de
+
+
+ Measurement of the reactive energy in phase 1
+ en
+
+
+
+
+
+
+ 24642
+ HoldRegister
+ 2
+
+
+
+
+ ReactiveEnergyACL2
+ R
+
+
+
+ KILOVOLT_AMPERES_REACTIVE_HOURS
+
+ Erfassung der Blindenergie in Phase 2
+ de
+
+
+ Measurement of the reactive energy in phase 2
+ en
+
+
+
+
+
+
+ 24644
+ HoldRegister
+ 2
+
+
+
+
+ ReactiveEnergyACL3
+ R
+
+
+
+ KILOVOLT_AMPERES_REACTIVE_HOURS
+
+ Erfassung der Blindenergie in Phase 3
+ de
+
+
+ Measurement of the reactive energy in phase 3
+ en
+
+
+
+
+
+
+ 24646
+ HoldRegister
+ 2
+
+
+
+
+
+
+ PowerQuadrant
+
+ 0
+ Metering
+ PowerQuadrant
+ m
+
+ 1
+ 0
+ 0
+
+
+
+
+
+
Der Power-Quadrant gibt die Lastverteilung zwischen Wirk- und Blindleistung und zwischen Bezug und Einspeisung geometrisch an:
+