Sysmemmove, movimento da memória

Lista

Esta página faz parte do Manual de Programação IEC 61131-3. Acesse o índice.

Esta função copia a área de memória definida em Src na área de memória definida em Dest para o tamanho definido em Size. As duas áreas de memória também podem se sobrepor.

A função garante a atomicidade da transferência, pois a área de memória definida em Dest ele sempre tem um valor consistente mesmo se escrito por uma tarefa e usado por outra tarefa. Deve ser usado para passar variáveis ​​maiores que 4 bytes a para strings de uma tarefa para outra com prioridade de execução mais alta.

Círculo de Informação

Função

CoDeSys: eCDSXUnified12Lib

Laboratório de lógica: eLLabXUnified12Lib

descrição

Dest (PVOID) Endereço da área de memória de destino.
Src (PVOID) Endereço da área de memória de origem.
Size (UDINT) Tamanho da área de memória a ser transferida.

A função retorna uma variável (PVOID) com o endereço da área de memória de destino. Em caso de erro, e é retornadoNULL.

Imagem da função Sysmemmove

Exemplos

Como usar os exemplos.
Definindo a variável de depuração CMovememória Source será transferido para Destination.

LogicLab (Ptp116)
PROGRAM ST_Sysmemmove
VAR
    i : UDINT; (* Auxiliary variable *)
    CMove : BOOL; (* Move command *)
    Source : ARRAY[ 0..15 ] OF BYTE; (* Source memory *)
    Destination : STRING[ 32 ]; (* Destination memory *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_Sysmemmove"
// *****************************************************************************
// By setting the "Move" command the memory is moved
// -----------------------------------------------------------------------------

    IF (CMove) THEN
        CMove:=FALSE; //Move command
        i:=Sysmemmove(ADR(Destination), ADR(Source), SIZEOF(Source));
    END_IF;

// [End of file]
CODESYS (Ptp161)
PROGRAM ST_Sysmemmove
VAR
    i : UDINT; //Auxiliary variable
    CMove : BOOL; //Move command
    Source : ARRAY[ 0..15 ] OF BYTE; //Source memory
    Destination : STRING[ 32 ]; //Destination memory
END_VAR

// *****************************************************************************
// PROGRAM "ST_Sysmemmove"
// *****************************************************************************
// By setting the "Move" command the memory is moved
// -----------------------------------------------------------------------------

    IF (CMove ) THEN
        CMove :=FALSE; //Move command
        i:=Sysmemmove(ADR(Destination), ADR(Source), SIZEOF(Source));
    END_IF;

// [End of file]
Esse artigo foi útil?