Vai al contenuto
PLC Forum


creare ricette


peratoner

Messaggi consigliati

ciao a tutti 

come posso creare facilmente ricette?Mi spiego meglio devo creare una serie di tabelle con diverse tipologie di valori int  time real o lreal che mi faranno da valori limite nel mio programma e devo poter selezionare quale tabella voglio.Pensavo di poter usare dei richiami array su delle tabelle struct ma.... boh non mi funziona c'e qualche altra strada oppure dove sbaglio ciao ragazzi grazie

Link al commento
Condividi su altri siti


Hai un pannello operatore, di solito li c'è già implementato tutta la gestione delle ricette, è il modo più semplice, migliore e già pronto. Inoltre puoi avere anche la possibilità di esportare ed importare le ricette per modificarle off line.

Se invece vuoi gestirle a plc, io avevo creato una DB con la ricetta in produzione, ed una serie di DB uguali dove salvo il singolo prodotto, quando cambio ricetta, copio la DB attuale nella DB del prodotto corrispondente, poi copio la DB del nuovo prodotto nella DB di lavoro.

Link al commento
Condividi su altri siti

Volevo gestire da plc quindi creo due db con tipo numero pezzi valori time ecc ma come come faccio poi a richiamarli nel programma non mi è molto chiaro ciao

Link al commento
Condividi su altri siti

Io ho creato una DB con la ricetta che sto usando in questo momento in produzione e che uso nel programma, poi ho creato una serie di DB uguali alla prima una per ogni prodotto, che contiene tutti i parametri di quel singolo prodotto.

Nel momento che devi cambiare produzione sposti i dati del prodotto che vuoi produrre nella DB della ricetta attuale.

Quindi non cambi la DB ma cambi i valori contenuti dentro la che usi copiandoli dalle DB dei prodotti.

Per fare questo di solito uso il BlockMove SFC20 nel S7 300, ma mi sono accorto adesso che sto scrivendo nella sezione del 1200 che non conosco ancora, ma che sicuramente avrà una istruzione analoga.

Link al commento
Condividi su altri siti

Con il 1200 la copia di un intero array, di una intera struttura o di un intero DB si può fare con un semplice MOVE.

Basta che sorgente e destinazione siano uguali non solo come dimensione, ma anche come formato di tutte le variabili contenute.

Volendo, anziché creare un DB per ogni ricetta si potrebbe creare un unico DB con un array di STRUCT.

Ogni STRUCT contiene tutte le variabili della ricetta.

Potresti definire la struttura con indice zero come ricetta in lavoro, e le altre come ricette memorizzate.

Link al commento
Condividi su altri siti

ho creato in un db una Array con tipo dati struct nel quale metto un dato int per conteggio è uno time per il tempo di un ipotetico forno.ma poi non riesco ho chiamarli insieme riesco singolo dato ma come faccio a richiamare la ricetta Array 1 con time x e conteggio y grazie ragazzi

Link al commento
Condividi su altri siti

Tu nel tuo Programma utilizzi sempre la ricetta 0, sono i valori dei dati della ricetta 0 che cambiano con i valori della ricetta richiesta.

Quando devi cambiare ricetta fai un MOVE dei dato della struttura es.5 nei dati della struttura 0 quella che usi nel tuo programma.

 

Link al commento
Condividi su altri siti

La mia mail XXXXXXXX@gmail.com

*************************NOTA DEL MODERATORE*************************

 

Come da regolamento, è vietato inserire all'interno dei post, indirizzi email privati.

Modificato: da Giuseppe Signorella
Link al commento
Condividi su altri siti

 

 

 

Non c'è molto da inviare, quando vuoi cambiare ricetta devi fare un move della struttura selezionata nella ricetta 0 quella che usi nel programma.

Nell'esempio:

Carico nella variabile int RicettaNuova il numero della ricetta che voglio fare,

Alzo il bit CambioRicetta e nella struttura Ricetta[0] quella che usi dentro il tuo programma per gestire la macchina, ti trovi i parametri del prodotto desiderato salvati nella struttura Ricetta[RicettaNuova].

Move.thumb.png.d68e199490c4fd6a29ab12e2e

 

P.S. scusate ho aggiunto per sbaglio quella barra in alto grigia con "rileva contenuti nascosti" e non so come toglierla

Modificato: da acquaman
Link al commento
Condividi su altri siti

Scusa ma non mi è ancora chiaro io nella mia db ho una Array di struct nel quale ci sono i due valori int e time  ma non riesco a selezionare l'array 0 con i valori struct int e time contemporaneamente  ok devo spre usare la ricetta 0 nel quale cambio i valori ma non riesco a cambiarli contemporaneamente abbi pazienza

Link al commento
Condividi su altri siti

Non so se ho capito:

Tu usi nel tuo programma le 2 variabili esempio come '"Ricette".Ricetta[0].Tempo' come set point di un temporizzatore e la variabile '"Ricette".Ricetta[0].Conteggio' in un confronto.

Adesso tu devi in funzione di una selezione X caricare i VALORI di della ricetta[X] contenuti in un'altra struttura analoga dentro la tua struttura Ricetta[0].

Per fare ciò devi usare un puntatore 'RicettaNuova' dove all'interno c'è il numero della ricetta (struttura) che contiene i parametri che vuoi usare, e con questo puntatore fare una copia dei VALORI dalla struttura "Ricette".Ricetta[RicettaNuova] e caricarli nella struttura "Ricette".Ricetta[0], questa operazione la fai con il move nella figura sopra.

Es.

Ricetta 1

Tempo:500ms

Conteggio 123

Ricetta 2

Tempo:1s500ms

Conteggio 739

Ricetta 3

Tempo:2s

Conteggio 573

Se carico il valore 2 dentro il puntatore 'RicettaNuova' e alzo il bit 'CambioRicetta' nella struttura della "Ricette".Ricetta[0] ci saranno i valori:

Tempo:1s500ms

Conteggio 739

Se carico il valore 3 dentro il puntatore 'RicettaNuova' e alzo il bit 'CambioRicetta' nella struttura della "Ricette".Ricetta[0] ci saranno i valori:

Tempo:2s

Conteggio 573

e cosi via.

Nel move in che ti ho messo nell'esempio copio l'intera struttura struttura in un'altra, quindi copio tutti i parametri da una ricetta a quella di lavoro in un solo colpo.

Meno male che non devi usare i puntatori del 300.

Link al commento
Condividi su altri siti

  • 2 years later...
Quote

Batta mi puio fare un esempio con istruzioni kop?

Non saprei cos'altro aggiungere a quanto già scritto da "acquaman".

C'è l'esempio in KOP. C'è una descrizione dettagliata di quello che succede. Cos'è che ancora non ti è chiaro?

Link al commento
Condividi su altri siti

Nel DB crei un ARRAY di STRUCT.

Ogni STRUCT contiene le variabili della ricetta.

Per seguire sempre l'esempio di Acquaman:

 

image.png.ebcc0dcf6a42c07429a15d558609cde0.png

 

Le variabili ti basta dichiararle nel primo elemento dell'array, poi fa tutto da solo il TIA.
Oppure ti puoi creare un "Tipo di dati" e usare quello al posto di "Struct": Array[0..5] Of "MioTipoDiDati".

Link al commento
Condividi su altri siti

Quote

ma da dove salta fuori ricetta nuova?

È una variabile! Chiamala come vuoi.
Tu assegni un valore a questa variabile, e carichi la ricetta corrispondente.

Se la variabile "RicettaNuova" vale 1, significa che copi tutto l'elemento 1 dell'array nell'elemento 0 (che, nell'esempio, sono i valori in lavoro).

Se la variabile "RicettaNuova" vale 2, significa che copi tutto l'elemento 2 dell'array nell'elemento 0, e così via.

Link al commento
Condividi su altri siti

Cesare Nicola

Ottoz, senza offesa, ma mi sembra che stai chiedendo un po' troppo ad un forum: devi attrezzarti di un PLC e PC o HMI, studiare gli . o tutorial e fare tante prove; magari usa il simulatore di TIA se non riesci ad avere un PLC. Ti hanno già detto molto, ma nessuno può fornirti una gestione ricette completa, pronta all'uso, solo con dei post su un forum. Oltretutto, sbattendoci la testa di tuo sarai poi pienamente padrone di quella funzionalità e potrai farci debug e/o modifiche in piena libertà e consapevolezza. Senza offesa e senza polemica, ripeto.

Link al commento
Condividi su altri siti

  • 2 weeks later...

Sono riuscito a fare quello che mi avete detto e vi ringrazio per la vostra disponibilita   e  pazienza  ma avrei bisogno di chiedervi  ancora una cosa sulle ricetta  .appena possibile

Un  caro saluto   

Link al commento
Condividi su altri siti

  • 2 weeks later...
Giuseppe Signorella

Ottoz, ho provveduto a separare il tuo ultimo intervento creando una nuova discussione. Il quesito posto non è attinente con la discussione.

Ti ho anche notificato la creazione della discussione con un MP.

Ho più volte cestinato il tuo (identico) intervento, ma tu imperterrito continui a ripeterti qui.

Per quell'argomentazione, ti invito a proseguire all'interno della nuova discussione. 

Ciao  

 

 

 

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