Raccomandazioni sull'assegnazione dei nomi agli identificativi
Gli identificativi sono definiti:
oalla dichiarazione delle variabili (nome della variabile)
oalla dichiarazione dei tipi di dati definiti dall'utente
oalla creazione di POU (funzioni, blocchi funzione, programmi)
Oltre agli aspetti generali da considerare quando si definisce un identificativo (vedere il capitolo Informazioni generali sulla dichiarazione delle variabili), tenere presente le seguenti raccomandazioni per rendere il nome univoco:
oNomi delle variabili nelle librerie
oTipi di dati definiti dall'utente (DUT) nelle librerie
oFunzioni, blocchi funzione, programmi (POU), azioni
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 |
x* |
– |
b |
riservato |
||||
BYTE |
– |
– |
8 bit |
by |
stringa di bit, non per le operazioni aritmetiche |
WORD |
– |
– |
16 bit |
w |
stringa di bit, non per le operazioni aritmetiche |
DWORD |
– |
– |
32 bit |
dw |
stringa di bit, non per le operazioni aritmetiche |
LWORD |
– |
– |
64 bit |
lw |
non per le operazioni aritmetiche |
SINT |
–128 |
127 |
8 bit |
si |
– |
USINT |
0 |
255 |
8 bit |
usi |
– |
INT |
–32,768 |
32,767 |
16 bit |
i |
– |
UINT |
0 |
65.535 |
16 bit |
ui |
– |
DINT |
–2,147,483,648 |
2,147,483,647 |
32 bit |
di |
– |
UDINT |
0 |
4.294.967.295 |
32 bit |
udi |
– |
LINT |
–263 |
263-1 |
64 bit |
li |
– |
ULINT |
0 |
264-1 |
64 bit |
uli |
– |
REAL |
– |
– |
32 bit |
r |
– |
LREAL |
– |
– |
64 bit |
lr |
– |
STRING |
– |
– |
– |
s |
– |
WSTRING |
– |
– |
– |
ws |
– |
TIME |
– |
– |
– |
tim |
– |
TIME_OF_DAY |
– |
– |
– |
tod |
– |
DATE_AND_TIME |
– |
– |
– |
dt |
– |
DATE |
– |
– |
– |
date |
– |
ENUM |
– |
– |
16 bit |
e |
– |
POINTER |
– |
– |
– |
p |
– |
ARRAY |
– |
– |
– |
a |
– |
* per le variabili booleane, è stato scelto intenzionalmente il prefisso x per differenziarle da BYTE e per conformità con la programmazione IEC (vedere l'indirizzamento %IX0.0). |
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: sdo).
Esempio
cansdoReceivedTelegram: CAN_SDOTelegram;
TYPE CAN_SDOTelegram : (* prefix: sdo *)
STRUCT
wIndex:WORD;
bySubIndex:BYTE;
byLen:BYTE;
aby: ARRAY [0..3] OF BYTE;
END_STRUCT
END_TYPE
Costanti locali
Le costanti locali () 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_ e le costanti globali hanno il prefisso gc_.
Esempio
VAR_GLOBAL
g_iTest: INT;
END_VAR
VAR_GLOBAL CONSTANT
gc_dwExample: DWORD;
END_VAR
Nomi delle variabili nelle librerie
Struttura
Per i nomi delle variabili, fare riferimento alla descrizione riportata sopra. Usare il namespace 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
Tipi di dati definiti dall'utente (DUT) nelle librerie
Struttura
Il nome di ogni tipo di dati struttura consiste in una breve descrizione significativa (ad esempio, SDOTelegram) della struttura.
Esempio (nella libreria con spazio dei nomi CAL):
TYPE Day :(
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY);
Dichiarazione:
eToday: CAL.Day;
Uso nell'applicazione:
IF eToday = CAL.Day.MONDAY THEN
NOTA: Tenere presente l'uso del namespace quando si usano DUT o enumerazioni dichiarate nelle librerie.
Funzioni, blocchi funzione, programmi (POU), azioni
I nomi delle funzioni, i blocchi funzione e i programmi hanno un prefisso costituito da un'abbreviazione descrittiva del nome della POU (ad esempio, SendTelegram). Come per le variabili, la prima lettera di una parola del nome del POU deve essere maiuscola, mentre le altre devono essere minuscole. Si raccomanda di comporre il nome di un POU con un verbo e un sostantivo.
Esempio
FUNCTION_BLOCK SendTelegram (* prefix: canst *)
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 in inglese per gli ingressi possibili di un metodo. Aggiungere una breve descrizione del metodo nella rispettiva dichiarazione. Iniziare nomi delle interfacce con la lettera I; ad esempio, ICANDevice.
NOTA: Tenere presente l'uso dello spazio dei nomi quando si utilizzano le POU dichiarate nelle librerie.