TapHome

Orno OR-WE-517

Modbus RTU
Eingereicht von
Zuletzt aktualisiert: 06. 2026
Orno OR-WE-517

Der Orno OR-WE-517 ist ein 3-Phasen-Mehrtarifzähler für DIN-Schienenmontage, der über Modbus RTU per RS-485 kommuniziert. Es handelt sich um einen Direktanschlusszähler mit einer Nennleistung von bis zu 80 A pro Phase, MID-zertifiziert (Richtlinie 2014/32/EU), und belegt 4,3 Module auf einer TH-35-Schiene. Die TapHome-Vorlage bietet 11 Stromzähler, die Strom pro Phase, Energie pro Phase, Gesamtenergie über alle drei Phasen und 4-Tarifzähler abdecken, zusammen mit Service-Attributen für Spannung, Blind-/Scheinleistung, Leistungsfaktor und bidirektionale (Bezug/Einspeisung) Energieaufteilung.

Alle Messregister verwenden die IEEE 754 Float32-Kodierung (2 Modbus-Wörter pro Wert), gelesen über den Funktionscode 03 (Holding-Register). Die Vorlage bietet außerdem Service-Aktionen zum Einstellen der Echtzeituhr des Zählers, zur Konfiguration von Tarifplänen und zur Änderung der Modbus-Slave-ID.

Hardwareanschluss

RS-485-Verkabelung

Der OR-WE-517 verfügt über eine integrierte RS-485-Schnittstelle für die Modbus-RTU-Kommunikation. Verbinden Sie den Zähler mit dem TapHome Core RS-485-Bus über ein geschirmtes zweiadriges Kommunikationskabel:

  • A-Klemme am Zähler zu A+/D+ am TapHome RS-485
  • B-Klemme am Zähler zu B-/D- am TapHome RS-485

Verwenden Sie eine Daisy-Chain-Verkabelung. Stern- oder Stichleitungstopologien verursachen Signalreflexionen und Kommunikationsfehler. Die Verbindung zwischen dem Konverter und dem Zähler sollte mit einem geschirmten Kommunikationskabel gemäß dem RS-485-Standard durchgeführt werden.

Für die Erstkonfiguration und zum Testen kann auch ein Standard-USB-RS485-Konverter verwendet werden. Der Konverter ist nicht im Lieferumfang des Zählers enthalten.

Konfiguration

Kommunikationsparameter

Die Standard-Modbus-Einstellungen entsprechen der TapHome-Vorlage ohne weitere Anpassungen:

ParameterStandardBereich
Baudrate9600 bps1200, 2400, 4800, 9600
Datenbits8Fest
ParitätGeradeFest
Stoppbits1Fest
Slave-ID11–255

Der Kommunikationsrahmen verwendet ein 11-Bit-Format: 1 Startbit, 8 Datenbits, 1 Bit gerade Parität und 1 Stoppbit mit CRC-Prüfung.

Slave-ID

Beim Anschluss mehrerer Zähler am selben RS-485-Bus muss jeder Zähler eine eindeutige Slave-ID haben. Die Standard-Slave-ID ist 1 (konfigurierbar von 1 bis 255 über Holding-Register H:2). Nach dem Import der TapHome-Vorlage passen Sie die Slave-ID in den Modulverbindungseinstellungen an den physischen Zähler an. Die Vorlage bietet außerdem eine Slave ID-Service-Aktion zur Fernänderung der Adresse über Modbus.

Die aktuelle Slave-ID und Baudrate sind auf dem LCD-Display des Zählers sichtbar (Seiten 42 bzw. 43).

Gerätefunktionen

Die Vorlage erstellt 11 ModbusElectricityMeter- und ModbusVariable-Geräte, die in drei Gruppen organisiert sind: Stromsensoren pro Phase, Energiezähler pro Phase und tarifbasierte Energiezähler. Ein Gesamtgerät für alle drei Phasen aggregiert die Werte mit zusätzlichen systemweiten Attributen.

Strommessung pro Phase

Drei Geräte bieten Echtzeit-Strommessung für jede Phase:

  • L1 Strom — Strom Phase 1 (H:22, A) mit L1-Spannung als Service-Attribut (H:14, V)
  • L2 Strom — Strom Phase 2 (H:24, A) mit L2-Spannung (H:16, V)
  • L3 Strom — Strom Phase 3 (H:26, A) mit L3-Spannung (H:18, V)
Energiemessung pro Phase

Drei Geräte erfassen den Wirkenergieverbrauch und die Leistungsaufnahme pro Phase mit einem umfangreichen Satz von Service-Attributen:

  • Phase L1 — Gesamtwirkenergie (H:258, kWh) und Wirkleistung (H:30, kW). Service-Attribute umfassen Spannung, Strom, Blindleistung (kVAr), Scheinleistung (kVA), Leistungsfaktor und bidirektionale Energiezähler (Bezug/Einspeisung von Wirk- und Blindenergie).
  • Phase L2 — Gesamtwirkenergie (H:260, kWh) und Wirkleistung (H:32, kW). Gleiche phasenspezifische Service-Attribute wie L1.
  • Phase L3 — Gesamtwirkenergie (H:262, kWh) und Wirkleistung (H:34, kW). Gleiche phasenspezifische Service-Attribute wie L1.
Gesamte 3-Phasen-Energie

Ein Gerät liefert die systemweiten Gesamtwerte:

  • Gesamtenergie (3-Phasen) — Gesamtwirkenergie (H:256, kWh) und Gesamtwirkleistungsbedarf (H:28, kW). Service-Attribute umfassen Netzfrequenz (Hz), Gesamtblindleistung (kVAr), Gesamtscheinleistung (kVA), Gesamtleistungsfaktor und bidirektionale Energiezähler (Bezug/Einspeisung von Wirk- und Blindenergie).
