TapHome

Orno OR-WE-515

Modbus RTU
Dodane przez
Ostatnia aktualizacja: 03. 2026
Orno OR-WE-515

Orno OR-WE-515 to jednofazowy wielotaryfowy licznik energii na szynę DIN, komunikujący się przez Modbus RTU po RS-485. Przy szerokości zaledwie 18 mm (1 moduł DIN) mierzy energię czynną, energię bierną, napięcie, prąd, moc, współczynnik mocy i częstotliwość. Główna różnica w stosunku do prostszego OR-WE-514 to obsługa 4 niezależnych taryf (szczyt, wysoka, dolina, płaska) z konfigurowalnym planowaniem stref czasowych i wbudowaną baterią litową dla zegara czasu rzeczywistego.

Szablon TapHome udostępnia 6 urządzeń: całkowity licznik energii z chwilowym poborem mocy, 4 indywidualne liczniki taryfowe (T1–T4) i czujnik prądu elektrycznego. Akcje serwisowe na poziomie modułu umożliwiają konfigurację planów taryfowych, ustawianie zegara RTC, zmianę adresu Modbus slave, dostosowanie prędkości transmisji i sterowanie czasem cyklu wyświetlacza LCD — wszystko zdalnie przez TapHome.

Podłączenie sprzętowe

Okablowanie RS-485

OR-WE-515 posiada 3-zaciskowy interfejs RS-485 po prawej stronie licznika. Podłącz w topologii łańcuchowej (daisy-chain):

  • Zacisk 23 (A) do A+/D+ na TapHome RS-485
  • Zacisk 24 (G) do GND na TapHome RS-485
  • Zacisk 25 (B) do B-/D- na TapHome RS-485

Pozostałe zaciski służą do podłączenia linii zasilającej: Zacisk 1 to L-IN (wejście fazy), Zacisk 3 to L-OUT (wyjście fazy), a dwa zaciski N są dla przewodu neutralnego.

Jeśli konwerter RS-485 nie posiada zacisku G (masa), podłączenie masy na zacisku 24 można pominąć. Dla niezawodnej komunikacji na dłuższych trasach kablowych zaleca się jednak podłączenie GND.

Przed instalacją zawsze odłącz zasilanie. Licznik obsługuje prąd do 100 A przez swoje zaciski. Zapewnij odpowiedni przekrój przewodów (zaciski śrubowe do 25 mm2) i zamknij osłonę zacisków po okablowaniu.

Konfiguracja

Parametry komunikacji

Domyślne ustawienia Modbus odpowiadają szablonowi TapHome:

ParametrWartość domyślnaOpcje
Prędkość transmisji96001200, 2400, 4800, 9600
Bity danych8Stałe
ParzystośćEvenStała (8E1)
Bity stopu1Stałe
Slave ID11–255

Nagłówek PDF opisu rejestrów podaje „N81" (bez parzystości), ale instrukcja instalacji i implementacje społeczności (biblioteka Arduino, AGG Software) konsekwentnie potwierdzają 8E1 (parzystość parzysta) jako prawidłowe ustawienie. W TapHome użyj parzystości parzystej.

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 w zakresie 1–255. Szablon TapHome zawiera akcję serwisową Set Slave ID, która zapisuje do rejestru holding H:272, umożliwiając zdalną zmianę adresu bez fizycznego dostępu do licznika.

Prędkość transmisji

Prędkość transmisji można zmienić zdalnie za pomocą akcji serwisowej Set Baud Rate. Dostępne opcje to 1200, 2400, 4800 i 9600 bps. Wartość jest przechowywana w rejestrze holding H:273 jako zakodowana liczba całkowita (1=1200, 2=2400, 3=4800, 4=9600). Po zmianie prędkości transmisji zaktualizuj ustawienia połączenia modułu w TapHome.

Funkcje urządzenia

