TapHome

Orno OR-WE-515

Modbus RTU
Trimis de
Ultima actualizare: 03. 2026
Orno OR-WE-515

Orno OR-WE-515 este un contor electric monofazat multitarif pentru montaj pe șină DIN, care comunică prin Modbus RTU pe RS-485. Are o lățime de doar 18 mm (1 modul DIN) și măsoară energia activă, energia reactivă, tensiunea, curentul, puterea, factorul de putere și frecvența. Principala diferență față de modelul mai simplu OR-WE-514 este suportul pentru 4 tarife independente (vârf maxim, vârf, gol, normal), cu programarea configurabilă a tarifelor orare și o baterie cu litiu încorporată pentru ceasul de timp real.

Șablonul TapHome oferă 6 dispozitive: un contor de energie totală cu puterea instantanee absorbită, 4 contoare de energie pentru tarifele individuale (T1–T4) și un senzor de curent electric. Acțiunile de service la nivel de modul permit configurarea programului tarifelor, setarea ceasului RTC, schimbarea adresei slave Modbus, ajustarea baud rate-ului și setarea timpului de ciclare a afișajului LCD — totul de la distanță, din TapHome.

Conectarea hardware

Cablarea RS-485

OR-WE-515 are o interfață RS-485 cu 3 borne pe partea dreaptă a contorului. Conectați-l în topologie liniară (daisy-chain):

  • Borna 23 (A) la A+/D+ pe RS-485 TapHome
  • Borna 24 (G) la GND pe RS-485 TapHome
  • Borna 25 (B) la B-/D- pe RS-485 TapHome

Celelalte borne sunt pentru circuitul de forță: borna 1 este L-IN (intrarea fazei), borna 3 este L-OUT (ieșirea fazei), iar cele două borne N sunt pentru conductorul de nul.

Dacă convertorul RS-485 nu are bornă G (masă), conexiunea de masă de pe borna 24 se poate omite. Pentru o comunicație fiabilă pe cabluri mai lungi se recomandă totuși conectarea GND.

Deconectați întotdeauna alimentarea înainte de montare. Prin bornele contorului trec până la 100 A. Asigurați dimensionarea corectă a conductoarelor (borne cu șurub de până la 25 mm2) și sigilați capacul bornelor după cablare.

Configurare

Parametri de comunicație

Setările Modbus implicite corespund șablonului TapHome:

ParametruImplicitOpțiuni
Baud rate96001200, 2400, 4800, 9600
Biți de date8Fix
ParitatePară (Even)Fix (8E1)
Biți de stop1Fix
Slave ID11–255

Antetul PDF-ului cu descrierea registrelor indică „N81” (fără paritate), dar manualul de instalare și implementările din comunitate (biblioteca Arduino, AGG Software) confirmă constant 8E1 (paritate pară) ca setare corectă. În TapHome folosiți paritatea pară (Even).

Slave ID

Când conectați mai multe contoare pe aceeași magistrală RS-485, fiecare contor trebuie să aibă un Slave ID unic. Slave ID-ul implicit este 1 și se poate configura în intervalul 1–255. Șablonul TapHome include acțiunea de service Setare Slave ID, care scrie în registrul holding H:272 și permite schimbarea adresei de la distanță, fără acces fizic la contor.

Baud rate

Baud rate-ul se poate schimba de la distanță cu acțiunea de service Setare baud rate. Opțiunile disponibile sunt 1200, 2400, 4800 și 9600 bps. Valoarea se stochează în registrul holding H:273 ca număr întreg codificat (1=1200, 2=2400, 3=4800, 4=9600). După schimbarea baud rate-ului, actualizați corespunzător setările de conexiune ale modulului în TapHome.

Funcțiile dispozitivului

Șablonul creează 6 dispozitive, organizate în două grupuri: măsurarea energiei și măsurarea curentului. Toate registrele folosesc codul de funcție Modbus 03H (registre holding).

Măsurarea energiei

Cinci dispozitive ModbusElectricityMeter urmăresc consumul de energie:

  • Energie totală — energia activă totală (H:40960, UInt32 / 100 în kWh) și puterea activă instantanee absorbită (H:320, Int32 / 1000 în kW). Dispozitivul are 4 atribute de service: frecvența rețelei (Hz), puterea reactivă (kVAr), puterea aparentă (kVA) și factorul de putere (0,000–1,000).
  • Tarif T1 — energia activă acumulată în intervalele orare ale tarifului 1 (H:40962, UInt32 / 100 în kWh). Include un atribut de service pentru energia reactivă a tarifului T1 (kVArh).
  • Tarif T2 — energia activă acumulată în intervalele orare ale tarifului 2 (H:40964, UInt32 / 100 în kWh). Include un atribut de service pentru energia reactivă a tarifului T2 (kVArh).
  • Tarif T3 — energia activă acumulată în intervalele orare ale tarifului 3 (H:40966, UInt32 / 100 în kWh). Include un atribut de service pentru energia reactivă a tarifului T3 (kVArh).
  • Tarif T4 — energia activă acumulată în intervalele orare ale tarifului 4 (H:40968, UInt32 / 100 în kWh). Include un atribut de service pentru energia reactivă a tarifului T4 (kVArh).

