Gli identificativi sono definiti:
alla dichiarazione delle variabili (nome della variabile)
alla dichiarazione dei tipi di dati definiti dall'utente
alla creazione di POU (funzioni, blocchi funzione, programmi)
Oltre agli elementi generali da considerare nella definizione di un identificatore (fare riferimento al capitolo Informazioni generali sulla dichiarazione delle variabili), considerare quanto segue per rendere la denominazione il più univoca possibile:
Per l'assegnazione dei nomi delle variabili nelle applicazioni e nelle librerie, attenersi per quanto possibile alla notazione ungherese.
Trovare per ogni variabile una descrizione breve e significativa. Questa descrizione va utilizzata come nome di base. Usare una lettera maiuscola per ogni parola del nome di base. Per i restanti caratteri, usare lettere minuscole (esempio: FileSize
).
Tipo di dati |
Limite inferiore |
Limite superiore |
Contenuto delle informazioni |
Prefisso |
Commento |
---|---|---|---|---|---|
BOOL |
FALSE |
TRUE |
1 bit |
|
– |
|
riservato |
||||
BYTE |
– |
– |
8 bit |
|
stringa di bit, non per le operazioni aritmetiche |
WORD |
– |
– |
16 bit |
|
stringa di bit, non per le operazioni aritmetiche |
DWORD |
– |
– |
32 bit |
|
stringa di bit, non per le operazioni aritmetiche |
LWORD |
– |
– |
64 bit |
|
stringa di bit, non per le operazioni aritmetiche |
SINT |
-128 |
127 |
8 bit |
|
tipo di dati intero aritmetico, 8 bit |
USINT |
0 |
255 |
8 bit |
|
tipo di dati intero aritmetico, 8 bit |
INT |
-32.768 |
32.767 |
16 bit |
|
tipo di dati intero aritmetico, 16 bit |
UINT |
0 |
65.535 |
16 bit |
|
tipo di dati intero aritmetico, 16 bit |
DINT |
-2.147.483.648 |
2.147.483.647 |
32 bit |
|
tipo di dati intero aritmetico, 32 bit |
UDINT |
0 |
4.294.967.295 |
32 bit |
|
tipo di dati intero aritmetico, 32 bit |
LINT |
–263 |
263-1 |
64 bit |
|
tipo di dati intero aritmetico, 64 bit |
ULINT |
0 |
264-1 |
64 bit |
|
tipo di dati intero aritmetico, 64 bit |
REAL |
– |
– |
32 bit |
|
tipo di dati a virgola mobile aritmetico, 32 bit |
LREAL |
– |
– |
64 bit |
|
tipo di dati a virgola mobile aritmetico, 64 bit |
STRING |
– |
– |
– |
|
Stringa di caratteri a byte singolo di lunghezza variabile (impostazione predefinita: 80 caratteri) |
WSTRING |
– |
– |
– |
|
Stringa di caratteri a doppio byte di lunghezza variabile (impostazione predefinita: 80 caratteri) |
TIME |
– |
– |
– |
|
durata del tempo, 32 bit |
LTIME |
– |
– |
– |
|
durata del tempo, 64 bit |
|
– |
– |
– |
|
ora del giorno, 32 bit |
|
– |
– |
– |
|
ora del giorno, 64 bit |
|
– |
– |
– |
|
data e ora |
|
– |
– |
– |
|
– |
DATE |
– |
– |
– |
|
data del calendario |
LDATE |
– |
– |
– |
|
data del calendario |
Enumeration |
– |
– |
– |
|
– |
POINTER |
– |
– |
– |
|
– |
ARRAY |
– |
– |
– |
|
– |
Structure |
– |
– |
– |
|
– |
Function block |
– |
– |
– |
|
– |
Interface |
– |
– |
– |
|
– |
Union |
– |
– |
– |
|
– |
* x viene scelto intenzionalmente come prefisso per le variabili booleane per differenziarlo da BYTE nonché per assecondare la percezione di un programmatore IEC (vedere indirizzamento |
Dichiarazione semplice
Esempi di dichiarazioni semplici:
bySubIndex: BYTE;
sFileName: STRING;
udiCounter: UDINT;
Dichiarazione annidata
Esempio di dichiarazione annidata in cui i prefissi sono consecutivi nell'ordine delle dichiarazioni:
pabyTelegramData: POINTER TO ARRAY [0..7] OF BYTE;
Istanze e variabili di blocchi funzione di tipi di dati definiti dall'utente
Alle istanze e alle variabili dei blocchi funzione di tipi di dati definiti dall'utente è assegnato un prefisso costituito da un'abbreviazione del nome del blocco funzione o del tipo di dati (ad esempio: stSDO
).
Esempio
stSDOReceivedTelegram: ST_SDOTelegram;
TYPE ST_SDOTelegram :
STRUCT
wIndex:WORD;
bySubIndex:BYTE;
byLen:BYTE;
aby: ARRAY [0..3] OF BYTE;
END_STRUCT
END_TYPE
Costanti locali
Le costanti locali (c) iniziano con il prefisso c
e un carattere di sottolineatura adiacente, seguito dal prefisso del tipo e dal nome della variabile.
Esempio
VAR CONSTANT
c_uiSyncID: UINT := 16#80;
END_VAR
Variabili globali e costanti globali
Le variabili globali hanno il prefisso G_
(g_
) e le costanti globali il prefisso Gc_
(gc_
Esempio
VAR_GLOBAL
G_iTest: INT;
END_VAR
VAR_GLOBAL CONSTANT
Gc_dwExample: DWORD;
END_VAR
Struttura
Per i nomi delle variabili, fare riferimento alla descrizione riportata sopra. Usare lo spazio dei nomi della libreria come prefisso quando si accede alla variabile nel codice dell'applicazione.
Esempio
G_iTest: INT; (declaration)
CAN.G_iTest (implementation, call in an application program
Struttura
Il nome di ogni tipo di dati della struttura è composto dal prefisso del tipo corrispondente (fare riferimento anche a Prefisso POU) e da un nome breve e significativo (ad esempio, ET_Day
) della struttura.
Esempio (nella libreria con spazio dei nomi CAL
):
TYPE ET_Day :(
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY);
Dichiarazione:
etToday: CAL.ET_Day;
Uso nell'applicazione:
IF etToday = CAL.ET_Day.MONDAY THEN
I nomi delle funzioni, dei blocchi funzione e dei programmi sono costituiti dal prefisso del tipo corrispondente (fare riferimento anche a Prefisso POU) e da un nome breve e significativo della POU (ad esempio, FB_SendTelegram
). Come con le variabili, la prima lettera di una parola del nome POU deve essere una lettera maiuscola mentre le altre devono essere lettere minuscole. Ad esempio, comporre il nome della POU di un verbo e un sostantivo per indicare chiaramente il funzionamento del blocco funzione.
Esempio
FUNCTION_BLOCK FB_SendTelegram
Nella parte della dichiarazione, inserire una breve descrizione del POU come commento. Anche gli ingressi e le uscite devono avere un commento. Per i blocchi funzione, inserire il prefisso associato per le istanze di set-up direttamente dopo il nome.
Azioni
Le azioni non hanno prefissi. Solo le azioni che devono essere chiamate internamente, ossia dalla POU stessa, iniziano con prv_
.
Struttura
Per la creazione di nomi di metodi, valgono le stesse regole valide per le azioni. Specificare commenti per gli ingressi possibili di un metodo. Aggiungere una breve descrizione del metodo nella rispettiva dichiarazione. I nomi dell'interfaccia devono iniziare con il prefisso IF_
(I
); ad esempio, IF_CANDevice
.