Szablon tworzy 6 urządzeń zorganizowanych w dwie grupy: pomiar energii i pomiar prądu. Wszystkie rejestry używają kodu funkcji Modbus 03H (rejestry holding).

Pomiar energii

Pięć urządzeń ModbusElectricityMeter monitoruje zużycie energii:

  • Total Energy — całkowita energia czynna (H:40960, UInt32 / 100 w kWh) i chwilowy pobór mocy czynnej (H:320, Int32 / 1000 w kW). To urządzenie zawiera 4 atrybuty serwisowe: częstotliwość sieci (Hz), moc bierna (kVAr), moc pozorna (kVA) i współczynnik mocy (0,000–1,000).
  • Tariff T1 — energia czynna akumulowana w okresach taryfowych 1 (H:40962, UInt32 / 100 w kWh). Zawiera atrybut serwisowy energii biernej dla T1 (kVArh).
  • Tariff T2 — energia czynna akumulowana w okresach taryfowych 2 (H:40964, UInt32 / 100 w kWh). Zawiera atrybut serwisowy energii biernej dla T2 (kVArh).
  • Tariff T3 — energia czynna akumulowana w okresach taryfowych 3 (H:40966, UInt32 / 100 w kWh). Zawiera atrybut serwisowy energii biernej dla T3 (kVArh).
  • Tariff T4 — energia czynna akumulowana w okresach taryfowych 4 (H:40968, UInt32 / 100 w kWh). Zawiera atrybut serwisowy energii biernej dla T4 (kVArh).

Cztery stawki taryfowe odpowiadają strefom czasowym zużycia: 1 = szczyt (najwyższa stawka), 2 = wysoka, 3 = dolina (poza szczytem), 4 = płaska. Do 8 interwałów czasowych dziennie określa, kiedy obowiązuje dana taryfa.

Pomiar prądu
  • Electric Current — chwilowy prąd w linii (H:313, UInt32 / 1000 w A). Zawiera atrybut serwisowy napięcia (H:305, V).
Zarządzanie taryfami i zegarem

Moduł udostępnia 5 akcji serwisowych do zdalnej konfiguracji:

  • Set Date/Time — ustawia wbudowany zegar RTC (rok, miesiąc, dzień, godzina, minuty, sekundy). OR-WE-515 posiada baterię litową, która utrzymuje zegar podczas przerw w zasilaniu.
  • Set Tariffs — konfiguruje do 8 interwałów czasowych w dni robocze. Każdy interwał definiuje czas rozpoczęcia (godzina, minuta) i stawkę taryfową (0=wyłączony, 1=szczyt, 2=wysoka, 3=dolina, 4=płaska). Domyślny harmonogram uruchamia taryfę 2 (wysoką) o 07:00 i taryfę 3 (dolinę) o 22:00.
  • Set Slave ID — zmienia adres Modbus (1–255).
  • Set Baud Rate — zmienia prędkość komunikacji RS-485 (1200/2400/4800/9600 bps).
  • Set LCD Cycle Time — ustawia interwał automatycznego przewijania wyświetlacza (1–120 sekund).

Atrybuty serwisowe na poziomie modułu wyświetlają bieżący Slave ID, prędkość transmisji, datę/czas i 8 skonfigurowanych harmonogramów okresów czasowych z przypisaniami taryfowymi.

Plan taryfowy skonfigurowany przez TapHome dotyczy tylko dni roboczych (rejestry 0x8100–0x810F). OR-WE-515 obsługuje również oddzielne harmonogramy weekendowe (0x8110) i świąteczne (0x8130), ale nie są one dostępne w obecnym szablonie. Można je skonfigurować za pomocą oprogramowania Orno lub dodać jako niestandardowe urządzenia Modbus w TapHome.

Dodatkowe funkcje

