Modbus ist ein einfaches Kommunikationsprotokoll, das häufig zur Integration von HVAC-Geräten verwendet wird. Es verwendet eine Master-Slave-Kommunikation, bei der an den gemeinsamen Bus mehrere Geräte angeschlossen sein können, wobei jedes eine eindeutige Slave-ID haben muss und das Master-Gerät stets einzelne Slave-Geräte abfragt, die ihm antworten.

Topologie Master - Slave

In den meisten Fällen wird TapHome in einem Modus verwendet, in dem die Steuereinheit TapHome Core als Modbus-Master fungiert und die angeschlossenen Geräte Modbus-Slaves sind. Dies wird im Abschnitt Hardware → Modbus RTU oder Modbus TCP konfiguriert. Es ist jedoch auch möglich, die Richtung umzukehren, wenn TapHome Core einem anderen übergeordneten System Informationen über seine Geräte bereitstellt. Dies wird im Abschnitt Geräte freigeben → Modbus RTU oder Modbus TCP definiert.

Physische Schichten

Modbus kann über verschiedene physische Schichten kommunizieren:

  • über eine serielle Leitung, typischerweise RS485. Dies wird als Modbus RTU bezeichnet
  • über ein LAN-Netzwerk mithilfe des TCP/IP-Protokolls
  • über ein LAN-Netzwerk mithilfe des UDP-Protokolls – derzeit vom TapHome-System nicht unterstützt

Modbus-Register

Modbus definiert 4 Typen von Registern:

Register Code Zugriff Größe Funktionscodes
Holding Registers H Lesen-Schreiben 16-Bit Lesen: 03, Schreiben mehrerer: 16 (0x10)
- Write Single Holding SH Lesen-Schreiben 16-Bit Schreiben eines: 06
Coil (Discrete Output Coils) C Lesen-Schreiben 1-Bit Lesen: 01, Schreiben mehrerer: 15 (0xF)
- Write Single Coil SC Lesen-Schreiben 1-Bit Schreiben eines: 05
Discrete Input Contacts D Nur Lesen 1-Bit Lesen: 02
Analog Input Registers A Nur Lesen 16-Bit Lesen: 04
Die Registernummer ist 16-Bit, das bedeutet, sie kann Werte von 0 bis 65535 haben. An Registern lassen sich folgende Operationen durchführen:
  • Mehrfachlesen von Registern
  • Schreiben eines einzelnen Registers
  • Schreiben mehrerer Register

Einige Modbus-Implementierungen fügen zusätzliche Befehle hinzu: Report Slave ID, Bitmaskierung, Schreiben und gleichzeitiges Lesen usw., aber diese werden von TapHome nicht unterstützt. {.is-warning}

Informationen darüber, was in welchem Register gespeichert ist und in welchem Format, sind Teil der vom Lieferanten oder Hersteller des Geräts bereitgestellten Dokumentation. Beispiel einer Modbus-Dokumentation des Lieferanten eines Modbus-Geräts: modbus_table.png

Der Typ des Registers C (Coil), Index 58, da es nur zwei Werte hat (offen / geschlossen) und zusätzlich das Schreiben ermöglicht, entspricht in der TapHome-Gerätezusammenfassung dem digitalen Ausgang.

