Vai al contenuto
PLC Forum


Avviso "L'indirizzo non viene occupato da una variabile "


AlessandroRH

Messaggi consigliati

buongiorno a tutti,

avrei bisogno di un'informazione riguardante gli avvisi del compilatore del TIA Portal (attualmente utilizzo la versione 15) e spero possiate aiutarmi.

 

durante la compilazione del progetto vengono fuori delle innocue segnalazioni che però mi vengono contestate dal cliente. Quindi avrei la necessità di trovare un modo per deselezionare un determinato tipo di avvisi (dalle impostazioni possibilmente) e non tutti quanti tramite il pulsante "Visualizza/Nascondi Avvisi".

o nel caso qualcuno sapesse qualche altra soluzione, per il caso che vi illustrerò di seguito, ben venga 😉

 

venendo al dunque, ho una DB (DB100) dedicata alla diagnostica dell'impianto composta da vari campi BOOL raggruppati in delle strutture per differenziare i tipi di allarmi:1678352557_DBAlarms.thumb.png.d2d312b0a3d1982a460175f8b28aaecd.png

 

all'interno del progetto avrò poi un risolutivo degli allarmi che vien su tramite la comparazione in serie dell'interrogazione in DBD:

863556002_AvvisoTIA.thumb.png.f8129dbe41f030ecfa5ecdcfba753e9e.png

 

come potrete notare su qualsiasi operando DBD mi viene fuori l'avviso "L'indirizzo non viene occupato da una variale". 

Qualcuno di voi ha un'idea di come nascondere quella segnalazione o di risolvere il problema in qualche altro modo ??

 

P.S. sto utilizzando da poco il TIA per progettare i PLC,  quindi per molte operazioni se pur banali sto riscontrando degli intoppi. 

 

Vi ringrazio in anticipo per la vostra attenzione 😊

Link al commento
Condividi su altri siti


Cosi su 2 piedi...

nella dichiarazione del DB usi delle strutture che poi compari a livello di dw, è proprio necessario ? Magari basta comparare un bit solo?

Hai provato a scriverlo in awl o scl? ti da sempre lo stesso warning?

 

ciao

Link al commento
Condividi su altri siti

Il TIA è orientato completamente all'uso del simbolico, e non gli piace l'uso di indirizzi assoluti.
Ovviamente l'indirizzamento assoluto non è vietato, ma viene segnalato come warning in casi, come questo, ai quali non è possibile assegnare un nome alla variabile.
Le soluzioni per evitare l'uso di indirizzamento assoluto sono più di una.
Per esempio, potresti dichiarare delle variabili sovrapposte alle variabili booleane degli allarmi (vedi sovrapposizione con AT), oppure usare le funzioni GATHER o GATHER_BLK per appoggiare le strutture di BOOL a variabili Word o DWord.
Altra possibilità è creare una funzione, alla quale potresti passare in ingresso il DB, l'indirizzo del byte di partenza e il numero di variabili da analizzare.
In uscita potresti avere direttamente un bit di presenza allarme.

Un modo per fare questo, è l'utilizzo dell'istruzione PEEK.
Vedi esempio:

    #DW_Alm := PEEK_DWORD(area := 16#84,
                         dbNumber := #DB_Alm,
                         byteOffset := #OfsAlm);

Se metti questa istruzione in un ciclo FOR, analizzi lo stato della variabile DW_Alm, ed incrementi OfsAlm, hai già risolto tutto, senza bisogno di tirare in ballo variabili e comparazioni.

 

Link al commento
Condividi su altri siti

  • 2 weeks later...

scusate il ritardo, ma ero disperso in qualche stabilimento.

 

ho seguito le soluzioni indicate dall'utente Batta e affermo che sono state tutte efficaci 👍

 

ringrazio tutti per essersi interessati alla mia richiesta !!

 

Link al commento
Condividi su altri siti

  • 3 weeks later...

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...