SAVE_NAMED_MEMORY_RETAIN block

Short summary

Name

SAVE_NAMED_MEMORY_RETAIN

→POU type

→function

Category

IEC-block, MemoryEnh, block with internal error diagnostic

Conform to →IEC-standard

images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/add.svg not defined in IEC-standard

Graphical interface

images/download/thumbnails/429719697/SAVE_NAMED_MEMORY_RETAIN-version-1-modificationdate-1561969608151-api-v2.png

Available since

version 3.2.2 (for library Standard)
images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/warning.svg This block is supported for the built-in PLC and the platforms WindowsX86 and LinuxX86 only.

Functionality

The block saves a →retentive memory area to persistent storage. The name of the memory area is entered at input NAME.

By default, the appropriate file is saved to the subdirectory PLC of the logi.RTS installation directory. If you prefer that a different directory is used, contact your system integrator and ask to change the configuration of the system service.

Inputs, return value


Identifier

→Data type

Description

Inputs:

NAME

STRING

name of the memory area

Return value:

USINT

returns result of saving:

  • 16#00: saving succeeded

  • 16#04: named memory not found

  • 16#05: input/output error

  • 16#FF: The service is not available.

Input EN and output ENO are available when →calling the block. See "Execution control: EN, ENO" for information on input EN and output ENO.

See:

Internal error diagnostic for block

The block checks the following error cases:

  • The target system is out of memory.

  • The data type of the variable to which the call has been assigned does not match the data type of the memory area.

  • The RTSSMem system service has not been loaded.

In such an error case, the output ENO of the block is set to value FALSE (or an equivalent).

Example for usage within ST-editor

The values of the variables that are declared in the section VAR RETAIN ... END_VAR are loaded in the initial state (= init state) and saved in the term state by using the RTSCycleInfo block.
images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/information.svg Best to see the RTSCycleInfo block to find out at which moments the initial cycle and the term cycle respectively are executed.

TYPE
ConfigStruct : STRUCT
MaximumMotorSpeed : REAL := 3.5;
MaximumMotorAcceleration : REAL := 0.75;
Initialized : BOOL;
END_STRUCT;
END_TYPE
 
PROGRAM ExampleNamedMemoryRetain
VAR
init : BOOL;
term : BOOL;
config : REF_TO ConfigStruct;
END_VAR
RTSCycleInfo(
Init=>init,
Term=>term
);
IF init THEN
config := GET_NAMED_MEMORY_RETAIN(NAME:='Config');
IF config <> NULL AND NOT config^.Initialized THEN
config^.MaximumMotorSpeed := 3.5;
config^.MaximumMotorAcceleration := 0.75;
config^.Initialized := TRUE;
END_IF;
END_IF;
IF term THEN
// The following line only saves the block named 'Config'.
// As an alternative, the PLC program could also call SAVE_ALL_NAMED_MEMORY_RETAIN()
SAVE_NAMED_MEMORY_RETAIN(NAME:='Config');
END_IF;
END_PROGRAM

When creating your application within the ST-editor, enter a call of a block by typing the text as requested by the syntax or use Content Assist.