Utilizzando la finestra di dialogo Proprietà è possibile assegnare a una DUT uno tra i due metodi di occupazione di memoria:
con elementi sovrapposti
con elementi non sovrapposti
Tutti gli elementi del tipo di dato BOOL vengono raggruppati insieme in un blocco e allocati uno dopo l'altro in un'area di memoria riservata per i bit:
Quando si utilizza un qualsiasi ARRAY OF BOOL, l'allocazione del Bool semplice inizia ad un indirizzo word a 16 bit.
Se non viene utilizzato nessun ARRAY OF BOOL, l'allocazione della memoria dipende dal numero di membri booleani:
Numero di elementi booleani |
Inizio dell'allocazione di memoria |
Allocazione di memoria |
---|---|---|
1 |
a qualsiasi indirizzo bit: R0, R1, R2, … |
![]() |
2 |
a qualsiasi indirizzo bit pari, p.es. R0, R2, R4, … |
![]() |
4 |
al limite di cifra, p.es. R0, R4, R8, … |
![]() |
8 |
al limite di byte, p.es. R0, R8, R10, … |
![]() |
9 o più |
all'indirizzo word, p.es. R0, R10, R20, … |
![]() |
3 |
a qualsiasi indirizzo bit: R0–R2 : utilizzato R3, R7: non utilizzato e riempito |
![]() DUT con membri riempiti (O: bit riempito che non può essere usato) |
5–7 |
a qualsiasi indirizzo bit: R0–R4 : utilizzato R5–R7: non utilizzato e riempito |
![]() |
Se nessun indirizzo utente è assegnato e 3 o 5-7 elementi booleani vengono utilizzati in una DUT, la memoria occupata viene riempita fino al prossimo byte o limite di cifra.
Il bool riempito non può essere utilizzato.
Tutti gli elementi del tipo di dato ARRAY OF BOOL vengono raggruppati insieme in un blocco e allocati in un'area di memoria riservata per bit, che inizia a un indirizzo word a 16 bit.
Quando vengono utilizzati uno o più ARRAY OF BOOL: l'allocazione di memoria del bool semplice e ogni ARRAY OF BOOL vengono allocati all'indirizzo word
Area word:
Area bool:
I bit liberi non sono occupati dalla DUT e verranno utilizzati per altri elementi booleani (semplici), che si inseriscono in questi spazi vuoti.
Quando si deve utilizzare un array di bool, si consiglia di utilizzare un multiplo di 16 bool semplici e di utilizzare anche array di bool con un multiplo di 16 bool.
Tutti gli altri elementi vengono raggruppati insieme in un blocco e allocati uno dopo l'altro in un'area di memoria riservata per word a 16 bit.
A causa dell'ottimizzazione nel layout di memoria, gli indirizzi booleani degli elementi della on sono nello stesso ordine definito nella lista delle dichiarazioni della DUT.
Quando si accede a una DUT con elementi secondari DUT tramite indirizzi utente, il layout di memoria dovrebbe essere controllato utilizzando l'esportazione .csv o la finestra di monitoraggio.
DUT (DUTwithoutBOOLs) senza elementi del tipo di dato BOOL:
In che modo le DUT non sovrapposte occupano la memoria?
Area dati a 16 bit |
|
---|---|
DT100 |
WORD1 |
DT101 |
DWORD1 |
DT102 |
|
DT103 |
INT1 |
DT104 |
DINT1 |
DT105 |
|
DT106 |
WORD2 |
DT107 |
DWORD2 |
DT108 |
|
DT109 |
INT2 |
DT110 |
DINT2 |
DT111 |
|
DT112 |
REAL1 |
DT113 |
|
DT114 |
STRING1 |
DT115 |
|
DT116 |
|
DT117 |
|
DT118 |
STRING2 |
DT119 |
|
DT120 |
|
DT121 |
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 non sovrapposte occupano la memoria?
Area di bit |
Area dati a 16 bit |
|||
---|---|---|---|---|
R100 |
Bool1 |
DT100 |
WORD1 |
|
R101 |
Bool2 |
DT101 |
DWORD1 |
|
R102 |
Bool3 |
DT102 |
||
R103 |
Bool4 |
DT103 |
INT1 |
|
DT104 |
DINT1 |
|||
R110 |
Bools[0] |
DT105 |
||
R111 |
Bools[1] |
DT106 |
WORD2 |
|
R112 |
Bools[2] |
DT107 |
DWORD2 |
|
R113 |
Bools[3] |
DT108 |
||
R114 |
Bools[4] |
DT109 |
INT2 |
|
DT110 |
DINT2 |
|||
DT111 |
||||
DT112 |
REAL1 |
|||
DT113 |
||||
DT114 |
STRING1 |
|||
DT115 |
||||
DT116 |
||||
DT117 |
La variabile STRING1 deve essere posizionata alla fine della dichiarazione.
DUT con array di dati:
In che modo le DUT non sovrapposte occupano la memoria?
Area dati a 16 bit |
|
---|---|
DT100 |
String1_Max |
DT101 |
String1_Act |
DT102 |
String1_Char12 |
DT103 |
String1_Char34 |
DT104 |
String2_Max |
DT105 |
String2_Act |
DT106 |
String2_Char12 |
DT107 |
String2_Char34 |
DT108 |
String_Parts[1,1] |
... |
... |
DT115 |
String_Parts[2,4] |
DT116 |
String1 |
DT117 |
|
DT118 |
|
DT119 |
|
DT120 |
String2 |
DT121 |
|
DT122 |
|
DT123 |
|
DT124 |
Strings[1] |
DT125 |
|
DT126 |
|
DT127 |
|
DT128 |
Strings[2] |
DT129 |
|
DT130 |
|
DT131 |
Le variabili String1, String2 e Strings devono avere la stessa lunghezza e trovarsi alla fine della dichiarazione.