Skip to main content

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 operatore

  • Per mezzo di REF=

Eccezione: non viene segnalato alcun errore se la variabile di uscita viene utilizzata all'interno dello stesso blocco funzione.

Importanza: Media

Esempio 128. Esempio

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:

  • sa_icon_message.png SA0170: Non deve assumere l'indirizzo di una variabile di uscita