---
title: "Orno OR-WE-517"
description: "Orno OR-WE-517 trójfazowy wielotaryfowy licznik energii z Modbus RTU (RS-485). TapHome odczytuje energię fazową i całkowitą oraz 4 liczniki taryfowe."
url: "https://taphome.com/pl/compatibility/orno-or-we-517/"
language: pl
lastmod: 2026-10-08
generator: hugo
ai:
  topics: ["modbus-rtu","electric-meter","rs485","3-phase","energy-metering","din-rail","multitariff"]
  questions: ["Jak zintegrować Orno OR-WE-517 z TapHome?","Co mierzy szablon Orno OR-WE-517 w TapHome?","Jak podłączyć Orno OR-WE-517 przez RS-485 do TapHome?","Jak skonfigurować harmonogramy taryfowe na OR-WE-517?","Jaka jest różnica między OR-WE-516 a OR-WE-517?","Jak ustawić adres slave Modbus na OR-WE-517?"]
---

# Orno OR-WE-517

Komunikacja: Modbus RTU

- [Oficjalna strona Orno](https://www.orno.pl)

## Poradnik integracji

Orno OR-WE-517 to trójfazowy wielotaryfowy licznik energii na szynę DIN, komunikujący się przez Modbus RTU po RS-485. Jest to licznik bezpośredniego podłączenia o znamionowym prądzie do 80 A na fazę, z certyfikatem MID (Dyrektywa 2014/32/UE), zajmujący 4,3 modułu na szynie TH-35. Szablon TapHome udostępnia 11 liczników energii elektrycznej obejmujących prąd fazowy, energię fazową, całkowitą energię trójfazową i 4-taryfowe liczniki energii, wraz z atrybutami serwisowymi dla napięcia, mocy biernej/pozornej, współczynnika mocy i dwukierunkowego (pobór/oddanie) rozkładu energii.

Wszystkie rejestry pomiarowe wykorzystują kodowanie IEEE 754 Float32 (2 słowa Modbus na wartość), odczytywane przez kod funkcji 03 (rejestry holding). Szablon udostępnia również akcje serwisowe do ustawiania zegara czasu rzeczywistego licznika, konfigurowania harmonogramów taryfowych i zmiany slave ID Modbus.

## Podłączenie sprzętowe

### Okablowanie RS-485

OR-WE-517 posiada wbudowany interfejs RS-485 do komunikacji Modbus RTU. Podłącz licznik do magistrali TapHome Core RS-485 za pomocą dwużyłowego ekranowanego kabla komunikacyjnego:

- Zacisk **A** na liczniku do **A+/D+** na TapHome RS-485
- Zacisk **B** na liczniku do **B-/D-** na TapHome RS-485

> [!WARNING]
> Zastosuj okablowanie **daisy-chain**. Topologie gwiazdy lub odgałęzień powodują odbicia sygnału i błędy komunikacji. Połączenie między konwerterem a licznikiem powinno być wykonane ekranowanym kablem komunikacyjnym przystosowanym do standardu RS-485.

> [!TIP]
> Do wstępnej konfiguracji i testowania można również użyć standardowego konwertera USB-RS485. Konwerter nie jest dołączony do licznika.

## Konfiguracja

### Parametry komunikacji

Domyślne ustawienia Modbus odpowiadają szablonowi TapHome bez konieczności modyfikacji:

| Parametr | Domyślnie | Zakres |
|----------|-----------|--------|
| Prędkość transmisji | 9600 bps | 1200, 2400, 4800, 9600 |
| Bity danych | 8 | Stałe |
| Parzystość | Parzysta | Stała |
| Bity stopu | 1 | Stałe |
| Slave ID | 1 | 1--255 |

Ramka komunikacyjna wykorzystuje format 11-bitowy: 1 bit startu, 8 bitów danych, 1 bit parzystości parzystej i 1 bit stopu z kontrolą CRC.

### Slave ID

Przy podłączeniu wielu liczników na tej samej magistrali RS-485 każdy licznik musi mieć unikalny Slave ID. Domyślny Slave ID to 1 (konfigurowalny od 1 do 255 przez rejestr holding H:2). Po zaimportowaniu szablonu TapHome dostosuj Slave ID w ustawieniach połączenia modułu, aby odpowiadał fizycznemu licznikowi. Szablon udostępnia również akcję serwisową **Slave ID** do zdalnej zmiany adresu przez Modbus.

Bieżący Slave ID i prędkość transmisji są widoczne na wyświetlaczu LCD licznika (strony 42 i 43).

## Możliwości urządzenia

Szablon tworzy 11 urządzeń ModbusElectricityMeter i ModbusVariable zorganizowanych w cztery grupy: czujniki prądu fazowego, liczniki energii fazowej, całkowite urządzenie trójfazowe i taryfowe liczniki energii.

### Monitorowanie prądu fazowego

Trzy urządzenia zapewniają pomiar prądu w czasie rzeczywistym dla każdej fazy:

- **Prąd L1** — prąd fazy 1 (H:22, A) z napięciem L1 jako atrybut serwisowy (H:14, V)
- **Prąd L2** — prąd fazy 2 (H:24, A) z napięciem L2 (H:16, V)
- **Prąd L3** — prąd fazy 3 (H:26, A) z napięciem L3 (H:18, V)

### Pomiar energii fazowej

Trzy urządzenia śledzą zużycie energii czynnej i zapotrzebowanie na moc dla każdej fazy z kompleksowym zestawem atrybutów serwisowych:

- **Faza L1** — całkowita energia czynna (H:258, kWh) i moc czynna (H:30, kW). Atrybuty serwisowe obejmują napięcie, prąd, moc bierną (kVAr), moc pozorną (kVA), współczynnik mocy i dwukierunkowe liczniki energii (pobór/oddanie energii czynnej i biernej).
- **Faza L2** — całkowita energia czynna (H:260, kWh) i moc czynna (H:32, kW). Te same atrybuty serwisowe fazowe co L1.
- **Faza L3** — całkowita energia czynna (H:262, kWh) i moc czynna (H:34, kW). Te same atrybuty serwisowe fazowe co L1.

### Całkowita energia trójfazowa

Jedno urządzenie dostarcza sumy systemowe:

- **Energia całkowita (trójfazowa)** — całkowita energia czynna (H:256, kWh) i całkowite zapotrzebowanie na moc czynną (H:28, kW). Atrybuty serwisowe obejmują częstotliwość sieci (Hz), całkowitą moc bierną (kVAr), całkowitą moc pozorną (kVA), całkowity współczynnik mocy i dwukierunkowe liczniki energii (pobór/oddanie energii czynnej i biernej).

### Taryfowe liczniki energii

Cztery urządzenia śledzą kumulatywną energię według strefy taryfowej (T1--T4):

- **Taryfa T1** do **Taryfa T4** — każda raportuje całkowitą energię czynną (kWh) z atrybutami serwisowymi dla energii czynnej poboru/oddania i energii biernej poboru/oddania/całkowitej. Liczniki taryfowe śledzą wyłącznie energię kumulatywną, nie chwilowe zapotrzebowanie na moc.

Licznik obsługuje do 8 interwałów czasowych dziennie (od poniedziałku do niedzieli indywidualnie) do przypisywania stref taryfowych T1--T4. Harmonogramy taryfowe są konfigurowalne przez akcję serwisową **Set Tariffs**, która umożliwia programowanie interwałów dla konkretnego dnia lub wszystkich dni jednocześnie.

> [!TIP]
> Możliwość obsługi 4 taryf jest kluczowym wyróżnikiem OR-WE-517 w porównaniu z OR-WE-516 (który obsługuje RS-485, ale nie ma planowania taryfowego). OR-WE-513 nie ma ani RS-485, ani obsługi taryf.

### Akcje serwisowe

Szablon udostępnia cztery akcje serwisowe do zdalnej konfiguracji:

- **Date/Time** — ustawienie wewnętrznego zegara czasu rzeczywistego licznika (rok, miesiąc, dzień, godzina, minuty, sekundy i dzień tygodnia) przez rejestry H:60--H:65
- **Set Tariffs** — konfiguracja do 8 dziennych interwałów taryfowych (T1--T4) dla wybranego dnia lub wszystkich dni jednocześnie, zapisywanych do rejestrów harmonogramu taryfowego od H:768
- **LCD Cycle time** — ustawienie interwału automatycznego przewijania wyświetlacza LCD (1--120 sekund)
- **Slave ID** — zmiana adresu Modbus licznika (1--255) przez rejestr holding H:2

### Dodatkowe możliwości

OR-WE-517 udostępnia również rejestry dla całkowitej energii biernej fazowej (L1/L2/L3), numeru seryjnego, wersji firmware i sprzętu, kombinowanego kodu konfiguracyjnego i rejestru przypisania taryf świątecznych/weekendowych. Mogą one zostać dodane w przyszłej aktualizacji szablonu.

## Rozwiązywanie problemów

### Brak komunikacji

1. Sprawdź połączenia zacisków RS-485 A/B -- zamień A i B, jeśli komunikacja nie działa, ponieważ konwencje oznaczania różnią się między producentami
2. Potwierdź, że prędkość transmisji w TapHome odpowiada ustawieniu licznika (domyślnie 9600 bps, widoczna na stronie LCD 43)
3. Sprawdź, czy Slave ID się zgadza (domyślnie 1, widoczne na stronie LCD 42 w formacie "Id 255", gdzie 255 to bieżący adres)
4. Upewnij się, że ustawienie parzystości to **Even** (8E1) -- ten licznik domyślnie używa parzystości parzystej, w odróżnieniu od niektórych liczników, które domyślnie nie używają parzystości (8N1)

### Nieprawidłowe odczyty

1. Upewnij się, że licznik jest okablowany jako system trójfazowy 4-przewodowy ze wszystkimi trzema przewodami fazowymi i przewodem neutralnym przeprowadzonymi przez zaciski licznika
2. W przypadku pomiaru dwukierunkowego (pobór/oddanie energii) sprawdź kierunek CT lub kierunek przewodu zgodnie z przepływem energii -- odwrócone okablowanie powoduje, że energia pobrana rejestruje się jako oddana

### Komunikacja przez konwerter Ethernet

OR-WE-517 jest również dostępny przez konwerter RS-485 na Ethernet (np. Waveshare RS485 to ETH). Przy użyciu takiego konwertera typ protokołu musi być ustawiony na **RTU over TCP** (nie standardowy Modbus TCP). Standardowe ramkowanie TCP nie działa z tym licznikiem.

## Dostępne urządzenia 11

Te urządzenia pojawią się w TapHome po imporcie.

Orno OR-WE-517 Moduł

Atrybuty serwisowe

|                         |                                                                                                                      |
|-------------------------|----------------------------------------------------------------------------------------------------------------------|
| Slave ID                |                                                                                                                      |
| Prędkość transmisji     |                                                                                                                      |
| Czas cyklu LCD          |                                                                                                                      |
| Przekładnia CT          | Przekładnia przekładnika prądowego — dotyczy wyłącznie liczników typu CT, nie instalacji z podłączeniem bezpośrednim |
| Współczynnik wyjścia S0 |                                                                                                                      |
| Czas                    | Bieżąca data i czas z wewnętrznego zegara czasu rzeczywistego licznika                                               |
| Taryfy (Pn)             |                                                                                                                      |
| Taryfy (Wt)             |                                                                                                                      |
| Taryfy (Śr)             |                                                                                                                      |
| Taryfy (Cz)             |                                                                                                                      |
| Taryfy (Pt)             |                                                                                                                      |
| Taryfy (So)             |                                                                                                                      |
| Taryfy (Nd)             |                                                                                                                      |

Akcje serwisowe

|                |                                                                                                                  |
|----------------|------------------------------------------------------------------------------------------------------------------|
| Data/Czas      | Ustawia wewnętrzny zegar czasu rzeczywistego licznika — data, czas i dzień tygodnia dla obsługi planu taryfowego |
| Ustaw taryfy   | Konfiguracja do 8 dziennych interwałów taryfowych (T1–T4) dla wybranego dnia lub wszystkich dni jednocześnie     |
| Slave ID       | Zmiana adresu Modbus slave (1–255) dla konfiguracji magistrali RS-485 z wieloma licznikami                       |
| Czas cyklu LCD | Ustawienie interwału automatycznego przewijania wyświetlacza LCD w sekundach                                     |

Atrybuty serwisowe

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

Akcje serwisowe

Date/Time

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

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

Parametry: Parameter1 (1–255 ID)

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

LCD Cycle time

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

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

Prąd L1 Zmienna Tylko do odczytu

Rejestr: H:22 Float Jednostka: A

Atrybuty serwisowe

|             |
|-------------|
| Napięcie L1 |

Odczyt

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

Atrybuty serwisowe

L1 ${electric\_voltage} \[V]

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

Prąd L2 Zmienna Tylko do odczytu

Rejestr: H:24 Float Jednostka: A

Atrybuty serwisowe

|             |
|-------------|
| Napięcie L2 |

Odczyt

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

Atrybuty serwisowe

L2 ${electric\_voltage} \[V]

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

Prąd L3 Zmienna Tylko do odczytu

Rejestr: H:26 Float Jednostka: A

Atrybuty serwisowe

|             |
|-------------|
| Napięcie L3 |

Odczyt

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

Atrybuty serwisowe

L3 ${electric\_voltage} \[V]

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

Faza L1 Licznik energii Tylko do odczytu

Licznik energii fazy 1 — całkowita energia czynna i moc czynna z napięciem, prądem, mocą bierną/pozorną, współczynnikiem mocy i dwukierunkowymi licznikami energii

Rejestr: H:258 (readtotalconsumption), H:30 (readdemand) Float Jednostka: kWh / kW

Atrybuty serwisowe

|                        |
|------------------------|
| Napięcie               |
| Prąd                   |
| Moc bierna             |
| Moc pozorna            |
| Współczynnik mocy      |
| Energia czynna pobrana |
| Energia czynna oddana  |
| Energia bierna pobrana |
| Energia bierna oddana  |

Odczyt całkowitego zużycia

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

Odczyt zapotrzebowania

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

Atrybuty serwisowe

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

Faza L2 Licznik energii Tylko do odczytu

Rejestr: H:260 (readtotalconsumption), H:32 (readdemand) Float Jednostka: kWh / kW

Atrybuty serwisowe

|                        |
|------------------------|
| Napięcie               |
| Prąd                   |
| Moc bierna             |
| Moc pozorna            |
| Współczynnik mocy      |
| Energia czynna pobrana |
| Energia czynna oddana  |
| Energia bierna pobrana |
| Energia bierna oddana  |

Odczyt całkowitego zużycia

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

Odczyt zapotrzebowania

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

Atrybuty serwisowe

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

Faza L3 Licznik energii Tylko do odczytu

Rejestr: H:262 (readtotalconsumption), H:34 (readdemand) Float Jednostka: kWh / kW

Atrybuty serwisowe

|                        |
|------------------------|
| Napięcie               |
| Prąd                   |
| Moc bierna             |
| Moc pozorna            |
| Współczynnik mocy      |
| Energia czynna pobrana |
| Energia czynna oddana  |
| Energia bierna pobrana |
| Energia bierna oddana  |

Odczyt całkowitego zużycia

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

Odczyt zapotrzebowania

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

Atrybuty serwisowe

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

Taryfa T1 Licznik energii Tylko do odczytu

Skumulowany licznik energii taryfa 1 — całkowita energia czynna z podziałem na energię czynną/bierną pobraną i oddaną

Rejestr: H:304 (readtotalconsumption) Float Jednostka: kWh

Atrybuty serwisowe

|                          |
|--------------------------|
| Energia czynna pobrana   |
| Energia czynna oddana    |
| Całkowita energia bierna |
| Energia bierna pobrana   |
| Energia bierna oddana    |

Odczyt całkowitego zużycia

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

Atrybuty serwisowe

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

Taryfa T2 Licznik energii Tylko do odczytu

Rejestr: H:316 (readtotalconsumption) Float Jednostka: kWh

Atrybuty serwisowe

|                          |
|--------------------------|
| Energia czynna pobrana   |
| Energia czynna oddana    |
| Całkowita energia bierna |
| Energia bierna pobrana   |
| Energia bierna oddana    |

Odczyt całkowitego zużycia

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

Atrybuty serwisowe

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

Taryfa T3 Licznik energii Tylko do odczytu

Rejestr: H:328 (readtotalconsumption) Float Jednostka: kWh

Atrybuty serwisowe

|                          |
|--------------------------|
| Energia czynna pobrana   |
| Energia czynna oddana    |
| Całkowita energia bierna |
| Energia bierna pobrana   |
| Energia bierna oddana    |

Odczyt całkowitego zużycia

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

Atrybuty serwisowe

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

Taryfa T4 Licznik energii Tylko do odczytu

Rejestr: H:340 (readtotalconsumption) Float Jednostka: kWh

Atrybuty serwisowe

|                          |
|--------------------------|
| Energia czynna pobrana   |
| Energia czynna oddana    |
| Całkowita energia bierna |
| Energia bierna pobrana   |
| Energia bierna oddana    |

Odczyt całkowitego zużycia

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

Atrybuty serwisowe

${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 całkowita (3-fazowa) Licznik energii Tylko do odczytu

Suma systemu 3-fazowego — energia czynna i zapotrzebowanie na moc z częstotliwością sieci, mocą bierną/pozorną, współczynnikiem mocy i dwukierunkowymi licznikami energii

Rejestr: H:256 (readtotalconsumption), H:28 (readdemand) Float Jednostka: kWh / kW

Atrybuty serwisowe

|                             |
|-----------------------------|
| Częstotliwość sieci         |
| Całkowita moc bierna        |
| Całkowita moc pozorna       |
| Całkowity współczynnik mocy |
| Energia czynna pobrana      |
| Energia czynna oddana       |
| Energia bierna pobrana      |
| Energia bierna oddana       |

Odczyt całkowitego zużycia

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

Odczyt zapotrzebowania

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

Atrybuty serwisowe

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

**Połączenie:** Modbus RTU • 9600 baud• 8E1 • Slave ID: $\[SlaveId]

Możliwe ulepszenia (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

## Parametry importu

Te wartości podajesz podczas importu pliku XML.

| Pytanie w aplikacji | Domyślnie     |
|---------------------|---------------|
| Slave ID            | `1`           |
| Adres IP            | `192.168.1.0` |

## Źródła

- 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

Dokumenty producentów są © ich właścicieli. Udostępniamy je w formie opublikowanej przez producenta, wyłącznie w celach informacyjnych.

## Powiązana dokumentacja

- [Modbus Integration](https://taphome.com/pl/compatibility/modbus-guide/)
- [Modbus](https://taphome.com/pl/docs/integration/modbus/)
- [Prosta konfiguracja za pomocą szablonów](https://taphome.com/pl/docs/integration/modbus/templates/)
- [Skrypty Modbus i prefetch](https://taphome.com/pl/docs/script/modbus-scripts/)
- [Funkcje Modbus](https://taphome.com/pl/docs/script/modbus/)
- [Typy danych Modbus](https://taphome.com/pl/docs/script/modbus-data-types/)

