Bonsoir à tousarmaris a dit:Pour info, j'ai développé un contrôleur 16 axes sur Ethernet - 4 mois de boulot à 3.
Parmis les options que l'on avait envisagé :
- DSP
- FPGA
- circuit spécialisé (solution retenue)
en FPGA, voir OpenCore et carte Mesa Electronic (ils ont un code gratuit sur leur site pour un contrôleur servo ou PaP avec retour codeur)
en CI spécialisé, nous avons choisis NPM (Nippon Pulse Motor), le 6045 gère 4 axes à 20 MHz sur des registres de 24 bit. il gère toutes les interpolations, S-curve, jerk, etc,... environ 100$ pièce.
Ce circuit est disponible en carte PCI avec driver Linux(en source)/Windows à environ 600€ chez ADLINK.
Regarde aussi du coté de chez Trinamic (allemand), le TMC428 + TMC239/246 est très sympa et pas cher.
Au final nous avions une solution µC 32 bit (ARM7/9) sous µC-linux qui gèrait la partie réseau + synchro réseau 1588 + 4x6045 pour les 16 axes.
CNCSERV a dit:Si je comprend bien le 6045 c'est comme Marie, c'est pas parque c'est déja fait qu'il ne faut rien faire.
Déja avec cette résolution la douceur du PàP est un pur régal.Otatiaro a dit:Raaaahhh cette foutue conversion minutes / secondes ...
Au final, en prenant un micropas 16, ca me fait 200*16 = 3200 step / rev et avec une vis a bille de 5mm de pas ca fait 640 step / mm.
En tablant sur une vitesse de 50mm/s (extrapolation selon mes perfs actuels et le gain espéré en changeant les drivers et l'alim), ca fait 32KHz.
Bref avec Mach3 et son noyau a 40KHz, la boucle est bouclée.
CNCSERV a dit:Déja avec cette résolution la douceur du PàP est un pur régal.Otatiaro a dit:Raaaahhh cette foutue conversion minutes / secondes ...
Au final, en prenant un micropas 16, ca me fait 200*16 = 3200 step / rev et avec une vis a bille de 5mm de pas ca fait 640 step / mm.
En tablant sur une vitesse de 50mm/s (extrapolation selon mes perfs actuels et le gain espéré en changeant les drivers et l'alim), ca fait 32KHz.
Bref avec Mach3 et son noyau a 40KHz, la boucle est bouclée.
Christian
Je pense que c'est un argument commercial. A partir d'un certaine fréquence, micropas ou pas, la forme du courant est quasi identique. J'ai fait il y a quelques temps un essai de moteur avec un oscillo sur un resistance shunt pour voir le courant dans le moteur. En fait déja a partir d'une fréquence assez basse on ne distingue plus les pas intermédiaires. J'ai toujours les videos sur mon PC si ça interresse.MaX-MoD a dit:Au fait, un bon driver de pap passe en mode plein pas ou demi pas à partir d'une certaine vitesse pour garder plus de couple.
Max
MaX-MoD a dit:Et quant à l'hystérésis sur un pas, il est faible et je crois qu'il n'augmente pas en micropas,
Max
CNCSERV a dit:4800 tr/mn en 4000 pas/rev. (avec un mauvais driver).
Y'a pas de quoi, c'est le but du forum partager expériences et connaissances.Otatiaro a dit:Merci armaris pour tes conseils et informations !
exact, pour ma part j'ai EMC2 + 2 ports //, ça tiens 40 kHz sans problème sur un vieux Athlon 1.5 GHz.Otatiaro a dit:Faire une carte avec Linux et EMC2 ... pour interfacer sur un PC, je vois pas tellement l'interet, autant utiliser EMC2 directement (ou alors j'ai loupé un bout.
passe à EMC2Otatiaro a dit:Pour le trinamic, j'ai regardé, c'est vraiment sympa ... le seul défaut, mais de taille pour mes besoins qui arrivent bientôt, c'est qu'il ne gère que 3 axes. Vu que je devrais bientôt passer en 4 axes .... :(
C'est un protocole TCP/IP et il y a des implémentation hard (XScale chez Intel) ou soft (le daemon linux est gratuit), sur Windows c'est payant (driver kernel à 1000$).Otatiaro a dit:Je connais pas le protocole 1588, faut que je zieuteC'est un protocole hard ou soft ? Dispo sur du matos grand public ?
Effectivement la synchro entre puce est problèmatique. La synchro circulaire (sur 6045 uniquement, pas chez trinamic) se fait uniquement au sein d'une puce. Pas d'hélicoïdale chez NPM.Otatiaro a dit:Pour synchroniser le mouvement de la machine sur deux cartes séparées, par contre, je ne pense pas que ce soit aussi simple, imaginons que tu définisse la limite de vitesse de tes axes X et Y a une valeur très faible, et tes axes Z et A sont très rapides.
Tu veux un mouvement qui fait bouger les 4 axes, avec une avance théorique supere élevée.
Automatiquement, ta carte qui gère les axes X, Y et Z va ralentir le mouvement pour ne pas surcharger les axes X et Y, mais ca, la carte qui gère l'axe A, n'en sait rien, et donc ira plus vite -> desynchro.
Maintenant c'est ce que je pense, je ne connais pas du tout ce genre de puces et leur gestion, p'tet que je dis une grosse connerie ... mais si c'est aussi simple que tu dis, ca permettrais de mettre deux TMC428 pour gérer jusqu'a 6 axes ?
Quid d'une interpolation circulaire sur deux axes gérés par deux cartes différentes ? (d'ailleurs j'ai rien vu a propos des interpolations circulaires, helicoidales, etc, c'est géré aussi j'imagine ?).
Je travaille sur un projet de ce type en ce moment mais ça reste cher pour une voie. En plus j'ai rajouté le PoE (Power over Ethernet) pour simplifier le câblage. Dans mon cas, ce sont des axes de positionnement qui ne demande que peu de puissance (quelques Watt).Otatiaro a dit:Sinon ca serait possible, d'après tes connaissances, de faire des cartes de contrôle 1 axe, et de les mettre sur le même bus ethernet ? comme ca la modularité est excellente, un module par axe, un module avec des IO pour tout le reste, un switch, et hop c'est parti ... on peut même coller le controleur 1 axe directement au cul du moteur, juste un cable ethernet et une prise alim a lui mettre ...
Maison, mais c'est assez simple.Otatiaro a dit:Et quid des logiciels qui vont lire le G-Code et balancer les infos au controleur de mouvement ? Il en existe des configurables, ou il faut forcément passer par du logiciel maison ?
Je n'ai que 160 kHz serai-je un menteur ?, je verifieOtatiaro a dit:CNCSERV a dit:4800 tr/mn en 4000 pas/rev. (avec un mauvais driver).
Ca fait quand même même 320KHz de step ... pour un mauvais driver, je trouve qu'il s'en sort pas si mal ... si tu en as de trop je veux bien te débarasser
++
armaris a dit:passe à EMC2Otatiaro a dit:Pour le trinamic, j'ai regardé, c'est vraiment sympa ... le seul défaut, mais de taille pour mes besoins qui arrivent bientôt, c'est qu'il ne gère que 3 axes. Vu que je devrais bientôt passer en 4 axes .... :(
armaris a dit:C'est un protocole TCP/IP et il y a des implémentation hard (XScale chez Intel) ou soft (le daemon linux est gratuit), sur Windows c'est payant (driver kernel à 1000$).Otatiaro a dit:Je connais pas le protocole 1588, faut que je zieuteC'est un protocole hard ou soft ? Dispo sur du matos grand public ?
Ce sont des solutions industrielles.
armaris a dit:Effectivement la synchro entre puce est problèmatique. La synchro circulaire (sur 6045 uniquement, pas chez trinamic) se fait uniquement au sein d'une puce. Pas d'hélicoïdale chez NPM.Otatiaro a dit:Pour synchroniser le mouvement de la machine sur deux cartes séparées, par contre, je ne pense pas que ce soit aussi simple, imaginons que tu définisse la limite de vitesse de tes axes X et Y a une valeur très faible, et tes axes Z et A sont très rapides.
Tu veux un mouvement qui fait bouger les 4 axes, avec une avance théorique supere élevée.
Automatiquement, ta carte qui gère les axes X, Y et Z va ralentir le mouvement pour ne pas surcharger les axes X et Y, mais ca, la carte qui gère l'axe A, n'en sait rien, et donc ira plus vite -> desynchro.
Maintenant c'est ce que je pense, je ne connais pas du tout ce genre de puces et leur gestion, p'tet que je dis une grosse connerie ... mais si c'est aussi simple que tu dis, ca permettrais de mettre deux TMC428 pour gérer jusqu'a 6 axes ?
Quid d'une interpolation circulaire sur deux axes gérés par deux cartes différentes ? (d'ailleurs j'ai rien vu a propos des interpolations circulaires, helicoidales, etc, c'est géré aussi j'imagine ?).
armaris a dit:Je travaille sur un projet de ce type en ce moment mais ça reste cher pour une voie. En plus j'ai rajouté le PoE (Power over Ethernet) pour simplifier le câblage. Dans mon cas, ce sont des axes de positionnement qui ne demande que peu de puissance (quelques Watt).Otatiaro a dit:Sinon ca serait possible, d'après tes connaissances, de faire des cartes de contrôle 1 axe, et de les mettre sur le même bus ethernet ? comme ca la modularité est excellente, un module par axe, un module avec des IO pour tout le reste, un switch, et hop c'est parti ... on peut même coller le controleur 1 axe directement au cul du moteur, juste un cable ethernet et une prise alim a lui mettre ...
Il te faut toujours un contrôleur central (PC sous OS temps réel).
armaris a dit:Maison, mais c'est assez simple.Otatiaro a dit:Et quid des logiciels qui vont lire le G-Code et balancer les infos au controleur de mouvement ? Il en existe des configurables, ou il faut forcément passer par du logiciel maison ?
C'est un glissement (perte de pas continue)J'ai fait un autre test de vitesse avec un PàP à vide, Avec les même rampes, j'ai atteind 2500tr/mn en 400 pas/rev et 4800 tr/mn en 4000 pas/rev. (avec un mauvais driver Wink ). Que faut-il en penser ?
Otatiaro a dit:Après un rapide coup d'oeil au protocole IEEE1588, ca ne semble pas intégré aux switch a 10€ qu'on trouve chez les chinois
Oh la! non non, pas de glissement, pas de perte de pas. Même apres plusieurs aller retour le moteur revient pile poil au même endroit. Pourtant 4800tr/mn c'est la vitesse limite aprés ca décroche. Personnellement je n'ai jamais contaté de glissement à haute vitesse, mais je ne depasse pas 1500tr/mm non plus en usage normal.armaris a dit:Il y a une ambiguité dans les discussions précédentes sur le contrôle temps-réel :
C'est un glissement (perte de pas continue)
Si tu mets un codeur sur ton axe moteur, tu verrais ta perte de pas à partir d'une certaine vitesse.
Et tu vois aussi plein d'autre choses avec un codeur haute résolution (j'utilise un AEDA-3200 - 30000 pas/tr en 4x) : rebonds, non-linéarité, ...
armaris a dit:Le glissement dépend de la charge, effectivement à vide c'est difficiarmaris a dit:Le glissement dépend de la charge, effectivement à vide c'est difficile de perdre des pas.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?