Modbus
A Modbus bemutatása
A Modbus egy egyszerű kommunikációs protokoll, amelyet gyakran használnak HVAC berendezések integrálására. Master-slave kommunikációt használ, amikor több eszköz csatlakoztatható a közös buszra, mindegyiknek egyedi Slave ID-vel kell rendelkeznie, és a mester eszköz mindig lekérdezi az arra reagáló egyes slave eszközöket.
Master – slave topológia
A legtöbb esetben a TapHome-ot abban az üzemmódban használják, ahol a Core vezérlőegység Modbus Master, a csatlakoztatott eszközök pedig Modbus Slave. Ez a Hardver → Modbus RTU vagy Modbus TCP részben állítható be. Lehetőség van azonban az ellenkező irány használatára is, amikor a TapHome Core valamilyen más kiváló rendszert biztosít az eszközökről információval. Ezt a Eszközök feltárása → Modbus RTU vagy Modbus TCP szakasz határozza meg.
Fizikai rétegek
A Modbus különböző fizikai rétegeken keresztül tud kommunikálni:
- soros vonalon keresztül, jellemzően RS485. Ezt Modbus RTU-nak hívják
- LAN hálózaton keresztül a TCP/IP protokollon keresztül
- LAN hálózaton keresztül UDP protokollon keresztül - a TapHome rendszer jelenleg nem támogatja
Modbus-regiszterek
A Modbus 4 típusú regisztert határoz meg:
Regisztráció | Röviden | Hozzáférés | Méret | Function codes |
---|---|---|---|---|
Holding Registers | H | Read-write | 16-bits | Read: 03, Write multiple: 16 (0x10) |
- Write Single Holding | SH | Read-write | 16-bits | Write single: 06 |
Coil (Discrete Output Coils) | C | Read-write | 1-bit | Read: 01, Write multiple: 15 (0xF) |
- Write Single Coil | SC | Read-write | 1-bit | Write single: 05 |
Discrete Input Contacts | D | Read-only | 1-bit | Read: 02 |
Analog Input Registers | A | Read-only | 16-bits | Read: 04 |
A regiszterszám 16 bites, azaz értéke 0 és 65535 között lehet. A regisztereken műveletek végezhetők:
- több regiszter olvasása
- egy nyilvántartás bejegyzése
- több nyilvántartás bejegyzése
Egyes Modbus implementációk további parancsokat adnak hozzá: slave id jelentése, bitmaszkolás, írás és olvasás egyszerre stb., de ezeket a TapHome nem támogatja.
A berendezés szállítója vagy gyártója által biztosított berendezésdokumentáció részét képezi az arra vonatkozó információ, hogy melyik nyilvántartásban mit és milyen formátumban tárolnak. Példa a Modbus-dokumentációra a Modbus-eszköz szállítójától:
C típusú regiszter (Coil), index 58, mivel csak 2 értékkel rendelkezik (nyitott / zárt), és az olvasáson és az íráson kívül lehetővé teszi a TapHome eszköz megfelelő típusát a digitális kimenet.
Gyorsított utasítások egy Modbus-eszköz TapHome-ba történő integrálásához
- Csatlakoztassa az eszközt a megfelelő buszhoz (Modbus RTU és ASCII esetén) vagy a LAN-hoz (Modbus TCP esetén). TCP-eszköz esetén győződjön meg arról, hogy ugyanazon a hálózaton van, mint a TapHome Core vezérlő, például a Fing (iOS, Android) vagy az IP Scanner (Windows) használatával.
- A TapHome → Hardver részben adjon hozzá egy új Modbus RTU vagy Modbus TCP interfészt, és állítsa be a kommunikációs paramétereket a dokumentáció szerint. A Modbus RTU esetében ez az adatátviteli sebesség, a stop bitek, a paritás, az adatbitek, a Modbus TCP esetében pedig az IP-cím.
- Keresse meg az eszköz Modbus dokumentációjában, hogy milyen Slave ID-t használ. A Modbus TCP esetében ezt néha egységazonosítónak nevezik. Ha több eszközt szeretne használni egy buszon a Modbus RTU-val, akkor mindegyik Slave ID-jét meg kell változtatnia úgy, hogy az egyedi legyen az adott buszvonalon.
- Kommunikációs teszt - a Kézi műveletek eszközzel próbáljon kiolvasni néhány információt az adott eszköz dokumentációja (Modbus táblázat) szerint. Ha minden működik, látnia kell egy kijelzést.
- Ha a kommunikációs teszt sikeres volt, hozzon létre egy modult, amely a Modbus eszközt képviseli
- Válassza ki, hogy a Modbus dokumentációból mely információkat kívánja megjeleníteni a TapHome rendszerben, és hozza létre a megfelelő eszközöket. Kezdje az értékek olvasásával (Szkript olvasása), és a szereplők esetében folytassa az írással (Szkript írása).
- Ha az eszköz alapvető funkciói működnek, adjon hozzá Hiba, Figyelmeztetés vagy Információ definíciókat a parancsfájlokhoz.
- Szükség esetén szolgáltatásattribútumokat és szolgáltatási műveleteket is megadhat a TapHome eszközökhöz és modulokhoz
- Ha minden be van hangolva és megfelelően kommunikál, exportálja a modult XML fájlba, hogy legközelebb felhasználhassa. Ön is hozzájárulhat a közösséghez: github.com/taphome-official/modbus_templates
Megvalósítás a TapHome-ban
Ez a dokumentáció arra az esetre vonatkozik, amikor a TapHome Core vezérlőegység egy Modbus master, és a Hardver → Modbus RTU / TCP szakaszhoz hozzáadott fizikai eszközök Modbus slave-ek.
Hierarchia
Felület
Hardver → Modbus RTU: egyes BUS-on eszközök vannak csatlakoztatva, az RS485 átvitel alapvető paraméterei vannak meghatározva, mint pl. baudráta, paritás, stop bitek, vagy hogy az adatok ASCII vagy binárisak-e. Ezen a buszon csak azonos kommunikációs beállításokkal rendelkező eszközök csatlakoztathatók. Ezenkívül a helyes kommunikáció csak akkor működik, ha az A és B kábel megfelelően van csatlakoztatva. Hardver → Modbus TCP: az eszközök ugyanarra a LAN-ra csatlakoznak, mint a Core vezérlőegység. Egy TCP-port van meghatározva, amely közös az összes, ehhez az interfészhez csatlakoztatott eszközhöz.
Modul
Egy interfész egy vagy több modult tartalmazhat, amelyek a legtöbb esetben a teljes fizikai eszközzel való kommunikációt fedik le. Konfigurációs szempontból a Modul meghatározza a csatlakoztatott eszköz egyedi slave azonosítóját a Modbus RTU-hoz, valamint a Modbus TCP IP-címét.
Eszköz
Egy adott vezérlőelemet vagy érzékelőt jelöl a TapHome rendszerben. Mindig az egyik szülőmodul részének kell lennie.
Példa
5 klímaberendezés egy buszra csatlakoztatva, közös Modbus RTU interfészt használ, amely meghatározza a busz portot, az átviteli sebességet és egyéb kommunikációs paramétereket. Az interfész 5 modult tartalmaz, amelyek mindegyike egy légkondicionáló egységet képvisel egyedi Slave ID-vel. Minden modul alatt meghatározott eszközök vannak, mint például termosztát, hűtési/fűtési mód, ventilátor teljesítmény vagy a lamellák billentése. Az egyes eszközök meghatározott parancsokkal rendelkeznek a Modbus értékek olvasásához és/vagy írásához.
Támogatott eszközök:
- Digitális kimenet
- Analóg kimenet
- Termosztát
- Többértékű kapcsoló
- Hőmérséklet szenzor
- Villanyóra
- Állapot kapcsolat
- Gomb
- Egy változó
Szkriptek Modbus értékek olvasásához és írásához
A TapHome eszközök szkriptek segítségével kommunikálnak a fizikai Modbus eszközökkel.
A Modbus eszközökkel való kommunikációhoz script szakaszok vannak meghatározva rajtuk:
- Inicializáló szkript: az eszköz indításakor fut le (például a vezérlőegység újraindítása után)
- Szkript olvasása: globális változók értékeinek beállítása vagy olvasási hibaállapotok
- Read Value script: egy adott érték (mennyiség) Modbus-eszközről történő kiolvasására szolgáló szkript (pl. beállított hőmérséklet a termosztáton vagy mért hőmérséklet a termosztáton)
- Write Value script: írja be az értéket a Modbus eszközre
Modbus eszközökkel való kommunikáció funkciói
MODBUSR (Modbus Read) Funkció a Modbus regiszterének olvasásához. Adattípustól függően lehet 1 regiszter (16 bites adattípusoknál), 2 regiszter (32 bites adattípusoknál), vagy több regiszter (String adattípusoknál)
MODBUSR(register_type, register_address, data_type, [OPTIONAL: number_of_characters if data_type=String]) Example: MODBUSR(H, 20, Int16)/100
Olvassa el a 20-as H regiszterszámot (vagy címet), és értelmezze 16 bites egész számként (egy +- jelű egész szám). Végül osszuk el ezt az értéket 100-zal (a tizedesvesszőt 2 hellyel balra toljuk).
A regisztrációs cím hexadecimális formátumban is megadható, pl. a 20-as érték 0x14-ként írható fel.
MODBUSW (Modbus Write)
MODBUSW(register_type, register_address, data_type, value_to_write) Example: MODBUSW(H, 20, Int16, Te * 100)
A 20-as című H regiszterbe írjuk be a Te változó értékét szorozva 100-zal (a tizedesvesszőt 2-vel jobbra tolva).
MODBUSWNE (Modbus írás, ha nem egyenlő)
Ugyanaz, mint a MODBUSW, azzal a különbséggel, hogy írás előtt kiolvassa az értéket a regiszterből, és csak akkor írja ki, ha az írott érték eltér az olvasotttól. Az egész művelet hosszabb időt vesz igénybe, és jellemző használata egy Modbus eszköz tulajdonságainak beállításakor, ahol a konfiguráció korlátozott számú írással az EEPROM memóriába kerül.
A MODBUSR, MODBUSW és MODBUSWNE funkciók csak Modbus parancsfájlokban használhatók. Ha más szkriptekben használják, akkor hibának minősülnek.
Modbus adattípusok
A regiszterek tartalmát a modbus tábla határozza meg. Mivel egy Modbus regiszter mérete 16 bites, ezért leggyakrabban 16 bites Int16 vagy UInt16 értékeket használnak, és a tizedesjegyeket 10-es vagy 100-as osztásokkal számolják vissza. De egyes Modbus eszközök 16 bites lebegő regisztereket is használnak. -pontszámok (Float), vagy megváltozott bitsorrendűek (big endian, little endian), két regiszterbe írnak egy számot (32 bites változatok). Néha a legegyszerűbb módja annak, hogy megtalálja a helyes adattípust, ha közvetlenül a TapHome alkalmazásban (Manual Operations) használja a segédprogramot, ahol 1 vagy több regisztert tölthet be, és dinamikusan válthat az adattípus között.
- Int16 (-32,768-32,767)
- Uint16 (0-65 535)
- Int32 (-2 147 483 648 és 2 147 483 647 között)
- Uint32 (0-4 294 967 295)
- Úszó (IEEE 754, egyetlen pontosságú lebegőpontos)
- Bool 0 = hamis, 1 = igaz
- BigEndianInt16 = Int16
- LittleEndianInt16
- BigEndianUint16 = Uint16
- LittleEndianUint16
- BigEndianInt32 / BigEndianInt32ByteSwap
- LittleEndianInt32 / LittleEndianInt32ByteSwap
- BigEndianUint32 / BigEndianUint32ByteSwap
- LittleEndianUint32 / LittleEndianUint32ByteSwap
- BigEndianFloat / BigEndianFloatByteSwap
- LittleEndianFloat / LittleEndianFloatByteSwap
-
Húr
BCD formátum is használható a TOBCD() és FROMBCD() függvényeknek köszönhetően
Frissítés és szavazási időköz
A Modbus interfész minden eszköze rendelkezik egy meghatározott Lekérdezési intervallum attribútummal, amely meghatározza, hogy a TapHome vezérlőegység milyen gyakran kérjen le új Modbus eszközértékeket. A Modbus kommunikáció Master-Slave típusú, így a Modbus eszközről származó információk csak akkor érhetik el a TapHome-ot, ha a TapHome kéri. Minél hosszabb a Poll Intervall, annál később frissül a TapHome értéke. A túl rövid lekérdezési intervallum azt jelentheti, hogy a TapHome-ot szükségtelenül megterheli a szükségtelen értékek lekérése, és előfordulhat, hogy nem lesz ideje az összes eszközt kiszolgálni az adott időintervallumon belül. Például Modbus RTU-val és alacsonyabb adatátviteli sebességgel, pl. 9600, egy lekérdezés/válasz több tíz ms-ig is eltarthat. Hőmérőknél a legtöbb esetben elegendő 15000ms (15s) intervallum, gomboknál éppen ellenkezőleg, a lehető legkevesebb, pl. 50 ms. Egyes Modbus eszközök elvárják, hogy a master időnként az aktuális értéket írja be a regiszterbe. Erre szolgál a Periodikus írás attribútum.
Szkriptekből származó hibaállapotok meghatározása
Egyes szkriptekben lehetőség van hiba / figyelmeztetés / információ definiálására az eszközön, az eszköz Modbus regisztereiből kiolvasott információk alapján. Ezek az üzenetek ugyanúgy jelennek meg a TapHome-ban, mint a belső TapHome hibaüzenetek. Opcionálisan numerikus hibakód is hozzáadható a hibaüzenethez, ha ez praktikus a Modbus eszköz szervizeléséhez.
A készüléken hibakódonként csak egy hibaüzenet definiálható kód nélkül, vagy csak egy hibaüzenet.
ADDERROR(), ADDWARING(), ADDINFO()
ADDERROR([Optional: custom_code], text)
Példa: az analóg kimeneti eszköz Read Script részében van egy kód:
ADDERROR("Error without code"); ADDWARNING("Warning without code"); ADDINFO("Info without code"); ADDERROR(1, "Error with code"); ADDWARNING(1, "Warning with code"); ADDINFO(1,"Info with code");
...ami üzenetekben jelenik meg a készüléken:
Szolgáltatás attribútumai és műveletei
A csatlakoztatott Modbus-eszköztől származó érték (vagy több érték, például termosztát) mellett a TapHome modulok és eszközök szolgáltatásattribútumokat is olvashatnak, vagy szervizműveleteket hajthatnak végre. Ezek ezután nem érhetők el az asztalon a rendszer többi felhasználója számára, hanem csak a Modbus eszközzel kapcsolatos részletesebb információkra szolgálnak, anélkül, hogy szükségtelenül túlterhelnék a rendszert nagyszámú változóval és művelettel.
A Szolgáltatási attribútumok a TapHome modul vagy eszköz szolgáltatásbeállításaiban jelennek meg. Általában az eszközzel kapcsolatos információk megjelenítésére szolgálnak, például modell, sorozatszám, firmware-verzió, hardververzió, utolsó újraindítás óta eltelt idő stb. Ez egy Modbus készülék szervizelése szempontjából hasznos információ, de nincs értelme külön TapHome eszközöket létrehozni hozzájuk.
A Szolgáltatási műveletek a TapHome modul vagy eszköz szolgáltatásbeállításaiban jelennek meg, a legalul gombként. Ha megnyomják, egy előre beállított Modbus műveletet hajtanak végre, amely beírja a szükséges információkat a regiszterbe. Példa a felhasználásra: Slave ID beállítása vagy módosítása, Szűrőcsere, Számláló beállítása a kívánt értékre, Készülék nullázása és hasonlók.
Szkriptek és segédváltozók a modulon
Modul globális változók
A modulon definiált változók a modul összes szkriptjében használhatók, és meg vannak osztva az adott modulhoz rendelt összes eszközzel.
Init szkript
Választható. Akkor fut, amikor a modul elindul. Ha megtelt, és még nem futott le, további szkriptek nem engedélyezettek.
💬 Visszatérési érték: figyelmen kívül hagyva
⚙️ Hozzáférés a változókhoz: a modul globális változói
⚠️ Hibaállapot támogatás: nem
Szkript olvasása
Minden alkalommal fut, amikor egy modult lekérdeznek.
💬 Visszatérési érték: figyelmen kívül hagyva
⚙️ Hozzáférés a változókhoz: a modul globális változói
⚠️ Hibaállapot támogatás: igen
Szkript írása
Futó:
- az eszközváltozó megváltoztatásakor
-
ha a "Periodikus írás" attribútum engedélyezve van, akkor automatikusan elindulásakor
💬 Visszatérési érték: figyelmen kívül hagyva
⚙️ Hozzáférés a változókhoz: a modul globális változói, az adott modulhoz tartozó eszközök értékei (vigyázat, ezek nem globális eszközváltozók - a modul szkriptje nem fér hozzájuk). Ezt abban az esetben használjuk, ha az adott modul több eszközének értékét kell egy regiszterbe írni.
⚠️ Hibaállapot támogatás: nem
Szolgáltatás attribútumai
Minden modul korlátlan számú szolgáltatás attribútumot tartalmazhat. A szkriptek minden alkalommal lefutnak, amikor egy felhasználó (szolgáltatási jogosultsággal) megnyitja a modul szolgáltatásbeállítási képernyőjét az alkalmazásban. Felül vannak írva, közvetlenül a Modbus eszközről történő olvasás után.
💬 Visszatérési érték: az adott attribútum értékeként jelenik meg
⚙️ Hozzáférés a változókhoz: a modul globális változói
⚠️ Hibaállapot támogatás: nem
Szolgáltatási műveletek
Minden modulban korlátlan számú szolgáltatási művelet definiálható. A szkriptek akkor indulnak el, amikor a felhasználó (szolgáltatási jogosultságokkal) megnyitja az alkalmazást a modul szolgáltatásbeállítási képernyőjén, és megnyomja a megadott gombok egyikét a szolgáltatási művelet nevével. Minden szolgáltatásműveletet a neve, a paraméterei és a végrehajtási parancsfájl határoz meg.
💬 Visszatérési érték: figyelmen kívül hagyva
⚙️ Hozzáférés a változókhoz: globális modulváltozók, felhasználó által megadott paraméterek
⚠️ Hibaállapot támogatás: nem
Szkriptek és segédváltozók az eszközön
Globális eszközváltozók
Az eszközön definiált változók az adott eszközön definiált összes szkriptben használhatók, és az eszközön kívül sehol nem használhatók. Az eszköz tárolhatja bennük az állapotát, megoszthatja a szkriptjei között stb.
Init script
Választható. Akkor indul, amikor a készülék elindul. Ha megtelt, és még nem futott le, további szkriptek nem engedélyezettek.
💬 Visszatérési érték: figyelmen kívül hagyva
⚙️ Hozzáférés a változókhoz: modul globális változói, eszköz globális változói
⚠️ Hibaállapot támogatás: nem
Szkript olvasása
Minden alkalommal fut, amikor az eszköz lekérdezésre kerül, a "Read Value Scripts" előtt.
💬 Visszatérési érték: figyelmen kívül hagyva
⚙️ Hozzáférés a változókhoz: modul globális változói, eszköz globális változói
⚠️ Hibaállapot támogatás: igen. A hibák a teljes készülékre vonatkoznak (pl. a teljes termosztátra, nem csak a beállított értékére vagy az aktuális hőmérséklet értékére).
Írjon érték szkriptet
Futó:
- minden értékváltozásnál
- ha a "Periodikus írás" attribútum be van kapcsolva, akkor minden lekérdezésnél is
💬 Visszatérési érték: figyelmen kívül hagyva
⚙️ Hozzáférés a változókhoz: a modul globális változói, az eszköz globális változói, a Modbuson keresztül az eszközre írandó mennyiség konkrét értéke.
⚠️ Hibaállapot támogatás: nem
Érték szkript olvasása
Minden alkalommal fut, amikor egy eszközt lekérdeznek.
💬 Visszatérési érték: automatikusan hozzárendelődik az adott eszköz értékeként
⚙️ Hozzáférés a változókhoz: a modul globális változói, az eszköz globális változói, a változó legutoljára betöltött értéke, a leolvasandó kéreg (hasznos pl. ha a készülék jelzi, hogy még nincs betöltve stb. .)
⚠️ Hibaállapot támogatás: igen. A hibaüzeneteknek a készüléken megadott mennyiségre kell vonatkozniuk. Például ha az ADDERROR(1, "Érzékelő nincs csatlakoztatva") parancs szerepel a Hőmérséklet olvasása parancsfájlban a termosztátban, a felhasználó egy hibaüzenetet fog látni a termosztát alkalmazásában három információval: Hőmérséklet, 1-es kód, szöveg " Az érzékelő nincs csatlakoztatva".
Szolgáltatás attribútumai
Minden eszköz korlátlan számú szolgáltatás attribútumot definiálhat. A szkriptek minden alkalommal lefutnak, amikor egy felhasználó (szolgáltatási jogosultsággal) megnyitja az eszköz szolgáltatásbeállítási képernyőjét az alkalmazásban. Felül vannak írva, közvetlenül a Modbus eszközről történő olvasás után.
💬 Visszatérési érték: az adott attribútum értékeként jelenik meg
⚙️ Hozzáférés a változókhoz: modul globális változói, eszköz globális változói
⚠️ Hibaállapot támogatás: nem
Szolgáltatási műveletek
Minden eszköz korlátlan számú szolgáltatási műveletet definiálhat. A szkriptek akkor futnak le, amikor a felhasználó (szolgáltatási jogosultságokkal) megnyitja az alkalmazást az eszköz szolgáltatásbeállítási képernyőjén, és megnyomja a megadott gombok egyikét a szolgáltatási művelet nevével. Minden szolgáltatásműveletet a neve, a paraméterei és a végrehajtási parancsfájl határoz meg.
💬 Visszatérési érték: figyelmen kívül hagyva
⚙️ Hozzáférés a változókhoz: globális modulváltozók, globális eszközváltozók, felhasználó által megadott paraméterek
⚠️ Hibaállapot támogatás: nem
Hasznos segédprogramok
Hozzáadás sablonból
Lehetővé teszi a Modbus-kommunikáció konfigurálását az eszközzel a Modbus protokoll ismerete vagy a TapHome-ban történő konfigurálása nélkül. Az előre elkészített sablonok megtalálhatók:
- Közvetlenül az alkalmazásban: Hozzáadás a sablonból → válasszon egy adott eszközt → töltse ki az alapvető információkat, és erősítse meg. Mindezeket a sablonokat egy közösségi git-projekt karbantartja a https://github.com/taphome/modbus_templates címen, és ott bárki új modokat javasolhat. Az alkalmazásokba kerülőket közvetlenül a TapHome csapatának kell jóváhagynia
- saját XML-fájljában: Hozzáadás sablonból → Hozzáadás fájlból. Létrehozhat saját XML fájlt, amely meghatározza a teljes sablont közvetlenül a Modbus modulon, a helyi menüben (3 pont a jobb felső sarokban), a Mentés sablonként művelet. Örülünk, ha segít a támogatott eszközök számának bővítésében, és XML fájloddal hozzájárul a közös közösségi git projekthez.
További információ a Modbus kommunikáció sablonok segítségével történő konfigurálásáról
Kézi műveletek
Praktikus eszköz a Modbus-tábla gyors kezdeti ellenőrzéséhez. Lehetővé tesz:
- töltse be a következő X regisztereket a táblázatba egy adott regiszterből, majd dinamikusan váltsa át az olvasott értékeket különböző adattípusokba
- írja be az értéket az adott regiszterbe
Szolgaazonosítók beolvasása
A Modbus eszközzel való kommunikáció beállításakor bevett gyakorlat az, hogy a gyári alapértelmezett Slave ID 1-től eltérő, és nem könnyű kitalálni a helyes számot. Ez a segédprogram erre való. A megadott Slave ID tartományt úgy tudja vizsgálni, hogy a kiválasztott regiszterből mindig a tesztelt slave azonosítóval próbál olvasni.
Információk a nyilvántartásokról
A Modbus modul alsó részén található. Minden egyes használt regiszterhez a következőket sorolja fel:
- Annak az eszköznek a TapHome neve, amely olvas vagy ír rá
- Az utolsó sikeres leolvasás dátuma és ideje a nyilvántartásból
- A regiszterből kiolvasott utolsó érték
- Az utolsó sikeres nyilvántartásba vétel dátuma és időpontja
- A regiszterbe írt utolsó érték
További beállítások
Előzetes letöltés
A TapHome létrehoz egy listát azokról a regiszterekről, amelyekről Modbus-eszközöket kell olvasni és írni, a beállított lekérdezési időköztől függően. Az előzetes letöltés egy folyamat, amelynek köszönhetően a vezérlőegység előre letölti a pufferbe azokat az értékeket, amelyekre a frissítés során szüksége lesz. A cél az igénylések és oda-vissza utak számának minimalizálása. Az előzetes letöltést 2 beállítás befolyásolja:
- Max prefetch regisztercsoport mérete (a modul szolgáltatási beállításaiban található): meghatározza a Modbus kommunikáción keresztül egy kéréssel olvasható vagy írható regiszterek maximális számát.
- Előzetes letöltési mód (minden eszközhöz állítható):
- Nincs előzetes letöltés. Az előtöltés nem történik meg ennél az eszköznél. Ez azt jelenti, hogy az értékek egyenként és pontosan a szkript végrehajtásakor lesznek beolvasva. Példa a felhasználásra: DALI konverterrel kommunikálva egy adott lámpa értéke közvetlenül nem leolvasható, de azt minél előbb le kell kérni, az átalakító elkészíti, majd csak utána adja vissza. Ebben az esetben az előtöltés értelmetlen.
- Izolált előzetes letöltés. Egyszerre több regisztert is előtölt, de csak azokat, amelyek ebben az eszközben vannak definiálva. Például amikor szükségem van a 3-as és 4-es regiszterre a termosztátos készülékben, akkor a többi készülékben az 1-es, 2-es, 5-ös, 6-os regiszter használatos, így a 3-as és 4-es regiszter kérése csak erre a 2 regiszterre történik külön. Egyes Modbus eszközök ezt igénylik.
- Normál elővétel. A visszaállítandó eszközökről minden kért regisztert a lehető legkevesebb kéréssel próbálunk kiolvasni. Nem folytonos regisztersorozat esetén a nem használt regisztereket is beolvassa, ha azokat korábban sikeresen beolvasták. Példa: A 99-es és a 101-es regisztert kérik. Ha a 100-as regiszter sikeresen beolvasásra került a múltban, és a Max prefetch regisztercsoport mérete 3 vagy több, akkor a 99-es regiszter egyetlen kérésével 3 regisztert olvas be. Ha a 100-as regisztert sehol nem használják, és soha nem sikerült beolvasni, fennáll annak a veszélye, hogy egy ilyen regiszter átolvasása Modbus kivételt eredményezhet, pl. „Illegális adatcím” válaszként a teljes kérelemre.
Az előzetes letöltés közvetlenül a szkriptből is befolyásolható: Ha az SC vagy SH regisztert használjuk (C vagy H helyett) az olvasás során, akkor az érték a script végrehajtása során egy regiszterenként kerül beolvasásra, és nem kerül kihúzásra. a cache memóriából. Hasonlóképpen, ha íráskor SC vagy SH regisztert használunk (C vagy H helyett), akkor az értéket egy regiszter és egy másik modbus függvény írja ki. A Modbus protokoll 4 írási funkciót támogat: egyszerre több H, több C írás, egy H vagy egy C regiszter írása. Figyelem: nem minden eszköz támogatja ezeket a funkciókat. Ily módon szükség esetén az olvasás és az írás kombinálható, és „egyenként”.
TCP port (Modbus TCP)
A legtöbb esetben az alapértelmezett érték 502, de előfordulhat, hogy egyes eszközök másik porton figyelnek.
Olvasás/írás időtúllépése
Az az idő, amely után a TapHome feladja a válaszvárást, és "Timeout" hibát jelez, ami azt jelenti, hogy a készülék nem válaszolt a kérésre a megadott időintervallumon belül. Előfordulhat, hogy a lassú Modbus eszközök nem tudnak azonnal reagálni, ezért ezt az intervallumot 1 vagy több másodpercre meg kell hosszabbítani. De óvakodjunk a szükségtelenül magas értékektől, mert ha valamilyen oknál fogva meghiúsul a kommunikáció egy Modbus eszközzel, az feleslegesen késlelteti a válaszra váró többi Modbus eszközt.
Késések a kérések között
Az a késleltetés, amelyet a TapHome beiktat a Modbus-eszközhöz intézett egyedi kérések közé. Modbus TCP esetén ez alapértelmezés szerint 0 ms, Modbus RTU esetében ez a késleltetés a specifikáció szerint a kommunikációs sebességen (baud rate) alapul, legalább 3,5 karakter. Vannak azonban olyan Modbus TCP-eszközök, amelyek akár 5000 ms-ig is eltartanak a kérések között, vagy fordítva, egyes Modbus RTU eszközök még rövidebb késleltetést is képesek kezelni, és ezért gyorsabban tudnak kommunikálni.
Használjon ASCII kommunikációt
A Modbus ASCII egy kevésbé használt szabvány, ahol a kommunikáció nem bináris, hanem ASCII karaktereket használ. A legtöbb ilyen eszköz a "7 adatbit" beállítást is használja.