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_TYPE
Estensione 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_TYPE
Dichiarazione 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_VAR
Non è 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_TYPE
Accesso 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
.