TapHome

Orno OR-WE-517

Modbus RTU
Přidal
Poslední aktualizace: 03. 2026
Orno OR-WE-517

Orno OR-WE-517 je třífázový multitarifní elektroměr na DIN lištu, který komunikuje přes Modbus RTU po RS-485. Jedná se o přímé připojení s jmenovitým proudem do 80 A na fázi, certifikací MID (směrnice 2014/32/EU) a šířkou 4,3 modulu na liště TH-35. Šablona TapHome poskytuje 11 elektroměrů pokrývajících proud po fázích, energii po fázích, celkovou třífázovou energii a 4-tarifní počítadla energie spolu se servisními atributy pro napětí, jalový/zdánlivý výkon, účiník a obousměrné (příjem/výdej) rozložení energie.

Všechny měřicí registry používají kódování IEEE 754 Float32 (2 Modbus slova na hodnotu), čtené přes funkční kód 03 (holding registry). Šablona také poskytuje servisní akce pro nastavení hodin reálného času měřiče, konfiguraci tarifních plánů a změnu Modbus slave ID.

Hardwarové zapojení

Kabeláž RS-485

OR-WE-517 má vestavěné rozhraní RS-485 pro komunikaci Modbus RTU. Připojte měřič ke sběrnici TapHome Core RS-485 pomocí stíněného komunikačního kabelu se dvěma žílami:

  • A svorka na měřiči k A+/D+ na TapHome RS-485
  • B svorka na měřiči k B-/D- na TapHome RS-485

Použijte zapojení typu daisy-chain. Hvězdicová nebo odbočková topologie způsobuje odrazy signálu a chyby komunikace. Propojení mezi převodníkem a měřičem by mělo být provedeno stíněným komunikačním kabelem přizpůsobeným standardu RS-485.

Pro úvodní konfiguraci a testování lze použít i standardní USB-RS485 převodník. Převodník není součástí balení měřiče.

Konfigurace

Komunikační parametry

Výchozí nastavení Modbus odpovídají šabloně TapHome bez nutnosti úprav:

ParametrVýchozíRozsah
Přenosová rychlost9600 bps1200, 2400, 4800, 9600
Datové bity8Fixní
ParitaSudáFixní
Stop bity1Fixní
Slave ID11–255

Komunikační rámec používá 11bitový formát: 1 start bit, 8 datových bitů, 1 bit sudé parity a 1 stop bit s kontrolou CRC.

Slave ID

Při připojení více měřičů na stejnou sběrnici RS-485 musí mít každý měřič unikátní Slave ID. Výchozí Slave ID je 1 (konfigurovatelné od 1 do 255 přes holding registr H:2). Po importu šablony TapHome upravte Slave ID v nastavení připojení modulu tak, aby odpovídalo fyzickému měřiči. Šablona také poskytuje servisní akci Slave ID pro vzdálenou změnu adresy přes Modbus.

Aktuální Slave ID a přenosová rychlost jsou viditelné na LCD displeji měřiče (stránky 42 a 43).

Možnosti zařízení

Šablona vytváří 11 zařízení ModbusElectricityMeter a ModbusVariable organizovaných do tří skupin: snímače proudu po fázích, elektroměry po fázích a tarifní počítadla energie. Celkové třífázové zařízení agreguje všechny fáze s dalšími systémovými atributy.

Monitorování proudu po fázích

Tři zařízení poskytují měření proudu v reálném čase pro každou fázi:

  • L1 Proud — proud fáze 1 (H:22, A) s napětím L1 jako servisní atribut (H:14, V)
  • L2 Proud — proud fáze 2 (H:24, A) s napětím L2 (H:16, V)
  • L3 Proud — proud fáze 3 (H:26, A) s napětím L3 (H:18, V)
Měření energie po fázích

Tři zařízení sledují spotřebu činné energie a výkonový odběr po fázích s komplexní sadou servisních atributů:

  • Fáze L1 — celková činná energie (H:258, kWh) a činný výkon (H:30, kW). Servisní atributy zahrnují napětí, proud, jalový výkon (kVAr), zdánlivý výkon (kVA), účiník a obousměrná počítadla energie (příjem/výdej činné a jalové energie).
  • Fáze L2 — celková činná energie (H:260, kWh) a činný výkon (H:32, kW). Stejné servisní atributy po fázích jako L1.
  • Fáze L3 — celková činná energie (H:262, kWh) a činný výkon (H:34, kW). Stejné servisní atributy po fázích jako L1.
