Vai al contenuto
PLC Forum


Lettura posaggio tavola


Messaggi consigliati

Inserito:

Buongiorno,

ho un problema da cui non trovo soluzione o meglio, non trovo la soluzione che vorrei io.

Vi descrivo il problema: 

Come da immagine sottostante, c'è una tavola con 8 stazioni da stazione numerate da 5 a stazione 12.

Questa tavola ha 8 divisioni quindi 8 posaggi numerati da posaggio 1 a posaggio 8.

sulla stazione 12 è presente un lettore RDIF che va a leggere il numero di posaggio che è presente sulla stazione stessa.

Quando ho rilevato il numero di posaggio che è presente sulla stazione 12, devo calcolare il numero di posaggi presenti nelle altre stazioni.

Ho risolto il problema utilizzando degli IF THEN, per esempio: 

If nr_posaggio_st12 = 3 THEN

nr_posaggio_st11 := 2

ecc. ecc

END_IF;

 

La domanda è; non esiste un modo per calcolare il numero posaggi in maniera più elegante per esempio con un ciclo for o altri metodi?

 

Ringrazio

 

 

 

image.png.47c52fb12746dbe99a762305d242e9c9.png


Inserita:

Invece che di singole variabili, usa un array, il cui indice sarà il numero di stazione.

Inserita:

Ho fatto cosi, ma non riesco a calcolare il numero dei posaggi sulle altre stazioni in funzione del posaggio su st12.

OVviamente ho fatto tutto indicizzabile con array e strutture.

Inserita: (modificato)

Io di solito mantengo fisso il posaggio sotto la stazione e schifto le informazioni dentro l'array, secondo me è più semplice in quanto le informazioni di quella stazione le trovi sempre nella stessa posizione, senza dove guardare che posaggio c'è sotto la stazione.

Praticamente l'indice dell'array non è il posaggio ma la stazione e quando ruoto la tavola sposto i dati della stazione 11 nella stazione 12, la 10 nella 11, ecc.

Con 7 o 8 move hai fatto tutto.

Modificato: da acquaman
Inserita:

Si anche io solitamente faccio cosi, anche su questa macchina è cosi.

Ma in questo caso mi serve sapere che posaggio è presente sotto la precisa stazione per aggiungere offset meccanici durante i controlli.

Quindi il mio problema è calcolare i posaggi che sono presenti nelle stazioni in funzione del posaggio che è presente sulla 12

Inserita:

Ma l'ordine dei posaggi può cambiare durante la lavorazione ? Perchè se cosi non fosse dopo il primo rilevamento puoi già ricostruire come è fatta la tua tavola..oppure non ho capito io bene cosa intendi..😮

Inserita: (modificato)

Usa un CASE OF, in funzione del numero letto nell'RFID carichi il numero dei posaggi sotto le stazioni.

Modificato: da acquaman
Inserita:

 

 

Ti allego un file excel che calcola quello che vuoi fare tu, c'è una formula semplice inserita, vedrai che modificando la casella in verde ti ricalcola i posaggi davanti alle stazioni, non ti resta che scriverla in ST

file excel

Inserita:

Non ho familiarità con il termine "posaggio". La logica, qual è? È come nel file Excel di Mattia? Il posaggio decrese con il decrescere della stazione?
I posaggi vanno da 1 a 8 e, se nella stazione 12 c'è "posaggio = 2", nella stazione 11 c'è "posaggio = 1" e nella stazione 10 "Posaggio = 8"?
Se è così, fai un semplice ciclo FOR da 11 a 5 con step -1. Nella stazione 12 carichi il posaggio da RFID. Nelle stazioni successive (all'interno del ciclo FOR), sottrai una unità. Se il valore è inferiore ad 1, sommi 8.

 

Esempio:
 

// Carico nella stazione 12 il posaggio letto da RFID
#Stazione[12] := #RFID_Read;

// Calcolo posaggi per le altre stazioni
FOR #i := 11 TO 5 BY -1 DO
    #Stazione[#i] := #Stazione[#i + 1] - 1 ;
    IF #Stazione[#i] < 1 THEN
        #Stazione[#i] += 8;
    END_IF;
END_FOR;

 

Inserita: (modificato)

Mi sono dimenticato di dire che la tavola gira, e quindi ogni ciclo devo controllare nuovamente i posaggi.

la formula fornita in Excel e corretta probabilmente con un ciclo for riesco a calcolare tutto velocemente

Modificato: da Crystal1995
Inserita:

Scusa, ma il mio esempio, l'hai visto?
Sono sette righe di codice.
Fa esattamente quello che c'è nel file excel.
Ad ogni posizionamento, appena dopo la tettura dell'RFID, lanci quella routine.
Fine.

Inserita:

Si Batta, ho usato esattamente quell'esempio. Ho scritto che la tavola gira per dare risposta agli altri

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