Skip to main content

Estructura de datos: STRUCT

Una estructura es un tipo de datos definido por el usuario, que combina múltiples variables de cualquier tipo de datos en una unidad lógica. Las variables declaradas dentro de una estructura se denominan miembros

La declaración de tipo de una estructura se hace en un DUT objeto que creas en ProyectoAñadir objetoDUT menú o en el menú contextual de una aplicación.

Para obtener más información, consulte: DUT

Sintaxis

TYPE <structure name>

STRUCT

    <member name> : <data type> := <initialization> ;

END_STRUCT

END_TYPE

<structure name>

Este identificador es válido en todo el proyecto, por lo que puedes usarlo como un tipo de datos estándar.

<member name> : <data type> ;

Declaración de un miembro

Pueden seguir cualquier número de declaraciones, pero al menos 2.

Las estructuras también se pueden anidar. Esto significa que se declara un miembro de la estructura con un tipo de estructura existente. Entonces, la única restricción es que no se debe asignar ninguna dirección a la variable (miembro de la estructura). AT la declaración no está permitida aquí.

:= <initialization>

Opcional

Declaración de tipos

TYPE S_POLYGONLINE :
STRUCT
    aiStart : ARRAY[1..2] OF INT := [-99, -99];
    aiPoint1 : ARRAY[1..2] OF INT;
    aiPoint2 : ARRAY[1..2] OF INT;
    aiPoint3 : ARRAY[1..2] OF INT;
    aiPoint4 : ARRAY[1..2] OF INT;
    aiEnd : ARRAY[1..2] OF INT := [99, 99];
END_STRUCT
END_TYPE

Extensión de una declaración de tipo

Se declara una estructura adicional a partir de una estructura existente. Además de sus propios miembros, la estructura extendida también tiene los mismos miembros de estructura que la estructura base.

Sintaxis

TYPE <structure name> EXTENDS <base structure>

STRUCT

    <member declaration>

END_STRUCT

END_TYPE

ejemplo 223. Ejemplo

Tipo de declaración: S_PENTAGON

TYPE S_PENTAGON EXTENDS S_POLYGONLINE :
STRUCT
    aiPoint5 : ARRAY[1..2] OF INT;
END_STRUCT
END_TYPE


Declaración e inicialización de variables de estructura

ejemplo 224. Ejemplo
PROGRAM progLine
VAR
    sPolygon : S_POLYGONLINE := (aiStart:=[1,1], aiPoint1:=[5,2], aiPoint2:=[7,3], aiPoint3:=[8,5], aiPoint4:=[5,7], aiEnd:=[1,1]);
    sPentagon : S_PENTAGON := (aiStart:=[0,0], aiPoint1:=[1,1], aiPoint2:=[2,2], aiPoint3:=[3,3], aiPoint4:=[4,4], aiPoint5:=[5,5], aiEnd:=[0,0]);
END_VAR


No debe usar inicializaciones con variables. Para ver un ejemplo de cómo inicializar una matriz de una estructura, consulta la página de ayuda para ver el ARRAY OF.

Acceso a un miembro de la estructura

Accede a los miembros de la estructura con la siguiente sintaxis:

<variable name> . <member name>

ejemplo 225. Ejemplo
PROGRAM prog_Polygon
VAR
    sPolygon : S_POLYGONLINE := (aiStart:=[1,1], aiPoint1:=[5,2], aiPoint2:=[7,3], aiPoint3:=[8,5], aiPoint4:=[5,7], aiEnd:=[1,1]);
    iPoint : INT;
END_VAR
// Assigs 5 to aiPoint
iPoint := sPolygon.aiPoint1[1];

Resultado: iPoint = 5



Acceso a bits simbólicos en variables de estructura

Puede declarar una estructura con variables de tipo de datos BIT para combinar bits individuales en una unidad lógica. Luego puede direccionar simbólicamente bits individuales por un nombre (en lugar de un índice de bits).

Declaración de sintaxis

TYPE <structure name> :

STRUCT

    <member name> : BIT;

END_STRUCT

END_TYPE

Sintaxis de acceso a bits

<structure name> . <member name>

ejemplo 226. Ejemplo

Declaración de tipo

TYPE S_CONTROL :
STRUCT
    bitOperationEnabled : BIT;
    bitSwitchOnActive : BIT;
    bitEnableOperation : BIT;
    bitError : BIT;
    bitVoltageEnabled : BIT;
    bitQuickStop : BIT;
    bitSwitchOnLocked : BIT;
    bitWarning : BIT;
END_STRUCT
END_TYPE

Acceso a bits

FUNCTION_BLOCK FB_Controller
VAR_INPUT
    xStart : BOOL;
END_VAR
VAR_OUTPUT
END_VAR
VAR
    ControlDriveA : S_CONTROL;
END_VAR

IF xStart = TRUE THEN
    // Symbolic bit access
    ControlDriveA.bitEnableOperation := TRUE;
END_IF

PROGRAM PLC_PRG
    fbController : FB_Controller;
END_VAR
   fbController();
fbController.xStart := TRUE;


Para más información, ver: Acceso a bits en variables

Sugerencia

Referencias y punteros a BIT las variables son inválido declaraciones, así como elementos de matriz con tipo base BIT.