Celková třífázová energie

Jedno zařízení poskytuje systémové součty:

  • Celková energie (3-fázová) — celková činná energie (H:256, kWh) a celkový odběr činného výkonu (H:28, kW). Servisní atributy zahrnují frekvenci sítě (Hz), celkový jalový výkon (kVAr), celkový zdánlivý výkon (kVA), celkový účiník a obousměrná počítadla energie (příjem/výdej činné a jalové energie).
Tarifní počítadla energie

Čtyři zařízení sledují kumulativní energii podle tarifních pásem (T1–T4):

  • Tarif T1Tarif T4 — každý uvádí celkovou činnou energii (kWh) se servisními atributy pro příjem/výdej činné energie a příjem/výdej/celkovou jalovou energii. Tarifní měřiče sledují pouze kumulativní energii, nikoliv okamžitý výkonový odběr.

Měřič podporuje až 8 časových intervalů denně (pondělí až neděle jednotlivě) pro přiřazení tarifních pásem T1–T4. Tarifní plány jsou konfigurovatelné přes servisní akci Set Tariffs, která umožňuje naprogramovat intervaly pro konkrétní den nebo všechny dny najednou.

4-tarifní schopnost je klíčovým odlišením OR-WE-517 oproti OR-WE-516 (který podporuje RS-485, ale nemá tarifní plánování). OR-WE-513 nemá ani RS-485, ani podporu tarifů.

Servisní akce

Šablona poskytuje tři servisní akce pro vzdálenou konfiguraci:

  • Date/Time — nastavení interních hodin reálného času měřiče (rok, měsíc, den, hodina, minuty, sekundy a den v týdnu) přes registry H:60–H:65
  • Set Tariffs — konfigurace až 8 denních tarifních intervalů (T1–T4) pro vybraný den nebo všechny dny najednou, zápis do registrů tarifního plánu od H:768
  • LCD Cycle time — nastavení intervalu automatického posouvání LCD displeje (1–120 sekund)
Další možnosti

OR-WE-517 také zpřístupňuje registry pro celkovou jalovou energii po fázích (L1/L2/L3), sériové číslo, verzi firmwaru a hardwaru, kombinovaný konfigurační kód a registr přiřazení tarifů pro svátky/víkendy. Tyto lze přidat v budoucí aktualizaci šablony.

Řešení problémů

Žádná komunikace
  1. Ověřte zapojení svorek RS-485 A/B – prohoďte A a B, pokud komunikace nefunguje, protože konvence označování se liší mezi výrobci
  2. Potvrďte, že přenosová rychlost v TapHome odpovídá nastavení měřiče (výchozí 9600 bps, viditelná na LCD stránce 43)
  3. Ověřte, že Slave ID odpovídá (výchozí 1, viditelné na LCD stránce 42 ve formátu “Id 255”, kde 255 je aktuální adresa)
  4. Zkontrolujte, že nastavení parity je Even (8E1) – tento měřič standardně používá sudou paritu, na rozdíl od některých měřičů, které mají výchozí žádnou paritu (8N1)
Nesprávné údaje
  1. Ujistěte se, že měřič je zapojen jako třífázový 4-vodičový systém se všemi třemi fázovými vodiči a nulovým vodičem propojenými přes svorky měřiče
  2. Pro obousměrné měření (příjem/výdej energie) ověřte směr CT nebo směr vodiče podle toku energie – obrácená kabeláž způsobí, že přijímaná energie se zaregistruje jako odeslaná
Komunikace přes Ethernet převodník

OR-WE-517 lze připojit také přes RS-485 na Ethernet převodník (např. Waveshare RS485 to ETH). Při použití takového převodníku musí být typ protokolu nastaven na RTU over TCP (nikoliv standardní Modbus TCP). Standardní TCP rámování s tímto měřičem nefunguje.

Dostupná zařízení

