Bloque que copia una matriz desde una determinada posición a otra matriz o para sí mismo.
Representación Ladder

Estructura del Bloque
Tipo de Variable |
Nombre |
Tipo de Dato |
Descripción |
VAR_INPUT |
EN |
BOOL |
Habilitación del bloque |
VAR_SRC |
Array: BYTE USINT SINT WORD UINT INT DWORD UDINT DINT REAL LREAL |
Matriz de entrada |
|
POS_SRC |
BYTE USINT WORD UINT |
Posición de la matriz de entrada desde la que se realizará la copia |
|
POS_DST |
BYTE USINT WORD UINT |
Posición de la matriz de salida a partir de la cual será reemplazado |
|
LEN |
BYTE USINT WORD UINT |
Cantidad de posiciones de la matriz que se copiarán |
|
VAR_OUTPUT |
ENO |
BOOL |
Fin de operación |
Result |
Array: BYTE USINT SINT WORD UINT INT DWORD UDINT DINT REAL LREAL |
Matriz de salida |
Operación
Este bloque, cuando tiene un valor TRUE en EN, copia LEN valores de la posición POS_SRC de la matriz de entrada (VAR_SRC) a la posición POS_DST de la matriz de destino (Result).
Observaciones:
- Las variables de entrada POS_SRC, POS_DST y LEN sólo aceptan números enteros positivos. Si un valor negativo se asigna a alguna de ellas, se considerará el valor cero.
- La matriz de entrada se puede repetir en la salida sin la preocupación de que los datos se sobrescriban.
- Si la cantidad de datos a ser copiados definida por LEN supera la última posición de la matriz de entrada, se copiarán sólo los datos válidos hasta la última posición de ésta, evitando que alguna basura sea asignada a la matriz de salida.
- Si la cantidad de datos a ser copiados definida por LEN supera la última posición de la matriz de salida, sólo se copiarán los datos necesarios para completar el mismo, evitando que la memoria subsiguiente reciba valores no deseados.
- El bloque no se ejecutará si LEN tiene un valor mayor que el tamaño de la matriz de entrada.
Cuando EN tiene valor FALSE, Result permanece inalterado.
El valor de ENO pasa al próximo bloque Ladder el valor de EN luego de finalizada la operación, si no se produce ningún error en el bloque. Si no ENO recibe cero
|
¡NOTA!
|
Diagrama de Flujo del Bloque
![]()
Ejemplo en Ladder


Los dos ejemplos anteriores copian los datos del array SRC a la matriz DST, según las posiciones de origen (POS_SRC), destino (POS_DST) y el tamaño a copiar (LEN).
Ejemplo en ST
El siguiente ejemplo muestra las instrucciones para aplicar el ejemplo anterior en el lenguaje ST.
VAR SRC : ARRAY[0..5] OF INT := [1, 2, 3, 4, 5, 6]; DST : ARRAY[0..5] OF INT; END_VAR
DST := FB_ARRAYCOPY(SRC, 0, 2, 6);
|
|---|