4 ou 5 axes avec mach3 ---> quel generateur de code?

  • Auteur de la discussion PL50
  • Date de début
P

PL50

Compagnon
Bonjour, j'ai téléchargé la version d'essai de cambam, et je vois qu'avec on peut faire au max du 4 axes positionné en bricolant un peu.
j'ai regardé du coté de camworks, solidcam, etc... car je me pose la question du 4 et/ou 5 axes continus. ce que j'ai compris, c'est que ces softs doivent intégrer un post processeur adapté à la CN. mais y en a t il d'adapté à mach3? je n'en ai pas l'impression.
sinon quel logiciel est capable de générer un gcode 4 ou 5 axes continu compatible avec mach3?
 
V

vince_007

Compagnon
Mastercam est un logiciel de FAO capable de générer du gcode en 4 et 5 axes continu. Le post processeur c'est juste la passerelle entre le logiciel de FAO et la machine (mach3). Mastercam génère du gcode compatible Mach3 avec le post processeur Fanuc intégré ou celui de ton lien.
Ensuite, pour faire tu 4 et 5 axes continues avec Mach3, t'a intérêt à avoir un contrôleur matériel externe, pas une carte USB à 2 balles ou le port //.
 
P

PL50

Compagnon
Mastercam est un logiciel de FAO capable de générer du gcode en 4 et 5 axes continu. Le post processeur c'est juste la passerelle entre le logiciel de FAO et la machine (mach3). Mastercam génère du gcode compatible Mach3 avec le post processeur Fanuc intégré ou celui de ton lien.
Ensuite, pour faire tu 4 et 5 axes continues avec Mach3, t'a intérêt à avoir un contrôleur matériel externe, pas une carte USB à 2 balles ou le port //.
Bonjour Vince;
je suppose que tu parles de ça:
http://www.cs-lab.eu/en/produkt-2,2...otion_Controller_STEPDIR_with_connectors.html

a+
 
V

vince_007

Compagnon
Oui, c'est celui que j'utilise mais il en existe d'autre plus ou moins cher. Pour avoir tourné sur le port // pendant quelques années, je peux dire que je ne regrette absolument pas l'investissement. La je regarde pour mettre la broche sur servo pour faire du taraudage rigide.
 
V

vres

Compagnon
Bonjour,
Pour faire du 5 axes continus il faut que la FAO connaisse la cinématique exacte de la machine.
Si un ou deux axes rotatifs sont sur la broche il faut connaitre la longueur pivot.
Pour éviter les collisions il faut aussi, pour bien faire, que la machine soit modélisée dans la FAO.

Si on veut usiner à vitesse constante, il faut que le pilotage soit capable de calculer le déplacement de la fraise en fonction du mouvement des axes et de la longueur pivot.
Je sais que sur LinuxCNC il y a un module nommé Kinetic il me semble, qui permet de faire ces calculs.
Cdlt
 
V

vince_007

Compagnon
Mastercam est un soft pro qui fait tout ça. Effectivement, il faut modéliser la machine. Il y a un module de configuration de la machine où on peut tout décrire et même lui donner un modèle 3D de la machine. Il faut aussi modéliser le porte outil pour que le logiciel vérifie les collisions.

Pareil pour le 4eme axe, on peut le modéliser ou pas, mais si on le le fait pas, Mastercam considère qu'il a une place infini autour de la pièce, il ne tiendra compte que du brut. Attention au crash entre les opérations.

Pour l'avance, c'est le contrôleur qui le fait, donc Mach3 si on est sans contrôleur externe. C'est pour ça que je conseille un contrôleur externe, faire du calcul 5 axes en live par un PC qui tourne sous windows c'est joueur, très joueur.
 
V

vres

Compagnon
Tu peux faire les calculs cinématiques dans le contrôleur externe avec cosinus et sinus et racine carrée ??? un core7 aurait moins de capacité de calcul qu'un micro contrôleur (même avec FPU) ??? Comment tu définis tes calcul cinematiques dans ton controleur ????
C'est peut-être possible mais j'ai cherché sur la documentation CSMIO la section qui parle de l'interpolation par la carte, je n'ai pas trouvé, tu aurais un lien ?

PS: la documentation CS-lab est remarquable .... et en français

Voir ICI
 
Dernière édition:
V

vince_007

