Gcode en boucle avec mach3

  • Auteur de la discussion martien
  • Date de début
M
martien
Nouveau
7 Jan 2017
12
  • Auteur de la discussion
  • #1
Bonjour, je ne suis pas trop familier pour la programmation Gcode. Voici ce que je veux faire avec Mach3. J'ai une fraiseuse qui fonctionne avec Mach3. Ce que je veux faire c'est un déplacement en x et en y dans une boucle en continue tant que le bouton stop n'est pas pressé. Voici les déplacement demandé. Mes axe X et Y sont à zéro. une liming swith est activé par un robot et le programme se met en fonction, l'axe des x se déplace de 3 pouce et par la suite l'axe des Y se déplace de 6 pouce par la suite l'axe des X revient à zéro et le programme se met en attente. Un robot dépose une pièce et une liming switch est activé ce qui remet le programme en fonction et l'axe des X avance de 3 pouce par la suite l'axe des Y revient à zéro par la suite l'axe des X revient à zéro et le programme se remet en attente. Par la suite une liming switch est activé et le programme répète le programme indéfinément. Ce que je demande c'est un exemple de petit programme qui ferait que mach3 pour ce que je viens de mentionner.
Si quelqu'un peut m'aider.

Rénald
 
dh42
dh42
Compagnon
4 Sept 2009
5 786
Près de St Etienne (42)
Salut,

Un robot dépose une pièce et une liming switch est activé ce qui remet le programme en fonction
Je ne sais pas si on peut piloter le Gcode en fonction de l'état d'un switch (je ne suis pas vraiment un Gcode man :wink:), par contre c'est faisable en script mêlant Gcode et Visual basic.

le VB permet de tester l'état des entrées et de réagir en conséquence.

un sujet à propos de la programmation d'un robot piloté par Mach3, avec des switch, des tempo, etc ..
https://www.usinages.com/threads/recherche-script.74230/

++
David
 
M
martien
Nouveau
7 Jan 2017
12
  • Auteur de la discussion
  • #3
J'ai regarder le lien que tu as donné. J'ai compris que j'ai besoin d'une sous routine en VB. Quel extension doit avoir la sous routine
nom.??? , sur mon breakout board j'ai comme signal d'entrée les ports 10, 11, 12, 13, et 15. Le 15 est utilisé pour mon estop. Donc ma limit swith doit être connecté sur 1 de mes port d'entrée. Si j'ai bien compris aussi c'est que c'est la sous routine qui fonctionnerait en boucle et vérifierait l'état de la limit switch et ferait faire les déplacements de mes axes. Donc si limit switch activé il y a une condition qui annule la limit switch et qui fait faire un déplacement de mes axes. La sous routine tournerait tant que le stop n'est pas appuyé. Est-ce que ça semble avoir un certain bon sens ce que je dis? si oui, je ne sais pas comment programmer ma sous routine, peux-tu m'aider?

Rénald
 
dh42
dh42
Compagnon
4 Sept 2009
5 786
Près de St Etienne (42)
Quel extension doit avoir la sous routine
nom.???
salut,

Si elle doit être appelé dans un Gcode, ça doit être un code M, donc quelques chose comme M500.m1s

Si elle n'est pas appellée par le Gcode, alors elle peut avoir n'importe quel nom dans la limite des conventions habituelles pour les noms de fichier, et bien sur, elle finie tj par .m1s

Si elle est attachée à un bouton que tu ajoute avec Machsreen, alors elle n'a pas obligatoirement de nom ; elle est sauvée dans le screenset lui même.

Utilise l'éditeur de Mach ou de MachScreen pour écrire ton code, tu sera sur d'avoir les bonnes extensions et le bon codage du texte (ANSI obligatoire)

j'ai comme signal d'entrée les ports 10, 11, 12, 13, et 15. Le 15 est utilisé pour mon estop. Donc ma limit swith doit être connecté sur 1 de mes port d'entrée.
oui, par contre attention, n° de pin et n° d'entrée (input) son 2 chose différentes ; un n° de pin est d'abord affecté à un n° d'entrée ou de sortie (port&pins, input signals/output signals)

Si j'ai bien compris aussi c'est que c'est la sous routine qui fonctionnerait en boucle et vérifierait l'état de la limit switch et ferait faire les déplacements de mes axes.
Oui, en fait il n'y a pas de Gcode du tout, en tout cas rien dans la fenêtre Gcode habituelle, c'est le prog VB qui génèrera les instructions Gcode lui même et qui les envoi au fur et à mesure. Le prog VB peut se lancer par un clic sur un bouton que tu aura ajouté sur Mach3

Ex: si tu veux faire un G1 X100, en VB ça s'écrira:

Code "G1 X100"

voila comment ajouter un bouton contenant du code VB sur Mach3


Est-ce que ça semble avoir un certain bon sens ce que je dis? si oui, je ne sais pas comment programmer ma sous routine, peux-tu m'aider?
Je regarderais ça à l'occas pour te faire un exemple.

++
David
 
M
martien
Nouveau
7 Jan 2017
12
  • Auteur de la discussion
  • #5
merci de prendre le temps de m'aider. Si tu peux m'écrire la sous routine pour mes instruction du début cela serait très appécié.

Merci

Rénald
 
M
martien
Nouveau
7 Jan 2017
12
  • Auteur de la discussion
  • #6
Voici ce que doit faire la sous routine.
1- l'axe des X et Des Y sont en attente au coordonnées X0,Y0
2- Le robot dépose une pièce sur la fraiseuse
une limit switch est activé
un temps d'attente de 5 seconde est calculé
3- l'axe des X se déplace de 3 pouce
l'axe des y se déplace de 6 pouce
l'axe des X revient à zéro
4- une limit switch est activé
le robot tourne la pièce
un temps d'attente est calculé
le robot dépose la pièce
la limit switch est activé de nouveau
un temps d'attente de 5 seconde est calculé
5- l'axe des X se déplace de 3 pouce
l'axe des Y revient à zéro
l'axe des X revient à zéro
6- une limit switch est activé
le robot enlève la pièce
le robot remet une nouvelle pièce
la limit switch est activé de nouveau
un temps d'attente de 5 seconde est calculé
7- le cycle se répète tant que le bouton stop n'est pas appuyé.

Voila c'est la sous routine que j'aurais besoin.

Pour ce qui est de savoir si mes entrée #10 ou #11 se réfère à quel entrée dans le screen
de mach3 je ferais des test en activant les limit switch pour voir ce qui se produit à l'écran.
mais tu pourrais prendre dans la sous routine que ces entrées représente l'entré 1 et 2.

Ton idée de rajouté un bouton qui contiendrait la sous routine est parfaite c'est ce que je ferais.

merci

Rénald
 
M
martien
Nouveau
7 Jan 2017
12
  • Auteur de la discussion
  • #7
J'ai fait une tentative d'une routine qui pourrait faire ce que j'aimerais, veillez me corriger si je ne suis pas correct.

While (isestop() = 0) 'tant que le bouton stop n'est pas appuyé
If isactive(input1) then 'le robot dépose la pièce sur la fraisseuse
sleep(200) 'laisse le temps au robot de se retirer
code"g01X3 F1000" 'déplacement de 3 pouce de l'axe des X
code"g01Y6 F1000" 'déplacement de 6 pouce de l'axe des Y
Code"g01X0 F1000" 'retour au point zéro de l'axe des X

If isactif(input2) then 'le robot fait tourner la pièce
sleep(200) 'un délais d'attente pour permettre au robot de tourner la pièce
End if

If isactive(input2) then 'la pièce est de nouveau déposé sur la fraiseuse
sleep(200) 'laisse le temps au robot de se retirer
code"g01X3 F1000" 'déplacement de 3 pouce de l'axe des X
Code"g01Y0 F1000" 'retour au point zéro de l'axe des Y
Code"g01X0 F1000" 'retour au point zéro de l'axe des X

If isactive(input1) then 'le robot enlève la pièce de sur la fraiseuse
sleep(10)
end if

End if

End if
WEND
EXit
 
dh42
dh42
Compagnon
4 Sept 2009
5 786
Près de St Etienne (42)
Salut

bon je viens d'essayer, ça à l'air de marcher, même si ce n'est pas facile à tester sans de "vrais" switch (en simulation via une touche ça marche)

voici le code exact que j'ai testé. (PS j'ai mis l'avance à 40, vu que tu travaille en pouces, elle est donc en IPM et non en mm/min) 40 ipm ~= 1000 mm/min, j'ai aussi ajouté les tests de mouvement afin que le VB ne continue pas à tourner tant que le Gcode n'est pas fini car ça tourne en multithreding, c.a.d. que Gcode et VB tournent simultanément, autrement dit, après avoir envoyé les lignes Code "g01 ..." Mach n'attend pas, il lance immédiatement la suite en VB ... ce qui peut mettre une belle pagaille.

++
David
 
M
martien
Nouveau
7 Jan 2017
12
  • Auteur de la discussion
  • #9
David je te remercie mille fois. Mon installation va être opérationnel dans environ 1 mois. Quand tout va être en opération je vais essayé avec le code que tu m'as fait. Je te reviens quand tout sera mit en place pour te donner des nouvelles.

Encore merci, tu es sympa.

Rénald
 
dh42
dh42
Compagnon
4 Sept 2009
5 786
Près de St Etienne (42)
Re

Par contre attention, les 'sleep' c'est des millisecondes, donc il faudra changer les valeurs.

une particularité du code, c'est que input2 ne peut être détecté qu'à condition que input1 soit active, mais c'est peut être le but .. ?

++
David
 
Haut