Macro magasin d'outils

  • Auteur de la discussion Rivet
  • Date de début
R

Rivet

Apprenti
Bonjour,
Je suis en train de refaire une cnc pour tourner avec Mach3.

J'aimerais savoir comment paramétrer le changement d'outil (magasin en bout de table).
-Déverrouillage de la broche par électrovanne.
-Sur le vérin pneumatique, il y a un capteur avec deux fils. Certainement pour la confirmation du verrouillage.

La fraiseuse concernée:
p1000337.jpg
 
R

Rivet

Apprenti
Je te remercie pour la macro qui vas déjà bien dégrossir l'affaire :-D

Avec le peut de VisualBasic que j'ai appris en bricollant MS_Access 2000, j'ai traduit ta macro comme suit: "- merci à me signaler les erreurs."

-La fonction "Call" je ne connait pas (ou plus). Ex.: "Call MovePos(OldTool)" ou "Call SetUserDRO (1200,NewTool)"
-Pour l'activation de l'outil je pence que c'est ça: "ActivateSignal(Output1) 'Turn On Draw bar to release the tool"

Ce qui me gène avec cette macro, c'est que l'emplacement du chargeur et le numéro d'outil sont lié. Ce qui limite dans mon cas la table à 3 outil.
Une des solution serait d'ajouter un cadre avec les données dans le "screen" de Mach.
un cadre un peut comme ça:


Bon, là il faut que j'y aille.
Salutations.
 
D

DRACHENREITER

Compagnon
Salut,
Rivet a dit:
-Pour l'activation de l'outil je pence que c'est ça: "ActivateSignal(Output1) 'Turn On Draw bar to release the tool"

Oui pour moi il s'agit de la variable qui active le vérin de serrage/déserrage de l'outil.

G53 il me semble qu'il s'agit de l'origine machine.
 
D

dh42

Compagnon
Salut,

G53 il me semble qu'il s'agit de l'origine machine.

Si tu ajoute un G53 après un G0 ou G1, cela signifie que tu utilise les coordonnées machine au lieu des coordonnées courantes de travail.

Attention, contrairement au G54 G55 etc ... le G53 doit être répété après chaque commande G0/G1, il n'est pas persistant comme les autres offsets.

++
David
 
R

Rivet

Apprenti
Je vous remercie de la remarque. J'en prend note (en fait c'est ce que je pencais, mais j'ai pas sus l'écrire :oops: )

dh42 a dit:
Attention, contrairement au G54 G55 etc ... le G53 doit être répété après chaque commande G0/G1, il n'est pas persistant comme les autres offsets.
Le faite que ça ne soit pas persistant et une bonne chose dans une macro, cela évite de modifié l'exécution du G_code.

Pour la fonction Call j'ai l'éxplication ici, cela active bien la sous macro.
Y disent: "Si la procédure retourne une valeur, l'instruction Call l'ignore" donc pas de valeur transférée depuis la sous macro.
Par contre la ligne "Call SetUserDRO (1200,NewTool)" , je ne comprend toujours pas.

Pour avoir les coordonnées d'entrer dans le magasin et de posage de chaque outil, il serait bien de pouvoir les retournées dans la macro principal.
J'ai essayé de remplacer "Call" par "Function" mais je n'arrive pas à retourner plus d'une valeur. Donc je vais essayer avec "Call".

Salutations.
 
D

dh42

Compagnon
Salut

Call SetUserDRO (1200,NewTool) est équivalent à SetUserDRO (1200,NewTool) (le call est optionnel en VB)

SetUserDRO = donner une valeur à la DRO n° 1200 (DRO définie par l'utilisateur = afficheur du N° d'outil probablement)

NewTool est probablement une variable contenant le n° du nouvel outil.

Donc en gros ça sert à afficher le N° du nouvel outil dans l'afficheur de N° d'outil.

++
David
 
R

Rivet

Apprenti
OK pour "Call", MERCI

Pour ce soir juste une petite chose, est ce que le facteur d'échelle des axes et surtout les Unitée ( mm/Pouce) on une influence sur les déplacements pendent une macro?

:arrow: PS: Aucun avis sur l'utilisation d'un tableau: Porte outil <> Numérot d'outil. OU autre suggestions :!:

Salutations
 
V

valentin

Compagnon
bonjour
dans un pot precedent javais subgere sa

essai cette fonction Settoolparam
vois la definition dans le pdf macromach3

numerooutil=1
DiameterParam = 1
ZoffsetParam = 2
XwearParam = 3
ZwearParam = 4
SetToolParam(numerooutil, DiameterParam, 8.145)
SetToolParam(numerooutil, ZoffsetParam, 1.2500)
SetToolParam(numerooutil, XwearParam, 0.0005)
SetToolParam(numerooutil, ZwearParam, 0.0013

+++
 
R

Rivet

Apprenti
Selon ce que j'ai compris, dans le manuel MacroMach à la page 28,
GetToolParam et pour relever les paramètres enregistré dans la table des outils de Mach.
GetToolParam : importer les paramètres et SetToolParam: Exporter les paramètres.

GetToolParam(n°de l'outil, n° de colonne). Par contre le chiffre que tu as en troisième position je ne vois pas à quoi il serre.
n° de colonne: 1) diamètre de l'outil; 2) hauteur de l'outil; 3) décalage en X de l'outil; 4) décalage en Z de l'outil. Décalage servant à l'usinage.
Attention pour le tournage les colonnes ne sont pas les mêmes.
Pourquoi décalage en X et pas en Y ???

Mon anglais étant nul, je vous remercie pour vos corrections.

Salutations.
 
D

dh42

Compagnon
Salut,

Alors je ne connais rien à la gestion d'outils via mach, ni d'ailleurs en Gcode, par contre les paramètres se traduiraient comme cela.

1 = Diameter -> Diamètre
2 = Z Offset -> décalage en Z
3 = X Wear -> usure X ???
4 = Z Wear -> usure Z ???

J'ignore l'utilité de 3 et 4 et ne suis pas sur de ma traduction ... en principe seul le décalage en Z nous intéresse, ainsi que le diamètre ...

Par contre le chiffre que tu as en troisième position je ne vois pas à quoi il sert

Tu veux parler de ça: SetToolParam(numerooutil, DiameterParam, 8.145) ?

Si oui, il n'est que pour la fonction Set... pas pour le Get... et c'est la valeur que tu veux assigner au paramètre que tu désigne dans le 2ieme argument de la fonction (dans l'exemple: DiameterParam est mis à la valeur 8.145 pour l'outil numerooutil)

++
David
 
D

DRACHENREITER

Compagnon
Salut

3 et 4 correspondent bien aux usures. C'est la correction du correcteur d'outil.

Est ce que mach3 peut sortir des bits, octets, string?
 
D

dh42

Compagnon
Est ce que mach3 peut sortir des bits, octets, string?

Je ne comprends pas bien la question ; VB gère ces type de variables, c'est sur ..

Mach3 semble également gérer les types de variables ; par exemple

AppendTeachFile(Filename As String) As Integer

Signifie que cette fonction prends un paramètre de type "String" en entrée et retourne un entier de type "integer"

++
David
 
R

Rivet

Apprenti
Bonjour,
dh42 a dit:
Tu veux parler de ça: SetToolParam(numerooutil, DiameterParam, 8.145) ?

Si oui, il n'est que pour la fonction Set... pas pour le Get... et c'est la valeur que tu veux assigner au paramètre que tu désigne dans le 2ieme argument de la fonction (dans l'exemple: DiameterParam est mis à la valeur 8.145 pour l'outil numerooutil)
Oui, c'est bien de celui là dont je parle. C'est bon à savoir.

DRACHENREITER a dit:
3 et 4 correspondent bien aux usures. C'est la correction du correcteur d'outil.
Selon ce que vous dittent, je n'arrive pas à distinguer la différence entre le 2) Z Offset et 4) Z Wear.
Mais en faite, on pourrait entrer des données qui ne corresponde pas au entête de la table.Je pence que c'est ça qu'a voulu dire Valentin.
Chez moi, la table d'outil correspond à la photo ci dessous.


DRACHENREITER a dit:
Est ce que mach3 peut sortir des bits, octets, string?
D'après mes essais, les "Sting"; :butthead: ceux avec la ficelle, je c'est pas; le format de données, y semble que oui". Pour les autre format, pas tester.

Quelques photos du mécanisme de déverrouillage de l'outil.




Quand au contacteur capteur dont je parlais dans mon premier message, je pence plutôt qu'il correspond au déverrouillage complet de l'outil.
ce qui correspond à cette ligne de code:
>>> SystemWaitFor (7) 'Wait for the tool Release Limit switch
 
D

DRACHENREITER

Compagnon
Salut,

Peut tu faire d'autre photos à l'occasion de la partie mécanique du chargeur d'outil?

Selon ce que vous dittent, je n'arrive pas à distinguer la différence entre le 2) Z Offset et 4) Z Wear.
DRACHENREITER a dit:
Est ce que mach3 peut sortir des bits, octets, string?
D'après mes essais, les "Sting"; :butthead: ceux avec la ficelle, je c'est pas; le format de données, y semble que oui". Pour les autre format, pas tester.
[/quote]

entre le 2 (Height H) et le 4 (Height wear HW)
par exemple tu as un outil d'une hauteur en Z de XXmm tu fait un usinage simple une poche. tu usine, tu mesure la profondeur elle devait faire 10mm +/-0.01 et tu as 9.5mm. Donc tu t'es planté sur la longueur en règle générale la longueur outil on ne la change pas sauf dans les pré-réglages comme l'exemple donc H=XX-0.5 maintenant tu te lance dans la grande série de poches à la 10ième tu mesure la poche et tu mesure 9.9mm cette fois ci dans HWtu vas corriger de -0.1.

++
 
R

Rivet

Apprenti
Donc, ci j'image ça, le "2" c'est la hauteur mesurer par l'outilleur lors du montage de la fraise dans le cône et le "4" c'est la correction par le fraiseur après ou pendant l'utilisation.Avec plusieurs machines le "2" et commun et le "4" et individuel à chaque machine. C'est l'addition des deux qui est la valeur exacte.

Demain, je vais essayer le code qui suit et relever les valeurs demandées par la macro.

Salutations
 
R

Rivet

Apprenti
Bonjour,
avec une semaine de retard, y faut dire que chez moi, la semaine passée, il neigeait et du coup, l'ordi du garage était en grève à cause du froid.

