Vai al contenuto
PLC Forum


Barcode & Ricette


Giacomo Grassi

Messaggi consigliati

Giacomo Grassi

Buonasera; scrivo per chiedere un vostro aiuto non avendo mai dovuto gestire un problema di questo tipo. 

Ho un lettore Barcode che invia al Plc un codice identificante un prodotto da lavorare; ad ogni codice "battuto" il Plc deve caricare in macchina sette dati di lavorazione.

Fino ad oggi ho sempre usato la gestione delle ricette (perchè è di questo che si parla) con la pagina predefinita dell'Hmi; ora però devo scrivere tutto nel Plc.

Quindi, per ricapitolare, i codici che identificano i prodotti da lavorare saranno circa cento e ad ogni codice devo associare sette dati diversi per le varie lavorazioni.

Non so come procedere e avrei bisogno del vostro aiuto.

 

Grazie.

Link al commento
Condividi su altri siti


Crei un "tipo di dati" con struttura con i dati di una ricetta.
In un DB crei un array di 100 elementi del "Tipo di dati" della ricetta.
Punti alla ricetta con un indice.

 

Oppure, crei le ricette nel pannello operatore, e tramite ordini da PLC effettui il cambio ricetta.

Link al commento
Condividi su altri siti

Giacomo Grassi

Ciao batta;Grazie per le prime indicazioni....

ho creato un Db (DbRicette) contenente un Array[1..100] of Struct; la struttura è composta da 7 dati; ho creato un secondo db (DbRicettaDiLavoro) contenente un'unica Struct con i medesimi dati che rappresenta il Db dei dati effettivi di lavoro; ho definito una variabile di tipo Int dove caricare l'indice dell'Array (IndiceRicetta). Con una Move sposto la ricetta definita dall'indice nella ricetta di lavoro.

La domanda è: come faccio ad associare all'indice dell'Array (intero da 1 a 100) il codice in arrivo dal Barcode ? 

Potresti indicarmi quali sono questi "ordiini da Plc" per far eseguire al pannello il cambio ricetta ?

 

Grazie ancora.

 

(DbRicette)

 

DbRicette.jpg.b81994d9f5af771f4c557b853d55f634.jpg

 

(DbRicettaDiLavoro)

 

DbRicettaDiLavoro.jpg.a8941605b4afbb67dcaa758b23613dd0.jpg

 

 

RicettaRichiamataInRicettaLavoro.jpg.6a98340e2df756163b7ab3796edd906d.jpg

 

 

Link al commento
Condividi su altri siti

Cesare Nicola
8 ore fa, Giacomo Grassi scrisse:

La domanda è: come faccio ad associare all'indice dell'Array (intero da 1 a 100) il codice in arrivo dal Barcode ? 

Potresti indicarmi quali sono questi "ordiini da Plc" per far eseguire al pannello il cambio ricetta ?

Non conosco gli ordini da PLC, non posso aiutarti. Per associare il puntatore al codice del barcode, penso tu debba fare 100 confronti tra stringhe (o valori, se il barcode ti restituisce un valore): se il codice è "pippo" indice vale 1, se il codice è "pappa" indice vale 2, ecc. Il problema, se ho ben capito la tua applicazione, è che l'associazione tra codice e indice ricetta non deve mai variare, altrimenti il tuo confronto non funziona più. Cioè, se domani al codice "pippo" deve corrispondere l'indice 5, sei fregato. Idem se, viceversa, al codice 1 domani dovrà essere associato "peppe" e non più "pippo". L'ideale sarebbe che oltre ai sette dati, nella ricetta ci sia il codice che ci aspetta dal barcode: con un ciclo FOR, allora fai il confronto tra il codice letto dal barcode e i 100 dati della struttura in cui è memorizzato il codice. Quando il FOR trova nella struttura il codice uguale a quello letto, quella è la ricetta che ti serve. In questo modo dai la possibilità all'operatore o chi per esso, di associare un qualunque codice a qualunque ricetta.

Link al commento
Condividi su altri siti

io farei così:

1) sul fronte di lettura del segnale di ricezione barcode alzerei un bit

2) questo bit è in lettura ciclica su HMI con limite inferiore e superiore uguale a zero

3) al superamento dei limiti metterei uno script che contiene sia la lettura del set di dati puntato al nome della ricetta che il reset del bit

4) valuterei il valore di ritorno della funzione per far apparire la popup con "avvenuto con successo" oppure "caricamento fallito"

5) se avvenuto con successo mi leggo i dati e li utilizzo per i miei controlli / attuatori ecc altrimenti blocco il sistema e sputo fuori il pezzo oppure blocco il flusso o qualche altra diavoleria.

6) ci metti tutto quello che vuoi tu in cascata.....

 

ah, ovviamente nel pannello ci devi mettere tutte le ricette che ti servono coi dati..

Link al commento
Condividi su altri siti

Giacomo Grassi

Ciao batta;Grazie per le prime indicazioni....

ho creato un Db (DbRicette) contenente un Array[1..100] of Struct; la struttura è composta da 7 dati; ho creato un secondo db (DbRicettaDiLavoro) contenente un'unica Struct con i medesimi dati che rappresenta il Db dei dati effettivi di lavoro; ho definito una variabile di tipo Int dove caricare l'indice dell'Array (IndiceRicetta). Con una Move sposto la ricetta definita dall'indice nella ricetta di lavoro.

La domanda è: come faccio ad associare all'indice dell'Array (intero da 1 a 100) il codice in arrivo dal Barcode ? 

Potresti indicarmi quali sono questi "ordiini da Plc" per far eseguire al pannello il cambio ricetta ?

 

Grazie ancora.

 

(DbRicette)

 

DbRicette.jpg.b81994d9f5af771f4c557b853d55f634.jpg

 

(DbRicettaDiLavoro)

 

DbRicettaDiLavoro.jpg.a8941605b4afbb67dcaa758b23613dd0.jpg

 

 

RicettaRichiamataInRicettaLavoro.jpg.6a98340e2df756163b7ab3796edd906d.jpg

 

Grazie ad entrambi; credo che userò il metodo proposto da Cesare inserendo quindi nella struttura un dato tipo "String" oltre agli altri sette dati andando poi a confrontare il codice appena battuto con gli altri cento memorizzzati nella struttura.

 

Ancora una volta il Forum non ha deluso.....

 

Grazie ancora a tutti.

 

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