P3: Basic PLC Program for SINUMERIK 840D sl
13.15 Programming tips with STEP 7
Basic Functions
1082
Function Manual, 09/2011, 6FC5397-0BP40-2BA0
13.15.3
Multiinstance DB
Function
From Version 2 in STEP 7, you can provide multi-instance enabled FBs, i.e. with multi-instance DBs. The primary
characteristic of multiinstance DBs is that a data module can be used for various instances of FBs (see STEP 7
documentation), The quantity structure of the DBs can be optimized this way.
Multi-instance DBs should be activated only when they are actually going to be used since they increase the
runtime and code size of the FBs.
Example
Note
When complex programs are implemented in multiinstance enabled FBs that use a pointer
and address register, it is important for the programmer to observe certain rules.
With multiinstance DBs, the start address of the variable (VAR_INPUT, VAR_OUTPUT,
VAR_IN_OUT, VAR) is transferred with the DI data block register and address register AR2.
When variables are accessed within the multiinstance enabled FB, the compiler
independently controls the access operation via address register AR2. However, when
complex program sections also have to work with address registers in the same FB (e.g. to
copy data), then the old contents of AR2 must be saved before the register is changed. The
contents of AR2 must be restored to their original state before an instance variable
(VAR_INPUT, VAR_OUTPUT, VAR_IN_OUT, VAR) is accessed. The AR2 register of the
instance is to be saved most usefully in a local variable (VAR_TEMP).
The command "Load pointer to an instance variable" returns a pointer value from the start of
the instance data. To be able to access this variable via a pointer, the offset stored in AR2
must be added.
Code
Comment
FUNCTION_BLOCK FB 99
VAR_INPUT
varin: INT ;
END_VAR
VAR
variable1: ARRAY[[0..9] of INT;
variable2: INT ;
END_VAR
BEGIN
L
P##variable1;
//Pointer at start of ARRAY
//The value 8500 0010 is now in the accumulator
//and a cross-area pointer is in the AR2
//Pointer. If one is to work across areas
//then, during the addition of these
//two pointers, an area is to be disabled.
AD
DW#16#00FF_FFFF,
//Skipping of an area
LAR1
//Load into AR1
TAR2;
Содержание SINUMERIK 828D Turning
Страница 34: ...Basic Functions 34 Function Manual 09 2011 6FC5397 0BP40 2BA0 ...
Страница 146: ...A3 Axis Monitoring Protection Zones 2 6 Data lists Basic Functions 146 Function Manual 09 2011 6FC5397 0BP40 2BA0 ...
Страница 328: ...F1 Travel to fixed stop 6 5 Data lists Basic Functions 328 Function Manual 09 2011 6FC5397 0BP40 2BA0 ...
Страница 816: ...K2 Axis Types Coordinate Systems Frames 10 9 Data lists Basic Functions 816 Function Manual 09 2011 6FC5397 0BP40 2BA0 ...
Страница 1198: ...P4 PLC for SINUMERIK 828D 14 6 Function interface Basic Functions 1198 Function Manual 09 2011 6FC5397 0BP40 2BA0 ...
Страница 1752: ...Appendix 20 2 Overview Basic Functions 1752 Function Manual 09 2011 6FC5397 0BP40 2BA0 ...
Страница 1774: ...Glossary Basic Functions 1774 Function Manual 09 2011 6FC5397 0BP40 2BA0 ...