Pas mal de petites corrections on été apportées au code.
- L'entrée dans le porte outil que j'imaginais latéral (la tôle entre l'écrou et la bague moletée) vertical. La fente étant pour le passage des long outil.
- Les message-box (appart peut-être les questions) ne peuvent contenir que le message, pas de titre.
- Et encore deux ou trois bricoles petites bricoles.

Le code actuel et le suivant:

Lors des testes en manuel, les problèmes sont:
- Lors du premier changement après le démarrage de Mach, l'outil affiché (ancien outil) ne correspond pas à l'outil enregistré. Il me semble que l'outil affiché et le même que lors de la fermeture du programme alors que l'outil enregistré et le n°0.
- Plus grave, ci pendant le chargement je rentre du code, ce code s'exécute pendant la macro. Exemple M6 T2 "Run" ... G0 Y10 "Run" la table ce déplace à Y10 entre le déplacement de positionnement et la décante.

Je pensais comme ça:


Finalement c'est comme ça:



DRACHENREITER a dit:
Peut tu faire d'autre photos à l'occasion de la partie mécanique du chargeur d'outil?

Vue de face


de côté ouvert


ouvert de plus prêt


La même, vue de plus bas


Fermé sans outil


Fermé avec outil.
on voit au niveau des galets blanc q'avec un outil le cône décent moins bas que sans outil.

Voilà pour les photos. Il faudra que je la démonte pour la nettoyer je te ferré des photos.
Dessus on peut lire JAHRL ce qui m'envoie à Ce lien. (en trente ans, JAHRL à pris un S = JAHRLS :lol: :smt002 )

Je pence que le temps venu, je vais essayer de fabriquer plus de cône. Ci quelqu'un à des info la dessus merci. J'ouvrirais certainement un nouveau poste pour cela.
En attendant un dessin vite fait avec les côte que j'ai relevé au calibre (pas précis).


Salutations.
 
W

wilf39

Nouveau
Bonjour à tous
ce message suite à l'utilisation de la macro pour le changeur d'outil.
en l'utilisant je me suis aperçu de deux ou trois bugs.

je suis pas une bête en programmation donc je voudrai si possible ,que quelqu'un m'aide pour changer le bout de programme.
déjà tous d'abords quand on lance le changement d'outil le programme fait comme si il y avait un changement d'outil dans le vide et après la machine repart pour aller chercher l'outil ( voir cette vidéo) https://drive.google.com/open?id=1FGVTTUDUkez-IH3a3rPoBM7FtrnFYQmh

autre remarque quand je fais M6 T0 pour retirer l'outil dans le nez de broche celle-ci retire bien l'outil mais tout de suite après elle le reprend. ( voir vidéo ) https://drive.google.com/open?id=17dUFPAXzzZJlkg9sSCkRwi6px-FN16uT.

en vous remerciant d'avance pour vos réponses.

voici le code macro que j'utilise pour l'instant :

'ToolChange Macro For Bed type tool changer 11/05 Brian
Sub Main() ' ??? DEBUT DE LA MACRO "MAIN" ???
OldTool = GetOEMDRO (1200) ' n° de l'outil actuel copier dans la DRO... Tool In spindle DRO You must add this to your settings screen
x = 6.15
y = 355.0
z = -75.0
'x = GetToolChangeStart( 0 ) ' " posion des axes avant le changement d'outil
'y = GetToolChangeStart( 1 ) ' "
'z = GetToolChangeStart( 2 ) ' "

tool = GetSelectedTool() ' n° de l'outil désiré copier depuis T... de la commande M6
NewTool = tool ' NewTool = n° de l'outil désiré Tool Changer Macro (Bed Type)
MaxToolNum = 4 ' n° d'outil maximume pour le chargeure Max number off tools for the changer
ToolDown = -235.00 ' ?? hauteur Z du chargeure d'outil ?? Z Pos to Get or drop a tool
ToolUp = -100.0 ' ?? hauteur de déplacement vers le chrageure d'outil ?? Z Hieght to Rapid from tool to tool
If NewTool = OldTool Then ' Si le nouvel outil et = à l'ancien ...
Exit Sub ' ... arrêter la macro
End If ' ... fin de Si
While NewTool > MaxToolNum ' Quand : le n° d'outil désiré et plus grand que le max d'outil ...
NewTool = Question ("Entrer un n° d'outil plus petit que " & MaxToolNum) ' ... le n° d'outil et = à la boîte de question "Entrer un n° d'outil plus petit que ( nombre d'outil du chargeure)" à remplacer par : NewTool = Question ("Enter New Tool Number up to " & MaxToolNum +1 )
Wend ' ... fin de quand
Code "G00 G53 Z" & ToolUp ' relève Z à la hauteur de déplacement "G53 = valeur absolue"
While IsMoving() ' Attend que la valeur Z soit atteinte ...
Wend ' fin de l'attente
Call MovePos(OldTool) ' ???? déplace à la position de changemment de déchargemment de l'outil (oldTool) ??? X? Y? Z? A? ...
While IsMoving() ' Attend que le déplacement soit fini ...
Wend ' ... fin de l'attente
Code "G53 Z" & ToolDown ' abesse Z à la hauteur de changement d'outil "G53 = valeur absolue"
Sleep(150) ' fait une pose de 0.75 seconde
While IsMoving() ' Attend la fin de la pose ...
Wend ' ... fin de l'attente
ActivateSignal(Output2) ' Active le signal de libération de l'outil "Output2 = on" Turn On Draw bar to release the tool
Sleep(150) ' Pause de 1 seconde
'Wait for the tool to release
'SystemWaitFor (7) 'Wait for the tool Release Limit switch
Code "G53 Z" & ToolUp ' relève Z à la hauteur de déplacement "G53 = valeur absolue"
Call MovePos(NewTool) ' ???? déplace à la position de changemment de chargement de l'outil (NewTool) ??? X? Y? Z? A? ...
While IsMoving() ' Attend que le déplacement soit fini ...
Wend ' ... fin de l'attente
Code "G53 Z" & ToolDown ' abesse Z à la hauteur de changement d'outil
Sleep(150) ' fait une pose de 0.75 seconde
While IsMoving() ' Attend la fin de la pose ...
Wend ' ... fin de l'attente
DeActivateSignal(Output2) ' Désactive le signal de libération de l'outil "Output2 = off"
'Turn Off Draw bar to Clamp the tool
Sleep(150) ' Pause de 1 seconde
'Wait for the tool to Clamp
While IsMoving() ' Attend la fin de la pose ...
Wend ' ... fin de l'attente
Code "G53 Z" & ToolUp ' Relève Z à la hauteur de déplacement
Sleep(150)
Code "G00 X" & x+60
Sleep(150)
Code "G00 Y" & y
Call SetUserDRO (1200,NewTool) ' ????? Inscrit la valeur du nouvel outil dans la DRO...
SetCurrentTool( NewTool ) ' défini le nouvel outil comme outil actif
Code "G00 X" & x & " Y" & y ' Remet la broche en position X,Y relevée au début de la macro
'Move back to where the tool change was prompted
End Sub ' FIN DE LA MACRO

Sub MovePos(ByVal ToolNumber As Integer) ' SOUS MACRO (début)

Select Case ToolNumber ' Relève les coordonnées des outil selon leur n° ...
Case Is = 1 ' Le n° 1 comprend les valeurs ...
Xpos = 6.15 ' Position en X (??? certainnement en coordonée absolue ???)
YPos = 454.76 ' Position en Y
Case Is = 2 ' Le n° 2 comprend les valeurs ...
Xpos = 6.15 ' ...
YPos = 554.76
Case Is = 3
Xpos = 6.15
YPos = 654.76
Case Is = 4
Xpos = 6.15
YPos = 754.76
Case Is = 5
Xpos = 6.15
YPos = 854.76
Case Is = 6
Xpos = 6.15
YPos = 954.76
Case Is = 7
Xpos = 6.15
YPos = 1054.76
Case Is = 8
Xpos = 6.15
YPos = 1154.76
End Select ' ... fin du relever de positions

Code "G53 X" & XPos & " Y" & YPos ' ??? Valeur de la sous macro remplacer par Call dans le code ???
End Sub ' FIN DE LA SOUS MACRO
Main ' ??? FIN DE LA MACRO "MAIN" ???
 

Sujets similaires

PL50
Réponses
25
Affichages
933
D
B
Réponses
3
Affichages
1 064
D
D
Réponses
1
Affichages
11 656
Remyje66
R
S
Réponses
0
Affichages
978
savantfou
S
D
Réponses
1
Affichages
2 549
denis68
D
D
Réponses
15
Affichages
10 846
carlos78
carlos78
Haut