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 dansProjet → Ajouter un objet → DUT 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
| Cet identifiant est valide pour l'ensemble du projet afin que vous puissiez l'utiliser comme un type de données standard. |
| 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). |
| 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
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
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>
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>
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
.