Compagnon
Un core I7 qui s'occupe de faire tourner l'OS et tout le matériel du PC, oui il sera moins performant qu'un micro à 100Mhz sans OS ! C'est même mon boulot de tous les jours depuis 15 ans ! Faire du sinus et cosinus dans un micro avec module DSP est très facile est rapide, pareil pour la racine carrée.
On a un BE logiciel et un BE electronique (que je dirige), le BE logiciel s'occupe de tous les logiciels qui tourne avec un OS, du Linux pour les cibles embarqués (IMX6 quad core à 1Ghz) et du windows sur les bases PC. Mon service fait les cartes et les logiciels sur micro (PIC32MX à 80MHz) sans OS ainsi que les FPGA quand ya besoin. Quand il faut faire du temps réels, on le fait toujours en hardware, on le fait nettement plus facilement sur le PIC à 80Mhz sur l'IMX à 1GHz. Bref, ce n'est pas le débat, on peut en parler en MP si tu veux.

Pour moi, c'est Mastercam qui fait tous les calculs de trajectoire d'outils, ensuite il transcris ça en Gcode. Mais je ne maîtrise pas le Gcode 5 axes, donc je ne sais pas répondre à tes questions. J'ai fait une seule fois du 4 axes en positionnés et du 3 axes continue.

Pour le contrôleur, on en a déjà parlé sur un autre post, si tu veux des infos, tu contact le support qui est très réactif.
 
V

vres

Compagnon
Alors selon toi l'OS et la gestion du matériel occuperai tellement le I7 qu'il ne serai pas capable d'être aussi compétitif qu'un méchant micro-controleur a 100MHz ????
Pour info tu connais le gestionnaire de tâches qui permet de vérifier l'occupation processeur par application ? Moi mon logiciel avec environ 200000 racines carrées à la seconde c'est moins de 10% sur un pentium 4 !

Non seulement je peut faire tourner 2 machines en simultané mais en plus tu peux travailler sur le logiel CFAO en même temps ! (Je vais essayer de retrouver une vidéo)

Maintenant voici deux extraits de la doc CS-lab :

1. Le clavier d'ordinateur. a. Ne pas utiliser un clavier sans fil, parfois ce clavier mémorise les frappes, ou ne remarque pas le relâcher, ce qui peut être très dangereux pour contrôler la machine. b. En outre, un clavier USB peut se comporter de façon imprévisible. Le port USB n'est pas résistant aux interférences donc, en particulier sur des machines avec des servomoteurs et des broches de puissance. Nous recommandons de ne pas utiliser de clavier USB. c. La solution la plus fiable est le clavier PS2 ou la connexion de boutons industriels aux entrées numériques CSMIO / IP-S et les définir correctement dans le programme Mach3. 2. Rappelez-vous que la saisie de valeurs dans des zones de texte sur l'écran Mach, doit toujours être confirmée en appuyant sur ENTER. 3. Si vous faites des programmes CNC à des vitesses élevées et que parfois le mouvement perd de sa douceur, cochez la case paramètre "LookAhead" dans" Config / General config ". Il est responsable de sections de la trajectoire analysée à l'avance. Définissez ce paramètre sur 999. 4. Si vous faites programmes CNC à haute vitesse et que vous remarquez des distorsions liées à des coins arrondis alors essayez avec " CV Dist. Tolerance." Paramètre " ConfigGeneral Config ". Au début, vous pouvez définir la valeur sur 0,5 - ça correspond à 0,5mm de tolérance dans les angles. 5. Le programme Mach3 utilise un point ". " comme séparateur décimal (pour séparer la partie fractionnaire) Gardez à le l'esprit en entrant les valeurs. 6. les aperçus de trajectoire 3D sur l'écran Mach peut de manière significative surcharger l'ordinateur lorsque les fichiers sont volumineux. Lorsque la machine fonctionne, évitez les opérations telles que le zoom, rotation, etc. Pour les très gros fichiers, nous vous recommandons d'enlever l'aperçu 3D - dans l'écran Diagnostics, cliquez sur "Toolpath on / off."

8. Soft Mach3 –information générale
.......
• L'analyse dynamique de la trajectoire o Le programme CNC est analysé à l'avance, de sorte qu'il permet un réglage optimal de la vitesse de mouvement à chaque point de la trajectoire. Ainsi, le programme est fait rapidement, mais avec un mouvement très régulier.
 
