Jump to content
PLC Forum


multiplex in un dato ricetta


vergalabs
 Share

Recommended Posts

vergalabs

Ciao

avrei la necessità di dover estrarre solo una parte del set dati di una ricetta.

Devo gestire il funzionamento di una macchina a "fasi" cioè le operazioni che deve effettuare sono sempre le stesse ma con parametri differenti all'interno di un ciclo di tot fasi.

avevo pensato di fare tutto con il plc (cpu 1215) creando diverse db per ogni ricetta contenete i dati di ogni singola fase creati con una struttura dati e poi tramite un giro di poke _blk mi estraevo e appoggiavo in una db di lavoro i dati della fase attualmente in lavorazione ma purtroppo la memoria a ritenzione della cpu non è sufficiente.

Quindi aimè devo utilizzare la gestione ricette dell hmi (tp900 confort), ho creato la db nel plc dove l'hmi trasferirà tutti i dati della ricetta ma il problema stà nella modifica della ricetta, ho creato una pagina contenete i 10 dati che compongono una fase che però possono essere ripetuti per 15 fasi.

Ad esempio param_da 1 a 10 del set dati ricetta= fase 1,param_da 2 a 20 del set dati ricetta= fase 2

Come posso parametrizzare i dati, ho provato a mettere in multiplex le variabili ma poi non vengono accettate all'interno della ricetta.

l'unica idea che mi viene è quella di creare più pagine per ogni fase con all'interno gli indirizzi di ogni fase della db di lavoro ma non mi sembra un gran lavoro

idee/suggerimenti ?

Link to comment
Share on other sites


Io lo penserei facile da usare per l'operatore, magari con un paio di tasti freccia su/giù o dx/sx. Questi tasti potrebbero incrementare un indice che è la tua fase e che attua un refresh della pagina in cui si aggiornano i vari campi che sono dei vettori dichiarati come ad esempio tempo1(15)..... Il multiplex va bene per l'uso sulla pagina, nella ricetta li usi assoluti.

Edited by drn5
Link to comment
Share on other sites

vergalabs

grazie drn5 ma non ho ben capito quello che mi vuoi dire, quello che mi proponi io l'avrei fatto se i dati delle ricette risiedevano nella db del plc.

vorrei fare proprio quello che mi dici ma utilizzando la gestione ricette del pannello non so come fare 

Link to comment
Share on other sites

Nella dichiarazione della ricetta hai ad esempio il campo

Tempo_fase2 che punterà al tag hmi tempo_fase(2) il quale punterà nel PLC al db_fase.tempo(2). A livello pagina nel refresh che menzionavo sopra il campo di I/O del tempo farà riferimento al tag tempo_fase(fase) dove fase incrementa o decrementa con i tasti freccia

Link to comment
Share on other sites

vergalabs

ho provato a fare come dici (era quello che avevo chiamato variabile multiplex) mettendo una variabile hmi interna che si incrementa di un valore coerente con la db di lavoro alla pressione di un pulsante ma se creo così il tag poi non me lo accetta nella ricetta come tag associato al dato ricetta

 

il mio dato ora è simbolico e viene accettato come dato 

DB_Parametri_Ricetta.12_22

 

ma se lo creo assoluto "multiplexato"

%DB200.DBD[visualizza numero fase]

 

non mi viene accettato

Link to comment
Share on other sites

Non ho ancora capito cosa devi fare, ma la ricetta non dovrebbe contenere tutti i dati? Poi sarà il PLC che andrà a leggere, fase per fase, i dati che servono.

Link to comment
Share on other sites

image.png.2e48b4d40cb2a94887d8273055793631.png

 

image.png.c219fff26c7784049473388aaaf872ca.png

 

image.thumb.png.8dc9166afe0e6faa912fd7292da03834.png

 

quando definisci il tag dell'elemento ricetta devi farlo puntando il plc e non il tag dell'hmi... forse è li che ti incarti... 

Link to comment
Share on other sites

vergalabs

può essere ora provo ma la mia db non è composta da array ma da dati singoli ripetuti per ogni singola fase

Link to comment
Share on other sites

vergalabs
1 ora fa, batta ha scritto:

