les macros sous Mach3

  • Auteur de la discussion ch_porchet
  • Date de début
D

dh42

Compagnon
Re: les macros sous mach

C'est la V anglaise 3.042.036

L'interface est perso (machscreen) ; si tu veux j'essaie de te bidouiller une interface avec palpeur basée sur la version d'origine anglaise ... il n'y aura pas de déplacement auto des axes au dessus du palpeur, tu devra ammener l'axe manuellement au dessus du palpeur, à moins de 50 mm ; ma ça permettra de tester.

++
David
 
D

dh42

Compagnon
Re: les macros sous mach

Voila une interface bidouillée avec un bouton palper et une diode (1ier écran, à coté du reset)

décompresse le fichier de la PJ et met le dans le dossier d'insta du mach3 anglais que tu aura téléchargé.

pour l'installer utilise le menu View / load screens et choisis "1024mod.set"

vérifie les réglages de port & pin pour activer la sonde et le bouton au clavier.

je l'ai testé chez moi (sans machine) ça marche.

le Z descend, puis lorsque tu tape la touche simulant le palpeur, la diode s'allume, le 0 Z est fait, puis l'outil remonte à z = +5 (au dessus du palpeur)

PS le code est fait pour un palpeur de 20mm de haut ; il te suffit de changer la valeur de "HautSonde " dans le code pour l'adapter.

++
David Voir la pièce jointe 1024mod.zip
 
C

ch_porchet

Apprenti
Re: les macros sous mach

je viens de faire une simul sur aun autre PC et la sa fonctionner avec le bouton "-"
donc je vais faire la meme chose avec celui CNC
 
C

ch_porchet

Apprenti
Re: les macros sous mach

ça y est sa fonctionne,presque !!
bon faut avez que Eric Darret de chez Soprolec a bien bossé pour moi...
voici ce qu'il ma envoyer

Lancement de la commande de probe rapide vers le bas
SetOEMDRO(1000, 2) ' Numéro de l'axe ou faire le probe (0=X, 1=Y, 2=Z)
SetOEMDRO(1001, -90) ' Course maxi (le signe indique le sens de déplacement)
SetOEMDRO(1002, 20) ' Feed rate
SetOEMDRO(1003, 9) ' Numéro de l'entré de plapage (1 à 16
SetOEMDRO(1004, 1) ' état de l'entrée attendu (0 ou 1)
NotifyPlugins(3000)
' Attente fin de probe descente
While (GetOEMDRO(1000) = 0)
Sleep(10)
Wend
'Si succès, lancement de probe lent ver le haut
If (GetOEMDRO(1000) = 1) Then
SetOEMDRO(1000, 2) ' Numéro de l'axe ou faire le probe (0=X, 1=Y, 2=Z)
SetOEMDRO(1001,+10) ' Remontée en Z
SetOEMDRO(1002, 1) ' Feed rate
SetOEMDRO(1003, 9) ' Numéro de l'entré de plapage (1 à 16
SetOEMDRO(1004, 0) ' Attente re-laché de l'entrée 9
NotifyPlugins(3000)
' Attente fin de probe
While (GetOEMDRO(1000) = 0)
Sleep(10)
Wend
If (GetOEMDRO(1000) = 1) Then
ZProbe = GetOEMDRO(1001) ' Lecture de la position de palpage
Z = GetOEMDRO(85) ' Lecture positionactuelle
HPalpeur = 30 ' Déclaration hauteur palpeur
Zero = Z - ZProbe + HPalpe ' Distance erreur liée à deceleration
SetDRO(2, Zero) ' Initialisation zero pièce
Sleep(100)
NewZPos = Zero + 10 ' dégagement 10mm au dessus du capteur

Code "G0 Z"&NewZPos
While IsMoving()
Wend
Else
'Message ("Fin de probe avec erreur palpage lent")
End If
Else
'Message ("Fin de probe avec erreur palpage rapide")
End If

bon maintenant les questions :-D
comment appeler la fonction du bouton en programation codeG
 
C

ch_porchet

Apprenti
Re: les macros sous mach

bon j'ai reçu une notice de Eric
"Après avoir indiqué ces paramètres, vous pouvez lancer la fonction de palpage par lo commande
NotifyPlugins(3000)"

mais si je veut integré cette fonction en en Gcode M6,comment faire
 
D

dh42

Compagnon
Re: les macros sous mach

Salut,

Je pense qu'il faut que tu l'intègre dans le code du M6.

Dans le dossier d'insta de Mach3, ouvre le dossier "macros", dedans tu trouvera plusieurs dossiers correspondants aux différentes config machine disponibles, localise la tienne et ouvre le dossier. (le nom de la config utilisé est généralement inscrit dans l'interface de mach)

Dans ce dossier tu trouvera des macros dont M6Start et M6End, qui correspondent au 2 macros qui sont exécutées au début et à la fin d'un M6.

Pour les éditer sans risque de bug, utilise l'éditeur VB script de mach3 (menu Operator/VB script editor) plutôt que le bloc note.

Je suppose que l'on peut aussi créer un fichier Mxx à sa convenance et donc ajouter de nouvelles commandes ... mais ce n'est qu'une supposition, je n'ai pas essayé :)

