---
title: "SolaX X3-Ultra Hybrid Inverter — monitoring and power control (Modbus RTU)"
description: "SolaX X3-Ultra prin Modbus RTU (RS-485): contoare Energy Dashboard, SOC baterie, rețea, defecțiuni și control de la distanță al puterii AC pentru baterie."
url: "https://taphome.com/ro/compatibility/solax-x3-ultra-power-control-modbus-rtu/"
language: ro
lastmod: 2026-11-10
generator: hugo
ai:
  topics: ["modbus-rtu","rs485","inverter","solar","battery-storage","3-phase","hybrid-inverter","energy-monitoring","remote-power-control"]
  questions: ["Cum se integrează invertorul hibrid SolaX X3-Ultra cu TapHome?","Ce măsoară și ce controlează șablonul de control al puterii SolaX X3-Ultra?","Cum se cablează RS-485 de la portul COM 1 al SolaX X3-Ultra la TapHome?","Cum se încarcă sau se descarcă bateria SolaX X3-Ultra din TapHome în funcție de prețurile spot ale energiei electrice?","De ce revine la 0 ținta controlului de la distanță SolaX X3-Ultra imediat după setare?","Ce dispozitiv trebuie folosit pentru Energy Manager din TapHome cu SolaX X3-Ultra?"]
---

# SolaX X3-Ultra Hybrid Inverter — monitoring and power control (Modbus RTU)

Comunicație: Modbus RTU

## Ghid de integrare

SolaX X3-Ultra (X3-ULT-15K, 20K, 25K, 30K) este un invertor solar hibrid trifazat pentru PV și baterie. Acest șablon comunitar creat de Martin Keller îl conectează la TapHome prin **Modbus RTU pe portul RS-485 COM 1** (19200 baud, 8N1) și se bazează pe registrele de citire din protocolul SolaX Modbus V3.29 și pe protocolul SolaX Modbus V001.02. Oferă un set complet de contoare pentru Energy Dashboard, monitorizarea bateriei, a rețelei și a defecțiunilor, setări ale invertorului care se scriu doar când valoarea lor se schimbă cu adevărat și controlul de la distanță al puterii AC (modul 1 al controlului de la distanță SolaX) — încărcarea bateriei din rețea sau descărcarea ei în rețea la comandă, de exemplu în funcție de prețurile spot ale energiei electrice.

## Cum obțineți șablonul

