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

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.
|
NOTA!
|
Fluxograma do Bloco
![]()
Exemplo em Ladder


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