DB5.DBW142
DB[DBNUMTAG].DBW142
If you declare a tag pointing to a an address, it would normally look like this:
However, if you want to do indirect addressing, then you would write it like this, storing the value of the actual DB number you want to access in DBNUMTAG:Code:DB5.DBW142
Note that if DBNUMTAG has an invalid value, the tag won't update correctly.Code:DB[DBNUMTAG].DBW142
P#DB1.DBX0.0 BYTE 16
I'm working with STEP7 v5.5. Is it possible to do it there?
FUNCTION FC 3 : VOID
TITLE =
VERSION : 0.1
VAR_TEMP
Data : ANY ;
iSFC20RetVal : INT ;
END_VAR
BEGIN
NETWORK
TITLE =pointer format = byte
L W#16#1002;
T LW 0;
NOP 0;
NETWORK
TITLE =byte count
L 10;
T LW 2;
NOP 0;
NETWORK
TITLE =dest db
L 2;
T LW 4;
NOP 0;
NETWORK
TITLE =dest area
L P#DBX 0.0;
T LD 6;
NOP 0;
NETWORK
TITLE =block copy
CALL "BLKMOV" (
SRCBLK := P#DB1.DBX0.0 BYTE 10,
RET_VAL := #iSFC20RetVal,
DSTBLK := #Data);
NOP 0;
END_FUNCTION
Here's the source code.
Code:FUNCTION FC 3 : VOID TITLE = VERSION : 0.1 VAR_TEMP Data : ANY ; iSFC20RetVal : INT ; END_VAR BEGIN NETWORK TITLE =pointer format = byte L W#16#1002; T LW 0; NOP 0; NETWORK TITLE =byte count L 10; T LW 2; NOP 0; NETWORK TITLE =dest db L 2; T LW 4; NOP 0; NETWORK TITLE =dest area L P#DBX 0.0; T LD 6; NOP 0; NETWORK TITLE =block copy CALL "BLKMOV" ( SRCBLK := P#DB1.DBX0.0 BYTE 10, RET_VAL := #iSFC20RetVal, DSTBLK := #Data); NOP 0; END_FUNCTION