Caminho:  Equipamentos (Dispositivos) > SCA06 > Ladder > Data Transfer >

ARRAYCOPY

Cópia de Array

Previous pageReturn to chapter overviewNext page

Bloco que copia um array a partir de uma determinada posição para outro array ou para ele mesmo.

 

Representação Ladder

 

ARRAY_COPY_block

 

Estrutura do Bloco

 

Tipo de Variável

Nome

Tipo de Dado

Descrição

VAR_INPUT

EN

BOOL

Habilitação do bloco


VAR_SRC

Array: BYTE USINT SINT WORD UINT INT DWORD UDINT DINT REAL

Array de entrada


POS_SRC

BYTE USINT WORD UINT

Posição do array de entrada a partir da qual a cópia será efetuada


POS_DST

BYTE USINT WORD UINT

Posição do array de saída a partir da qual ele será substituído


LEN

BYTE USINT WORD UINT

Quantidade de posições do array que serão copiados

VAR_OUTPUT

ENO

BOOL

Fim de operação


Result

Array: BYTE USINT SINT WORD UINT INT DWORD UDINT DINT REAL

Array de saída

 

Funcionamento

 

Este bloco, quando tem um valor TRUE em EN, copia LEN valores a partir da posição POS_SRC do array de entrada (VAR_SRC) para a posição POS_DST do array de destino (Result).

 

Observações:

- As variáveis de entrada POS_SRC, POS_DST e LEN aceitam apenas números inteiros positivos. Caso um valor negativo seja atribuído a alguma delas, o valor zero será considerado.

- O Array de entrada poderá ser repetido na saída sem a preocupação de que dados sejam sobrescritos.

- Caso a quantidade de dados a ser copiada definida por LEN ultrapasse a última posição do array de entrada, serão copiados apenas os dados válidos até a última posição desta, evitando que algum lixo seja atribuído ao array de saída.

- Caso a quantidade de dados a ser copiada definida por LEN ultrapasse a última posição do array de saída, apenas os dados necessários para completar o mesmo serão copiados, evitando que a memória subsequente receba valores indesejados.

- O bloco não será executado caso LEN possua um valor maior do que o tamanho do array de entrada.

 

Quando EN possui valor FALSE, Result permanece inalterado.

 

O valor de ENO repassa para o próximo bloco Ladder o valor de EN, após finalizada a operação, caso não ocorra nenhum erro no bloco. Senão ENO recebe zero.

 

wpshelp_common_fig_note

NOTA!

É importante atentar que tanto a variável LEN quanto a POS_SRC possuam valores que não excedam a faixa de posições do array de entrada (VAR_SRC). O mesmo deve ser verificado para a variável POS_DST em relação ao array de saída Result.

 

Consulte como criar os arrays em:Ladder > Editor > Variáveis > Editando na Rung

 

 

Fluxograma do Bloco

 

ARRAY_COPY_flowchart

 

Exemplo em Ladder

 

ARRAY_COPY_example01

 

ARRAY_COPY_example02

 

 

 

ARRAY_COPY_example03

 

ARRAY_COPY_example04

 

Os dois exemplos acima copiam os dados do array SRC para o array DST, conforme as posições de origem (POS_SRC), destino (POS_DST) e o tamanho a ser copiado (LEN).

 

Exemplo em ST

 

 O exemplo abaixo, exibe as instruções para aplicação do exemplo acima na linguagem 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);