Struttura dei dati: STRUCT
Una struttura è un tipo di dati definito dall'utente, che combina più variabili di qualsiasi tipo di dati in un'unità logica. Le variabili dichiarate all'interno di una struttura sono denominate membri
Si effettua la dichiarazione del tipo di una struttura in un DUT oggetto che crei nelprogetto → Aggiungi oggetto → TAGLIARE menu o nel menu contestuale di un'applicazione.
Per ulteriori informazioni, vedere: DUT
Sintassi
TYPE <structure name>
STRUCT
    <member name> : <data type> := <initialization> ;
END_STRUCT
END_TYPE
| 
 | Questo identificatore è valido nell'intero progetto in modo da poterlo utilizzare come un tipo di dati standard. | 
| 
 | Dichiarazione di un membro Può seguire un numero qualsiasi di dichiarazioni, ma almeno 2. Le strutture possono anche essere annidate. Ciò significa che si dichiara un membro della struttura con un tipo di struttura esistente. Quindi l'unica restrizione è che non è necessario assegnare alcun indirizzo alla variabile (membro della struttura). Il  | 
| 
 | Opzionale | 
Dichiarazione del tipo
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_TYPEEstensione di una dichiarazione di tipo
Una struttura aggiuntiva viene dichiarata da una struttura esistente. Oltre ai propri membri, la struttura estesa ha anche gli stessi membri della struttura di base.
Sintassi
TYPE <structure name> EXTENDS <base structure>
STRUCT
    <member declaration>
END_STRUCT
END_TYPE
Dichiarazione del tipo: S_PENTAGON
TYPE S_PENTAGON EXTENDS S_POLYGONLINE :
STRUCT
    aiPoint5 : ARRAY[1..2] OF INT;
END_STRUCT
END_TYPEDichiarazione e inizializzazione delle variabili di struttura
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_VARNon è necessario utilizzare inizializzazioni con variabili. Per un esempio di inizializzazione di un array di una struttura, consulta la pagina di aiuto per il tipo ARRAY OF.
Accesso a un membro della struttura
È possibile accedere ai membri della struttura con la seguente sintassi:
<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];
Risultato: iPoint = 5
Accesso simbolico ai bit nelle variabili di struttura
È possibile dichiarare una struttura con variabili di tipo di dati BIT per combinare singoli bit in un'unità logica. Quindi puoi indirizzare simbolicamente i singoli bit con un nome (anziché con un indice di bit
Dichiarazione di sintassi
TYPE <structure name> :
STRUCT
    <member name> : BIT;
END_STRUCT
END_TYPE
Sintassi dell'accesso ai bit
<structure name> . <member name>
Dichiarazione del tipo
TYPE S_CONTROL :
STRUCT
    bitOperationEnabled : BIT;
    bitSwitchOnActive : BIT;
    bitEnableOperation : BIT;
    bitError : BIT;
    bitVoltageEnabled : BIT;
    bitQuickStop : BIT;
    bitSwitchOnLocked : BIT;
    bitWarning : BIT;
END_STRUCT
END_TYPEAccesso ai 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;Per ulteriori informazioni, vedere: Accesso ai bit nelle variabili
Suggerimento
Riferimenti e puntatori a BIT le variabili sono non valido dichiarazioni, nonché elementi di matrice con tipo base BIT.