Vai al contenuto
PLC Forum


Memorizzazione dati rilevati per creazione profili e successivo confronto...


Maverick85vr

Messaggi consigliati

Buongiorno a tutti! :-)

Premetto che sono nuovo del mondo Siemens e quindi sono piuttosto ignorante in merito alle possibilità offerte dai suddetti dispositivi, spero quindi possiate darmi qualche dritta in tal senso.
Sostanzialmente, ho implementato un software che esegue l'acquisizione e archiviazione (momentaneamente in struct), di dati riguardanti le caratteristiche di alcuni manufatti, dati che sono ricavati ovviamente mediante appositi sensori interfacciati al PLC mediante IO link Master.

La mia idea era quella di avere due modalità di lavorazione:


Apprendimento:
eseguo un certo numero di "scansioni" del manufatto acquisendo i valori dai sensori e ricavandomi una media dei valori di interesse che poi vorrei memorizzare in qualche "archivio", come andassero a rappresentarmi un profilo, una categoria, memorizzata con un identificativo;

Lavoro:
richiamo una delle categorie memorizzate durante la fase di apprendimento, eseguo la scansione di un manufatto e verifico se il suddetto manufatto può appartenere alla categoria selezionata (quindi se i valori che i sensori mi restituiscono, sono entro i limiti fissati dalla categoria, a meno di una certa tolleranza fissata) o meno, restituendo un responso all'utente.

La mia domanda è, come e dove posso eseguire una creazione/memorizzazione di queste "categorie di valori", rendendole poi richiamabili all'utente al momento della fase di lavorazione? Quali risorse mette a disposizione Siemens per realizzare un qualcosa di simile? Ricette? Datalog? Ho sbagliato io a immaginare il progetto in questo modo?

Vi sarei grato se riusciste a darmi qualche spunto o mettermi sulla retta via,
Grazie anticipatamente a tutti,

Buona giornata!

Link al commento
Condividi su altri siti


Io direi con ricette (che non sono gestite dal PLC ma da un HMI/SCADA collegato al PLC) o in blocchi dati del PLC.

Personalmente preferisco le ricette.

Link al commento
Condividi su altri siti

Buongiorno Batta!
Grazie dei aver risposto e del suggerimento, era un'idea che avevo ipotizzato anch'io quella delle ricette e su cui devo sicuramente documentarmi bene vista la mia inesperienza. Il riferimento che fai invece all'utilizzo di blocchi del PLC potresti spiegarmelo più approfonditamente? Al momento, come dicevo, ho memorizzato un certo numero di "categorie", per così dire, in struct definite in un DB...durante la fase di apprendimento, scrivo i valori caratteristici delle categorie mediante l'utilizzo di un DEMUX tramite cui seleziono la categoria in cui andare a scrivere. Durante la fase di lavoro invece, vado a prelevare i valori caratteristici della categoria tramite un MUX, li carico in una struct "di lavoro" che utilizzo per fare i confronti. Ovviamente, attualmente è tutto statico, nel senso che non do all'utente la possibilità di creare o eliminare categorie nuove, ma solo di scegliere tra quelle già inserite; come potrei ottenere una gestione dinamica a runtime di queste categorie?

Vorrei chiederti inoltre un chiarimento riguardo le ricette:
nell'eventualità futura di interfacciare il PLC con un HMI non siemens, c'è la possibilità di implementare un sistema simile alle ricette lato PLC e non dipendendo dall'HMI?

Grazie infinite per il supporto,
spero che possiate aiutarmi 🙂

Buona domenica!

Link al commento
Condividi su altri siti

Più che l'utilizzo di MUX e DEMUX, io gestirei un ARRAY di STRUCT, e poi lavori con l'indice dell'array e dei semplici MOVE o, ancora più comodo, scrivendo in SCL.
Per esempio:

MiaRicettaLavoro := MiaRicettaArchivio[NrRicetta];

MiaRicettaArchivio[NrRicetta] := MiaRicettaLavoro;

 

Ecco che con semplicissime istruzioni puoi trasferire la ricetta in lavoro o viceversa.

 

Quote

nell'eventualità futura di interfacciare il PLC con un HMI non siemens, c'è la possibilità di implementare un sistema simile alle ricette lato PLC e non dipendendo dall'HMI?

Non ho capito cosa intendi. Se gestisci le ricette nel PLC, come nell'esempio sopra riportato, è ininfluente il tipo di pannello operatore che utilizzi.
Se gestisci le ricette nel pannello operatore, ogni pannello operatore ha un suo modo di gestire le ricette.

Link al commento
Condividi su altri siti

Se le ricette le crei come una array non sei vincolato al pannello. Basta che il pannello ti lascia visualizzare la memoria che ti serve. Io faccio così anche con i pannelli Siemens così se implementi web server riesci comodamente importare o esportare i dati. Esempio array di variabile acqua (1/4), sciroppo (1/4), gas (1/4) poi nella variabile ricetta ci sarà un numero da 1 a 4 che serve a puntare il valore che deve usare.

Link al commento
Condividi su altri siti

Ciao,

