SA0170: L'indirizzo di una variabile di uscita non deve essere utilizzato
Rileva le posizioni del codice in cui l'indirizzo di una variabile di uscita (VAR_OUTPUT
, VAR_IN_OUT
) di un blocco funzione.
Giustificazione: Non รจ consentito utilizzare l'indirizzo di un'uscita di un blocco funzione nel modo seguente:
Per mezzo del
ADR
operatorePer mezzo di
REF=
Eccezione: non viene segnalato alcun errore se la variabile di uscita viene utilizzata all'interno dello stesso blocco funzione.
Importanza: Media
Blocco funzione FB1
ha il VAR_OUTPUT
variabile iOutVal : INT;
Il seguente accesso in un'altra POU genera l'errore SA0170:
//FB1_inst is of type FB1 addr1 := ADR(FB1_inst.iOutVal); //SA0170 refINT REF= FB1_inst.iOutVal; //SA0179
Il seguente accesso direttamente all'interno del FB1
il blocco funzione genera anche l'errore:
//other is a POINTER TO FB1 ptr := ADR(other^.iOutVal); //SA0170
Il seguente accesso direttamente all'interno del FB1
il blocco funzione non genera errori:
//iInputVal is a VAR_INPUT of FB1 iOutVal := iInputVal; //ptr is a POINTER TO INT ptr := ADR(THIS^.iOutVal); ptr := ADR(iOutVal);
Uscita in Messaggi vista:
SA0170: Non deve assumere l'indirizzo di una variabile di uscita