TapHome pre Modbus RTU / ASCII / TCP
TapHome ako Modbus slave pre BMS, SCADA či PLC cez Modbus TCP, RTU alebo ASCII: vyberte hodnoty a akcie zariadení, mapu registrov dajte mastrovi a čítajte ju tam.
Posledná aktualizácia:
TapHome môže pracovať ako Modbus slave (server), takže systém riadenia budovy (BMS), SCADA alebo PLC číta a ovláda zariadenia TapHome cez Modbus TCP alebo cez Modbus RTU či ASCII na RS485. V časti Vystaviť zariadenia vyberiete hodnoty a akcie každého zariadenia, TapHome každej pridelí vlastný register a výsledkom je mapa registrov, ktorú odovzdáte tomu, kto nastavuje master. Takto môže zariadenia čítať aj druhý Core (prepojenie viacerých Core).
Ako to funguje
- Na Core pridajte rozhranie Modbus a vyberte, čo smie master vidieť a robiť: hodnoty (teplota, úroveň žalúzií, stav spínača …) a akcie (príkazy žalúzií, prepnutie …).
- Mapa registrov vzniká priebežne podľa vášho výberu: každá hodnota dostane rozsah registrov na najbližšej voľnej adrese a hneď za ním register platnosti.
- Na mastri zadá integrátor tie isté registre ako body alebo tagy. Čítanie vráti aktuálnu hodnotu; zápis zmení zariadenie ako manuálna zmena, rovnako ako v aplikácii.
Core ďalej riadi vlastné moduly a smart rules; Modbus len zdieľa hodnoty a akcie, ktoré ste vybrali.
Príklad: žalúzie a termostat pre BMS
BMS budovy číta teplotu v miestnosti, nastavuje požadovanú teplotu termostatu a môže zastaviť žalúzie. Na Core v časti Vystaviť zariadenia vyberte Pridať nové rozhranie → Modbus TCP a potom pridajte žalúzie a termostat. Toto je úplná konfigurácia na strane TapHome — kliknite na register alebo na Pridať zariadenie a uvidíte ďalší krok:
- IP adresa Core — BMS sa k nemu pripája. Dajte Core pevnú adresu, napríklad rezerváciou DHCP v routeri.
- Slave ID — BMS musí posielať rovnaké Unit ID; požiadavka s iným ID dostane výnimku 0x0A.
- Hodnota zaberá dva registre: samotnú hodnotu a za ňou register platnosti. ×100 je násobiteľ: úroveň žalúzií 0,55 sa číta ako 55.
- Akcia má jeden register, do ktorého BMS zapisuje. Stop je coil: zápis ON zastaví žalúzie.
- Nastavenia registra — typ registra, index, dátový typ, násobiteľ, poradie bajtov a register platnosti. Predvolené hodnoty zvyčajne vyhovujú; index zmeňte, keď BMS očakáva pevné rozloženie.
- Pridať zariadenie — zaškrtnite hodnoty a akcie zariadenia; OK ich pridá na najbližšie voľné adresy. Zapisovateľné hodnoty dostanú holding register (H) alebo coil (C), hodnoty len na čítanie input register (A) alebo discrete input (D).
Na strane BMS alebo SCADA
Master potrebuje IP adresu a port Core (alebo nastavenia linky RS485), Slave ID a zoznam bodov. Pre príklad vyššie:
| Bod | Register TapHome | Zápis od 1 | Funkčný kód | Hodnota |
|---|---|---|---|---|
| Úroveň žalúzií | H 0 | 40001 | 03 čítanie, 06 zápis | 0–100 |
| Platnosť úrovne žalúzií | H 1 | 40002 | 03 | 0 = platná |
| Uhol lamiel | H 2 | 40003 | 03 čítanie, 06 zápis | 0–100 |
| Platnosť uhla lamiel | H 3 | 40004 | 03 | 0 = platná |
| Zastavenie žalúzií | C 4 | 00005 | 05 zápis | ON = zastaviť |
| Teplota | A 5 | 30006 | 04 | ÷ 10 = °C |
| Platnosť teploty | A 6 | 30007 | 04 | 0 = platná |
| Požadovaná teplota | H 7 | 40008 | 03 čítanie, 06 zápis | ÷ 10 = °C |
| Platnosť požadovanej teploty | H 8 | 40009 | 03 | 0 = platná |
Všetky registre sú Int16 (coil je jeden bit). H = holding register, A = input register, C = coil.
TapHome čísluje registre od 0, tak ako sa posielajú v požiadavke. Mastre, ktoré používajú zápis od 1 (40001 pre holding register 0), majú číslo o jedna vyššie — posun o jednu je najčastejšia príčina čítania nesprávnej hodnoty.
Čítanie a zápis z príkladu cez pymodbus 3.16:
| |
Knižnice pre iné jazyky: NModbus4 (C#), libmodbus (C), digitalpetri/modbus (Java), goburrow/modbus (Go). Protokol vysvetľuje Simply Modbus.
Master by mal čítať register platnosti spolu s hodnotou (oboje jednou požiadavkou) a každý kód iný než 0 brať ako poruchu — stratené zariadenie sa potom v BMS ukáže ako porucha, nie ako zamrznutá hodnota.
Rozhrania a komunikačné vlastnosti
| Rozhranie | Vlastnosti | Predvolené |
|---|---|---|
| Modbus TCP | TCP port, Slave ID | port 502, najbližšie voľné Slave ID na porte |
| Modbus RTU, Modbus ASCII | svorka BUS 1, BUS 2 alebo BUS 3, prenosová rýchlosť, dátové bity, parita, stop bity, Slave ID | bez svorky, 9600 Bd, 8 dátových bitov (ASCII 7), parita None, 1 stop bit, Slave ID 1 |
- Viac mastrov cez TCP: viac rozhraní Modbus TCP môže zdieľať jeden port, ak majú rôzne Slave ID — napríklad jedno pre BMS a jedno pre druhý Core, každé s vlastnými registrami. Naraz najviac 10 spojení.
- RS485: rozhranie RTU alebo ASCII sa spustí až po výbere svorky a jedna svorka nesie jedno rozhranie.
- Slave ID je 1 až 247. Rozhranie odpovedá len na vlastné: Modbus TCP vráti na iné Unit ID (aj 0 alebo 255) výnimku 0x0A, RTU a ASCII na rámce pre inú adresu neodpovedajú.
Zoznam rozhraní ukazuje konflikty, napríklad rovnaký port a Slave ID dvakrát alebo rozhranie bez svorky.
Nastavenia registra
| Nastavenie | Hodnoty |
|---|---|
| Typ registra | H holding register, A input register, C coil, D discrete input. Master môže zapisovať len do H a C. |
| Index registra | 0 až 65535, adresa v požiadavke Modbus. |
| Dátový typ | Bool, Int16 a UInt16 zaberajú jeden register, Int32, UInt32 a Float dva. C a D nesú len Bool. |
| Multiplier | Čítanie: register = hodnota × násobiteľ. Zápis: hodnota = register ÷ násobiteľ. Teploty majú predvolene ×10, úrovne a percentá ×100 (0,55 → 55). |
| Threshold | Namiesto násobiteľa pre Bool na číselnej hodnote: true, keď hodnota dosiahne aspoň prah; zápis true do coilu nastaví hodnotu na prah, false na 0. |
| Endianness | BigEndian alebo LittleEndian; Byte swap navyše prehodí bajty vnútri každého registra pri Int32, UInt32 a Float. |
Detail rozhrania označí registre, ktorých rozsahy sa prekrývajú. Prekrývajúca sa hodnota sa neobsluhuje — dajte každej hodnote vlastný rozsah vrátane jej registra platnosti.
Register platnosti a náhradná hodnota
Include validity register (pri C a D Include validity bit) je predvolene zapnutý. Register len na čítanie hneď za hodnotou oznamuje mastrovi, či je hodnota platná; keď nie je, registre hodnoty namiesto nej vrátia Fallback value (pri Float NaN s voľbou Use NaN as fallback).
| Kód | Význam |
|---|---|
| 0 | platná |
| 1 | hodnota sa nezmestí do dátového typu (napríklad NaN v celočíselnom type) |
| 2 | zariadenie je nedostupné alebo v chybe |
| 3 | nastavenia registra sú neplatné |
| 5 | zatiaľ žiadna hodnota, napríklad hneď po štarte Core |
Pri C a D je bit platnosti 1, keď hodnota nie je platná.
Akcie
- Akcia bez parametrov (Stop, Toggle …) má jeden register na H alebo C. Zápis 1 alebo viac, prípadne coil ON, ju spustí; zápis 0 vráti výnimku 0x03.
- Akcia s parametrami (pripočítanie k úrovni žalúzií, nastavenie rozsahu …) má jeden holding register na každý parameter, jeden za druhým. Jeden zápis musí pokryť všetky; zápis len niektorých vráti výnimku 0x03.
- Registre akcií sú len na zápis — ich čítanie vráti výnimku 0x02.
Čo dostane master
TapHome obsluhuje funkčné kódy 01, 02, 03, 04, 05, 06, 15 a 16. Jedna požiadavka môže čítať viac hodnôt za sebou; inak master dostane výnimku:
| Výnimka | Kedy |
|---|---|
| 0x01 | nepodporovaný funkčný kód |
| 0x02 | adresa nepriradená žiadnej hodnote, rozsah s medzerou, zápis do A alebo D, čítanie registra akcie, zápis do registra platnosti |
| 0x03 | hodnota, ktorú zariadenie nemôže prijať, alebo neplatný zápis akcie; zápis viacerých hodnôt sa vykoná celý, alebo vôbec |
| 0x04 | zariadenie zápis odmietlo |
| 0x0A | Modbus TCP: iné Slave ID (Unit ID), než má rozhranie |
Modbus TCP zatvorí spojenie, ktoré je 15 minút nečinné.
Aktualizácia na 2026.1
Pri aktualizácii riadiacej jednotky na 2026.1 sa existujúce rozhrania Modbus slave prevedú automaticky so zachovaním adries registrov a Slave ID. Register Stop sa neprevedie pri žalúziách KNX, pri žalúziách a zariadeniach Markíza z Packet parsera a pri virtuálnych zariadeniach Markíza; master, ktorý ho používal, dostane na jeho adrese výnimku 0x02 (release notes 2026.1).
Od verzie 2026.1 odpovedá Modbus TCP len na vlastné Slave ID — ak váš master posiela Unit ID 0 alebo 255, nastavte ho na Slave ID rozhrania.
Ladenie pripojení Modbus RTU
RS485 je zdieľaná zbernica, takže počítač s prevodníkom USB na RS485 (napríklad FTDI USB-RS485-WE-1800-BT) a terminálovým softvérom, ako je Terminal pre Windows, môže počas integrácie odpočúvať komunikáciu.