Orno OR-WE-517 Modul
Servisní atributy
Slave ID
Přenosová rychlost
Čas cyklu LCD
Poměr CTPřevod proudového transformátoru — platí pouze pro měřiče typu CT, nikoli pro přímé připojení
Výstupní sazba S0
ČasAktuální datum a čas z interních hodin reálného času měřiče
Tarify (Po)
Tarify (Út)
Tarify (St)
Tarify (Čt)
Tarify (Pá)
Tarify (So)
Tarify (Ne)
Servisní akce
Datum/ČasNastaví interní hodiny reálného času měřiče — datum, čas a den v týdnu pro provoz tarifního plánu
Nastavit tarifyKonfigurace až 8 denních tarifních intervalů (T1–T4) pro vybraný den nebo všechny dny najednou
Slave IDZměna adresy Modbus slave (1–255) pro konfigurace sběrnice RS-485 s více měřiči
Čas cyklu LCDNastavení intervalu automatického posouvání LCD displeje v sekundách

OR-WE-517

Servisní atributy
${device_SlaveId}
modbusr(H, 0x02, Uint16)
${baud_rate} [bps]
modbusr(H, 0x03, Uint16)
LCD ${cycle_time} [s]
modbusr(H, 0x0d, Uint16)
CT Rate
modbusr(H, 0x08, Uint16)
S0 output rate [imp/kWh]
modbusr(H, 0x09, Float)
${time}
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)
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)
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)
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)
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)
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)
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)
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)
Servisní akce
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
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
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)
modbusw(H, 0x02, Uint16, ID)
LCD Cycle time
Parametry: Time [s] (1–120 t)
modbusw(H, 0x0d, Uint16, t)
Proud L1 Proměnná Pouze ke čtení
Registr: H:22 Float Jednotka: A
Servisní atributy
Napětí L1

Proud L1

Čtení
MODBUSR(H, 22, Float)
Servisní atributy
L1 ${electric_voltage} [V]
round(modbusr(H, 0x0e, Float)*10)/10
Proud L2 Proměnná Pouze ke čtení
Registr: H:24 Float Jednotka: A
Servisní atributy
Napětí L2

Proud L2

Čtení
MODBUSR(H, 24, Float)
Servisní atributy
L2 ${electric_voltage} [V]
round(modbusr(H, 0x10, Float)*10)/10
Proud L3 Proměnná Pouze ke čtení
Registr: H:26 Float Jednotka: A
Servisní atributy
Napětí L3

Proud L3

Čtení
MODBUSR(H, 26, Float)
Servisní atributy
L3 ${electric_voltage} [V]
round(modbusr(H, 0x12, Float)*10)/10
Fáze L1 Elektroměr Pouze ke čtení

Měřič energie fáze 1 — celková činná energie a činný výkon s napětím, proudem, jalový/zdánlivý výkon, účiník a obousměrné čítače energie

Registr: H:258 (readtotalconsumption), H:30 (readdemand) Float Jednotka: kWh / kW
Servisní atributy
Napětí
Proud
Jalový výkon
Zdánlivý výkon
Účiník
Činná energie odběr
Činná energie dodávka
Jalová energie odběr
Jalová energie dodávka

Fáze L1

Čtení celkové spotřeby
MODBUSR(H, 0x102, Float)
Čtení odběru
MODBUSR(H, 0x1e, Float)
Servisní atributy
${electric_voltage} [V]
tostring(modbusr(H, 0x0e,Float), "F2")
${electric_current} [A]
tostring(modbusr(H, 0x16,Float), "F2")
${reactive_power} [kVAr]
tostring(modbusr(H, 0x26,Float), "F2")
${apparent_power} [kVA]
tostring(modbusr(H, 0x2e,Float), "F2")
${power_factor}
tostring(modbusr(H, 0x36,Float), "F2")
${forward_active_energy} [kWh]
tostring(modbusr(H, 0x10a,Float), "F2")
${reverse_active_energy} [kWh]
tostring(modbusr(H, 0x112,Float), "F2")
${forward_reactive_energy} [kVArh]
tostring(modbusr(H, 0x122,Float), "F2")
${reverse_reactive_energy} [kVArh]
tostring(modbusr(H, 0x12a,Float), "F2")
Fáze L2 Elektroměr Pouze ke čtení
Registr: H:260 (readtotalconsumption), H:32 (readdemand) Float Jednotka: kWh / kW
Servisní atributy
Napětí
Proud
Jalový výkon
Zdánlivý výkon
Účiník
Činná energie odběr
Činná energie dodávka
Jalová energie odběr
Jalová energie dodávka

