Mouvement moteur en fonction d'une courbe
Publié : 14 févr. 2020, 10:12
Bonjour à tous,
Je dois actuellement reproduire une courbe (pour l'instant sinusoïdale mais elle peut-être amenée à changer) de positions d'un axe linéaires en fonction de l'évolution d'un cycle. En gros à tel moment dans le cycle l'axe doit-être à telle position. La vitesse est donc amenée à être modifiée tout au long du cycle. Actuellement pour faire ça j'utilise un mc_movejog, en contrôlant la position de l'axe (via le codeur intégré au moteur), je viens modifier la vitesse pour l'adapter jusqu'au point de contrôle suivant.
Cependant je me suis rendu compte que lorsque j'atteins les extrémités de la course, l'axe dépasse légèrement les valeurs limites. Cela reste acceptable pour un temps pas trop court. Lorsque je ralentis le temps de cycle, la vitesse est forcément augmentée et ce dépassement s'accentue, jusqu'à un point ou l'axe est perdu et s'arrête (empêchant la répétabilité des cycles).
Je suppose que cela est du au au fait que je n'ai pas de consigne de position. J'ai donc essayer de remplacer le movejog par un moveabsolute devant aller d'une extrémité à l'autre, que je pulse à chaque fois que la vitesse doit-être modifiée. Mais cela ne marche pas bien sûr ! Pourriez-vous m'aider svp parce que la je sèche...
Je fais mon programme sous TIA v15.1 et j'ai un automate s7-1500T. La communication se fait un profinet. Pour info, afin de respecter au plus fidèlement la courbe, je la divise en 360 points et je calcul la vitesse nécessaire pour aller d'un point à l'autre en fonction de la cadence demandée. Je stock donc toutes les valeurs dans un tableau.
Merci
Je dois actuellement reproduire une courbe (pour l'instant sinusoïdale mais elle peut-être amenée à changer) de positions d'un axe linéaires en fonction de l'évolution d'un cycle. En gros à tel moment dans le cycle l'axe doit-être à telle position. La vitesse est donc amenée à être modifiée tout au long du cycle. Actuellement pour faire ça j'utilise un mc_movejog, en contrôlant la position de l'axe (via le codeur intégré au moteur), je viens modifier la vitesse pour l'adapter jusqu'au point de contrôle suivant.
Cependant je me suis rendu compte que lorsque j'atteins les extrémités de la course, l'axe dépasse légèrement les valeurs limites. Cela reste acceptable pour un temps pas trop court. Lorsque je ralentis le temps de cycle, la vitesse est forcément augmentée et ce dépassement s'accentue, jusqu'à un point ou l'axe est perdu et s'arrête (empêchant la répétabilité des cycles).
Je suppose que cela est du au au fait que je n'ai pas de consigne de position. J'ai donc essayer de remplacer le movejog par un moveabsolute devant aller d'une extrémité à l'autre, que je pulse à chaque fois que la vitesse doit-être modifiée. Mais cela ne marche pas bien sûr ! Pourriez-vous m'aider svp parce que la je sèche...
Je fais mon programme sous TIA v15.1 et j'ai un automate s7-1500T. La communication se fait un profinet. Pour info, afin de respecter au plus fidèlement la courbe, je la divise en 360 points et je calcul la vitesse nécessaire pour aller d'un point à l'autre en fonction de la cadence demandée. Je stock donc toutes les valeurs dans un tableau.
Merci