---
title: "Orno OR-WE-517"
description: "Contatore di energia trifase multitariffa Orno OR-WE-517 con Modbus RTU (RS-485). TapHome legge l'energia per fase e totale e 4 contatori tariffari."
url: "https://taphome.com/it/compatibility/orno-or-we-517/"
language: it
lastmod: 2026-10-08
generator: hugo
ai:
  topics: ["modbus-rtu","electric-meter","rs485","3-phase","energy-metering","din-rail","multitariff"]
  questions: ["Come integrare l'Orno OR-WE-517 con TapHome?","Cosa misura il template Orno OR-WE-517 in TapHome?","Come collegare l'Orno OR-WE-517 tramite RS-485 a TapHome?","Come configurare le fasce tariffarie sull'OR-WE-517?","Qual e' la differenza tra OR-WE-516 e OR-WE-517?","Come impostare l'indirizzo slave Modbus sull'OR-WE-517?"]
---

# Orno OR-WE-517

Comunicazione: Modbus RTU

- [Sito ufficiale Orno](https://www.orno.pl)

## Guida all'integrazione

L'Orno OR-WE-517 e' un contatore di energia trifase multitariffa per montaggio su guida DIN che comunica tramite Modbus RTU su RS-485. E' un contatore a collegamento diretto con portata nominale fino a 80 A per fase, certificato MID (Direttiva 2014/32/UE), e occupa 4,3 moduli su guida TH-35. Il template TapHome fornisce 11 contatori elettrici che coprono la corrente per fase, l'energia per fase, l'energia trifase totale e contatori a 4 tariffe, insieme ad attributi di servizio per tensione, potenza reattiva/apparente, fattore di potenza e suddivisione dell'energia bidirezionale (prelievo/immissione).

Tutti i registri di misura utilizzano la codifica IEEE 754 Float32 (2 parole Modbus per valore), letti tramite il codice funzione 03 (registri holding). Il template fornisce anche azioni di servizio per l'impostazione dell'orologio in tempo reale del contatore, la configurazione delle fasce tariffarie e la modifica dello slave ID Modbus.

## Collegamento hardware

### Cablaggio RS-485

L'OR-WE-517 dispone di un'interfaccia RS-485 integrata per la comunicazione Modbus RTU. Collegare il contatore al bus RS-485 del TapHome Core utilizzando un cavo di comunicazione schermato a due conduttori:

- Morsetto **A** sul contatore a **A+/D+** su TapHome RS-485
- Morsetto **B** sul contatore a **B-/D-** su TapHome RS-485

> [!WARNING]
> Utilizzare un cablaggio a **daisy-chain**. Le topologie a stella o a derivazione causano riflessioni del segnale ed errori di comunicazione. Il collegamento tra il convertitore e il contatore deve essere realizzato con un cavo di comunicazione schermato conforme allo standard RS-485.

> [!TIP]
> Per la configurazione iniziale e i test e' possibile utilizzare anche un convertitore USB-RS485 standard. Il convertitore non e' incluso nella confezione del contatore.

## Configurazione

### Parametri di comunicazione

Le impostazioni Modbus predefinite corrispondono al template TapHome senza necessita' di modifiche:

| Parametro | Predefinito | Intervallo |
|-----------|-------------|------------|
| Baud rate | 9600 bps | 1200, 2400, 4800, 9600 |
| Bit di dati | 8 | Fisso |
| Parita' | Pari | Fisso |
| Bit di stop | 1 | Fisso |
| Slave ID | 1 | 1--255 |

Il frame di comunicazione utilizza un formato a 11 bit: 1 bit di start, 8 bit di dati, 1 bit di parita' pari e 1 bit di stop con controllo CRC.

### Slave ID

Quando si collegano piu' contatori sullo stesso bus RS-485, ogni contatore deve avere uno Slave ID univoco. Lo Slave ID predefinito e' 1 (configurabile da 1 a 255 tramite il registro holding H:2). Dopo l'importazione del template TapHome, regolare lo Slave ID nelle impostazioni di connessione del modulo in modo che corrisponda al contatore fisico. Il template fornisce anche un'azione di servizio **Slave ID** per modificare l'indirizzo in remoto tramite Modbus.

Lo Slave ID corrente e il baud rate sono visibili sul display LCD del contatore (pagine 42 e 43 rispettivamente).

## Funzionalita' del dispositivo

Il template crea 11 dispositivi ModbusElectricityMeter e ModbusVariable organizzati in quattro gruppi: sensori di corrente per fase, contatori di energia per fase, un dispositivo di energia trifase totale e contatori di energia basati su tariffe.

### Monitoraggio della corrente per fase

Tre dispositivi forniscono la misura della corrente in tempo reale per ogni fase:

- **Corrente L1** — corrente fase 1 (H:22, A) con tensione L1 come attributo di servizio (H:14, V)
- **Corrente L2** — corrente fase 2 (H:24, A) con tensione L2 (H:16, V)
- **Corrente L3** — corrente fase 3 (H:26, A) con tensione L3 (H:18, V)

### Misurazione dell'energia per fase

Tre dispositivi monitorano il consumo di energia attiva e la domanda di potenza per fase con un set completo di attributi di servizio:

- **Fase L1** — energia attiva totale (H:258, kWh) e potenza attiva (H:30, kW). Gli attributi di servizio includono tensione, corrente, potenza reattiva (kVAr), potenza apparente (kVA), fattore di potenza e contatori di energia bidirezionali (prelievo/immissione di energia attiva e reattiva).
- **Fase L2** — energia attiva totale (H:260, kWh) e potenza attiva (H:32, kW). Stessi attributi di servizio per fase dell'L1.
- **Fase L3** — energia attiva totale (H:262, kWh) e potenza attiva (H:34, kW). Stessi attributi di servizio per fase dell'L1.

### Energia trifase totale

Un dispositivo fornisce i totali a livello di sistema:

- **Energia totale (trifase)** — energia attiva totale (H:256, kWh) e domanda di potenza attiva totale (H:28, kW). Gli attributi di servizio includono frequenza di rete (Hz), potenza reattiva totale (kVAr), potenza apparente totale (kVA), fattore di potenza totale e contatori di energia bidirezionali (prelievo/immissione di energia attiva e reattiva).

### Contatori di energia tariffari

Quattro dispositivi monitorano l'energia cumulativa per zona tariffaria (T1--T4):

- **Tariffa T1** a **Tariffa T4** — ciascuno riporta l'energia attiva totale (kWh) con attributi di servizio per l'energia attiva di prelievo/immissione e l'energia reattiva di prelievo/immissione/totale. I contatori tariffari monitorano solo l'energia cumulativa, non la domanda di potenza istantanea.

Il contatore supporta fino a 8 intervalli temporali al giorno (da lunedi' a domenica singolarmente) per l'assegnazione delle zone tariffarie T1--T4. Le fasce tariffarie sono configurabili tramite l'azione di servizio **Set Tariffs**, che consente di programmare gli intervalli per un giorno specifico o per tutti i giorni contemporaneamente.

> [!TIP]
> La capacita' a 4 tariffe e' il principale elemento di differenziazione dell'OR-WE-517 rispetto all'OR-WE-516 (che supporta RS-485 ma non ha la programmazione tariffaria). L'OR-WE-513 non ha ne' RS-485 ne' supporto tariffario.

### Azioni di servizio

Il template fornisce quattro azioni di servizio per la configurazione remota:

- **Date/Time** — impostazione dell'orologio interno in tempo reale del contatore (anno, mese, giorno, ora, minuti, secondi e giorno della settimana) tramite i registri H:60--H:65
- **Set Tariffs** — configurazione di fino a 8 intervalli tariffari giornalieri (T1--T4) per un giorno selezionato o per tutti i giorni contemporaneamente, scritti nei registri delle fasce tariffarie a partire da H:768
- **LCD Cycle time** — impostazione dell'intervallo di scorrimento automatico del display LCD (1--120 secondi)
- **Slave ID** — modifica dell'indirizzo Modbus del contatore (1--255) tramite il registro holding H:2

### Funzionalita' aggiuntive

L'OR-WE-517 espone anche registri per l'energia reattiva totale per fase (L1/L2/L3), numero di serie, versione firmware e hardware, un codice di configurazione combinato e un registro di assegnazione tariffaria per festivita'/fine settimana. Questi possono essere aggiunti in un futuro aggiornamento del template.

## Risoluzione dei problemi

### Nessuna comunicazione

1. Verificare i collegamenti dei morsetti RS-485 A/B -- invertire A e B se la comunicazione non funziona, poiche' le convenzioni di etichettatura variano tra i produttori
2. Confermare che il baud rate in TapHome corrisponda all'impostazione del contatore (predefinito 9600 bps, visibile sulla pagina LCD 43)
3. Verificare che lo Slave ID corrisponda (predefinito 1, visibile sulla pagina LCD 42 nel formato "Id 255" dove 255 e' l'indirizzo corrente)
4. Controllare che l'impostazione della parita' sia **Even** (8E1) -- questo contatore utilizza la parita' pari per impostazione predefinita, a differenza di alcuni contatori che utilizzano per impostazione predefinita nessuna parita' (8N1)

### Letture errate

1. Assicurarsi che il contatore sia cablato come sistema trifase a 4 fili con tutti e tre i conduttori di fase e il neutro collegati attraverso i morsetti del contatore
2. Per la misurazione bidirezionale (prelievo/immissione di energia), verificare la direzione del CT o la direzione del conduttore in base al flusso di energia -- un cablaggio invertito causa la registrazione dell'energia prelevata come energia immessa

### Comunicazione tramite convertitore Ethernet

L'OR-WE-517 puo' essere accessibile anche tramite un convertitore RS-485 a Ethernet (ad es. Waveshare RS485 to ETH). Quando si utilizza un tale convertitore, il tipo di protocollo deve essere impostato su **RTU over TCP** (non Modbus TCP standard). Il framing TCP standard non funziona con questo contatore.

## Dispositivi disponibili 11

Questi dispositivi compaiono in TapHome dopo l'importazione.

Orno OR-WE-517 Modulo

Attributi di servizio

|                     |                                                                                                                                   |
|---------------------|-----------------------------------------------------------------------------------------------------------------------------------|
| Slave ID            |                                                                                                                                   |
| Baud rate           |                                                                                                                                   |
| Tempo ciclo LCD     |                                                                                                                                   |
| Rapporto CT         | Rapporto del trasformatore di corrente — applicabile solo ai misuratori di tipo CT, non alle installazioni a collegamento diretto |
| Frequenza uscita S0 |                                                                                                                                   |
| Ora                 | Data e ora correnti dall'orologio in tempo reale interno del misuratore                                                           |
| Tariffe (Lu)        |                                                                                                                                   |
| Tariffe (Ma)        |                                                                                                                                   |
| Tariffe (Me)        |                                                                                                                                   |
| Tariffe (Gi)        |                                                                                                                                   |
| Tariffe (Ve)        |                                                                                                                                   |
| Tariffe (Sa)        |                                                                                                                                   |
| Tariffe (Do)        |                                                                                                                                   |

Azioni di servizio

|                 |                                                                                                                                         |
|-----------------|-----------------------------------------------------------------------------------------------------------------------------------------|
| Data/Ora        | Imposta l'orologio in tempo reale interno del misuratore — data, ora e giorno della settimana per il funzionamento del piano tariffario |
| Imposta tariffe | Configurazione di fino a 8 intervalli tariffari giornalieri (T1–T4) per un giorno selezionato o tutti i giorni in una volta             |
| Slave ID        | Modifica l'indirizzo Modbus slave (1–255) per configurazioni bus RS-485 con più misuratori                                              |
| Tempo ciclo LCD | Imposta l'intervallo di scorrimento automatico del display LCD in secondi                                                               |

Attributi di servizio

${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)
```

Azioni di servizio

Date/Time

Parametri: 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}

Parametri: 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

Parametri: Parameter1 (1–255 ID)

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

LCD Cycle time

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

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

Corrente L1 Variabile Solo lettura

Registro: H:22 Float Unità: A

Attributi di servizio

|             |
|-------------|
| Tensione L1 |

Lettura

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

Attributi di servizio

L1 ${electric\_voltage} \[V]

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

Corrente L2 Variabile Solo lettura

Registro: H:24 Float Unità: A

Attributi di servizio

|             |
|-------------|
| Tensione L2 |

Lettura

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

Attributi di servizio

L2 ${electric\_voltage} \[V]

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

Corrente L3 Variabile Solo lettura

Registro: H:26 Float Unità: A

Attributi di servizio

|             |
|-------------|
| Tensione L3 |

Lettura

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

Attributi di servizio

L3 ${electric\_voltage} \[V]

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

Fase L1 Contatore elettrico Solo lettura

Misuratore di energia fase 1 — energia attiva totale e potenza attiva con tensione, corrente, potenza reattiva/apparente, fattore di potenza e contatori di energia bidirezionali

Registro: H:258 (readtotalconsumption), H:30 (readdemand) Float Unità: kWh / kW

Attributi di servizio

|                          |
|--------------------------|
| Tensione                 |
| Corrente                 |
| Potenza reattiva         |
| Potenza apparente        |
| Fattore di potenza       |
| Energia attiva diretta   |
| Energia attiva inversa   |
| Energia reattiva diretta |
| Energia reattiva inversa |

Lettura consumo totale

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

Lettura domanda

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

Attributi di servizio

${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")
```

Fase L2 Contatore elettrico Solo lettura

Registro: H:260 (readtotalconsumption), H:32 (readdemand) Float Unità: kWh / kW

Attributi di servizio

|                          |
|--------------------------|
| Tensione                 |
| Corrente                 |
| Potenza reattiva         |
| Potenza apparente        |
| Fattore di potenza       |
| Energia attiva diretta   |
| Energia attiva inversa   |
| Energia reattiva diretta |
| Energia reattiva inversa |

Lettura consumo totale

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

Lettura domanda

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

Attributi di servizio

${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")
```

Fase L3 Contatore elettrico Solo lettura

Registro: H:262 (readtotalconsumption), H:34 (readdemand) Float Unità: kWh / kW

Attributi di servizio

|                          |
|--------------------------|
| Tensione                 |
| Corrente                 |
| Potenza reattiva         |
| Potenza apparente        |
| Fattore di potenza       |
| Energia attiva diretta   |
| Energia attiva inversa   |
| Energia reattiva diretta |
| Energia reattiva inversa |

Lettura consumo totale

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

Lettura domanda

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

Attributi di servizio

${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")
```

Tariffa T1 Contatore elettrico Solo lettura

Contatore cumulativo di energia tariffa 1 — energia attiva totale con dettaglio energia attiva/reattiva diretta e inversa

Registro: H:304 (readtotalconsumption) Float Unità: kWh

Attributi di servizio

|                          |
|--------------------------|
| Energia attiva diretta   |
| Energia attiva inversa   |
| Energia reattiva totale  |
| Energia reattiva diretta |
| Energia reattiva inversa |

Lettura consumo totale

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

Attributi di servizio

${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")
```

Tariffa T2 Contatore elettrico Solo lettura

Registro: H:316 (readtotalconsumption) Float Unità: kWh

Attributi di servizio

|                          |
|--------------------------|
| Energia attiva diretta   |
| Energia attiva inversa   |
| Energia reattiva totale  |
| Energia reattiva diretta |
| Energia reattiva inversa |

Lettura consumo totale

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

Attributi di servizio

${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")
```

Tariffa T3 Contatore elettrico Solo lettura

Registro: H:328 (readtotalconsumption) Float Unità: kWh

Attributi di servizio

|                          |
|--------------------------|
| Energia attiva diretta   |
| Energia attiva inversa   |
| Energia reattiva totale  |
| Energia reattiva diretta |
| Energia reattiva inversa |

Lettura consumo totale

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

Attributi di servizio

${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")
```

Tariffa T4 Contatore elettrico Solo lettura

Registro: H:340 (readtotalconsumption) Float Unità: kWh

Attributi di servizio

|                          |
|--------------------------|
| Energia attiva diretta   |
| Energia attiva inversa   |
| Energia reattiva totale  |
| Energia reattiva diretta |
| Energia reattiva inversa |

Lettura consumo totale

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

Attributi di servizio

${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")
```

Energia totale (3 fasi) Contatore elettrico Solo lettura

Totale sistema trifase — energia attiva e domanda di potenza con frequenza di rete, potenza reattiva/apparente, fattore di potenza e contatori di energia bidirezionali

Registro: H:256 (readtotalconsumption), H:28 (readdemand) Float Unità: kWh / kW

Attributi di servizio

|                           |
|---------------------------|
| Frequenza di rete         |
| Potenza reattiva totale   |
| Potenza apparente totale  |
| Fattore di potenza totale |
| Energia attiva diretta    |
| Energia attiva inversa    |
| Energia reattiva diretta  |
| Energia reattiva inversa  |

Lettura consumo totale

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

Lettura domanda

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

Attributi di servizio

${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")
```

**Connessione:** Modbus RTU • 9600 baud• 8E1 • Slave ID: $\[SlaveId]

Possibili miglioramenti (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

## Parametri di importazione

Inserisci questi valori quando importi l'XML.

| Richiesto nell'app | Predefinito   |
|--------------------|---------------|
| Slave ID           | `1`           |
| Indirizzo IP       | `192.168.1.0` |

## Fonti

- 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

I documenti del produttore sono © dei rispettivi proprietari. Sono forniti così come pubblicati dal produttore, solo a titolo informativo.

## Documentazione correlata

- [Modbus Integration](https://taphome.com/it/compatibility/modbus-guide/)
- [Modbus - Configurazione](https://taphome.com/it/docs/integration/modbus/)
- [Configurazione semplice utilizzando modelli](https://taphome.com/it/docs/integration/modbus/templates/)
- [Script Modbus e prefetch](https://taphome.com/it/docs/script/modbus-scripts/)
- [Funzioni Modbus](https://taphome.com/it/docs/script/modbus/)
- [Tipi di dati Modbus](https://taphome.com/it/docs/script/modbus-data-types/)