OR-WE-515 udostępnia również rejestr napięcia wysokiej precyzji (UInt32, rozdzielczość 0,001 V) jako alternatywę dla rejestru UInt16 używanego w szablonie. Licznik obsługuje pomiar dwukierunkowy (moc czynna do przodu i wstecz), liczniki eksportu energii według taryf, łączone dwukierunkowe liczniki całkowite, całkowitą energię bierną ze wszystkich taryf oraz całkowite zniekształcenie harmoniczne (THD) dla napięcia i prądu. Mogą zostać dodane w przyszłej aktualizacji szablonu.

Rozwiązywanie problemów

Brak komunikacji
  1. Sprawdź okablowanie RS-485: zacisk 23 = A, zacisk 25 = B — zamień A i B, jeśli komunikacja nie działa
  2. Upewnij się, że ustawienie parzystości w TapHome to Even (8E1), nie None
  3. Sprawdź, czy prędkość transmisji w TapHome odpowiada licznikowi (domyślnie 9600)
  4. Sprawdź, czy Slave ID w TapHome odpowiada licznikowi (domyślnie 1)
  5. Przy długich trasach kablowych zapewnij podłączenie GND (zacisk 24)
Nieprawidłowe odczyty energii
  1. Sprawdź tryb pomiaru licznika — Opcja 1 (domyślna) mierzy energię czynną i bierną; Opcja 2 mierzy energię w przód i wstecz (dwukierunkową)
  2. Liczniki taryfowe (T1–T4) akumulują energię tylko w przypisanych okresach czasowych — jeśli wszystkie plany taryfowe są wyłączone (ustawione na 0), liczniki taryfowe pozostają na zeru, podczas gdy Total Energy nadal nalicza
  3. Stała licznika jest konfigurowalna (100, 1000 lub 2000 imp/kWh) — domyślna wartość 1000 imp/kWh odpowiada skalowaniu rejestrów w szablonie
Uwaga dotycząca skalowania energii biernej

Oficjalna dokumentacja rejestrów określa skalowanie 0,01 kVArh dla rejestrów energii biernej, podczas gdy szablon TapHome używa dzielnika /1000 dla atrybutów serwisowych energii biernej według taryf. Ta różnica może powodować 10-krotne przesunięcie skalowania wartości energii biernej. Jeśli wartości energii biernej wydają się nieprawidłowe, porównaj je z wyświetlaczem LCD na fizycznym liczniku.

Dostępne urządzenia

Orno OR-WE-515 Moduł
Atrybuty serwisowe
Slave ID
Prędkość transmisji
Data/CzasOdczyt wbudowanego zegara czasu rzeczywistego — data i czas podtrzymywane baterią litową
Okres czasowy 1Plan taryfowy slot 1 — czas rozpoczęcia (HH:MM) i stawka (szczyt, wysoka, dolina lub płaska)
Okres czasowy 2Plan taryfowy slot 2 — czas rozpoczęcia i przypisanie stawki
Okres czasowy 3Plan taryfowy slot 3 — czas rozpoczęcia i przypisanie stawki
Okres czasowy 4Plan taryfowy slot 4 — czas rozpoczęcia i przypisanie stawki
Okres czasowy 5Plan taryfowy slot 5 — czas rozpoczęcia i przypisanie stawki
Okres czasowy 6Plan taryfowy slot 6 — czas rozpoczęcia i przypisanie stawki
Okres czasowy 7Plan taryfowy slot 7 — czas rozpoczęcia i przypisanie stawki
Okres czasowy 8Plan taryfowy slot 8 — czas rozpoczęcia i przypisanie stawki
Częstotliwość
Napięcie
Moc bierna fazy
Akcje serwisowe
Ustaw datę/czasUstawia wbudowany zegar czasu rzeczywistego — rok, miesiąc, dzień, godzina, minuty, sekundy
Ustaw taryfyKonfiguracja do 8 interwałów czasowych w dni robocze — każdy z czasem rozpoczęcia i stawką taryfową (szczyt, wysoka, dolina, płaska)
Ustaw Slave ID
Ustaw czas cyklu LCDUstawienie interwału automatycznego przewijania wyświetlacza LCD (1--120 sekund)
Ustaw prędkość transmisji

