FB_LinkedListCtrl

FB_LinkedListCtrl 1:

Mit dem Funktionsbaustein FB_LinkedListCtrl kann eine verkettete Liste im SPS-Projekt realisiert werden. Es wird dabei eine doppelt verkettete Liste erstellt. In einer verketteten Liste können Werte (genannt Knoten) abgespeichert werden. Durch die Liste kann von hinten nach vorne oder umgekehrt iteriert werden. Die Knoten können schnell hinzugefügt oder gelöscht werden.

Die maximale Anzahl der Knoten kann zur Laufzeit nicht verändert werden und muss vor dem Compile-Vorgang festgelegt werden. Als "Knoten-Pool" wird ein Array von Typ: T_LinkedListEntry verwendet. Das Hinzufügen/Entfernen/Suchen der Knoten wird durch Aktionsaufrufe gesteuert. Der Funktionsbaustein besitzt folgende Aktionen:

VAR_IN_OUT

VAR_IN_OUT
    hList  : T_HLINKEDLIST;
END_VAR

hList: Linked-List-Handle (Typ: T_HLINKEDLIST). Das Handle muss einmalig vor der Benutzung mit der Funktion: F_CreateLinkedListHnd initialisiert werden. Für jede verkettete Liste muss eine dazugehörende Instanz der Handle-Variablen angelegt und initialisiert werden.

VAR_INPUT

VAR_INPUT
    putValue   : PVOID := 0;
    putPosPtr  : POINTER TO T_LinkedListEntry := 0;
END_VAR

putValue: Wert/Datenelement (Eingangsparameter, 32/64 Bit, vorzeichenlose Zahl oder auch Pointer).

putPosPtr: Die Adresse des Knotenelements (Eingangsparameter, Typ: T_LinkedListEntry).

VAR_OUTPUT

VAR_OUTPUT
    bOk       : BOOL := FALSE;
    getValue  : PVOID := 0;
    getPosPtr : POINTER TO T_LinkedListEntry := 0;
END_VAR

bOk: Ergebnis des letzten Aktionsaufrufs. Liefert TRUE wenn ein neues Knotenelement hinzugefügt/entfernt oder in der Liste gefunden werden konnte. FALSE wird geliefert wenn das gesuchte Knotenelement nicht gefunden werden konnte, die Liste leer ist oder einen Überlauf (keine freien Knotenelemente mehr) hat.

getValue: Wert/Datenelement (Ausgangsparameter, 32/64 Bit, vorzeichenlose Zahl oder auch Pointer).

getPosPtr: Die Adresse des Knotenelements (Ausgangsparameter, Typ: T_LinkedListEntry).

Beispiel:

Siehe: Beispiel: Verkettete-Liste (FB_LinkedListCtrl).

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken (Kategoriegruppe)

TwinCAT v3.1.0

PC oder CX (x86, x64, ARM)

Tc2_Utilities (System)