Transferencia de bloques, offset a partir del origen
Esta instrucción es una modificación de la instrucción F10_BKMV generada por el compilador.
El bloque de datos especificado por el área de 16 bits inicial s1_Start y el área final especificado por s2_End se copia en bloque a un área inicial especificado por un d_Offset a partir de s1_Start si la entrada de trigger EN pasa a TRUE.
Entrada
área inicial de 16 bits, fuente
área final de 16 bits, fuente
offset a partir de s1_Start, destino
Siempre que s1_Start y s2_End estén en el mismo área de datos:
d_Offset = 0: los datos se sobrescribirán en el mismo área.
Las variables s1_Start, s2_End y d_Offset tienen que ser del mismo tipo de datos.
Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU. Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.
VAR
Array1: ARRAY [0..5] OF INT:=[6(0)];
CopyArrayInArray: BOOL:=FALSE;
END_VAR
Cuando la variable CopyArrayInArray pasa de FALSE a TRUE, se ejecuta la función. Copia el bloque de datos especificado por un área de 16 bits inicial s1_Start y un área de 16 bits final s2_End a la zona determinada por un d_Offset a partir 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