Dernière édition:
V

vres

Compagnon
st, si tu veux des infos, tu contact le support qui est très réactif.

C'est déjà fait depuis longtemps leurs cartes m'intéresse :
upload_2016-2-7_14-6-5.png
 
V

vince_007

Compagnon
Alors selon toi l'OS et la gestion du matériel occuperai tellement le I7 qu'il ne serai pas capable d'être aussi compétitif qu'un méchant micro-controleur a 100MHz ????
Pour info tu connais le gestionnaire de tâches qui permet de vérifier l'occupation processeur par application ? Moi mon logiciel avec environ 200000 racines carrées à la seconde c'est moins de 10% sur un pentium 4 !

Tu mélange tout, c'est la réaction typique d'un pur softeux qui croit tout pouvoir faire par un logiciel sur un PC. Bien sûr que non qu'un microcontrôleur à 100MHz ne fera pas autant de calcul qu'un core I7, tu me prend vraiment pour un idiot et c'est agaçant. Je ne comprends pas tes réactions surtout quand on connait ton savoir faire en la matière, tu a du mal à sortir de ton seul logiciel que tu a créé et qui est le meilleur au monde. Pourquoi ne pas sortir un concurrent à Mach3 si tu as trouvé le moyen de contrôler 2 machines et de faire la FAO sur un P4 le tout en même temps ?
Intéressant ton extrait, d'ailleurs, c'est pas toi qui ne juré que par l'USB ? Ben tient, bizarrement, CSLab écrit la même chose que moi sur la robustesse d'un port USB en environnement industriel.

Tu ne sais pas plus que moi comment Mach3 dialogue avec le contrôleur CSMIO (tu demande le SDK pour le savoir non ?), il y a de forte chance que ce soit une liste de point et que le contrôleur ne fait que linéariser entre les 2 points. C'est bien Mach3 qui interprète le GCODE et qui génère la trajectoire correspondante. Mais la différence c'est que Mach3 ne s'occupe plus en temps réel du contrôle des moteurs, des butées logicielles, des vitesses d'avances etc Tout ça est fait en matériel ce qui permet de décharger le PC de la partie temps réel, la plus difficile à faire et impossible dans certains cas. Surtout ce contrôleur pilote les moteurs en temps réel par FPGA, ce qui permet un traitement 100% parallèle des 6 axes et un parfait synchronisme, ce que d'autre contrôleur ne font pas car ils travaillent avec un seul CPU et donc à temps partagés. Le CSMIO fait également le contrôle en boucle fermé des moteurs en matériel et non par logiciel. D'ailleurs le taraudage rigide par Mach3 ne fonctionne pas avec ce controleur, il faut passer par une macro M84 car cette fonction est assurée par le contrôleur. Le rattrapage de jeu, c'est pareil, ce n'est pas Mach3 qui le fait mais le controleur, c'est ce dernier qui calcule le bon moment pour appliquer le rattrapage de jeu et même si c'est entre 2 point que lui a donné Mach3.
C'est pas parce que tu sais faire 200000 racine carrées à la seconde que tu est capable de faire ces calculs dans un temps déterminés et constant, c'est d'ailleurs impossible avec Windows qui est un OS multitâche. D'ailleurs Linux n'est pas meilleure sur ce point, lui aussi n'est pas déterministe. Pour l'être, il faut un OS déterministe comme QNX, FreeRTOS, Linux RT, Xenomai surement pas Windows ou une distri Linux standard.
Et déterministe ne veut pas dire qu'on peut lui demander n'importe quoi, avec ce genre d'OS, tu ne tiendra jamais la µsec de réaction entre un événement extérieure et la réaction du logiciel.

Exemple hors sujet: un simple BUS CAN à 1Mbps par seconde est capable de mettre à mal un CORE I7 si il devait traiter les trames 100% par CPU. On en a fait les frais avec un dongle USB <-> CAN qui n'a pas de FIFO mais juste un seul buffer, le CPU est incapable de récupérer toutes les trames en temps réels. Chaque trame arrivant toutes les 115µs, des qu'on clic sur un bouton d'un logiciel, l'OS s'occupe de ça et ne fait pas le reste, résultat, quand il revient 10msec plus tard, il a perdu 100 trames !
La seule solution a été de mettre une FIFO matériel avec un PIC à 20MHz, lui n'a aucun mal à dépiler des trames toutes les 115µs. Le PC vient vider la FIFO toutes les 100msec mais il le fait très vite. Les meilleurs solutions sont celles qui mélange du hard et du soft.
 
Dernière édition:
V

vres

Compagnon
Tu mélange tout, c'est la réaction typique d'un pur softeux qui croit tout pouvoir faire par un logiciel sur un PC.
Moi un pur softeux :?::lol:
Pourquoi ne pas sortir un concurrent à Mach3 si tu as trouvé le moyen de contrôler 2 machines et de faire la FAO sur un P4 le tout en même temps ?
Mon logiciel existe depuis 26 ans et je ne suis pas du tout intéressé pour faire de la concurrence a Mach3.

Voici une vidéo avec 4 exécution en même temps, c'est en démo mais comme c'est trois fois plus rapide qu'en mode réel, donc 3 fois plus de calculs.
Tu vois qu'un PC n'a aucun mal a faire de l'interpolation pour 5 axes, et tu as encore beaucoup de puissance disponible.

Un core I7 qui s'occupe de faire tourner l'OS et tout le matériel du PC, oui il sera moins performant qu'un micro à 100Mhz sans OS ! C'est même mon boulot de tous les jours depuis 15 ans ! Faire du sinus et cosinus dans un micro avec module DSP est très facile est rapide, pareil pour la racine carrée.

Bien sûr que non qu'un microcontrôleur à 100MHz ne fera pas autant de calcul qu'un core I7, tu me prend vraiment pour un idiot et c'est agaçant

C'est bien Mach3 qui interprète le GCODE et qui génère la trajectoire correspondante.
Ce que je veux dire, c'est que le modèle 4 axes, c'est pas juste un port Ethernet et des sorties 125KHz. C'est un vrai contrôleur avec interpolation et calcul des trajectoires, gestion des vitesses et butées entièrement en matériel



Exemple hors sujet: un simple BUS CAN à 1Mbps par seconde est capable de mettre à mal un CORE I7 si il devait traiter les trames 100% par CPU. On en a fait les frais avec un dongle USB <-> CAN qui n'a pas de FIFO mais juste un seul buffer, le CPU est incapable de récupérer toutes les trames en temps réels. Chaque trame arrivant toutes les 115µs, des qu'on clic sur un bouton d'un logiciel, l'OS s'occupe de ça et ne fait pas le reste, résultat, quand il revient 10msec plus tard, il a perdu 100 trames !

J'ai fait il y a 8 ans, le rétrofit d'une poinçonneuse, j'ai eu beaucoup de travaille sur l'automatisme et sur le reglages des servomoteur, elle fonctionne intégralement en CANOpen avec dongle USB<->Can.
Je peut te faire voir une vidéo qui peut te prouver qu'il n'y a pas de perte de trame et le CPU n'était pas un Core I7. Pour avoir un fonctionnement régulier sous Windows avec une latence maximum par thread de 1ms, il y a une seule ligne de code à ajouter. Sur ma poinçonneuse une requête SDO c'est moins de 3ms et comme tu le sais on peut avoir plusieurs requettes SDO en même temps. Les machines Isel servo fonctionnent en CANOpen depuis longtemps

Voici une photo de l'armoire principale :


WP_000285b.jpg
 
V

vince_007

Compagnon
Encore une fois tu ne lis que ce que tu veux, je t'invite quand tu veux dans mon entreprise pour donner des leçons à mon BE informatique peuplé d'une 10ene d'idiots avec 20 ans d'expérience en logiciel temps réel et sûreté de fonctionnement aéronautique.
Vue que tu semble faire des choses qu'ils n'arrivent pas à faire. J'aimerais que tu leurs apprenne la vie, ça nous ferais gagner beaucoup de temps sur des projets.

Un thread à 1msec sous Windows ! Mort de rire. En 1msec, tu as déjà perdu 10 trame CAN a 1mbit !
T'a vidéo est bidon, tu mélange charge cpu en temps partagé et respect du timing. Bien sûr que tu fait tourner plusieurs calcul en même temps, mais si il fallait générer les signaux step / dir tu serais totalement à la ramasse.
 
V

vres

Compagnon
C'est pour ça que je conseille un contrôleur externe, faire du calcul 5 axes en live par un PC qui tourne sous windows c'est joueur, très joueur.

T'a vidéo est bidon, tu mélange charge cpu en temps partagé et respect du timing. Bien sûr que tu fait tourner plusieurs calcul en même temps, mais si il fallait générer les signaux step / dir tu serais totalement à la ramasse.

Tu as raison je suis un mitho.
A ton avis je fait des logiciels de pilotage juste pour le plaisirs je ne pilote jamais de machine :roll:
Et là, il n'y a pas de step/dir ??? elle est bidon aussi ?

PS: les roulements de broche sont morts mais malgré le boucan on entend bien la deuxième machine qui est bien en phase avec l'affichage.
 
Dernière édition:
V

vince_007

Compagnon
Oui et le matériel c'est quoi ? Une carte USB avec un DSP à 80MHz ? Moi aussi je peux faire de la FAO avec Mach3 qui tourne depuis que j'ai le contrôleur externe.
 
M

MR VECTRA

Compagnon
pour du 2 axes et demi ou 3 axes , en fraisage cnc , match3 intègre bien un post pro mastercam , dites moi
bonne soirée
 
V

vres

Compagnon
Bien sur que j'ai une carte, tu le sais car tu m'a déjà un peu chauffé les oreilles sur une autre discutions, mais cette carte ne fait aucun calcul de trajectoire c'est bien là que je suis pas d'accord, le PC est beaucoup plus apte a faire les calculs.

Ma nouvelle carte est a base de stm32F4 a 168Mhz avec FPU , Le DSP 80Mhz que j'utilisait avant été de 1991 !

Un thread à 1msec sous Windows ! Mort de rire. En 1msec, tu as déjà perdu 10 trame CAN a 1mbit !
Pour info sur les modules CAN <-> USB , l'USB est souvent géré par un FTDI qui a bien un buffer FIFO est envoie les données par paquet, configurable dans le gestionnaire de périphériques, donc pas de trame de perdue.

Même la carte MOXA PCI permet de recevoir les trames par paquet.:

UNS8 TCAN_VSCOM::canReceive_driver (Message * m)
{
int ret, i;
char bufr[6000];
if ((int)canHandle <1)
{
return 0;
}
DWORD dwRead=0; /* number of read frames */
try{


int recept = cnio_receive_queue(canHandle);
while ((recept > 0) && (dwRead<10))
{
ret = cnio_receive_message(canHandle, &rx_frame, 1);

if (ret != CNIO_SUCCESS) {
/* Fail */
printf("Rx Fail\n");
return dwRead;
}


m[dwRead].len = rx_frame.Length;
if (rx_frame.FrameType == CNIO_RTR)
m[dwRead].rtr = 1;
else
m[dwRead].rtr = 0;


for (i = 0; i < rx_frame.Length; i++)
m[dwRead].data=rx_frame.Data;

dwRead++;
recept--;
}
return dwRead;
}
catch(...){
//ERR_FILE ("vscom read",0)
};
return 0;
};
 
Dernière édition:
V

vince_007

Compagnon
Pour info sur les modules CAN <-> USB , l'USB est souvent géré par un FTDI qui a bien un buffer FIFO est envoie les données par paquet, configurable dans le gestionnaire de périphériques, donc pas de trame de perdue.

Même la carte MOXA PCI permet de recevoir les trames par paquet.:

UNS8 TCAN_VSCOM::canReceive_driver (Message * m)
{
int ret, i;
char bufr[6000];
if ((int)canHandle <1)
{
return 0;
}
DWORD dwRead=0; /* number of read frames */
try{


int recept = cnio_receive_queue(canHandle);
while ((recept > 0) && (dwRead<10))
{
ret = cnio_receive_message(canHandle, &rx_frame, 1);

if (ret != CNIO_SUCCESS) {
/* Fail */
printf("Rx Fail\n");
return dwRead;
}


m[dwRead].len = rx_frame.Length;
if (rx_frame.FrameType == CNIO_RTR)
m[dwRead].rtr = 1;
else
m[dwRead].rtr = 0;


for (i = 0; i < rx_frame.Length; i++)
m[dwRead].data=rx_frame.Data;

dwRead++;

}
return dwRead;
}
catch(...){
//ERR_FILE ("vscom read",0)
};
return 0;
};

