---
title: "Modbus"
description: "Integrujte HVAC a energetická zařízení přes Modbus RTU a TCP s TapHome. Šablony pro rychlé nastavení nebo manuální konfigurace."
url: "https://taphome.com/cs/docs/integration/modbus/"
language: cs
lastmod: 2026-11-06
generator: hugo
ai:
  topics: ["modbus","modbus-rtu","modbus-tcp","hvac-integration","scripting"]
  questions: ["Jak integrovat Modbus zařízení s TapHome?","Jaký je rozdíl mezi Modbus RTU a Modbus TCP?","Jak číst a zapisovat Modbus registry v TapHome skriptech?","Jaké typy Modbus registrů podporuje TapHome?","Jak zjistit správné Slave ID pro Modbus zařízení?","Jak nastavit Modbus slave ID a adresu registru v TapHome?","Co je Prefetch a jak ovlivňuje Modbus komunikaci?","Jak používat Modbus šablony v TapHome?","Je modbusr(H, 37113, Int32, 1) napsaný správně a jak přečtu 32bitový registr?","Jak ve skriptu TapHome přečíst jeden bit (např. BIT15) z Modbus registru?","Jak v TapHome použít funkci 10H / 0x10 (zápis více holding registrů) na Modbusu?","Proč dostávám chybu „Illegal data address\" na Modbusu a jak ji opravím?"]
---

# Modbus

Poslední aktualizace: 2026-11-06

TapHome pracuje se zařízeními Modbus jako master: řídicí jednotka Core se dotazuje podřízených zařízení připojených přes Modbus RTU (sériová linka, typicky RS485) nebo Modbus TCP (síť LAN). Zařízení přidáte buď z hotové šablony, nebo ručně, nastavením Slave ID, typu registru, adresy registru a skriptů Read a Write podle tabulky Modbus zařízení. Stránka popisuje hierarchii Rozhraní → Modul → Zařízení, typy registrů a adresování a nástroj Ruční operace pro test komunikace. Výsledkem je zařízení Modbus, jehož hodnoty a ovládací prvky se zobrazí jako zařízení TapHome.

## Úvod do Modbusu

Modbus je jednoduchý komunikační protokol, často používaný pro integraci zařízení HVAC. Využívá komunikaci master-slave, kdy na společnou sběrnici může být připojeno několik zařízení, přičemž každé musí mít jedinečné Slave ID a master zařízení vždy dotazuje jednotlivá slave zařízení, která mu odpovídají.

**Topologie Master - Slave**

Ve většině případů se TapHome používá v režimu, kdy je řídicí jednotka Core Modbus Master a připojená zařízení jsou Modbus Slave. Toto se nastavuje v sekci **Hardware → Modbus RTU** nebo **Modbus TCP**. Je však možné použít i opačný směr, kdy TapHome Core poskytuje jinému nadřízenému systému informace o svých zařízeních. To je definováno v sekci **Vystavit zařízení → Modbus RTU** nebo **Modbus TCP**.

**Fyzické vrstvy**

Modbus může komunikovat přes různé fyzické vrstvy:

- přes sériovou linku, typicky RS485. To se označuje jako **Modbus RTU**
- přes LAN síť pomocí TCP/IP protokolu
- přes LAN síť pomocí UDP protokolu – v současné době systémem TapHome nepodporované

**Modbus registry**

Modbus definuje 4 typy registrů:
| Registr                     | Kód | Přístup    | Velikost   | Funkční kódy                       |
|------------------------------|-----|------------|-----------|------------------------------------|
| **Holding Registers** | H   | Čtení-zápis | 16 bitů | Čtení: 03, Zápis více: 16 (0x10) |
| - Write Single Holding (starší hodnota) | SH  | Čtení-zápis | 16 bitů | Zápis jednoho: 06                   |
| **Coil (Discrete Output Coils)** | C   | Čtení-zápis | 1 bit   | Čtení: 01, Zápis více: 15 (0xF)  |
| - Write Single Coil (starší hodnota) | SC  | Čtení-zápis | 1 bit   | Zápis jednoho: 05                   |
| **Discrete Input Contacts** | D   | Jen pro čtení | 1 bit   | Čtení: 02                        |
| **Analog Input Registers** | A   | Jen pro čtení | 16 bitů | Čtení: 04                        |

