Beschreibung
Die Anweisung überträgt Daten, die sich zwischen beliebigen Adressen und einer Tabelle befinden. Die Übertragungsrichtung wird von dem Parameter DIR angegeben. Jede Operation der Anweisung "PACK" bearbeitet maximal fünf Bausteine mit Daten (P_DATA1 bis P_DATA5). Wenn der Parameter DIR den Wert "an" enthält, dann überträgt die Anweisung "PACK" Daten aus den Adressen an die angegebene Tabelle. Wenn der Parameter DIR den Wert "aus" enthält, dann werden die Daten aus der Tabelle an die angegebenen Adressen verteilt.
Folgende Richtlinien gelten beim Übertragen von Daten "an" eine Tabelle:
-
Einzelne Bits (BOOL) werden in das nächste verfügbare Bit in der Tabelle übertragen.
-
Datentypen mit 8 Bit werden in das nächste verfügbare Byte in der Tabelle übertragen. Wenn ein Byte in die Tabelle geschrieben wird, dann werden die nicht verwendeten Bits von dem vorherigen Byte mit Nullen belegt.
-
Datentypen mit 16 und 32 Bit werden in das nächste verfügbare Wort in der Tabelle übertragen. Wenn ein Wort in die Tabelle geschrieben wird, dann werden die nicht verwendeten Bits in dem vorherigen Wort mit Nullen belegt.
Folgende Richtlinien gelten beim Übertragen von Daten "aus" einer Tabelle:
-
Es dürfen keine Abschnitte in einer Tabelle ausgelassen werden.
-
Alle angegebenen Daten vom Datentyp BOOL werden aus der Tabelle übertragen.
-
Datentypen mit 8 Bit werden aus dem ersten verfügbaren Byte in der Tabelle übertragen. Deshalb sind nicht verwendete Bits aus dem vorherigen Byte in der Tabelle nicht in dem Byte enthalten, das aus der Tabelle übertragen wird.
-
Datentypen mit 16 und 32 Bit werden aus dem ersten verfügbaren Wort in der Tabelle übertragen. Deshalb sind nicht verwendete Bits aus dem vorherigen Wort in der Tabelle nicht in dem Wort enthalten, das aus der Tabelle übertragen wird.
Folgende Datentypen sind für den Pointer ANY gültig und werden von "PACK" unterstützt: BOOL, WORD, INT, BYTE, DINT, REAL, CHAR, DWORD.
Parameter
Die folgende Tabelle zeigt die Parameter der Anweisung "PACK":
|
Parameter |
Deklaration |
Datentyp |
Speicherbereich |
Beschreibung |
|---|---|---|---|---|
|
TABLE |
Input |
*Pointer |
E, A, M, D |
Zeigt auf den Beginn der Tabelle. |
|
P_DATA1 |
Input |
ANY |
E, A, M, D |
Zeigt auf den Beginn des Bausteins, dessen Daten übertragen werden sollen. |
|
P_DATA2 |
Input |
ANY |
E, A, M, D |
Zeigt auf den Beginn des Bausteins, dessen Daten übertragen werden sollen. |
|
P_DATA3 |
Input |
ANY |
E, A, M, D |
Zeigt auf den Beginn des Bausteins, dessen Daten übertragen werden sollen. |
|
P_DATA4 |
Input |
ANY |
E, A, M, D |
Zeigt auf den Beginn des Bausteins, dessen Daten übertragen werden sollen. |
|
P_DATA5 |
Input |
ANY |
E, A, M, D |
Zeigt auf den Beginn des Bausteins, dessen Daten übertragen werden sollen. |
|
ERR_CODE |
Output |
WORD |
E, A, M, D, L, P |
Gibt den Wert W#16#0000 aus, wenn die Operation fehlerfrei ausgeführt wird. |
|
DIR |
Static |
BOOL |
E, A, M, D, L |
Richtung der Übertragung. Folgende Signalzustände sind möglich: 0=an, 1=aus. |
|
* 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 Fehlerbedingungen auftritt, dann wird die Anweisung "PACK" nicht ausgeführt. Der Signalzustand von BIE / ENO wird auf "0" und ERR_CODE entsprechend gesetzt:
|
ERR_CODE |
Erläuterung |
|---|---|
|
W#16#0001 |
Für einen Parameter von der Anweisung "PACK" wurde ein ungültiger Speicherbereich angegeben. |
|
W#16#0002 |
Die Anweisung "E_TYPE" ist ungültig. |
Beispiel (KOP)
Wenn der Signalzustand von Eingang E 0.0 = 1 ist (aktiviert), dann wird "PACK" ausgeführt. In diesem Beispiel werden vier Bausteine mit Daten "an" die Tabelle übertragen.
Wenn "PACK" fehlerfrei ausgeführt wird, dann werden die Signalzustände von ENO und A 0.0 auf "1" und ERR_CODE auf "W#16#0000" gesetzt.
|
Hinweis Statische Parameter können Sie mithilfe des Datenbaustein-Editors initialisieren. |
Vor der Bearbeitung:
|
TABLE |
DBB0 = B#16#00 DBB1 = B#16#00 DBB2 = B#16#00 DBB3 = B#16#00 DBB4 = B#16#00 DBB5 = B#16#00 |
|
P_DATA1 |
M 200.0 = TRUE M 200.1 = TRUE |
|
P_DATA2 |
MB210 = B#16#FF |
|
P_DATA3 |
M 300.0 = TRUE M 300.1 = TRUE |
|
P_DATA4 |
MW330 = W#16#FFFF |
|
Instanz-DB PACK_DB |
|
|
DIR |
DBX58.0 = FALSE |
Nach der Bearbeitung:
|
TABLE |
DBB0 = B#16#03 DBB1 = B#16#FF DBB2 = B#16#03 DBB3 = B#16#00 DBB4 = B#16#FF DBB5 = B#16#FF |