---
title: "Orno OR-WE-517"
description: "Orno OR-WE-517 3-Phasen-Mehrtarifzähler mit Modbus RTU (RS-485). TapHome liest Energie pro Phase und gesamt sowie 4 Tarifzähler."
url: "https://taphome.com/de/compatibility/orno-or-we-517/"
language: de
lastmod: 2026-10-08
generator: hugo
ai:
  topics: ["modbus-rtu","electric-meter","rs485","3-phase","energy-metering","din-rail","multitariff"]
  questions: ["Wie integriere ich den Orno OR-WE-517 mit TapHome?","Was misst die Orno OR-WE-517-Vorlage in TapHome?","Wie verbinde ich den Orno OR-WE-517 über RS-485 mit TapHome?","Wie konfiguriere ich Tarifpläne am OR-WE-517?","Was ist der Unterschied zwischen OR-WE-516 und OR-WE-517?","Wie stelle ich die Modbus-Slave-Adresse am OR-WE-517 ein?"]
---

# Orno OR-WE-517

Kommunikation: Modbus RTU

- [Offizielle Orno-Website](https://www.orno.pl)

## Integrationsanleitung

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

> [!WARNING]
> 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.

> [!TIP]
> 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:

| Parameter | Standard | Bereich |
|-----------|----------|---------|
| Baudrate | 9600 bps | 1200, 2400, 4800, 9600 |
| Datenbits | 8 | Fest |
| Parität | Gerade | Fest |
| Stoppbits | 1 | Fest |
| Slave-ID | 1 | 1--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 vier Gruppen organisiert sind: Stromsensoren pro Phase, Energiezähler pro Phase, ein Gesamtgerät für alle drei Phasen und tarifbasierte Energiezähler.

### 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.

> [!TIP]
> 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 vier 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)
- **Slave ID** — Ändern der Modbus-Adresse des Zählers (1--255) über Holding-Register H:2

### 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 11

Diese Geräte erscheinen nach dem Import in TapHome.

Orno OR-WE-517 Modul

Serviceattribute

|                 |                                                                                           |
|-----------------|-------------------------------------------------------------------------------------------|
| Slave-ID        |                                                                                           |
| Baudrate        |                                                                                           |
| LCD-Zykluszeit  |                                                                                           |
| CT-Verhältnis   | Stromwandlerverhältnis — gilt nur für CT-Zähler, nicht für Direktanschluss-Installationen |
| S0-Ausgangsrate |                                                                                           |
| Uhrzeit         | Aktuelles 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/Uhrzeit     | Eingebaute Echtzeituhr des Zählers einstellen — Datum, Uhrzeit und Wochentag für den Tarifplanbetrieb              |
| Tarife einstellen | Konfiguration von bis zu 8 täglichen Tarifintervallen (T1–T4) für einen ausgewählten Tag oder alle Tage auf einmal |
| Slave-ID          | Modbus-Slave-Adresse (1–255) für RS-485-Bus-Konfigurationen mit mehreren Zählern ändern                            |
| LCD-Zykluszeit    | Automatisches Scrollintervall des LCD-Displays in Sekunden einstellen                                              |

Serviceattribute

${device\_SlaveId}

```taphome
modbusr(H, 0x02, Uint16)
```

${baud\_rate} \[bps]

```taphome
modbusr(H, 0x03, Uint16)
```

LCD ${cycle\_time} \[s]

```taphome
modbusr(H, 0x0d, Uint16)
```

CT Rate

```taphome
modbusr(H, 0x08, Uint16)
```

S0 output rate \[imp/kWh]

```taphome
modbusr(H, 0x09, Float)
```

${time}

```taphome
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)

```taphome
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)

```taphome
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)

```taphome
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)

```taphome
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)

```taphome
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)

```taphome
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)

```taphome
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

```taphome
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

```taphome
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)

```taphome
modbusw(H, 0x02, Uint16, ID)
```

LCD Cycle time

Parameter: Time \[s] (1–120 t)

```taphome
modbusw(H, 0x0d, Uint16, t)
```

Strom L1 Variable Nur lesen

Register: H:22 Float Einheit: A

Serviceattribute

|             |
|-------------|
| Spannung L1 |

Lesen

```taphome
MODBUSR(H, 22, Float)
```

Serviceattribute

L1 ${electric\_voltage} \[V]

```taphome
round(modbusr(H, 0x0e, Float)*10)/10
```

Strom L2 Variable Nur lesen

Register: H:24 Float Einheit: A

Serviceattribute

|             |
|-------------|
| Spannung L2 |

Lesen

```taphome
MODBUSR(H, 24, Float)
```

Serviceattribute

L2 ${electric\_voltage} \[V]

```taphome
round(modbusr(H, 0x10, Float)*10)/10
```

Strom L3 Variable Nur lesen

Register: H:26 Float Einheit: A

