Transfert de blocs avec offset
Cette instruction est une modification de l’instruction F10_BKMV générée par le compilateur.
Le bloc de données spécifié par la zone de départ de 16 bits désignée par s1_Start et la zone de fin de 16 bits indiquée par s2_End est copié vers le bloc à partir de la zone de 16 bits désignée par l’offset d_Offset de s1_Start lorsque le déclencheur EN est TRUE.
Entrée
Zone de départ de 16 bits (source)
Zone de fin de 16 bits (source)
Offset de s1_Start (destination)
Lorsque s1_Start et s2_End sont dans la même zone de données :
d_Offset = 0 : les données sont recopiées vers la même zone de données.
Les variables s1_Start, s2_End et d_Offset doivent être du même type de données.
Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU. Le même en-tête de POU est utilisé pour tous les langages de programmation.
VAR
Array1: ARRAY [0..5] OF INT:=[6(0)];
CopyArrayInArray: BOOL:=FALSE;
END_VAR
La fonction est exécutée lorsque la variable CopyArrayInArray passe de FALSE à TRUE. Elle copie le bloc de données spécifié par la zone de départ de 16 bits désignée par s1_Start et la zone de fin de 16 bits indiquée par s2_End vers le bloc à partir de la zone de 16 bits désignée par l’offset d_Offset de s1_Start.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_F,F10_BKMV_OFFSET!,Instance,9,0,19,6,,?DEN?Ds1_Start?Ds2_End?Dd_Offset?AENO);
B(B_VARIN,,CopyArrayInArray,7,1,9,3,);
B(B_VARIN,,Array1[0],7,2,9,4,);
B(B_VARIN,,Array1[3],7,3,9,5,);
B(B_VARIN,,2,7,4,9,6,);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY