> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/german/funktionsblocke/blocks-reference/input-output/communication/modbus-read.md).

# Modbus Read

Dieser Funktionsblock liest Daten von einem Modbus-Server (Coils oder Register) über eine bereitgestellte Modbus-Client-Verbindung. Verwenden Sie die Bildschirmsteuerung, um die Zieladresse, die Anzahl der zu lesenden Werte und den Modbus-Datentyp auszuwählen.

## 📥 Eingänge <a href="#inputs" id="inputs"></a>

`Enable`\
Ein boolesches Gate, das das Lesen zulässt oder verhindert. Wenn `False`, führt der Block kein Lesen durch und gibt keine Daten zurück.

`Modbus Client`\
Geben Sie ein Modbus-Client-Verbindungsobjekt an (in der Regel aus einem `Modbus Connect`-Block). Der Block verwendet diesen Client zur Kommunikation mit dem Server.

## 📤 Ausgänge <a href="#outputs" id="outputs"></a>

`Data`\
Das Leseergebnis als generische Liste. Bei Register-Lesungen ist dies eine Liste numerischer Registerwerte; bei Coil-/Discrete-Lesungen eine Liste von booleschen Werten. Wenn das Lesen fehlschlägt oder deaktiviert ist, ist die Ausgabe leer/None.

## 🕹️ Steuerungen <a href="#controls" id="controls"></a>

`Address`\
Geben Sie die Startadresse (Ganzzahl) am Modbus-Gerät ein, von der gelesen werden soll.

`Quantity`\
Geben Sie an, wie viele aufeinanderfolgende Elemente (Register oder Coils) gelesen werden sollen.

`Data Type`\
Wählen Sie den Modbus-Datentyp aus, der gelesen werden soll: Coil, Discrete Input, Input Register oder Holding Register.

## 🎯 Funktionen <a href="#features" id="features"></a>

* Unterstützt das Lesen sowohl bitbasierter (Coils/Discrete Inputs) als auch wortbasierter (Input/Holding Registers) Datentypen.
* Verwendet eine externe Modbus-Client-Verbindung, die über den Eingangsbereich `Modbus Client` bereitgestellt wird, sodass die Kommunikation von den Block-Einstellungen getrennt bleibt.
* Liefert einfache numerische und boolesche Ergebnisse als Liste, geeignet zum Protokollieren, Plotten oder zur Weiterverarbeitung.
* Eingebaute Fehlerberichte zeigen Kommunikationsfehler an, damit Sie reagieren können (z. B. reconnect, retry, alert).

## ⚙️ Funktionsweise <a href="#running-mechanism" id="running-mechanism"></a>

Wenn der Block aktiv ist, prüft er den Eingang `Enable` und benötigt einen gültigen Client am Eingang `Modbus Client`. Er liest den konfigurierten Adressbereich mithilfe des ausgewählten `Data Type` und gibt die Werte am Ausgang `Data` zurück. Schlägt das Lesen fehl oder ist der Block deaktiviert, werden keine Daten zurückgegeben und es wird eine hilfreiche Fehlermeldung protokolliert.

## 💡 Tipps und Tricks <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* Verwenden Sie `Modbus Connect`, um die erforderliche `Modbus Client`-Verbindung zu erstellen und bereitzustellen.
* Steuern Sie, wann gelesen wird, mit `Logic Input` oder `Rising Edge` (manueller Trigger oder Einzel-Lesevorgang).
* Zum Zurückschreiben von Werten an ein Gerät kombinieren Sie mit dem `Modbus Write`-Block.
* Protokollieren Sie Messwerte zur späteren Überprüfung mit `CSV Export` oder speichern Sie sie mit `Data Write Local` / `Data Write Global`.
* Visualisieren Sie numerische Ausgaben in Echtzeit, indem Sie die Ergebnisse in den `Scope`-Block leiten.
* Verwenden Sie `Debug Input`, um während der Einrichtung und Fehlersuche die zurückgegebenen `Data` zu prüfen.

## 🛠️ Fehlersuche <a href="#troubleshooting" id="troubleshooting"></a>

* Keine Daten zurückgegeben: Stellen Sie sicher, dass ein gültiger Client an `Modbus Client` angeschlossen ist und `Enable` auf `True` steht.
* Falsche Werte oder partielle Lesungen: Überprüfen Sie, ob `Address` und `Quantity` im Adressraum des Geräts liegen und die Gerätegrenzen nicht überschreiten.
* Kommunikationsfehler: Prüfen Sie die Netzwerk-/seriellen Einstellungen über den `Modbus Connect`-Block und stellen Sie sicher, dass keine andere Anwendung den Zugriff blockiert.
* Unerwartetes Datenformat: Vergewissern Sie sich, dass Sie den richtigen `Data Type` (Coils vs. Registers) für die erwarteten Werte ausgewählt haben.
