Livio Orsini Inserita: 13 gennaio 2016 Segnala Inserita: 13 gennaio 2016 Te li ho già fatti prima, cosa c'è che non è chiaro?
epoch_ita Inserita: 13 gennaio 2016 Segnala Inserita: 13 gennaio 2016 Prendiamo l'asola 7 che rispetto allo zero si trova a 270°,immaginando che l'encoder vale 0 il valore di dell'asola è 270+0=270,ora immaginando che la tavola vale 25° la quota dell'asola 7 vale 270+25=295,quando il valore era 280 attivavo le uscite sulla stazione 4,ora immaginando che la tavola vale 160° la quota dell'asola 7 vale 270+160=430,siccome è maggiore di 360° va normalizzato 430-360=70,questo è il valore che assume l'asola in quel momento che corrisponde esattamente alla posizione della stazione 1.Credo che il mio ragionamento sia molto simile al tuo,cosa ne pensi,potrebbe creare dei problemi il fatto di avere la quota che si aggiorna di continuoCome ragionamento è simile al mio. Non capisco cosa voglia dire "la quota che si aggiorna di continuo". Se ruoti la tavola la sua quota è normale che si aggiorni.
Livio Orsini Inserita: 13 gennaio 2016 Segnala Inserita: 13 gennaio 2016 Non è per nulla chiaro nonostante i disegni, come lavora la macchina.Parrebbe, estrapolando le informazioni, che le asole possano essere spostate dall'operatore, ma questo nulla cambia in ordine alla lettura della quota.
mazzinga Inserita: 13 gennaio 2016 Autore Segnala Inserita: 13 gennaio 2016 Non capisco cosa voglia dire "la quota che si aggiorna di continuo"Nel tuo caso il per trovarti la quota a cui corrisponde l'asola fai :Encoder=posizione5-OffsetAsola[7]=350-315=35Sia la posiozne 5 che OffsetAsola[7],sono quote che non vengono aggiornate ma,solo se le cambia l'operatore,quindi il risultato sara sempre 35 Nel mio caso il risultato cambia di continuo perche per trovare la quota il mio calcolo è Encoder=OffsetAsola[7]+quota tavola Te li ho già fatti prima, cosa c'è che non è chiaro?Posto il tuo esempio int angolo; switch (angolo) { case 42: out1 = 1; out3 = 1; break; case 213: out1 = 0; out3 = 0; out2 = 1; break; case 341: out4 = 1; break; case 511: out5 = 1; break; case 852: out4 = 0; out4 = 0; break; } Angolo è l'angolo della tavola che vale 0-360,ma case sono costanti fisse,con quale criterio ti calcolo la variabile case ad esempio per l'asola 5,puoi farmi un esempio
epoch_ita Inserita: 13 gennaio 2016 Segnala Inserita: 13 gennaio 2016 Nel tuo caso il per trovarti la quota a cui corrisponde l'asola fai :Encoder=posizione5-OffsetAsola[7]=350-315=35Sia la posiozne 5 che OffsetAsola[7],sono quote che non vengono aggiornate ma,solo se le cambia l'operatore,quindi il risultato sara sempre 35 Nel mio caso il risultato cambia di continuo perche per trovare la quota il mio calcolo è Encoder=OffsetAsola[7]+quota tavolaCome ha già detto Livio, non si capisce molto cosa/chi/quando muove la tavola.Se la tavola viene mossa da te, in base ad un criterio del tipo "devo far raggiungere all'asola 8 la posizione 5", il mio criterio funziona, nel senso che sposto la tavola fino a quando la posizione letta dall'encoder e la posizione che mi sono calcolato coincidono, quindi attivo le uscite.Se la tavola si muove "in continuo", potrebbe ancora funzionare, dipende ogni quanto tempo leggi la quota encoder e quanto tempo hai per fare il confronto ed eventualmente fermare la tavola ed attivare le uscite.Altrimenti spiega meglio come avviene il movimento della tavola.
mazzinga Inserita: 13 gennaio 2016 Autore Segnala Inserita: 13 gennaio 2016 Se la tavola si muove "in continuo", potrebbe ancora funzionare Esatto,la tavola si muove in continuo,i tempo sono lunghi la velocita di rotazione della tavola non è molto veloce,ho fatto i calcolo è il plc non dovrebbe avere problemi,l'asola rimane sulla stazione per 100ms circa
Livio Orsini Inserita: 14 gennaio 2016 Segnala Inserita: 14 gennaio 2016 Ammettiamo che le asole le fissi l'operatore rilevandole prima di iniziare la lavorazione.Porta la tavola sopra la prima asola, visualizza la quota, la introduce e nell'array angolo[1] hai il valore corrispondente, poi ripete l'operazione per l'asola 2 e in angolo[2] hai il valore corrispondente, si ripeterà l'operazione per tutte le quote sino ad angolo[n].Il codice diventa:int angolo[30]; switch (angolo[i]) { case angolo[1]: out1 = 1; out3 = 1; break; case angolo[2]: out1 = 0; out3 = 0; out2 = 1; break; case angolo[3]: out4 = 1; break; case angolo[....]: out5 = 1; break; case angolo[30]: out4 = 0; out4 = 0; break; } gni volta che per un motivo qualsiasi si vasria una posizione si reintroduce il valore.però a me sembra strano che le asole cambino posizione sulla tavola.
mazzinga Inserita: 14 gennaio 2016 Autore Segnala Inserita: 14 gennaio 2016 però a me sembra strano che le asole cambino posizione sulla tavola assolutamente no,le asole non possono cambiare semmai sono le stazioni di lavoro che cambiano la posizione,la prima puo stare a 20° rispetto allo zero,la seconda a 25°oppure la prima a 15° a la seconda a 22°,la posizione delle asole è definita da costruttore,è una corona circolare con delle asole definite.Io ho sempre detto che l'operatore cambia la posizione di lavoro delle stazioni,perche cambiando prodotto le stazioni vengono anticipate o ritardate Porta la tavola sopra la prima asola, visualizza la quota, la introduce e nell'array angolo[1] hai il valore corrispondente, poi ripete l'operazione per l'asola 2 e in angolo[2] hai il valore corrispondente, si ripeterà l'operazione per tutte le quote sino ad angolo[n].Questo non mi piace molto,l'operatore deve inserire i gradi a cui si trova la stazione riferito allo zero,poi devo calcolarmi le quote a cui deve lavorare le stazioni 2,3,4,ecc il tuo ragionamento è corretto per la stazione numero 1,ma non per la numero 5 ad esempio.Se non è cosi non ho capito il tuo ragionamento.
Livio Orsini Inserita: 15 gennaio 2016 Segnala Inserita: 15 gennaio 2016 (modificato) Basta che conosca i gradi e li inserisce.Ammettiamo che la stazione n° 1 sia a 20° e ka stazione n° 5 a 185° , (Valori assoluti), inserisci questi valori. Se conosci i valori di offset da una stazione all'altra inserisci gli ofsett e poi fai fare al PLC il semplice calcolo per mettere nell'array il valore assoluto.ammettiamo che la n°1 sia sempre a 20° e le successivie distino 25° una dall'altra tanto per semplificare.L'operatore inserirà questi valori di ofsett poi nell'array il PLC sommerà alla prima l'offset della seconda ottenendo la posizione della seconda, a questo valore sommerà l'ofset tra 2 e 3, ottenendo la posizione assoluta dellla 3, e così via sino all'ultimo. E' un calcolo banale che il PLC dovrebbe eseguire in meno di 1 ms, e lo esegue solo al momento dell'introduzione di un dato o di tutti i dati.Proprio non riesco a vedere il problema. Modificato: 15 gennaio 2016 da Livio Orsini
mazzinga Inserita: 15 gennaio 2016 Autore Segnala Inserita: 15 gennaio 2016 Scusami livioNon riesco a capire il tuo ragionamento,nel tuo ragionamento non vedo le posizioni delle asole sulla tavola,sicuramente è un calcolo banale che per il plc,a non riesco a capirlo,Potresti farmi un esempio pratico e completo,anche in C di un'asola nota,ad esempio la 5,riferita allo schizzo allegato.Il ragionamento di epoch_ita è molto chiaro,mi piacerebbe capire anche il tuo
Livio Orsini Inserita: 15 gennaio 2016 Segnala Inserita: 15 gennaio 2016 (modificato) Non so come spiegartelo in modo differente.Non riesco nemmeno a capire quello che non capisci.Fai una cosa. Metti i dati di una tavola con tre asole e 3 stazioni e spiega che operazioni dovrebbe fare, vediamo se riusciamo a capirci, altrimenti io rinuncio.Scasa la brutale franchezza, ma che tu lo realizzi seguendo le mie istruzioni o seguendo le istruzioni di un altro, a me interssa poco. Sto solo cercando di darti una mano per realizzare un qualche cosa che funzioni, però non ho nessuna intenzione di forzarti a sposare le mie tesi. Modificato: 15 gennaio 2016 da Livio Orsini
epoch_ita Inserita: 15 gennaio 2016 Segnala Inserita: 15 gennaio 2016 (modificato) Ora mi sorgono altre domande:-)Se la posizione delle stazioni la decide l'operatore, il numero delle stazioni è fisso (quanto vale) oppure lo decide l'operatore? Qual'è il numero massimo?-)Chi decide quali uscite (una o più di una?) attivare nelle varie stazioni?-)Le stazioni, prevedono di controllare la presenza di un pezzo per funzionare?-)I pezzi entrano sicuramente uno dopo l'altro o potrebbero esserci delle asole vuote in mezzo a due piene?Perché a questo punto se vuoi un possibile esempio pratico mi mancano dei parametri...Anche perché a questo punto mi hai incuriosito. Io non conosco il linguaggio di PLC Simens. Ho lavorato un po' di tempo con dei PLC Matsushita, poi sono passato ad una scheda microprocessore custom con un micro infineon e ambiente di sviluppo in C, ed ora sviluppo firmware su di un'altra architettura custom linux embedded.In ogni caso quello che importa è il ragionare su come deve lavorare la macchina. La lingua che usi per descriverlo è ininfluente. Modificato: 15 gennaio 2016 da epoch_ita
mazzinga Inserita: 15 gennaio 2016 Autore Segnala Inserita: 15 gennaio 2016 Fai una cosa. Metti i dati di una tavola con tre asole e 3 stazioni e spiega che operazioni dovrebbe fare, vediamo se riusciamo a capirciOk Sto solo cercando di darti una mano per realizzare un qualche cosa che funzioni, però non ho nessuna intenzione di forzarti a sposare le mie tesi.Per questo ti ringrazio infinite,non voglio sposare le tue idee,ma sono convinto che la tua idea è sicuramente valida,sono anni che seguo il forum,i tuoi interventi è dal mio punto di vista sei una persona che stimo tantissimo.Con questo voglio dire che sicuramente il problema è da parte mia che non riesco a capire il tuo concetto,ma per fortuna non tutti siamo uguali. Proviamo a mettere i dati di una tavola molto semplice,-Tavola con 3 asole porta pezzo,120° è l'interasse (360/3)-3 stazioni la prima a 0° nastro ingresso pezzi,la seconda a 120° soffio di aria per pulire i pezzi "Esempio" la terza 240° nastro di uscita-Encoder assoluto monogiro 2048 imp/giro Immagina che questa tavola pulisce dei pezzi dopo che vengono lavorati è per pulirli passa su una tavola rotante,la tavola ruota in senso orariola tavola lavora nel seguente modo:La tavola ha una rotazione continua,non lavora a passo.Quando una delle 3 asole è in corrispondenza del nastro di carico attivo una uscita per x tempo che fa entrare il pezzo in tavola,nel frattempo la tavola continua a ruotare,quando una delle 3 asole arriva in corrispondenza della seconda stazione attivo il soffio che pulisce il pezzo,quando una delle tre asole arriva in corrispondenza del nastro di uscita attivo un soffio che espella i pezzi dalla tavola.L'operatore deve impostare 3 quote la quota della prima stazione che nel nostro caso è 0° nastrino ingressi pezzo,la seconda soffio per pulizia pezzo che nel nostro caso sarà 120° e la terza soffio espulsione pezzi che nel nostro caso sara 240°.L'operatore puo variare la posizione del nastro in ingresso quindi puo inserire ad esempio 5° come puo variare la posizione del soffio per la pulizia del pezzo 115°-120°-125°,è l'operatore che lo decide,con dei limiti,ad esempio non potra mai inserire sulla seconda stazione 90°,diciamo che ha un margine di variazione di 15°.Ora immaginiamo che la tavola è in posizione 0°avro che devo attivare per x tempo le 3 uscite perche ogni asola è in corrispondenza di una stazione di lavoro,se la tavola ruota di 120° avro che la prima asola si trova sulla seconda stazione di lavoro "soffio pulizia" la seconda asola sul nastrino di scarico e la terza asola sul nastrino di carico,in che modo mi calcolo la posizione di lavoro delle asole due e tre,se io facessi una struttura if del tipo:Encoder"0-360°" angolo[0]=0angolo[1]=120angolo[2]=0if encoder=angolo[0] out1=1else if encoder=angolo[1] out2=1else if encoder=angolo[2] out3=1else out1=0 out2=0 out3=0endifquesta struttura puo andar bene per la prima asola perche la prima asola non ha ofset,ma non per la seconda o la terza che hanno un ofset di 120° e 240°Spero di essere stato chiaro con questo esempio
stefano_ Inserita: 15 gennaio 2016 Segnala Inserita: 15 gennaio 2016 Scusate se mi intrometto ma tu hai detto che hai 3 asole a 120 ° e questa è una costante mentre le 3 postazioni le puoi variare di +- 15 ° ma se le vari non succede che quando l'isola 1 è in linea con il nastro di carico anche la 2 e la 3 siano in posizione di lavoro in quanto sono state spostate !Mi sfugge qualcosa ?
mazzinga Inserita: 16 gennaio 2016 Autore Segnala Inserita: 16 gennaio 2016 -)Se la posizione delle stazioni la decide l'operatore, il numero delle stazioni è fisso (quanto vale) oppure lo decide l'operatore? Qual'è il numero massimo? -)Chi decide quali uscite (una o più di una?) attivare nelle varie stazioni? -)Le stazioni, prevedono di controllare la presenza di un pezzo per funzionare? -)I pezzi entrano sicuramente uno dopo l'altro o potrebbero esserci delle asole vuote in mezzo a due piene? Il numero delle stazioni è fisso l'operatore puo decidere solo la posizione Ogni stazione ha una uscita E possibile che ci sia un'asola vuota tra due asole piene ed la stazione deve saperlo non deve attivare l'uscita. Avevo pensato fi fare un shift register partendo sulla stazione di carico dove ho un sensore che mi da la presenza del pezzo sull'asola
mazzinga Inserita: 16 gennaio 2016 Autore Segnala Inserita: 16 gennaio 2016 Scusate nel mio esempioangolo[2]=0 è sbaliato vale 240angolo[2]=240
Livio Orsini Inserita: 16 gennaio 2016 Segnala Inserita: 16 gennaio 2016 Scusa ma l'offset è rispetto a che cosa?E' un offset variabile?Se si conosce l'origine e l'offset è fisso in pratica tutti i valori sono assoluti.Vedila come se fosse un asse lineare don quete che si incrementano in modo assoluto, ovvero un classico lavoro da CN. Invece di tornare a zero a missione compiuta si ritorna a zero automaticamente a fine giro.Che tu faccia uno shift un case o altro nulla cambia. L'asse dovrà effettuare n missioni quante sono le asole e quante sono le stazioni.Il sensore, come hai ipotizzato, verifica se attivare le uscite o meno.Prova a mettere giù la tua tavola come se fosse un asse linear e vedrai che è tutto ti sarà più chiaro.Di queste "giostre" ne ho aurtomatizzate parecchie sempre con il modo che ti ho descritto.
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora