mazzinga Inserito: 20 agosto 2014 Segnala Inserito: 20 agosto 2014 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
drugo66 Inserita: 20 agosto 2014 Segnala Inserita: 20 agosto 2014 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 ...
mazzinga Inserita: 20 agosto 2014 Autore Segnala Inserita: 20 agosto 2014 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
drugo66 Inserita: 20 agosto 2014 Segnala Inserita: 20 agosto 2014 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.
step-80 Inserita: 20 agosto 2014 Segnala Inserita: 20 agosto 2014 Grazie Drugo, pure io non avevo mai capito fino in fondo questo concetto.. Ora tutto chiaro..
mazzinga Inserita: 21 agosto 2014 Autore Segnala Inserita: 21 agosto 2014 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
mazzinga Inserita: 21 agosto 2014 Autore Segnala Inserita: 21 agosto 2014 Scusate se insisto. Mi date conferma che quello che ho capito e realmente corretto riguardo le variabili
drugo66 Inserita: 22 agosto 2014 Segnala Inserita: 22 agosto 2014 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 ...
mazzinga Inserita: 22 agosto 2014 Autore Segnala Inserita: 22 agosto 2014 Grazie mille del chiarimento
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora