Ich suche nach einer Gleichung, um die Zeit zu finden, die für a benötigt wird Positionsverschiebung bei bekanntem $ V_ {max} $, einer (bekannten) konstanten Beschleunigung, Verzögerung, Ruck und Verschiebung … und einer Anfangsgeschwindigkeit von 0.
Ich versuche zu schätzen / Berechnen Sie die Zeit, die eine Servomotorachse benötigt, um eine bestimmte Strecke zurückzulegen. Sobald ich die geschätzte Zeit dieser Bewegung kenne, kann ich nach einem Ruck für die andere Achse suchen. Auf diese Weise wähle ich für jeden eine optimal „langsame“ Geschwindigkeit Die Achse hat eine kürzere Bewegungsentfernung, um meine Zeit maximal zu nutzen.
Zu Ihrer Information, dies ist ein Pick-and-Place-XY-Roboterportal.
Kommentare
- Unter der Annahme von $ \ Delta x = (a / 2) * t ^ 2 + (j / 6) * t ^ 3 $ ist das Finden von t dasselbe wie das Auflösen eines kubische Gleichung
- Danke, ich ' beginne damit und sehe, was ich mit mir mache th.
- Wenn Sie mit der oben angegebenen Gleichung einverstanden sind und Probleme haben, werde ich versuchen, Ihnen eine vollständige Antwort zu geben.
- Cool. Vielen Dank. Also … ich mache einen Zug mit Parametern:
- Ups. Repost: Ich mache eine Bewegung mit folgenden Parametern: Vmax = 1000 mm / s, Beschleunigung = 1000 mm / s ^ 2, Verzögerung = 1000 mm / s ^ 2, Ruck = 1000 mm / s ^ 3, und die Verschiebung beträgt 2000 mm. Ich habe diesen Schritt auf ungefähr 4,0 Sekunden festgelegt, daher sollte dies die Antwort sein, aber ich muss die Gleichung erhalten, die dies für verschiedene Eingabevariablen ergibt. (Hinweis Beschleunigung und Verzögerung sind nicht unbedingt gleich). Vielen Dank, dass Sie sich das angeschaut haben. In Bezug auf Mathematik bin ich ein bisschen außerhalb meiner Liga.
Antwort
I. Geben Sie das Ergebnis meines Kalküls ohne die Details an:
Das Ergebnis ist:
$$ \ 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}) $$
wobei:
$ \ Delta t $ die Gesamtzeit ist.
$ \ Delta x $ ist die Gesamtverschiebung.
$ a $ ist die maximale Beschleunigung.
$ d $ ist die maximale Verzögerung.
$ j $ ist der Ruck.
$ V_ {max} $ ist die maximale Geschwindigkeit.
Als Test mit Ihren Werten:
$ \ Delta x = 2 m, a = 1 m / s ^ 2, d = 1 m / s ^ 2, j = 1 m / s ^ 3, V_ {max} = 1 m / s $, ich finde:
$$ \ 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 $$
, was das richtige Ergebnis ist.
Ich bin also ziemlich zuversichtlich die Formel.
[BEARBEITEN] Die Formel, um einen Ruck zu erhalten, lautet:
$$ j = \ frac {a + d} {2 (\ Delta t – \ groß \ frac {\ Delta x} {\ groß V_ {max}}) – V_ {max} (\ groß \ frac {1} {a} + \ large \ frac {1} {d})} $$
[EDIT 2]
Das verwendete Modell lautet:
Phase 1: Konstante ( positiv) Ruck $ j $
Phase 2: konstante Beschleunigung $ a $
Phase 3: konstanter (negativer) Ruck ($ – j $)
Phase 4: konstante Geschwindigkeit $ V_ {Max} $
Phase 5: konstanter (negativer) Ruck ($ – j $)
Phase 6: konstante Verzögerung ($ d $)
Phase 7: konstanter (positiver) Ruck ($ j $)
In den obigen Formeln gibt es Einschränkungen, genauer gesagt die Dauer der Phasen 2, 4, 6 muss Seien Sie 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 $$
Wenn eine dieser Bedingungen nicht erfüllt ist, bedeutet dies, dass die für das Modell angenommene Hypothese inkohärent ist nt, also brauchen wir ein anderes Modell.
Kommentare
- DANKE! Ich schätze die Zeit, die Sie aufgewendet haben, um mir zu helfen. Ich ' verschiebe das in die SPS und sehe, wie es geht. Ich muss noch herausfinden, ob ich nach j löse, wenn Delta T bekannt ist, aber das kann ich wahrscheinlich schaffen. Machen Sie weiter so.
- Hier ist die SPS-Berechnung für die Zeit, wie Sie oben erwähnt haben:
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) );
- NEIN, Ihre erste Formel für Ruck ist nicht richtig. Ich habe die Antwort für die richtige Formel bearbeitet. Ihre letzte Formel (für die Zeit) scheint korrekt zu sein. Was ist übrigens SPS?
- Ja, Sie haben Recht. Ich habe diesen Kommentar entfernt. Der richtige SPS-Code zum Auffinden von Ruck sollte lauten:
fJerkCalc := (fAccel_M + fDecel_M) / ( ( 2 * (fMoveTime_S - (fDeltaPos_M / fVMax_M))) - (fVMax_M * ((1/fAccel_M)+(1/fDecel_M)) ) );
- SPS ist eine ' programmierbare Logiksteuerung ', im Grunde ein Mikrocontroller oder ein Echtzeitcomputer für den industriellen Einsatz. Ich ' verwende es, um einen 4-Achsen-Bestückungsroboter zu koordinieren und zu steuern. Ich ' bin sehr nahe daran, es richtig zu machen, aber irgendwo stimmt noch etwas nicht. Die Formeln scheinen jedoch gut zu sein.