++
David
 
C

ch_porchet

Apprenti
Re: les macros sous mach

Salut
maintenant j'ai un question ,est il possible de faire que avec le capteur d'outil ,j'arrive a donner une hauteur d'outil.
par exemple je défini que quand il touche le capteur ,cela veut dire que l'outil fait, par exemple, 30mm de long
et cela pour chaque outil.
est ce possible avec une commande DRO que cela inscrit cette valeur dans la table d'outil

et que veut dire cette commande ,est ce celle qui me faut
"Z offset of current tool DRO 109 "
Merci
 
D

dh42

Compagnon
Re: les macros sous mach

si je comprends bien, le but serait de mesurer tes outils ?

si c'est ça, oui c'est possible en programmation, et comme moi tu peux te rajouter des écrans sur mach avec des fonctions et des boutons spécifiques.

pour ça il faut que tu utilise Machscreen pour ajouter des boutons et éventuellement des écrans. tu pourra alors "accrocher" du code aux boutons, créer des DRO etc ...

je ne connais pas trop la gestion des longueurs d'outils sous mach ; je n'en ai pas besoin donc je n'ai pas exploré la chose.

++
David
 
C

ch_porchet

Apprenti
bon je crois que j'ai trouver le DRO c'est "Tool Length (current) 836"
plus qu'a essayer d'introduire sa dans ma macro
enfin je suis toujours ouvert a de l'aide :wink:
 
C

ch_porchet

Apprenti
visiblement ce n'est pas la bonne commande
bon j'y retourne :lol:
 
C

ch_porchet

Apprenti
ou alors est il possible d'enregistré une hauteur entre Origine pièce et le capteur (positif ou negatif) et que celci reste en memoire
et ensuite au changement d'outil de faire que au contact du palpeur on inscrit la valeur qui et en memoire
comme sa a chaque début de pièce je viens palper l'outil avant de commencer,1ere macro "palper l'outil"(mis dans le poste pro)
et au changement d'outil ,j'appelle une autre macro qui sera "changement d'outil"

ou alors est il aussi possible de copier une valeur d'un axe et l'ecrire dans une case sur une page de mach3 et de reprendre cette valeur plus tard

est-ce que quelqun c'est quelles sont les commande dont j'ai besoin.
Merci
 
D

dh42

Compagnon
Salut,

Tu peux utiliser 2 méthodes pour mémoriser des valeurs ; soit tout simplement utiliser une variable Visual basic tout à fait standard, ou plus beaucoup simplement utiliser les "userDRO" qui commence à 1000 il me semble (code OEM) et que tu crées avec un soft comme MachScreen.

l'avantage d'utiliser les dro pour stocker des données, c'est que ces données sont conservées, même à la fermeture de Mach, ce qui n'est pas le cas d'une variable Visual Basic.

je te met la liste des codes OEM en PJ.

Par contre j'avoue que je ne comprend pas réellement ce que tu veux faire ....

Quel est le l'utilité de mesurer les outils puisque tu à un palpeur ? Tu t'en fiche de la longueur de l'outil en principe, puisque justement tu "palpe" pour connaitre le 0 et c'est si tu n'a pas de palpeur qu'il est utile de connaitre leur longueur.

