TBL_FIND: Wert in Tabelle suchen (S7-300, S7-400) - STEP 7

Erweiterte Anweisungen (S7-300, S7-400)

ft:publication_title
Erweiterte Anweisungen (S7-300, S7-400)
Product
STEP 7
Version
V20
Publication date
11/2024
Language
de-DE
TBL_FIND: Wert in Tabelle suchen

Beschreibung

Mit der Anweisung können Sie nach Mustern im Speicher suchen. Die Anweisung "TBL_FIND" führt einen Vergleich (Parameter CMD) zwischen dem Quellmuster (Parameter PATRN) und den Einträgen der Quelltabelle (Parameter SRC) aus. Gesucht wird der nächste Eintrag (ab dem Eintrag, der von dem Parameter INDX angegeben wird) in der Tabelle, der den Vergleichskriterien entspricht. Die Nummer des Eintrags wird im Parameter INDX abgelegt. Wird keine Entsprechung gefunden, dann zeigt der Parameter INDX über das Ende der Tabelle hinaus und der Ausgang von der Anweisung "TBL_FIND" wird ausgeschaltet.

  • Wenn CMD = 1 ist, dann sucht die Anweisung "TBL_FIND" nach dem ersten Wert, der dem Wert am Parameter PATRN entspricht.

  • Wenn CMD = 2 ist, dann sucht die Anweisung "TBL_FIND" nach dem ersten Wert, der dem Wert am Parameter PATRN nicht entspricht.

  • Der erste Eintrag in der Tabelle gibt die maximale Länge der Tabelle an.

  • Der zweite Eintrag der Tabelle enthält den ersten Wert in der Tabelle.

    Hinweis

    Sie müssen den ersten Eintrag (Tabellenlänge) in der Tabelle initialisieren.

Parameter

Die folgende Tabelle zeigt die Parameter der Anweisung "TBL_FIND":

Parameter

Deklaration

Datentyp

Speicherbereich

Beschreibung

SRC

Input

*Pointer

E, A, M, D

Zeigt auf die Anfangsadresse der Tabelle.

PATRN

Input

*Pointer

E, A, M, D

Zeigt auf das Muster, das gesucht werden soll.

CMD

Input

BYTE

E, A, M, D, L, P

Gibt den Befehl an:

  • B#16#01 = gleich

  • B#16#02 = ungleich

E_TYPE

Input

BYTE

E, A, M, D, L, P

Gibt den Datentyp der Tabelleneinträge an:

B#16#02 = BYTE

B#16#04= WORD

B#16#05=INT

B#16#06=DWORD

B#16#07=DINT

B#16#08=REAL

RET_VAL

Return

WORD

E, A, M, D, L, P

Gibt den Wert W#16#0000 aus, wenn die Operation fehlerfrei ausgeführt wird.

INDX

InOut

WORD

E, A, M, D, L

Index der Tabelle, der folgende Informationen angibt:

  • Eingang: Nummer des Eintrages, bei dem die Suche begonnen werden soll.

  • Ausgang: Nummer des Eintrages, der dem vorgegebenen Muster entspricht.

* Pointer im Doppelwortformat bei der bereichsübergreifenden, registerindirekten Adressierung

Weitere Informationen zu den gültigen Datentypen finden Sie unter "Übersicht über die gültigen Datentypen".

Parameter RET_VAL

Wenn eine der folgenden Bedingungen auftritt, dann werden die Tabellenwerte nicht verändert. Der Signalzustand von "BIE / ENO" wird auf "0" und der Rücksprungwert entsprechend gesetzt:

RET_VAL

Erläuterung

W#16#0007

Der Wert des Parameters INDX ist höher als der Wert für die Tabellenlänge.

W#16#0008

Es wurde keine Entsprechung gefunden.

W#16#0009

Der Parameter E_TYPE und/oder CMD ist/sind ungültig.

Beispiel (KOP)

Wenn der Signalzustand am Eingang E 0.0 = 1 ist (aktiviert), dann wird die Anweisung "TBL_FIND" ausgeführt. In diesem Beispiel werden die Daten in der Tabelle in Wörtern gespeichert, die an der Adresse beginnen, auf die der Parameter SRC zeigt, weil der Parameter E_TYPE "4" ist. Diese Wörter werden mit dem Muster "5555" verglichen, das in der Adresse gespeichert wird, die von dem Parameter PATRN angegeben wird. Weil CMD = 1 ist, wird der erste Wert in dem Parameter SRC gesucht, der mit dem Muster übereinstimmt. Der Parameter INDX zeigt auf die Adresse, an der die Suche beginnen soll. Nach der Bearbeitung der Operation gibt der Parameter INDX die Nummer des Eintrags in der Tabelle an, in dem eine Entsprechung für das Muster gefunden wurde.

Wenn die Anweisung "TBL_FIND" fehlerfrei ausgeführt wird, dann werden die Signalzustände von ENO und A 0.0 auf "1" gesetzt, und RET_VAL wird auf den Wert W#16#0000 gesetzt.

Die Anweisung "MOVE" dient lediglich dazu, den Wert von "MW2" in jedem Zyklus zurückzusetzen.

Vor der Bearbeitung:

SRC (Tabellenlänge)

DBW0 = W#16#0004

DBW2 = W#16#1111

DBW4 = W#16#3333

DBW6 = W#16#5555

DBW8 = W#16#7777

Der erste Tabelleneintrag gibt die Länge der Suchoperation an. Der Wert 0004 gibt an, dass die nächsten vier Einträge durchsucht werden.

INDX

MW2 = W#16#0000

INDX wird von DW0 (vor der Bearbeitung) nach DW6 (nach der Bearbeitung) übertragen, weil das Muster von DW6 gleich dem Muster von 5555 von PATRN ist.

PATRN

DBW10 = W#16#5555

Nach der Bearbeitung:

INDX

MW2 = W#16#0003