Zum Inhalt

GET_LINT

GET_LINT


Einleitung

Der Funktionsbaustein GET_LINT dient dem Auslesen eines Wertes vom Typ LINT aus einer InOut-Variablen und stellt diesen Wert gepuffert an seinem Ausgang zur Verfügung. Der Baustein ist Teil der Bibliothek logiBUS::utils::conversion::provide und realisiert eine einfache Lese-Puffer-Funktionalität.

Schnittstellenstruktur

Ereignis-Eingänge

Name Typ Kommentar
REQ Event Normaler Ausführungsauftrag

Der Ereigniseingang REQ löst die Ausführung des Bausteins aus. Dabei wird der aktuelle Wert der InOut-Variablen IN gelesen und im Ausgang OUT zwischengespeichert.

Ereignis-Ausgänge

Name Typ Kommentar
CNF Event Bestätigung der Ausführung

Das Ereignis CNF wird nach erfolgreicher Verarbeitung des REQ-Ereignisses gesendet. Es signalisiert, dass der Ausgang OUT den aktuellen Wert der InOut-Variablen IN enthält.

Daten-Eingänge

Name Typ Kommentar
IN LINT Quellvariable (InOut) – Initialwert: 0

IN ist als InOut-Variable deklariert. Sie kann sowohl gelesen als auch beschrieben werden, wird in diesem Baustein jedoch ausschließlich gelesen. Der übergebene Wert wird bei jedem REQ-Ereignis in den Ausgang OUT kopiert.

Daten-Ausgänge

Name Typ Kommentar
OUT LINT Gepufferter Ausgabewert – Initialwert: 0

Der Ausgang OUT hält den zuletzt von der InOut-Variablen IN gelesenen Wert. Er wird bei jedem REQ-Ereignis aktualisiert.

Adapter

Der Baustein besitzt keine Adapter-Schnittstellen.

Funktionsweise

Der GET_LINT-Baustein implementiert eine einfache Pufferfunktion. Er besitzt einen einzigen Eintrittszustand REQ, der durch ein Ereignis am gleichnamigen Eingang aktiviert wird. In diesem Zustand wird der Algorithmus REQ ausgeführt:

OUT := IN;

Anschließend wird das Bestätigungsereignis CNF gesendet. Der Ausgang OUT enthält danach den aktuellen Wert der InOut-Variablen IN. Der Baustein wartet dann auf den nächsten REQ-Impuls.

Technische Besonderheiten

  • InOut-Variable: Der Baustein verwendet einen InOut-Parameter (IN). Dies erlaubt den direkten Zugriff auf eine Variable, die sowohl gelesen als auch beschrieben werden kann. Im Falle von GET_LINT wird der Wert jedoch nur gelesen und nicht verändert.
  • Datentyp LINT: Der Baustein arbeitet ausschließlich mit dem 64-Bit-Ganzzahltyp LINT (Long Integer). Er ist für Umgebungen gedacht, in denen große Ganzzahlwerte verarbeitet werden.
  • Einfachste Zustandsmaschine: Es existiert nur ein Zustand mit einer direkten Aktion und einer Ausgabe. Dadurch ist der Baustein deterministisch und ressourcenschonend.
  • Keine Fehlerbehandlung: Der Baustein enthält keinerlei Plausibilitätsprüfungen oder Timeouts. Er setzt voraus, dass die InOut-Variable gültige Daten liefert.

Zustandsübersicht

Zustand Aktion Ausgabe
REQ Kopieren von IN nach OUT CNF

Der Baustein startet im Zustand REQ und kehrt nach Ausführung der Aktion und Senden von CNF in denselben Zustand zurück (Endlosschleife bei jedem Ereignis).

Anwendungsszenarien

  • Zwischenspeicherung eines LINT-Werts: Wenn ein LINT-Wert aus einer globalen Variablen oder einem anderen Baustein gelesen und für eine bestimmte Zeit konstant gehalten werden soll (z. B. für eine nachfolgende Verarbeitung).
  • Synchronisation: Der Baustein kann verwendet werden, um den aktuellen Wert einer InOut-Variablen in einem bestimmten Takt zu erfassen und an andere Bausteine weiterzugeben.
  • Entkopplung: Durch den Puffer wird der lesende Baustein von der Quelle entkoppelt – Änderungen der Quelle wirken sich erst nach dem nächsten REQ-Impuls aus.
  • Einfache Wertübernahme: In Steuerungssystemen kann GET_LINT genutzt werden, um einen externen Messwert oder einen Parameter von einem anderen Funktionsbaustein abzuholen.

Vergleich mit ähnlichen Bausteinen

  • GET_DINT / GET_BOOL: Analoge Bausteine für andere Datentypen (DINT, BOOL). Die Funktionsweise ist identisch; lediglich der Datentyp unterscheidet sich.
  • MOVE (z. B. MOVE_INT): Ein MOVE-Baustein kopiert ebenfalls einen Wert, verwendet jedoch standardmäßig Eingangs- und Ausgangsvariablen statt InOut. InOut-Variablen erlauben eine direkte Referenz auf die Quelle ohne zusätzlichen Data-Flow.
  • LINT_READER (fiktiv): Ein hypothetischer Baustein, der zusätzliche Funktionen wie Puffer-Timeout oder Lesesperre bietet. GET_LINT ist dagegen minimalistisch und schnell.

Fazit

Der GET_LINT-Funktionsbaustein bietet eine schlanke und zuverlässige Methode, um einen LINT-Wert aus einer InOut-Variable zu lesen und gepuffert bereitzustellen. Dank seiner einfachen Zustandsmaschine und der klaren Schnittstelle eignet er sich hervorragend für Basis-Synchronisationsaufgaben in IEC 61499-basierten Systemen. Durch die Verwendung von InOut-Parametern bleibt die Implementierung flexibel, ohne dass zusätzliche Datenleitungen oder Protokolle erforderlich sind.