OR-WE-515

Atrybuty serwisowe
${device_SlaveId}
modbusr(H, 0x110, Int16)
${baud_rate} [bps]
switch(getbyte(modbusr(H, 0x111, Int16),0),0,0,1,1200,2,2400,3,4800,4,9600,"Invalid")
${time}
var Y := getbyte( modbusr(H,0x8120,uint16),1);
var M := getbyte( modbusr(H,0x8120,uint16),0);
var D := getbyte( modbusr(H,0x8121,uint16),1);
var H := getbyte( modbusr(H,0x8121,uint16),0);
var min := getbyte( modbusr(H,0x8122,uint16),1);
var sec := getbyte( modbusr(H,0x8122,uint16), 0);

tostring(tostring(H,"D2") + ":" + tostring(min,"D2") + ":" + tostring(sec, "D2") + " " + tostring(D,"D2") + "." + tostring(M,"D2") + ".20" + Y)


{1. time period starting time}, {rate}
var date := modbusr(H, 0x8100, INT16);
var belong := modbusr(H,0x8101,INT16);
tostring(tostring(getbyte(date,1),"D2") + ":" + tostring(getbyte(date,0),"D2") + ", " + belong + " (" + switch(belong,1,"sharp",2,"peak",3,"Valley",4,"flat","NaN")+")")
{2. time period starting time}, {rate}
var date := modbusr(H, 0x8100+2, INT16);
var belong := modbusr(H,0x8101+2,INT16);
tostring(tostring(getbyte(date,1),"D2") + ":" + tostring(getbyte(date,0),"D2") + ", " + belong + " (" + switch(belong,1,"sharp",2,"peak",3,"Valley",4,"flat","NaN")+")")
{3. time period starting time}, {rate}
var date := modbusr(H, 0x8100+4, INT16);
var belong := modbusr(H,0x8101+4,INT16);
tostring(tostring(getbyte(date,1),"D2") + ":" + tostring(getbyte(date,0),"D2") + ", " + belong + " (" + switch(belong,1,"sharp",2,"peak",3,"Valley",4,"flat","NaN")+")")
{4. time period starting time}, {rate}
var date := modbusr(H, 0x8100+6, INT16);
var belong := modbusr(H,0x8101+6,INT16);
tostring(tostring(getbyte(date,1),"D2") + ":" + tostring(getbyte(date,0),"D2") + ", " + belong + " (" + switch(belong,1,"sharp",2,"peak",3,"Valley",4,"flat","NaN")+")")
{5. time period starting time}, {rate}
var date := modbusr(H, 0x8100+8, INT16);
var belong := modbusr(H,0x8101+8,INT16);
tostring(tostring(getbyte(date,1),"D2") + ":" + tostring(getbyte(date,0),"D2") + ", " + belong + " (" + switch(belong,1,"sharp",2,"peak",3,"Valley",4,"flat","NaN")+")")
{6. time period starting time}, {rate}
var date := modbusr(H, 0x8100+10, INT16);
var belong := modbusr(H,0x8101+10,INT16);
tostring(tostring(getbyte(date,1),"D2") + ":" + tostring(getbyte(date,0),"D2") + ", " + belong + " (" + switch(belong,1,"sharp",2,"peak",3,"Valley",4,"flat","NaN")+")")
{7. time period starting time}, {rate}
var date := modbusr(H, 0x8100+12, INT16);
var belong := modbusr(H,0x8101+12,INT16);
tostring(tostring(getbyte(date,1),"D2") + ":" + tostring(getbyte(date,0),"D2") + ", " + belong + " (" + switch(belong,1,"sharp",2,"peak",3,"Valley",4,"flat","NaN")+")")
{8. time period starting time}, {rate}
var date := modbusr(H, 0x8100+14, INT16);
var belong := modbusr(H,0x8101+14,INT16);
tostring(tostring(getbyte(date,1),"D2") + ":" + tostring(getbyte(date,0),"D2") + ", " + belong + " (" + switch(belong,1,"sharp",2,"peak",3,"Valley",4,"flat","NaN")+")")
Frequency [Hz]
round(modbusr(h,0x130,uint16)*0.01)
Voltage [V]
round(modbusr(h,0x131,int16)*0.01)
Split phase reactive power [kwar]
round(modbusr(h, 0x148,uint32)*0.001*10)/10
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)
var out1 := (YY<<8) + MM;
var out2 := (DD<<8) + HH;
var out3 := (MI<<8) + SS;

