GET_BYTE¶
Einleitung¶
Der Funktionsblock GET_BYTE dient dem Auslesen einer BYTE-Variablen, die über einen InOut-Parameter bereitgestellt wird. Der gelesene Wert wird am Ausgang OUT gepuffert und steht nach der Ausführung zur Verfügung. Der Baustein wird typischerweise eingesetzt, um einen aktuellen BYTE-Wert aus einer externen Quelle (z. B. einem gemeinsamen Datenbereich) abzugreifen, ohne die Quelle selbst zu verändern.
Schnittstellenstruktur¶
Ereignis-Eingänge¶
| Name | Typ | Kommentar | Mit Variablen |
|---|---|---|---|
| REQ | Event | Normaler Ausführungsanstoß | IN |
Ereignis-Ausgänge¶
| Name | Typ | Kommentar | Mit Variablen |
|---|---|---|---|
| CNF | Event | Bestätigung der Ausführung | OUT, IN |
Daten-Eingänge¶
Der Baustein besitzt keine klassischen Dateneingänge, sondern nutzt einen InOut-Parameter, der gleichzeitig als Ein- und Ausgang genutzt werden kann:
| Name | Typ | Initialwert | Kommentar |
|---|---|---|---|
| IN | BYTE | 0 | Quellvariable (lesend über InOut) |
Daten-Ausgänge¶
| Name | Typ | Initialwert | Kommentar |
|---|---|---|---|
| OUT | BYTE | 0 | Gepufferter Ausgabewert |
Adapter¶
Keine Adapter vorhanden.
Funktionsweise¶
Der Baustein wird über ein Ereignis am Eingang REQ aktiviert. Daraufhin wird der aktuelle Wert der am InOut-Parameter IN anliegenden Variable gelesen und in den Ausgang OUT kopiert. Anschließend wird das Ereignis CNF ausgelöst, das die erfolgreiche Ausführung quittiert. Der Algorithmus ist denkbar einfach:
OUT := IN;
Da IN als InOut-Parameter deklariert ist, muss die aufrufende Applikation eine BYTE-Variable bereitstellen, die sowohl gelesen als auch (bei anderen Bausteinen) geschrieben werden kann. GET_BYTE führt jedoch nur eine Leseoperation aus.
Technische Besonderheiten¶
- InOut-Parameter: Der Baustein greift direkt auf eine externe Variable zu, ohne sie über einen separaten Daten-Eingang zu verbinden. Dies ermöglicht eine effiziente, direkte Datenbindung und spart Ressourcen in der Vernetzung.
- Gepufferter Ausgang: Der gelesene Wert wird in
OUTzwischengespeichert und bleibt bis zur nächsten Ausführung erhalten – auch wenn sich die Quellvariable zwischenzeitlich ändert. - Keine Zustandsmaschine: Der Baustein besteht aus einem einzigen Zustand, was die Implementierung schlank und deterministisch macht.
Zustandsübersicht¶
Der Baustein verfügt über genau einen internen Zustand:
| Zustand | Beschreibung | Ausgangsereignis |
|---|---|---|
| REQ | Kein Warten; sofortiger Ablauf der Leseoperation | CNF |
Es gibt keine Wartezustände oder Verzweigungen.
Anwendungsszenarien¶
- Auslesen von Konfigurationswerten: Ein
BYTE-Wert aus einem zentralen Datenblock (z. B. einer globalen Konfiguration) wird in einen lokalen Puffer übernommen. - Synchronisation zwischen Bausteinen: Ein anderer Baustein schreibt einen
BYTEin eine gemeinsame InOut-Variable, undGET_BYTEliest diesen Wert bei Bedarf aus. - Sichere Datenübernahme: Durch den gepufferten Ausgang wird verhindert, dass nachfolgende Logik auf einen sich ändernden Quellwert reagiert – sie arbeitet stets mit dem zum Zeitpunkt der Anfrage gültigen Wert.
Vergleich mit ähnlichen Bausteinen¶
| Baustein | Beschreibung | Unterschied zu GET_BYTE |
|---|---|---|
| GET_VALUE | Liest einen Wert aus einem InOut-Parameter aus (typ‑unspezifisch) | GET_BYTE ist auf den Datentyp BYTE spezialisiert und daher typsicherer. |
| MOVE | Kopiert einen Wert von einem Eingang zu einem Ausgang | MOVE benötigt separate Eingänge und gibt keinen Puffer – GET_BYTE nutzt InOut. |
| READ_BYTE | Liest ein Byte über eine Hardware-Adresse | GET_BYTE arbeitet auf der Variablenebene, nicht auf Hardware-Adressen. |
Fazit¶
GET_BYTE ist ein einfacher, aber nützlicher Baustein, um einen BYTE-Wert aus einer externen Quelle über einen InOut-Parameter auszulesen und gepuffert bereitzustellen. Dank des schlanken Designs (ein Zustand, minimale Schnittstelle) eignet er sich besonders für ressourcenkritische Anwendungen und für die Integration in bestehende Kommunikations‑ oder Speicherkonzepte, bei denen der direkte Zugriff auf eine gemeinsam genutzte Variable erwünscht ist.