GET_DWORD¶
Einleitung¶
Der Funktionsblock GET_DWORD dient dazu, den aktuellen Wert einer als InOut-Parameter bereitgestellten Variable vom Typ DWORD auszulesen und diesen als gepufferten Ausgangswert bereitzustellen. Der Lesevorgang wird über ein Ereignis gesteuert.
Schnittstellenstruktur¶
Ereignis-Eingänge¶
| Ereignis | Datentyp | Kommentar |
|---|---|---|
REQ |
Event |
Anforderung zum Auslesen der InOut-Variable und Bereitstellen des Ausgangswerts |
Ereignis-Ausgänge¶
| Ereignis | Datentyp | Kommentar |
|---|---|---|
CNF |
Event |
Bestätigung, dass der Lesevorgang abgeschlossen und die Ausgabe aktualisiert wurde |
Daten-Eingänge¶
| Name | Datentyp | Kommentar |
|---|---|---|
IN |
DWORD |
Quellvariable (InOut). Der aktuelle Wert dieser Variable wird bei REQ gelesen. Initialwert: 0 |
Daten-Ausgänge¶
| Name | Datentyp | Kommentar |
|---|---|---|
OUT |
DWORD |
Gepufferter Ausgangswert. Enthält den bei der letzten Ausführung gelesenen Wert. Initialwert: 0 |
Adapter¶
Keine Adapter vorhanden.
Funktionsweise¶
Bei einem Ereignis am Eingang REQ wird der Algorithmus REQ ausgeführt. Dieser weist den aktuellen Wert der InOut-Variable IN der Ausgangsvariable OUT zu. Anschließend wird das Ereignis CNF gesendet.
Der FB puffert den gelesenen Wert, d.h. OUT behält seinen Wert, bis ein erneutes REQ ihn aktualisiert. Die InOut-Variable IN wird direkt an eine übergeordnete Variable gebunden, sodass jeder Lesevorgriff den tatsächlich aktuellen Wert dieser Variable liefert.
Technische Besonderheiten¶
- InOut-Parameter:
INist als InOut-Variable deklariert. Dies bedeutet, dass sie als Referenz auf eine externe Variable dient. Der FB liest den Wert dieser referenzierten Variable, modifiziert sie jedoch nicht (keine Rückwirkung). - Initialwerte: Sowohl
INals auchOUTsind mit 0 initialisiert. Der Initialwert vonINwird nur dann wirksam, wenn die referenzierte Variable nicht explizit gesetzt ist oder in einer Umgebung ohne externen Wert verwendet wird. - Keine Zustandsautomaten-Komplexität: Der FB ist als einfacher SimpleFB mit nur einem Zustand implementiert. Es gibt keine internen Zustandsübergänge außer dem Ausführen der Aktion.
Zustandsübersicht¶
Der Funktionsblock besitzt einen einzigen Zustand REQ:
| Zustand | Beschreibung |
|---|---|
REQ |
Wartet auf das Ereignis REQ. Bei Eintritt wird die Aktion REQ (OUT := IN) ausgeführt und danach das Ereignis CNF gesendet. Nach CNF verbleibt der FB im selben Zustand. |
Anwendungsszenarien¶
- Puffern eines Sensorsignals: Ein DWORD-Sensorwert (z.B. Zählerstand) soll zu bestimmten Zeitpunkten abgetastet und für die weitere Verarbeitung zwischengespeichert werden.
- Dekomposition von DWORD-Daten: In Kombination mit anderen Bausteinen wie
EXTRACT_BYTEoderSPLIT_DWORDkann der gelesene Wert in einzelne Bytes oder Bits zerlegt werden. - Prozessabbild aktualisieren: Der Baustein eignet sich, um den aktuellen Wert einer externen globalen Variable (z.B. aus einem industriellen Feldbus) kontrolliert in einen lokalen Puffer zu übernehmen.
Vergleich mit ähnlichen Bausteinen¶
- GET_DWORD mit einfachem Input: Ein hypothetischer Baustein mit einem normalen Daten-Eingang (
VarInput) würde den Wert nicht als Referenz übergeben, sondern würde bei jedem Ereignis den aktuellen Eingangswert verwenden.GET_DWORDmit InOut bietet dagegen eine feste Bindung an eine bestimmte Variable, was in Szenarien mit mehreren Zugriffen auf dieselbe Variable konsistenter ist. - SET_DWORD: Der symmetrische Baustein
SET_DWORDwürde den Wert einer InOut-Variable setzen, währendGET_DWORDsie nur liest. Beide verwenden das InOut-Konzept, aber mit entgegengesetzter Wirkrichtung.
Fazit¶
GET_DWORD ist ein einfacher, aber nützlicher Baustein zum kontrollierten Auslesen eines DWORD-Werts aus einer extern referenzierten Variable. Seine Stärke liegt in der Pufferung des Werts und der Trennung zwischen der Quelle (InOut) und dem Ausgang (OUT). Dank des einfachen Zustandsautomaten und des standardisierten REQ/CNF-Schnittstellenmusters lässt er sich leicht in bestehende 4diac-Applikationen integrieren.