Je « cherche une équation pour trouver le temps nécessaire pour un déplacement de position, étant donné $ V_ {max} $ connu, une accélération, une décélération, une secousse et un déplacement constants (connus) et une vitesse initiale de 0.
Jessaie destimer calculer le temps quil faudra à un axe de servomoteur pour parcourir une certaine distance. Une fois que je connais le temps estimé de ce mouvement, je peux résoudre les secousses pour lautre axe. De cette façon, je choisis une vitesse « lente » optimale pour nimporte lequel des deux Laxe a une distance de déplacement plus courte pour utiliser au maximum mon temps.
Pour info, il sagit dun portique robot XY pick and place.
Commentaires
- En supposant $ \ Delta x = (a / 2) * t ^ 2 + (j / 6) * t ^ 3 $, trouver t revient au même que résoudre un équation cubique
- Merci, je ' je vais commencer par ça et voir ce que je vais trouver avec th.
- Si vous êtes daccord avec léquation que je donne ci-dessus, et si vous avez des problèmes, je vais essayer de vous donner une réponse complète.
- Cool. Merci. Alors … je fais un déplacement avec des paramètres:
- Oups. Repost: Je fais un mouvement avec les paramètres: Vmax = 1000 mm / s, accél = 1000 mm / s ^ 2, décél = 1000 mm / s ^ 2, Jerk = 1000 mm / s ^ 3, et le déplacement est de 2000 mm. Jai chronométré ce mouvement à environ 4,0 secondes, donc cela devrait être la réponse, mais je dois obtenir léquation qui en résulte pour différentes variables dentrée. (notez que laccélération et la décélération ne sont pas nécessairement les mêmes). Merci de lavoir regardé, je suis un peu hors de ma ligue en mathématiques.
Réponse
I donne le résultat de mon calcul sans les détails:
Le résultat est:
$$ \ 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}) $$
où:
$ \ Delta t $ est le temps total.
$ \ Delta x $ est le déplacement total.
$ a $ est laccélération maximale.
$ d $ est la décélération maximale.
$ j $ est le jerk.
$ V_ {max} $ est la vitesse maximale.
À titre de test, avec vos valeurs:
$ \ Delta x = 2 m, a = 1m / s ^ 2, d = 1m / s ^ 2, j = 1 m / s ^ 3, V_ {max} = 1m / s $, je trouve:
$$ \ 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 $$
qui est le résultat correct.
Je suis donc assez confiant la formule.
[EDIT] La formule pour obtenir le jerk est:
$$ 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]
Le modèle utilisé est:
Phase 1: constante ( positive) jerk $ j $
Phase 2: accélération constante $ a $
Phase 3: constante (négative) jerk ($ – j $)
Phase 4: vitesse constante $ V_ {Max} $
Phase 5: saccade constante (négative) ($ – j $)
Phase 6: décélération constante ($ d $)
Phase 7: secousse constante (positive) ($ j $)
Dans les formules ci-dessus, il y a des contraintes, plus précisément la durée des phases 2, 4, 6 doit soyez positif:
$$ \ 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 $$
Si lune de ces contraintes nest pas satisfaite, cela signifie que les hypothèses prises pour le modèle sont incohérentes nt, nous avons donc besoin dun autre modèle.
Commentaires
- MERCI! Japprécie le temps que vous avez passé à maider. Je ' Je vais déplacer cela vers lAPI et voir comment cela se passe. Jai encore besoin de trouver une solution pour j lorsque le delta T est connu, mais je peux probablement gérer cela. Continuez votre bon travail.
- Voici le calcul du temps de lautomate comme vous lavez mentionné ci-dessus:
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) );
- NON, votre première formule pour jerk nest pas correct. Jai fait une modification dans la réponse pour la formule correcte. Votre dernière formule (pour le temps) semble correcte. Au fait, quest-ce que le PLC?
- Oui, vous avez raison. Jai supprimé ce commentaire. Le code API correct pour trouver Jerk doit être:
fJerkCalc := (fAccel_M + fDecel_M) / ( ( 2 * (fMoveTime_S - (fDeltaPos_M / fVMax_M))) - (fVMax_M * ((1/fAccel_M)+(1/fDecel_M)) ) );
- Lautomate est un ' contrôleur logique programmable ', essentiellement un microcontrôleur ou un ordinateur temps réel à usage industriel. Je ' m l’utilise pour coordonner et contrôler un robot pick and place 4 axes. Je ' je suis très proche davoir raison, mais il y a encore quelque chose qui ne va pas quelque part … Les formules semblent bonnes cependant.