Gestion d’axes rotatifs sur un contrôleur CNC autonome fait maison !

saci
Apprenti
12 Octobre 2013
145
Ile De France
  • Auteur de la discussion
  • #1
Bonjour à tous,

J’essais de développer un contrôleur CNC autonome pour gérer une machine à 3 axes linéaires et au moins un axe rotatif, @Arnaud avais déjà fait une très belle réalisation mais malheureusement elle ne répond pas à mes besoins, notamment la gestion d’axes rotatifs, l’introduction manuelle de données MDI et la gestion de la manivelle MPG.

Ce qui concerne la partie hardware, j’ai déjà réalisé presque la totalité des modules. La partie software est en cours de développement, ça avance tout doucement au rythme d’une tortue !

En gros, mon système serait capable de :

- Gérer 4 à 6 axes à une fréquence assez élevée entre 200 et 400Khz.

- Effectuer une interpolation linéaire, circulaire et hélicoïdale.

- Interpréter un fichier gcode d’une taille d’au moins 100Mo lu à partir d’une clé USB et afficher l’avancement et l’état de la machine ainsi que les compteurs sur un écran TFT de 7 pouces.

- Gérer les commandes temps réel tel que Feedhold, Resume, Feed/Rapid/Spinde Override.

- Gérer une manivelle MPG.

- Gérer l’introduction manuelle des données MDI.

- Effectuer les opération traditionnelle ( prise d’origines, palpage d’outil…)

voici à quoi ça devrait ressembler :


terminal1.jpg



Mon problème :

Au niveau de la partie interpolation, je sollicite votre aide pour essayer de comprendre comment la valeur de la vitesse d’avance « F » est gérée et interprétée par un interpolateur lorsque une ligne gcode contient au même temps des axes linéaires et rotatifs. Par exemple, si l’interpolateur reçoit la commande « G21 G1 X100 A360 F360 », quelle serait la vitesse d’avance de l’axe X en mm/min, et celle de l’axe A en deg/min ? Autrement dit, quelle est l’unité de F vue par l’interpolateur : mm/min ou deg/min ? J’avoue que j’ai du mal à comprendre.
 
saci
Apprenti
12 Octobre 2013
145
Ile De France
  • Auteur de la discussion
  • #3
Bonjour @CNCSERV,

Si j’ai bien compris, ta méthode consiste à convertir un axe linéaire en un axe rotatif on multipliant la vitesse et/ou le déplacement par un facteur qui prendra en compte le diamètre de la pièce brute à usiner, donc il suffira de déclarer tout les axes comme étant des simples axes linéaires, ce qui simplifiera vachement la programmation, puis créer pour chaque axe rotatif un paramètre, réglable par l’utilisateur, qui assurera cette conversion. Si cela est correcte, pourquoi pas attribuer cette tache de conversion au post-processeur ça serait encore plus simple. Que penses-tu ?

En cherchant sur le net, j’ai trouvé un petit article qui expose beaucoup mieux le problème :

Voici le lien :

http://galaad.forumactif.com/t51-g-codes-iso-et-axes-rotatifs


.
 
CNCSERV
Compagnon
27 Décembre 2007
4 845
FR-28360
convertir un axe linéaire en axe rotatif est une autre solution très intéressante.

Ce que je proposais c'est le contraire, convertir un axe rotatif en axe linéaire Y pour calculer les longueurs de déplacement et donc la vitesse.
en revanche si tu veux faire faire du 4 axes continu, ça devient beaucoup plus compliqué pour calculer la position de la fraise par rapport à la pièce.
Dans les 2 cas c'est beaucoup plus simple de travailler sur microvecteurs.
 
saci
Apprenti
12 Octobre 2013
145
Ile De France
  • Auteur de la discussion
  • #5
En effet, je n’ai pas pris le problème trop au sérieux pensant que c’était un petit détail à régler mais apparemment c’est beaucoup plus compliqué que ça. Je vais au premier temps essayer de faire en sorte que les six axes se comportent comme des simples axes linéaires et appliquer les différentes formules de conversion au niveau du post-processeur cela permet d’aller plus vite pour vérifier la faisabilité avant de confier cette mission de conversion au microcontrôleur de la carte d’interpolation.

A propos de cette carte d’interpolation, il s’agit d’une carte déportée montée sur un support DIN, qui fait office d’une carte d’interpolation et de breakout-board pour simplifier le câblage des moteurs, fin de course, bouton d’arrêt d’urgence, palpeur, on y trouve aussi quelques relais pour la commande d’un variateur pour la broche et l’arrosage… elle assure notamment l’alimentation du terminal.


