Problema di moto

Roberto_Gotti
Ho una necessità di calcolo che qualche genietto del forum riuscirà sicuramente a risolvermi.

Dovrei linearizzare un movimento in un sistema meccanico come sotto descritto.

In un sistema biella-manovella con centro di rotazione nelle origini del sistema cartesiano, conoscendo la posizione angolare della manovella con precisione 0.5 gradi (720 punti/giro) chiamato Alfa e con lunghezza della manovella variabile da 1 a 100 mm e lunghezza della biella fissa a 250 mm :
Trovare la distanza tra il centro di rotazione della manovella (0) ed il punto X (in testa alla biella) che si muoverà vincolato all'asse delle X.

Volendo imporre ad X il moto classico a profilo di velocità trapezoidale (Accelerazione costante,Velocità costante e accelerazione negativa costante), quale è la funzione per
calcolare Omega (velocità angolare della manovella) in funzione di V (Velocità del punto X) e di Alfa

Ringrazio anticipatamente tutti coloro che mi daranno una mano.



Roby

Risposte
Roberto_Gotti
Desidero ringraziare tutti coloro che si sono prodigati nel non semplice compito di risolvere il mio problema.

La formula è stata inserita nel PLC e funziona egregiamente.

Ciao e alla prossima



Roby

WonderP1
Scusate ma mi sono un po' perso, a che punto siamo? Mi pare che il problema sia stato risolto o sbaglio?
Scusate ancora la distrazione, ma da quando lavoro ho troppo poco tempo da dedicare al forum.

WonderP.

tony19
mi accorgo di aver omesso una formula forse importante:

omega in funzione di t nel tratto lineare tra t1 e t2
(o, se si preferisce, tra Fi1 e Fi2).

2 2 2
-v_L*[(x0+v_L*t) +l -r ]
w = ----------------------------------------------------
2 2 2 2 2 2
|x0+v_L*t| * sqr{-[(x0+v_L*t) -l -r ] +4*r *l }

tony

Roberto_Gotti
Ciao a tutti
ho una risposta per tony e una domanda per giampi
1)Ciao tony, il motore è un asincrono 1400 rpm a 50 Hz. E' pilotato da un inverter che a sua volta riceve il segnale di riferimento analogico da un PLC.
2)Ciao Giampi, se vuoi ti posso mandare un disegno del sistema quindi mi dovresti dare un indirizzo acui spedire il file e indicarmi che formato di file riesci a leggere.

Ciao ciao

Roby

giampi.bll
Ciao a tutti, mi chiamo Gianpaolo, sono un "novellino" del forum, guardando tra i vari argomenti ho notato il problema avanzato da Roberto e devo dire che mi ha "appassionato"...è da lodare la disponibilità,la competenza e la velocità con cui vi siete mossi per aiutarlo!!
X Roberto:se ti è possibile spiegarmi sarei curioso di sapere che sistema hai adottato per far sì che la lunghezza di manovella fosse regolabile a piacimento entro l'intervallo che ti sei prefissato.
Bye
Giampy

tony19
la procedurina Fi(t) che ho incollato qui sopra servirebbe alla seguente misura:
a1- un orologio di macchina fa "tic".
a2- ne leggo il tempo (trascorso dal punto morto sup.).
a3- calcolo quanto dovrebbe essere l'angolo Fi in quell'istante.
a4- confronto con l'angolo Fi letto dal disco encoder assol.
a5- in base alla differenza avuta da 4- accelero o rallento, con una funzione da escogitare.

osservazione:
può darsi che la la lettura dell'encoder, per la sua costituzione, non possa avvenire con buona precisione in un istante qualsiasi, ma sia necessario attendere un "tic" dall'encoder (il mezzo grado ?)
in questo caso occorrerebbe misurare col criterio segente:
b1- l'encoder fa "tic".
b2- ne leggo l'angolo Fi (dal punto morto sup.).
b3- calcolo a che istante t dovrebbe capitare l'angolo Fi.
b4- confronto con il tempo t letto da un orologio.
b5- in base alla differenza avuta da 4- accelero o rallento, con una funzione da escogitare.

in questo caso è conveniente una procedurina t(Fi);
per ora ne allego solo la parte centrale (quella riguardante il tratto lineare, da Fi1 a Fi2, nel programmino precedente):
   
MezzoGrado = Pi/360

