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_TYPEExtension 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_TYPEDé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_VARVous 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_TYPEAccè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.