Fáze L2

Čtení celkové spotřeby
MODBUSR(H, 0x104, Float)
Čtení odběru
MODBUSR(H, 0x20, Float)
Servisní atributy
${electric_voltage} [V]
tostring(modbusr(H, 0x10,Float), "F2")
${electric_current} [A]
tostring(modbusr(H, 0x18,Float), "F2")
${reactive_power} [kVAr]
tostring(modbusr(H, 0x28,Float), "F2")
${apparent_power} [kVA]
tostring(modbusr(H, 0x30,Float), "F2")
${power_factor}
tostring(modbusr(H, 0x38,Float), "F2")
${forward_active_energy} [kWh]
tostring(modbusr(H, 0x10c,Float), "F2")
${reverse_active_energy} [kWh]
tostring(modbusr(H, 0x114,Float), "F2")
${forward_reactive_energy} [kVArh]
tostring(modbusr(H, 0x124,Float), "F2")
${reverse_reactive_energy} [kVArh]
tostring(modbusr(H, 0x12c,Float), "F2")
Fáze L3 Elektroměr Pouze ke čtení
Registr: H:262 (readtotalconsumption), H:34 (readdemand) Float Jednotka: kWh / kW
Servisní atributy
Napětí
Proud
Jalový výkon
Zdánlivý výkon
Účiník
Činná energie odběr
Činná energie dodávka
Jalová energie odběr
Jalová energie dodávka

Fáze L3

Čtení celkové spotřeby
MODBUSR(H, 0x106, Float)
Čtení odběru
MODBUSR(H, 0x22, Float)
Servisní atributy
${electric_voltage} [V]
tostring(modbusr(H, 0x12,Float), "F2")
${electric_current} [A]
tostring(modbusr(H, 0x1a,Float), "F2")
${reactive_power} [kVAr]
tostring(modbusr(H, 0x2a,Float), "F2")
${apparent_power} [kVA]
tostring(modbusr(H, 0x32,Float), "F2")
${power_factor}
tostring(modbusr(H, 0x3a,Float), "F2")
${forward_active_energy} [kWh]
tostring(modbusr(H, 0x10e,Float), "F2")
${reverse_active_energy} [kWh]
tostring(modbusr(H, 0x116,Float), "F2")
${forward_reactive_energy} [kVArh]
tostring(modbusr(H, 0x126,Float), "F2")
${reverse_reactive_energy} [kVArh]
tostring(modbusr(H, 0x12e,Float), "F2")
Tarif T1 Elektroměr Pouze ke čtení

Kumulativní čítač energie tarifu 1 — celková činná energie s rozpisem pro odběr/dodávku činné a jalové energie

Registr: H:304 (readtotalconsumption) Float Jednotka: kWh
Servisní atributy
Činná energie odběr
Činná energie dodávka
Celková jalová energie
Jalová energie odběr
Jalová energie dodávka

Tarif T1

Čtení celkové spotřeby
MODBUSR(H, 0x130, Float)
Servisní atributy
${forward_active_energy} [kWh]
tostring(modbusr(H, 0x132,Float), "F2")
${reverse_active_energy} [kWh]
tostring(modbusr(H, 0x134,Float), "F2")
${total_reactive_energy} [kVArh]
tostring(modbusr(H, 0x136,Float), "F2")
${forward_reactive_energy} [kVArh]
tostring(modbusr(H, 0x138,Float), "F2")
${reverse_reactive_energy} [kVArh]
tostring(modbusr(H, 0x13a,Float), "F2")
Tarif T2 Elektroměr Pouze ke čtení
Registr: H:316 (readtotalconsumption) Float Jednotka: kWh
Servisní atributy
Činná energie odběr
Činná energie dodávka
Celková jalová energie
Jalová energie odběr
Jalová energie dodávka

