P3: Basic PLC Program for SINUMERIK 840D sl
13.15 Programming tips with STEP 7
Basic Functions
Function Manual, 09/2011, 6FC5397-0BP40-2BA0
1079
13.15.2.3 POINTER or ANY variable for transfer to FC or FB
POINTER or ANY variable
With version 1 or later of STEP 7 it is possible to define a pointer or ANY in VAR_TEMP.
The following two examples show how an ANY can be supplied.
Example 1: Transfer ANY parameter via a selection list to another FB (FC)
Several ANY parameters are defined in an FB (FC). A specific ANY parameter must now be chosen from a
selection list for transfer to another FB (FC). This can only be done by means of an ANY in VAR_TEMP. 1 to 4
can be set in parameter "WhichAny" in order to select Addr1 to Addr4.
LAR1 ;
//Retrieve pointer from instance DB
L
DIW [AR1,P#0.0];
//Retrieve DB number
T
#dbchr;
L
DID [AR1,P#2.0];
//Offset part of pointer
LAR1 ;
OPEN
DB [#dbchr];
//Open DB of variables
L
B [AR1,P#40.0];
//Retrieve byte value using pointer with
//address offset 40
//ANY
L
P##Addr1;
LAR1 ;
//Retrieve ANY from instance DB
L
DIB [AR1,P#1.0];
//Retrieve type
T
#typ;
L
DIW [AR1,P#2.0];
//Retrieve amount
T
#Amount;
L
DIW [AR1,P#4.0];
//Retrieve DB number
T
#dbchr;
L
DID [AR1,P#6.0];
//Offset part of pointer
LAR1 ;
OPEN
DB [#dbchr];
//Open DB of variables
L
B [AR1,P#0.0];
//Retrieve byte value using ANY
Note
Address register AR2 is used in the block. However, this address register AR2 is also used
for multiinstance DBs. For this reason, this FB should not be declared as multi-instance DB.
Code
Comment
FUNCTIONBLOCK FB 100
CODE_VERSION1
//starting from STEP 7 Version 2 for deactivating the
//multi-instance DB
VAR_INPUT
WhichAny : INT ;
Code
Comment