FOR Fi = 0 to Pi/2 step MezzoGrado
IF Fi < Fi1 THEN
t = "?" ' tratto morto super.
ELSE IF Fi1 <= Fi2 THEN
t = (+-(sqr(l^2-r^2*sin(Fi)^2) +r*cos(Fi) - x0)/v.l ' tratto lin.
ELSE
t = ? ' tratto morto infer.
END IF
END IF
NEXT Fi

l'ho provata e fornisce anch'essa un'ottima linearità di x(t).
però nei tratti d'accelerazione rimangono i punti di domanda.

Roberto_Gotti, forse sarebbe utile se tu descrivessi come regoli la
veloc. del motore asincrono.

tony

Roberto_Gotti
Bravi....attenti osservatori!!!!!
Il test a fatica serve per portare in criticità i componenti e la misurazione verifica l'incremento di attriti tra il cavo e la guaina in cui scorre. (Classico cavo da acceleratore per moto e motorini).
Ovviamente per eseguire una misura di attrito serve una velocità costante eccetera eccetera....

Grazie tony ho apprezzato molto le tue esternazioni basic e preciso anche che sono il modo migliore che conosco per spiegarmi cose un po più complicate delle solite cose che affronto giornalmente.

Azzeccata anche la supposizione che i valori di acc e vel max possono essere modificati alla bisogna.

Ciao

Roby

WonderP1
Se così fosse, allora il materiale è soggetto a creep. Vediamo se siamo stati buoni profeti (o acuti osservatori).

tony19
fammi azzardare un'ipotesi: sono le specifiche del
test di allungamento DOPO la sollecitazione a fatica.
tony

WonderP1
Ho anche io una curiosità, se stai facendo uno studio a fatica, perhcé devi avere un controllo su velocità e accelerazione?

tony19
Roberto_Gotti, dal tuo ultimo msg intuisco che le specifiche dell'apparecchio
devono aderire a dei capitolati e che quindi l'andamento dell'accelerazione
deve errese quello prescritto, contrariamente alle mie precedenti esternazioni.

accludo in calce un programmino in basic che IN FUNZIONE DI T
calcola l'angolo "fi"
(era alfa nei post preced. ma la sua abbreviaz. "a" non mi piaceva, confondendosi con un'acceleraz.)
forse, come ho già detto tu vorresti t in funz. di fi; cominciamo da questo primo approccio.
il risultato è una x che accelera con una accel. costante, continua a veloc. costante,
e decelera con una seconda acceleraz. cost, che potrebbe esser diversa dalla prima.

il programma è di una semplicità disarmante;
solo le tre formule per il calcolo di fi(t) sono complicate;
è in basic, penso sia comprensibile: alla fin fine un'espressione è un'espressione!

fammi sapere che ne pensi.

tony

----------- inizio collage --------------
DEFDBL A-Z ' tutto in doppia precisione
DECLARE FUNCTION acos! (x AS DOUBLE) ' non è nel quick basic

COSTANTI:
CONST Pi = 3.14159265358979#
CONST Tepsilon = .0001 ' per imprecisione comparazioni

'DATI
v.l = 100 ' [mm/s] vel. nel tratto lineare
r = 100 ' [mm] raggio manovella
L = 250 ' [mm] lungh. biella
a.s = 100 ' [mm/s^2] acceleraz. superiore
a.i = 100 ' [mm/s^2] acceleraz. inferiore

'VARIABILI:
DIM Fi AS DOUBLE ' angolo di manovella, dal punto morto sup.
DIM t AS DOUBLE ' tempo " " " " " "

'FORMULE: esempio
x.pms = r + L ' x punto morto sup. 350,000 [mm]
x.pmi = -r + L ' x punto morto inf. 150,000 [mm]
c.vs = .5 * v.l ^ 2 / a.s ' corsa a vuoto superiore 50 [mm]
c.vi = .5 * v.l ^ 2 / a.i ' corsa a vuoto inferiore 50 [mm]
x1 = x.pms - c.vs ' x sup. tratto lineare 300,000 [mm]
x2 = x.pmi + c.vi ' x inf. tratto lineare 200,000 [mm]
c.l = x1 - x2 ' corsa lineare 100,000 [mm]
t.l = c.l / v.l ' tempo corsa lineare 1,000
t.as = v.l / a.s ' tempo acceler. sup 1,000
t.ai = v.l / a.i ' tempo acceler. inf 1,000
Half.T = (t.l + t.as + t.ai) ' semiperiodo 3,000
t1 = t.ai ' tempo a x1 1,000
t2 = t.ai + t.l ' tempo a x2 2,000
x0 = x1 + t.as * v.l ' intercetta retta lin. 400,000 [mm]
fi1 = acos((x1 ^ 2 - (L ^ 2 - r ^ 2)) / (2 * r * x1))
' phi a x1 0,896 [rad] 51,32 [°]
fi2 = acos((x2 ^ 2 - (L ^ 2 - r ^ 2)) / (2 * r * x2))
' phi a x2 1,889 [rad] 108,21 [°]

'UN LOOP PER IL CALCOLO DI Fi(t):
PRINT : PRINT " t Fi x delta x"
FOR t = 0 TO Half.T + Tepsilon STEP .001
IF t < t1 - Tepslion THEN
cosFiS=(x.pms^2-a.s*x.pms*t^2+a.s^2*t^4/4-(L^2-r^2))/(r*(2*x.pms - a.s*t^2)) ' cosFi nel tratto morto al p.m.s
Fi = acos(cosFiS) ' tratto dal p.m.s. a quello lineare
ELSE
IF t <= t2 + Tepsilon THEN
cosFiL=((x0-v.l*t)^2-L^2+r^2)/(2*r*(x0-v.l*t)) ' cosFi nel tratto lineare
Fi = acos(cosFiL) ' tratto lineare
ELSE
cosFiI=(x.pmi^2+a.i*x.pmi*(Half.T-t)^2+a.i^2*(Half.T-t)^4/4 - (L^2-r^2))/(r*(2*x.pmi+a.i*(Half.T-t)^2)) ' cosFi nel tratto morto al p.m.i
Fi = acos(cosFiI) ' tratto da quello lineare al p.m.i.
END IF
END IF
x = r * COS(Fi) + SQR(L ^ 2 - r ^ 2 * SIN(Fi) ^ 2)
PRINT USING "###.##### "; t; Fi * 180 / Pi; x; x - xprec
xprec = x
NEXT
END

FUNCTION acos (x AS DOUBLE) ' tra 0 e Pi
DIM a AS DOUBLE
a = ATN(SQR(1 - x ^ 2) / x)
IF a >= 0 THEN acos = a ELSE acos = a + Pi
END FUNCTION
----------- fine collage --------------



*Edited by - tony on 31/01/2004 19:24:46

Roberto_Gotti
Caro tony,
il tuo (ed altrui) interesse nel risolvere il mio problema merita quanto meno la soddisfazione di conoscere a cosa cavolo servirà tutto stò casino di conti.

In realta il piede della biella non muove un utensile bensì una cella di carico che misura la trazione a cui viene sottoposto un cavo inguainato (tipo cavo freno di bicicletta) in un ciclo di test intervallato da qualche migliaio di manovre di affaticamento.

Per l'affaticamento la velocità non è di grande importanza e quindi è fissa, per la misura invece dovrà venire come vi ho spiegato.

Spero di aver sofddisfatto almeno un briciolo di curiosità.

Ciao a tutti

Roby

tony19
scusate, dopo il diagramma x(t), forse abbastanza chiaro, non ho approfondito la mia "bottarella", "*Posted - 23/01/2004 : 14:33:33", forse non chiara.

dicevo (la riscrivo tale e equale ma cambiando i simboli: a -> x0, b -> v_L):
*quote:

nel tratto lineare (quello a vel. costante) l'angolo alfa DEVE essere
2 2 2
(x0+v_L*t) -l +r
[1] alfa = acos --------------------
2*r*(x0+v_L*t)

dove:
x0 e v_L sono i coeff. di x=x0+v_L*t, la retta del tratto lineare del diagramma, tra t1 e t2

x2-x1
[2] v_L = ------- vel. lineare
t2-t1

[3] x0 = x1-v_L*t1 intercetta della retta di linearità
con le ordinate (chiamata impropriamente "a"
nel diagramma e nella sua legenda)


ora, sostituendovi dei dati numerici

r=100 mm, l=250 mm, v_L=-100 mm/s, a=100 mm/s^2

e ragionando sul disegno, stanzio due tratti "a vuoto" agli estremi della corsa, ricavo

x1=300, x2=200 x0=400 mm, t1=1.0, t2=2.0 s, alfa1 = 51.32, alfa2 = 108,21 °

e ho che x è perfettamente lineare da t1 a t2, con |v_L|, appunto di 100 mm/s

derivando la [1] trovo omega(t); cito qui solo omega1 = 1.014 e omega2 = 1.22

perplessità:
non me lo so spiegare: x(t) è lineare anche al di fuori di questo intervallo.
i riscontri numerici sono ottimi sulla x ma ho scostamenti di parecchi percento tra l?omega calcolata con la formula e quella "misurata" numericamente.
i tratti "a vuoto" di acceleraz. e deceleraz. sono ancora da discutere: come dicevo penso qualsiasi legge vada bene, purchè le accelerazioni siano forti (entro i limiti della potenza a disposizione e della resistenza dei materiali).
inoltre, come dicevo, questa è una alfa(t); forse Roberto_Gotti con le info ottenute dal suo encoder assoluto preferirebbe esplicitarla come t(alfa). si può fare, se serve.

tony

p.s. sarei curioso di sapere che utensile sarà mosso dalla slitta al piede (si', mi era scappato "testa") di biella, per un lavoro di una larghezza che può scendere sotto il centimetro.

*Edited by - tony on 29/01/2004 18:34:12

goblyn
Ah ok scusate. Appena ho un altro po' di tempo mi ci metto!

Roberto_Gotti
Caro goblyn ti confermo la supposizione di wonderp.
Infatti devo impostare la velocità del motore in modo da ottenere un andamento della testa (o piede) della biella descritto dal primo dei tuoi grafiici.

Ciao

Roby

WonderP1
C'è qualche cosa che non mi torna.
Da quello che ho capito Roberto vuole un andamento la cui velocità sia quella che tu hai descritto nel primo grafico. Cioè non è il motore ad avere quell'andamento nel tempo, ma il piede di biella.
Ho detto giusto?

goblyn
La posizione di T (in un sistema di rif in cui il centro della circonferenza è l'origine delgi assi) mi risulta:

T(v) = Rcos(alfa(v)) + R*sqrt( (L/R) - (sin(alfa(v)))^2 )

dove R è il raggio della circonferenza
L è la lunghezza della biella
alfa è l'angolo funzione della velocità lineare v del motore

Sussiste ovviamente la relazione:

alfa(t) = alfa0 + (1/R)v(t)dt

l'integrale è esteso all'intervallo [0,t].

Ho espresso tutto in funzione di v perché a quanto ho capito è su quella che hai ill controllo.

Ho provato a simulare la situazione con MATLAB e i seguenti valori:

R=1
L=5
tmax=20
alfa0=180°

Ho utilizzato il seguente profilo di velocità lineare per il motore:



La posizione del punto T in funzione del tempo è risultata la seguente:



e la sua velocità:



Se il legame alfa(v) non è troppo complicato si possono ricavare le formule esplicite.
Vi sembra ragionevole l'andamento?



Modificato da - goblyn il 26/01/2004 18:05:03

Modificato da - goblyn il 26/01/2004 18:07:07

WonderP1
scrive Roberto_Gotti

citazione:

Innanzi tutto ciao e grazie del vostro contributo.....ma
quando avrete completato le vostre deduzioni mi spiegherete,
spero, in modo comprensibile anche da un tonto come me!!!

Ribadisco e confermo un paio di cose:
Costanti
Lunghezza biella
Variabili
Posizione alfa da 359.5 a 0 con step di 0.5 gradi
Velocità massima da 20 a 100mm/s
Accelerazione da 20 a 100 mm/s2
Lunghezza manovella da 1 a 100mm
Incognite
T(alfa)
X(alfa)
W(alfa)
Se qualcuno volesse postarmi qualche esempio in xls è sempre
ben accetto.

Grazie ancora a tutti


Roby


WonderP1
ho provato più volte a derivare in modo da avere una certa sicurezza prima di postare. La prima formula è ciò che mi risulta dalla derivazione nuda e cruda senza semplificazioni, la seconda è un po' più elegante (sempre che non abbia fatto errori di semplificazione).


tony19
che magra, ragazzi!
il problema non era il prodotto, ma che non vedevo che

d d .
--(sin(a)) = cos(a)*--(a) = cos(a)*a
dt dt

(notate l'"a punto": dopo la magra mi metto a far preziosismi)

2 giorni a pane e acqua, e lunedì cambiare occhiali!

correggo i post precedenti.
tony

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.