# Siemens S7 Read

Dieser Funktionsblock liest Werte aus einem Siemens S7 PLC-Datenbaustein (DB). Verwenden Sie ihn, um numerische Werte, Booleans, Strings oder andere SPS-Datentypen abzurufen und in Ihr Szenario zur Überwachung, Protokollierung oder Entscheidungslogik zu bringen.

## 📥 Eingänge

* `Enable` (Boolean) — Wenn FALSE überspringt der Block das Lesen und erzeugt keine Ausgabe. Verwenden Sie dies, um zu steuern, wann Lesevorgänge stattfinden.
* `S7 Client` (Generic) — SPS-Verbindungsobjekt, das von einem Verbindungsblock bereitgestellt wird. Verbinden Sie hier den Client, der von einem PLC connection block erstellt wurde.

## 📤 Ausgänge

* `Data` (Generic) — Der aus der SPS gelesene Wert. Der Datentyp hängt von der Auswahl in den Steuerungen ab (z. B. Zahl, Liste von Booleans, Text usw.).

## 🕹️ Steuerungen

* `DB Number` — Datenbaustein-(DB-)Nummer, aus dem auf der SPS gelesen werden soll.
* `DB Byte Address` — Start-Byte-Offset innerhalb des ausgewählten DB.
* `DB Data Type` — Dropdown zur Auswahl des erwarteten SPS-Datentyps (Beispiele: `Boolean`, `Int`, `Real`, `String`).
* `Connection Type` — Wählen Sie `Sync` oder `Async`. `Sync` verwendet einen gemeinsamen Verbindungsmodus, geeignet wenn mehrere Blöcke dieselben SPS-Bytes verwenden; `Async` gibt dem Block ein eigenständiges Verbindungsverhalten.

## ⚙️ Wie es funktioniert

* Wenn der Block aktiv ist, verwendet er den verbundenen `S7 Client`, um Bytes vom angegebenen `DB Number` und `DB Byte Address` zu lesen.
* Der Block interpretiert die rohen SPS-Bytes entsprechend dem gewählten `DB Data Type` und gibt einen für Python geeigneten Wert über den `Data`-Ausgang zurück. Beispielsweise kann die Auswahl `Boolean` eine Liste von Bitzuständen zurückgeben, während `String` den dekodierten Text liefert.
* Der Eingang `Enable` ermöglicht es, Lesevorgänge zu stoppen, ohne die Konfiguration zu entfernen.
* `Connection Type` beeinflusst das Sharing-Verhalten: Wählen Sie `Sync`, wenn Sie konsistenten, geteilten Zugriff über mehrere Blöcke benötigen; wählen Sie `Async` für isolierten oder unabhängigen Zugriff.

## ✨ Funktionen

* Einfache UI zur Angabe von DB-Nummer, Byte-Address und erwartetem SPS-Datentyp.
* Unterstützt viele SPS-Datentypen (Booleans, vorzeichenbehaftete/vorzeichenlose Integer, Real, Strings, Zeittypen, Word/DWord usw.).
* Konfigurierbarer Verbindungsmodus zur Anpassung an Ihre Umgebung (geteilt vs. unabhängig).
* Fehleranzeige in der UI, wenn Lesevorgänge fehlschlagen oder die angegebenen Parameter außerhalb des gültigen Bereichs liegen.

## 📝 Verwendung

1. Stellen Sie eine gültige SPS-Verbindung bereit und verbinden Sie diese mit dem `S7 Client`-Eingang (z. B. aus einem PLC connection block).
2. Aktivieren Sie den Block, indem Sie `Enable` TRUE geben oder den Block aktiviert lassen.
3. Stellen Sie `DB Number` und `DB Byte Address` ein.
4. Wählen Sie den passenden `DB Data Type` für den gewünschten Wert.
5. Die gelesenen Werte erscheinen auf dem Ausgang `Data`; verbinden Sie nachfolgende Blöcke, um sie weiterzuverarbeiten oder zu protokollieren.

## 💡 Tipps und Tricks

* Lesen bedarfsgesteuert auslösen: Kombinieren Sie mit `Logic Input` oder einem Einmal-Trigger wie `Rising Edge`, um nur bei Bedarf zu lesen (reduziert Buslast).
* Werte protokollieren und speichern: Senden Sie den `Data`-Ausgang an `CSV Export` oder `SQL-DB Operations`, um historische Protokolle aufzubauen.
* Messwerte veröffentlichen: Verbinden Sie `Data` mit `MQTT Publish`, um SPS-Werte an Cloud/ Broker zu streamen.
* Trends visualisieren: Geben Sie numerische Ausgänge an `Scope`, um Live-Werte über die Zeit zu überwachen.
* Kürzlich gelesene Werte verfügbar halten: Verwenden Sie `Data Memory`, um den zuletzt gelesenen Wert zu speichern und Aktualisierungen nur bei Bedarf freizugeben.
* Fehlende Werte behandeln: Nutzen Sie `Is None` und `Replace None`, um sichere Fallback-Verhalten zu erstellen, falls ein Lesevorgang fehlschlägt.
* JSON-Payloads erstellen: Speisen Sie Werte in `Data to JSON`, bevor Sie sie veröffentlichen oder speichern, um die nachgelagerte Verarbeitung zu vereinfachen.
* `Connection Type` sinnvoll wählen: `Sync` ist praktisch, wenn mehrere Blöcke dieselben Bytes lesen/schreiben müssen; wählen Sie `Async` für isolierten Zugriff oder unabhängige Wiederholversuche.

(Hinweis) Wenn Sie eine UI benötigen, die aktuelle Werte für Bediener anzeigt, kombinieren Sie mit Anzeige-/Output-Blöcken wie `Show Image` (für bildartige Daten) oder `Led Output` und einfachen Text-Widgets für numerische Anzeigen.

## 🛠️ Fehlersuche

* Keine Ausgabe sichtbar: Prüfen Sie, ob `Enable` TRUE ist und ein gültiger `S7 Client` verbunden ist.
* Verbindungsfehler oder Timeouts: Überprüfen Sie die SPS-Netzwerkeinstellungen, kontrollieren Sie den Verbindungsblock, der den `S7 Client` liefert, und versuchen Sie ggf. einen Wechsel des `Connection Type`.
* Unerwartetes Datenformat: Stellen Sie sicher, dass `DB Number`, `DB Byte Address` und `DB Data Type` dem SPS-Programm-Layout entsprechen. Bei Strings prüfen Sie Länge und Kodierung im DB-Layout.
* Hohe Buslast: Reduzieren Sie die Lesehäufigkeit, verwenden Sie getriggerte Lesevorgänge (`Rising Edge`) oder teilen Sie die Verbindung mit `Sync`-Modus, wo angebracht.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.augelab.com/german/function-blocks/input-output/communication/siemens-s7-read.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
