Vai al contenuto
PLC Forum


Weintek: Ricerca ricetta


Fox

Messaggi consigliati

Buonasera,

Ho realizzato delle ricette su pannelli operatore weintek 8071ie.

La prima variabile nella ricetta è il nome del prodotto composta da un dato di tipo ACSII a 10 Word.

Ora il mio problema è che una volta inserite le ricette l'operatore dovrà richiamarle con il nome del prodotto che sta per mandare in produzione nella macchina.

Essendo molti i nomi ho la necessità di fare una ricerca della ricetta.

A questo punto sono bloccato...non so come fare!

Ho anche tentato con una macro che prende il nome, lo trasferisce ad una variabile di appoggio e la confronta con la parola inserita, ma non funziona perché non capisco come indicizzare i nomi delle ricette. Usando RecipeGetData mi seleziona il nome della variabile ma non mi dà la possibilità di indicizzato in modo da confrontarli tutti.

 

Grazie in anticipo a chi mi darà un suggerimento.

 

Modificato: da Fox
Link al commento
Condividi su altri siti


Perchè una ricetta della ricetta? Hai un campo impostato come variabile stringa ti basi su quello per fare la ricerca.L'intefaccia grafica ti permette di visionare i campi delle ricette presenti e ovviamente  se hai configurato come campo anche il nome della ricetta lo vedrai nell'interfaccia grafica Weintek, questo magari non ti serve ma a te serve una funzione Ricerca in base a un nome impostato. Mi sa che devi crearti una Macro che scorra dalla prima all'ultima ricetta presente tramite il campo RECPE/Selection all'interno delle variabili Local HMI, carichi ogni singola ricetta i variabili di appoggio per la ricerca, confronti il campo stringa che cerchi se uguale ovviamente carichi quella. Il problema è che non so se c'è un campo che ti determina quante ricette sono presenti per il tipo di ricetta che cerchi, insomma forse non puoi sapere quanto potrà essere lungo il tuo loop di ricerca

Modificato: da leleviola
Link al commento
Condividi su altri siti

Aggiungo che il campo che ti permette di controllare quante ricette sono presenti dovrebbe essere il campo RECIPE/Count così definisci quante unità ha il tuo loop di ricerca del nome che cerchi

Modificato: da leleviola
Link al commento
Condividi su altri siti

Effettivamente mi hai dato un'idea...con la modifica del selection posso visionare tutti i nomi delle ricette. Di volta in volta confronto con la parola inserita e se corrispondono le memorizzo su delle variabili che visualizzerò a fine ricerca. Poi devo pensare come fare in modo che selezionando un risultato seleziono la ricetta corrispondente per poi caricarla sul PLC...ma ho già una mezza idea.

Domani a lavoro se riesco provo.

Grazie

Modificato: da Fox
Link al commento
Condividi su altri siti

è quello che volevo farti capire, devi farti un loop di ricerca con Selection, quando le variabili stringa corrispondono è il record da caricare. Ovviamente devi avere record con nomi non uguali, è un'eventualità che può accadere, daltronde il sistema salva a numero non controlla cosa vi sta nei campi singoli e il campo stringa relativo al nome è uno dei tanti del singoli record

Link al commento
Condividi su altri siti

Dopo vari tentativi finalmente funziona. Ho capito che la funzione RecipeGetData non funzionava in modo corretto, sostituendola con GetData funziona.

Condivido la macro se a qualcuno serve. Grazie a Leleviola per il suggerimento.

macro_command main()

short var_input[10], var_confr[10], var_risult[100]
short selection = 0
short resultID = 0
short result_number = 0
int count = 0, recordIDcount = 0, recordIDselection = 0, recordIDconfr = 0
bool ok = 0, fail = 1, Compl

GetData(count, "Local HMI", RECIPE, "Ricetta_modelli5.Count") //trasferisco il numero di ricette alla variabile count
GetData(var_input[0],"Local HMI", LW, 100, 10) // trasferisco la stringa della parola da cercare alla variabile di input

SetData(ok, "Local HMI", LB, 10, 1) //trasferisco i bit di segnalazione ai rispettivi bit di visualizzazione
SetData(fail, "Local HMI", LB, 11, 1)

for selection = 0 to count step 1 // Comincio la variazione di selection (numero della ricetta) da 0 al numero di ricette presenti
SetData(selection, "Local HMI", RECIPE, "Ricetta_modelli5.Selection") //Ogni volta che do un valore a selection mi varia il nome della ricetta
GetData(var_confr[0], "Local HMI", RECIPE, "Ricetta_modelli5.Nome_modello") //Trasferisco uno ad uno i nomi delle ricette

if var_input[0] == var_confr[0] and var_input[1]==var_confr[1] and var_input[2]==var_confr[2] and var_input[3]==var_confr[3] and var_input[4]==var_confr[4] and var_input[5]==var_confr[5] then //se almeno le prime cinque lettere corrispondono 
SetData(var_confr[0], "Local HMI", LW, 20, 10) // allora trasferisco il nome che corrisponde alla variabile di visualizzazione
result_number = selection //trasferisco il numero della ricetta corrispondente ad una variabile che mi serve per visualizzarlo
SetData(result_number, "Local HMI", LW, 30, 1) //trasferisco il numero trovato alla variabile di visualizzazione
ok = 1 //accendo una luce verde tramite un bit se la ricerca è andata a buon fine
fail = 0
SetData(ok, "Local HMI", LB, 10, 1) //trasferisco i bit di segnalazione ai rispettivi bit di visualizzazione
SetData(fail, "Local HMI", LB, 11, 1)

end if
next selection

Compl = 0
SetData(Compl, "Local HMI", LB, 12, 1) //porto a zero il bit di ricerca in corso abilitato con il tasto di ricerca

end macro_command

 

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