GET_REF_FROM_VARNAME block
Short summary
Name |
GET_REF_FROM_VARNAME |
→POU type |
|
Category |
|
Conform to →IEC-standard |
not defined in IEC-standard |
Graphical interface |
|
Available since |
|
Functionality
The block returns the →reference to a variable. Enter its instance path in upper case at input NAME.
logi.cals recommends to call the GET_REF_FROM_VARNAME block just once for the variable to request. On the one hand, the time behavior might be unpredictable and on the other hand, it might take longer to determine the reference.
Restrictions for the usage:
The requested variable must have been declared with an elementary data type, a →derived data type, a →structured data type or an →array data type. The array type must be based on an elementary data type.
The elementary data types are the following data types: REAL, LREAL, USINT, UINT, UDINT, ULINT, SINT, INT, DINT, LINT, TIME, BOOL, BYTE, WORD, DWORD, LWORD, STRING, CHAR, DATE_AND_TIME, DATE or TIME_OF_DAYThere must be an instance for the requested variable. This means that the variables in →functions cannot be requested.
The following variables cannot be requested:
variables with the keyword CONSTANT
→in-out variables (VAR_IN_OUT)
The data type of the reference must match the data type of the requested variable. In case of STRING variables, the length must match as well.
It is only allowed to use the call of the block on the right side of the assignment operator ":=" for →assignments to a reference variable.
Inputs, outputs, return value
|
Identifier |
Description |
|
Inputs: |
NAME |
STRING |
instance path of the variable (in upper case) |
Outputs: |
LEN |
UINT |
length (= memory size) of the variable (in bytes) or 0 |
STATUS |
USINT |
state of the operation (result code):
|
|
Return value: |
– |
→reference to an elementary data type, derived data type, a structured data type or an array data type The elementary data types are the following data types: |
typed reference to the requested variable or NULL |
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:
"Blocks for safe logic" whether this block is supported for developing safety-relevant applications.
"Highlighting safe logic in the FBD-editor" for the effects when using the block as a block for safe logic .
Internal error diagnostic for block
The block checks whether one of the above restrictions is violated. In such an error case, the output ENO of the block is set to the value FALSE (or an equivalent). Moreover, the output STATUS returns the appropriate code (see the above table under STATUS), the output LEN returns the value 0 and the block itself returns NULL (as return value).
Example for usage within ST-editor
PROGRAM DocumentationExamples
VAR
iExampleGetRefFromVarname : ExampleGetRefFromVarname;
END_VAR
iExampleGetRefFromVarname();
END_PROGRAM
FUNCTION_BLOCK ExampleGetRefFromVarname
VAR
requestedVar : INT;
reference : REF_TO INT;
CheckSize : UINT;
CheckState : USINT;
CheckENO : BOOL;
END_VAR
IF reference = NULL THEN
reference := GET_REF_FROM_VARNAME(NAME := 'DOCUMENTATIONEXAMPLES.IEXAMPLEGETREFFROMVARNAME.REQUESTEDVAR', LEN => CheckSize, STATUS => CheckState, ENO => CheckENO);
END_IF;
IF reference <> NULL THEN
reference^ := 42;
END_IF;
ENO := requestedVar = 42;
END_FUNCTION_BLOCK
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.