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




Stack Su Step7 Ver 5.2 - Gestione di uno stack


Messaggi consigliati

Inserito:

Salve,

spero mi possiate aiutare....

Sto implementando un programma con Step7 Ver 5.2 in cui devo utilizzare uno stack LIFO.

Ho cercato nele funzioni ed ho trovato la "FC 84 ATT" per inserire un elemento nello stack e la funzione

"FC 87 LIFO" per prelevare l'ultimo elemento inserito. :ph34r:

Avete avuto eseperienze di utilizzo di queste funzioni? Ci sono dei particolari accorgimenti da prendere?

Qualcuno ha un esempio di utilizzo che posso confrontare con il mio?

Grazie.... :(:huh::)

smemo


Gianmario Pedrani
Inserita:

se devi creare una tabella fifo o lifo devi utilizzare la fc92 ed la fc 93 che trovi in s5-s7 converting block leggi il loro help sono molto semplici da usare

se hai bisogno altre info fammelo sapere ciaooooo ;)

Inserita:

Ma tanto perchè le mie funzioni non vanno bene??

Ciao...

Gianmario Pedrani
Inserita:

Perche le funzioni che tu hai scelto leggono un buffer gia creato e non ti permettono di inserire dei dati. per inserirli devi usare un altra funzione mentre con quelle che ti ho suggerito puoi inserire e leggere.

io non ho mai detto che sono sbagliate.

devi scegliere tu ora quella che fa al caso tuo.

Io ti ho solo solo dato un altra strada ciao :lol::lol::lol:

Inserita:

le funzioni ATT , LIFO e FIFO vengono dal mondo Texas e vanno molto bene , non ho trovato controindicazioni

devi abbinare una DB dove la prima word e' la lunghezza e la seconda e' quante word sono occupate

l'unico inconveniente e' che se devi usare la db per conto tuo , quando togli un valore con lifo o fifo , questo rimane comunque presente nella db ( non viene cancellato )

Ciao

Luca

Inserita:

Entro ancora piu' nel dettaglio cosi' riesco a descrivervi il problema per come è!

Devo accendere delle pompe (da 2 a 5 a seconda dei casi) in base a delle sogli di livello e poi rispengerle nello stesso ordine in cui le ho accese.

Il fatto e' che devo anche prevedere la rotazione di accensione delle pompe.

Io ho individuato come soluzione più pulita l'utilizzo di uno stack....

Suggerimenti??

Grazie... :):)B)

Inserita:

Forse fare un fifo o lifo e' un po' esagerato

credo che la logica te la puoi fare tu senza utilizzare FC precostruiti che vanno molto bene

ma non sono proprio leggeri

pensa anche a farti te uno shift

magari a byte o word ( ottieni lo stesso risultato del fifo )

Ciao

Luca

Inserita:

x Luca Bab

Mi immaginavo che lo stack fosse esagerato, ma mi sembrava uno strumento puliti e efficace...

comunque se puoi mi fai un esempio di shift di word o byte come mi hai suggerito??

Grazie... B)

Inserita:

In generale, ormai che ho iniziato la discuss. finisco,

mi potreste fare un esempio come ho chiesto a Luca?

Vi ringrazio!!

Ciao :o:o

Inserita: (modificato)

A ogni pompa corrisponde un Word

Pompa 1 Word_1=Valore 0,1,2,3,4,5

Pompa 2 Word_2=Valore 0,1,2,3,4,5

Pompa 3 Word_3=Valore 0,1,2,3,4,5

Pompa 4 Word_3=Valore 0,1,2,3,4,5

Pompa 5 Word_3=Valore 0,1,2,3,4,5

Esempio Impostazione Sequenza

Word_1=4

Word_2=1

Word_3=3

Word_4=5

Word_5=2

Il valore 0 da assegnare manualmente ad una pompa che deve essere

esclusa oppure im modo automatico se e' in allarme (termico,ecc...)

Se ad esempio imposto tutte le Word con valore 1 le pompe partono

tutte insieme.

Sequenza di Marcia

Pompa_2 > Pompa_5 > Pompa_3 > Pompa_1 > Pompa_4

Allo Start Mov #1 nella Word (es:Word10) di conteggio sequenza

Se WordX=Word_10 start pompa corrispondente

Per avviare la seconda pompa incrementa Word_10

Sequenza di Arresto

Pompa_4 > Pompa_1 > Pompa_3 > Pompa_5 > Pompa_2

Arresta l'ultima pompa avviata WordX=Word_10 stop pompa corrispondente

Per arrestare la precedente decrementa Word_10

Sequenza di Marcia

Start Pompa_1 se word_1=Word_10 Start

Start Pompa_2 se word_2=Word_10 Start

Start Pompa_3 se word_3=Word_10 Start

Start Pompa_4 se word_4=Word_10 Start

Start Pompa_5 se word_5=Word_10 Start

Sequenza di Arresto

Start Pompa_1 se word_1=Word_10 Stop

Start Pompa_2 se word_2=Word_10 Stop

Start Pompa_3 se word_3=Word_10 Stop

Start Pompa_4 se word_4=Word_10 Stop

Start Pompa_5 se word_5=Word_10 Stop

Piu' o meno, ma non fidarti troppo e' probabile che esistano modi molto meno spartani.

Modificato: da dago_

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