FUNCTION FC 112 : INT
TITLE =BLK_Move
{ S7_language := '7(1) Deutsch (Deutschland) 16.06.2005 14:21:35' }
AUTHOR : Ralle
FAMILY : SYSTEM
NAME : BLK_MOVE
VERSION : 1.1
VAR_INPUT
AnzahlDBB : INT ;
QuellDB : INT ;
QuellDW : INT ;
ZielDB : INT ;
ZielDW : INT ;
END_VAR
VAR_TEMP
Quelle : ANY ;
Ziel : ANY ;
END_VAR
BEGIN
NETWORK
TITLE =Blocktransfer zwischen Datenbausteinen
LAR1 P##Quelle; //Anfangsadresse des ANY-Pointers in AR1 laden
L B#(16, 2); //Syntax-ID und Typ: Byte laden
T LW [AR1,P#0.0];
L #AnzahlDBB; //Transferlaenge
T LW [AR1,P#2.0];
L #QuellDB; //Quelle-DB
T LW [AR1,P#4.0];
L P#DBX 0.0; //Anfangs-DW im Quell-DB
L #QuellDW;
SLD 3;
+D ;
T LD [AR1,P#6.0];
LAR1 P##Ziel; //Anfangsadresse des ANY-Pointers in AR1
L B#(16, 2); //Syntax-ID und Typ: Byte laden
T LW [AR1,P#0.0];
L #AnzahlDBB; //Transferlaenge
T LW [AR1,P#2.0];
L #ZielDB; //Ziel-DB
T LW [AR1,P#4.0];
L P#DBX 0.0; //Anfangs-DW im Ziel-DB
L #ZielDW;
SLD 3;
+D ;
T LD [AR1,P#6.0];
CALL SFC 20 (
SRCBLK := #Quelle,
RET_VAL := #RET_VAL,
DSTBLK := #Ziel);
END_FUNCTION