Serviceattribute

|             |
|-------------|
| Spannung L3 |

Lesen

```taphome
MODBUSR(H, 26, Float)
```

Serviceattribute

L3 ${electric\_voltage} \[V]

```taphome
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 |

Gesamtverbrauch lesen

```taphome
MODBUSR(H, 0x102, Float)
```

Bedarf lesen

```taphome
MODBUSR(H, 0x1e, Float)
```

Serviceattribute

${electric\_voltage} \[V]

```taphome
tostring(modbusr(H, 0x0e,Float), "F2")
```

${electric\_current} \[A]

```taphome
tostring(modbusr(H, 0x16,Float), "F2")
```

${reactive\_power} \[kVAr]

```taphome
tostring(modbusr(H, 0x26,Float), "F2")
```

${apparent\_power} \[kVA]

```taphome
tostring(modbusr(H, 0x2e,Float), "F2")
```

${power\_factor}

```taphome
tostring(modbusr(H, 0x36,Float), "F2")
```

${forward\_active\_energy} \[kWh]

```taphome
tostring(modbusr(H, 0x10a,Float), "F2")
```

${reverse\_active\_energy} \[kWh]

```taphome
tostring(modbusr(H, 0x112,Float), "F2")
```

${forward\_reactive\_energy} \[kVArh]

```taphome
tostring(modbusr(H, 0x122,Float), "F2")
```

${reverse\_reactive\_energy} \[kVArh]

```taphome
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 |

Gesamtverbrauch lesen

```taphome
MODBUSR(H, 0x104, Float)
```

Bedarf lesen

```taphome
MODBUSR(H, 0x20, Float)
```

Serviceattribute

${electric\_voltage} \[V]

```taphome
tostring(modbusr(H, 0x10,Float), "F2")
```

${electric\_current} \[A]

```taphome
tostring(modbusr(H, 0x18,Float), "F2")
```

${reactive\_power} \[kVAr]

```taphome
tostring(modbusr(H, 0x28,Float), "F2")
```

${apparent\_power} \[kVA]

```taphome
tostring(modbusr(H, 0x30,Float), "F2")
```

${power\_factor}

```taphome
tostring(modbusr(H, 0x38,Float), "F2")
```

${forward\_active\_energy} \[kWh]

```taphome
tostring(modbusr(H, 0x10c,Float), "F2")
```

${reverse\_active\_energy} \[kWh]

```taphome
tostring(modbusr(H, 0x114,Float), "F2")
```

${forward\_reactive\_energy} \[kVArh]

```taphome
tostring(modbusr(H, 0x124,Float), "F2")
```

${reverse\_reactive\_energy} \[kVArh]

```taphome
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 |

Gesamtverbrauch lesen

```taphome
MODBUSR(H, 0x106, Float)
```

Bedarf lesen

```taphome
MODBUSR(H, 0x22, Float)
```

Serviceattribute

${electric\_voltage} \[V]

```taphome
tostring(modbusr(H, 0x12,Float), "F2")
```

${electric\_current} \[A]

```taphome
tostring(modbusr(H, 0x1a,Float), "F2")
```

${reactive\_power} \[kVAr]

```taphome
tostring(modbusr(H, 0x2a,Float), "F2")
```

${apparent\_power} \[kVA]

```taphome
tostring(modbusr(H, 0x32,Float), "F2")
```

${power\_factor}

```taphome
tostring(modbusr(H, 0x3a,Float), "F2")
```

${forward\_active\_energy} \[kWh]

```taphome
tostring(modbusr(H, 0x10e,Float), "F2")
```

${reverse\_active\_energy} \[kWh]

```taphome
tostring(modbusr(H, 0x116,Float), "F2")
```

${forward\_reactive\_energy} \[kVArh]

```taphome
tostring(modbusr(H, 0x126,Float), "F2")
```

${reverse\_reactive\_energy} \[kVArh]

```taphome
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 |

Gesamtverbrauch lesen

```taphome
MODBUSR(H, 0x130, Float)
```

Serviceattribute

${forward\_active\_energy} \[kWh]

```taphome
tostring(modbusr(H, 0x132,Float), "F2")
```

${reverse\_active\_energy} \[kWh]

```taphome
tostring(modbusr(H, 0x134,Float), "F2")
```

${total\_reactive\_energy} \[kVArh]

```taphome
tostring(modbusr(H, 0x136,Float), "F2")
```

${forward\_reactive\_energy} \[kVArh]

```taphome
tostring(modbusr(H, 0x138,Float), "F2")
```

${reverse\_reactive\_energy} \[kVArh]