modbusw(H, 0x8120, uint16, out1);
modbusw(H, 0x8121, uint16, out2);
modbusw(H, 0x8122, uint16, out3);



#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)
modbusw(H, 0x8100, uint16, (HH1<<8) + MI1);
modbusw(H, 0x8101, uint16, T1);

modbusw(H, 0x8100+2, uint16, (HH2<<8) + MI2);
modbusw(H, 0x8101+2, uint16, T2);

modbusw(H, 0x8100+4, uint16, (HH3<<8) + MI3);
modbusw(H, 0x8101+4, uint16, T3);

modbusw(H, 0x8100+6, uint16, (HH4<<8) + MI4);
modbusw(H, 0x8101+6, uint16, T4);

modbusw(H, 0x8100+8, uint16, (HH5<<8) + MI5);
modbusw(H, 0x8101+8, uint16, T5);

modbusw(H, 0x8100+10, uint16, (HH6<<8) + MI6);
modbusw(H, 0x8101+10, uint16, T6);

modbusw(H, 0x8100+12, uint16, (HH7<<8) + MI7);
modbusw(H, 0x8101+12, uint16, T7);

modbusw(H, 0x8100+14, uint16, (HH8<<8) + MI8);
modbusw(H, 0x8101+14, uint16, T8);
Slave ID
Parametry: Parameter1 (1–255 ID)
modbusw(H, 0x110, Uint16, ID)
LCD Cycle time
Parametry: Time [s] (1–120 t)
modbusw(H, 0x0d, Uint16, t)
Baud rate
Parametry: Baud rate
modbusw(H,0x111,int16,Br)
Prąd elektryczny Zmienna Tylko do odczytu

Chwilowy jednofazowy prąd w linii (A) z atrybutem serwisowym napięcia

Rejestr: H:313 UInt32 Jednostka: A numeric
Atrybuty serwisowe
Napięcie

Prąd elektryczny

Odczyt
MODBUSR(H, 0x139, UInt32)/1000
Atrybuty serwisowe
Voltage [V]
round(modbusr(H, 0x131, uint16)*0.01)
Energia całkowita Licznik energii Tylko do odczytu

Całkowite zużycie energii czynnej (kWh) i chwilowy pobór mocy (kW) z częstotliwością sieci, mocą bierną, mocą pozorną i współczynnikiem mocy

Rejestr: H:40960 (readtotalconsumption), H:320 (readdemand) UInt32 / Int32 Jednostka: kWh / kW numeric
Atrybuty serwisowe
Częstotliwość sieci
Moc bierna
Moc pozorna
Współczynnik mocy

Energia całkowita

Odczyt całkowitego zużycia
MODBUSR(H, 0xA000, UInt32)/100
Odczyt zapotrzebowania
MODBUSR(H, 0x140, Int32)/1000
Atrybuty serwisowe
${grid_frequency} [Hz]
tostring(modbusr(H, 0x130,UInt16)/100, "F2")
${reactive_power} [kVAr]
tostring(modbusr(H, 0x148,Int32)/1000, "F2")
${apparent_power} [kVA]
tostring(modbusr(H, 0x150,Int32)/1000, "F2")
${power_factor}
tostring(modbusr(H, 0x158,Int16)/1000, "F2")
Taryfa T1 Licznik energii Tylko do odczytu