breakout1.jpg
 
saci
Apprenti
12 Octobre 2013
145
Ile De France
  • Auteur de la discussion
  • #7
Le MCU sur le terminal est un stm32f7 à 216Mhz ( choisi pour assurer la transition, très bientôt, vers le stm32h7 ), sur la carte déportée c’est un stm32f4 à 180Mhz suffisamment puissant pour ce genre d’application. Un autre stm32f1 est utilisé sur un petit module qui s’occupe exclusivement du clavier ( matrice 8 x8 ) avec la gestion des trois codeurs, des « long click » et les bip sonore.

Les PCBs sont déjà réalisés et fonctionnels, les deux port USB sur le terminal sont utilisés pour accéder aux support de stockage de mass, mais l’un des deux peut être configuré pour connecter le terminal au PC en mode « Device » afin d’accéder à la micro SD intégrés ( dans ce cas le terminal sera vu par le PC comme un simple lecteur logique ) . un petit module WIFI permettra de connecter le terminal à un PC ou tablette pour transférer rapidement des fichiers gcode de petite taille, et manipuler les paramètres de la machine, aussi je prévois l’utilisation de cette connexion WIFI pour envoyer des messages et des notifications pendant l’usinage ( fin de programme, arrêt anormal pendant d’usinage, alarme sur fin de course, activation programmée d’une macro spécifique …ect).


TERM3.jpg


Edit: reduction de la taille de l'image.
 
Dernière édition:
CNCSERV
Compagnon
27 Décembre 2007
4 845
FR-28360
Quel boulot:shock:

Ma carte n'est pas aussi aboutie, elle est toujours a phase de développement et elle va l'être pour une nouvelle série encore.
Je n'ai pas du tout de temps pour travailler dessus. Je me sert toujours d'une carte Olimex.


Elle ne fait pas l'interpolation ni l'automatisme qui sont gérés par le PC.

Elle gère 7 axes en Pas a Pas ou en servomoteurs boucle fermée (avec une carte fille),
une entrée matrice 8X8,
2 codeurs,
16/IO dont 8 en Opto configurable.
2 sorties 0-10V et 4 entrèes analogiques.

Cette photo est d'aujourd'hui la carte est intégrée dans l'ancien coffret CN de la machine:
WP_20171023_16_44_10_Pro[1].jpg
 
saci
Apprenti
12 Octobre 2013
145
Ile De France
Wow ,Magnifique ! rien qu’intégrer un automate c’est déjà très intéressant car ça règle pas mal de problème dans une application réelle ( je veux dire sur le terrain ).

C’est vraiment dommage que tu n’aie pas de temps pour t’en occuper ! Ça a l’ère vraiment professionnelle et ça mérite vraiment qu’on lui donne un « look » convenable ! ( je veux dire un boitier industriel moderne )

En tout cas bravo ! et je ne parle même pas du soft que tu as du développer pour gérer tout ça ! je sais que c’est du costaud, ça ne peut pas être autrement !
 
Dernière édition:
saci
Apprenti
12 Octobre 2013
145
Ile De France
Autrement dit, quelle est l’unité de F vue par l’interpolateur : mm/min ou deg/min ?

Je me rends compte que la question ne devrait pas se poser, en faite, la valeur de F dans une ligne Gcode n’exprime pas une vitesse de déplacement d’un axe linéaire ni une vitesse de rotation d’un axe rotatif, mais plutôt la vitesse relative du mouvement de l’outil par rapport à la pièce à usiner (ou aussi de la pièce par rapport à l’outil), donc cette vitesse est toujours exprimée en mm/min... c'est la fameuse vitesse de coupe !

Un cas particulier, quand le mouvement est effectué sur un seul axe linéaire, cette valeur de F exprimera la vitesse de déplacement de l’axe lui-même. Sinon, pour 3 axes linaires, F exprimera la résultante des vecteurs des vitesses de déplacement des 3 axes linéaires (qui peuvent avoir chacun une valeur différente de l’autre).

Pour un système avec 3 axes linaires et un axe rotatif, c’est la même chose, F est la résultante des vecteurs de vitesse des axes linéaires et la vitesse tangentielle de l’axe rotatif calculée en tenant en compte le diamètre de la pièce.
 
La dernière réponse à ce sujet date de plus de 6 mois
Haut