Skip to main content

Structure des données : STRUCT

Une structure est un type de données défini par l'utilisateur, qui combine plusieurs variables de n'importe quel type de données en une unité logique. Les variables déclarées dans une structure sont appelées membres.

Vous effectuez la déclaration de type d'une structure dans un DUT objet que vous créez dansProjetAjouter un objetDUT menu ou dans le menu contextuel d'une application.

Pour plus d'informations, voir : DUT

Syntaxe

TYPE <structure name>

STRUCT

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

END_STRUCT

END_TYPE

<structure name>

Cet identifiant est valide pour l'ensemble du projet afin que vous puissiez l'utiliser comme un type de données standard.

<member name> : <data type> ;

Déclaration d'un membre

Un certain nombre de déclarations peuvent suivre, mais au moins 2.

Les structures peuvent également être imbriquées. Cela signifie que vous déclarez un membre de structure avec un type de structure existant. La seule restriction est alors que vous ne devez attribuer aucune adresse à la variable (membre de la structure). AT la déclaration n'est pas autorisée ici.

:= <initialization>

Facultatif

Déclaration de type

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

Extension d'une déclaration de type

Une structure supplémentaire est déclarée à partir d'une structure existante. Outre ses propres éléments, la structure étendue possède également les mêmes éléments de structure que la structure de base.

Syntaxe

TYPE <structure name> EXTENDS <base structure>

STRUCT

    <member declaration>

END_STRUCT

END_TYPE

Exemple 223. Exemple

Déclaration de type : S_PENTAGON

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


Déclaration et initialisation des variables de structure

Exemple 224. Exemple
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


Vous ne devez pas utiliser d'initialisations avec des variables. Pour un exemple d'initialisation d'un tableau d'une structure, consultez la page d'aide relative au type de données ARRAY OF.

Accès à un membre de la structure

Vous pouvez accéder aux membres de la structure à l'aide de la syntaxe suivante :

<variable name> . <member name>

Exemple 225. Exemple
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];

Résultat : iPoint = 5



Accès symbolique aux bits dans les variables de structure

Vous pouvez déclarer une structure avec des variables de type de données BIT pour combiner des bits individuels en une unité logique. Vous pouvez ensuite adresser symboliquement des bits individuels par un nom (au lieu d'un index de bits).

Déclaration de syntaxe

TYPE <structure name> :

STRUCT

    <member name> : BIT;

END_STRUCT

END_TYPE

Syntaxe de l'accès aux bits

<structure name> . <member name>

Exemple 226. Exemple

Déclaration de type

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

Accès au bit

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;


Pour plus d'informations, voir : Accès aux bits dans les variables

Astuce

Références et pointeurs vers BIT les variables sont non valide déclarations, ainsi que des éléments de tableau avec type de base BIT.