Vai al contenuto
PLC Forum


Lettura posaggio tavola


Crystal1995

Messaggi consigliati

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

Link al commento
Condividi su altri siti


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.

Link al commento
Condividi su altri siti

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
Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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

Modificato: da acquaman
Link al commento
Condividi su altri siti

 

 

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

Link al commento
Condividi su altri siti

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;

 

Link al commento
Condividi su altri siti

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
Link al commento
Condividi su altri siti

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.

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