Zweck der Schnellstartanleitung zur Integration eines Modbus-Geräts in TapHome

  1. Schließen Sie das Gerät an den entsprechenden Bus (für Modbus RTU und ASCII) oder an LAN (für Modbus TCP) an. Für TCP-Geräte stellen Sie sicher, dass sie im gleichen Netzwerk wie der TapHome Core Controller sind, z. B. mit Fing (iOS, Android) oder IP Scanner (Windows).
  2. In TapHome → Hardware fügen Sie eine neue Modbus-RTU- oder Modbus-TCP-Schnittstelle hinzu und richten Sie die Kommunikationsparameter gemäß der Dokumentation ein. Für Modbus RTU sind dies Baudrate, Stoppbits, Parität, Datenbits; für Modbus TCP ist dies die IP-Adresse.
  3. In der Modbus-Gerätdokumentation erfahren Sie, welche Slave-ID verwendet wird. Beim Modbus TCP wird dies manchmal Unit ID genannt. Wenn Sie mehrere Geräte an einem Modbus-RTU-Bus nutzen möchten, müssen Sie die Slave-ID jedes Geräts so ändern, dass sie für diese Busverbindung eindeutig ist.
  4. Test der Kommunikation – verwenden Sie das Tool Manual Operations, um gemäß der Dokumentation (Modbus-Tabelle) einige Informationen des Geräts auszulesen. Wenn alles funktioniert, sollten Sie den gelesenen Wert sehen.
  5. Wenn der Kommunikationstest erfolgreich war, erstellen Sie ein Modul, das das Modbus-Gerät repräsentiert.
  6. Wählen Sie aus der Modbus-Dokumentation aus, welche Informationen im TapHome-System präsentiert werden sollen, und erstellen Sie entsprechende Geräte. Beginnen Sie mit dem Lesen von Werten (Read Script) und fahren Sie bei Aktoren mit dem Schreiben fort (Write Script).
  7. Wenn die Grundfunktionen des Geräts funktionieren, fügen Sie Fehler-, Warnungs- oder Informationsdefinitionen in die Skripte ein.
  8. Falls nötig, können Sie auch Service Attributes und Service Actions für TapHome-Geräte und -Module definieren.
  9. Wenn alles abgestimmt ist und korrekt kommuniziert, exportieren Sie das Modul in eine XML-Datei, damit Sie es beim nächsten Mal wiederverwenden können. Sie können auch der Community unter github.com/taphome-official/modbus_templates beitreten.

Implementierung in TapHome

Diese Dokumentation richtet sich an das Szenario, in dem der TapHome Core als Modbus-Master fungiert und die physischen Geräte, die im Abschnitt Hardware → Modbus RTU / TCP hinzugefügt wurden, Modbus-Slaves sind.

Schnittstelle

Hardware → Modbus RTU: Geräte sind an einen bestimmten Bus angeschlossen, grundlegende Parameter der RS485-Übertragung wie Baudrate, Parität, Stoppbits oder ob die Daten ASCII oder binär sind, sind festgelegt. An diesen Bus können nur Geräte mit denselben Kommunikationsparametern angeschlossen werden. Eine korrekte Kommunikation funktioniert nur, wenn A- und B-Leitungen korrekt verbunden sind. Hardware → Modbus TCP: Geräte sind im selben LAN wie der TapHome Core Controller verbunden. Es ist ein TCP-Port definiert, der von allen an diese Schnittstelle angeschlossenen Geräten gemeinsam genutzt wird.

Modul

Die Schnittstelle kann ein oder mehrere Module enthalten, die in den meisten Fällen die Kommunikation mit dem gesamten physischen Gerät abdecken. Aus Konfigurationssicht definiert das Modul die eindeutige Slave-ID des verbundenen Geräts für Modbus RTU und zusätzlich die IP-Adresse für Modbus TCP.

Gerät

Stellt eine spezifische Steuereinheit oder einen Sensor im TapHome-System dar. Muss immer Teil eines übergeordneten Moduls sein.

5 Klimageräte, die an einem gemeinsamen Bus angeschlossen sind, verwenden dieselbe Modbus-RTU-Schnittstelle, die den Busport, die Übertragungsgeschwindigkeit und weitere Kommunikationsparameter festlegt. Die Schnittstelle umfasst 5 Module, von denen jedes ein Klimagerät mit einer eindeutigen Slave-ID darstellt. Jedes Modul hat darunter Geräte definiert, wie Thermostat, Kühl-/Heizmodus, Ventilatorleistung oder Lamellenneigung. Die einzelnen Geräte haben Skripte zum Lesen und/oder Schreiben von Modbus-Werten.

Unterstützte Geräte:

  • Digitalausgang
  • Analogausgang
  • Thermostat
  • Mehrwert-Schalter
  • Temperatursensor
  • Energiezähler
  • Statuskontakt
  • Knopf
  • Variable

Skripte zum Lesen und Schreiben von Modbus-Werten

TapHome-Geräte kommunizieren mit physischen Modbus-Geräten über Skripte.

Weitere Informationen zur Skriptsprache, insbesondere der Abschnitt Bit-Operationen

Für die Kommunikation mit Modbus-Geräten sind auf ihnen Skriptabschnitte definiert:

  • Init-Skript: Wird ausgeführt, wenn sich das Gerät startet (z. B. nach einem Neustart der Steuereinheit)
  • Read Script: Festlegung von Werten in globalen Variablen oder das Lesen von Fehlerzuständen
  • Read Value Script: Skript zum Lesen eines bestimmten Werts (Menge) von einem Modbus-Gerät (z. B. eingestellte Temperatur am Thermostat oder gemessene Temperatur am Thermostat)
  • Write Value Script: schreibt den Wert in das Modbus-Gerät

Funktionen zur Kommunikation mit Modbus-Geräten

MODBUSR (Modbus Read)

Funktion zum Lesen eines Registers aus dem Modbus. Abhängig vom Datentyp kann es 1 Register (für 16-Bit-Datentypen), 2 Register (für 32-Bit-Datentypen) oder mehr Register (für Datentypen String) sein.

MODBUSR(typ_registra, adresa_registra, dátový_typ, [VOLITEĽNÉ: počet_znakov ak data_type=String])

Beispiel: MODBUSR(H, 20, Int16)/100 Liest das Register H mit der Nummer (oder Adresse) 20 und interpretiert es als 16-Bit-Ganzzahl (vorzeichenbehaftet). Teilt am Ende diesen Wert durch 100 (verschiebt das Dezimaltrennzeichen um 2 Stellen nach links).

Die Registeradresse kann auch im hexadezimalen Format angegeben werden, z. B. kann der Wert 20 als 0x14 geschrieben werden.

MODBUSW (Modbus Write)

MODBUSW(typ_registra, adresa_registra, dátový_typ, hodnota_na_zápis)

Beispiel: MODBUSW(H, 20, Int16, Te * 100) Schreibt in das Register H mit der Adresse 20 den Wert der Variable Te multipliziert mit 100 (Verschieben des Dezimalpunkts um 2 nach rechts).

MODBUSWNE (Modbus Write if Not Equal)

Gleich wie MODBUSW, mit dem Unterschied, dass der Wert aus dem Register vor dem Schreiben gelesen wird und nur geschrieben wird, wenn der zu schreibende Wert vom gelesenen abweicht. Der gesamte Vorgang dauert länger, und seine typische Anwendung besteht darin, Eigenschaften eines Modbus-Geräts zu konfigurieren, bei denen die Konfiguration in den EEPROM-Speicher mit begrenzter Anzahl von Schreibvorgängen geschrieben wird.

Die Funktionen MODBUSR, MODBUSW und MODBUSWNE können nur in Modbus-Skripten verwendet werden. Wenn sie in anderen Skripten verwendet werden, gelten sie als Fehler.

Modbus-Datentypen

Der Inhalt der Register ist in der Modbus-Tabelle definiert. Da die Größe eines einzelnen Modbus-Registers 16 Bit beträgt, werden am häufigsten 16-Bit-Werte Int16 oder UInt16 verwendet und Dezimalstellen ergeben sich durch Division durch 10 oder 100. Einige Modbus-Geräte verwenden jedoch auch 16-Bit-Register mit Zahlen mit Gleitkomma (Float), oder sie haben veränderte Byte-Reihenfolgen (Big Endian, Little Endian), speichern eine Zahl in zwei Registern (32-Bit-Varianten). Manchmal ist der einfachste Weg, den richtigen Datentyp zu bestimmen, das Tool direkt in der TapHome-Anwendung zu verwenden (Manuelle Operationen), wo Sie 1 oder mehr Register laden und dynamisch den Datentyp wechseln können.

  • Int16: -32.768 bis 32.767
  • Uint16: 0 bis 65.535
  • Int32: -2.147.483.648 bis 2.147.483.647
  • Uint32: 0 bis 4.294.967.295
  • Float: IEEE 754 Gleitkommazahl einfacher Genauigkeit
  • Bool: 0 = false, 1 = true
  • BigEndianInt16 = Int16
  • LittleEndianInt16
  • BigEndianUint16 = Uint16
  • LittleEndianUint16
  • BigEndianInt32 / BigEndianInt32ByteSwap
  • LittleEndianInt32 / LittleEndianInt32ByteSwap
  • BigEndianUint32 / BigEndianUint32ByteSwap
  • LittleEndianUint32 / LittleEndianUint32ByteSwap
  • BigEndianFloat / BigEndianFloatByteSwap
  • LittleEndianFloat / LittleEndianFloatByteSwap
  • String: Das BCD-Format kann ebenfalls verwendet werden dank der Funktionen TOBCD() und FROMBCD()

Intervall zur Aktualisierung und Abfrage

Jedes Gerät im Modbus-Interface hat das Attribut Poll Interval definiert. Dieses gibt an, wie oft die TapHome-Steuerung neue Werte des Modbus-Geräts abfragen soll. Die Modbus-Kommunikation ist Master-Slave, daher können Informationen aus dem Modbus-Gerät zu TapHome nur dann kommen, wenn TapHome sie anfordert. Je länger das Poll Interval, desto später wird der Wert in TapHome aktualisiert. Ein zu kurzes Poll Interval kann bedeuten, dass TapHome unnötig mit dem Abrufen nicht benötigter Werte belastet wird und möglicherweise nicht genug Zeit hat, alle Geräte im gegebenen Zeitfenster zu bedienen. Beispielsweise kann bei Modbus RTU und niedrigeren Baudraten, z. B. 9600, eine Anfrage/Antwort mehrere Dutzend Millisekunden dauern. Für Thermometer ist in den meisten Fällen ein Intervall von 15000 ms (15 s) ausreichend, für Tasten hingegen das kürzeste, z. B. 50 ms. Einige Modbus-Geräte erwarten, dass der Master regelmäßig den aktuellen Wert in das Register schreibt. Dazu dient das Attribut Periodic Write.

Definition von Fehlerzuständen aus Skripten

In einigen Skripten ist es möglich, einen Fehler / eine Warnung / eine Information auf dem Gerät basierend auf den aus Modbus-Registern gelesenen Informationen zu definieren. Diese Meldungen werden in TapHome genauso angezeigt wie interne Fehlermeldungen von TapHome. Optional ist es möglich, der Fehlermeldung einen numerischen Fehlercode hinzuzufügen, falls dies für den Modbus-Geräte-Service praktisch ist.

Auf dem Gerät kann jeweils nur eine Fehlermeldung ohne Code oder nur eine Fehlermeldung pro Fehlercode definiert werden.

ADDERROR(), ADDWARNING(), ADDINFO() ADDERROR([Optional: custom_code], text)

Beispiel: Im Read Script des Analogausgangs-Geräts lautet der Code:

1
2
3
4
5
6
7
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");

…was auf dem Gerät als Meldungen erscheint: modbus_error.png

Servicemerkmale und Serviceaktionen

Neben dem Wert (oder mehreren Werten, wie z. B. Thermostat) des verbundenen Modbus-Geräts können Module und TapHome-Geräte auch Serviceattribute lesen oder Serviceaktionen durchführen. Diese sind dann nicht für andere Systemnutzer auf dem Desktop zugänglich, sondern dienen lediglich der detaillierteren Information zum Modbus-Gerät, ohne das System mit einer großen Anzahl von Variablen und Aktionen zu belasten.