Tarifzähler

Vier Geräte erfassen die kumulierte Energie pro Tarifzone (T1–T4):

  • Tarif T1 bis Tarif T4 — jeder meldet die Gesamtwirkenergie (kWh) mit Service-Attributen für Bezug/Einspeisung von Wirkenergie und Bezug/Einspeisung/Gesamtblindenergie. Tarifzähler erfassen nur kumulierte Energie, nicht den momentanen Leistungsbedarf.

Der Zähler unterstützt bis zu 8 Zeitintervalle pro Tag (Montag bis Sonntag einzeln) für die Zuordnung der Tarifzonen T1–T4. Tarifpläne sind über die Service-Aktion Set Tariffs konfigurierbar, die das Programmieren von Intervallen für einen bestimmten Tag oder alle Tage gleichzeitig ermöglicht.

Die 4-Tarif-Fähigkeit ist das Hauptunterscheidungsmerkmal des OR-WE-517 gegenüber dem OR-WE-516 (der RS-485 unterstützt, aber keine Tarifplanung bietet). Der OR-WE-513 hat weder RS-485 noch Tarifunterstützung.

Service-Aktionen

Die Vorlage bietet drei Service-Aktionen zur Fernkonfiguration:

  • Date/Time — Einstellen der internen Echtzeituhr des Zählers (Jahr, Monat, Tag, Stunde, Minuten, Sekunden und Wochentag) über Register H:60–H:65
  • Set Tariffs — Konfiguration von bis zu 8 täglichen Tarifintervallen (T1–T4) für einen ausgewählten Tag oder alle Tage gleichzeitig, geschrieben in Tarifplanregister ab H:768
  • LCD Cycle time — Einstellung des automatischen LCD-Display-Scrollintervalls (1–120 Sekunden)
Weitere Funktionen

Der OR-WE-517 stellt außerdem Register für die Gesamtblindenergie pro Phase (L1/L2/L3), Seriennummer, Firmware- und Hardwareversion, einen kombinierten Konfigurationscode und ein Feiertags-/Wochenend-Tarifzuweisungsregister bereit. Diese können in einem zukünftigen Vorlagenupdate hinzugefügt werden.

Fehlerbehebung