`SH` a `SC` jsou starší hodnoty, které skripty stále přijímají; nové skripty používají `H` a `C` — [Typy registrů](https://taphome.com/cs/docs/script/modbus/#register-types).

Číslo registru (adresa registru) je 16bitové, to znamená, že může mít hodnotu od 0 do 65535. Adresu registru je možné zadat desítkově (např. `20`) nebo šestnáctkově (např. `0x14`). Na registrech je možné provádět operace:

- čtení více registrů
- zápis jednoho registru
- zápis více registrů

> Některé implementace Modbus přidávají další příkazy: report slave id, bitové maskování, zápis a čtení najednou apod., ale tyto TapHome nepodporuje.
{.is-warning}

**Slave ID, Unit ID a adresování registrů.** Každé Modbus zařízení na sběrnici má jedinečné **Slave ID** (u Modbus TCP se mu někdy říká **Unit ID**). Pro čtení nebo zápis hodnoty potřebujete z Modbus tabulky zařízení tři údaje: **typ registru** (H = Holding, C = Coil, D = Discrete Input, A = Analog Input — funkční kód je odvozen od typu), **adresu registru** (0 až 65535, zadanou desítkově `20` nebo šestnáctkově `0x14`) a **datový typ** (Int16, UInt16, Float atd.). TapHome posílá adresu registru do zařízení beze změny a adresa se počítá od 0. Pokud dokumentace zařízení čísluje registry od 1, odečtěte 1: běžný zápis 40021 znamená typ registru H a adresu 20, 30001 typ A a adresu 0. Slave ID, typ registru a adresa registru dohromady jednoznačně identifikují libovolnou hodnotu na Modbus zařízení.

Informace o tom, co je uloženo v kterém registru a v jakém formátu, jsou součástí dokumentace zařízení poskytnuté dodavatelem nebo výrobcem zařízení. Příklad Modbus dokumentace od dodavatele Modbus zařízení:
![modbus_table.png](https://taphome.com/documentation/compatibility/modbus_table.webp)

Typ registru C (Coil), index 58, protože má jen 2 hodnoty (otevřeno / zavřeno) a kromě čtení umožňuje i zápis, odpovídající typ TapHome zařízení je digitální výstup.

Zrychlené pokyny pro integraci Modbus zařízení do TapHome

1.  Připojte zařízení k příslušné sběrnici (pro Modbus RTU a ASCII) nebo k LAN (pro Modbus TCP). U TCP zařízení se ujistěte, že je ve stejné síti jako řídicí jednotka TapHome Core, například pomocí Fing (iOS, Android) nebo IP Scanner (Windows).
2.  V TapHome → Hardware přidejte nové rozhraní Modbus RTU nebo Modbus TCP a nastavte komunikační parametry podle dokumentace. Pro Modbus RTU jsou to Baud rate, Stop bits, Parity, Data bits, pro Modbus TCP je to IP adresa.
3.  V dokumentaci Modbus zařízení zjistěte, jaké Slave ID používá. V případě Modbus TCP se to někdy označuje jako Unit ID. Pokud chcete použít více zařízení na jedné sběrnici s Modbus RTU, musíte změnit Slave ID každého z nich tak, aby bylo jedinečné pro danou sběrnicovou linku.
4.  Test komunikace – pomocí nástroje Ruční operace zkuste přečíst některé informace podle dokumentace (Modbus tabulky) pro dané zařízení. Pokud vše funguje, měli byste vidět přečtenou hodnotu.
5.  Pokud byl test komunikace úspěšný, vytvořte Modul, který představuje Modbus zařízení.
6.  Vyberte, které informace z Modbus dokumentace chcete prezentovat v systému TapHome a vytvořte odpovídající zařízení. Začněte čtením hodnot (Read script) a v případě aktorů pokračujte zápisem (Write script).
7.  Pokud základní funkce zařízení fungují, přidejte definice Error, Warning nebo Information do skriptů.
8.  V případě potřeby můžete také definovat Service Attributes a Service Actions pro TapHome zařízení a moduly.
9.  Pokud je vše naladěno a komunikuje správně, exportujte Modul do XML souboru, abyste ho mohli použít příště. Můžete také přispět do komunity na github.com/taphome-official/modbus_templates.

## Hierarchie

Tato dokumentace je určena pro scénář, kdy je řídicí jednotka TapHome Core Modbus master a fyzická zařízení, která jsou přidána do sekce Hardware → Modbus RTU / TCP, jsou Modbus slave. TapHome organizuje Modbus komunikaci do tří úrovní: **Rozhraní → Modul → Zařízení**. **Slave ID** se nastavuje na úrovni Modulu, zatímco typ registru a adresa registru použité pro čtení nebo zápis každé hodnoty se definují v rámci skriptu jednotlivého Zařízení.

**Rozhraní**

Hardware → Modbus RTU: zařízení jsou připojena na určitou sběrnici, jsou definovány základní parametry přenosu RS485, jako je baudrate, parita, stop bity, nebo zda jsou data ASCII nebo binární. Na tuto sběrnici mohou být připojena pouze zařízení se stejnými komunikačními nastaveními. Správná komunikace může fungovat jen tehdy, pokud jsou A a B kabely správně připojené. Hardware → Modbus TCP: zařízení jsou připojena na stejné LAN jako řídicí jednotka Core. Je definován jeden TCP port, který je společný pro všechna zařízení připojená k tomuto rozhraní. Zařízení v jiné budově se ke Core dostanou přes LAN mezi budovami ([zařízení v jiné budově](https://taphome.com/cs/docs/wiring/remote-buildings/)).

**Modul**

Rozhraní může obsahovat jeden nebo více modulů, které ve většině případů pokrývají komunikaci s celým fyzickým zařízením. Z konfiguračního hlediska modul definuje jedinečné Slave ID připojeného zařízení pro Modbus RTU a navíc IP adresu pro Modbus TCP.

**Zařízení**

Představuje specifický řídicí prvek nebo senzor v systému TapHome. Musí být vždy součástí jednoho nadřazeného Modulu.

> [NOTE]
> 5 klimatizačních jednotek připojených na jedné sběrnici používá společné rozhraní Modbus RTU, které definuje port sběrnice, přenosovou rychlost a další komunikační parametry. Rozhraní obsahuje 5 modulů, z nichž každý představuje jednu klimatizační jednotku s jedinečným Slave ID. Každý modul má pod sebou definovaná zařízení, jako například termostat, režim chlazení/ohřev, výkon ventilátoru nebo naklápění lamel. Jednotlivá zařízení mají definované příkazy pro čtení a/nebo zápis Modbus hodnot.

**Podporovaná zařízení:**

- Digitální výstup
- Analogový výstup
- Termostat
- Vícehodnotový spínač
- Teplotní senzor
- Elektroměr
- Stavový kontakt
- Tlačítko
- Proměnná

## Skripty pro čtení a zápis Modbus hodnot

Zařízení TapHome komunikují s fyzickými Modbus zařízeními pomocí skriptů.

Pro komunikaci s Modbus zařízeními jsou na nich definovány skriptovací sekce — co která dělá a kdy se spouští, popisuje stránka [Skripty Modbus a prefetch](https://taphome.com/cs/docs/script/modbus-scripts/):
* **Inicializační skript:** spustí se, když se zařízení **spustí** (např. po restartu řídicí jednotky)
* **Skript pro čtení:** nastavení hodnot **globálních proměnných** nebo čtení **chybových stavů**
* **Skript pro čtení hodnoty:** skript pro čtení **specifické hodnoty** (veličiny) z Modbus zařízení (např. nastavená teplota na termostatu nebo naměřená teplota na termostatu)
* **Skript pro zápis hodnoty:** zapíše hodnotu do Modbus zařízení

Funkce skriptu pro Modbus — `MODBUSR`, `MODBUSW`, `MODBUSWNE` a blokové funkce `MODBUSRBLOCK`, `MODBUSWBLOCK`, `MODBUSWBLOCKNE` — jsou s parametry a příklady popsány na stránce [Funkce Modbus](https://taphome.com/cs/docs/script/modbus/), datové typy (`Int16`, `Float`, varianty pořadí bajtů, 64bitové typy, `String`) na stránce [Datové typy Modbus](https://taphome.com/cs/docs/script/modbus-data-types/). Jednotlivé bity registru a hodnoty BCD (`GETBIT`, `GETBITS`, `TOBCD`, `FROMBCD`) jsou na stránce [Bitové operace](https://taphome.com/cs/docs/script/bit-operations/).

```taphome
MODBUSR(H, 20, Int16) / 100
```

Přečte holding registr s adresou 20 jako 16bitové celé číslo se znaménkem a vydělí ho 100 (posune desetinnou čárku o 2 místa doleva). Adresu registru lze zadat i šestnáctkově, např. `0x14`.

**Interval aktualizace a dotazování**

Každé zařízení v Modbus rozhraní má definovaný atribut **Poll Interval**. Ten určuje, jak často má řídicí jednotka TapHome dotazovat nové hodnoty Modbus zařízení. Modbus komunikace je typu Master-Slave, a proto informace z Modbus zařízení mohou do TapHome přijít jen tehdy, když si je TapHome vyžádá. Čím delší je Poll Interval, tím později se hodnota v TapHome aktualizuje. Příliš krátký Poll Interval může znamenat, že TapHome bude zbytečně zatěžován získáváním nepotřebných hodnot a nemusí mít čas obsloužit všechna zařízení v daném časovém intervalu. Například u Modbus RTU a nižších rychlostí Baud Rate, např. 9600, může jedna žádost/odpověď trvat desítky ms. Pro teploměry je ve většině případů postačující interval 15000 ms (15 s), pro tlačítka naopak co nejkratší, např. 50 ms. Některá Modbus zařízení očekávají, že master bude periodicky zapisovat aktuální hodnotu do registru. Na to slouží atribut **Periodický zápis**.

**Definice chybových stavů ze skriptů**

Ve skriptech pro čtení zařízení nebo modulu Modbus vyvolají `ADDERROR`, `ADDWARNING` a `ADDINFO` na zařízení chybu, varování nebo informaci. TapHome je zobrazuje stejně jako své interní zprávy, volitelně s číselným kódem pro servis zařízení — [ADDERROR, ADDWARNING, ADDINFO](https://taphome.com/cs/docs/script/logic-and-diagnostics/#adderror). Příklad zpráv na zařízení:
![modbus_error.png](https://taphome.com/documentation/compatibility/modbus_error.png)

## Servisní atributy a akce

Kromě hodnoty (nebo více hodnot, jako například termostat) z připojeného Modbus zařízení mohou moduly a zařízení TapHome číst i servisní atributy nebo vykonávat servisní akce. Tyto potom nejsou přístupné na pracovní ploše pro ostatní uživatele systému, ale slouží jen k podrobnějším informacím o Modbus zařízení, bez zbytečného přetěžování systému velkým množstvím proměnných a akcí.

**Servisní atributy** se zobrazují v servisních nastaveních modulu nebo zařízení TapHome. Typicky se používají k zobrazení informací o zařízení, jako jsou Model, Sériové číslo, Verze firmwaru, Verze hardwaru, Čas od posledního restartu atd. Jsou to užitečné informace z hlediska servisu Modbus zařízení, ale nemá smysl pro ně vytvářet samostatná zařízení TapHome.

**Servisní akce** se zobrazují v servisních nastaveních modulu nebo zařízení TapHome, úplně dole jako tlačítka. Po stisknutí vykonají přednastavenou Modbus akci, která zapíše požadované informace do registru. Příklad použití: Nastavení nebo změna Slave ID, výměna filtru, nastavení počítadla na požadovanou hodnotu, resetování zařízení a podobně.

## Skripty a pomocné proměnné na modulu

**Globální proměnné modulu**

Proměnné definované na modulu jsou použitelné ve všech skriptech na modulu a jsou sdílené se všemi zařízeními přiřazenými k tomuto modulu.

**Inicializační skript**

Volitelný. Spustí se při startu modulu. Pokud je vyplněn a ještě neběžel, nebudou povoleny žádné další skripty.
* 💬 Návratová hodnota: ignorovaná
* ⚙️ Přístup k proměnným: globální proměnné modulu
* ⚠️ Podpora chybového stavu: ne

**Skript pro čtení**

Spustí se při každém dotazu modulu.
* 💬 Návratová hodnota: ignorovaná
* ⚙️ Přístup k proměnným: globální proměnné modulu
* ⚠️ Podpora chybového stavu: ano

**Skript pro zápis**

Spuštění:
* při změně proměnné zařízení
* pokud je povolen atribut "Periodický zápis", tak se spustí automaticky
* 💬 Návratová hodnota: ignorovaná
* ⚙️ Přístup k proměnným: globální proměnné modulu, globální proměnné zařízení, specifická hodnota veličiny, která se má zapsat přes Modbus do zařízení
* ⚠️ Podpora chybového stavu: ne

**Servisní atributy modulu**

Každé zařízení může mít definovaný neomezený počet servisních atributů. Skripty se vykonávají vždy, když uživatel (se servisními oprávněními) otevře obrazovku servisních nastavení zařízení v aplikaci. Jsou zapsané nahoře, ihned po přečtení z Modbus zařízení.
* 💬 Návratová hodnota: zobrazuje se jako hodnota daného atributu
* ⚙️ Přístup k proměnným: globální proměnné modulu
* ⚠️ Podpora chybového stavu: ne

**Servisní akce modulu**

Každé zařízení může mít definovaný neomezený počet servisních akcí. Skripty se vykonávají, když uživatel (se servisními oprávněními) otevře aplikaci na obrazovce servisních nastavení zařízení a stiskne jedno z definovaných tlačítek s názvem servisní akce. Každá servisní akce je definovaná svým názvem, parametry a vykonávacím skriptem.
* 💬 Návratová hodnota: ignorovaná
* ⚙️ Přístup k proměnným: globální proměnné modulu, uživatelem zadané parametry
* ⚠️ Podpora chybového stavu: ne

## Skripty a pomocné proměnné na zařízení

**Globální proměnné zařízení**

Proměnné definované na zařízení jsou použitelné ve všech skriptech definovaných na tomto zařízení a nejsou použitelné nikde mimo zařízení. Zařízení v nich může ukládat svůj stav, sdílet je mezi svými skripty a podobně.

**Inicializační skript zařízení**

Volitelný. Spustí se při startu zařízení. Pokud je vyplněn a ještě neběžel, nebudou povoleny žádné další skripty.
* 💬 Návratová hodnota: ignorovaná
* ⚙️ Přístup k proměnným: globální proměnné modulu, globální proměnné zařízení
* ⚠️ Podpora chybového stavu: ne

**Skript pro čtení zařízení**

Spustí se při každém dotazu zařízení, před „Skripty pro čtení hodnoty“.
* 💬 Návratová hodnota: ignorovaná
* ⚙️ Přístup k proměnným: globální proměnné modulu, globální proměnné zařízení
* ⚠️ Podpora chybového stavu: ano. Chyby se týkají celého zařízení (např. celého termostatu, ne jen jeho nastavené hodnoty nebo aktuální teploty).

**Skript pro zápis hodnoty**

Spuštění:
* při každé změně hodnoty
* pokud je povolen atribut "Periodický zápis", tak i při každém dotazu
* 💬 Návratová hodnota: ignorovaná
* ⚙️ Přístup k proměnným: globální proměnné modulu, globální proměnné zařízení, specifická hodnota veličiny, která se má zapsat přes Modbus do zařízení
* ⚠️ Podpora chybového stavu: ne

**Skript pro čtení hodnoty**

Spustí se při každém dotazu zařízení.
* 💬 Návratová hodnota: se automaticky přiřadí jako hodnota daného zařízení
* ⚙️ Přístup k proměnným: globální proměnné modulu, globální proměnné zařízení, naposledy načtená hodnota proměnné, která se má přečíst (užitečné například, pokud zařízení indikuje, že ještě nebylo načtené atd.)
* ⚠️ Podpora chybového stavu: ano. Chybové zprávy by se měly vztahovat na danou veličinu na zařízení. Například, pokud je příkaz `ADDERROR(1, "Senzor není připojený")` ve skriptu Read Temperature v zařízení Termostat, uživatel uvidí chybovou zprávu v aplikaci na termostatu se třemi informacemi: Teplota, kód 1, text "Senzor není připojený".

**Servisní atributy zařízení**

Každé zařízení může mít definovaný neomezený počet servisních atributů. Skripty se vykonávají vždy, když uživatel (se servisními oprávněními) otevře obrazovku servisních nastavení zařízení v aplikaci. Jsou zapsané nahoře, ihned po přečtení z Modbus zařízení.
* 💬 Návratová hodnota: zobrazuje se jako hodnota daného atributu
* ⚙️ Přístup k proměnným: globální proměnné modulu, globální proměnné zařízení
* ⚠️ Podpora chybového stavu: ne

**Servisní akce zařízení**

Každé zařízení může mít definovaný neomezený počet servisních akcí. Skripty se vykonávají, když uživatel (se servisními oprávněními) otevře aplikaci na obrazovce servisních nastavení zařízení a stiskne jedno z definovaných tlačítek s názvem servisní akce. Každá servisní akce je definovaná svým názvem, parametry a vykonávacím skriptem.
* 💬 Návratová hodnota: ignorovaná
* ⚙️ Přístup k proměnným: globální proměnné modulu, globální proměnné zařízení, uživatelem zadané parametry
* ⚠️ Podpora chybového stavu: ne

## Přidat ze šablony

Umožňuje konfiguraci Modbus komunikace se zařízením bez jakýchkoliv znalostí Modbus protokolu nebo toho, jak ji konfigurovat v TapHome. Předpřipravené šablony naleznete:
* přímo v aplikaci: Přidat ze šablony → vyberte konkrétní zařízení → vyplňte základní informace a potvrďte. Všechny tyto šablony jsou spravovány v komunitním git projektu na [https://github.com/taphome/modbus_templates](https://github.com/taphome/modbus_templates) a kdokoliv tam může navrhnout nové modifikace. Co se dostane do aplikací, musí být schválené přímo týmem TapHome.
* ve vlastním XML souboru: Přidat ze šablony → Přidat ze souboru. Můžete si vytvořit vlastní XML soubor, který definuje celou šablonu přímo na Modbus modul, v kontextovém menu (3 tečky vpravo nahoře), akci Uložit jako šablonu. Budeme rádi, pokud nám pomůžete rozšířit počet podporovaných zařízení a přispějete svým XML souborem do společného komunitního git projektu.

[Více informací o konfiguraci Modbus komunikace pomocí šablon](https://taphome.com/cs/docs/integration/modbus/templates/)

Zařízení s hotovou šablonou najdete v seznamu kompatibilních zařízení pod [Modbus RTU](https://taphome.com/cs/compatibility/by-protocol/#modbus-rtu) a [Modbus TCP](https://taphome.com/cs/compatibility/by-protocol/#modbus-tcp).

## Ruční operace

Praktický nástroj pro rychlé počáteční ověření Modbus tabulky. Umožňuje:
* načíst následujících X registrů do tabulky ze specifického registru a poté dynamicky přepínat čtené hodnoty do různých datových typů
* zapsat hodnotu do daného registru

## Skenovat Slave ID

Běžnou praxí při nastavování komunikace s Modbus zařízením je, že továrně předvolené Slave ID je jiné než 1, a není snadné zjistit správné číslo. Na to slouží tento nástroj. Může skenovat zadaný rozsah Slave ID pokusem o čtení z vybraného registru vždy se zkoušeným Slave ID.

## Informace o registrech

Nachází se v dolní části Modbus modulu. Pro každý použitý registr uvádí informace o:
* názvu zařízení TapHome, které z něj čte nebo do něj zapisuje
* datu a čase posledního úspěšného přečtení z registru
* poslední hodnotě přečtené z registru
* datu a čase posledního úspěšného zápisu do registru
* poslední hodnotě zapsané do registru

## Prefetch

TapHome vytváří seznam registrů pro čtení a zápis z Modbus zařízení v závislosti na nastaveném Poll intervalu. Prefetch je proces, díky kterému řídicí jednotka přednačítá do vyrovnávací paměti hodnoty, které bude potřebovat během aktualizace. Cílem je minimalizovat počet požadavků a zpětných cest. Prefetch je ovlivněn 2 nastaveními:

* **Max prefetch register group size** (umístěné v servisních nastaveních modulu): určuje maximální počet registrů, které je možné přečíst nebo zapsat pomocí Modbus komunikace jednou žádostí.
* **Prefetch mode** (nastavitelné pro každé zařízení):
    * **No prefetch.** Přednačítání se pro toto zařízení nebude provádět. To znamená, že hodnoty se budou číst jednotlivě a přesně tehdy, když se skript provede. Příklad použití: při komunikaci s DALI konvertorem není možné přečíst hodnotu konkrétního světla přímo, ale musí se o ni co nejdříve požádat, konvertor ji připraví a až potom ji vrátí. Jakékoliv přednačítání je v tomto případě zbytečné.
    * **Isolated prefetch.** Přednačítá najednou několik registrů, ale jen ty, které jsou definovány v tomto zařízení. Například, když potřebuji registry 3 a 4 v zařízení termostatu, registry 1, 2, 5, 6 se používají v jiných zařízeních, takže žádost o registry 3 a 4 se uskuteční samostatně jen pro tyto 2 registry. Některá Modbus zařízení to vyžadují.
    * **Normal prefetch.** Všechny požadované registry ze zařízení, která se mají obnovit, se pokusí přečíst s minimálním počtem požadavků. V případě nesouvislé sekvence registrů se přečtou i registry, které se nepoužívají, pokud byly v minulosti úspěšně přečteny. Příklad: Požadují se registry 99 a 101. Pokud byl registr 100 v minulosti úspěšně přečten a Max prefetch register group size je 3 nebo více, přečtou se 3 registry jednou žádostí z registru 99. Pokud se registr 100 nikde nepoužívá a nikdy nebyl úspěšně přečten, existuje riziko, že čtení přes takový registr by mohlo vrátit Modbus výjimku, např. "Illegal data address" jako odpověď na celou žádost.

Prefetch může být ovlivněn i přímo ze skriptu: Pokud při čtení použijeme registr `SC` nebo `SH` (namísto `C` nebo `H`), potom se hodnota čte jeden registr po druhém během vykonávání skriptu a nevybírá se z vyrovnávací paměti. Podobně při zápisu, pokud použijeme registr `SC` nebo `SH` (namísto `C` nebo `H`), hodnota se zapisuje jeden registr po druhém a jinou Modbus funkcí. Modbus protokol podporuje 4 funkce zápisu: zápis více H, více C, zápis jednoho H nebo jednoho C registru najednou. Pozor: ne všechna zařízení mohou podporovat všechny tyto funkce. Tímto způsobem, pokud je to potřeba, je možné kombinovat čtení a zápis "jeden po druhém".

## Pokročilé nastavení

**TCP Port (Modbus TCP)**

Ve většině případů je výchozí hodnota 502, ale je možné, že některá zařízení poslouchají na jiném portu.

**Časový limit čtení / zápisu**

Čas, po kterém **TapHome** vzdá čekání na odpověď a nahlásí chybu **„Timeout“**. To znamená, že zařízení **neodpovědělo** v daném intervalu.

- **Pomalá Modbus zařízení** mohou vyžadovat **delší časové limity** (1+ s).
- **Vysoké hodnoty časového limitu** mohou zbytečně zdržovat ostatní Modbus zařízení čekající na odpověď.

**Zpoždění mezi požadavky**

Zpoždění, které **TapHome vkládá** mezi jednotlivé žádosti na **Modbus zařízení**.

| Typ Modbusu | Výchozí zpoždění |
|-------------|------------------|
| **Modbus TCP** | `0 ms` |
| **Modbus RTU** | Podle **rychlosti komunikace (baud rate)**, typicky alespoň **3,5 znaku** |

📌 **Důležité informace o zařízeních**:
- Některá zařízení **Modbus TCP** vyžadují **až 5000 ms** mezi požadavky.
- Některá zařízení **Modbus RTU** umožňují **kratší zpoždění** a komunikují **rychleji**.

**Použít ASCII komunikaci**

**Modbus ASCII** je méně častý standard, kde komunikace **není binární**, ale **používá znaky ASCII**.

- Tato zařízení typicky vyžadují nastavení **7 datových bitů**.

## Úlohy s Modbusem

- [Jednoduché nastavení pomocí šablon](https://taphome.com/cs/docs/integration/modbus/templates/) — Přidat zařízení Modbus z hotové šablony
- [Více elektroměrů](https://taphome.com/cs/docs/integration/modbus/multiple-meters/) — Připojit více elektroměrů k jedné sběrnici Modbus RTU

## Řešení problémů

Časté problémy související s tímto tématem:

- [Kolize Modbus ID](https://taphome.com/cs/troubleshooting/configuration/modbus-id-collision/) — Více Modbus zařízení se stejným Slave ID způsobuje chyby komunikace

[Zobrazit všechny články řešení problémů](https://taphome.com/cs/troubleshooting/)

