Camino:  Equipo (Dispositivos) > SCA06 > Ladder > Data Transfer >

ARRAYCOPY

Copia de Matriz

Previous pageReturn to chapter overviewNext page

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

 

Representación Ladder

 

ARRAY_COPY_block

 

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

 

wpshelp_common_fig_note

¡NOTA!

Es importante notar que no sólo LEN, sino también POS_SRC no superará el tamaño de la matriz VAR_SRC. Lo mismo debe hacerse cuando se establecen los valores en POS_DST, relacionados con el tamaño de la matriz de salida Result.

 

Ver aquí cómo crear matrices: Ladder > Editor > Variables > Editando en la Rung

 

 

Diagrama de Flujo del Bloque

 

ARRAY_COPY_flowchart

 

Ejemplo en Ladder

 

ARRAY_COPY_example01

 

ARRAY_COPY_example02

 

 

 

ARRAY_COPY_example03

 

ARRAY_COPY_example04

 

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);