Keine Kommunikation
  1. Überprüfen Sie die RS-485-Klemmenanschlüsse A/B – tauschen Sie A und B, wenn die Kommunikation fehlschlägt, da die Bezeichnungskonventionen zwischen Herstellern variieren
  2. Bestätigen Sie, dass die Baudrate in TapHome der Zählereinstellung entspricht (Standard 9600 bps, sichtbar auf LCD-Seite 43)
  3. Überprüfen Sie, dass die Slave-ID übereinstimmt (Standard 1, sichtbar auf LCD-Seite 42 im Format „Id 255", wobei 255 die aktuelle Adresse ist)
  4. Prüfen Sie, dass die Paritätseinstellung Even (8E1) ist – dieser Zähler verwendet standardmäßig gerade Parität, im Gegensatz zu einigen Zählern, die standardmäßig keine Parität (8N1) verwenden
Falsche Messwerte
  1. Stellen Sie sicher, dass der Zähler als 3-Phasen-4-Leiter-System verdrahtet ist, wobei alle drei Phasenleiter und der Neutralleiter durch die Zählerklemmen geführt werden
  2. Für bidirektionale Messung (Bezug/Einspeisung) überprüfen Sie die CT-Richtung oder Leiterrichtung entsprechend dem Energiefluss – umgekehrte Verdrahtung führt dazu, dass Bezugsenergie als Einspeisungsenergie registriert wird
Kommunikation über Ethernet-Konverter

Der OR-WE-517 kann auch über einen RS-485-zu-Ethernet-Konverter (z. B. Waveshare RS485 to ETH) angesprochen werden. Bei Verwendung eines solchen Konverters muss der Protokolltyp auf RTU over TCP eingestellt werden (nicht Standard-Modbus-TCP). Standard-TCP-Framing funktioniert mit diesem Zähler nicht.

Verfügbare Geräte

Orno OR-WE-517 Modul
Serviceattribute
Slave-ID
Baudrate
LCD-Zykluszeit
CT-VerhältnisStromwandlerverhältnis — gilt nur für CT-Zähler, nicht für Direktanschluss-Installationen
S0-Ausgangsrate
UhrzeitAktuelles Datum und Uhrzeit aus der internen Echtzeituhr des Zählers
Tarife (Mo)
Tarife (Di)
Tarife (Mi)
Tarife (Do)
Tarife (Fr)
Tarife (Sa)
Tarife (So)
Serviceaktionen
Datum/UhrzeitEingebaute Echtzeituhr des Zählers einstellen — Datum, Uhrzeit und Wochentag für den Tarifplanbetrieb
Tarife einstellenKonfiguration von bis zu 8 täglichen Tarifintervallen (T1–T4) für einen ausgewählten Tag oder alle Tage auf einmal
Slave-IDModbus-Slave-Adresse (1–255) für RS-485-Bus-Konfigurationen mit mehreren Zählern ändern
LCD-ZykluszeitAutomatisches Scrollintervall des LCD-Displays in Sekunden einstellen

OR-WE-517

Serviceattribute
${device_SlaveId}
modbusr(H, 0x02, Uint16)
${baud_rate} [bps]
modbusr(H, 0x03, Uint16)
LCD ${cycle_time} [s]
modbusr(H, 0x0d, Uint16)
CT Rate
modbusr(H, 0x08, Uint16)
S0 output rate [imp/kWh]
modbusr(H, 0x09, Float)
${time}
var ret := modbusr(H, 0x3c, Uint32);
var ret1 := modbusr(H, 0x3e, Uint16);
var xx := modbusr(H, 0x40, Uint16);
tostring(getbyte(ret,1), "X2") 
+ ":" + tostring(getbyte(ret,2), "X2")
+ ":" + tostring(getbyte(ret,3), "X2")
+ " " + switch(getbyte(ret,0), 
1, "(Mo)",
2, "(Tu)",
3, "(We)",
4, "(Th)",
5, "(Fr)",
6, "(Sa)",
7, "(Su)", "Err")
+ " " + tostring(getbyte(ret1,1), "X2")
+ "." + tostring(getbyte(ret1,0), "X2")
+ ".20" + modbusr(H, 0x3f, LittleEndianUint16);

${tariff}s (Mo)
var wd1 := modbusr(H, 0x300, Uint32);
var wd2 := modbusr(H, 0x300 +2, Uint32);
var wd3 := modbusr(H, 0x300 +4, Uint32);
var wd4 := modbusr(H, 0x300 +6, Uint32);
var wd5 := modbusr(H, 0x300 +8, Uint32);
var wd6 := modbusr(H, 0x300 +10, Uint32);

var out := "";
if ( getbyte(wd1,1) != 0, out := out +
    "[" + tostring(getbyte(wd1,3), "X2") + ":" + tostring(getbyte(wd1,2), "X2") + "-T" + tostring(getbyte(wd1,1), "X2") + "]" );
if ( getbyte(wd2,2) != 0, out := out +
    "[" + tostring(getbyte(wd1,0), "X2") + ":" + tostring(getbyte(wd2,3), "X2") + "-T" + tostring(getbyte(wd2,2), "X2") + "]" );
if ( getbyte(wd3,3) != 0, out := out +
    "[" + tostring(getbyte(wd2,1), "X2") + ":" + tostring(getbyte(wd2,0), "X2") + "-T" + tostring(getbyte(wd3,3), "X2") + "]" );
if ( getbyte(wd3,0) != 0, out := out +
    "[" + tostring(getbyte(wd3,2), "X2") + ":" + tostring(getbyte(wd3,1), "X2") + "-T" + tostring(getbyte(wd3,0), "X2") + "]" );
if ( getbyte(wd4,1) != 0, out := out +
    "[" + tostring(getbyte(wd4,3), "X2") + ":" + tostring(getbyte(wd4,2), "X2") + "-T" + tostring(getbyte(wd4,1), "X2") + "]" );
if ( getbyte(wd5,2) != 0, out := out +
    "[" + tostring(getbyte(wd4,0), "X2") + ":" + tostring(getbyte(wd5,3), "X2") + "-T" + tostring(getbyte(wd5,2), "X2") + "]" );
if ( getbyte(wd6,3) != 0, out := out +
    "[" + tostring(getbyte(wd5,1), "X2") + ":" + tostring(getbyte(wd5,0), "X2") + "-T" + tostring(getbyte(wd6,3), "X2") + "]" );
if ( getbyte(wd6,0) != 0, out := out +
    "[" + tostring(getbyte(wd6,2), "X2") + ":" + tostring(getbyte(wd6,1), "X2") + "-T" + tostring(getbyte(wd6,0), "X2") + "]" );

return(out)
${tariff}s (Tu)
var wd1 := modbusr(H, 0x30c, Uint32);
var wd2 := modbusr(H, 0x30c +2, Uint32);
var wd3 := modbusr(H, 0x30c +4, Uint32);
var wd4 := modbusr(H, 0x30c +6, Uint32);
var wd5 := modbusr(H, 0x30c +8, Uint32);
var wd6 := modbusr(H, 0x30c +10, Uint32);

var out := "";
if ( getbyte(wd1,1) != 0, out := out +
    "[" + tostring(getbyte(wd1,3), "X2") + ":" + tostring(getbyte(wd1,2), "X2") + "-T" + tostring(getbyte(wd1,1), "X2") + "]" );
if ( getbyte(wd2,2) != 0, out := out +
    "[" + tostring(getbyte(wd1,0), "X2") + ":" + tostring(getbyte(wd2,3), "X2") + "-T" + tostring(getbyte(wd2,2), "X2") + "]" );
if ( getbyte(wd3,3) != 0, out := out +
    "[" + tostring(getbyte(wd2,1), "X2") + ":" + tostring(getbyte(wd2,0), "X2") + "-T" + tostring(getbyte(wd3,3), "X2") + "]" );
if ( getbyte(wd3,0) != 0, out := out +
    "[" + tostring(getbyte(wd3,2), "X2") + ":" + tostring(getbyte(wd3,1), "X2") + "-T" + tostring(getbyte(wd3,0), "X2") + "]" );
if ( getbyte(wd4,1) != 0, out := out +
    "[" + tostring(getbyte(wd4,3), "X2") + ":" + tostring(getbyte(wd4,2), "X2") + "-T" + tostring(getbyte(wd4,1), "X2") + "]" );
if ( getbyte(wd5,2) != 0, out := out +
    "[" + tostring(getbyte(wd4,0), "X2") + ":" + tostring(getbyte(wd5,3), "X2") + "-T" + tostring(getbyte(wd5,2), "X2") + "]" );
if ( getbyte(wd6,3) != 0, out := out +
    "[" + tostring(getbyte(wd5,1), "X2") + ":" + tostring(getbyte(wd5,0), "X2") + "-T" + tostring(getbyte(wd6,3), "X2") + "]" );
if ( getbyte(wd6,0) != 0, out := out +
    "[" + tostring(getbyte(wd6,2), "X2") + ":" + tostring(getbyte(wd6,1), "X2") + "-T" + tostring(getbyte(wd6,0), "X2") + "]" );

return(out)
${tariff}s (We)
var wd1 := modbusr(H, 0x318, Uint32);
var wd2 := modbusr(H, 0x318 +2, Uint32);
var wd3 := modbusr(H, 0x318 +4, Uint32);
var wd4 := modbusr(H, 0x318 +6, Uint32);
var wd5 := modbusr(H, 0x318 +8, Uint32);
var wd6 := modbusr(H, 0x318 +10, Uint32);

var out := "";
if ( getbyte(wd1,1) != 0, out := out +
    "[" + tostring(getbyte(wd1,3), "X2") + ":" + tostring(getbyte(wd1,2), "X2") + "-T" + tostring(getbyte(wd1,1), "X2") + "]" );
if ( getbyte(wd2,2) != 0, out := out +
    "[" + tostring(getbyte(wd1,0), "X2") + ":" + tostring(getbyte(wd2,3), "X2") + "-T" + tostring(getbyte(wd2,2), "X2") + "]" );
if ( getbyte(wd3,3) != 0, out := out +
    "[" + tostring(getbyte(wd2,1), "X2") + ":" + tostring(getbyte(wd2,0), "X2") + "-T" + tostring(getbyte(wd3,3), "X2") + "]" );
if ( getbyte(wd3,0) != 0, out := out +
    "[" + tostring(getbyte(wd3,2), "X2") + ":" + tostring(getbyte(wd3,1), "X2") + "-T" + tostring(getbyte(wd3,0), "X2") + "]" );
if ( getbyte(wd4,1) != 0, out := out +
    "[" + tostring(getbyte(wd4,3), "X2") + ":" + tostring(getbyte(wd4,2), "X2") + "-T" + tostring(getbyte(wd4,1), "X2") + "]" );
if ( getbyte(wd5,2) != 0, out := out +
    "[" + tostring(getbyte(wd4,0), "X2") + ":" + tostring(getbyte(wd5,3), "X2") + "-T" + tostring(getbyte(wd5,2), "X2") + "]" );
if ( getbyte(wd6,3) != 0, out := out +
    "[" + tostring(getbyte(wd5,1), "X2") + ":" + tostring(getbyte(wd5,0), "X2") + "-T" + tostring(getbyte(wd6,3), "X2") + "]" );
if ( getbyte(wd6,0) != 0, out := out +
    "[" + tostring(getbyte(wd6,2), "X2") + ":" + tostring(getbyte(wd6,1), "X2") + "-T" + tostring(getbyte(wd6,0), "X2") + "]" );

return(out)
${tariff}s (Th)
var wd1 := modbusr(H, 0x324, Uint32);
var wd2 := modbusr(H, 0x324 +2, Uint32);
var wd3 := modbusr(H, 0x324 +4, Uint32);
var wd4 := modbusr(H, 0x324 +6, Uint32);
var wd5 := modbusr(H, 0x324 +8, Uint32);
var wd6 := modbusr(H, 0x324 +10, Uint32);

var out := "";
if ( getbyte(wd1,1) != 0, out := out +
    "[" + tostring(getbyte(wd1,3), "X2") + ":" + tostring(getbyte(wd1,2), "X2") + "-T" + tostring(getbyte(wd1,1), "X2") + "]" );
if ( getbyte(wd2,2) != 0, out := out +
    "[" + tostring(getbyte(wd1,0), "X2") + ":" + tostring(getbyte(wd2,3), "X2") + "-T" + tostring(getbyte(wd2,2), "X2") + "]" );
if ( getbyte(wd3,3) != 0, out := out +
    "[" + tostring(getbyte(wd2,1), "X2") + ":" + tostring(getbyte(wd2,0), "X2") + "-T" + tostring(getbyte(wd3,3), "X2") + "]" );
if ( getbyte(wd3,0) != 0, out := out +
    "[" + tostring(getbyte(wd3,2), "X2") + ":" + tostring(getbyte(wd3,1), "X2") + "-T" + tostring(getbyte(wd3,0), "X2") + "]" );
if ( getbyte(wd4,1) != 0, out := out +
    "[" + tostring(getbyte(wd4,3), "X2") + ":" + tostring(getbyte(wd4,2), "X2") + "-T" + tostring(getbyte(wd4,1), "X2") + "]" );
if ( getbyte(wd5,2) != 0, out := out +
    "[" + tostring(getbyte(wd4,0), "X2") + ":" + tostring(getbyte(wd5,3), "X2") + "-T" + tostring(getbyte(wd5,2), "X2") + "]" );
if ( getbyte(wd6,3) != 0, out := out +
    "[" + tostring(getbyte(wd5,1), "X2") + ":" + tostring(getbyte(wd5,0), "X2") + "-T" + tostring(getbyte(wd6,3), "X2") + "]" );
if ( getbyte(wd6,0) != 0, out := out +
    "[" + tostring(getbyte(wd6,2), "X2") + ":" + tostring(getbyte(wd6,1), "X2") + "-T" + tostring(getbyte(wd6,0), "X2") + "]" );

return(out)
${tariff}s (Fr)
var wd1 := modbusr(H, 0x330, Uint32);
var wd2 := modbusr(H, 0x330 +2, Uint32);
var wd3 := modbusr(H, 0x330 +4, Uint32);
var wd4 := modbusr(H, 0x330 +6, Uint32);
var wd5 := modbusr(H, 0x330 +8, Uint32);
var wd6 := modbusr(H, 0x330 +10, Uint32);

var out := "";
if ( getbyte(wd1,1) != 0, out := out +
    "[" + tostring(getbyte(wd1,3), "X2") + ":" + tostring(getbyte(wd1,2), "X2") + "-T" + tostring(getbyte(wd1,1), "X2") + "]" );
if ( getbyte(wd2,2) != 0, out := out +
    "[" + tostring(getbyte(wd1,0), "X2") + ":" + tostring(getbyte(wd2,3), "X2") + "-T" + tostring(getbyte(wd2,2), "X2") + "]" );
if ( getbyte(wd3,3) != 0, out := out +
    "[" + tostring(getbyte(wd2,1), "X2") + ":" + tostring(getbyte(wd2,0), "X2") + "-T" + tostring(getbyte(wd3,3), "X2") + "]" );
if ( getbyte(wd3,0) != 0, out := out +
    "[" + tostring(getbyte(wd3,2), "X2") + ":" + tostring(getbyte(wd3,1), "X2") + "-T" + tostring(getbyte(wd3,0), "X2") + "]" );
if ( getbyte(wd4,1) != 0, out := out +
    "[" + tostring(getbyte(wd4,3), "X2") + ":" + tostring(getbyte(wd4,2), "X2") + "-T" + tostring(getbyte(wd4,1), "X2") + "]" );
if ( getbyte(wd5,2) != 0, out := out +
    "[" + tostring(getbyte(wd4,0), "X2") + ":" + tostring(getbyte(wd5,3), "X2") + "-T" + tostring(getbyte(wd5,2), "X2") + "]" );
if ( getbyte(wd6,3) != 0, out := out +
    "[" + tostring(getbyte(wd5,1), "X2") + ":" + tostring(getbyte(wd5,0), "X2") + "-T" + tostring(getbyte(wd6,3), "X2") + "]" );
if ( getbyte(wd6,0) != 0, out := out +
    "[" + tostring(getbyte(wd6,2), "X2") + ":" + tostring(getbyte(wd6,1), "X2") + "-T" + tostring(getbyte(wd6,0), "X2") + "]" );

return(out)
${tariff}s (Sa)
var wd1 := modbusr(H, 0x33c, Uint32);
var wd2 := modbusr(H, 0x33c +2, Uint32);
var wd3 := modbusr(H, 0x33c +4, Uint32);
var wd4 := modbusr(H, 0x33c +6, Uint32);
var wd5 := modbusr(H, 0x33c +8, Uint32);
var wd6 := modbusr(H, 0x33c +10, Uint32);

var out := "";
if ( getbyte(wd1,1) != 0, out := out +
    "[" + tostring(getbyte(wd1,3), "X2") + ":" + tostring(getbyte(wd1,2), "X2") + "-T" + tostring(getbyte(wd1,1), "X2") + "]" );
if ( getbyte(wd2,2) != 0, out := out +
    "[" + tostring(getbyte(wd1,0), "X2") + ":" + tostring(getbyte(wd2,3), "X2") + "-T" + tostring(getbyte(wd2,2), "X2") + "]" );
if ( getbyte(wd3,3) != 0, out := out +
    "[" + tostring(getbyte(wd2,1), "X2") + ":" + tostring(getbyte(wd2,0), "X2") + "-T" + tostring(getbyte(wd3,3), "X2") + "]" );
if ( getbyte(wd3,0) != 0, out := out +
    "[" + tostring(getbyte(wd3,2), "X2") + ":" + tostring(getbyte(wd3,1), "X2") + "-T" + tostring(getbyte(wd3,0), "X2") + "]" );
if ( getbyte(wd4,1) != 0, out := out +
    "[" + tostring(getbyte(wd4,3), "X2") + ":" + tostring(getbyte(wd4,2), "X2") + "-T" + tostring(getbyte(wd4,1), "X2") + "]" );
if ( getbyte(wd5,2) != 0, out := out +
    "[" + tostring(getbyte(wd4,0), "X2") + ":" + tostring(getbyte(wd5,3), "X2") + "-T" + tostring(getbyte(wd5,2), "X2") + "]" );
if ( getbyte(wd6,3) != 0, out := out +
    "[" + tostring(getbyte(wd5,1), "X2") + ":" + tostring(getbyte(wd5,0), "X2") + "-T" + tostring(getbyte(wd6,3), "X2") + "]" );
if ( getbyte(wd6,0) != 0, out := out +
    "[" + tostring(getbyte(wd6,2), "X2") + ":" + tostring(getbyte(wd6,1), "X2") + "-T" + tostring(getbyte(wd6,0), "X2") + "]" );

return(out)
${tariff}s (Su)
var wd1 := modbusr(H, 0x348, Uint32);
var wd2 := modbusr(H, 0x348 +2, Uint32);
var wd3 := modbusr(H, 0x348 +4, Uint32);
var wd4 := modbusr(H, 0x348 +6, Uint32);
var wd5 := modbusr(H, 0x348 +8, Uint32);
var wd6 := modbusr(H, 0x348 +10, Uint32);

var out := "";
if ( getbyte(wd1,1) != 0, out := out +
    "[" + tostring(getbyte(wd1,3), "X2") + ":" + tostring(getbyte(wd1,2), "X2") + "-T" + tostring(getbyte(wd1,1), "X2") + "]" );
if ( getbyte(wd2,2) != 0, out := out +
    "[" + tostring(getbyte(wd1,0), "X2") + ":" + tostring(getbyte(wd2,3), "X2") + "-T" + tostring(getbyte(wd2,2), "X2") + "]" );
if ( getbyte(wd3,3) != 0, out := out +
    "[" + tostring(getbyte(wd2,1), "X2") + ":" + tostring(getbyte(wd2,0), "X2") + "-T" + tostring(getbyte(wd3,3), "X2") + "]" );
if ( getbyte(wd3,0) != 0, out := out +
    "[" + tostring(getbyte(wd3,2), "X2") + ":" + tostring(getbyte(wd3,1), "X2") + "-T" + tostring(getbyte(wd3,0), "X2") + "]" );
if ( getbyte(wd4,1) != 0, out := out +
    "[" + tostring(getbyte(wd4,3), "X2") + ":" + tostring(getbyte(wd4,2), "X2") + "-T" + tostring(getbyte(wd4,1), "X2") + "]" );
if ( getbyte(wd5,2) != 0, out := out +
    "[" + tostring(getbyte(wd4,0), "X2") + ":" + tostring(getbyte(wd5,3), "X2") + "-T" + tostring(getbyte(wd5,2), "X2") + "]" );
if ( getbyte(wd6,3) != 0, out := out +
    "[" + tostring(getbyte(wd5,1), "X2") + ":" + tostring(getbyte(wd5,0), "X2") + "-T" + tostring(getbyte(wd6,3), "X2") + "]" );
if ( getbyte(wd6,0) != 0, out := out +
    "[" + tostring(getbyte(wd6,2), "X2") + ":" + tostring(getbyte(wd6,1), "X2") + "-T" + tostring(getbyte(wd6,0), "X2") + "]" );

return(out)
Serviceaktionen
Date/Time
Parameter: Year (22–99 YY), Month (1–12 MM), Day (1–31 DD), Hour (1–24 HH), Minutes (0–59 MI), Seconds (0–59 SS), Day of Week
var out1 := (tobcd(MI) << 8) + tobcd(SS);
var out2 := (tobcd(DW) << 8) + tobcd(HH);
var out3 := (tobcd(MM) << 8) + tobcd(DD);

modbusw(H, 0x3c, LittleEndianUint16, out1, out2, out3, YY);
${set_tarriffs}
Parameter: Interval 1 - ${hour} (0–23 HH1), Interval 1 - ${minutes} (0–59 MI1), Interval 1 - ${tariff} (0–4 T1), Interval 2 - Hour (0–23 HH2), Interval 2 - Minutes (0–59 MI2), Interval 2 - ${tariff} (0–4 T2), Interval 3 - Hour (0–23 HH3), Interval 3 - Minutes (0–59 MI3), Interval 3 - ${tariff} (0–4 T3), Interval 4 - Hour (0–23 HH4), Interval 4 - Minutes (0–59 MI4), Interval 4 - ${tariff} (0–4 T4), Interval 5 - Hour (0–23 HH5), Interval 5 - Minutes (0–59 MI5), Interval 5 - ${tariff} (0–4 T5), Interval 6 - Hour (0–23 HH6), Interval 6 - Minutes (0–59 MI6), Interval 6 - ${tariff} (0–4 T6), Interval 7 - Hour (0–23 HH7), Interval 7 - Minutes (0–59 MI7), Interval 7 - ${tariff} (0–4 T7), Interval 8 - Hour (0–23 HH8), Interval 8 - Minutes (0–59 MI8), Interval 8 - ${tariff} (0–4 T8), Day
var wd1 := (tobcd(HH1) << 24) + (tobcd(MI1) << 16) + (tobcd(T1) << 8) + tobcd(HH2);
var wd2 := (tobcd(MI2) << 24) + (tobcd(T2) << 16) + (tobcd(HH3) << 8) + tobcd(MI3);
var wd3 := (tobcd(T3) << 24) + (tobcd(HH4) << 16) + (tobcd(MI4) << 8) + tobcd(T4);
var wd4 := (tobcd(HH5) << 24) + (tobcd(MI5) << 16) + (tobcd(T5) << 8) + tobcd(HH6);
var wd5 := (tobcd(MI6) << 24) + (tobcd(T6) << 16) + (tobcd(HH7) << 8) + tobcd(MI7);
var wd6 := (tobcd(T7) << 24) + (tobcd(HH8) << 16) + (tobcd(MI8) << 8) + tobcd(T8);

if DoW = 0 or DoW = 1
    modbusw(H, 0x300, Uint32, wd1, wd2, wd3, wd4, wd5, wd6);
end
if DoW = 0 or DoW = 2
    modbusw(H, 0x30c, Uint32, wd1, wd2, wd3, wd4, wd5, wd6);
end
if DoW = 0 or DoW = 3
    modbusw(H, 0x318, Uint32, wd1, wd2, wd3, wd4, wd5, wd6);
end
if DoW = 0 or DoW = 4
    modbusw(H, 0x324, Uint32, wd1, wd2, wd3, wd4, wd5, wd6);
end
if DoW = 0 or DoW = 5
    modbusw(H, 0x330, Uint32, wd1, wd2, wd3, wd4, wd5, wd6);
end
if DoW = 0 or DoW = 6
    modbusw(H, 0x33c, Uint32, wd1, wd2, wd3, wd4, wd5, wd6);
end
if DoW = 0 or DoW = 7
    modbusw(H, 0x348, Uint32, wd1, wd2, wd3, wd4, wd5, wd6);
end
Slave ID
Parameter: Parameter1 (1–255 ID)
modbusw(H, 0x02, Uint16, ID)
LCD Cycle time
Parameter: Time [s] (1–120 t)
modbusw(H, 0x0d, Uint16, t)
Strom L1 Variable Nur lesen
Register: H:22 Float Einheit: A
Serviceattribute
Spannung L1

Strom L1

Lesen
MODBUSR(H, 22, Float)
Serviceattribute
L1 ${electric_voltage} [V]
round(modbusr(H, 0x0e, Float)*10)/10
Strom L2 Variable Nur lesen
Register: H:24 Float Einheit: A
Serviceattribute
Spannung L2

Strom L2

Lesen
MODBUSR(H, 24, Float)
Serviceattribute
L2 ${electric_voltage} [V]
round(modbusr(H, 0x10, Float)*10)/10
Strom L3 Variable Nur lesen
Register: H:26 Float Einheit: A
Serviceattribute
Spannung L3

Strom L3

Lesen
MODBUSR(H, 26, Float)
Serviceattribute
L3 ${electric_voltage} [V]
round(modbusr(H, 0x12, Float)*10)/10
Phase L1 Stromzähler Nur lesen

Energiezähler Phase 1 — gesamte Wirkenergie und Wirkleistung mit Spannung, Strom, Blind-/Scheinleistung, Leistungsfaktor und bidirektionalen Energiezählern

Register: H:258 (readtotalconsumption), H:30 (readdemand) Float Einheit: kWh / kW
Serviceattribute
Spannung
Strom
Blindleistung
Scheinleistung
Leistungsfaktor
Wirkenergie Bezug
Wirkenergie Einspeisung
Blindenergie Bezug
Blindenergie Einspeisung

Phase L1

Gesamtverbrauch lesen
MODBUSR(H, 0x102, Float)
Bedarf lesen
MODBUSR(H, 0x1e, Float)
Serviceattribute
${electric_voltage} [V]
tostring(modbusr(H, 0x0e,Float), "F2")
${electric_current} [A]
tostring(modbusr(H, 0x16,Float), "F2")
${reactive_power} [kVAr]
tostring(modbusr(H, 0x26,Float), "F2")
${apparent_power} [kVA]
tostring(modbusr(H, 0x2e,Float), "F2")
${power_factor}
tostring(modbusr(H, 0x36,Float), "F2")
${forward_active_energy} [kWh]
tostring(modbusr(H, 0x10a,Float), "F2")
${reverse_active_energy} [kWh]
tostring(modbusr(H, 0x112,Float), "F2")
${forward_reactive_energy} [kVArh]
tostring(modbusr(H, 0x122,Float), "F2")
${reverse_reactive_energy} [kVArh]
tostring(modbusr(H, 0x12a,Float), "F2")
Phase L2 Stromzähler Nur lesen
Register: H:260 (readtotalconsumption), H:32 (readdemand) Float Einheit: kWh / kW
Serviceattribute
Spannung
Strom
Blindleistung
Scheinleistung
Leistungsfaktor
Wirkenergie Bezug
Wirkenergie Einspeisung
Blindenergie Bezug
Blindenergie Einspeisung

Phase L2

Gesamtverbrauch lesen
MODBUSR(H, 0x104, Float)
Bedarf lesen
MODBUSR(H, 0x20, Float)
Serviceattribute
${electric_voltage} [V]
tostring(modbusr(H, 0x10,Float), "F2")
${electric_current} [A]
tostring(modbusr(H, 0x18,Float), "F2")
${reactive_power} [kVAr]
tostring(modbusr(H, 0x28,Float), "F2")
${apparent_power} [kVA]
tostring(modbusr(H, 0x30,Float), "F2")
${power_factor}
tostring(modbusr(H, 0x38,Float), "F2")
${forward_active_energy} [kWh]
tostring(modbusr(H, 0x10c,Float), "F2")
${reverse_active_energy} [kWh]
tostring(modbusr(H, 0x114,Float), "F2")
${forward_reactive_energy} [kVArh]
tostring(modbusr(H, 0x124,Float), "F2")
${reverse_reactive_energy} [kVArh]
tostring(modbusr(H, 0x12c,Float), "F2")
Phase L3 Stromzähler Nur lesen
Register: H:262 (readtotalconsumption), H:34 (readdemand) Float Einheit: kWh / kW
Serviceattribute
Spannung
Strom
Blindleistung
Scheinleistung
Leistungsfaktor
Wirkenergie Bezug
Wirkenergie Einspeisung
Blindenergie Bezug
Blindenergie Einspeisung

Phase L3

Gesamtverbrauch lesen
MODBUSR(H, 0x106, Float)
Bedarf lesen
MODBUSR(H, 0x22, Float)
Serviceattribute
${electric_voltage} [V]
tostring(modbusr(H, 0x12,Float), "F2")
${electric_current} [A]
tostring(modbusr(H, 0x1a,Float), "F2")
${reactive_power} [kVAr]
tostring(modbusr(H, 0x2a,Float), "F2")
${apparent_power} [kVA]
tostring(modbusr(H, 0x32,Float), "F2")
${power_factor}
tostring(modbusr(H, 0x3a,Float), "F2")
${forward_active_energy} [kWh]
tostring(modbusr(H, 0x10e,Float), "F2")
${reverse_active_energy} [kWh]
tostring(modbusr(H, 0x116,Float), "F2")
${forward_reactive_energy} [kVArh]
tostring(modbusr(H, 0x126,Float), "F2")
${reverse_reactive_energy} [kVArh]
tostring(modbusr(H, 0x12e,Float), "F2")
Tarif T1 Stromzähler Nur lesen

Kumulativer Energiezähler Tarif 1 — gesamte Wirkenergie mit Aufschlüsselung nach Bezug/Einspeisung von Wirk- und Blindenergie

Register: H:304 (readtotalconsumption) Float Einheit: kWh
Serviceattribute
Wirkenergie Bezug
Wirkenergie Einspeisung
Gesamte Blindenergie
Blindenergie Bezug
Blindenergie Einspeisung

Tarif T1

Gesamtverbrauch lesen
MODBUSR(H, 0x130, Float)
Serviceattribute
${forward_active_energy} [kWh]
tostring(modbusr(H, 0x132,Float), "F2")
${reverse_active_energy} [kWh]
tostring(modbusr(H, 0x134,Float), "F2")
${total_reactive_energy} [kVArh]
tostring(modbusr(H, 0x136,Float), "F2")
${forward_reactive_energy} [kVArh]
tostring(modbusr(H, 0x138,Float), "F2")
${reverse_reactive_energy} [kVArh]
tostring(modbusr(H, 0x13a,Float), "F2")
Tarif T2 Stromzähler Nur lesen
Register: H:316 (readtotalconsumption) Float Einheit: kWh
Serviceattribute
Wirkenergie Bezug
Wirkenergie Einspeisung
Gesamte Blindenergie
Blindenergie Bezug
Blindenergie Einspeisung

Tarif T2

Gesamtverbrauch lesen
MODBUSR(H, 0x13c, Float)
Serviceattribute
${forward_active_energy} [kWh]
tostring(modbusr(H, 0x13e,Float), "F2")
${reverse_active_energy} [kWh]
tostring(modbusr(H, 0x140,Float), "F2")
${total_reactive_energy} [kVArh]
tostring(modbusr(H, 0x142,Float), "F2")
${forward_reactive_energy} [kVArh]
tostring(modbusr(H, 0x144,Float), "F2")
${reverse_reactive_energy} [kVArh]
tostring(modbusr(H, 0x146,Float), "F2")
Tarif T3 Stromzähler Nur lesen
Register: H:328 (readtotalconsumption) Float Einheit: kWh
Serviceattribute
Wirkenergie Bezug
Wirkenergie Einspeisung
Gesamte Blindenergie
Blindenergie Bezug
Blindenergie Einspeisung

Tarif T3

Gesamtverbrauch lesen
MODBUSR(H, 0x148, Float)
Serviceattribute
${forward_active_energy} [kWh]
tostring(modbusr(H, 0x14a,Float), "F2")
${reverse_active_energy} [kWh]
tostring(modbusr(H, 0x14c,Float), "F2")
${total_reactive_energy} [kVArh]
tostring(modbusr(H, 0x14e,Float), "F2")
${forward_reactive_energy} [kVArh]
tostring(modbusr(H, 0x150,Float), "F2")
${reverse_reactive_energy} [kVArh]
tostring(modbusr(H, 0x152,Float), "F2")
Tarif T4 Stromzähler Nur lesen
Register: H:340 (readtotalconsumption) Float Einheit: kWh
Serviceattribute
Wirkenergie Bezug
Wirkenergie Einspeisung
Gesamte Blindenergie
Blindenergie Bezug
Blindenergie Einspeisung

Tarif T4

Gesamtverbrauch lesen
MODBUSR(H, 0x154, Float)
Serviceattribute
${forward_active_energy} [kWh]
tostring(modbusr(H, 0x156,Float), "F2")
${reverse_active_energy} [kWh]
tostring(modbusr(H, 0x158,Float), "F2")
${total_reactive_energy} [kVArh]
tostring(modbusr(H, 0x15a,Float), "F2")
${forward_reactive_energy} [kVArh]
tostring(modbusr(H, 0x15c,Float), "F2")
${reverse_reactive_energy} [kVArh]
tostring(modbusr(H, 0x15e,Float), "F2")
Gesamtenergie (3-Phasen) Stromzähler Nur lesen

3-Phasen-Systemgesamt — Wirkenergie und Leistungsbedarf mit Netzfrequenz, Blind-/Scheinleistung, Leistungsfaktor und bidirektionalen Energiezählern

Register: H:256 (readtotalconsumption), H:28 (readdemand) Float Einheit: kWh / kW
Serviceattribute
Netzfrequenz
Gesamte Blindleistung
Gesamte Scheinleistung
Gesamtleistungsfaktor
Wirkenergie Bezug
Wirkenergie Einspeisung
Blindenergie Bezug
Blindenergie Einspeisung

Gesamtenergie (3-Phasen)

Gesamtverbrauch lesen
MODBUSR(H, 0x100, Float)
Bedarf lesen
MODBUSR(H, 0x1c, Float)
Serviceattribute
${grid_frequency} [Hz]
tostring(modbusr(H, 0x14,Float), "F2")
${reactive_power} [kVAr]
tostring(modbusr(H, 0x24,Float), "F2")
${apparent_power} [kVA]
tostring(modbusr(H, 0x2c,Float), "F2")
${power_factor}
tostring(modbusr(H, 0x34,Float), "F2")
${forward_active_energy} [kWh]
tostring(modbusr(H, 0x108,Float), "F2")
${reverse_active_energy} [kWh]
tostring(modbusr(H, 0x110,Float), "F2")
${forward_reactive_energy} [kVArh]
tostring(modbusr(H, 0x120,Float), "F2")
${reverse_reactive_energy} [kVArh]
tostring(modbusr(H, 0x128,Float), "F2")
Verbindung: Modbus RTU • 9600 baud• 8E1 • Slave ID: $[SlaveId]
Mögliche Verbesserungen (9)
  • H:280 Total Reactive Energy — Aggregate reactive energy counter (sum of all phases)
  • H:282 L1 Reactive Energy — Per-phase reactive energy — only forward/reverse reactive exposed, not total per-phase
  • H:284 L2 Reactive Energy — Per-phase reactive energy
  • H:286 L3 Reactive Energy — Per-phase reactive energy
  • H:0 Serial Number — 4-byte serial number, read-only
  • H:4 Software Version — Firmware version as float
  • H:6 Hardware Version — Hardware version as float
  • H:11 Combined Code — Configuration code, R/W
  • H:12 HOLIDAY-WEEKEND T — Holiday/weekend tariff assignment

Quellen

Haben Sie ein Problem mit dieser Gerätevorlage gefunden?

Sagen Sie uns, was nicht funktioniert, was fehlt oder wie sich die Vorlage verhalten sollte. Ihr Feedback hilft uns, den Katalog genau zu halten.

Von TapHome verifiziert

Möchtest du das in deinem TapHome Core verwenden?

Öffne diese Vorlage im Kundenportal, um sie auf eine deiner Wohnungen anzuwenden, oder entwirf eine Anpassung und reiche sie an den Katalog ein.

Im Portal öffnen