Cele 4 tarife corespund prețurilor diferențiate pe intervale orare: 1 = vârf maxim (cel mai mare preț), 2 = vârf, 3 = gol (în afara orelor de vârf), 4 = normal. Până la 8 intervale orare pe zi stabilesc când se aplică fiecare tarif.

Măsurarea curentului
  • Curent electric — curentul instantaneu pe fază (H:313, UInt32 / 1000 în A). Include un atribut de service pentru tensiune (H:305, V).
Gestionarea tarifelor și a ceasului

Modulul pune la dispoziție 5 acțiuni de service pentru configurarea de la distanță:

  • Setare dată/oră — setează ceasul RTC încorporat (an, lună, zi, oră, minute, secunde). OR-WE-515 are o baterie cu litiu care menține ceasul în timpul întreruperilor de curent.
  • Setare tarife — configurează până la 8 intervale orare pentru zilele lucrătoare. Fiecare interval definește ora de început (oră, minut) și tariful (0=dezactivat, 1=vârf maxim, 2=vârf, 3=gol, 4=normal). Programul implicit pornește tariful 2 (vârf) la 07:00 și tariful 3 (gol) la 22:00.
  • Setare Slave ID — schimbă adresa Modbus (1–255).
  • Setare baud rate — schimbă viteza de comunicație RS-485 (1200/2400/4800/9600 bps).
  • Setare timp de ciclare LCD — ajustează intervalul de derulare automată a afișajului (1–120 secunde).

Atributele de service ale modulului afișează Slave ID-ul curent, baud rate-ul, data/ora și cele 8 intervale orare configurate, cu tarifele atribuite.

Programul tarifelor configurat din TapHome se aplică doar intervalelor orare din zilele lucrătoare (registrele 0x8100–0x810F). OR-WE-515 acceptă și programe separate pentru weekend (0x8110) și sărbători legale (0x8130), dar acestea nu sunt disponibile în șablonul actual. Le puteți configura cu software-ul Orno sau le puteți adăuga în TapHome ca dispozitive Modbus personalizate.

Funcții suplimentare

OR-WE-515 oferă și un registru de tensiune de înaltă precizie (UInt32, rezoluție 0,001 V), ca alternativă la registrul UInt16 folosit de șablon. Contorul acceptă măsurarea bidirecțională (putere activă directă și inversă), contoare de energie exportată pentru fiecare tarif, totaluri combinate ale energiei bidirecționale, energia reactivă totală pentru toate tarifele și distorsiunea armonică totală (THD) atât pentru tensiune, cât și pentru curent. Acestea pot fi adăugate într-o actualizare viitoare a șablonului.

Rezolvarea problemelor

Nu există comunicare
  1. Verificați cablajul RS-485: borna 23 = A, borna 25 = B — dacă comunicarea nu funcționează, inversați A și B
  2. Verificați dacă paritatea setată în TapHome este Even (8E1), nu None
  3. Verificați dacă baud rate-ul din TapHome corespunde contorului (implicit 9600)
  4. Verificați dacă Slave ID-ul din TapHome corespunde contorului (implicit 1)
  5. La cabluri lungi, asigurați-vă că GND (borna 24) este conectat
Valori de energie incorecte
  1. Verificați modul de măsurare al contorului — opțiunea 1 (implicită) măsoară energia activă și reactivă; opțiunea 2 măsoară energia directă și inversă (bidirecțională)
  2. Contoarele tarifelor (T1–T4) acumulează energie doar în intervalele orare atribuite — dacă toate programele tarifelor sunt dezactivate (setate la 0), contoarele tarifelor rămân la zero, în timp ce Energie totală continuă să crească
  3. Constanta contorului se poate configura (100, 1000 sau 2000 imp/kWh) — valoarea implicită de 1000 imp/kWh corespunde scalării registrelor din șablon
Notă despre scalarea energiei reactive

Documentația oficială a registrelor indică scalarea 0,01 kVArh pentru registrele de energie reactivă, în timp ce șablonul TapHome folosește un divizor /1000 pentru atributele de service ale energiei reactive pe tarife. Această diferență poate duce la o abatere de scalare de 10x la valorile energiei reactive. Dacă valorile energiei reactive par incorecte, comparați-le cu afișajul LCD al contorului.

Dispozitive disponibile

