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 Proyecto → Añadir objeto → DUT 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
| Este identificador es válido en todo el proyecto, por lo que puedes usarlo como un tipo de datos estándar. |
| 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). |
| 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
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
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>
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>
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
.