Déplacer des données en bits
Cette instruction FP déplace des données en bits de la zone de données en bits, spécifiée par s1_Start et s2_End, vers le bloc de données en bits spécifié par d_Start, lorsque le déclencheur EN est TRUE.
Entrée
Adresse de départ de la zone source des données en bits
Adresse de fin de la zone source des données en bits
Sortie
Adresse de départ de la zone de destination des données en bits
Les variables d’entrée et de sortie doivent être du même type de données.
Les opérandes s1_Start et s2_End doivent être ainsi :
Dans la même zone mémoire, par ex. DT, WR, FL, LD,...
s1_Start £ s2_End
Si s1_Start > s2_End
Instructions F correspondantes : F5_BTM
Dans la liste des variables globales, vous définissez des variables qui sont accessibles par tous les POU dans le projet.
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
bStart: BOOL:=FALSE;
(*activates the function*)
END_VAR
VAR_EXTERNAL
bStartAddress: BOOL:=FALSE;
bEndAddress: BOOL:=FALSE;
bTargetAddress: BOOL:=FALSE;
END_VAR
La fonction est exécutée lorsque la variable bStart est définie sur TRUE. Elle déplace les bits X1–X8 vers la zone de destination YD–Y14.
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,FP_MOVE_BITS!,,13,1,22,6,,?DEN?Ds1_Start?Ds2_End?AENO?Cd_Start);
B(B_CONTACT,,bStart,6,2,8,4,);
B(B_VARIN,,bStartAddress,11,3,13,5,);
B(B_VARIN,,bEndAddress,11,4,13,6,);
B(B_VAROUT,,bTargetAddress,22,3,24,5,);
L(1,3,6,3);
L(8,3,13,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
If (bStart) then
FP_MOVE_BITS(s1_Start := bStartAddress, s2_End := bEndAdress, d_Start => bTargetAddress);
End_if;