Vai al contenuto

Weintek e limitazione incremento Jog +


Messaggi consigliati

Inserito:

Buongiorno a tutti ho un problema anzi due.

Voglio limitare la funzione Jog+ nella selezione di un recod per impedire che continuando a premere il pulsante abbinato alla funzione il contatore vada oltre il limite massimo di record disponibili.

Vengo all'esempio pratico.

Ho un Recipe con numero di record variabili. Creo un pulsante al quale abbino la funzione JOG+ e come dispositivo sul quale scrivere imposto LocalHMI > Recipe > Selection. Come incremento imposto 1. Tutto funziona regolarmente se non fosse che raggiunto l'ulimo record disponibile se continuo a premere il pulsante abbinato alla funzione in realtà sembra che il contatore vada avanti anche se non sono presenti ulteriori record. Ovvero se raggiunto l'ultimo record premo altre 2 volte il tasto JOG+, per ritornare a selezionare l'ultimo record devo premere 2 volte il tasto JOG-. Pensavo di impostare dei limiti dinamici utilizzando come limite massimo la funzione Local HMI > Recipe > Count ma il risultato non è quello sperato. Se per esempio imposto come valore 0 il limite su JOG- tutto funziona perfettamente. Però non ho idea di come impostare il limite massimo su JOG+ considerando che non conosco il numero dell'ultimo record disponibile.

Altro problema. Se voglio creare un nuovo record con la funzione Command > 1 è possibile aggiungere un record nuovo vuoto? Attulamente il nuovo record creato mi ripropone i valori inseriti nell'ultimo record.

Grazie per le risposte.

Pietro

Simone.Salarsi
Inserita:

Recipe.count contiene il numero di ricette presenti nel database, quindi la tua ultima ricetta sarà sempre Count-1 siccome l'indice parte da zero.

Pertanto se tu hai 4 ricette la i tuoi limiti devono essere 0 ( valore fisso) e 3 ( Count-1). 

Io per fare questa cosa ho fatto un piccolo script ed uso il valore calcolato come limite alto

 

macro_command main()

short Count, CalcCount

GetData(Count, "Local HMI", RECIPE, "Prodotto.Count") // leggo numero attuale di ricette presenti nel DB

// aggiorno la word che utilizzo come valore di controllo nell'action trigger
// per lanciare la macro (RECIPE.Prodotto.Count <> LW190 allora lancio la macro)
SetData(Count, "Local HMI", LW, 190, 1) 

if Count >0 then
	CalcCount = Count -1
else 
	CalcCount = 0
end if

SetData(CalcCount, "Local HMI", "RecipeActualCount", 1)

 

 

Per il secondo problema invece non lo so, devo provare a guardare ma mi viene da pensare che non sia possibile.

Smanettone15
Inserita:

Ok la tua macro funziona ma ho riscontrato un limite ( non della macro). Quando utilizzo la funzione JOG+ oppure JOG- viene selezionato il record relativo al rispettivo numero progressivo di " Count " ( identificativo del record). Nel mio DB è presente un campo numerico da 0 a 999 che identifica il numero della ricetta. I numeri non sono sequenziali ma possono avere degli intervalli vuoti anche di decine di posizioni ( 001, 002, 023, 140, 231,232, etc). Ovviamente quando inserisco la nuova ricetta gli viene assegnato auomaticamente un nuovo numero ID del recod ma questo numero mai corrisponderà alla ricetta. Di conseguenza scorrendo i record con JOG+ verranno selezionati i record in ordine sparso ( con riferimento al mio codice numerico). Esiste un metodo per selezionarli in modo progressivo utilizzando il mio codice numerico?

Per il secondo problema credo di aver risolto utilizzando i trigger nel seguente modo.

per campi numerici "Imposta Word > Scrivi costante > 0 > Local HMI > Recipe > nomecampo"

per campi testo  "Imposta Word > Scrivi stringa costante >    > Local HMI > Recipe > nomecampo"

"Imposta Word > Scrivi costante > 1 > Local HMI > Recipe > command" per creare il nuovo record vuoto nei campi testo e con il valore 0 nei campi numerici.

 

 

 

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