Non ho ancora capito cosa devi fare, ma la ricetta non dovrebbe contenere tutti i dati? Poi sarà il PLC che andrà a leggere, fase per fase, i dati che servono.

si la db contiene tutti i dati della ricetta ripetuti per ogni singola fase 30 dati misti int,real,bool per 15 fasi, io vorrei una pagina du hmi su cui visualizzare i dati e modificare i dati di ogni singola fase

Link to comment
Share on other sites

Beh... o ristrutturi in array o fai 15 pagine o ti scrivi uno script che fa il lavoro "sporco"..

Ovviamente la soluzione più corretta è quella dell'uso degli array, le 15 pagine sono una soluzione dilettantesca, lo script raffazona,

Edited by drn5
Link to comment
Share on other sites

vergalabs

 

1 minuto fa, drn5 ha scritto:

Beh... o ristrutturi in array o fai 15 pagine o ti scrivi uno script che fa il lavoro "sporco"..

ecco dov'è l'inghippo...... facciamo che mi creo un po di array che facciamo prima, lo script sarebbe troppo complicato non saprei da dove cominciare per una funzione così

 

Link to comment
Share on other sites

vergalabs

però così mi si complica il programma plc, prima tramite un poke_blk estraevo i dati consecutivi che componevano una fase, se invece di un'array creo una struttura dati dici che funziona lo stesso ?

 

Link to comment
Share on other sites

vergalabs
Posted (edited)

sto facendo delle prove forse complice l'ora tarda non riesco, ho creato la db con gli array ma poi nell'hmi sbaglio qualcosa che mi sfugge perchè invece che scrivere il dato nella ricetta me lo scrive direttamente nella db.

ora basta, per adesso grazie degli aiuti di tutti, domani se sarete ancora disponibili continuo la mia avventura 

 

Edited by vergalabs
Link to comment
Share on other sites

per il poke è trasparente l'area da copiare. verifica solo che la struttura e la posizione degli dati non cambi.

Link to comment
Share on other sites

4 minuti fa, vergalabs ha scritto:

sto facendo delle prove ma forse complice l'ora tarda ma non riesco ho creato la db con gli array ma poi nell'hmi sbaglio qualcosa che mi sfugge perchè invece che scrivere il dato nella ricetta me lo scrive direttamente nella db

Non so come hai strutturato il programma, ma è chiaro che i dati vengono presi dal db e vanno nella ricetta quanto scrivi la ricetta e dalla ricetta nel db quando la leggi...

Link to comment
Share on other sites

vergalabs

si il poke è chiaro, quindi mi dici che se creo una struttura ivece di un array dovrebbe funzionare lo stesso ?

 

 

1 minuto fa, drn5 ha scritto:

Non so come hai strutturato il programma, ma è chiaro che i dati vengono presi dal db e vanno nella ricetta quanto scrivi la ricetta e dalla ricetta nel db quando la leggi...

il problema è che me li scrive subito senza caricare nessuna ricetta.

Se sei ancora disponibile continuiamo domani ora il turno finisce 

Link to comment
Share on other sites

Ma cosa usi per gestire le ricette?

Il controllo "Recipe view " (ho il Tia in inglese) coi suoi bei pulsanti Download/Upload o lo fai tramite script con le chiamate GetDataRecordFromPLC e SetDataRecordToPLC ?

 

Purtroppo domani sono via...

Link to comment
Share on other sites

11 ore fa, vergalabs ha scritto:

però così mi si complica il programma plc, prima tramite un poke_blk estraevo i dati consecutivi che componevano una fase, se invece di un'array creo una struttura dati dici che funziona lo stesso ?

Diventa anche più semplice. Fai un tipo di dati con tutte le variabili di una fase, e poi fai un array [1..15] of "tipo di dati".
Con un solo move carichi tutti i dati della fase scelta.
Usando il tipo di dati, se devi fare una modifica ti basta modificare il tipo di dati, e tutto il programma si adatta da solo.

Link to comment
Share on other sites

vergalabs
7 ore fa, batta ha scritto:

Diventa anche più semplice. Fai un tipo di dati con tutte le variabili di una fase, e poi fai un array [1..15] of "tipo di dati".
Con un solo move carichi tutti i dati della fase scelta.
Usando il tipo di dati, se devi fare una modifica ti basta modificare il tipo di dati, e tutto il programma si adatta da solo.

si è vero, lato plc non ho problemi ma con la gestione ricette dell'hmi ho qualche difficoltà ora mi ci metto ancora

 

Link to comment
Share on other sites

vergalabs

image.png.e757a455a9d365b2301dfc7ea02d7e13.png

image.thumb.png.44f2fe8bb17bf6910dbd5633c16d77eb.png

 

fino a qui nessun problema ma poi non capisco l'ultimo passaggio fatto da drn5

image.png.492ad4dc0bec60417ef2eb6e0362e7b2.png

 

se negli elementi ricetta punto all'array creato nella db ricetta mi dice "non è ammesso l'utilizzo di variabili con indirizzamento indiretto"

Link to comment
Share on other sites

vergalabs

sono riuscito a inserire le variabili come descritto da drn5, ma c'è ancora qualche problema, se cambio il valore di "fase" viene scritto solo il valore dell'array 1.

scusate la ia tontaggine ma se nel "campo i/o" della pagina gli dico di puntare al dato 1 dell'array chi mi fa lo switch del dato quando cambio il valore di fase ?

Link to comment
Share on other sites

vergalabs

non ne vengo fuori risolvo una cos e ne salta fuori un'altra, ora riesco a scrivere tutti i dati nell'array modificando il valore di "fase" ma i dati vengono scritti subito nella db e non nel set dati della ricetta.

non sto usando la vista ricette ma tramite un pulsante carico il set di dati richiesto e poi apro la pagina con tutti i dati da modificare, quelli che dovrebbero essere shiftati dall'indice "fase" 

 

Link to comment
Share on other sites

4 ore fa, vergalabs ha scritto:

ma i dati vengono scritti subito nella db

Il che è giusto visto che il DB è collegato , almeno immagino, agli oggetti di I/O nella pagina che utilizzi per inserire i valori

4 ore fa, vergalabs ha scritto:

non nel set dati della ricetta.

Per scrivere fisicamente la ricetta , visto che non usi il controllo del TIA, devi richiamare la "GetDataRecordFromPLC" che ti trasferisce i valori del DB nel database file del HMI (SD o altro da te definito nella ricetta stessa)

 

Link to comment
Share on other sites

vergalabs

si ma il bello è che scrive direttamente nella db solamente i dati che ho aggiunto dichiarandoli come multiplex, gli altri normali no.

così com'è adesso posso visualizzare modificare e salvare ogni ricetta senza trasferire nessuna dato, penso leggendo quello che c'è salvato nel hmi, non capisco perchè non riesco a usare il multiplex. 

se invece utilizzo la vista ricette anche i dati multiplex funzionano correttamente, ma così verrebbe una ricetta lunghissima poco pratica da modificare, volevo rendere questa macchina simile alle altre che però hanno un 300 e le ricette sono salvate nel plc e tutte le modifiche le ho gestite spostando i dati che mi servono all'occorrenza ma come già specificato il 1200 non ha abbastanza memoria a ritenzione 

 

Link to comment
Share on other sites

vergalabs

Visto che il multiplex nei dati ricetta sembra non collaborare e visto che ci ho perso già troppo tempo ho deciso di seguire un'altra strada.

I set di dati delle ricette sono salvati nell'hmi ma utilizzo il poke_blk per trasferire i dati relativi alla fase dalla "db ricetta" alla "db modifica fase" per poterli modificare, salvare e ritrasferire nella "db ricetta" per poter essere salvati di nuovo nel set dati dell'hmi alla fine delle modifiche.

Così facendo la pagina hmi di modifica fase accede solo ed esclusivamente ad una db e i dati a ritenzione del plc sono limitati a quelli della sola ricetta attualmente in produzione.

Attualmente il set dati sono salvati nella memoria flash dell'hmi ma valuterò se inserire una sd, nella mia azienda gli hmi sono in prima linea e non hanno vita facile.

Grazie a tutti per l'aiuto

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...