Vai al contenuto
PLC Forum


Variabili Plc


Messaggi consigliati

Inserito:

Salve,

sono entrato da poco nel mondo 1200,ho dei dubbi che pur leggendo il manuale non sono riuscito a togliermi,per questo ho deciso di postare una domanda.

Quando creo un FB o FC di solito per le veriabili locali interne al blocco dichiaro le STATIC,ma non riesco a capire la differenza tra le STATIC,TEMP,COSTANT,ho povato ad usare le TEMP,ma il valore delle variabili prendevano valori starni


Inserita:

Ciao,

CONSTANT = è una costante, quindi un valore numerico o alfanumerico (credo) che ha sempre lo stesso valore

STATIC = Le variabili statiche vengono utilizzate per memorizzare risultati intermedi statici nel blocco dati di istanza (quindi per gli FB). I dati statici vengono mantenuti finché non vengono sovrascritti, ovvero anche per diversi cicli (e difatti necessitano di un DB per essere memorizzati).

TEMP = sono variabili locali, quindi prendono vita all'interno di un blocco e "muoiono" all'uscita dallo stesso blocco; conviene sempre inizializzarle prima dell'utilizzo o, comunque, essere sempre sicuri che non possano assumere valori casuali (puo' essere per questo che vedevi valori "strani"); un esempio: mettiamo che hai un valore INT globale, ma all'interno di un blocco (solo all'interno di quel blocco) hai necessità di avere questo valore convertito, che so, in BCD; quindi crei la tua variabile TEMP e in testa al blocco effettui la conversione (sempre, per tutti i cicli) da INT a BCD; poi usi il TEMP nel blocco.

Tutte le altre variabili (I/O, merker e dati nei DB globali) sono solitamenti globali, quindi visibili da tutti i blocchi e mantengono il valore fino alla loro modifica successiva.

Spero di essere stato chiaro ...

Inserita:

Spero di aver capito,

La differenza tra STATIC ed una TEMP,sta nel fatto che sulla STATIC il valore associato all'interno del blocco viene mantenuto anche quando il plc esce dal blocco "in fase di elaborazione"

Mentre le TEMP vengono azzerate alla loro uscita,riassumendo il valore zero quando il plc entra nel blocco al ciclo successivo.

Quindi se ad esempio in un blocco ho una variabile TEMP che viene incrementata di 1 ciclicamente,in realta quella variabile la vedro sempre con un valore pari ad 1

Inserita:

No, non è proprio così,

non è che la variabile TEMP viene azzerata, ma semplicemente non esiste più; le variabili globali vengono allocate (allocare = assegnare una zona di memoria congrua al tipo della variabile) alla creazione, ad esempio, di un blocco DB e tali rimangono fino a che non cancelli il programma; le STATIC possiamo dire che siano simili, mentre le locali (TEMP) sono allocate all'avvio del blocco che ha la dichiarazione e sono distrutte all'uscita del blocco stesso: quindi quella zona di memoria utilizzata dalla variabile locale ritorna a disposizione della CPU per una nuova assegnazione o, comunque, un nuovo utilizzo.

Inserita:

Grazie Drugo, pure io non avevo mai capito fino in fondo questo concetto.. Ora tutto chiaro..

Inserita:

Ok, adesso credo di aver capito

Alle variabili static sono associate una zona di memoria e rimangono associate li fino

a quando non vengono eliminate da programma. Con questo possiamo dire che

il loro valore rimane inalterato anche se si esce dal blocco.sono molto simili alle globali, ma sono visibili

Solo dentro il blocco stesso

Alle temp vengono associate una zona di memoria solo quando il plc entra nel blocco

Ed vengono eliminate nel momento in cui esce dal blocco.

Diciamo che il plc prende una zona di memoria temporanea per appoggia quella variabili dichiarata

Quando il plc entra nel blocco ed associa la zons di memoria per quella variabile puo capitare che su quella zona ci sono

dei valori rimasti da un uso precedente della stessa zona.

questo e il motivo per cui avvolte vengono visualizzati dei valori strani

spero di essere stato chiaro

Inserita:

Scusate se insisto. Mi date conferma che quello che ho capito

e realmente corretto riguardo le variabili

Inserita:

Si,

per quello che so io, è così che funziona: non sono sicuro che la cella di memoria mantenga il valore della variabile precedentemente eliminata, ma il concetto è quello ...

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...