HashTable
Zurück Nach oben Vorwärts

Kurzbeschreibung Parameter Funktionsweise Ein/Ausgänge Limitierungen Querverweise Beispiele

Kurzbeschreibung
Das Modul speichert Daten sortiert nach einem Index in einer Tabelle. Eine sehr schnelle Suchfunktion ermöglicht das Auffinden von Einträgen.
Parameter
Parameter: Parameterquelle intern, extern oder Datenbank.
Index
Signaltyp: Auswahl zwischen den Datentypen SWORD, SWORD[1], DOUBLE, DOUBLE[1] und UBYTE[].
Bezeichner: Zusatzinformation für den Signaltyp, z.B. TIME_DOMAIN
Daten
Signaltyp: Auswahl zwischen den Datentypen SWORD, SWORD[1], DOUBLE, DOUBLE[1] und UBYTE[].
Bezeichner: Zusatzinformation für den Signaltyp, z.B. TIME_DOMAIN
Bei Vergleich Daten übernehmen: Die Daten am Compare-Eingang werden nach Verarbeitung in die Tabelle mit aufgenommen/aktualisiert.
Funktionsweise
Das Modul stellt eine sehr schnelle Möglichkeit dar, Daten in einer Tabelle zu speichern und wiederzufinden. Die Daten können mit oder ohne einen Index gespeichert werden. Ist ein Index vorhanden, wird nach diesem sortiert, ansonsten nach dem Datum. Die Suche nach dem sortierten Eintrag erfolgt sehr schnell ( o= ld(n) ), nach dem unsortierten Eintrag sequentiell.
Ob ein Index verwendet wird, wird über die Verdrahtung festgelegt. An jedem verdrahteten Eingang müssen auch Daten anliegen. Folgende Verdrahtungsmöglichkeiten stehen zur Verfügung:

UpdateIndex

UpdateData

CompareIndex

CompareData

Sortierung

Found

Different

X

Data

0/1

0

X

X

Index

0/1

0/1

X

X

Data

0/1

0

X

X

X

Index, sequentielle Suche

0/1

0

X

X

X

Index

0/1

0

X

X

X

X

Index

0/1

0/1

Die ersten beiden Möglichkeiten sind nur dann sinnvoll, wenn "Bei Vergleich Daten übernehmen" aktiviert ist, da sonst keine Einträge in die Tabelle eingefügt werden können.
Damit eine schnelle Suche möglich ist, müssen die entsprechenden Felder (Index oder Data) eindeutig sein, d.h. doppelte Einträge können nicht vorkommen. Wird ein Index am Update-Eingang ein zweites Mal geschickt, wird er nicht doppelt in die Tabelle aufgenommen, sondern das Data-Feld wird mit dem neuen Eintrag aktualisiert.
Um die Tabelle zu füllen, werden an den Update-Eingängen Daten geschickt (bzw. wenn "Bei Vergleich Daten übernehmen" aktiviert ist, können die Daten auch über die Compare-Eingänge kommen). Um die Tabelle zu leeren, ist am Reset-Eingang eine "1" zu schicken.
Wenn ein Eintrag in einer Tabelle gesucht/verglichen/gelesen werden soll, so sind an den Compare-Eingängen Daten zu schicken. Der entsprechende Datensatz wird an den Ausgängen Index und Data ausgegeben. Am Found-Ausgang wird ein Signal ausgegeben, ob er gefunden wurde, und (falls er gefunden wurde) am Different-Ausgang, ob er unterschiedlich ist (siehe obige Tabelle). Im 4. Fall (sequentielle Suche) können mehrere Einträge auf das Suchkriterium passen, hier wird dann der erste Eintrag genommen.

Ein-/Ausgänge
Eingänge  
EXT, DB SWORD{update_compare} Parametrierung des Moduls über externe Quellen wie ParamConv oder DBLoad
UpdateIndex je nach eingestelltem Index-Datentyp
Default:
TYPEINFO{TypeInfo}
SWORD[1]{SCALAR}
Indexeingang für Datenübernahme
UpdateData je nach eingestelltem Daten-Datentyp
Default:
TYPEINFO{TypeInfo}
UBYTE[]{Text}
Dateneingang für Datenübernahme
CompareIndex je nach eingestelltem Index-Datentyp
Default:
TYPEINFO{TypeInfo}
SWORD[1]{SCALAR}
Indexeingang für Datenvergleich/Suche
CompareData je nach eingestelltem Daten-Datentyp
Default:
TYPEINFO{TypeInfo}
UBYTE[]{Text}
Dateneingang für Datenvergleich/Suche
Reset TYPEINFO{TypeInfo}
SWORD[1]{BIN}
Reset-Eingang zum löschen der Tabelle
Ausgänge
Index je nach eingestelltem Index-Datentyp
Default:
TYPEINFO{TypeInfo}
SWORD[1]{SCALAR}
Indexausgang für gefundene Daten
Data je nach eingestelltem Daten-Datentyp
Default:
TYPEINFO{TypeInfo}
UBYTE[]{Text}
Datenausgang für gefundene Daten
Found TYPEINFO{TypeInfo}
SWORD[1]{BIN}
Binärausgang für Gefunden
Different TYPEINFO{TypeInfo}
SWORD[1]{BIN}
Binärausgang für Unterschiedlich
Limitierungen
Im Augenblick wird die Tabelle nicht gespeichert, d.h. sie muß nach jedem Start des Signalgraphen neu aufgebaut werden.
Querverweise
Buffer, ParamBuf
Beispiele
-