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:

VAR_IN_OUT

VAR_IN_OUT
    hTable  : T_HHASHTABLE;
END_VAR

hTable: Hash-Tabellen-Handle (Typ: T_HHASHTABLE). 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.

VAR_INPUT

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

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

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

putPosPtr: Adresse auf das Datenelement (Eingangsparameter, Typ: T_HashTableEntry)

VAR_OUTPUT

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

bOk: 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: Der zum Schlüssel passende Wert/Datenelement (Ausgangsparameter, 32/64 Bit, vorzeichenlose Zahl oder auch Pointer).

getPosPtr: Die Adresse auf das Datenelement (Ausgangsparameter, Typ: T_HashTableEntry).

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)