Beispiel
Code
AUF
LAR1
AUF
LAR2
L
M001:
L
T
+AR1
+AR2
TAK;
LOOP
12.18.2
ANY und POINTER
In den folgenden Programmbeispielen sollen Programmiermechanismen dargestellt werden.
Hierbei soll der Zugriff auf Ein-/Aus- und Durchgangsvariablen (VAR_INPUT,
VAR_OUTPUT, VAR_IN_OUT) vom Datentyp POINTER bzw. ANY innerhalb eines FC bzw.
FB aufgezeigt werden. Die Zugriffe sind so dargestellt, das eine teilsymbolische
Programmierform verwendet werden kann.
12.18.2.1
Verwendung von POINTER und ANY im FC
Funktion
Der FC 99 hat Eingangsparameter, die als POINTER bzw. ANY definiert sind.
In dem Beispiel wird ein Rumpfprogramm gezeigt, um auf die Teilkomponenten des
POINTER bzw. ANY zuzugreifen. Hierbei wird der über den POINTER, ANY parametrierte
DB aufgeschlagen und der Adressoffset als bereichsübergreifender Zeiger im Adressregister
AR1 hinterlegt. Somit kann auf Datenelemente der Variablen (in der Regel Strukturen,
Arrays) zugegriffen werden, die über den POINTER, ANY adressiert sind.
Dieser Zugriff ist im Beispiel am Ende der jeweiligen Programmsequenz dargestellt. Bei dem
Datentyp ANY besteht zusätzlich die Möglichkeit, anhand des Datentyps und der Anzahl von
Elementen eine Überprüfung bzw. Verzweigung beim Zugriff der Variablen durchzuführen.
Grundfunktionen
Funktionshandbuch, 03/2013, 6FC5397-0BP40-3AA1
DB 100;
P#20.0;
DI 101;
P#50.0;
4;
DBW [AR1,P#0.0];
DIW [AR2,P#0.0];
P#2.0;
P#2.0;
M001;
P3: PLC-Grundprogramm für SINUMERIK 840D sl
12.18 Programmiertipps mit STEP 7
Kommentar
// DB xx.[AR1] ist Quelle
// DI yy.[AR2] ist Ziel
//Quell DB
//Anfangsadresse Quelle auf Datenbyte 20
//Ziel DB
//Anfangsadresse Ziel auf Datenbyte 50
//AR1, AR2, DB, DI vorher geladen
//8 Byte transferieren
//Wortweise kopieren
1051