Orno OR-WE-515 Modul
Atribute de service
Slave ID
Baud rate
Dată/orăCitirea ceasului de timp real încorporat — data și ora menținute de bateria cu litiu
Interval orar 1Intervalul 1 din programul tarifelor — ora de început (HH:MM) și tariful (vârf maxim, vârf, gol sau normal)
Interval orar 2Intervalul 2 din programul tarifelor — ora de început și tariful atribuit
Interval orar 3Intervalul 3 din programul tarifelor — ora de început și tariful atribuit
Interval orar 4Intervalul 4 din programul tarifelor — ora de început și tariful atribuit
Interval orar 5Intervalul 5 din programul tarifelor — ora de început și tariful atribuit
Interval orar 6Intervalul 6 din programul tarifelor — ora de început și tariful atribuit
Interval orar 7Intervalul 7 din programul tarifelor — ora de început și tariful atribuit
Interval orar 8Intervalul 8 din programul tarifelor — ora de început și tariful atribuit
Frecvență
Tensiune
Putere reactivă pe fază
Acțiuni de service
Setare dată/orăSetează ceasul de timp real încorporat — an, lună, zi, oră, minute, secunde
Setare tarifeConfigurează până la 8 intervale orare pentru zilele lucrătoare — fiecare cu ora de început și tariful (vârf maxim, vârf, gol, normal)
Setare Slave ID
Setare timp de ciclare LCDAjustează intervalul de derulare automată a afișajului LCD (1–120 secunde)
Setare baud rate

OR-WE-515

Atribute de service
${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
Acțiuni de service
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)
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}
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)
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
Parametri: Parameter1 (1–255 ID)
modbusw(H, 0x110, Uint16, ID)
LCD Cycle time
Parametri: Time [s] (1–120 t)
modbusw(H, 0x0d, Uint16, t)
Baud rate
Parametri: Baud rate
modbusw(H,0x111,int16,Br)
Curent electric Variabilă Doar citire

Curentul instantaneu pe fază (A), cu atribut de service pentru tensiune

Registru: H:313 UInt32 Unitate: A numeric
Atribute de service
Tensiune

Curent electric

Citire
MODBUSR(H, 0x139, UInt32)/1000
Atribute de service
Voltage [V]
round(modbusr(H, 0x131, uint16)*0.01)
Energie totală Contor electric Doar citire

Consumul total de energie activă (kWh) și puterea instantanee absorbită (kW), cu frecvența rețelei, puterea reactivă, puterea aparentă și factorul de putere

Registru: H:40960 (readtotalconsumption), H:320 (readdemand) UInt32 / Int32 Unitate: kWh / kW numeric
Atribute de service
Frecvența rețelei
Putere reactivă
Putere aparentă
Factor de putere

Energie totală

Citirea consumului total
MODBUSR(H, 0xA000, UInt32)/100
Citirea cererii
MODBUSR(H, 0x140, Int32)/1000
Atribute de service
${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")
Tarif T1 Contor electric Doar citire

Energia activă acumulată în intervalele orare ale tarifului 1 (vârf maxim), cu contor de energie reactivă

Registru: H:40962 (readtotalconsumption) UInt32 Unitate: kWh numeric
Atribute de service
Energie reactivă totală

Tarif T1

Citirea consumului total
MODBUSR(H, 0xA002, UInt32)/100
Atribute de service
${total_reactive_energy} [kVArh]
tostring(modbusr(H, 0xA01E + 2,UInt32)/1000, "F2")
Tarif T2 Contor electric Doar citire

Energia activă acumulată în intervalele orare ale tarifului 2 (vârf), cu contor de energie reactivă

Registru: H:40964 (readtotalconsumption) UInt32 Unitate: kWh numeric
Atribute de service
Energie reactivă totală

Tarif T2

Citirea consumului total
MODBUSR(H, 0xA004, UInt32)/100
Atribute de service
Total Reactive Energy [kwarh]
tostring(modbusr(H, 0xA01E + 4,UInt32)/1000, "F2")
Tarif T3 Contor electric Doar citire

Energia activă acumulată în intervalele orare ale tarifului 3 (gol / în afara orelor de vârf), cu contor de energie reactivă

Registru: H:40966 (readtotalconsumption) UInt32 Unitate: kWh numeric
Atribute de service
Energie reactivă totală

Tarif T3

Citirea consumului total
MODBUSR(H, 0xA006, UInt32)/100
Atribute de service
Total Reactive Energy
tostring(modbusr(H, 0xA01E + 6,UInt32)/1000, "F2")
Tarif T4 Contor electric Doar citire

Energia activă acumulată în intervalele orare ale tarifului 4 (normal), cu contor de energie reactivă

Registru: H:40968 (readtotalconsumption) UInt32 Unitate: kWh numeric
Atribute de service
Energie reactivă totală

Tarif T4

Citirea consumului total
MODBUSR(H, 0xA008, UInt32)/100
Atribute de service
${total_reactive_energy} [kVArh]
tostring(modbusr(H, 0xA01E + 8,UInt32)/1000, "F2")
Conexiune: Modbus RTU • 9600 baud• 8E1 • Slave ID: $[SlaveId]
Îmbunătățiri posibile (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, %

Surse

  • 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

Ați găsit o problemă la acest șablon de dispozitiv?

Spuneți-ne ce nu funcționează, ce lipsește sau cum ar trebui să se comporte șablonul. Feedbackul dvs. ne ajută să păstrăm catalogul corect.

Verificat de TapHome

Doriți să folosiți acest șablon în TapHome Core?

Deschideți acest șablon în Customer Portal pentru a-l aplica într-una dintre locuințele dvs. sau pentru a propune o îmbunătățire și a o trimite înapoi în catalog.

Deschideți în portal