Șabloanele comunitare nu sunt oferite în lista de șabloane din aplicația TapHome. Autentificați-vă pe portal.taphome.com, descărcați fișierul XML al acestui șablon și importați-l în Core pe interfața Modbus RTU (sau pe o interfață Modbus TCP, când se folosește un gateway RS-485–Ethernet). Pentru monitorizare fără controlul de la distanță al puterii este disponibil șablonul oficial [SolaX X3 Hybrid Ultra](https://taphome.com/ro/compatibility/solax-hybrid-ultra-x3/). Un modul importat anterior din șablonul oficial nu se actualizează singur — importați acest șablon ca modul nou și eliminați-l pe cel vechi.

## Conectarea hardware

X3-Ultra are un singur **port COM 1** multifuncțional (conector RJ45 cu suport de cablu etichetat). Aceiași pini fizici au funcții diferite, în funcție de poziția etichetată a suportului de cablu care se folosește. Pentru integrarea Modbus cu sisteme terțe folosiți poziția **RS485** — liniile **REMOTE_485A** și **REMOTE_485B**.

### Alocarea pinilor portului COM 1

![Alocarea pinilor portului COM 1 al SolaX X3-Ultra pentru toate cele șase poziții etichetate (Parallel-1, Parallel-2, BMS-1, BMS-2, RS485, DRM)](https://taphome.com/images/compatibility/solax-x3-ultra-power-control-modbus-rtu/com1-pinout_hu_4124a3cd9e8bc981.jpg)

Alocarea pinilor pentru **poziția RS485** (singura poziție relevantă pentru TapHome):

| Pin | Semnal | Cablare TapHome |
|-----|--------|-----------------|
| **1** | **REMOTE_485A** | A+ / D+ |
| **2** | **REMOTE_485B** | B− / D− |
| 3 | PARALLEL_485AA | nu se folosește (doar accesorii SolaX) |
| 4 | PARALLEL_485AA | nu se folosește (doar accesorii SolaX) |
| 5 | PARALLEL_485BB | nu se folosește (doar accesorii SolaX) |
| 6 | PARALLEL_485BB | nu se folosește (doar accesorii SolaX) |
| **7** | **REMOTE_485A** | același semnal ca pinul 1 |
| **8** | **REMOTE_485B** | același semnal ca pinul 2 |

> [!WARNING]
> Pinii 3–6 aparțin canalului SolaX PARALLEL_485 și sunt rezervați pentru produsele SolaX (Adapter Box G2, EV-Charger, DataHub). Pinii 1, 2, 7 și 8 sunt destinați altor dispozitive decât produsele SolaX. **Nu** conectați un master Modbus terț la pinii 3–6.

### Cablarea RS-485

![Montarea terminalului RJ45 în poziția RS485 a suportului de cablu COM 1](https://taphome.com/images/compatibility/solax-x3-ultra-power-control-modbus-rtu/wiring-rs485_hu_ac07cf89af382c1.jpg)

Reguli de cablare din manualul de utilizare X3-Ultra (secțiunea 8.6.4):

- **Tip de cablu:** cablu de rețea CAT5E sau CAT6
- **Lungime maximă:** cablul de comunicație RS-485 nu trebuie să depășească **30 m**
- **Terminal RJ45:** conectorul existent al cablului se taie și se sertizează un terminal RJ45 nou conform alocării pinilor; nu toate dispozitivele acceptă un cablu de rețea cu toate cele 8 fire conectate
- **Poziția în suportul de cablu:** terminalul RJ45 se introduce în slotul etichetat **RS485** (nu în Parallel-1, Parallel-2, BMS-1, BMS-2 sau DRM); conectorul se fixează cu un clic în portul COM 1 și se asigură cu piulița rotativă
- **Un singur master Modbus:** portul poate fi folosit de un singur master Modbus. Deconectați orice altă monitorizare Modbus de pe același port, altfel invertorul le răspunde ambelor și citirile devin instabile

Manualul de utilizare nu oferă nicio regulă pentru terminarea magistralei RS-485 în poziția RS485 a portului COM 1.

### Contor sau CT pentru valorile rețelei

Dispozitivele de rețea ale acestui șablon (**Grid - power balance**, **Din rețea**, **Spre rețea**, **Consum**) citesc puterea injectată pe care invertorul o măsoară cu propriul contor sau CT. Contorul sau CT-ul se conectează la portul **COM 2** (Meter/CT: METER_485A pe pinul 4, METER_485B pe pinul 5 sau intrările CT) și se configurează pe afișajul invertorului în `Menu → Setting → Advance Setting → Meter/CT Setting`. Aceasta este o linie RS-485 separată — nu conectați TapHome la ea.

### Variante de conectare

- **Modbus RTU direct:** conectați perechea RS485 de la COM 1 direct la magistrala RS-485 a TapHome Core. Oferă cea mai mică latență și este recomandată pentru controlul de la distanță al puterii.
- **Gateway RS-485–Ethernet:** când invertorul este departe de TapHome Core, se poate folosi un gateway RS-485–Ethernet terț pe perechea RS485 de la COM 1; șablonul se importă atunci pe o interfață Modbus TCP.
- **Modul de monitorizare SolaX:** invertorul în sine nu acceptă Modbus TCP. Modbus TCP (portul 502) este disponibil doar printr-un modul de monitorizare SolaX, cu un ciclu de interogare de aproximativ 1 secundă (protocolul V3.29).

## Configurare

### Activarea comunicației Modbus pe invertor

Pe afișajul LCD al invertorului mergeți la:

```
Menu → Setting → Advance Setting → Modbus
```

Meniul Advance Setting necesită parola de instalator (inițial **2014** conform manualului de utilizare, care recomandă schimbarea ei). În meniul Modbus setați **Baud Rate** și **Address** pentru protocolul de comunicație extern:

| Parametru | Valoare implicită în șablon | Valoare implicită în invertor (protocolul V3.29) |
|-----------|-----------------------------|--------------------------------------------------|
| Adresă Modbus (Slave ID) | 1 | 1 |
| Baud rate | 19200 | 19200 |
| Paritate | None | None |
| Biți de date | 8 | 8 |
| Biți de stop | 1 | 1 |

> [!WARNING]
> Baud rate-ul trebuie să fie același pe invertor și pe interfața Modbus RTU TapHome. Dacă comunicarea eșuează, verificați mai întâi baud rate-ul.

Invertorul raportează și adresa Modbus în registrul holding `H:0x00AF` și baud rate-ul în registrul holding `H:0x00B0` (protocolul V3.29).

### Parametrul de import

La importul șablonului, parametrul de import **Modbus Slave ID** (implicit `1`) trebuie să corespundă adresei Modbus setate pe afișajul invertorului.

## Funcțiile dispozitivului

### Energy Dashboard

| Dispozitiv | Valoare citită |
|---|---|
| **Productie PV** | Puterea de intrare PV1 + PV2 + PV3 (`A:0x000A`, `A:0x000B`, `A:0x0124`) în kW; energia PV totală (`A:0x0094`–`0x0095`) în kWh. Puterea PV1–PV3 și energia AC totală la ieșirea invertorului (`A:0x0052`) sunt atribute de service. |
| **Din rețea** / **Spre rețea** | Partea de import și de export a puterii rețelei de la contor sau CT (`A:0x0046`–`0x0047`, cuvântul inferior primul), cu contoarele lor de energie totală (`A:0x004A` și `A:0x0048`, 0,01 kWh). |
| **La baterie** / **De la baterie** | Partea de încărcare și de descărcare a puterii bateriei 1 (`A:0x0016`), cu energia totală încărcată și descărcată (`A:0x0021`, `A:0x001D`). |
| **Consum** | Consumul calculat al casei: puterea AC a invertorului minus exportul în rețea. SolaX nu are registru pentru consum; consumatorii de pe ieșirea EPS (de rezervă) nu sunt incluși. |
| **Baterie (SOC)** | Starea de încărcare a bateriei 1 (`A:0x001C`). Energia rămasă și energia care mai poate fi încărcată (`A:0x0118`, `A:0x0116`) sunt atribute de service. |

### Energy Manager

Pentru smart rule-ul Energy Manager selectați **Grid - power balance**. Valoarea are semn: pozitivă la importul din rețea, negativă la exportul surplusului. Contoarele **Din rețea** și **Spre rețea** nu devin niciodată negative și nu afișează surplusul.

### Monitorizare

- **Battery 2 - state of charge** — al doilea terminal de baterie (BAT 2), cu puterea și temperatura sa ca atribute de service; fără a doua baterie afișează 0
- **Battery - temperature** — citită ca valoare cu semn, astfel încât temperaturile sub 0 °C se afișează corect
- **Inverter - AC power** — suma celor trei puteri de fază la portul AC al invertorului, în kW
- **Grid - voltage L1** — cu tensiunea rețelei L2, L3 și cele trei frecvențe ale rețelei ca atribute de service

### Setările invertorului

| Dispozitiv | Citire | Scriere |
|---|---|---|
| **Settings - work mode** | `H:0x008B`: Self use, Feed-in priority, Backup, Manual, Peak shaving, Time of use (ultimele două depind de firmware) | `0x001F` |
| **Settings - manual mode** | `H:0x008C`: Stop charge and discharge, Force charge, Force discharge (au efect doar în modul de lucru Manual) | `0x0020` |
| **Settings - self-use minimum SOC** | octetul superior al `H:0x0093` | `0x0061` |
| **Settings - night charge from grid** | octetul inferior al `H:0x0093` | `0x0062` |
| **Settings - night charge target SOC** | `H:0x0094` | `0x0063` |
| **Settings - export limit** | `H:0x00B6`, în kW (10 W pe unitate la X3) | `0x0042` |

SolaX citește aceste setări de la alte adrese decât cele la care le scrie, așa că funcția integrată TapHome „scrie doar dacă diferă" nu se poate folosi. De aceea, fiecare script de scriere citește mai întâi setarea și scrie (funcția 06) doar când noua valoare diferă; când invertorul raportează setările ca blocate, scrie mai întâi parola de setări 2014 în registrul `0x0000`. SOC-ul minim și ținta încărcării de noapte nu scad niciodată sub 10 % (intervalul SolaX). Niciunul dintre aceste dispozitive nu scrie periodic.

> [!WARNING]
> Aceste setări sunt registre EEPROM (marcate cu ★ de SolaX, aproximativ 1 milion de cicluri de scriere). Modificați-le rar și niciodată din automatizări frecvente — pentru încărcarea și descărcarea în funcție de prețurile spot folosiți **Remote control - AC power target**.

### Remote control - AC power target

Acest dispozitiv folosește modul 1 al controlului de la distanță SolaX (VPP) — controlul puterii la portul AC al invertorului.

- **Semn:** o țintă pozitivă înseamnă că invertorul preia putere la portul său AC (încarcă bateria, din rețea dacă PV nu este suficient); o țintă negativă înseamnă că livrează putere (descarcă bateria, iar ce nu consumă casa ajunge în rețea). Valoare în kW.
- **0** încheie controlul de la distanță: șablonul scrie o singură dată modul 0, iar invertorul revine la modul său de lucru. Țintele sub 0,5 W contează ca 0.
- **Orice altă valoare:** dacă invertorul este blocat, șablonul scrie mai întâi parola de setări 2014 (deblocarea se pierde după fiecare repornire a invertorului), apoi scrie cele 13 registre `0x007C`–`0x0088` într-o singură cerere Modbus (funcția 0x10): modul 1, ținta, durata de 120 s și timeout-ul de 60 s. Comanda se repetă la fiecare 60 s cât timp ținta nu este 0. Dacă TapHome nu o mai trimite, invertorul păstrează ținta cel mult 2 minute, menține 0 W la portul AC încă 1 minut și apoi revine singur la modul său de lucru.
- **Modul de lucru Manual blochează controlul de la distanță.** SolaX nu pornește controlul de la distanță cât timp invertorul este în modul de lucru Manual — comutați-l mai întâi pe Self use (sau pe alt mod).
- Invertorul limitează ținta la intervalul afișat în atributele modulului (ținta minimă și maximă a controlului de la distanță).
- Acțiunea de modul **End remote control** scrie imediat modul 0. Cât timp ținta nu este 0, următoarea repetare pornește din nou controlul de la distanță — pentru oprirea definitivă setați ținta la 0.
- Nu combinați acest dispozitiv cu controlul de la distanță din SolaX Cloud sau de la un agregator de energie: cât timp ținta este 0, șablonul încheie orice mod de control de la distanță în 60 s.
- Controlul de la distanță necesită un Core care scrie toate cele 13 registre într-o singură cerere. Așa este fiecare Core începând din 2022, dacă modulul păstrează valoarea `MaxPrefetchGroupSize` 32 din acest șablon.
- Atributul de service **Actual AC power** afișează puterea activă pe care invertorul o raportează la portul său AC, în W (`A:0x0106`).

> [!WARNING]
> SolaX nu marchează în protocolul său registrele de control de la distanță (`0x007C`–`0x0088`) ca registre EEPROM, dar nici nu confirmă în scris contrariul. Acest șablon se bazează pe experiența comunităților Home Assistant și openHAB, care scriu aceste registre la intervale de câteva secunde până la câteva minute.

### Atributele și acțiunile modulului

- **Run mode** (atribut de service) — starea invertorului ca text: Waiting, Checking, Normal, Fault, Permanent fault, Update, Off-grid waiting, Off-grid, Self testing, Idle, Standby, Remote control (codul 20); celelalte coduri apar ca Other
- **Machine type** (atribut de service) — X1 (monofazat) sau X3 (trifazat), registrul holding `H:0x0105`
- **Settings lock** (atribut de service) — Locked sau Unlocked (`A:0x0054`)
- **Remote control mode** (atribut de service) — modul activ de control de la distanță (`A:0x0100`): Off, Power control, Energy target, SOC target
- **Remote control - maximum target** / **minimum target** (atribute de service) — intervalul permis al țintei de putere raportat de invertor, în W (`A:0x010A`, `A:0x010C`)
- **Unlock settings (password 2014)** (acțiune de service) — scrie `2014` în registrul `0x0000`
- **End remote control** (acțiune de service) — scrie modul 0 în registrele de control de la distanță `0x007C`–`0x0088`

### Detectarea defecțiunilor

Scriptul de citire al modulului raportează o eroare TapHome când modul de funcționare (`A:0x0009`) este 3 (Fault) sau 4 (Permanent fault). De asemenea, analizează bit cu bit două registre de eroare, fiecare defecțiune cu propriul cod de eroare:

- **Codul de defecțiune al invertorului** (32 de biți, `A:0x0040`–`A:0x0041`, citit cu cuvântul inferior primul) — toți cei 32 de biți, de la TZ Protect Fault, defecțiunile de tensiune ale rețelei, PV, magistralei și bateriei, defecțiunile de izolație și de supratemperatură până la Parallel Fault, Hard Limit Fault și defecțiunile releelor
- **Codul de eroare al managerului** (16 biți, `A:0x0043`) — Power Type Fault, Mgr EEPROM Fault, NTC Sample Invalid, temperatura scăzută și ridicată a bateriei, Meter Fault, Bypass Relay Fault și Fan 2 Fault ca erori, Port OC Warning ca avertisment

## Rezolvarea problemelor

### Nu există comunicare cu invertorul

1. Verificați dacă firele RS-485 sunt pe pinii **REMOTE_485A / REMOTE_485B** (1 + 2 sau 7 + 8 în poziția RS485 a suportului de cablu COM 1), nu pe pinii PARALLEL_485 3–6 și nu pe linia contorului de la COM 2
2. Verificați dacă baud rate-ul coincide între invertor (`Menu → Setting → Advance Setting → Modbus`) și interfața Modbus RTU TapHome — implicit 19200
3. Confirmați că parametrul de import **Modbus Slave ID** corespunde adresei Modbus a invertorului (implicit `1`)
4. Asigurați-vă că la port este conectat **un singur** master Modbus
5. Inversați firele A și B dacă polaritatea cablului este incertă
6. Confirmați că cablul RS-485 nu depășește **30 m**

### Ținta controlului de la distanță revine la 0 imediat după setare

Invertorul este în modul de lucru Manual, firmware-ul nu acceptă modul 1 al controlului de la distanță sau ținta este în afara intervalului dintre ținta minimă și maximă afișate în atributele modulului. Verificați mai întâi modul de lucru.

### Scrierea setărilor este respinsă

Invertorul este blocat. Rulați acțiunea de modul **Unlock settings (password 2014)**; blocarea revine după fiecare repornire a invertorului (atributul de modul **Settings lock**).

### Valorile rețelei sunt 0 sau Consum pare greșit

**Grid - power balance**, **Din rețea**, **Spre rețea** și **Consum** depind de contorul sau CT-ul invertorului. Verificați cablarea acestuia la COM 2 și configurarea în `Menu → Setting → Advance Setting → Meter/CT Setting`.

### Puterea PV3 sau Battery 2 afișează 0

PV3 există doar la modelele cu trei trackere (de exemplu X3-ULT-25K și X3-ULT-30K; consultați numărul de MPPT în manualul de utilizare); Battery 2 doar când la BAT 2 este conectată a doua baterie. Ascundeți în TapHome dispozitivele neutilizate.

## Dispozitive disponibile 19

Aceste dispozitive apar în TapHome după import.

SolaX X3-Ultra Modul

Atribute de service

|                                 |
|---------------------------------|
| Run mode                        |
| Machine type                    |
| Settings lock                   |
| Remote control mode             |
| Remote control - maximum target |
| Remote control - minimum target |

Acțiuni de service

|                                 |
|---------------------------------|
| Unlock settings (password 2014) |
| End remote control              |

Citire (modul)

```taphome
VAR mode := MODBUSR(A, 0x0009, UInt16);
IF(mode = 3, ADDERROR(1, "Inverter fault (run mode 3)"));
IF(mode = 4, ADDERROR(2, "Inverter permanent fault (run mode 4)"));
VAR inv := MODBUSR(A, 0x0040, LittleEndianUint32);
IF(GETBIT(inv, 0) = 1, ADDERROR(100, "TZ Protect Fault"));
IF(GETBIT(inv, 1) = 1, ADDERROR(101, "Grid Lost Fault"));
IF(GETBIT(inv, 2) = 1, ADDERROR(102, "Grid Volt Fault"));
IF(GETBIT(inv, 3) = 1, ADDERROR(103, "Grid Freq Fault"));
IF(GETBIT(inv, 4) = 1, ADDERROR(104, "PV Volt Fault"));
IF(GETBIT(inv, 5) = 1, ADDERROR(105, "Bus Volt Fault"));
IF(GETBIT(inv, 6) = 1, ADDERROR(106, "Bat Volt Fault"));
IF(GETBIT(inv, 7) = 1, ADDERROR(107, "AC10mins Volt Fault"));
IF(GETBIT(inv, 8) = 1, ADDERROR(108, "DCI OCP Fault"));
IF(GETBIT(inv, 9) = 1, ADDERROR(109, "DCV OCP Fault"));
IF(GETBIT(inv, 10) = 1, ADDERROR(110, "SW OCP Fault"));
IF(GETBIT(inv, 11) = 1, ADDERROR(111, "RC OCP Fault"));
IF(GETBIT(inv, 12) = 1, ADDERROR(112, "Isolation Fault"));
IF(GETBIT(inv, 13) = 1, ADDERROR(113, "Temp Over Fault"));
IF(GETBIT(inv, 14) = 1, ADDERROR(114, "BatConnDir Fault"));
IF(GETBIT(inv, 15) = 1, ADDERROR(115, "Off-grid Overload"));
IF(GETBIT(inv, 16) = 1, ADDERROR(116, "Overload"));
IF(GETBIT(inv, 17) = 1, ADDERROR(117, "Bat Power Low"));
IF(GETBIT(inv, 18) = 1, ADDERROR(118, "BMS Lost"));
IF(GETBIT(inv, 19) = 1, ADDERROR(119, "Fan Fault"));
IF(GETBIT(inv, 20) = 1, ADDERROR(120, "Low Temp Fault"));
IF(GETBIT(inv, 21) = 1, ADDERROR(121, "Parallel Fault"));
IF(GETBIT(inv, 22) = 1, ADDERROR(122, "Hard Limit Fault"));
IF(GETBIT(inv, 23) = 1, ADDERROR(123, "INV Volt Sample Fault"));
IF(GETBIT(inv, 24) = 1, ADDERROR(124, "Inner Comm Fault"));
IF(GETBIT(inv, 25) = 1, ADDERROR(125, "INV EEPROM Fault"));
IF(GETBIT(inv, 26) = 1, ADDERROR(126, "RCD Fault"));
IF(GETBIT(inv, 27) = 1, ADDERROR(127, "Grid Relay Fault"));
IF(GETBIT(inv, 28) = 1, ADDERROR(128, "Off-grid Relay Fault"));
IF(GETBIT(inv, 29) = 1, ADDERROR(129, "PV ConnDir Fault"));
IF(GETBIT(inv, 30) = 1, ADDERROR(130, "Charger Relay Fault"));
IF(GETBIT(inv, 31) = 1, ADDERROR(131, "Earth Relay Fault"));
VAR mgr := MODBUSR(A, 0x0043, UInt16);
IF(GETBIT(mgr, 0) = 1, ADDERROR(200, "Power Type Fault"));
IF(GETBIT(mgr, 1) = 1, ADDWARNING(201, "Port OC Warning"));
IF(GETBIT(mgr, 2) = 1, ADDERROR(202, "Mgr EEPROM Fault"));
IF(GETBIT(mgr, 4) = 1, ADDERROR(204, "NTC Sample Invalid"));
IF(GETBIT(mgr, 5) = 1, ADDERROR(205, "Battery Temperature Low"));
IF(GETBIT(mgr, 6) = 1, ADDERROR(206, "Battery Temperature High"));
IF(GETBIT(mgr, 9) = 1, ADDERROR(209, "Meter Fault"));
IF(GETBIT(mgr, 10) = 1, ADDERROR(210, "Bypass Relay Fault"));
IF(GETBIT(mgr, 11) = 1, ADDERROR(211, "Fan 2 Fault"));
```

Atribute de service

Run mode

```taphome
SWITCH(MODBUSR(A, 0x0009, UInt16), 0, "Waiting", 1, "Checking", 2, "Normal", 3, "Fault", 4, "Permanent fault", 5, "Update", 6, "Off-grid waiting", 7, "Off-grid", 8, "Self testing", 9, "Idle", 10, "Standby", 20, "Remote control", "Other")
```

Machine type

```taphome
SWITCH(MODBUSR(H, 0x0105, UInt16), 1, "X1 (single-phase)", 3, "X3 (three-phase)", "Unknown")
```

Settings lock

```taphome
SWITCH(MODBUSR(A, 0x0054, UInt16), 0, "Locked", 1, "Unlocked", "Unknown")
```

Remote control mode

```taphome
SWITCH(MODBUSR(A, 0x0100, UInt16), 0, "Off", 1, "Power control", 2, "Energy target", 3, "SOC target", "Other")
```

Remote control - maximum target

```taphome
TOSTRING(MODBUSR(A, 0x010A, LittleEndianInt32)) + " W"
```

Remote control - minimum target

```taphome
TOSTRING(MODBUSR(A, 0x010C, LittleEndianInt32)) + " W"
```

Acțiuni de service

Unlock settings (password 2014)

```taphome
MODBUSW(SH, 0x0000, Uint16, 2014);
```

End remote control

```taphome
MODBUSW(H, 0x007C, Uint16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
```

${deviceType\_PVProduction} Contor electric

Atribute de service

|                                   |
|-----------------------------------|
| PV1 power                         |
| PV2 power                         |
| PV3 power                         |
| Inverter AC output - total energy |

Citirea consumului total

```taphome
MODBUSR(A, 0x0094, LittleEndianUint32) / 10
```

Citirea cererii

```taphome
(MODBUSR(A, 0x000A, UInt16) + MODBUSR(A, 0x000B, UInt16) + MODBUSR(A, 0x0124, UInt16)) / 1000
```

Atribute de service

PV1 power

```taphome
TOSTRING(MODBUSR(A, 0x000A, UInt16)) + " W"
```

PV2 power

```taphome
TOSTRING(MODBUSR(A, 0x000B, UInt16)) + " W"
```

PV3 power

```taphome
TOSTRING(MODBUSR(A, 0x0124, UInt16)) + " W"
```

Inverter AC output - total energy

```taphome
TOSTRING(MODBUSR(A, 0x0052, LittleEndianUint32) / 10, "F1") + " kWh"
```

Grid - power balance Contor electric

Citirea cererii

```taphome
MODBUSR(A, 0x0046, LittleEndianInt32) / -1000
```

${deviceType\_PVFromGrid} Contor electric

Citirea consumului total

```taphome
MODBUSR(A, 0x004A, LittleEndianUint32) / 100
```

Citirea cererii

```taphome
MAX(-MODBUSR(A, 0x0046, LittleEndianInt32), 0) / 1000
```

${deviceType\_PVToGrid} Contor electric

Citirea consumului total

```taphome
MODBUSR(A, 0x0048, LittleEndianUint32) / 100
```

Citirea cererii

```taphome
MAX(MODBUSR(A, 0x0046, LittleEndianInt32), 0) / 1000
```

${deviceType\_PVToBattery} Contor electric

Citirea consumului total

```taphome
MODBUSR(A, 0x0021, LittleEndianUint32) / 10
```

Citirea cererii

```taphome
MAX(MODBUSR(A, 0x0016, Int16), 0) / 1000
```

${deviceType\_PVFromBattery} Contor electric

Citirea consumului total

```taphome
MODBUSR(A, 0x001D, LittleEndianUint32) / 10
```

Citirea cererii

```taphome
MAX(-MODBUSR(A, 0x0016, Int16), 0) / 1000
```

${deviceType\_PVLoad} Contor electric

Citirea cererii

```taphome
((MODBUSR(A, 0x006C, Int16) + MODBUSR(A, 0x0070, Int16) + MODBUSR(A, 0x0074, Int16)) - MODBUSR(A, 0x0046, LittleEndianInt32)) / 1000
```

${deviceType\_BatterySOC} Intrare analogică

Atribute de service

|                   |
|-------------------|
| Remaining energy  |
| Chargeable energy |

Citirea nivelului de intrare

```taphome
MODBUSR(A, 0x001C, UInt16) / 100
```

Atribute de service

Remaining energy

```taphome
TOSTRING(MODBUSR(A, 0x0118, LittleEndianUint32) / 1000, "F2") + " kWh"
```

Chargeable energy

```taphome
TOSTRING(MODBUSR(A, 0x0116, LittleEndianUint32) / 1000, "F2") + " kWh"
```

Battery 2 - state of charge Intrare analogică

Atribute de service

|                       |
|-----------------------|
| Battery 2 power       |
| Battery 2 temperature |

Citirea nivelului de intrare

```taphome
MODBUSR(A, 0x012D, UInt16) / 100
```

Atribute de service

Battery 2 power

```taphome
TOSTRING(MODBUSR(A, 0x0129, Int16)) + " W"
```

Battery 2 temperature

```taphome
TOSTRING(MODBUSR(A, 0x0131, Int16)) + " °C"
```

Battery - temperature Senzor de temperatură

Citirea temperaturii

```taphome
MODBUSR(A, 0x0018, Int16)
```

Inverter - AC power Variabilă

Citire

```taphome
(MODBUSR(A, 0x006C, Int16) + MODBUSR(A, 0x0070, Int16) + MODBUSR(A, 0x0074, Int16)) / 1000
```

Grid - voltage L1 Variabilă

Atribute de service

|                   |
|-------------------|
| Grid voltage L2   |
| Grid voltage L3   |
| Grid frequency L1 |
| Grid frequency L2 |
| Grid frequency L3 |

Citire

```taphome
MODBUSR(A, 0x006A, UInt16) / 10
```

Atribute de service

Grid voltage L2

```taphome
TOSTRING(MODBUSR(A, 0x006E, UInt16) / 10, "F1") + " V"
```

Grid voltage L3

```taphome
TOSTRING(MODBUSR(A, 0x0072, UInt16) / 10, "F1") + " V"
```

Grid frequency L1

```taphome
TOSTRING(MODBUSR(A, 0x006D, UInt16) / 100, "F2") + " Hz"
```

Grid frequency L2

```taphome
TOSTRING(MODBUSR(A, 0x0071, UInt16) / 100, "F2") + " Hz"
```

Grid frequency L3

```taphome
TOSTRING(MODBUSR(A, 0x0075, UInt16) / 100, "F2") + " Hz"
```

Settings - work mode Comutator cu mai multe valori

Valori / Stări: Self use · Feed-in priority · Backup · Manual · Peak shaving · Time of use

Citirea stării comutatorului

```taphome
MODBUSR(H, 0x008B, UInt16)
```

Scrierea stării comutatorului

```taphome
IF(MODBUSR(H, 0x008B, UInt16) != Mu AND MODBUSR(A, 0x0054, UInt16) = 0, MODBUSW(SH, 0x0000, Uint16, 2014));
IF(MODBUSR(H, 0x008B, UInt16) != Mu, MODBUSW(SH, 0x001F, Uint16, Mu));
```

Settings - manual mode Comutator cu mai multe valori

Valori / Stări: Stop charge and discharge · Force charge · Force discharge

Citirea stării comutatorului

```taphome
MODBUSR(H, 0x008C, UInt16)
```

Scrierea stării comutatorului

```taphome
IF(MODBUSR(H, 0x008C, UInt16) != Mu AND MODBUSR(A, 0x0054, UInt16) = 0, MODBUSW(SH, 0x0000, Uint16, 2014));
IF(MODBUSR(H, 0x008C, UInt16) != Mu, MODBUSW(SH, 0x0020, Uint16, Mu));
```

Settings - self-use minimum SOC Dimmer

Citirea nivelului

```taphome
GETBYTE(MODBUSR(H, 0x0093, UInt16), 1) / 100
```

Scrierea nivelului

```taphome
VAR v := MAX(ROUND(Le * 100), 10);
IF(GETBYTE(MODBUSR(H, 0x0093, UInt16), 1) != v AND MODBUSR(A, 0x0054, UInt16) = 0, MODBUSW(SH, 0x0000, Uint16, 2014));
IF(GETBYTE(MODBUSR(H, 0x0093, UInt16), 1) != v, MODBUSW(SH, 0x0061, Uint16, v));
```

Settings - night charge from grid Comutator

Valori / Stări: ON · OFF

Citirea stării comutatorului

```taphome
GETBYTE(MODBUSR(H, 0x0093, UInt16), 0)
```

Scrierea stării comutatorului

```taphome
IF(GETBYTE(MODBUSR(H, 0x0093, UInt16), 0) != St AND MODBUSR(A, 0x0054, UInt16) = 0, MODBUSW(SH, 0x0000, Uint16, 2014));
IF(GETBYTE(MODBUSR(H, 0x0093, UInt16), 0) != St, MODBUSW(SH, 0x0062, Uint16, St));
```

Settings - night charge target SOC Dimmer

Citirea nivelului

```taphome
MODBUSR(H, 0x0094, UInt16) / 100
```

Scrierea nivelului

```taphome
VAR v := MAX(ROUND(Le * 100), 10);
IF(MODBUSR(H, 0x0094, UInt16) != v AND MODBUSR(A, 0x0054, UInt16) = 0, MODBUSW(SH, 0x0000, Uint16, 2014));
IF(MODBUSR(H, 0x0094, UInt16) != v, MODBUSW(SH, 0x0063, Uint16, v));
```

Settings - export limit Variabilă

Citire

```taphome
MODBUSR(H, 0x00B6, UInt16) / 100
```

Scriere

```taphome
VAR v := MAX(ROUND(Va * 100), 0);
IF(MODBUSR(H, 0x00B6, UInt16) != v AND MODBUSR(A, 0x0054, UInt16) = 0, MODBUSW(SH, 0x0000, Uint16, 2014));
IF(MODBUSR(H, 0x00B6, UInt16) != v, MODBUSW(SH, 0x0042, Uint16, v));
```

Remote control - AC power target Variabilă

Atribute de service

|                 |
|-----------------|
| Actual AC power |

Citire

```taphome
IF(MODBUSR(A, 0x0100, UInt16) = 1, MODBUSR(A, 0x0102, LittleEndianInt32) / 1000, 0)
```

Scriere

```taphome
VAR w := ROUND(Va * 1000);
VAR u := IF(w < 0, w + 4294967296, w);
IF(w = 0 AND MODBUSR(A, 0x0100, UInt16) != 0, MODBUSW(H, 0x007C, Uint16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
IF(w != 0 AND MODBUSR(A, 0x0054, UInt16) = 0, MODBUSW(SH, 0x0000, Uint16, 2014));
IF(w != 0, MODBUSW(H, 0x007C, Uint16, 1, 1, MOD(u, 65536), FLOOR(u / 65536), 0, 0, 120, 0, 0, 0, 0, 0, 60));
```

Atribute de service

Actual AC power

```taphome
TOSTRING(MODBUSR(A, 0x0106, LittleEndianInt32)) + " W"
```

**Conexiune:** Modbus RTU • 19200 baud• 8N1 • Slave ID: $\[SlaveId]

## Parametri de import

Introduceți aceste valori când importați XML-ul.

| Solicitat în aplicație | Implicit |
|------------------------|----------|
| Modbus Slave ID        | `1`      |

## Documentație asociată

- [Modbus Integration](https://taphome.com/ro/compatibility/modbus-guide/)
- [Modbus](https://taphome.com/ro/docs/integration/modbus/)
- [Configurare simplă cu ajutorul șabloanelor](https://taphome.com/ro/docs/integration/modbus/templates/)
- [Scripturi Modbus și prefetch](https://taphome.com/ro/docs/script/modbus-scripts/)
- [Funcții Modbus](https://taphome.com/ro/docs/script/modbus/)
- [Tipuri de date Modbus](https://taphome.com/ro/docs/script/modbus-data-types/)

