En cours Création de mon logiciel en Python similaire à GRBL

kooroshtux
Nouveau
19 Juin 2019
16
  • Auteur de la discussion
  • #1
Bonjour all :)

Préface:

Je poste dans cette section pour toute personne ayant de l'expérience dans la programmation logiciel afin de m'aider, me conseiller ou même me critiquer pour l'avancement du fruit de mon imagination.
Suite à une bonne discussion d'un topic que j'ai créé ici: Topic CNC + RP4 , je me suis lancé dans la création de mon interface de Control.

Ce logiciel à pour but de contrôler des moteurs pas à pas, servo-moteur et tout autre composant électrique.
Je programme durant mon temps personnel malgré le travail et la vie de famille donc ça avance doucement mais surement ^^.

Mon interface je l'ai baptisé "Gnc-CN" développé en python version 3.
l'objectif c'est de rendre cet outils portatif compatible pour tout équipement et surtout le plus précis que possible.

Détail architecture:

Comme vous pouvez le voir, j'ai choisis de développer en POO ("Programmation orienté objet"), évidemment je suis pas un devloppeur pro donc j'essay de rendre mon code le plus clair et logique que possible.

Je vous partage pour l'instant le datagramme de classe de mon interface:

classes.png


// Pour exporter le datagramme de ma classe j'ai utiliser Pyreverse pour ceux que ça intéresse :wink:


Et voici l'aperçu visuel actuel de l'interface:

Capture.PNG


- ma prochaine étape c'est de développer la partie "Mode manuel" avec un arrêt d'urgence, etc, et dans la fouler de mettre en place une police d'écriture "cnc-fanuc" pour le coté design.

qu'en pensez vus et qu'elle serait les amélioration visuel que je pourrait apporté selon vous ?
 
fredcoach
Compagnon
11 Janvier 2013
938
Hautes Alpes
Projet ambitieux, surtout pour un débutant.
Avant de peaufiner le visuel je travaillerais sur les fonctionnalités.
On peut toujours jouer avec la présentation une fois que le programme fait ce pour quoi il est conçu.
C'est du moins ce que je ferais après quarante années et quelques de programmation.
 
MegaHertz
Compagnon
31 Août 2017
929
Bonjour,

Est ce que Python est adapté à la gestion des événements temps réel ?

Mis à part le challenge de prog, qu'est ce que la réécriture en Python apporterait que GRBL ou Mach3 ne puissent pas faire ?

Ton projet c'est quoi ?
Tu veux faire ta propre CNC basée sur un Raspery pi.
Tu as donc besoin de créer le prog du Raspery mais rien ne t'oblige à faire ton propre contrôleur.
Si tu veux mener à bien ton projet je te conseillerais plutôt de voir ce qui est nécessaire sur la CNC pour qu'elle tourne avec GRBL, MACH3 ou linuxCNC.
Il est également nécessaire que ta machine puisse digérer correctement de petites trajectoires et suivre au mieux les commandes générées par des softs comme CAMBAM, Fusion360 ou SolidWorks.
Ta machine doit avoir un planificateur de trajectoire capable de gérer proprement les accélérations nécessaires et muni d'un gros buffer pour digérer le GCode bien avant qu'il ne soit exécuté dans la matière.

L'arrêt d'urgence doit être matériel pour éviter qu'il puisse ralenti par les traitements ou soumis aux éventuels bugs.
Un arrêt d'urgence qui dépend uniquement d'un soft en Python n'est pas un arrêt d'urgence, c'est une faute de conception et surtout : c'est dangereux !

Amuses toi bien.
 
Dernière édition:
CNCSERV
Compagnon
27 Décembre 2007
4 983
FR-28360
Bonjour,
Grbl si je ne me trompe pas est un logiciel sur Arduino qui a la fois interprète le g-code et génére les signaux en temps réel pour les moteurs.
Il n'y a pas d'interface utilisateur.
En python je suppose que tu vas créer un programme sur PC ou Raspberry qui pourra très bien gérer l'interface utilisateur et l’interpréteur g-code, mais pour la génération des signaux moteur c'est beaucoup plus complexe.
Si tu veux le faire directement sur le PC ou Raspberry, il te faut un noyau temps réel qui n'est pas en standard ni sur Windows ni sur Linux.
Sur Raspberry je ne sais pas si MachineKit a un OS spécifique avec RTAI. Sous Windows Mach3 a utilisé un driver de port parallèle modifié, c'est assez compliqué et pas forcement très stable.

La plus grosse difficulté et la gestion de la vitesse sur trajectoire, les courbes sont une suite de micro-vecteurs qu'il faut enchaîner pour avoir un déplacement le plus fluide possible. Il faut aussi gérer la deceleration qui peut ce faire sur plusieurs vecteurs.
C'est réalisable mais ça demande beaucoup de développement et de mise au point.
 
kooroshtux
Nouveau
19 Juin 2019
16
  • Auteur de la discussion
  • #5
Mon projet se sera de créer ma propre cnc basé sur un rp4 avec son interface de control.

Pour le bouton arret d'urgence c'est noté mais je vais mettre un voyant rouge qui s'allume sur mon interface des que le bouton d'arret est enclenché manuelement. Effectivement le temps reel sera le challenge de taille mais j'ai trouvé un livre sur amazon qui parle du temps reel sous linux donc je vais bien me documenter et on tentera. Deja je dira a femme noel ^^ des moteurs =)) mais dans l'imediat je vais experimenter le servomoteur.

Merci pour tout vos commentaires ca ma deja bcp aider pour la suite car c vrai que ce projet est ambitieux mais tellement exitant .

Bon lundi a vous et a tres vite :).
 
MegaHertz
Compagnon
31 Août 2017
929
Bonjour,

Temps réel sous linux : Noyau spécifique comme disait CNCSERV.

Si tu veux être efficace à moindre cout il faudrait appliquer le modèle MVC à ta conception.
Sur ta machine un bignou RP4 qui gère les moteurs en temps réel d'après une mémoire texte (le GCode).

Ce bignou RP4 doit également fournir l'état de la machine sur demande.

Côté PC un truc qui envoie le GCode, lit les états et affiche à l'écran.

L'idéal ce serait que le PC balance tout le GCode et qu'il ne soit responsable que des affichages.
Là même si tu regardes le dernier clip de Aya Nakamura sur Youtube ta machine s'en fout vu que tout est déjà en mémoire.

Quand le PC demande, la machine renvoie le numéro de ligne ou la position ou la vitesse de broche...

L'arrêt d’urgence doit être relié matériellement à la broche et aux moteurs et au RP4.

Oublies le temps réel côté PC, laisses le au Raspberry.
 
Dernière édition:
cr-_-
Compagnon
29 Septembre 2009
819
FR-31 Plaisance du touch
Bonjour,

Quel est l'objectif de faire ce developpement ?
Si c'est pour apprendre, ok mais c'est un enorme travail
Si c'est pour faire mieux qu'a côté, je pense que ça va être très compliqué
Si c'est pour dire je l'ai fait moi-même, tu peux partir sur des bases existantes et adapter à tes besoins

Pour faire du temps réel oublie le python, c'est pas adapté

Si j'avais un truc dans le genre à faire, je partirais sur un moteur de gcode existant et ferais l'interface en rapport avec ce que je veux.

Dans la liste des choses dispo sur RPI4 que je connais il y a linuxcnc avec lequel tu es capable de developper de nouvelles interfaces au besoin
 
Dernière édition:
Boris_25
Apprenti
10 Novembre 2014
150
Il y a quelque mois, j'ai eu cette idée, je me suis intéressé à Python, et je me suis dit pourquoi ne pas utiliser une carte tout en un type Bealgle Board qui intègre l'équivalent PC et ARDUINO pour réaliser un pilotage CNC autonome (avec un simple écran tactile conné à la carte, en utilisant les GPIO pour contrôler directement les drivers)
Avec un ami nous avons démarré le projet, il a commencé a développer en Python l'interface graphique et l’interprétation GCode. Je dirais que jusque là tout va bien. Maintenant la suite se complique... Et que le rêve se brise un peu. Nous poursuivons malgré tout notre projet, juste pour l'aspect ludique de la chose.

Malgré tout il existe bien des pilotages CN depuis une carte RaspberryPi, mais adossés à une carte contrôleur.


Je vais suivre ce projet avec intérêt.
 
Dernière édition:
Haut