CDT: Korrelierte Datentabellen (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
CDT: Korrelierte Datentabellen

Beschreibung

Die Anweisung vergleicht einen Eingabewert (Parameter IN) mit einer bereits vorhandenen Tabelle mit Eingabewerten (Parameter IN_TBL) und sucht den ersten Wert, der größer oder gleich dem Eingabewert ist. Mithilfe des Index des gefundenen Werts wird der Wert dann zu dem entsprechenden Ausgabewert (Parameter OUT) in die Tabelle der Ausgabewerte (Parameter OUT_TBL) kopiert.

  • Die Werte in der Eingabetabelle müssen in aufsteigender Reihenfolge sortiert sein. Das heißt der kleinste Wert befindet sich im ersten Tabelleneintrag, der größte Wert befindet sich im letzten Tabelleneintrag.

  • Die Größe des Eingabewerts, die Tabellenwerte und die Ausgabewerte werden von dem Parameter E_TYPE festgelegt.

  • Der erste Eintrag in der Tabelle gibt die Anzahl der Tabelleneinträge (Tabellenlänge) an.

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

  • Die Anzahl der Einträge muss in beiden Tabellen identisch und größer als Null sein.

    Hinweis

    Beim Erstellen der Tabellen müssen Sie jeweils den ersten Eintrag initialisieren.

Parameter

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

Parameter

Deklaration

Datentyp

Speicherbereich

Beschreibung

IN_TBL

Input

*Pointer

E, A, M, D

Zeigt auf den Beginn der Eingangstabelle.

OUT_TBL

Input

*Pointer

E, A, M, D

Zeigt auf den Beginn der Ausgangstabelle.

IN

Input

*Pointer

E, A, M, D

Zeigt auf die Eingangstabelle.

OUT

Input

*Pointer

E, A, M, D

Zeigt auf die Ausgangstabelle.

E_TYPE

Input

BYTE

E, A, M, D, L, P

Gibt den Datentyp der Tabelleneinträge an. Die folgenden Datentypen sind gültig:

B#16#05 = INT

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.

* 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, wird CDT nicht ausgeführt. Der Signalzustand von BIE / ENO wird auf "0" und der Rücksprungwert entsprechend gesetzt:

RET_VAL

Erläuterung

W#16#0001

Für einen Parameter von CDT wurde ein ungültiger Speicherbereich angegeben.

W#16#0002

Der Parameter E_TYPE ist ungültig.

W#16#0003

Die Längen der Eingangs- und Ausgangstabellen stimmen nicht überein.

W#16#0004

Die Tabelle hat eine Länge von Null.

W#16#0007

In dem Parameter IN_TBL befindet sich kein Wert, der größer als oder gleich dem Eingabewert ist.

Beispiel (KOP)

Wenn der Signalzustand von Eingang E 0.0 = 1 ist (aktiviert), dann wird die Anweisung "CDT" ausgeführt. In diesem Beispiel enthalten sowohl die Parameter IN_TBL und OUT_TBL jeweils fünf Tabelleneinträge. Dies wird von dem ersten Wort der jeweiligen Tabelle angegeben. Bei dem Datentyp der Tabellenwerte handelt es sich um INTEGER. Diesen gibt der Parameter E_TYPE an. Der Wert von dem Parameter IN ist 22. Der Wert von dem Parameter IN_TBL, der größer als oder gleich "22" ist, ist "64", der den Index "5" hat. Der entsprechende Wert in OUT_TBL ist "25". Deshalb wird der Wert "25" in den Parameter OUT geschrieben.

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

Vor der Bearbeitung:

IN_TBL (Tabellenlänge)

DBW0 = W#16#0005

DBW2 = 2

DBW4 = 4

DBW6 = 8

DBW8 = 16

DBW10 = 64

OUT_TBL (Tabellenlänge)

DBW100 = W#16#0005

DBW102 = 5

DBW104 = 10

DBW106 = 15

DBW108 = 20

DBW110 = 25

IN

DBW200 = 22

OUT

DBW210 = 0

Nach der Bearbeitung:

OUT

DBW210 = 25