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.
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.
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]