Transfert de blocs par nombre de mots
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 d_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)
Sortie
Zone de départ de 16 bits (destination)
Cette instruction est une modification de l’instruction F10_BKMV générée par le compilateur.
Lorsque s1_Start et d_Start sont dans la même zone de données :
s1_Start = d_Start: data will be recopied to the same data area.
La valeur de 's2_Number' doit être supérieure à 0.
Les variables s1_Start, s2_Number et d_Start 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)];
Array2: ARRAY [0..5] OF INT:=[6(0)];
CopyArray: BOOL:=FALSE;
END_VAR
La fonction est exécutée lorsque la variable CopyArray passe de FALSE à TRUE. Elle copie le bloc de données de la zone de départ 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 d_Start.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,F10_BKMV_NUMBER!,Instance,8,0,19,5,,?DEN?Ds1_Start?Ds2_Number?AENO?Cd_Start);
B(B_VARIN,,CopyArray,6,1,8,3,);
B(B_VARIN,,Array1[0],6,2,8,4,);
B(B_VARIN,,2,6,3,8,5,);
B(B_VAROUT,,Array2[0],19,2,21,4,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY