vdorlg Inserito: 11 febbraio 2008 Segnala Inserito: 11 febbraio 2008 (modificato) Buon giorno a tutti.Sapete se esiste un archivio dove trovere degli algoritmi vari, magari anche spiegati?Con un plc fx3u-mitsubishi devo realizzare questa funzione.In un piano ho un punto mobile (due assi inverter + encoder) del quale so le coodinate (x,y), il cliente poi dichiara da 3 a 6 punti fissi che formeranno un'area vietata.Devo fare in maniera che il cliente cuando muove il punto non possa entrare innavertitamente nell'area.(eventualmente anticipando la fermate con un rallentamento). E magari al mattino se trova il punto dentro l'area dare un'allarme.(ho degli encoders assol.)Grazie a tutti!ciao. Modificato: 11 febbraio 2008 da vdorlg
emanuele.croci Inserita: 11 febbraio 2008 Segnala Inserita: 11 febbraio 2008 Beh, questa è una cosa abbastanza difficile da fare con un plc e devi avere anche un po' di basi di geometria analitica.Comunque sviluppiamola così:- sia ABC (o anche ABCD, ABCDE, ABCEDF) un poligono non regolare delimitato dai punti ABC (..DEF)- supponiamo per ipotesi che il poligono sia convesso, se no diventa ancora più incasinato- sia P un punto sul piano, dobbiamo determinare se interno o esterno al poligono- Innanzitutto devi farti una funzione che, dati 2 punti A e B, ti restituisca l'equazione della retta passante per A e B (facile)- poi devi farti una funzione che, dato P e la retta AB, ti dia la distanza punto-retta, dove la distanza si misura sulla perpendicolare tra il punto e la retta (un po' più difficile... ma comunque sono solo formule)- a questo punto la condizione di "pericolo" tra P e AB è:Distanza(P,AB)<delta AND (Xp compreso tra Xa e Xb) AND (Yp compreso tra Ya e Yb)(P si sta avvicinando al "confine" AB)Ovviamente questa condizione di pericolo è da verificare per tutti i lati: AB, BC, CD, ecc....- Trovare se P "è dentro o fuori" è ancora più incasinato: si tratta formalmente di risolvere un sistema di disequazioni, però non c'è un metodo semplice per sapere se P si deve trovare, ad esempio, "SOPRA" o "SOTTO" AB, "SOPRA" o "SOTTO" BC, eccetera.Questo potresti farlo specificare all'operatore che "disegna" l'area proibita, sarebbe un po' più semplice per te. Mentre disegna l'area, ti dovrà riempire anche 3-6 flag (uno per lato) per dirti se l'area proibita è sopra o sotto ad ogni lato.Abbastanza incasinato? Penso di sì.... Auguri!Ciao, Emanuele
vdorlg Inserita: 12 febbraio 2008 Autore Segnala Inserita: 12 febbraio 2008 Sei stato chiarissimo Emanuele! grazie.L'applicazione è un carro ponte. In base al tipo di produzione si adegua l'area di sorvolo. Attualmente il sistema funziona con una serie complessa di cammes e finecorsa (non è perfetto). Più che complesso , è macchinoso da tarare, in più bisogna prendere la scala ogni volta.Per fare la decelerazione, la distanza punto-retta va benissimo, solo che se la traiettoria non è perpendicolare a la retta (lato del poligono) ma se arrivo da altre direzioni es. "quasi parallelo" il tutto inizia a rallentare molto prima.
emanuele.croci Inserita: 12 febbraio 2008 Segnala Inserita: 12 febbraio 2008 Per fare la decelerazione, la distanza punto-retta va benissimo, solo che se la traiettoria non è perpendicolare a la retta (lato del poligono) ma se arrivo da altre direzioni es. "quasi parallelo" il tutto inizia a rallentare molto prima.Quindi vuoi poterti muovere MOLTO VICINO alla zona pericolosa PURCHE' PARALLELO ad essa.In questo caso puoi modificare la condizioneDistanza(P,AB)<delta AND (Xp compreso tra Xa e Xb) AND (Yp compreso tra Ya e Yb)come:Distanza(P,AB)<Vh * T ..... AND.. ecc....dove Vh è la componente di velocità del carroponte PERPENDICOLARE ad AB e T è un tempo di arresto, che so, 2 secondi.( Vx = v * sin (alfa) ) dove alfa è l'angolo compreso tra il vettore V e il segmento AB (BC,CD, ecc....)Quindi alfa = arctg (Vy/Vx) - arctg ((By-Ay)/(Bx-Ax))Vy e Vx sono le velocità dei tuoi assi controllati, ricavabili ad es. dall'azionamento che li pilotaCiao, Emanuele
vdorlg Inserita: 13 febbraio 2008 Autore Segnala Inserita: 13 febbraio 2008 Grazie Emanuele, sei stato chiarissimo.Volevo chiederti: la funzione:( Vx = v * sin (alfa) )serve per ricavare Vh ? in questo caso Vh è chiamata Vx?ti ringrazio ancora, spero un giorno poter esserti d'aiuto.P.s. Sapresti indicarmi qual'è la materia che tratta tutti questi concetti? cnc, gestione assi, o altro?Ciao, grazie ancora!
emanuele.croci Inserita: 13 febbraio 2008 Segnala Inserita: 13 febbraio 2008 Scusa, ho sbagliato, in realtà è:Vh=V * sin(alfa)(...si spiega col fatto che prima l'avevo chiamata Vx, dopo però ho usato quel simbolo per un'altra cosa quindi l'ho cambiato con Vh, ho fatto TROVA-SOSTITUISCI ma evidentemente non dappertutto...)Ciao, Emanuele
emanuele.croci Inserita: 13 febbraio 2008 Segnala Inserita: 13 febbraio 2008 P.s. Sapresti indicarmi qual'è la materia che tratta tutti questi concetti? cnc, gestione assi, o altro?La gestione di traiettorie è compito specifico del CNC, ma in realtà quello che devi fare tu non rientra in nessuna "materia" predefinita.L'unico settore da "prendere ad esempio" che mi viene in mente potrebbe essere quello degli LGV.Certo, se esistesse un buon libro sui CNC, potrebbe essere interessante.... ma non dico "come programmare un CNC in linguaggio ISO" ma "come implementare le funzioni di base di un CNC".Io ad esempio un paio di gg. fa stavo pensando se esistono "metodi semplici per la trasformazione di piani di lavoro" (tipo: devo disegnare un oggetto su un piano orizzontale usando gli assi XY, voglio disegnare lo stesso oggetto su un piano inclinato a 45° sia rispetto a X che rispetto a Y, usando quindi gli assi XYZ... esiste un algoritmo semplice per farlo?)Però secondo me è molto difficile trovare materiale "di uso pratico" su questi temi. Ciao, Emanuele
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