visto che mi hai "richiesto" in questa discussione ... eccomi qui.

Le ricette con i pannelli Siemens sono abbastanza semplici da utilizzare: se cerchi una mia discussione con titolo "Condividiamo", trovi un esempio.

Il problema è che scrivi che può essere che non utilizzerai un pannello Siemens: a questo punto o conosci quale pannello utilizzerai, e quindi dovrai imparare ad utilizzare le ricette su quel pannello, oppure fai come suggerisce Batta, che ti ha dato un ottimo consiglio. Ricordati solo che, pannello o PLC, devi sempre avere abbastanza memoria per salvare il tutto.

Oltre a quello che ti ha detto Batta, c'è poco altro da aggiungere: cerca Siemens Sios con google (contiene tutti i manuali Siemens e parecchio altro materiale), prendici un pò di confidenza, consulta diverse guide e, dopo qualche tempo, non sarai più un novizio.

Per il resto il forum è sempre qui ...

Link al commento
Condividi su altri siti

Ciao!

Grazie mille a tutti dei suggerimenti e delle preziosissime dritte. Siete grandissimi. 😉
Effettivamente l'idea di Batta è molto buona e vedrò di seguirla abbandonando i MUX/DEMUX e passando attraverso un vettore indicizzato...
Vi chiedo soltanto due chiarimenti a riguardo:
 

primo ->
se volessi dare all'utente la possibilità di salvare le categorie create e relativi dati in caso di problemi al PLC, ecc...dovrei necessariamente passare dal gestore di ricette vero e proprio o dal datalog? O è fattibile anche seguendo la strada dell'array indicizzato?


secondo ->

se io volessi gestire l'inserimento di nuove ricette in maniera dinamica da parte dell'utente, tramite il sistema dell'array indicizzato di struct suggerito da Batta, potrei farlo?
Mi spiego: ipotizzo che le categorie non siano statiche e predefinite, ma l'utente possa a runtime creare una nuova categoria (con identificativo e relativi valori), il che significherebbe andare a popolare la struct relativa ad una nuova posizione del vettore...sarebbe possibile gestire qualcosa di simile?

Vi ringrazio ancora di tutto e sicuramente seguirò il consiglio di Drugo sul documentarmi e recuperare le innumerevoli lacune che ho.

Buona giornata.

Link al commento
Condividi su altri siti

Quote

Effettivamente l'idea di Batta è molto buona

È una prassi comune, non ho inventato niente di nuovo.

 

Quote

se volessi dare all'utente la possibilità di salvare le categorie create e relativi dati in caso di problemi al PLC, ecc...dovrei necessariamente passare dal gestore di ricette vero e proprio o dal datalog? O è fattibile anche seguendo la strada dell'array indicizzato?

 

Se vuoi metterti al riparo da eventuali guasti del PLC, devi per forza salvare i dati da qualche altra parte. La cosa più semplice è sicuramente gestire le ricette nel pannello operatore. Quasi tutti i pannelli operatore poi permettono di salvare le ricette su un supporto esterno (chiavetta USB o altro).

 

Quote

se io volessi gestire l'inserimento di nuove ricette in maniera dinamica da parte dell'utente, tramite il sistema dell'array indicizzato di struct suggerito da Batta, potrei farlo?

Un pannello operatore di solito prevede già tutti i comandi per salvare, copiare, creare ricette. Il limite poi di quante ricette dipende dal pannello operatore.
Per fare tutto nel PLC, dovresti comunque dimensionare il DB dove sono salvate le ricette in modo opportuno. Per esempio, se crei un DB con un array di 100 ricette, non puoi, dinamicamente, aggiungere la ricetta numero 101 (in realtà si può anche fare, ma è un po' complicato, quindi abbandonerei l'idea in partenza).

Puoi però fare tutto quello che vuoi con le 100 ricette previste in origine.

Link al commento
Condividi su altri siti

Buongiorno a tutti!

Grazie mille Batta di questi ulteriori chiarimenti. Qualora dovessi affidarmi ad un pannello non Siemens, vedrò di documentarmi sul sistema di gestione delle ricette che prevede e di realizzarlo eventualmente.
Se volessi però gestire tutto lato Plc, come mi dicevi, io dovrei creare un array di, ad esempio, 100 ricette...definendomi quindi un tipo dati apposito che contenga le informazioni necessarie; ti chiedo però un chiarimento: per renderlo gestibile in toto da pannello, con la possibilità quindi di definire un identificativo per la ricetta e altre informazioni editabili, come potrei agire?
Se creassi un menu a tendina I/0 ad esempio, con la possibilità per l'utente di selezionare la categoria da gestire (sfruttando ovviamente l'indice array selezionato), potrei legare a questo menù a tendina un testo dipendente dalle stringhe che rappresentano l'identificativo delle varie categorie (che devo rendere modificabili a runtime dall'utente), anziché un elenco testi statico? C'è qualcosa che facilita questo tipo di gestione o va implementato tutto da zero?

Grazie mille ancora.
Buona domenica.

Link al commento
Condividi su altri siti

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