Transfert de blocs par nombre de mots 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 le nombre de mots indiqué par s2_Number sont copiés 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)
Nombre de mots qui doivent être copiés (source)
Zone de départ de 16 bits (destination)
Lorsque d_Offset = 0 : les données sont recopiées vers la même zone de données.
La valeur de s2_Number doit être supérieure à 0.
Les variables s1_Start, s2_Number 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 à partir de de la zone de 16 bits désignée par s1_Start et le nombre de mots indiqué par s2_Number 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 := 7 ;
NETWORK_BODY
B(B_F,F10_BKMV_NUMBER_OFFSET!,Instance,9,1,23,7,,?DEN?Ds1_Start?Ds2_Number?Dd_Offset?AENO);
B(B_VARIN,,CopyArrayInArray,7,2,9,4,);
B(B_VARIN,,Array1[0],7,3,9,5,);
B(B_VARIN,,4,7,4,9,6,);
B(B_VARIN,,2,7,5,9,7,);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
END_BODY