Modification du post processor GRBL fourni avec Autodesk Fusion 360

Chaque machine à commande numérique (CNC pour Computer Numerical Control) interprète différemment le G-Code. Il y a une norme (la ISO 6983), mais la plupart des fabricants de machine s'en écarte un peu pour différentes raisons.

Pour assurer la compatibilité avec les différentes machines existantes, Autodesk Fusion 360 génère un fichier intermédiaire portant l'extension .cnc qui contient du code neutre. Ce code est ensuite retravaillé via un post processor. Le post processor est en fait un fichier portant l'extension .cps et contenant du code Javascript. Ce fichier est exécuté via un programme en ligne de commande nommé post.

Plusieurs post processor sont installés avec Fusion dans le répertoire <Répertoire d'installation de Fusion>\Applications\CAM360\Data\Posts. Si votre machine n'est pas listée, vous devrez écrire votre propre post processor.

Dans mon cas, l'OpenBuilds MiniMill utilise le firmware GRBL donc je peux utiliser le post processor du même nom.

Mais j'ai un petit problème avec ce post processor, il écrit une instruction M6 (Appel d'outil) qui déclenche une alerte dans GRBL 1.1. Je peux évidemment supprimer cette instruction dans le fichier .nc mais ce serait mieux si le post-processor n'écrivait pas cette instruction.

J'ai donc créé une copie du fichier Grbl.cps.

Quand on ouvre le fichier dans un éditeur de texte, on voit qu'il y a plusieurs fonctions de rappel dont le nom commence par on: onMachine(), onOpen(), onSection().

L'instruction T1 M6 qui pose problème est générée dans la fonction de rappel onSection(). Les lignes qui nous intéressent sont les suivantes :

writeBlock("T" + toolFormat.format(tool.number), mFormat.format(6));

On voit que writeBlock()est appelée avec deux arguments, c'est cette ligne qui génère la ligne T1 M6. On peut garder la sélection de l'outil (T1) qui ne pose pas de problème à GRBL. Mais il faut supprimer le M6. Donc on remplace la ligne par :

writeBlock("T" + toolFormat.format(tool.number));

Et voilà, problème réglé.

Gardez à l'esprit que toute erreur dans ce fichier peut générer du G-Code erroné qui peut crasher la machine, donc soyez vigilant.

Si vous avez besoin de modifier ou de créer votre *post-processor, vous pouvez consulter la documentation qui se trouve ici : https://cam.autodesk.com/posts/reference/

Commentaires

Si je peux me permettre, c'est un peu idiot! GRBL 1.1 n'a strictement aucun problème avec la commande T1 M6 (ou T2, ou T3 M6)! C'est le logiciel que vous utilisez pour dialoguer avec GRBL qui en a un. Expérimentez donc avec bCNC, et vous verrez que non seulement aucune alerte n'est générée (si on choisi la bonne politique pour le changement d'outils), et qu'en plus vous pourrez changer d'outils (toujours manuellement) pour une même pièce... T1 tout seul ne sert strictement à rien, puisque M6 est la commande de changement d'outil, donc autant virer ça aussi, tant qu'on y est.... Cependant, il y a une modification bien plus intelligente que de virer ce qui géne et qu'on ne comprend pas le mécanisme des post-processeurs de Fusion 360 inclus un certain nombre de variables, que l'utilisateur peut basculer on/off à la demande, dans la boite de dialogue du post processeur. Regardez dans votre post-processeur GRBL, au début : // User-defined properties et //user-defined property definitions. On y trouve par exemple une propriété "useG28", pour l'utilisation où non de G28. Plus loin on trouve var _useG28 = properties.useG28 puis plusieurs utilisations de if (_useG28) { something } Je suggérerais donc de créer une nouvelle variable utilisateur (property), du style useM6, et de générer où non cette ligne en fonction de l'état de la variable. Comme ça, le jour où vous changerez de logiciel pour un logiciel mieux fait que celui que vous utilisez actuellement, il n'y aura qu'à modifier l'état de la variable, plutôt que d'aller réécrire la ligne supprimée....

Bonjour et merci pour votre commentaire. Effectivement, j'aurai dû supprimer la ligne complète, ce n'est pas utile de conserver le T1. Et vous avez peut être raison, l'alerte peut être générée par le logiciel que j'utilise pour envoyer le code à la machine (c'est OpenBuilds CONTROL : https://software.openbuilds.com/) et non pas par GRBL. Il faudra que je regarde ça à l'occasion.

Ajouter un commentaire