Se il valore di una variabile o di un indirizzo viene letto all'interno di una rete, il compilatore utilizza sempre il valore che la variabile o l'indirizzo aveva nel momento in cui il compilatore ha iniziato ad elaborare la rete.
Tenete presente che si verificano spesso errori di programmazione non intenzionali, quando il valore di una variabile o di un indirizzo viene modificato e poi letto.
Ciò è dovuto al seguente meccanismo: all'inizio di una rete, il valore della variabile in questione viene copiato in una variabile temporanea. Tutti gli ulteriori accessi in lettura vengono eseguiti dalla variabile temporanea; tutti gli accessi in scrittura sulla variabile originale.
Esempio 1:
Editor |
Codice programma |
Descrizione |
|
LD |
Risultato inatteso dovuto al valore letto dalla copia temporanea. ![]() |
![]() |
|
![]() |
Codice aggiuntivo per la copia del valore di iVariable in DT768 in una variabile temporanea in DT769 |
||
![]() |
Legge dalla variabile temporanea in DT769, aggiunge 5 e scrive il risultato in iVariable in DT768. Di nuovo legge dalla variabile temporanea in DT769, moltiplica per 3 e scrive il risultato in iVariable in DT768. |
||
Editor tipo GR |
Risultato atteso dovuto a nessun valore letto dalla copia temporanea ![]() |
![]() |
Esempio 2:
Editor |
Codice programma |
Descrizione |
|
LD |
Risultato atteso dovuto al valore letto dalla copia temporanea di bOutput ![]() |
![]() |
Codice aggiuntivo per la copia del valore di bOutput in R0511 in una variabile temporanea in R0500 |
![]() |
|||
![]() |
Legge dalla variabile temporanea R0500 |
||
Editor tipo GR |
Risultato inatteso dovuto a nessun valore letto dalla copia temporanea ![]() |
![]() |