Par contre ce qui peux être utile, si tu utilise un palpeur fixe, c'est de connaitre le décalage entre le dessus du palpeur et le dessus de la pièce (ou le point 0 que tu souhaite)

si tu regarde bien la capture d'écran qui est ici https://www.usinages.com/threads/les-macros-sous-mach3.37959/#p431264, tu verra que les UserDRO 1100 et 1110 permettent de calculer le point 0 en tenant compte de 2 paramètres. la dro 1100 contient la hauteur du palpeur lui même, qui ne change pas en général. la dro 1110 contient un décalage entre la surface ou est posée le palpeur et le 0 souhaité dans le cas ou le palpeur n'est pas posé sur la pièce. Au début du code les variables VB HautSonde et Offset sont initialisées avec les valeurs contenues dans ces 2 dro. (lecture des dro -> GetUserDRO(n° dro)

les 2 boutons à gauche de la dro (pas très visibles sur l'image) permettent par exemple d'entrer une valeur préréglée ; ici le 0 (RAZ de l'offset) ou la hauteur de l'axe de mon 4ieme axe par rapport à la surface table.

le code de ce bouton par exemple se limite à: SetUserDRO(1110,76.55) ce qui entre la valeur 76.55 dans la dro n° 1110, ce qui correspond au 0 de l'axe mon mandrin.

il me suffit d'entrer la valeur de décalage voulue dans la dro "offset courant" pour tenir compte de cet écart si le palpeur n'est pas posé sur la pièce. J'envisage même de faire un petit bout de code supplémentaire qui me permettra de mesurer automatiquement cet écart en faisant 2 palpages, un sur la pièce et un au point ou se trouvera le palpeur. Bien sur dans ce cas le palpeur doit être mobile.

++
David Voir la pièce jointe Mach3_OEM_code.rar
 
Dernière édition par un modérateur:
C

ch_porchet

Apprenti
hello
alors j'ai bien un palpeur fixe
voici une copie d'ecran de mon mach3
si je veux que ma macro inscrit la valeur de Z origine pièce dans le carré selectionner soit code OEM 1040 ,
comment je dois mis prendre ,car j'ai bien essayer de lire la doc (en anglais)mais j'ai pas pigé.
d'ailleur je commence a mis perdre du coup je copie des commandes est j'essaye.
dis moi toi qui semble touché le sujet
quel différence entre GetOemDro et SETOemDro
enfin le plus important c'est que j'arrive a copier une valeur pour la mettre dans cette case, du moins pour l'instant

Merci
A++

capture ecrans.png
 
D

dh42

Compagnon
GetOEMdro lis la valeur contenue dans une dro, et l'affecte à une variable VB

par ex Hauteur = GetOEMdro(802) mettra la valeur affichée dans la dro Z dans la variable Hauteur.

SetOEMdro fait l'inverse, il met une valeur dans la dro.

Il existe aussi GetUserDro et SetUserDro, qui sont prévus pour accéder aux dro utilisateur. Ta dro 1040 doit en être une car elle ne figure pas dans la liste de code OEM des DRO standards de mach.

sauf erreur, la dro Z du bas de ton image doit être la 802.

pour copier les donnée de la dro 802 à la dro 1040 tu dois écrire:

SetUserdro(1040,GetOEMdro(802))

ou en développant le programme.

PosZ = GetOEMdro(802)
SetUserdro(1040,PosZ)

++
David
 
C

ch_porchet

Apprenti
merci beaucoup,
comme ça je peux continuer sur ma lancée.
je te tiens au courant

A++
 
C

ch_porchet

Apprenti
Hello
Peux tu me corriger cette macro,si tu arrives,car moi je trouve pas(je doit etre vraiment nul!!)
cer elle me met "syntax erreur"
la 2eme partie fonctionne seul,après le message,mais pas avec le début
la commande du message je l'ai copier de la macro de mach3fr

CODE "G00 G53 Z0"
While ISMOVING()
Wend
CODE "G00 G53 X40 Y0"
MACHMSG("CHANGEZ L'OUTIL ET APPUYEZ SUR OK", "CHANGEMENT D'OUTIL",1)
*****2eme partie****
PALPX = GETOEMDRO(1010)
PALPY = GETOEMDRO(1011)
CODE "G00 G53 X"& PALPX &" Y"& PALPY
While ISMOVING()
Wend
'Lancement de la commande de probe rapide vers le bas
SetOEMDRO(1000, 2) ' Numéro de l'axe ou faire le probe (0=X, 1=Y, 2=Z)
SetOEMDRO(1001, -90) ' Course maxi (le signe indique le sens de déplacement)
SetOEMDRO(1002, 20) ' Feed rate
SetOEMDRO(1003, 9) ' Numéro de l'entré de plapage (1 à 16
SetOEMDRO(1004, 1) ' état de l'entrée attendu (0 ou 1)
NotifyPlugins(3000)

' Attente fin de probe descente
While (GetOEMDRO(1000) = 0)
Sleep(10)
Wend
'Si succès, lancement de probe lent ver le haut
If (GetOEMDRO(1000) = 1) Then
SetOEMDRO(1000, 2) ' Numéro de l'axe ou faire le probe (0=X, 1=Y, 2=Z)
SetOEMDRO(1001,+10) ' Remontée en Z
SetOEMDRO(1002, 1) ' Feed rate
SetOEMDRO(1003, 9) ' Numéro de l'entré de plapage (1 à 16
SetOEMDRO(1004, 0) ' Attente re-laché de l'entrée 9
NotifyPlugins(3000)
' Attente fin de probe
While (GetOEMDRO(1000) = 0)
Sleep(10)
Wend
If (GetOEMDRO(1000) = 1) Then
ZProbe = GetOEMDRO(1001) ' Lecture de la position de palpage
Z = GetOEMDRO(85) ' Lecture positionactuelle
HPalpeur = 30 ' Déclaration hauteur palpeur
Zero = Z - ZProbe + HPalpe ' Distance erreur liée à deceleration
Zero = GetOEMdro(802)
SetUserdro(1050,Zero)

Code "G0 G53 Z0"
While IsMoving()
Wend
Else
'Message ("Fin de probe avec erreur palpage lent")
End If
Else
'Message ("Fin de probe avec erreur palpage rapide")


Merci
A+
 
D

dh42

Compagnon
Salut,

Je ne vois pas d'erreur ... j'ai même copié ta ligne MACHMSG("CHANGEZ L'OUTIL ET APPUYEZ SUR OK", "CHANGEMENT D'OUTIL",1) dans un bouton inutilisé de mach, et ça marche !

Sans titre-1.jpg


++
David
 
C

ch_porchet

Apprenti
ok
mais pourtant elle ne fonctionne pas
si je force la lecture pas a pas ,elle s'arrete au premier "Sleep(10)"
mais je suis pas sure que c'est de la que vient l'erreur ,car vu que c'est une pause cela le bloc peut etre.
Y a t'il un moyen de savoir (avec un analyseur,par exemple) de controler une macro ?
 
D

dh42

Compagnon
ch_porchet a dit:
ok
mais pourtant elle ne fonctionne pas
si je force la lecture pas a pas ,elle s'arrete au premier "Sleep(10)"
mais je suis pas sure que c'est de la que vient l'erreur ,car vu que c'est une pause cela le bloc peut etre.
Y a t'il un moyen de savoir (avec un analyseur,par exemple) de controler une macro ?

Sur des environnements de programmation comme Visual Studio il y a ce genre de choses, mais je ne pense pas qu'il y ai un débogueur de macro sous mach.

A tu vérifié que toute les DRO dont il est question sur le programme existent bien sur l'écran.

Il y a un truc que je trouve bizarre, c'est le fait d'utiliser des commande Set et GetOEMdro sur des dro qui sont visiblement des dro utilisateur ; ce devrait être SetUserDro et GetUserDro pour toutes les DRO au dessus de 1000

++
David
 
C

ch_porchet

Apprenti
hello
mais quelle différence cela fait entre les deux
je te met la macro que j'ai modifier avec ton aide,et celle-la elle fonctionne nikel

ALPX = GETOEMDRO(1010)
PALPY = GETOEMDRO(1011)
CODE "G00 G53 Z0"
While ISMOVING()
Wend
CODE "G00 G53 X"& PALPX &" Y"& PALPY
While ISMOVING()
Wend
'Lancement de la commande de probe rapide vers le bas
SetOEMDRO(1000, 2) ' Numéro de l'axe ou faire le probe (0=X, 1=Y, 2=Z)
SetOEMDRO(1001, -90) ' Course maxi (le signe indique le sens de déplacement)
SetOEMDRO(1002, 20) ' Feed rate
SetOEMDRO(1003, 9) ' Numéro de l'entré de plapage (1 à 16
SetOEMDRO(1004, 1) ' état de l'entrée attendu (0 ou 1)
NotifyPlugins(3000)

' Attente fin de probe descente
While (GetOEMDRO(1000) = 0)
Sleep(10)
Wend
'Si succès, lancement de probe lent ver le haut
If (GetOEMDRO(1000) = 1) Then
SetOEMDRO(1000, 2) ' Numéro de l'axe ou faire le probe (0=X, 1=Y, 2=Z)
SetOEMDRO(1001,+10) ' Remontée en Z
SetOEMDRO(1002, 1) ' Feed rate
SetOEMDRO(1003, 9) ' Numéro de l'entré de plapage (1 à 16
SetOEMDRO(1004, 0) ' Attente re-laché de l'entrée 9
NotifyPlugins(3000)
' Attente fin de probe
While (GetOEMDRO(1000) = 0)
Sleep(10)
Wend
If (GetOEMDRO(1000) = 1) Then
ZProbe = GetOEMDRO(1001) ' Lecture de la position de palpage
Z = GetOEMDRO(85) ' Lecture positionactuelle
HPalpeur = 30 ' Déclaration hauteur palpeur
Zero = Z - ZProbe + HPalpe ' Distance erreur liée à deceleration
Zero = GetOEMdro(802)
SetOEMdro(1050,Zero)

Code "G0 G53 Z0"
While IsMoving()
Wend
Else
'Message ("Fin de probe avec erreur palpage lent")
End If
Else
'Message ("Fin de probe avec erreur palpage rapide")
End If

maitenant il faut que j'arrive a introduire la commande de changement d'outil**MACHMSG("CHANGEZ L'OUTIL ET APPUYEZ SUR OK", "CHANGEMENT D'OUTIL",1)**
car avec celle la elle bloque ou il y a :!:

PALPX = GETOEMDRO(1010)
PALPY = GETOEMDRO(1011)
CODE "G00 G53 Z0"
While ISMOVING()
Wend
CODE "G00 G53 X40 Y0"
MACHMSG("CHANGEZ L'OUTIL ET APPUYEZ SUR OK", "CHANGEMENT D'OUTIL",1)
CODE "G00 G53 X"& PALPX &" Y"& PALPY
While ISMOVING()
Wend
'Lancement de la commande de probe rapide vers le bas
SetOEMDRO(1000, 2) ' Numéro de l'axe ou faire le probe (0=X, 1=Y, 2=Z)
SetOEMDRO(1001, -90) ' Course maxi (le signe indique le sens de déplacement)
SetOEMDRO(1002, 20) ' Feed rate
SetOEMDRO(1003, 9) ' Numéro de l'entré de plapage (1 à 16
SetOEMDRO(1004, 1) ' état de l'entrée attendu (0 ou 1)
NotifyPlugins(3000)

' Attente fin de probe descente
While (GetOEMDRO(1000) = 0) *** :!:
Sleep(10)
Wend
'Si succès, lancement de probe lent ver le haut
If (GetOEMDRO(1000) = 1) Then
SetOEMDRO(1000, 2) ' Numéro de l'axe ou faire le probe (0=X, 1=Y, 2=Z)
SetOEMDRO(1001,+10) ' Remontée en Z
SetOEMDRO(1002, 1) ' Feed rate
SetOEMDRO(1003, 9) ' Numéro de l'entré de plapage (1 à 16
SetOEMDRO(1004, 0) ' Attente re-laché de l'entrée 9
NotifyPlugins(3000)
' Attente fin de probe
While (GetOEMDRO(1000) = 0)
Sleep(10)
Wend
If (GetOEMDRO(1000) = 1) Then
ZProbe = GetOEMDRO(1001) ' Lecture de la position de palpage
Z = GetOEMDRO(85) ' Lecture positionactuelle
HPalpeur = 30 ' Déclaration hauteur palpeur
Zero = Z - ZProbe + HPalpe ' Distance erreur liée à deceleration
Zero = GetOEMdro(1050)

Code "G0 G53 Z0"
While IsMoving()
Wend
Else
'Message ("Fin de probe avec erreur palpage lent")
End If
Else
'Message ("Fin de probe avec erreur palpage rapide")

voila mon probleme
A+
 
D

dh42

Compagnon
et bien je n'en sais rien du tout !!! utilise tu l'éditeur de code de mach3 pour éditer ?

j'ai remarqué que ça posait parfois des problèmes si on éditait avec le bloc note plutôt qu'avec le VB editor. (il semble que ce soit un problème de caractère de fin de chaine, ou peut être de saut de ligne ; donc des caractères invisibles)

J'ai le même problème avec MachScreen ; le même texte tapé dans le bloc note ou dans l'éditeur de machscreen ne fonctionne pas toujours alors que si je le tape dans le VB script editor de mach et que je le colle dans les boutons de MachScreen ça marche. :roll:

++
David
 
C

ch_porchet

Apprenti
je le fait déjà avec l'éditeur de macro :cry: ,comme sa je peut l'essayer pas a pas
d'ailleur je commence a avoir les yeux carré :lol:
mais il faut que je trouve la solution
 
D

dh42

Compagnon
ch_porchet a dit:
je le fait déjà avec l'éditeur de macro :cry: ,comme sa je peut l'essayer pas a pas
d'ailleur je commence a avoir les yeux carré :lol:
mais il faut que je trouve la solution

Si ça peut te rassurer, j'ai passé une heure à comprendre pourquoi une fonction ne fonctionnais pas (VB .net).... avant de me rendre compte que j'avais tout simplement oublié de l’appeler depuis le prog principal, elle n'était donc jamais exécutée :roll: :oops:

++
David
 
C

ch_porchet

Apprenti
ben j'ai pas fait mieux
c'est tous simple en copiant la macro,j'ai oublier le "End If" a la fin
Quel Nul!!!
bon il faut que je change ma macro car comme j'ai fais elle ne corrige pas la hauteur
 
C

ch_porchet

Apprenti
une petite question
j'ai envie de modifier une valeur de Z travail
pour quoi cette commande ne fonctionne pas
SetUserDRO(180,GetOEMdro(1050))
le Dro 1050 = 20
donc j'ai envie que le 20 se mette a la place de la valeur actuel dans Z travail
 
D

dh42

Compagnon
Salut,

Il n'est pas censé y avoir de UserDRO n° 180 ; les UserDRO doivent commencer à 1000.

si c'est une OEM dro (les DRO standard de mach), la 180 correspond à: Machine Z coord - Z Work Offset - Tool length DRO. Si c'est bien celle la que tu veux changer, tu dois y accéder par l'instruction SetOEMdro et non SetUserDro

++
David
 
C

ch_porchet

Apprenti
salut
non pas vraiment
moi il me faut la commande pour changer la valeur de Z travail ou la commande de remise a zero du Z travail
comme sa soit je change directement sa valeur ou alors je la met a zero et je rajoute le décalage
 
C

ch_porchet

Apprenti
YES,Man !!!
C'est la bonne commande
Encore Merci
Donc cette fois ma carte avec port USB et opérationnelle !!
bon il faut maintenant que je regarde mo post pro ,car il doit y avoir une couille ,sa ma couté un fraise.

A Bientot est merci encore
A+
Christophe
 
C

ch_porchet

Apprenti
j'ai encore une question
comment appeler cette macro pendant un GCode (ex M6) ou déclancher cette macro ??

Merci A+
 

Sujets similaires

PL50
Réponses
14
Affichages
1 177
Squal112
Squal112
PL50
Réponses
25
Affichages
927
D
S
Réponses
18
Affichages
2 071
rebarbe
rebarbe
PUSSY
Réponses
0
Affichages
771
PUSSY
PUSSY
D
Réponses
0
Affichages
1 426
diabolomix
D
F
Réponses
4
Affichages
2 152
Alex31
A
V
Réponses
66
Affichages
6 872
Régule
Régule
Haut