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 |