Tarif T2

Čtení celkové spotřeby
MODBUSR(H, 0x13c, Float)
Servisní atributy
${forward_active_energy} [kWh]
tostring(modbusr(H, 0x13e,Float), "F2")
${reverse_active_energy} [kWh]
tostring(modbusr(H, 0x140,Float), "F2")
${total_reactive_energy} [kVArh]
tostring(modbusr(H, 0x142,Float), "F2")
${forward_reactive_energy} [kVArh]
tostring(modbusr(H, 0x144,Float), "F2")
${reverse_reactive_energy} [kVArh]
tostring(modbusr(H, 0x146,Float), "F2")
Tarif T3 Elektroměr Pouze ke čtení
Registr: H:328 (readtotalconsumption) Float Jednotka: kWh
Servisní atributy
Činná energie odběr
Činná energie dodávka
Celková jalová energie
Jalová energie odběr
Jalová energie dodávka

Tarif T3

Čtení celkové spotřeby
MODBUSR(H, 0x148, Float)
Servisní atributy
${forward_active_energy} [kWh]
tostring(modbusr(H, 0x14a,Float), "F2")
${reverse_active_energy} [kWh]
tostring(modbusr(H, 0x14c,Float), "F2")
${total_reactive_energy} [kVArh]
tostring(modbusr(H, 0x14e,Float), "F2")
${forward_reactive_energy} [kVArh]
tostring(modbusr(H, 0x150,Float), "F2")
${reverse_reactive_energy} [kVArh]
tostring(modbusr(H, 0x152,Float), "F2")
Tarif T4 Elektroměr Pouze ke čtení
Registr: H:340 (readtotalconsumption) Float Jednotka: kWh
Servisní atributy
Činná energie odběr
Činná energie dodávka
Celková jalová energie
Jalová energie odběr
Jalová energie dodávka

Tarif T4

Čtení celkové spotřeby
MODBUSR(H, 0x154, Float)
Servisní atributy
${forward_active_energy} [kWh]
tostring(modbusr(H, 0x156,Float), "F2")
${reverse_active_energy} [kWh]
tostring(modbusr(H, 0x158,Float), "F2")
${total_reactive_energy} [kVArh]
tostring(modbusr(H, 0x15a,Float), "F2")
${forward_reactive_energy} [kVArh]
tostring(modbusr(H, 0x15c,Float), "F2")
${reverse_reactive_energy} [kVArh]
tostring(modbusr(H, 0x15e,Float), "F2")
Celková energie (3-fázová) Elektroměr Pouze ke čtení

Celkový 3-fázový systém — činná energie a odběr výkonu s frekvencí sítě, jalový/zdánlivý výkon, účiník a obousměrné čítače energie

Registr: H:256 (readtotalconsumption), H:28 (readdemand) Float Jednotka: kWh / kW
Servisní atributy
Frekvence sítě
Celkový jalový výkon
Celkový zdánlivý výkon
Celkový účiník
Činná energie odběr
Činná energie dodávka
Jalová energie odběr
Jalová energie dodávka

Celková energie (3-fázová)

Čtení celkové spotřeby
MODBUSR(H, 0x100, Float)
Čtení odběru
MODBUSR(H, 0x1c, Float)
Servisní atributy
${grid_frequency} [Hz]
tostring(modbusr(H, 0x14,Float), "F2")
${reactive_power} [kVAr]
tostring(modbusr(H, 0x24,Float), "F2")
${apparent_power} [kVA]
tostring(modbusr(H, 0x2c,Float), "F2")
${power_factor}
tostring(modbusr(H, 0x34,Float), "F2")
${forward_active_energy} [kWh]
tostring(modbusr(H, 0x108,Float), "F2")
${reverse_active_energy} [kWh]
tostring(modbusr(H, 0x110,Float), "F2")
${forward_reactive_energy} [kVArh]
tostring(modbusr(H, 0x120,Float), "F2")
${reverse_reactive_energy} [kVArh]
tostring(modbusr(H, 0x128,Float), "F2")
Připojení: Modbus RTU • 9600 baud• 8E1 • Slave ID: $[SlaveId]
Možná vylepšení (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

Zdroje