[FAO][VB.net] actions simultanées pilotage moteurs DC MAXON

Résolu
berserker42 Messages postés 32 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 26 juillet 2015 - 15 déc. 2012 à 11:07
 Utilisateur anonyme - 3 avril 2013 à 12:56
Bonjour à tous,

J'ai fait des recherches sur le forum mais je n'ai pas trouvé de réponses claires.

Avec un compilateur de fichier Compilateur .aptsource.. Je souhaits piloter N moteurs DC grâce à leur drivers.
Le fabricant fournit déjà une source pour 1 moteur.

Actuellement avec mon compilateur et la source du fournisseur, ça fonctionne. Je n'ai pas encore testé pour N drivers (ici max=5). Pas encore câblé.

Ma question est la suivante peut-on déclencher N actions en simultanées?

Pour une CN il ne faut pas qu'un axe termine son mouvement avant les autres. Si je pouvais les lancer en même temps ce serait un plus, après pour la fin cela dépendra des paramètres cinématique et dynamique de chacun.

Config:
Microsoft visual studio 2008
drvier EPOS 70/10
maxon motor

9 réponses

Utilisateur anonyme
15 déc. 2012 à 14:30
Bonjour,

Tu ne donnes aucun code pour se faire une idée...
Voir du côté des threads.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
15 déc. 2012 à 14:38
Bonjour,
Si je pouvais les lancer en même temps ce serait un plus, après pour la fin cela dépendra des paramètres cinématique et dynamique de chacun

C'est étrange, mais avant de penser informatique, je penserais personnellement physique.
Car je suppose qu'il s'agit de moteurs électriques. Or, pour autant que je le sache, un moteur électrique possède une inertie intrinsèque et n'atteint donc sa vitesse "de croisière" qu'après un certain temps, pouvant varier d'un moteur à l'autre, y compris si moteurs apparemment identiques
Si c'est pour une synchronisation, la démarche n'aboutira pas du seul fait de les lancer tous ensemble.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
15 déc. 2012 à 14:43
Bonjour ucfoutu,

C'est pour cela que j'ai suggéré la mise en oeuvre de plusieurs threads.
Une bonne gestion de ceux-ci (surveillance de leur état d'avancement) permettra une synchronisation efficace pour les tâches suivantes. En gros, ils attendront que le moteur le plus lent ai fini son travail pour effectuer la tâche suivante.

Et bon dimanche ...
0
berserker42 Messages postés 32 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 26 juillet 2015
15 déc. 2012 à 14:55
Salut,

Merci pour vos commentaires.



Pour le côté physique je suis plus que d'accord c'est la base. le soft que fournit le fabricant le prend en compte cet aspect là. Il intègre aussi le calcul du PID (Proportionnel, Intégral, et Dérivé) pour l'asservissement.

Il existe beaucoup de paramètres dans ce soft. (rampes d'accélérations, types, surveillances de positions,...) enfin de quoi faire de la régulation de vitesse, de position .....

Je voudrais que la première Trame de données de chaque axes partent en même temps. Car ensuite il y a une option qui permet d'attendre que le déplacement soit terminé. Donc après normalement les axes sont synchros en théorie.

Mais je vais creuser car la doc constructeur est assez complète mais en anglais, il faut un bon moment de lecture.

Merci et bon Week end
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
15 déc. 2012 à 14:56
Même ainsi, banana32, plusieurs fils ne seront pas suffisants à assurer une synchronisation.
Il faudrait, pour y parvenir, une sorte d' "embrayage" de tous une fois la vitesse de croisière atteinte par tous. Et encore ! même cela ne serait pas suffisant dans certains cas !... car il faudrait s'assurer dans certains cas de l'état angulaire de chacun (ce qui nécessiterait une surveillance par oscilloscope).


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Utilisateur anonyme
15 déc. 2012 à 15:43
Bonjour,
Du coté logiciel, le fait de le fait de lancer plusieurs threaheads ne pose pas de problème (comme dit Banana32)

Du coté physique, comme dit Ucfoutu, tout dépend du moteur même s'ils paraissent identiques.
Un point à ne pas oublier : vérifier l'inertie ramenée au moteur. Avec un pas-à-pas, par exemple, il est recommandé de ne pas dépasser l'inertie du rotor du moteur sinon, il y a des problèmes de démarrage. A voir avec le constructeur du moteur.

Pour ramener les inerties à l'arbre moteur, il faut d'abord ramener la masse de l'objet et de ce qu'elle porte en inertie, en utilisant la même fonction que pour ramener l'effort de poussée en couple, mais il faut l'élever au carré :

J = M.(p/(2.pi))²

ou

J = inertie en kg.m²
M = masse translatée en kg
p = pas du système vis/écrou en m

ensuite il faut calculer l'inertie propre de la vis et de tout ce qui tourne avec, et l'ajouter au J trouvé ci-dessus.

S'il y a un réducteur entre le moteur et la vis, il faut multiplier la valeur trouvée par le carré du rapport de réduction (si par ex. réd. 1/10, on multiplie l'inertie par 1/100)



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
berserker42 Messages postés 32 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 26 juillet 2015
15 déc. 2012 à 16:02
Bonjour,

merci pour les commentaires.

niveau mécanique je suis au courant, mais très bon rappel

Voici une petite vidéo du soft avec la démo pour 1 axe. Les autres cartes sont en cours de câblages.

Premier run Désolé on ne voit pas grand chose.

Je regarderais comment ça fonctionne avec 2 moteurs pour commencer.
++
0
berserker42 Messages postés 32 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 26 juillet 2015
30 mars 2013 à 18:22
Re bonjour,

Désolé de ne pas avoir donné de nouvelles concernant ce sujet. je viens de terminer de déménager sur Toulouse et je n'ai pas eu le temps de creuser. Mais j'ai eu l'occasion d'avancer mon appli pour piloter les moteurs.

Alors concernant les threads je n'ai rien essayé trop complexe pour moi encore.

Cependant. En re lisant la doc du constructeur, je peut changer la vitesse des moteurs.

la démarche:

DO-> EOF
ouverture du fichier de points
lire la ligne
récupérer les valeurs de chaque axes
calculer le vecteur outil
recalculer la vitesse sur chaque axes
envoyer la vitesse aux drivers
faire le mouvement
LOOP

Ici ça "devrait" fonctionne
Le problème c'est qu'il y a bcp de données et une erreur remonte de la communication "CANopen" je crois.
"06090030h Valeur des paramètres écrits hors de la plage autorisée "

j'ai rajouté une "tempo" sleep(x) mais suite à cette commande le pc ce givre (vieux PC), en re-regardant la doc il y a eu fonction qui permet d'attendre la fin du mouvement.
WaitForTargetReached(tps)

pas encore testée je vous tiendrais au courant.
0
Utilisateur anonyme
3 avril 2013 à 12:56
Re:
Très confus tout ça, de quelle façon tu ouvres et lis le fichier?
j'ai rajouté une "tempo" sleep(x)

Avec quel langage travailles-tu?

Affiche nous ton code, n'oubliant pas d’indenter avec les balises de code (troisième icone en partant de droite)

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0