FB_HashTableCtrl

FB_HashTableCtrl 1:

Hashtable kann dazu verwendet werden, um ein einzelnes Datenelement in einer größeren Menge von Datenelementen schnell auffinden zu können. Die Datenobjekte müssen mit einem eindeutigen Schlüssel versehen werden. Über diesen Schlüssel können die Datenobjekte dann in der Tabelle eindeutig identifiziert und schnell gefunden werden.

Mit dem Funktionsbaustein FB_HashTableCtrl kann eine einfache Hash-Tabelle im SPS-Projekt realisiert werden. Es wird dabei das Verfahren: Hashing mit Verkettung (Separate-Chaining) angewandt.

Die maximale Anzahl der Datenelemente kann zur Laufzeit nicht verändert werden und muss vorher festgelegt werden. Das Hinzufügen/Entfernen/Suchen der Datenelemente wird durch Aktionsaufrufe gesteuert. Der Funktionsbaustein besitzt folgende Aktionen:

FB_HashTableCtrl 2: Eingänge

VAR_INPUT
    key       : DWORD := 0;
    putValue  : PVOID := 0;
    putPosPtr : POINTER TO T_HashTableEntry := 0;
END_VAR

Name

Typ

Beschreibung

key

DWORD

Schlüssel (vorzeichenlose 32 Bit Zahl oder auch Pointer). Über diesen Schlüssel kann ein Datenelement in der Tabelle schnell identifiziert/gefunden werden.

putValue

PVOID

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

putPosPtr

T_HashTableEntry

Adresse auf das Datenelement (Eingangsparameter)

FB_HashTableCtrl 3: Ein-/Ausgänge

VAR_IN_OUT
    hTable  : T_HHASHTABLE;
END_VAR

Name

Typ

Beschreibung

hTable

T_HHASHTABLE

Hash-Tabellen-Handle. Das Handle muss einmalig vor der Benutzung mit der Funktion: F_CreateHashTableHnd initialisiert werden. Für jede Tabelle muss eine dazugehörende Instanz der Handle-Variablen angelegt und initialisiert werden.

FB_HashTableCtrl 4: Ausgänge

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

Name

Typ

Beschreibung

bOk

BOOL

Liefert TRUE, wenn ein neues Datenelement der Tabelle hinzugefügt/entfernt oder in der Tabelle gefunden werden konnte. FALSE wird geliefert, wenn das gesuchte Datenelement nicht gefunden werden konnte, die Tabelle leer ist oder einen Überlauf hat (keine freien Datenelemente mehr).

getValue

PVOID

Der zum Schlüssel passende Wert/Datenelement (Ausgangsparameter, 32/64 Bit, vorzeichenlose Zahl oder auch Pointer).

getPosPtr

T_HashTableEntry

Die Adresse auf das Datenelement (Ausgangsparameter).

Beispiel:

Siehe: Beispiel: Hash-Tabelle (FB_HashTableCtrl).

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken (Kategoriegruppe)

TwinCAT v3.1.0

PC oder CX (x86, x64, ARM)

Tc2_Utilities (System)