Skip to main content

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 nelprogettoAggiungi oggettoTAGLIARE 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

<structure name>

Questo identificatore è valido nell'intero progetto in modo da poterlo utilizzare come un tipo di dati standard.

<member name> : <data type> ;

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 AT la dichiarazione non è consentita qui.

:= <initialization>

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

Esempio 223. Esempio

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

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

Esempio 225. Esempio
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>

Esempio 226. Esempio

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.