Le FTDI est un bridge USB vers liaisons série bien sur qu'il a une fifo, c'est indispensable pour la pile USB. Les dongles CAN c'est avec un MCP2515 qui fait CAN vers SPI et un FTDI qui fait SPI vers USB. Le problème c'est que le MCP2515 n'a que 2 buffers de réception et si tu ne vas le vider, tu perd les messages.
Avec un bus can à 100%, faut y aller toutes les 115us environ et si tu fait un thread à 115us prioritaire, tu ne fait plus rien sur la machine.
Le PCI étant obsolète, on n'a pas regardé cette carte. Par contre, on a celle de National Instrument, il y a une fifo en réception mais driver merdique en C++, meilleur en Labview.
Sur nos bases Linux maison (freescale Imx6), on met toujours un fpga (Microsemi Igloo) et on code en VHDL les tâches temps réels et parallèles. Du coup, on a collé 3 blocs CAN avec Fifo 1000 messages. Plus aucun problème de réception, le cpu peut prendre son temps pour les autres tâches, il vient chercher les messages quand il a le temps de le faire et il le fait vite par le PCI express.
 
M

MR VECTRA

Compagnon
chapeau bas vince tu sais de quoi tu parles ! bravo
 
G

gaston48

Compagnon
Bonjour, discussion intéressante ...
Finalement quelle est la syntaxe d'une ligne de g code en 5 axes ?
et quelle est le type d'interpolation ? je doute qu'en pro ce soit une
bête interpolation linéaire ?
 
V

vince_007

Compagnon
Bien sur que j'ai une carte, tu le sais car tu m'a déjà un peu chauffé les oreilles sur une autre discutions, mais cette carte ne fait aucun calcul de trajectoire c'est bien là que je suis pas d'accord, le PC est beaucoup plus apte a faire les calculs.

Ma nouvelle carte est a base de stm32F4 a 168Mhz avec FPU , Le DSP 80Mhz que j'utilisait avant été de 1991 !

Tu ne dit pas tout ! lol, finalement tu ne fait pas le temps réel sur le PC, tu ne fait que calculer les trajectoires, les bufferiser et les pousser à une carte qui elle s'occupera du temps réel, c'est à dire générer les signaux physiques. En gros, exactement comme le csmio ou une carte Intercnc usb.

Allez j'arrête de perdre mon temps puisque finalement on dit la même chose.
 
V

vres

Compagnon
OU ai-je dit que je faisait du temps réel ????
Pour l'avance, c'est le contrôleur qui le fait, donc Mach3 si on est sans contrôleur externe. C'est pour ça que je conseille un contrôleur externe, faire du calcul 5 axes en live par un PC qui tourne sous windows c'est joueur, très joueur.

C'est bien là que je suis pas d'accord !
 
V

vres

Compagnon

La question qu'il faut poser c'est:
Existe t'il un postpro dans mastercam pour Mach3. Le postpro est dans la FAO pas dans le pilotage.
Il me semble avoir lu que le postpro de fanuc pouvez être utilisé.
 
V

vres

Compagnon
Finalement quelle est la syntaxe d'une ligne de g code en 5 axes ?

C'est une ligne de code avec A B ou C en plus.
Les X Y et Z peuvent être en cartésien ou déjà corrigés en fonction du point de pivot ( je ne me rappelle jamais de l'abréviation)
C'est sur que l'interpolation ne peut plus être linéaire.
Quand c'est le C qui tourne il n'y a plus rien de linéaire, on entend très bien la segmentation.
 
V

vince_007

Compagnon
Le post pro Fanuc3x sous Mastercam va bien pour Mach3. Sinon, il y a 2 autres post pro pour Mastercam dispo en telechargement sur le site de Mach3.

Mais je me demande si Mach3 est capable faire du 5 axes continu, j'ai cru voir qu'il y avais des plugin 5 axes de dispo, ça doit servir à ça.
 

Sujets similaires

L
Réponses
22
Affichages
2 542
jad83690
J
K
Réponses
8
Affichages
2 651
LionelB
L
SkippyLeChat
Réponses
9
Affichages
4 156
dh42
S
Réponses
6
Affichages
1 672
dh42
G
Réponses
0
Affichages
1 043
greg2fs
G
Haut