P3: Basic PLC Program for SINUMERIK 840D sl
13.15 Programming tips with STEP 7
Basic Functions
Function Manual, 09/2011, 6FC5397-0BP40-2BA0
1077
13.15.2.1 Use of POINTER and ANY in FC
Function
FC 99 has inputs parameters that are defined as POINTER or ANY.
The example shows a body program via which the subcomponents of the POINTER or ANY can be accessed. In
this case, the DB parameterized with POINTER or ANY is opened and the address offset stored as a crossarea
pointer in address register AR1, Thus allowing access to data elements of variables (generally structures and
arrays) that are addressed via the POINTER, ANY.
This access operation is described at the end of the relevant program sequence in the example. With data type
ANY, it is also possible to execute a check or branch when the variable is accessed based on the data type and
the number of elements involved.
Example
Code
Comment
FUNCTION FC 99: VOID
VAR_INPUT
Row : BYTE ;
Convert : BOOL ;
//Activate numerical conversion
Addr: POINTER;
//Points to variable
Addr1 : ANY ;
END_VAR
VAR_TEMP
dbchr : WORD ;
Number: WORD ;
type : BYTE ;
END_VAR
BEGIN
NETWORK
TITLE =
//POINTER
L
P##Addr;
LAR1 ;
//Retrieve pointer
L
W [AR1,P#0.0];
//Retrieve DB number
T
#dbchr;
L
D [AR1,P#2.0];
//Offset part of pointer
LAR1 ;
AUF 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
L
B [AR1,P#1.0];
//Retrieve type