Serviceattribute werden in den Serviceeinstellungen des Moduls oder Geräts in TapHome angezeigt. Typischerweise dienen sie dazu, Informationen über das Gerät anzuzeigen, wie Modell, Seriennummer, Firmware-Version, Hardwarerevision, Zeit seit dem letzten Neustart usw. Sie sind aus Servicersicht des Modbus-Geräts nützlich, aber es macht keinen Sinn, dafür eigene TapHome-Geräte zu erstellen.

Serviceaktionen werden in den Serviceeinstellungen des Moduls oder Geräts angezeigt, ganz unten als Knöpfe. Nach dem Drücken führen sie eine vordefinierte Modbus-Aktion aus, die die gewünschten Informationen in das Register schreibt. Beispielanwendung: Slave-ID einstellen oder ändern, Filter zurücksetzen, Zähler auf einen gewünschten Wert setzen, Gerät zurücksetzen usw.

Skripte und Hilfsvariablen am Modul

Globale Variablen des Moduls

Variablen, die auf dem Modul definiert sind, stehen in allen Skripten des Moduls zur Verfügung und werden mit allen Geräten, die diesem Modul zugeordnet sind, geteilt.

Init-Skript

Optional. Wird beim Start des Moduls ausgeführt. Falls ausgefüllt und noch nicht gelaufen, werden keine weiteren Skripte zugelassen.

  • 💬 Rückgabewert: ignoriert
  • ⚙️ Zugriff auf Variablen: Globale Variablen des Moduls
  • ⚠️ Fehlerstatus-Unterstützung: Nein

Read-Skript

Wird bei jeder Abfrage des Moduls ausgeführt.

  • 💬 Rückgabewert: ignoriert
  • ⚙️ Zugriff auf Variablen: Globale Variablen des Moduls
  • ⚠️ Fehlerstatus-Unterstützung: Ja

Write-Skript

Ausführung:

  • bei Änderung der Gerätevariable
  • falls das Attribut “Periodic Write” aktiviert ist, wird es automatisch ausgeführt
  • 💬 Rückgabewert: ignoriert
  • ⚙️ Zugriff auf Variablen: Globale Variablen des Moduls, Werte der Geräte, die zu diesem Modul gehören (Achtung, das sind keine globalen Gerätevariablen – das Skript des Moduls hat darauf keinen Zugriff). Dies wird verwendet, wenn Werte mehrerer Geräte des Moduls in einem Register geschrieben werden müssen.
  • ⚠️ Fehlerstatus-Unterstützung: Nein

Servicemerkmale

Jedes Modul kann eine unbegrenzte Anzahl von Serviceattributen haben. Skripte werden immer ausgeführt, wenn ein Benutzer mit Service-Rechten die Serviceneinstellungen des Moduls in der App öffnet. Sie werden oben aufgeführt, direkt nach dem Auslesen des Modbus-Geräts.

  • 💬 Rückgabewert: wird als Wert des jeweiligen Attributs angezeigt
  • ⚙️ Zugriff auf Variablen: Globale Variablen des Moduls
  • ⚠️ Fehlerstatus-Unterstützung: Nein

Serviceaktionen

Jedes Gerät kann eine unbegrenzte Anzahl von Serviceaktionen haben. Skripte werden ausgeführt, wenn der Benutzer mit Service-Rechten die App öffnet und auf dem Bildschirm der Servic-einstellungen des Geräts eine der vordefinierten Schaltflächen mit dem Namen der Serviceaktion drückt. Jede Serviceaktion ist durch ihren Namen, Parameter und ein ausführendes Skript definiert.

  • 💬 Rückgabewert: ignoriert
  • ⚙️ Zugriff auf Variablen: Globale Variablen des Moduls, globale Gerätevariablen, vom Benutzer eingegebene Parameter
  • ⚠️ Fehlerstatus-Unterstützung: Nein