Energia czynna akumulowana w okresach taryfowych 1 (szczyt) z licznikiem energii biernej

Rejestr: H:40962 (readtotalconsumption) UInt32 Jednostka: kWh numeric
Atrybuty serwisowe
Całkowita energia bierna

Taryfa T1

Odczyt całkowitego zużycia
MODBUSR(H, 0xA002, UInt32)/100
Atrybuty serwisowe
${total_reactive_energy} [kVArh]
tostring(modbusr(H, 0xA01E + 2,UInt32)/1000, "F2")
Taryfa T2 Licznik energii Tylko do odczytu

Energia czynna akumulowana w okresach taryfowych 2 (wysoka) z licznikiem energii biernej

Rejestr: H:40964 (readtotalconsumption) UInt32 Jednostka: kWh numeric
Atrybuty serwisowe
Całkowita energia bierna

Taryfa T2

Odczyt całkowitego zużycia
MODBUSR(H, 0xA004, UInt32)/100
Atrybuty serwisowe
Total Reactive Energy [kwarh]
tostring(modbusr(H, 0xA01E + 4,UInt32)/1000, "F2")
Taryfa T3 Licznik energii Tylko do odczytu

Energia czynna akumulowana w okresach taryfowych 3 (dolina / poza szczytem) z licznikiem energii biernej

Rejestr: H:40966 (readtotalconsumption) UInt32 Jednostka: kWh numeric
Atrybuty serwisowe
Całkowita energia bierna

Taryfa T3

Odczyt całkowitego zużycia
MODBUSR(H, 0xA006, UInt32)/100
Atrybuty serwisowe
Total Reactive Energy
tostring(modbusr(H, 0xA01E + 6,UInt32)/1000, "F2")
Taryfa T4 Licznik energii Tylko do odczytu

Energia czynna akumulowana w okresach taryfowych 4 (płaska) z licznikiem energii biernej

Rejestr: H:40968 (readtotalconsumption) UInt32 Jednostka: kWh numeric
Atrybuty serwisowe
Całkowita energia bierna

Taryfa T4

Odczyt całkowitego zużycia
MODBUSR(H, 0xA008, UInt32)/100
Atrybuty serwisowe
${total_reactive_energy} [kVArh]
tostring(modbusr(H, 0xA01E + 8,UInt32)/1000, "F2")
Połączenie: Modbus RTU • 9600 baud• 8E1 • Slave ID: $[SlaveId]
Możliwe ulepszenia (8)
  • H:312 (0x138) Voltage (high-precision UInt32) — UInt32 voltage register with 0.001V resolution — template uses H:305 (UInt16, 0.01V) instead
  • H:320 (0x140) — export Active Power (export/negative) — Template reads H:320 for total power but does not split into import/export — no bidirectional energy separation
  • H:0xA00A–0xA00E Tariff T1–T4 Export Active Energy — Per-tariff export (reverse) energy counters — template only reads import direction
  • H:0xA010 Total Active Energy (combined import+export) — Combined bidirectional total — template uses H:0xA000 (import only)
  • H:0xA01C Total Reactive Energy (all tariffs) — Grand total reactive energy across all tariffs — template only reads per-tariff reactive counters
  • H:0xA01E (40990) Total Reactive Energy (import) — Total reactive import energy — base address used by per-tariff SA formulas (0xA01E + offset)
  • H:0x160 (352) Current THD — Total harmonic distortion of current, %
  • H:0x168 (360) Voltage THD — Total harmonic distortion of voltage, %

Źródła

  • Orno OR-WE-514 & OR-WE-515 Register Description
    2026-03-27
    PDF
  • Orno OR-WE-512/514/515 Installation Manual
    PDF
  • AGG Software — OR-WE-514/515 Modbus Register Map
  • OR_WE_Energy_Meter Arduino Library — Register Definitions
    github.com 2026-03-27