Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Aree Di Memoria Ld-lw?


Messaggi consigliati

Inserito:

Ciao a tutti

Sono alle prese con un progetto step 7,al cui interno è stato fatto ampio uso con istruzioni di move,conversioni reali interi...dell'area di memoria LD LW.

es.: L LD10

T LD12

LD ed LW (d ed w ho capito che sono il formato del dato; doppio intero....)ma L cosa rappresenta?posso vederne il contenuto da una vat?

Grazie !!

:huh:


Inserita:

Abbassa la tendina in alto e li vedrai.

Si tratta dei dati locali (Temp) di cui ogni FB/FC è dotato.

Sono variabili che perdono validità quando termina l'FB/FC, nel senso che al successivo richiamo li ritrovi a 0.

Puoi usarli come appoggio all'interno del blocco.

Inserita:

Attenzione che mi sembra ci sia comunque un limite di spazio di 256 byte da allocare

complessivamente da tutte le FB - FC e OB !!!!

Inserita:

Grazie ad entrambi!!

Quindi e come dichiarare una var temporanea come #temp1 nella solita tendina degli fc fb?

o ci sono differenze?

ciau

Ivan Castellaro
Inserita: (modificato)
nel senso che al successivo richiamo li ritrovi a 0.

Attenzione che il valore dei dati temp al sucessivo richiamo è casuale, in quanto possono essere utilizzati da altri blocchi!

Modificato: da Ivan Castellaro
Inserita:
Attenzione che il valore dei dati temp al sucessivo richiamo è casuale, in quanto possono essere utilizzati da altri blocchi!
Sicuramente è vero, per il motivo spiegato da mrc, i 256 bytes di memoria riservati per i dati locali di tutti i blocchi sono sempre gli stessi. Non ho comunque mai provato, perchè quando si usa un dato temp di solito (sempre) è per appoggio interno nel blocco e viene subito sovrascritto.

Va detto che quando il blocco termina i bytes che prima erano occupati si liberano.

Esempio: se OB1 usa 100 bytes me ne rimangono 156, se poi richiamo FB1 che ne usa altri 100, me ne rimangono 56, se da FB1 richiamo FC2 che ne usa 50 me ne rimangono 6, quando termina FC2 tornano liberi 50 e quindi sono di nuovo 56.....

Di conseguenza bisogna fare attenzione quando si annidano molti FB/FC con tanti dati temp.

Quindi e come dichiarare una var temporanea come #temp1 nella solita tendina degli fc fb?

o ci sono differenze?

#Temp1 è il nome simbolico, LW (LD,LB,...) è l'indirizzo assoluto della variabile (come fai per esempio con i merker).

Inserita:

Puoi vedere i valori che assume temporaneamente una variabile locale non da una vat ma online nel programma

  • 2 weeks later...
Inserita:

Ciao.

Devi porre attenzione alla differenza tra FB e FC: le prime sono blocchi in cui puoi definire variabili sia di tipo "temp" (ovvero che al successivo ciclo di plc non ricorderanno il valore assunto al ciclo precedente) sia variabili di tipo "stat", che mantengono memoria del proprio stato. Questo è possibile poiché le FB sono associate ad una DB di istanza in cui tali variabili vengono memorizzate. Le Fc, invece, sono semplici funzioni in cui dati certi ingressi otterrai sempre le stesse uscite; al loro interno non è possibile definire variabili stat.

In parole povere, se devi scrivere un blocco funzione che fa una somma, userai una FC (2+2 fa sempre 4!) mentre se devi scrivere un blocco che calcola una media di un valore nel tempo puoi usare un'FB che al suo interno tiene memoria del valore calcolato (e la stessa FB la puoi usare con diverse DB di istanza per calcolare le medie di diverse variabili)

Spero di essere stato chiaro, anche se io questo non l'ho capito leggendo i manuali siemens!

A presto

Maurizio

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