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




Salvataggio Variabili Da Recuperare Al Riavvio


Messaggi consigliati

Inserito:

Ciao a tutti! Dopo l'aiuto che mi avete dato con le problematiche che ho incontrato nelle mie prime piccole automazioni, avrei bisogno della vostra opinione.

Ho acquistato un starter kit con s7 1200 cpu 1212 ac/dc/rly + kp300 con i quali sto facendo alcuni semplici progetti per imparare a conoscere questo nuovo mondo. Nessun particolare problema, se non questo dubbio:

Creo un programma che da hmi mi permetta di modificare un valore temporale, che nel programma viene richiamato da un timer con ritardo all'inserzione per ritardare l'attivazione di un'uscita. Per far si che al riavvio della macchina il valore immesso sia di nuovo disponibile ho creato due blocchi di programma (3 con il Main) e un DB.

Il primo è un OB30 che ogni 100ms con la funzione Move salva la variabile di tipo time usata dal timer nella voce corrispondente nel DB a ritenzione.

L'altro blocco è un OB100, che all'avvio esegue praticamente un Move contrario, prende il valore nel DB e lo scrive nella variabile.

Il tutto funziona, ma il dubbio che ho è che non sia il modo più pulito per farlo. Cosa potete dirmi? Grazie mille in anticipo, spero di essermi spiegato, in caso contrario son qua! :thumb_yello:


Inserita:

Se nel db dove hai dichiarato il dato hai messo la spunta su ritenzione accanto al dato che ti interessa non ti devi preoccupare d'altro.

Ciao

Inserita:

Grazie per la risposta ma non ha fatto altro che aggiungermi ulteriori dubbi :toobad:

Il dato (per esempio: temporitardo) l'ho dichiarato nella tabella delle variabili standard! Il DB l'ho introdotto proprio per andare a effettuare le operazioni di salvataggio. Secondo te dovrei "saltare" il passaggio della tabella delle variabili e lavorare direttamente con il dato immagazzinato nel DB?

Inserita:

Ok, mi sono risposto da solo!

Ho provato a modificare il programma utilizzando direttamente le variabili memorizzate nel database, eliminando quindi i due blocchi di programma superflui (OB30 e OB100) e il tutto funziona. Comunque confermate che questo è "il metodo più opportuno"?

Inserita: (modificato)

Se sei alle prime armi e vuoi fare delle prove,sappi che puoi rendere ritentive delle variabili sia che tu le dichiari nella tabella delle variabili sia che le dichiari in un db.

Questo senza fare nessun genere di MOVE.

Nel caso tu le dichiari in un db,puoi rendere ritentivo o tutte le variabili contenute in quel db o nessuna.

Nel caso le dichiari nella tabella delle variabili standard andrai a decidere una certa area di memoria dentro la quale tutte le variabili dichiarate saranno ritentive,le altre no.

Attenzione all'indirizzamento delle variabili,ti consiglio di lavorare con numeri pari. Ti allego un paio di foto(se riesco) per farti capire

6y9r.jpg

questo è il db

vfez.jpg

e questa è la tabella delle variabili standard. Come vedi puoi fare come vuoi.

sw0o.jpg

Cliccando sull'icona che vedi indicata dalla freccia ti appare la tabella in cui puoi specificare quanta area rendere ritentiva.

Se hai ancora dubbi chiedi pure ;)

Matteo

Modificato: da step-80
Inserita:

Grazie mille Matteo, hai chiarito tutti i dubbi che avevo! :clap:

Per rendere ritentive le variabili nel DB ero già riuscito, mentre quelle nella tabella variabili no, appunto perchè non sapevo bisognasse assegnare una certa area di memoria!

Ora che le procedure sono chiare, la mia domanda diventa: come è più opportuno procedere? Come avrai capito sono alle prime armi e sto ancora studiando per imparare qualcosa. Quando creo una variabile, lo faccio nel DB o nella tabella? Perchè immagino che a livello di "carico di lavoro" e processi all'interno del plc la cosa faccia differenza!

Grazie ancora!

Inserita:

Intanto prova a leggere .

Ti fai un idea del tutto. Usare db o tabelle comincia ad essere soggettivo e dipendente dalla mole di lavoro che devi svolgere.

Inserita: (modificato)

Di nuovo, grazie mille per la disponibilità Matteo, ora mi metto a "studiare" :thumb_yello:

Modificato: da Stef U.

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