14.19.2.2
Verwendung von POINTER und ANY im FB
Funktion
Der FB99 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 Variable (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.
Beispiel
FUNCTIONBLOCK FB99
VAR_INPUT
END_VAR
VAR_TEMP
END_VAR
BEGIN
NETWORK
TITLE =
Grundfunktionen
Funktionshandbuch, 05/2017, A5E40870716
AUF
DB [#dbchr];
L
B [AR1,P#0.0];
Row : BYTE ;
Convert : BOOL ;
Addr : POINTER ;
Addr1 : ANY;
dbchr : WORD ;
Anzahl : WORD ;
typ : BYTE;
L
P##Addr;
LAR1;
L
DIW [AR1,P#0.0];
T
#dbchr;
L
DID [AR1,P#2.0];
LAR1 ;
AUF
DB [#dbchr];
L
B [AR1,P#40.0];
P3: PLC-Grundprogramm für SINUMERIK 840D sl
14.19 Hinweise zur Programmierung in STEP 7
//DB der Variablen aufschlagen
//hole Byte-Wert über ANY
//Zahlenwandlung aktivieren
//Zeigt auf Variable
//POINTER
//Pointer holen aus Instanz-DB
//DB-Nummer holen
//Offsetteil des Pointers
//DB der Variablen aufschlagen
//hole Byte-Wert über Pointer mit
dem
//Adressoffset 40
1141