Jag letar efter en ekvation för att hitta den tid det tar för en positionsförskjutning ska ske, givet känd $ V_ {max} $, en (känd) konstant acceleration, retardation, ryck och förskjutning … och en initial hastighet på 0.
Jag försöker uppskatta / beräkna den tid det tar för en servomotoraxel att färdas ett visst avstånd. När jag väl vet den beräknade tiden för det rörelsen kan jag lösa ryck för den andra axeln. På det sättet väljer jag en optimalt ”långsam” hastighet för vilken som helst axeln har ett kortare rörelseavstånd för att maximalt utnyttja min tid.
FYI, det här är en XY-robotportal.
Kommentarer
- Förutsatt att $ \ Delta x = (a / 2) * t ^ 2 + (j / 6) * t ^ 3 $, är att hitta t samma sak som att lösa en kubisk ekvation
- Tack, jag ' Jag börjar med det och ser vad jag kommer upp med th.
- Om du håller med ekvationen jag ger ovan och om du har problem kommer jag att försöka ge dig ett fullständigt svar.
- Cool. Tack. Så … jag gör ett drag med parametrar:
- Oj. Repost: Jag gör ett drag med parametrar: Vmax = 1000 mm / s, accel = 1000mm / s ^ 2, decel = 1000mm / s ^ 2, Jerk = 1000 mm / s ^ 3, och förskjutningen är 2000mm. Jag har bestämt det här steget på cirka 4,0 sekunder, så det borde vara svaret, men jag måste få ekvationen som resulterar i detta för olika ingångsvariabler. (notera accel och decel är inte nödvändigtvis desamma). Tack för att du tittade på det, jag är lite borta från min liga i matematik.
Svar
I ge dig resultatet av min kalkyl utan detaljerna:
Resultatet är:
$$ \ Delta t = \ frac {\ Delta x} {V_ {Max}} + \ frac {1} {2} (\ frac {V_ {Max}} {a} + \ frac {a} {j}) + + \ frac {1} {2} (\ frac {V_ {Max}} {d } + \ frac {d} {j}) $$
där:
$ \ Delta t $ är den totala tiden.
$ \ Delta x $ är den totala förskjutningen.
$ a $ är den maximala accelerationen.
$ d $ är den maximala decelerationen.
$ j $ är ryck.
$ V_ {max} $ är den maximala hastigheten.
Som ett test, med dina värden:
$ \ Delta x = 2 m, a = 1m / s ^ 2, d = 1m / s ^ 2, j = 1 m / s ^ 3, V_ {max} = 1m / s $, jag hittar:
$$ \ Delta t = \ frac {2} {1} + \ frac {1} {2} (\ frac {1} {1} + \ frac {1} {1}) + + \ frac {1} {2} (\ frac {1 } {1} + \ frac {1} {1}) = 2 + 1 + 1 = 4 $$
vilket är rätt resultat.
Så jag är ganska säker på formeln.
[EDIT] Formeln för att få ryck är:
$$ j = \ frac {a + d} {2 (\ Delta t – \ large \ frac {\ Delta x} {\ large V_ {max}}) – V_ {max} (\ large \ frac {1} {a} + \ large \ frac {1} {d})} $$
[EDIT 2]
Den använda modellen är:
Fas 1: konstant ( positivt) ryck $ j $
Fas 2: konstant acceleration $ a $
Fas 3: konstant (negativ) ryck ($ – j $)
Fas 4: konstant hastighet $ V_ {Max} $
Fas 5: konstant (negativ) ryck ($ – j $)
Fas 6: konstant decceleration ($ d $)
Fas 7: konstant (positiv) ryck ($ j $)
I formlerna ovan finns begränsningar, mer exakt varaktigheten av faserna 2, 4, 6 måste var positiv:
$$ \ Delta t_2 = \ frac {V_ {Max}} {a} – \ frac {a} {j} \ ge 0 $$
$$ \ Delta t_4 = \ frac {\ Delta x} {V_ {Max}} – \ frac {1} {2} (\ frac {V_ {Max}} {a} + \ frac {a} {j}) – \ frac {1} {2} (\ frac {V_ {Max}} {d} + \ frac {d} {j}) \ ge 0 $$
$$ \ Delta t_6 = \ frac {V_ {Max}} {d} – \ frac {d} {j} \ ge 0 $$
Om någon av dessa begränsningar inte är uppfylld betyder detta att hypotesen för modellen inte är nt, så vi behöver en annan modell.
fMoveTime_s := (fDeltaPos_M / fVMax_M) + (0.5)*( (fVMax_M / fAccel_M) + (fAccel_M / fJerk_M) )+ (0.5)*( (fVMax_M / fDecel_M) + (fDecel_M / fJerk_M) );
fJerkCalc := (fAccel_M + fDecel_M) / ( ( 2 * (fMoveTime_S - (fDeltaPos_M / fVMax_M))) - (fVMax_M * ((1/fAccel_M)+(1/fDecel_M)) ) );