> 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/siemens-s7-read.md).

# Siemens S7 Read

Dieser Funktionsblock liest Daten aus einer Siemens S7 PLC-Datenbank (DB) und gibt den Wert zur weiteren Verwendung in Ihrem Szenario aus. Er unterstützt gängige PLC-Datentypen und bietet eine einfache Oberfläche, um die DB-Nummer, Byte-Adresse und den Datentyp zu definieren. Verwenden Sie den Eingangsanschluss `Enable`, um Lesevorgänge auszulösen, und stellen Sie einen verbundenen `S7 Client` von einem Verbindungsblock bereit.

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

`Enable` — Eingangsbuchse zum Ein- oder Ausschalten des Lesens. Liefern Sie ein boolesches Signal (z. B. von einem `Logic Input`-Block), um zu steuern, wann gelesen wird.

`S7 Client` — Eingangsbuchse, die ein Client-/Verbindungsobjekt akzeptiert (typischerweise bereitgestellt durch einen `Siemens S7 Connect`-Block). Damit weiß der Block, mit welchem PLC/Server er kommunizieren soll.

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

`Data` — Ausgangsbuchse, die den vom PLC gelesenen Wert liefert. Der Typ des Wertes richtet sich nach dem gewählten Datentyp (Zahl, String, Bool-Liste usw.).

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

`DB Number` — Geben Sie die DB-(Data Block)-Nummer an, aus der gelesen werden soll.

`DB Byte Address` — Geben Sie die Byte-Verschiebung innerhalb des DB an, an der der gewünschte Wert beginnt.

`DB Data Type` — Dropdown zur Auswahl des zu lesenden Datentyps (Beispiele: Boolean, Int, DInt, Real, String, Word, DWord, Time, ...).

`Connection Type` — Dropdown zur Wahl des Verbindungsmodus (z. B. Sync oder Async). Verwenden Sie dies, um zu steuern, wie der Block die PLC-Verbindung mit anderen Blöcken teilt/nutzt.

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

* Wenn der Eingang `Enable` aktiv ist, liest der Block den konfigurierten Wert bei `DB Number` und `DB Byte Address` unter Verwendung des ausgewählten `DB Data Type` und gibt ihn sofort am Ausgang `Data` aus.
* Der Block erwartet am Eingang einen verbundenen `S7 Client`. Wenn kein Client verbunden ist, meldet der Block einen Verbindungsfehler und liefert keine Daten.
* Die Einstellung `Connection Type` steuert, ob der Block eine gemeinsame (synchronisierte) Verbindung oder eine dedizierte/asynchrone Verbindung zum PLC verwendet. Wählen Sie den Modus, der zu Ihrer Umgebung passt (siehe Tipps).

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

* Unterstützt viele gängige PLC-Datentypen: Boolean-Arrays, Integer (SInt/Int/DInt), unsigned Typen, Fließkommawerte (Real/LReal), Strings, Word/DWord und Zeittypen.
* Einfache UI-Steuerung für DB-Nummer, Byte-Adresse und Auswahl des Datentyps.
* Auswahl des Verbindungsmodus, um Szenarien abzudecken, in denen mehrere Blöcke auf dasselbe PLC zugreifen.
* Gibt Daten in einem formatfreundlichen Format zurück, das sofort von anderen Blöcken weiterverwendet werden kann.

## 📝 Nutzungshinweise <a href="#usage" id="usage"></a>

1. Fügen Sie einen `Siemens S7 Connect`-Block hinzu und konfigurieren Sie dort PLC-Adresse und Verbindungsparameter.
2. Verbinden Sie den Ausgang des `Siemens S7 Connect`-Blocks mit dem Eingang `S7 Client` dieses Blocks.
3. Stellen Sie die Zielwerte für `DB Number` und `DB Byte Address` über die Steuerungen ein.
4. Wählen Sie den passenden `DB Data Type`, der zur PLC-Variable passt, die Sie lesen möchten.
5. Verwenden Sie einen `Logic Input` oder ein anderes boolesches Signal am Eingang `Enable`, um zu steuern, wann gelesen wird.
6. Verwenden Sie den Ausgang `Data` zur Visualisierung, Protokollierung oder für Entscheidungsblöcke.

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

* Kombinieren Sie mit `Siemens S7 Connect`, um die PLC-Verbindung zentral zu verwalten — dieser Block liefert das Client-Objekt, das hier am Eingang `S7 Client` erwartet wird.
* Verwenden Sie `Logic Input`, um periodische Lesevorgänge ein-/auszuschalten oder abfragebasiertes Lesen zu implementieren.
* Zur Visualisierung numerischer Trends können Sie den numerischen Ausgang `Data` in einen `Scope`-Block zur Live-Anzeige speisen.
* Um Messwerte zu speichern, leiten Sie `Data` in `Data to JSON` und anschliessend in `CSV Export` weiter.
* Senden Sie Telemetrie downstream, z. B. durch Verbindung von `Data` mit `MQTT Publish` für Cloud-Monitoring oder mit `Send Mail` (als strukturierte Nachricht) für Benachrichtigungen.
* Teilen Sie gelesene Werte szenenweit mit `Data Write Global` / `Data Read Global` oder lokalen Speicherblöcken, damit andere Teile Ihres Systems reagieren können, ohne erneut vom PLC zu lesen.
* Zur Fehlersuche verwenden Sie `Debug Input`, um den ausgegebenen Wert zu protokollieren und Adressen sowie Datentypen zu überprüfen.
* Wenn mehrere Blöcke denselben DB-Bereich lesen/schreiben, versuchen Sie, den `Connection Type` auf `Sync` umzustellen, um Konkurrenzprobleme zu vermeiden.
* Beim Lesen von Textfeldern achten Sie auf String-Länge und Codierung im PLC. Überprüfen Sie die erwartete Länge im PLC-DB, um abgeschnittene Ergebnisse zu vermeiden.

(hinweis: Nützliche Blöcke zur Kombination: `Siemens S7 Connect`, `Logic Input`, `Number Input`, `Data to JSON`, `CSV Export`, `MQTT Publish`, `Scope`, `Debug Input`, `Data Write Global`)

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

* Keine Daten oder Verbindungsfehler: Prüfen Sie, ob das PLC erreichbar ist und ob der Block `Siemens S7 Connect` eine erfolgreiche Verbindung anzeigt. Überprüfen Sie Netzwerkadressen, Firewalls und den PLC-Status.
* Falscher Wert zurückgegeben: Stellen Sie sicher, dass `DB Number`, `DB Byte Address` und `DB Data Type` mit dem Variablenlayout im PLC-DB übereinstimmen. Off-by-one-Byte-Verschiebungen oder falsche Datentypen führen zu ungültigen Ergebnissen.
* Teilweise oder abgeschnittener String: Achten Sie darauf, dass die String-Länge im PLC den Erwartungen entspricht. Wenn ein String abgeschnitten erscheint, prüfen Sie die konfigurierte Länge auf der PLC-Seite.
* Intermittierende Lesevorgänge oder Warnung über busy server: Wenn das PLC viele Anfragen bedient, versuchen Sie, den `Connection Type` auf `Sync` zu stellen oder die Lesehäufigkeit zu verringern.
* Unerwartetes boolesches Ergebnis: Manche Boolean-Lesevorgänge liefern Bit-Gruppen — behandeln Sie diese gegebenenfalls als Sammlungen von Boolean-Werten.

Wenn Probleme weiterhin bestehen, fügen Sie einen `Debug Input`-Block hinzu, um die rohen zurückgegebenen Werte zu sehen, und leiten Sie diese zur Protokollierung oder Analyse in Exportblöcke weiter.