Nützliche Werkzeuge

Vom Template hinzufügen

Erlaubt die Konfiguration der Modbus-Kommunikation mit dem Gerät ohne jegliche Kenntnisse des Modbus-Protokolls oder wie man es in TapHome konfiguriert. Vorgefertigte Vorlagen finden Sie:

  • direkt in der App: Von Vorlage hinzufügen → Wählen Sie das konkrete Gerät → Füllen Sie die Grundinformationen aus und bestätigen Sie. Alle diese Vorlagen werden im Community-Git-Projekt unter https://github.com/taphome/modbus_templates verwaltet, und jeder dort kann neue Modifikationen vorschlagen. Was in die Applikationen kommt, muss direkt vom TapHome-Team genehmigt werden.
  • in Ihrer eigenen XML-Datei: Von Vorlage hinzufügen → Von Datei hinzufügen. Sie können eine eigene XML-Datei erstellen, die die gesamte Vorlage direkt auf dem Modbus-Modul definiert: im Kontextmenü (drei Punkte oben rechts), Aktion Als Vorlage speichern. Wir würden uns freuen, wenn Sie uns helfen, die Anzahl unterstützter Geräte zu erweitern und Ihre XML-Datei zum gemeinsamen Community-Git-Projekt beizusteuern.

Weitere Informationen zur Konfiguration der Modbus-Kommunikation über Vorlagen

Manuelle Operationen

Praktisches Tool für eine schnelle anfängliche Überprüfung der Modbus-Tabelle. Ermöglicht:

  • Laden der folgenden X Register in die Tabelle von einem bestimmten Register und anschließend das dynamische Umstellen der gelesenen Werte in verschiedene Datentypen
  • Schreiben eines Wertes in das angegebene Register

Slave-ID suchen

Gängige Praxis bei der Einrichtung der Kommunikation mit Modbus-Geräten ist, dass die werkseitig voreingestellte Slave-ID von 1 abweicht und es nicht einfach ist, die richtige Nummer herauszufinden. Dafür dient dieses Tool. Es kann den angegebenen Slave-ID-Bereich durchsuchen, indem es versucht, aus dem ausgewählten Register zu lesen – jeweils mit der getesteten Slave-ID.

Informationen zu Registern

Zu finden im unteren Teil des Modbus-Moduls. Für jedes verwendete Register finden sich Informationen zu:

  • Name des TapHome-Geräts, das daraus liest oder in das es schreibt
  • Datum und Uhrzeit der letzten erfolgreichen Abfrage aus dem Register
  • Letzter gelesener Wert aus dem Register
  • Datum und Uhrzeit der letzten erfolgreichen Registrierung im Register
  • Letzter in das Register geschriebener Wert

Erweiterte Einstellungen

Prefetch

TapHome erstellt eine Liste von Registern zum Lesen und Schreiben von Modbus-Geräten in Abhängigkeit vom eingestellten Poll-Intervall. Prefetch ist der Prozess, durch den die Steuereinheit Werte in den Cache vorab lädt, die während der Aktualisierung benötigt werden. Ziel ist es, die Anzahl der Anfragen und Rückwege zu minimieren. Prefetch wird von zwei Einstellungen beeinflusst:

  • Max prefetch register group size (im Modul-Service-Bereich platziert): Gibt die maximale Anzahl von Registern an, die mit einer einzelnen Modbus-Anfrage gelesen oder geschrieben werden können.
  • Prefetch mode (für jedes Gerät einstellbar):
    • No prefetch. Das Vorladen wird für dieses Gerät nicht durchgeführt. Das bedeutet, dass Werte einzeln und genau dann gelesen werden, wenn das Skript ausgeführt wird. Beispiel: Bei der Kommunikation mit einem DALI-Konverter kann der Wert eines bestimmten Lichts nicht direkt gelesen werden, muss aber so bald wie möglich angefragt werden; der Konverter bereitet ihn vor und gibt ihn dann zurück. Jegliches Prefetching ist hier unnötig.
    • Isolated prefetch. Lädt mehrere Register gleichzeitig vor, aber nur diejenigen, die in diesem Gerät definiert sind. Zum Beispiel, wenn ich Register 3 und 4 im Thermostat-Gerät benötige, Register 1, 2, 5, 6 werden in anderen Geräten verwendet, daher wird die Abfrage der Register 3 und 4 separat nur für diese zwei Register ausgeführt. Einige Modbus-Geräte benötigen dies.
    • Normal prefetch. Alle benötigten Register der Geräte, die aktualisiert werden sollen, werden mit minimalen Anforderungen gelesen. Bei einer nicht zusammenhängenden Registerfolge werden auch Register gelesen, die nicht verwendet werden, falls sie in der Vergangenheit erfolgreich gelesen wurden. Beispiel: Es werden Register 99 und 101 benötigt. Wenn Register 100 in der Vergangenheit erfolgreich gelesen wurde und Max prefetch register group size 3 oder mehr beträgt, liest es 3 Register in einer einzigen Anforderung ab Register 99. Wenn Register 100 nirgendwo verwendet wird und nie erfolgreich gelesen wurde, besteht das Risiko, dass das Lesen über ein solches Register eine Modbus-Ausnahme zurückgibt, z. B. “Illegal data address” als Antwort auf die Gesamtanfrage.

Prefetch kann auch direkt aus dem Skript beeinflusst werden: Wenn beim Lesen das Register SC oder SH (anstatt C oder H) verwendet wird, dann wird der Wert registerweise nacheinander während der Skriptausführung gelesen und nicht aus dem Cache gezogen. Ebenso beim Schreiben, wenn SC oder SH verwendet wird (anstatt C oder H), wird der Wert registerweise nacheinander geschrieben und mit einer anderen Modbus-Funktion. Das Modbus-Protokoll unterstützt 4 Schreibfunktionen: Schreiben mehrerer H, mehrerer C, Schreiben eines H- oder eines C-Registers auf einmal. Vorsicht: Nicht alle Geräte unterstützen alle diese Funktionen. Auf diese Weise ist es, falls notwendig, möglich, Lesen und Schreiben zu kombinieren und “eins nach dem anderen” auszuführen.

TCP-Port (Modbus TCP)

In den meisten Fällen ist der Standardwert 502, aber es kann sein, dass einige Geräte auf einem anderen Port lauschen.

Zeitlimit Lesen / Schreiben

Die Zeit, nach der TapHome das Warten auf eine Antwort abbricht und einen Fehler „Timeout“ meldet. Das bedeutet, dass das Gerät in diesem Intervall nicht geantwortet hat.

  • Langsame Modbus-Geräte können längere Zeitlimits benötigen (1+ Sekunden).
  • Hohe Zeitlimits können andere Modbus-Geräte, die auf eine Antwort warten, unnötig verzögern.

Verzögerung zwischen Anfragen

Verzögerung, die TapHome zwischen einzelnen Anfragen an das Modbus-Gerät einfügt.

Modbus-Typ Standard-Verzögerung
Modbus TCP 0ms
Modbus RTU Abhängig von der Kommunikationsgeschwindigkeit (Baudrate), typischerweise mindestens 3,5 Zeichen

📌 Wichtige Informationen zu Geräten:

  • Einige Modbus-TCP-Geräte erfordern zwischen Anforderungen bis zu 5000 ms.
  • Einige Modbus-RTU-Geräte ermöglichen kürzere Verzögerungen und kommunizieren schneller.

ASCII-Kommunikation verwenden

Modbus ASCII ist ein weniger gängiger Standard, bei dem die Kommunikation nicht binär ist, sondern stattdessen ASCII-Zeichen verwendet.

  • Diese Geräte erfordern typischerweise 7 Datenbits.