Beschreibung
Die Anweisung führt die angegebene Operation (Parameter CMD) mit dem Quellelement und dem Eintrag der Tabelle an dem Versatz aus, der von dem Parameter INDX angegeben wird. Die Operation wird nur ausgeführt, solange der Parameter INDX kleiner ist als die Länge der Tabelle, die in dem ersten Wort in der Tabelle gespeichert wird.
-
Der erste Eintrag der Tabelle gibt die maximal zulässige Anzahl der Tabelleneinträge an (Tabellenlänge).
-
Der zweite Eintrag der Tabelle enthält den ersten Wert in der Tabelle.
-
Ist der Parameter E_TYPE vom Datentyp REAL, dann kann es sich bei dem Parameter CMD nur um "Übertragen" handeln.
Hinweis
Beim Erstellen der Tabelle müssen Sie den ersten Eintrag initialisieren.
Parameter
Die folgende Tabelle zeigt die Parameter der Anweisung "WRD_TBL":
|
Parameter |
Deklaration |
Datentyp |
Speicherbereich |
Beschreibung |
|---|---|---|---|---|
|
SRC |
Input |
*Pointer |
E, A, M, D |
Zeigt auf die Quelldaten |
|
TABLE |
Input |
*Pointer |
E, A, M, D |
Zeigt auf den Beginn der Tabelle. |
|
CMD |
Input |
BYTE |
E, A, M, D, L, P |
Zeigt auf die Operation, die ausgeführt werden soll. Folgende Operationen sind gültig: B#16#0E = Übertragen B#16#07 = UND-Verknüpfung B#16#08 = ODER-Verknüpfung B#16#09 = EXKLUSIV ODER-Verknüpfung |
|
E_TYPE |
Input |
BYTE |
E, A, M, D, L, P |
Gibt den Datentyp der Tabelleneinträge an. Folgende Datentypen sind gültig: 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 |
|
Q |
Output |
BOOL |
A, M, D, L |
Gibt den Wert "0" an, wenn die Variable am Parameter INDX die Nummer des letzten Tabelleneintrags enthält. |
|
INDX |
InOut |
WORD |
E, A, M, D, L |
Nummer des Eintrags, mit dem die Operation ausgeführt werden soll. |
|
* 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 die Anweisung "WRD_TBL" nicht ausgeführt. Der Signalzustand von ENO wird auf "0" und der Rücksprungwert entsprechend gesetzt:
|
RET_VAL |
Erläuterung |
|---|---|
|
W#16#0007 |
Der Index ist 0. |
|
W#16#0008 |
Parameter CMD oder Parameter E_TYPE ist ungültig bzw. Parameter CMD und Parameter E_TYPE stimmen nicht überein. |
|
W#16#0009 |
Index liegt außerhalb des Tabellenbereichs. |
Beispiel (KOP)
Wenn der Signalzustand am Eingang E 0.0 = 1 ist (aktiviert), dann wird die Anweisung "WRD_TBL" ausgeführt. Da der Parameter E_TYPE in diesem Beispiel "6" ist, wird das Doppelwort der Daten in der Tabelle an der Adresse gespeichert, auf die der Parameter TABLE zeigt. Das erste Wort der Tabelle zeigt an, dass die Tabelle drei Doppelwörter enthält. Der Wert von INDX zeigt auf den Tabelleneintrag, der bearbeitet werden soll. Da CMD = 8 ist, wird eine ODER-Verknüpfung mit dem Wert ausgeführt, auf den der Parameter INDX zeigt. Weil INDX = 2 ist, wird das zweite Doppelwort (66665544) mit dem Wert, auf den der Parameter SRC (11111111) zeigt, durch ODER verknüpft. Nach der Bearbeitung der Operation wird das Ergebnis der ODER-Verknüpfung (77775555) zurück in die Tabelle geschrieben, und der Wert von INDX wird automatisch um einen Eintrag erhöht. Zeigt der Parameter INDX auf den letzten Eintrag einer Tabelle, dann wird das Bit des Ausgangs "A" nach der Bearbeitung der Operation auf "0" gesetzt. In diesem Beispiel enthält der Wert von INDX nicht den letzten Eintrag in dieser Tabelle, deshalb ist der Ausgang "A" nach der Bearbeitung "1".
Wenn die Anweisung "WRD_TBL" 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.
Vor der Bearbeitung:
|
SRC |
DBD20 = DW#16#11111111 |
|
TABLE (Tabellenlänge) |
DBW0 = W#16#0003 DBD2 = DW#16#99998877 DBD6 = DW#16#66665544 DBD10 = DW#16#33332222 |
|
INDX |
MW1 = W#16#0002 |
Nach der Bearbeitung:
|
TABLE (Tabellenlänge) |
DBW0 = W#16#0003 DBD2 = DW#16#99998877 DBD6 = DW#16#77775555 DBD10 = DW#16#33332222 |
|
INDX |
MW1 = W#16#0003 |