```taphome
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 |

Gesamtverbrauch lesen

```taphome
MODBUSR(H, 0x13c, Float)
```

Serviceattribute

${forward\_active\_energy} \[kWh]

```taphome
tostring(modbusr(H, 0x13e,Float), "F2")
```

${reverse\_active\_energy} \[kWh]

```taphome
tostring(modbusr(H, 0x140,Float), "F2")
```

${total\_reactive\_energy} \[kVArh]

```taphome
tostring(modbusr(H, 0x142,Float), "F2")
```

${forward\_reactive\_energy} \[kVArh]

```taphome
tostring(modbusr(H, 0x144,Float), "F2")
```

${reverse\_reactive\_energy} \[kVArh]

```taphome
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 |

Gesamtverbrauch lesen

```taphome
MODBUSR(H, 0x148, Float)
```

Serviceattribute

${forward\_active\_energy} \[kWh]

```taphome
tostring(modbusr(H, 0x14a,Float), "F2")
```

${reverse\_active\_energy} \[kWh]

```taphome
tostring(modbusr(H, 0x14c,Float), "F2")
```

${total\_reactive\_energy} \[kVArh]

```taphome
tostring(modbusr(H, 0x14e,Float), "F2")
```

${forward\_reactive\_energy} \[kVArh]

```taphome
tostring(modbusr(H, 0x150,Float), "F2")
```

${reverse\_reactive\_energy} \[kVArh]

```taphome
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 |

Gesamtverbrauch lesen

```taphome
MODBUSR(H, 0x154, Float)
```

Serviceattribute

${forward\_active\_energy} \[kWh]

```taphome
tostring(modbusr(H, 0x156,Float), "F2")
```

${reverse\_active\_energy} \[kWh]

```taphome
tostring(modbusr(H, 0x158,Float), "F2")
```

${total\_reactive\_energy} \[kVArh]

```taphome
tostring(modbusr(H, 0x15a,Float), "F2")
```

${forward\_reactive\_energy} \[kVArh]

```taphome
tostring(modbusr(H, 0x15c,Float), "F2")
```

${reverse\_reactive\_energy} \[kVArh]

```taphome
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 |

Gesamtverbrauch lesen

```taphome
MODBUSR(H, 0x100, Float)
```

Bedarf lesen

```taphome
MODBUSR(H, 0x1c, Float)
```

Serviceattribute

${grid\_frequency} \[Hz]

```taphome
tostring(modbusr(H, 0x14,Float), "F2")
```

${reactive\_power} \[kVAr]

```taphome
tostring(modbusr(H, 0x24,Float), "F2")
```

${apparent\_power} \[kVA]

```taphome
tostring(modbusr(H, 0x2c,Float), "F2")
```

${power\_factor}

```taphome
tostring(modbusr(H, 0x34,Float), "F2")
```

${forward\_active\_energy} \[kWh]

```taphome
tostring(modbusr(H, 0x108,Float), "F2")
```

${reverse\_active\_energy} \[kWh]

```taphome
tostring(modbusr(H, 0x110,Float), "F2")
```

${forward\_reactive\_energy} \[kVArh]

```taphome
tostring(modbusr(H, 0x120,Float), "F2")
```

${reverse\_reactive\_energy} \[kVArh]

```taphome
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

## Importparameter

Diese Werte geben Sie beim Import des XML ein.

| In der App abgefragt | Standard      |
|----------------------|---------------|
| Slave-ID             | `1`           |
| IP-Adresse           | `192.168.1.0` |

## Quellen

- Orno OR-WE-517 Modbus Register Map
  
  2026-03-27
  
  [PDF](https://taphome.com/compatibility/devices/orno-or-we-517/manufacturer/Orno%20OR-WE-517.pdf)
- OR-WE-513/516/517 Installation Manual
  
  [files.orno.pl](https://files.orno.pl/manuals/OR-WE-513,516,517_manual_EN.pdf) 2026-03-27
  
  [PDF](https://taphome.com/compatibility/devices/orno-or-we-517/manufacturer/installation-manual.pdf)
- Home Assistant Community — OR-WE-517 Modbus Configuration
  
  [community.home-assistant.io](https://community.home-assistant.io/t/configuration-of-the-orno-or-we-517-three-phase-meter-waveshare-rs485-to-eth-converter/778679) 2026-03-27

Herstellerdokumente sind © ihrer jeweiligen Eigentümer. Sie werden so bereitgestellt, wie der Hersteller sie veröffentlicht hat, nur zur Information.

## Verwandte Dokumentation

- [Modbus Integration](https://taphome.com/de/compatibility/modbus-guide/)
- [Modbus](https://taphome.com/de/docs/integration/modbus/)
- [Einfache Konfiguration mit Vorlagen](https://taphome.com/de/docs/integration/modbus/templates/)
- [Modbus-Skripte und Prefetch](https://taphome.com/de/docs/script/modbus-scripts/)
- [Modbus-Funktionen](https://taphome.com/de/docs/script/modbus/)
- [Modbus-Datentypen](https://taphome.com/de/docs/script/modbus-data-types/)

