Tutti gli elementi dello stesso tipo di dato (BOOL, WORD, INT, DWORD, DINT, REAL e STRING con la stessa lunghezza di stringa) vengono raggruppati insieme e allocati uno dopo l'altro a partire da un indirizzo iniziale comune. Anche gli array di dati vengono allocati a questo indirizzo iniziale comune.
Le seguenti condizioni si applicano a questo indirizzo iniziale: Se una DUT è composta da elementi di tipo BOOL o ARRAY OF BOOL, viene memorizzata in un'area di memoria riservata per bit; diversamente, viene memorizzata in un'area di memoria riservata per word a 16-bit.
Per evitare ambiguità durante l'inizializzazione, non è consentita alcuna inizializzazione. Vengono eseguite le seguenti inizializzazioni di default:
Tipo di dato |
Valore iniziale |
---|---|
BOOL |
FALSE |
WORD, INT, UINT, DWORD, DINT, UDINT |
0 |
REAL |
0.0 |
STRING |
'' (stringa vuota) |
L'indirizzo occupato dalla lunghezza massima della stringa viene inizializzato con la lunghezza massima della stringa che è maggiore o uguale a zero. Il resto della stringa è inizializzato con degli zeri.
Tutte le variabili degli elementi del tipo di dato STRING devono essere posizionate alla fine della dichiarazione.
In generale è necessario prestare attenzione a come l'area di memoria è occupata dai tipi di dati utilizzati.
Specialmente quando si utilizzano elementi STRING, ricordiamo che il modo particolare di occupare la memoria permette loro di essere sovrascritti ripetutamente con l'aiuto di altri elementi.
Assicurarsi che la lunghezza massima della stringa e la lunghezza corrente della stringa siano valori validi prima di utilizzare i comandi di stringa.
Una DUT non può essere utilizzata come una variabile di una DUT con elementi sovrapposti.
DUT senza elementi del tipo di dato BOOL DUTwithoutBOOLs:
In che modo le DUT con elementi sovrapposti occupano la memoria?
Area dati a 16 bit |
||||||
---|---|---|---|---|---|---|
DT100 |
WORD1 |
DWORD1 |
INT1 |
DINT1 |
REAL1 |
STRING1 |
DT101 |
WORD2 |
INT2 |
||||
DT102 |
DWORD2 |
DINT2 |
||||
DT103 |
||||||
STRING2 |
Le variabili STRING1 e STRING2 devono avere la stessa lunghezza e trovarsi alla fine della dichiarazione.
DUT DUTwithBOOLs con elementi del tipo di dato BOOL (nessun indirizzo definito dall'utente):
In che modo le DUT con elementi sovrapposti occupano la memoria?
Area di bit |
||||||||
---|---|---|---|---|---|---|---|---|
WR10 |
Bool14 |
Bools[04] |
WORD1 |
DWORD1 |
INT1 |
DINT1 |
REAL1 |
STRING1 |
WR11 |
WORD2 |
INT2 |
||||||
WR12 |
DWORD2 |
DINT2 |
||||||
WR13 |
La variabile STRING1 deve essere posizionata alla fine della dichiarazione.
DUT con array di dati:
In che modo le DUT con elementi sovrapposti occupano la memoria?
Area dati a 16 bit |
||||
---|---|---|---|---|
DT100 |
String1_Max |
String_Parts[1,1] |
String1 |
StringS[1] |
DT101 |
String1_Act |
String_Parts[1,2] |
||
DT102 |
String1_Char12 |
String_Parts[1,3] |
||
DT103 |
String1_Char34 |
String_Parts[1,4] |
||
DT104 |
String2_Max |
String_Parts[2,1] |
String2 |
StringS[2] |
DT105 |
String2_Act |
String_Parts[2,2] |
||
DT106 |
String2_Char12 |
String_Parts[2,3] |
||
DT107 |
String2_Char34 |
String_Parts[2,4] |
Le variabili String1, String2 e Strings devono avere la stessa lunghezza e trovarsi alla fine della dichiarazione.
Le DUT con elementi sovrapposti sono già predefinite nella FP tool library.