Le Deal du moment : -55%
Coffret d’outils – STANLEY – ...
Voir le deal
21.99 €

BOUCLE DANS MACRO

2 participants

Page 1 sur 2 1, 2  Suivant

Aller en bas

BOUCLE DANS MACRO Empty BOUCLE DANS MACRO

Message  WF Lun 23 Nov 2020 - 16:12

Bonjour à Tous
voila le problème je veux faire une macro pour un bouton avec Machscreen  pour réaliser une rainure ( bien sur il existe la Macro Brian Baker mais je voudrait faire le mienne) , jusqu'à  la  ça va  Visu  GetOEMDRO  ok pas de problème
je sais  appeler des sous programmes avec M98 et retour avec M99 et utiliser les variables  #13 =Z    
  #13=[#13-0.15]  valeur de z à chaque passe -0.15
ça OK
mais je ne peux mettre ces instructions dans une macro en VB Cypress
j essaie une boucle Do  loop while avec la condition mais la je bloque complètement depuis trois jours
' Macro voila le bébé

Sub Main()
                                    'Préparation

DoOEMButton (169)                   'efface le programme precedant dans Mach3

Ltr = GetOEMDRO (1600)          ' Longueur_totale_reglet valeur absolue Longueur_totale
Lar  = GetOEMDRO (1590)          ' largeur_rainure   valeur absolue largeur_totale_reglet
Lon  = GetOEMDRO (1610)          'Longueur_Rainure
Pr  = GetOEMDRO (1620)          'Profondeur_rainure  
Eor = GetOEMDRO (1630)          'Extremité_OrigineE1
Eop = GetOEMDRO (1640)          'Extremité_Opose E2

Eb  =  GetOEMDRO (1650)         'Ebavurage_Bord  


                                     rem Outils
Bv  =  GetOEMDRO (1660)    'Vitesse_broche                                  
Tn  =  GetOEMDRO (824)     'Fraise_n°
Df  =  GetOEMDRO (43)      'Diametre_Fraise  
Rf  =  Df /2                        'RayonFraise =  Diametre_Fraise /2
Lf  =  GetOEMDRO (32)      'Long_fraise_H =  GetOEMDRO (24)
                                  rem Avance
Ae  =  GetOEMDRO (1690)    ' Avance_ebauche
Ap  =  GetOEMDRO (1700)    ' Avance_plonge
Av  =  GetOEMDRO (1710)    'Avance_ebavurage
                                    rem Passe
Pe =   GetOEMDRO (1730)    ' Passe_ebauche
Pp =   GetOEMDRO (1740)    ' Passe_plonge
Pv =   GetOEMDRO (1750)    ' Passe_ebavurage

                                    rem Hauteur
 Hra = GetOEMDRO (1760)     'Hauteur_rapide deplacement degagementrapide
 Hre = GetOEMDRO (1770)     ' Hauteur_retrait  debourrage
 Ha  = GetOEMDRO (1780)     ' Hauteur_avance passage en G1
           
           

 If  Df >= lar Then                 '  If  Diametre_Fraise >= lr Then
 Code"(MSG,Diametre outils trop grand)"
  Exit Sub
 End If  
                                 
 If Ae <= 0 Then                       'Avance_ebauche <= 0 Then
Code"(MSG,Erreur d Avance Ebauche)"
Exit Sub
End If            
                             
  If Pr >= 0 Then  'Profondeur_Rainure >= 0
Code"(MSG,la Pronfondeur Rainure doit etre négative)"
Exit Sub
End If  
                             
  If Pe = 0 Then '    If Passe_ebauche = 0 Then
Code"(MSG,la Passe ne doit pas etre à Zero)"
Exit Sub
End If  

   ' If Ltr <> ((Lon)+( Eor+ Eop))  Then '     If Extremité_Origine = Extremité_Opose
'Code"(MSG,verifier les dimensions reglet)"
'Exit Sub
'End If                              
                                 

OpenTeachFile "KokoReglet.tap"

Code "G0 G49 G40  G17 G80 G50 G90 "   '
Code "M6 T" & Tn  'Code "M6 T" & Fraise_n°
Code "G0 Z"& Hra     'Hauteur_rapide deplacement degagementrapide
'Code "G0 X"& XO & "Y"& YO  ' va au zero dans l axe
Code "G54"
       '                ( ****** PASSES  POCKET ***** )
    Code "S"& Bv       '   ( vitesse broche  19000 tr/mn   )
    Code "F"& Ae       '    ( avance ebauche m/mn   )
    Code "M3 "         ' demarre la broche    
    ' calculs  
       
  Ya = Eor + Rf         '   Ya =  Extremité_Origine + (RayonFraise
  Yb = ((Ya)+(Lon- Df ))             '((Ya)+(Longueur_Rainure - Diametre_Fraise ))
  Xd = Lar/2                      ' largeur_rainure/2  Xstart
  Xg = 0 - Xd                    ' inversion signe + en - de la valeur Xend  
  K = GetOEMDRO (802)
 
 
Do         ' fait*********************début boucle LE PROBLEME EST LA **********************************


    K =Pr-Pe
    Code "G0 X0 Y0 Z20"
    Code "G0 Z" & Hra   '  
    Code "G1 Z0.5 "                '        ( approche Z à 0.2)
    Code "G1 Y" & Ya               '( #7 position Y1 )
    Code "F" & Ap         '( Avance_plonge #2 Z descente   )
    Code "G1 Z" & K     'Passe ébauche
    Code "F" & Ae         'Avance ébauche    
    Code "G1 Y" & Yb      '   ( position Yhaut )
    Code "G1 X" & Xd      '( déplacement droite X+ )
    Code "G1 Y" & Ya      '       '( position Y1bas )
    Code "G1 X" & Xg      '  ( déplacement gauche X- )
    Code "G1 Y" & Yb      '   ( position Yhaut )
    Code "G1 X" & 0      '  (  déplacement VA AU  CENTRE X0 )
     Code"G0 Z" & Hra      ' ( DEGAGEMENT OUTILS REMONTE DE 5mm )    
   
Loop While  K = Pr                 ' condition Loop While Passe_ebauche Profondeur_Rainure

  ' ********************************JUSQU'A LA fin de boucle *********************************
CODE "G0 Z" & Hra
Code"M5 M9"

Code"M30"
 CloseTeachFile                      
 Call LoadStandardLayout()                         '*****************ici je voudrait ouvrir la page 11 que j ai fais sur machscreen*********************
 Call LoadTeachFile()
 End Sub
 
 Main
Par Avance merci pour votre aide  et
merci au forum qui m 'éduque mais vaste tache
WF
WF
très actif
très actif

Messages : 240
Points : 349
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  dh42 Lun 23 Nov 2020 - 19:07

Salut

pour appeler la page 11 (écran)

setpage(11)
LoadStandardLayout()    
sleep(1000) 'pour laisser le temps à l'affichage de se mettre en place


SetPage
Sub SetPage(PageNum As Integer)
This function switches the current display page to the one specified by PageNum.
Arguments:
PageNum is the Integer number of the display page to switch to.


#13=[#13-0.15] valeur de z à chaque passe -0.15
ça OK
mais je ne peux mettre ces instructions dans une macro en VB Cypress

pour ça je ne comprends pas vraiment ; tu n'arrive pas à écrire #13=[#13-0.15]  dans le Gcode via le VB ?

++
David

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25208
Points : 37924
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  dh42 Lun 23 Nov 2020 - 19:29

PS, les écrans de 1 à 10 peuvent être accédés directement par DoOEMButton()

DoOEMButton( 8 ) affichera l'écran n°8

malheureusement ça ne fonctionne pas au delà de 10 apparemment.

++
David

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25208
Points : 37924
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  WF Mar 24 Nov 2020 - 11:35

Bonjour Monsieur David
comme d habitude vous avez trouvé la solution pour afficher la page 11
Ca Marche
SetPage(11)
LoadStandardLayout()
Sleep (1000)
Call LoadTeachFile() ' appel le fichier de la rainure
End Sub
Main
un très grand Merci pour votre aide précieuse
je vais essayé de bidouiller cette Boucle qui me fait la première passe en rectangle à Pe=-1mm ou autre selon le Visu
si je fais Z=Z-Pe à chaque passe cela devrait descendre de -Pe
et bien non ça ne marche pas

Do ' debut boucle
Z=Z-Pe
Code "G0 X0 Y0 Z20"
Code "G0 Z" & Hra ' outils en haut déplacement rapide
Code "G1 Z0.5 " ' approche Z à 0.5
Code "G1 Y" & Ya ' approche en Ya bas position pour plonger
Code "F" & Ap 'Avance_plonger descente
Code "G1 Z" & Pe ' 1ere Passe_plonge descente à Z-Pe
Code "F" & Ae 'Avance_ebauche
Code "G1 Y" & Yb ' va à la position Yb en haut
Code "G1 X" & Xd ' déplacement à droite en X+
Code "G1 Y" & Ya ' retourne position en Ya en bas
Code "G1 X" & Xg ' déplacement à gauche en X-
Code "G1 Y" & Yb ' va position en Yb en haut )
Code "G1 X" & 0 ' déplacement en X=0 AU CENTRE X0 )
Code"G0 Z" & Hra ' degagement de l outils déplacement rapide

Loop While Pe = Pr ' condition Loop While Passe_ebauche = Profondeur_Rainure
en tous cas merci pour votre aide
WF
WF
très actif
très actif

Messages : 240
Points : 349
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  dh42 Mar 24 Nov 2020 - 15:55

Salut,

Z=Z-Pe .... Ok, la variable Z est réduite de la valeur de Pe à chaque passe ... sauf que tu n'utilise la variable Z nul part dans ton code ; il y a la lettre Z écrite telle quelle, mais pas de variable Z.

Code "G1 Z" & Pe ' 1ere Passe_plonge descente à Z-Pe

ici tu ne descend pas de Z-Pe mais de Pe.

si Pe vaut -1, alors Code "G1 Z" & Pe  est remplacé par G1 Z-1 car toute la partie entre les "" est écrite telle-quelle (Donc G1 Z), le & est une concaténation de chaine (ajout de caractères à une chaine existante), et c'est Pe ta variable (qui n'est donc pas entre des "" car ce n'est pas une chaine de caractères mais une valeur numérique), qui est convertie en texte et ajoutée à la suite du texte.

PS: quand tu met un bout de code, met moi aussi les valeurs des variables que je ne peux pas connaitre car elles sont sur tes visus Wink

++
David

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25208
Points : 37924
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  WF Mar 24 Nov 2020 - 16:46

Monsieur David
j ai changé le code pour que la boucle s exécute
j ai essayé Code"M98 P2 L3" avec Code " O0002"
pour la routine cela fait 5 boucles au lieu de 3 puis message d erreur parlant de looping
donc j ai repris les instructions Do et Loop While avec les condition mais cela ne boucle pas
j ai modifié la variable Z en Pe=Pr-Pe profondeur passe= profondeur Totale- profondeur passe
mais comme la boucle ne tourne pas je ne sais pas si cela marche

Do ' fait*** début boucle
Pe=Pr-Pe
Code "G0 X0 Y0 Z20"
Code "G0 Z" & Hra '
Code "G1 Z0.5 " 'approche Z à 0.2
Code "G1 Y" & Ya ' position Y1
Code "F" & Ap '( Avance_plonge Z descente
Code "G1 Z" & Pe 'Passe ébauche
Code "F" & Ae 'Avance ébauche
Code "G1 Y" & Yb ' position Yhaut
Code "G1 X" & Xd ' déplacement droite X+
Code "G1 Y" & Ya ' position Y1bas
Code "G1 X" & Xg ' déplacement gauche X-
Code "G1 Y" & Yb ' position Yhaut
Code "G1 X" & 0 ' déplacement VA AU CENTRE X0
Code"G0 Z" & Hra ' DEGAGEMENT OUTILS REMONTE DE 15mm
Loop While Pe = Pr ' condition de Loop While Passe ébauche = Profondeur Rainure

je suis coincé par la boucle
j ai lu dans la doc Vb Cypress qu il y a une sombre histoire de condition a réalisées avant ou après l 'exécution de la boucle mais je ne suis pas informaticien
en tous cas merci pour votre aide
WF
WF
très actif
très actif

Messages : 240
Points : 349
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  dh42 Mar 24 Nov 2020 - 18:29

et sur l'autre boucle du message précédant

K =Pr-Pe

supposons K = 0 (surface pièce lors du lancement du programme)

dans le début de tes tests, je vois que Pr doit être négatif, et que Pe est positif, donc si on part sur une profondeur rainure de -5 et une passe de 1 alors

K = -5-1 > soit -6 pas bon ...
au passage suivant, Pr et Pe on toujours la même valeur, donc le résultat fait toujours -6

il te faut une variable qui conserve la position en cours ... et ne pas te planter avec les + et les - Wink

ce qu'il te faut, c'est retrancher Pe de la valeur de K, mais en plus, il faut que tu récupère la valeur de la DRO 802 (Z) à chaque boucle pour avoir sa valeur remise à jour.

Voila un code qui fonctionne (j'en ai un peu chié à cause d'erreur d'arrondis, par exemple avec une position à -3.9999 pour -4 ... résultat ça me faisais une passe de plus de 0.0001 ....


Code:
      
Zdepart = 0 'Z de départ de l'usinage ici surface pièce = 0
Pr = 4 'profondeur rainure (positive)
Pe = 2 'incrément de passe
Ztarget = Round(Zdepart - Pr,2) 'position maxi en Z fond de rainure arrondi à 2 décimal pour éviter les bugs
K = Round(Zdepart,2)' position courante

Code "F500" 'vitesse d'usinage
Code "G0 Z" & Zdepart + 0.2 'approche du Z en rapide à 0.2mm au dessus du Z de départ

While ismoving() 'attendre que le mouvement soit fini, sinon le VB va continuer sans attendre le Gcode
sleep(100)
Wend

Do

   K = Round(K-Pe,2) 'niveau d'usinage suivant
   
   If K > Ztarget Then 'on est au dessus de la prof maxi
   
      Code "G1 Z" & K 'on descend à la prof d'usinage   
      Call rainure() 'appel du sous programme rainure
      GoTo suite 'on relance la boucle
   End If
   
   If K <= Ztarget Then 'on dépasse la prof maxi ou on y est déjà, donc dernière passe.
   
      K = Ztarget
      Code "G1 Z" & K 'on descend à la prof d'usinage   
      Call rainure() 'appel du sous programme rainure
      Exit Do 'fin de la boucle
   End If
suite:

Loop

MsgBox("Fin")

Sub rainure()

   'juste pour tester, avance le X de 10mm
   Code "G1 X" & GetOEMDro(800)+10
   
   
   While ismoving() 'attendre que le mouvement soit fini, sinon le VB va continuer sans attendre le Gcode
   sleep(100)
   Wend
     
End Sub



j'utilise la balise "code" pour conserver les indentations dans les boucles et test, sinon c'est illisible car le forum supprime les espaces en début de ligne ..

++
David


Dernière édition par dh42 le Mar 24 Nov 2020 - 18:43, édité 2 fois

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25208
Points : 37924
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  dh42 Mar 24 Nov 2020 - 18:37

La partie usinage de la rainure en elle même et dans la Sub

Il faut aussi pense à gérer le cas ou la profondeur de rainure n'est pas un multiple de l'incrément de passe afin de faire une passe de complment pour finir à la bonne profondeur.

j'ai utilisé des valeurs positives pour la profondeur de rainure et pour l'incrément de passe ; c'est plus logique car ici on ne parle pas en coordonnées mais on donne une longueur.

Je ne sais pas si tu l'a déjà, mai sil te faudra une visu pour y mettre la valeur de la position de départ de la rainure (= surface pièce dans CB) ici Zdepart qui correspond à une coord absolue ; Ztarget est la position absolue du fond de la rainure, calculée à partir de Zdepart - prof rainure.

Si il y a des trucs que tu ne pige pas, n'hésite pas à demander.

++
David

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25208
Points : 37924
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  WF Mar 24 Nov 2020 - 19:32

un énorme merci pour le temps passé je suis débloqué et demain je vais adapter tous ça à l écran 11
merci encore
WF
WF
très actif
très actif

Messages : 240
Points : 349
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  WF Jeu 26 Nov 2020 - 15:38

Bonjour M David
J ai des trucs que ne pige pas
1er truc
Pr= profondeur rainure
Pe= valeur de  passe incrément
Zdepart = zéro au dessus du brut G54 Z0 visu (1820) valeur absolue

Zdepart =ABS(GetOEMDRO(1820))

Ztarget = profondeur rainure à atteindre  Ztarget = Round(Zdepart - Pr,2)
Ztarget =ABS(GetOEMDRO(1620)) valeur absolue
donc pour moi mais je dois me tromper Pr = Ztarget c' est la même valeur je peux remplacer Pr par ZDépart en écrivant ABS(GetOEMDRO(1820)) ???

2eme Truc
je dois insérer mon parcours avec K à la place de Pe  en dessous de
Sub Rainure()

3eme truc
quand j inserts  sous votre dernier End Sub et je déplace le End Sub après
Call LoadTeachFile()


Code"M30"
CloseTeachFile
SetPage(11)                        
LoadStandardLayout()
Sleep (1000)
Call LoadTeachFile()
End Sub
l écran mach bascule entre deux page et une page grise
et il n y a pas de Main dans la Macro ??? ni au début ni à la fin de la macro

je ne suis pas bloque je fais des tas d essais
et merci encore  mais je suis un peu confus de vous prendre du temps
WF
WF
très actif
très actif

Messages : 240
Points : 349
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  dh42 Jeu 26 Nov 2020 - 16:29

Salut,

donc pour moi mais je dois me tromper Pr = Ztarget c' est la même valeur je peux remplacer Pr par ZDépart en écrivant ABS(GetOEMDRO(1820)) ???

Non, Pr c'est la profondeur de la rainure en positif (c'est donc une profondeur, pas une coordonnée absolue), Ztarget c'est la coordonnée absolueà atteindre.

Ztarget = Zdepart - Pr

ex: Pr = 5mm
Zdepart = 15 (= surface pièce)

Ztarget = 15-5 = 10 ... c'est la coordonnée d'arrivée en fond de rainure.

ex: Pr = 5mm
Zdepart = 0 (= surface pièce)

Ztarget = 0-5 = -5 ..coordonnée d'arrivée en fond de rainure.

et il n y a pas de Main dans la Macro ??? ni au début ni à la fin de la macro

Le VB script de Mach3 n'est pas trop regardant, mais oui, il devrait y être si on fait les choses bien ...

Je ne comprends pas trop le reste de ta demande (2 et 3) ... merci de mettre le code complet et si possible en balise "code", que ce soit plus lisible ..

Pour te simplifier la vie, tu pourrais aussi faire ta page "spécial" sur une page inutilisée < à 10, ce qui te permettrais d'utiliser un DoOEMButton (n° d'écran) pour afficher l'écran, c'est plus simple et il n'y a pas de délais d'affichage comme avec Setpage() Loadlayout()

++
David

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25208
Points : 37924
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  WF Sam 28 Nov 2020 - 16:42

Bonjour Monsieur David
je suis toujours au fond du trou la macro fait un tour puis s arrête et z reste en surface
voici le code et et les écrans je mets le bitmap dans le message suivant
merci encore
WF
WF
très actif
très actif

Messages : 240
Points : 349
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  WF Sam 28 Nov 2020 - 17:18

les écrans sont trop lourd pour le forum je suis désolé
à bientôt et merci encore pour votre aide
WF
WF
très actif
très actif

Messages : 240
Points : 349
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  dh42 Dim 29 Nov 2020 - 17:40

Salut,

C'est la logique de fonctionnement qui ne vas pas ; la Sub rainure() ne dois faire QUE l'usinage d'un niveau et donc elle est appelée à chaque niveau.

Le fait que tu ai mis:

CODE "G0 Z" & Hra
Code"M5 M9"  
Code"M30"
CloseTeachFile
SetPage(11)                        
LoadStandardLayout()
Sleep (1000)
Call LoadTeachFile()

dans la sub rainure fait que tout ce code sera appelé à chaque niveau d'usinage, ce qui n'est pas le but .. et en plus comme il y a un M30, donc fin programme, ton programme s’arrêtera à la fin de la 1iere passe.

donc il faut que la sub rainure() ne contienne que le code pour faire un niveau d'usinage ; tout le reste n'a rien à y faire et doit être éxécuté une fois que tous les niveaux d’usinage sont fait, donc il devrait être à la sortie de la boucle Do Loop ( à la place de msgbox("fin") )

++
David

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25208
Points : 37924
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  WF Mar 1 Déc 2020 - 17:52

Bonjour à Tous et en particulier à M David
à qui je prend tous son temps Merci pour votre aide
1° j avance un peu
la boucle tourne et génère le Gcode
par contre il faut des valeurs négatives pour la profondeur rainure Pr et la valeur des passes ???

et aussi j'additionnes des Valeurs machines avec des valeur relatives et ça marche ????
Zdepart= Round (ZO + GetOEMDRO (1580),2) ' ZO = G53 Z machine et la DRO 1580 valeur relative ???

2) j aimerai aussi insérer les valeurs des DRO G54 dans la work offset table avec une ligne de code comme ont fait pour les longueur d outils ????

3) Quand la Profondeur totale rainure Pr diviser par la valeur passe Pe ne tombe pas juste est ce que ces lignes
If K <= Ztarget Then 'on dépasse la prof maxi ou on y est déjà, donc dernière passe.

K = Ztarget ' ne sont pas la solution la valeur de Z= K s ajustant à la valeur Ztarget ?????
en tous merci pour votre aide



WF
WF
très actif
très actif

Messages : 240
Points : 349
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  dh42 Mar 1 Déc 2020 - 21:56

Salut,

par contre il faut des valeurs négatives pour la profondeur rainure Pr et la valeur des passes ???

Non, dans mon code elles sont positives ; comme je t'ai dis sur un autre message, ces 2 valeurs représentent des distances, et une distance c'est toujours positif.

et aussi j'additionnes des Valeurs machines avec des valeur relatives et ça marche ????
Zdepart= Round (ZO + GetOEMDRO (1580),2) ' ZO = G53 Z machine et la DRO 1580 valeur relative ???

Désolé, je ne comprends pas, mais on ne mélange pas des coordonnées pièce et des coordonnées machine, d'ailleurs la DRO 1580 est cencé contenir la position Z de départ (l'équivalent de "surface pièce" dans Cambam, donc position de départ en Z de l'usinage), donc ce n'est pas une coord machine mais une coord pièce. Je ne vois pas ou tu prends le Z0 (pas de visu 1810 sur l'UI que j'ai). Logiquement il n'y a aucune raison d'utiliser les coordonnées machine pour ce genre de travail, c'est tout en coord pièce.

2) j aimerai aussi insérer les valeurs des DRO G54 dans la work offset table avec une ligne de code comme ont fait pour les longueur d outils ????

pour les DRO ; code OEM46 pour la visu qui indique le décalage en cours (1 = G54, 2 = G55, etc) ; OEM 46, 47, 48 pour XYZ du décalage en cours. par contre je ne sais pas comment on met une valeur dans la offset table ; pas trouvé d'instruction pour ça.

3) Quand la Profondeur totale rainure Pr diviser par la valeur passe Pe ne tombe pas juste est ce que ces lignes
If K <= Ztarget Then 'on dépasse la prof maxi ou on y est déjà, donc dernière passe.

K = Ztarget ' ne sont pas la solution la valeur de Z= K s ajustant à la valeur Ztarget ?????

If K <= Ztarget ... Ztarget c'est la COORDONNEE d'arrivé en Z, donc au cours de la boucle, à chaque tour on ajoute la prof de passe à la coord courante, si le résultat est plus bas que Ztarget (ou =), alors on met K (coordonné de travail pour le niveau d'usinage à faire) à la coordonnée correspondant à la prof maxi d'usinage.

ex: increment de passe = 2 ; profondeur rainure = 5
Zdepart = 0 (surface de départ de l'usinage en coord pièce)
Ztarget = Zdepart - profondeur rainure > donc 0-5 = -5 (coord pièce)

à chaque boucle Do/Loop on calcule K, qui sera la coord pièce ou se fera le niveau d'usinage (la position courante en coord pièce)

K = K - incrément de passe ; au premier passage de la boucle K vaut 0 > K = 0 - 2 > K = -2

on teste si K est inférieur à Ztarget dans ce cas, K vaut -2 et Ztarget -5, donc on n'est pas en dessous de la limite de profondeur et donc on fait la passe à -2

2ieme passage de la boucle K vaut tj -2 ; donc K = -2 - 2 (la pos courante - l'incrément de passe) > résultat -4 ... on n'est toujours pas à la prof maxi, donc on fait une passe à -4

3ieme passage, K vaut -4  > K = -4 - 2 > K = -6

cette fois ci on dépasse car -6 est inférieur à -5 ; dans ce cas, on met K à la valeur de Ztarget, soit -5, on fait la dernière passe et on sort de la boucle (exit Do)
ça marche aussi si K est déjà = à -5 ... on lui met aussi la valeur de Ztarget, autrement dit, il reste à -5

++
David

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25208
Points : 37924
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  WF Mer 2 Déc 2020 - 19:47

Bonsoir M David
merci beaucoup pour votre aide
grâce à votre aide je peux ecrire les valeurs que je veux dans work offset table
pour écrire dans G54 les valeurs variables XO,YO,ZO

SetOEMDRO (47, XO ) 'écrit la valeur XO pour work offset table valeur x
SetOEMDRO (48, YO ) 'écrit la valeur YO pour work offset table valeur x
SetOEMDRO (48, ZO ) 'écrit la valeur ZO pour work offset table valeur x
DoOEMButton (33) ' enregistre les valeur pour G54
je pense que pour G55, 56,57 ,58 ce doit etre les autre boutons de la page offset j ai pas vérifier ils ont tous le même numéro (33) je pense à une erreur dans le screen
je continue grâce à vous
WF
WF
très actif
très actif

Messages : 240
Points : 349
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  dh42 Mer 2 Déc 2020 - 21:31

Salut,

je pense que pour G55, 56,57 ,58 ce doit etre les autre boutons de la page offset j ai pas vérifier ils ont tous le même numéro (33) je pense à une erreur dans le screen

Non, le bouton OEM 33, c'est "lancer Gcode" et dans le code pour le bouton G55, il y a simplement G55, donc je suppose que si tu fais un: code("G55") ça doit le faire.

SetOEMDRO (47, XO ) 'écrit la valeur XO pour work offset table valeur x

Ok, c'est marrant mais ça ne fonctionne pas si je tente d'écrire ces valeurs à la main directement dans l'interface (en éditant la DRO)

++
David

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25208
Points : 37924
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  WF Dim 6 Déc 2020 - 19:09

bonjour à tous et à Mr David
Code:




                                                                    Rem Dimensions
      
      
  DoOEMButton   (169)        'efface le programme precedant dans Mach3


          REM DIMENSIONS PIECE
 Ltr  = GetOEMDRO  (1600)    ' 100 mm Longueur totale reglette
 Lar  = GetOEMDRO  (1590)    '  10 mm largeur totale reglette
 Lon  = GetOEMDRO  (1610)    '  90 mm Longueur Rainure
 Pr   = GetOEMDRO  (1620)    '   -8 mm Profondeur Rainure
 Eor  = GetOEMDRO  (1630)    '  5 mm Extremité coté  Origine E1 Ystart
 Eop  = GetOEMDRO  (1640)    '  5 mm  Extremité coté  Oposé  E2 Yend
        
          Rem OUTILS
 Bv = GetOEMDRO  (1660) ' 15000 trmn Vitesse broche  
 Tn = GetOEMDRO  (824)  'Fraise_n°6
 Df = GetOEMDRO  (43)   '6mm Diametre_Fraise
 Rf = Df / 2            '3mm RayonFraise =  Diametre_Fraise /2
 Lf = GetOEMDRO  (32)   '50mm Longueur fraise_H   ou =  GetOEMDRO (24) standart
        
          Rem Avances
 Ae = GetOEMDRO  (1690) '1500mm/mn Avance ebauche      
 Ap = GetOEMDRO  (1700) ' 800mm/mn Avance en plongée
 Av = GetOEMDRO  (1710) '1000mm/mn Avance ebavurage
        
          Rem Passes
 Pe = GetOEMDRO  (1730)  '-2mm Passe_ebauche
 Pv = GetOEMDRO  (1750)  ' 0.3mm Passe_ebavurage
                                                                      
          Rem Hauteurs
 Hra =  GetOEMDRO  (1760) '12mm Hauteur z deplacement degagement rapide securité G0
 Hre =  GetOEMDRO  (1770) ' 5mm Hauteur_retrait z debourrage
 Ha  =  GetOEMDRO  (1780) '10mm Hauteur_avance z passage en G1
 
 Eb  =  GetOEMDRO  (1650) ' 0.3 mm hauteur ebavurage Hauteur Ebavurage bords

        
           Rem G54 offset
            
 Xx = GetOEMDRO (1800)    '600mmbord rainure   valeur coordonnée machine G53
 Yy = GetOEMDRO (1810)    '600mm debut brut barre valeur coordonnée machine G53
 Zz = GetOEMDRO (1830)    '-50mm audessus du brut dans l axe YO valeur coordonnée machine G53  
      
       SetOEMDRO(47,Xx)    'ecrit la valeur Xx pour work offset table valeur X
       SetOEMDRO  (48,Yy)    'ecrit la valeur Yy pour work offset table valeur Y    
       SetOEMDRO  (49,Zz)    'ecrit la valeur Zz pour work offset table valeur Z    
  Sleep(1000)    


         DoOEMButton   (33)  ' lance g54
      
  
       DoOEMButton   (11)  ' affiche l ecran 11
        Sleep(500)

       B= Round(GetOEMDro(802),2)  'position de Z dans visu
  
       Zdepart= Round(GetOEMDRO (1580),2) '- 100mm (Z=0) contact au dessus de la piece valeur coordonnée machine G53
       S= Zdepart+0.5     'hauteur approche piece +0.5mm
      
        DoOEMButton   (1007)  ' affiche l ecran 11            
      
        DoButton   (Cool  ' zero visu X
        DoButton   (9)  ' zero visu Y
        DoButton   (10) ' zero visu Z
      

         Rem conditions (plus tard)
        
      

       Sleep(1300)
  
   OpenTeachFile "KAreglet.tap"
  
    
 
       Code " G49  G40   G90 "   '  G49 G90G17  G50
       Code " G21"
       Code " M6 T" & Tn  'Code "M6 T" & Fraise_n°
       Code " G54"
       Code " G0 Z " & S       'Hra va à Z degagement rapide G0z+15mm

 Ya= Eor+ Rf         ' point Ya entree de la fraise en bas de la piece = extremite + rayon fraise
 Yb= (Ya)+ (Lon -Rf) ' point Yb sortie fraise en haut = Ya + longueur rainure - rayon fraise                    
 Xdd= Lar/2 'decalage du point X à droite probleme soft limite
 Xd= Xdd-Rf    ' point droit en X largeur rainure
 Xg= 0-Xd      'point gauche en X inversion du signe + en moins de Xd                    
 Xc= 0        ' point centre equivalent à XO axe piece
 
        Ztarget = (Round( Zdepart + Pr,2))      'position maxi en Z fond de rainure arrondi à 2 décimal pour éviter les bugs
      
        K = Round(Zdepart,2) '*** position courante
        
    While ismoving() 'attendre que le mouvement soit fini, sinon le VB va continuer sans attendre le Gcode
    Sleep(100)
    Wend

  Do
  
      B= Round (GetOEMDro(802),2)  ' valeur de Z memorisation de Z
    
      C= Round(( B + Pe ),2)         'valeur Z + passe ebauche
  
      K =Round(( K + C),2)'niveau d'usinage suivant
  
      If K > Ztarget Then 'on est au dessus de la prof maxi
      Code "F"& Ap '** rallentie avance pour la descente
      Code "G1 Z" & K 'on descend à la prof d'usinage
        
      Call rainure() 'appel du sous programme rainure
      
      GoTo suite 'on relance la boucle
      
   End If
  
      If K <= Ztarget Then 'on dépasse la prof maxi ou on y est déjà, donc dernière passe.
  
      K = Ztarget
      Code "F"& Ap '** rallentie avance pour la descente
      Code "G1 Z" & C  'K on descend à la prof d'usinage
      
           ' MsgBox("Fin boucle")
        
      Call rainure() 'appel du sous programme rainure
      
   Exit Do 'fin de la boucle
      
      End If
  
     suite:    'le goto arrive ici pour relancer la boucle
  
     Loop
  
     Code "G0 Z " & Hra       ' va à Z degagement rapide G0z+15mm
     Code"M5 M9"  
     Code"M30"

    CloseTeachFile

    Call LoadTeachFile()
  
   'MsgBox("Fin")


    Sub rainure()  
       ' Code "G54"& "X" & Xx &"Y"&Yy &"Z"& Zz  
   'Code " G54"
   Code "G0 Z" & Hre          'remonte rapide l outils  debourrage
   Code "G0 Y" & Ya &"X"& Xc  ' va audessus  du point de descente    Ya =  Extremité_Origine + RayonFraise
   'Code "G1 Z" & S        ' approche dessus piece +0.5
   Code "F"& Ap           ' rallentie avance plonge
   Code "Z" & K           'descent à la 1ere valeur de K = Zdepart- Pe
   Code "F" & Ae          ' accelere l avance ebauche
   Code "Y" & Yb          'remonte en YB
   Code "X" & Xd          'va à droite +5mm
   Code "Y" & Ya          ' redescent en à l entrée
   Code "X" & Xg          'va à gauche -5mm
   Code "Y" & Yb          'remonte en YB
   Code "X" & Xd          'va à droite +5mm
   Code "X" & Xc          'va à droite +0mm dans l axe
   Code "Y" & Ya          ' redescent en à l entrée
   Code "G0 Z" & Hre      'remonte rapide l outils  debourrage

   While ismoving()       'attendre que le mouvement soit fini, sinon le VB va continuer sans attendre le Gcode  
   Sleep(100)  
   Wend
    
   End Sub
  

                                                                                                


                    
j avance  la macro génère le Gcode  pas de problème
il faut absolument pour la profondeur rainure et la valeur des passes des valeur négative

par contre elle ne tient pas compte de la partie G54 du screen
( ca fonctionne avec la petite flèche jaune éditeur scripter VB) ???????
il faut rentrer le g54 à la main ?????
je comprend pas j ai mis des Sleep(1000 jusqu'à 1500) pareil ça ne fonctionne pas

j utilise la Version R3.043.062de mach3 ? je suis à la maison ps de machine pour référencer pendant les tests
par contre j ai une nouvelle carte XHC MK6 ET   pour remplacer la trois axes

donc il me reste l ébavurage  et le g54 à faire fonctionner

en tous cas merci pour votre aide
WF
WF
très actif
très actif

Messages : 240
Points : 349
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  dh42 Dim 6 Déc 2020 - 22:47

Salut,

je comprend pas j ai mis des Sleep(1000 jusqu'à 1500) pareil ça ne fonctionne pas

Pour le G54, je ne sais pas, par contre, les Sleep() (et les Ismoving() ) ne servent que si le Gcode est envoyé à la volé à la machine par le programme VB afin que le VB attende que le GCode soit exécute par la CN ; par contre quand tu utilise le mode apprentissage, ça n’exécute pas le Gcode directement, mais ça se contente de l'écrire dans un fichier, donc les Sleep et IsMoving n'ont pas d'utilité.

en fait, j'avoue que je ne comprends pas vraiment ce que tu veux faire avec ces valeurs assignées au G54  scratch pour ma part si je met des valeurs dans tes cases origine G54 et que j’appuie sur le bouton "Fixture 1 - G54" il ne se passe rien que j'ai ou non exécuté le code.. ni au niveau des visu, ni dans la table des "fixtures" .. la valeur lue dans la DRO 1800 (ton "origine G54 X") n'est pas copiée dans la dro 47 de  la page "offset", tout comme si je tente d'entrer directement une valeur dans cette dro 47 ..

en principe le G54, ne sert qu'à sélectionner un décalage existant dans la liste des fixtures, pas à inscrire une valeur de décalage. La valeur du décalage s’inscrit d'elle même au moment ou tu fais la RàZ des axes.

Si le but est de positionner le point 0 du G54 par rapport au G53 (coord machine) ; disons avec le 0,0 du G54 à 10,20 en coord machine, alors le principe est:

- déplacer les axes à 10,20 en coord machine > G0 G53 X10 Y20
- sélectionner l'offset G54 > G54
- définir le point 0 temporaire pour l'offset courant > G92 X0 Y0 (ne produit aucun déplacement, = RàZ des visu)

attention la mise à 0 de l'offset courant par un G92 n'est pas strictement identique à une RàZ en cliquant les boutons de RàZ sur l'UI ; dans le cas du G92, c'est un 0 temporaire, qui dure jusqu'à ce qu'il soit modifié ou annulé (G92.1) ou que le Gcode rencontre un M30 (fin programme) ; à la fin du programme, les valeurs qui se trouvaient dans les visu XYZ seront restaurées à leur valeur avant G92.

bien sûr on peut faire l'inverse, si on est déjà au 0,0 machine (G53) au lieu d'aller à 10,20 en coord machine, puis de mettre à 0, on peut entrer directement le décalage, qui cette fois sera négatif, puis se déplacer après au 0,0 du G54.

si on est déjà au 0 machine
- sélectionner le G54 > G54
- mettre les visu XY à -10,-20 > G92 X-10 Y-20
- aller à 0,0 en G54 > G0 X0 Y0

++
David

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25208
Points : 37924
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  WF Lun 7 Déc 2020 - 18:24

bonjour à Tous et à M David
donc voila le but de la macro
Code:




                                                                    Rem Dimensions
      
      
  DoOEMButton   (169)        'efface le programme precedant dans Mach3


          REM DIMENSIONS PIECE
 Ltr  = GetOEMDRO  (1600)    ' 100 mm Longueur totale reglette
 Lar  = GetOEMDRO  (1590)    '  10 mm largeur totale reglette
 Lon  = GetOEMDRO  (1610)    '  90 mm Longueur Rainure
 Pr   = GetOEMDRO  (1620)    '   -8 mm Profondeur Rainure
 Eor  = GetOEMDRO  (1630)    '  5 mm Extremité coté  Origine E1 Ystart
 Eop  = GetOEMDRO  (1640)    '  5 mm  Extremité coté  Oposé  E2 Yend
        
          Rem OUTILS
 Bv = GetOEMDRO  (1660) ' 15000 trmn Vitesse broche  
 Tn = GetOEMDRO  (824)  'Fraise_n°6
 Df = GetOEMDRO  (43)   '6mm Diametre_Fraise
 Rf = Df / 2            '3mm RayonFraise =  Diametre_Fraise /2
 Lf = GetOEMDRO  (32)   '50mm Longueur fraise_H   ou =  GetOEMDRO (24) standart
        
          Rem Avances
 Ae = GetOEMDRO  (1690) '1500mm/mn Avance ebauche      
 Ap = GetOEMDRO  (1700) ' 800mm/mn Avance en plongée
 Av = GetOEMDRO  (1710) '1000mm/mn Avance ebavurage
        
          Rem Passes
 Pe = GetOEMDRO  (1730)  '-2mm Passe_ebauche
 Pv = GetOEMDRO  (1750)  ' 0.3mm Passe_ebavurage
                                                                      
          Rem Hauteurs
 Hra =  GetOEMDRO  (1760) '12mm Hauteur z deplacement degagement rapide securité G0
 Hre =  GetOEMDRO  (1770) ' 5mm Hauteur_retrait z debourrage
 Ha  =  GetOEMDRO  (1780) '10mm Hauteur_avance z passage en G1
 
 Eb  =  GetOEMDRO  (1650) ' 0.3 mm hauteur ebavurage Hauteur Ebavurage bords

        
           Rem G54 offset
          
          
           SetOEMDRO(47,0)
           SetOEMDRO(48,0)
           SetOEMDRO(49,0)
           Sleep(500)          
            
 Xx = GetOEMDRO (1800)    '600mmbord rainure   valeur coordonnée machine G53
 Yy = GetOEMDRO (1810)    '600mm debut brut barre valeur coordonnée machine G53
 Zz = GetOEMDRO (1830)    '-50mm audessus du brut dans l axe YO valeur coordonnée machine G53  
      
       SetOEMDRO(47,Xx)    'ecrit la valeur Xx pour work offset table valeur X
       SetOEMDRO  (48,Yy)    'ecrit la valeur Yy pour work offset table valeur Y    
       SetOEMDRO  (49,Zz)    'ecrit la valeur Zz pour work offset table valeur Z    
  Sleep(500)
                Zo=-10    
             Code "G53 Z" & Zo
          
            Code "G0G53"& "X" & Xx &"Y"&Yy &"Z"& Zz        
      
            DoButton   (Cool  ' zero visu X
            DoButton   (9)  ' zero visu Y
            DoButton   (10) ' zero visu Z

         DoOEMButton   (33)  ' lance g54
      
  
         DoOEMButton   (11)  ' affiche l ecran 11
        Sleep(500)

       B= Round(GetOEMDro(802),2)  'position de Z dans visu
  
       Zdepart= Round(GetOEMDRO (1580),2) '- 100mm (Z=0) contact au dessus de la piece valeur coordonnée machine G53
       S= Zdepart+0.5     'hauteur approche piece +0.5mm
      
         Rem conditions (plus tard)
        
      

       Sleep(500)
  
   OpenTeachFile "KAreglet.tap"
  
    
 
       Code " G49  G40   G90 "   '  G49 G90G17  G50
       Code " G21"
       Code " M6 T" & Tn  'Code "M6 T" & Fraise_n°
       Code " G54"
       Code " G0 Z " & S       'Hra va à Z degagement rapide G0z+15mm

 Ya= Eor+ Rf         ' point Ya entree de la fraise en bas de la piece = extremite + rayon fraise
 Yb= (Ya)+ (Lon -Rf) ' point Yb sortie fraise en haut = Ya + longueur rainure - rayon fraise                    
 Xdd= Lar/2 'decalage du point X à droite probleme soft limite
 Xd= Xdd-Rf    ' point droit en X largeur rainure
 Xg= 0-Xd      'point gauche en X inversion du signe + en moins de Xd                    
 Xc= 0        ' point centre equivalent à XO axe piece
 
        Ztarget = (Round( Zdepart + Pr,2))      'position maxi en Z fond de rainure arrondi à 2 décimal pour éviter les bugs
      
        K = Round(Zdepart,2) '*** position courante
        
    While ismoving() 'attendre que le mouvement soit fini, sinon le VB va continuer sans attendre le Gcode
    Sleep(100)
    Wend

  Do
  
      B= Round (GetOEMDro(802),2)  ' valeur de Z memorisation de Z
    
      C= Round(( B + Pe ),2)         'valeur Z + passe ebauche
  
      K =Round(( K + C),2)'niveau d'usinage suivant
  
      If K > Ztarget Then 'on est au dessus de la prof maxi
      Code "F"& Ap '** rallentie avance pour la descente
      Code "G1 Z" & K 'on descend à la prof d'usinage
        
      Call rainure() 'appel du sous programme rainure
      
      GoTo suite 'on relance la boucle
      
   End If
  
      If K <= Ztarget Then 'on dépasse la prof maxi ou on y est déjà, donc dernière passe.
  
      K = Ztarget
      Code "F"& Ap '** rallentie avance pour la descente
      Code "G1 Z" & C  'K on descend à la prof d'usinage
      
           ' MsgBox("Fin boucle")
        
      Call rainure() 'appel du sous programme rainure
      
   Exit Do 'fin de la boucle
      
      End If
  
     suite:    'le goto arrive ici pour relancer la boucle
  
     Loop
  
     Code "G0 Z " & Hra       ' va à Z degagement rapide G0z+15mm
     Code"M5 M9"  
     Code"M30"

    CloseTeachFile

    Call LoadTeachFile()
  
   'MsgBox("Fin")


    Sub rainure()  
       ' Code "G54"& "X" & Xx &"Y"&Yy &"Z"& Zz  
   'Code " G54"
   Code "G0 Z" & Hre          'remonte rapide l outils  debourrage
   Code "G0 Y" & Ya &"X"& Xc  ' va audessus  du point de descente    Ya =  Extremité_Origine + RayonFraise
   'Code "G1 Z" & S        ' approche dessus piece +0.5
   Code "F"& Ap           ' rallentie avance plonge
   Code "Z" & K           'descent à la 1ere valeur de K = Zdepart- Pe
   Code "F" & Ae          ' accelere l avance ebauche
   Code "Y" & Yb          'remonte en YB
   Code "X" & Xd          'va à droite +5mm
   Code "Y" & Ya          ' redescent en à l entrée
   Code "X" & Xg          'va à gauche -5mm
   Code "Y" & Yb          'remonte en YB
   Code "X" & Xd          'va à droite +5mm
   Code "X" & Xc          'va à droite +0mm dans l axe
   Code "Y" & Ya          ' redescent en à l entrée
   Code "G0 Z" & Hre      'remonte rapide l outils  debourrage

    While ismoving()       'attendre que le mouvement soit fini, sinon le VB va continuer sans attendre le Gcode  
    Sleep(100)  
    Wend
    
   End Sub
  

                                                                                                


                      

mon idée sur la table de la cnc  dans un coin il y a  un étau  fixé à demeure  ( G54  ou autre G55 etc.. connu Xx,Yy,Zz )
avant tous référencement  
ensuite on va sur l écran (12) de la pièce mon pseudo wizard
la on rentre les paramètres dimensions  fraise  avances passes G54 vitesse  etc.....
on sert la pièce dans l étau avec une butée et une cale (G54)
on appuie sur le bouton  de l'écran (12) qui génère et charge le Gcode dans Mach3
on démarre Mach3 qui déroule le Gcode  et fabrique la pièce
donc le g54 est important
si on ne peut écrire dans les cases de la work offset table par l intermédiaire du VB bouton
es ce que je peux faire déplacer la Spindle  par des g53 à la position du G54 voulue ??? (je pense que oui)
en remontant la spindle en Z en premier pour aller à G54 puis Xx ET Yy et descendre àZc et mettre les visus à zero  
    DoButton   (Cool  ' zero visu X  
     DoButton   (9)  ' zero visu Y  
     DoButton   (10) ' zero visu Z
la cote Zdépart de l'écran (12)
est donc  une cote relative Zdepart = 0mm  (je pense que oui de même que mes cote de retrait qui sont en relatif

un dernier problème que 'ai rencontré  
les codes OEM ( OEMDRO (Xxx)
et les codes standards comment on les ecrits ????? visu bouton led ( machscreen nous donne les valeurs)
visus de Z= OEMDRO (802)  en standard la valeur et (2) ????
excuser la longueur de mon verbiage
mais un très très  grand merci pour votre aide
WF
WF
très actif
très actif

Messages : 240
Points : 349
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  dh42 Lun 7 Déc 2020 - 20:23

Salut,

en remontant la spindle en Z en premier pour aller à G54 puis Xx ET Yy et descendre àZc et mettre les visus à zero
DoButton (8 )' zero visu X
DoButton (9) ' zero visu Y
DoButton (10) ' zero visu Z

Oui, mais ça ne fonctionne qu'en direct depuis le VB, tu ne peux pas mettre des DoButtons() dans le GCode lui même .... à moins de faire une macro (code M) qui sera appelée par le Gcode et qui contiendra les DoButtons() (même principe que les autres codes M)

et les codes standards comment on les ecrits ?????

Il vaut mieux éviter d’utiliser les codes standards, il sont la juste pour compatibilité avec les (très) vielles versions de Mach3.

Sinon, au lieu de GetOEMDRO() ou SetOEMDRO() pour les codes OEM, c'est GetDRO() et SetDRO() pour les codes standards.

++
David

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25208
Points : 37924
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  WF Mar 8 Déc 2020 - 19:02

Bonjour à M David et à vous Tous  


Il vaut mieux éviter d’utiliser les codes standards, il sont la juste pour compatibilité avec les (très) vielles versions de Mach3.

Sinon, au lieu de GetOEMDRO() ou SetOEMDRO() pour les codes OEM, c'est GetDRO() et SetDRO() pour les codes standards.
mais sur mes ecran Mach3 j ai plein de code standard ( je les change avec machscreen ??????  Version R3.043.062 de mach3
Bon à part ça excuser moi je coince encore avec la deuxième boucle  le deuxième loop  me fait syntaxe error ?????
Code:




                                                                    Rem Dimensions
      
      
  DoOEMButton   (169)        'efface le programme précédant dans Mach3


          REM DIMENSIONS PIECE
 Ltr  = GetOEMDRO  (1600)    ' 100 mm Longueur totale reglette
 Lar  = GetOEMDRO  (1590)    '  10 mm largeur totale reglette
 Lon  = GetOEMDRO  (1610)    '  90 mm Longueur Rainure
 Pr   = GetOEMDRO  (1620)    '   -8 mm Profondeur Rainure
 Eor  = GetOEMDRO  (1630)    '  5 mm Extremité coté  Origine E1 Ystart
 Eop  = GetOEMDRO  (1640)    '  5 mm  Extremité coté  Oposé  E2 Yend
        
          Rem OUTILS
 Bv = GetOEMDRO  (1660) ' 15000 trmn Vitesse broche  
 Tn = GetOEMDRO  (824)  'Fraise_n°6
 Df = GetOEMDRO  (43)   '6mm Diametre_Fraise
 Rf = Df / 2            '3mm RayonFraise =  Diametre_Fraise /2
 Lf = GetOEMDRO  (32)   '50mm Longueur fraise_H   ou =  GetOEMDRO (24) standart
        
          Rem Avances
 Ae = GetOEMDRO  (1690) '1500mm/mn Avance ebauche      
 Ap = GetOEMDRO  (1700) ' 800mm/mn Avance en plongée
 Av = GetOEMDRO  (1710) '1000mm/mn Avance ebavurage
        
          Rem Passes
 Pe = GetOEMDRO  (1730)  '-2mm Passe_ebauche
 Pv = GetOEMDRO  (1750)  ' 0.3mm Passe_ebavurage
                                                                      
          Rem Hauteurs
 Hra =  GetOEMDRO  (1760) '12mm Hauteur z deplacement degagement rapide securité G0
 Hre =  GetOEMDRO  (1770) ' 5mm Hauteur_retrait z debourrage
 Ha  =  GetOEMDRO  (1780) '10mm Hauteur_avance z passage en G1
 
 'ZVtarget  =  GetOEMDRO  (1650) ' -1.5 mm hauteur ebavurage Hauteur Ebavurage bords

        
           Rem G54 offset
          
          
           SetOEMDRO(47,0)
           SetOEMDRO(48,0)
           SetOEMDRO(49,0)
           Sleep(500)          
            
 Xx = GetOEMDRO (1800)    '600mmbord rainure   valeur coordonnée machine G53
 Yy = GetOEMDRO (1810)    '600mm debut brut barre valeur coordonnée machine G53
 Zz = GetOEMDRO (1830)    '-50mm audessus du brut dans l axe YO valeur coordonnée machine G53  
      
       SetOEMDRO(47,Xx)    'ecrit la valeur Xx pour work offset table valeur X
       SetOEMDRO  (48,Yy)    'ecrit la valeur Yy pour work offset table valeur Y    
       SetOEMDRO  (49,Zz)    'ecrit la valeur Zz pour work offset table valeur Z    
       Sleep(300)
                Zo=-10    
             Code "G53 Z" & Zo
          
            Code "G0G53"& "X" & Xx &"Y"&Yy &"Z"& Zz        
            DoOEMButton (1007)
            DoButton   (Cool  ' zero visu X
            DoButton   (9)  ' zero visu Y
            DoButton   (10) ' zero visu Z

         DoOEMButton   (33)  ' lance g54
      
  
         DoOEMButton   (11)  ' affiche l ecran 11
        Sleep(500)

       B= Round(GetOEMDro(802),2)  'position de Z dans visu
  
       Zdepart= Round(GetOEMDRO (1580),2) '- 100mm (Z=0) contact au dessus de la piece valeur coordonnée machine G53
       S= Zdepart+0.5     'hauteur approche piece +0.5mm
      
         Rem conditions (plus tard)
        
      

       Sleep(500)
  
   OpenTeachFile "KAreglet.tap"
  
    
 
       Code " G49  G40   G90 "   '  G49 G90G17  G50
       Code " G21"
       Code " M6 T" & Tn  'Code "M6 T" & Fraise_n°
       Code " G54"
       Code " G0 Z " & S       'Hra va à Z degagement rapide G0z+15mm

 Ya= Eor+ Rf         ' point Ya entree de la fraise en bas de la piece = extremite + rayon fraise
 Yb= (Ya)+ (Lon -Rf) ' point Yb sortie fraise en haut = Ya + longueur rainure - rayon fraise                    
 Xdd= Lar/2 'decalage du point X à droite probleme soft limite
 Xd= Xdd-Rf    ' point droit en X largeur rainure
 Xg= 0-Xd      'point gauche en X inversion du signe + en moins de Xd                    
 Xc= 0        ' point centre equivalent à XO axe piece
 
        Ztarget = (Round( Zdepart + Pr,2))      'position maxi en Z fond de rainure arrondi à 2 décimal pour éviter les bugs
      
        K = Round(Zdepart,2) '*** position courante
        
    While ismoving() 'attendre que le mouvement soit fini, sinon le VB va continuer sans attendre le Gcode
    Sleep(100)
    Wend

  Do
  
      B= Round (GetOEMDro(802),2)  ' valeur de Z memorisation de Z
    
      C= Round(( B + Pe ),2)         'valeur Z + passe ebauche
  
      K =Round(( K + C),2)'niveau d'usinage suivant
  
      If K > Ztarget Then 'on est au dessus de la prof maxi
      Code "F"& Ap '** rallentie avance pour la descente
      Code "G1 Z" & K 'on descend à la prof d'usinage
        
      Call rainure() 'appel du sous programme rainure
      
      GoTo suite 'on relance la boucle
      
   End If
  
      If K <= Ztarget Then 'on dépasse la prof maxi ou on y est déjà, donc dernière passe.
  
      K = Ztarget
      Code "F"& Ap '** rallentie avance pour la descente
      Code "G1 Z" & C  'K on descend à la prof d'usinage
      
           ' MsgBox("Fin boucle")
        
      Call rainure() 'appel du sous programme rainure
      
   Exit Do 'fin de la boucle
      
      End If
  
     suite:    'le goto arrive ici pour relancer la boucle
  
     Loop
  
       Call ebavurage() 'appel du sous programme rainure
     Code "G0 Z " & Hra       ' va à Z degagement rapide G0z+15mm
     Code"M5 M9"  
     Code"M30"

    CloseTeachFile

    Call LoadTeachFile()
  
   'MsgBox("Fin")


    Sub rainure()  


   Code "G0 Z" & Hre          'remonte rapide l outils  debourrage
   Code "G0 Y" & Ya &"X"& Xc  ' va audessus  du point de descente    Ya =  Extremité_Origine + RayonFraise
   'Code "G1 Z" & S        ' approche dessus piece +0.5
   Code "F"& Ap           ' rallentie avance plonge
   Code "Z" & K           'descent à la 1ere valeur de K = Zdepart- Pe
   Code "F" & Ae          ' accelere l avance ebauche
   Code "Y" & Yb          'remonte en YB
   Code "X" & Xd          'va à droite +5mm
   Code "Y" & Ya          ' redescent en à l entrée
   Code "X" & Xg          'va à gauche -5mm
   Code "Y" & Yb          'remonte en YB
   Code "X" & Xd          'va à droite +5mm
   Code "X" & Xc          'va à droite +0mm dans l axe
   Code "Y" & Ya          ' redescent en à l entrée
   Code "G0 Z" & Hre      'remonte rapide l outils  debourrage

    While ismoving()       'attendre que le mouvement soit fini, sinon le VB va continuer sans attendre le Gcode  
    Sleep(100)  
    Wend
    End Sub  
      
        Sub ebavurage ()
        
        
          'MsgBox("Ebavurage debut -0.5mm")
          Ye=Ya-Eor     ' debut ebavurage en Y
          Yf=Yb+Eop     ' fin ebavurage en Y
          Xde=Xd+1      'va à droite rainure +1 mm+5mm =6mm
          Xge=Xg-1      'va à gauche -1mm -5mm =-6mm
          
          Zdepart= Round(GetOEMDRO (1580),2)     ' meme cote de depart que la rainure
          V= Round((Zdepart+Pv),2)
          ZVtarget = (Round(GetOEMDRO (1650),2))      'position maxi ebavurage en Z
              
       Do
              
              B= Round (GetOEMDro(802),2)    ' valeur de Z memorisation de position  Z
              D= Round(( B + Pv ),2)         'valeur Z + passe ebavurage    
              V =Round(( V + D),2)           'niveau d'ebavurage  suivant
           If V> ZVtarget Then               'on est au dessus de la prof maxi
            
             Code "F"& Ap                    '** rallentie avance pour la descente
             Code "G1 Z" & V                 'on descend à la prof d'ebavurage
          
           If V <= ZVtarget Then 'on dépasse la prof maxi ou on y est déjà, donc dernière passe.                V = ZVtarget  
            
             Code "F"& Ap '** rallentie avance pour la descente
             Code "G1 Z" & C  'K on descend à la prof d'usinage      
             End If
      
            Exit Do 'fin de la boucle
      
             Loop '***** c'est la   le problème ****************** ???????
              
        Code "G0 Z" & Hre          'remonte rapide l outils  debourrage
   Code "G0 Y" & Ye &"X"& Xc  ' va audessus  du point de descente    Ya =  Extremité_Origine + RayonFraise
   'Code "G1 Z" & S        ' approche dessus piece +0.5
   Code "F"& Ap           ' rallentie avance plonge
   Code "Z" & V          'descent à la 1ere valeur de V= Zdepart- Pv
   Code "F" & Ae          ' accelere l avance ebauche
   Code "Y" & Yf          'remonte en YB
   Code "X" & Xde          'va à droite +5mm
   Code "Y" & Ye          ' redescent en à l entrée
   Code "X" & Xge          'va à gauche -5mm
   Code "Y" & Yf          'remonte en YB
   Code "X" & Xde          'va à droite +5mm
   Code "X" & Xc          'va à droite +0mm dans l axe
   Code "Y" & Ye          ' redescend en à l entrée
   Code "G0 Z" & Hre      'remonte rapide l outils  débourrage    
                        
   End Sub

merci encore pour votre Aide on arrive a la fin merci
WF
WF
très actif
très actif

Messages : 240
Points : 349
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  dh42 Mar 8 Déc 2020 - 21:51

Salut

DoButton   (Cool  ' zero visu X

manque la parenthèse fermante après Cool

---------------

      Do
             
             B= Round (GetOEMDro(802),2)    ' valeur de Z memorisation de position  Z
             D= Round(( B + Pv ),2)         'valeur Z + passe ebavurage    
             V =Round(( V + D),2)           'niveau d'ebavurage  suivant
          If V> ZVtarget Then               'on est au dessus de la prof maxi
           
            Code "F"& Ap                    '** rallentie avance pour la descente
            Code "G1 Z" & V                 'on descend à la prof d'ebavurage
           
          End If
         
          If V <= ZVtarget Then 'on dépasse la prof maxi ou on y est déjà, donc dernière passe.                V = ZVtarget  
           
            Code "F"& Ap '** rallentie avance pour la descente
            Code "G1 Z" & C  'K on descend à la prof d'usinage      
            End If
     
           Exit Do 'fin de la boucle
     
       Loop '***** c'est la   le problème ****************** ???????

-----------

Manque le End If en orange Wink

++
David

_________________
Traduction Française de CamBam et de sa documentation.
dh42
dh42
Admin
Admin

Messages : 25208
Points : 37924
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  WF Jeu 10 Déc 2020 - 16:18

Bonjour M Dh42  et à Tous
j y suis presque à part la boucle ebavurage qui fait un tour et quitte la Macro
Par contre moi je tourne en rond
le probleme provient surement du END SUB à la du SUB ebavurage qui envoi à la sortie du programme
(Mais je n ai pas d exemple de programme VBcypress avec deux boucles dedans pour voir comment on fait)
PS***** il y a un Probleme avec l emoticone cool qui vient ce mettre tous seul sur DoButton (Cool bug???****
dans le programme il y en pas ????
Code:
                                                                   Rem Dimensions
      
      
  DoOEMButton   (169)        'efface le programme précédant dans Mach3


          REM DIMENSIONS PIECE
 Ltr  = GetOEMDRO  (1600)    ' 100 mm Longueur totale reglette
 Lar  = GetOEMDRO  (1590)    '  10 mm largeur totale reglette
 Lon  = GetOEMDRO  (1610)    '  90 mm Longueur Rainure
 Pr   = GetOEMDRO  (1620)    '   -8 mm Profondeur Rainure
 Eor  = GetOEMDRO  (1630)    '  5 mm Extremité coté  Origine E1 Ystart
 Eop  = GetOEMDRO  (1640)    '  5 mm  Extremité coté  Oposé  E2 Yend
        
          Rem OUTILS
 Bv = GetOEMDRO  (1660) ' 15000 trmn Vitesse broche  
 Tn = GetOEMDRO  (824)  'Fraise_n°6
 Df = GetOEMDRO  (43)   '6mm Diametre_Fraise
 Rf = Df / 2            '3mm RayonFraise =  Diametre_Fraise /2
 Lf = GetOEMDRO  (32)   '50mm Longueur fraise_H   ou =  GetOEMDRO (24) standart
        
          Rem Avances
 Ae = GetOEMDRO  (1690) '1500mm/mn Avance ebauche      
 Ap = GetOEMDRO  (1700) ' 800mm/mn Avance en plongée
 Av = GetOEMDRO  (1710) '1000mm/mn Avance ebavurage
        
          Rem Passes
 Pe = GetOEMDRO  (1730)  '-2mm Passe_ebauche
 Pv = GetOEMDRO  (1750)  ' 0.3mm Passe_ebavurage
                                                                      
          Rem Hauteurs
 Hra =  GetOEMDRO  (1760) '12mm Hauteur z deplacement degagement rapide securité G0
 Hre =  GetOEMDRO  (1770) ' 5mm Hauteur_retrait z debourrage
 Ha  =  GetOEMDRO  (1780) '10mm Hauteur_avance z passage en G1
 
 'ZVtarget  =  GetOEMDRO  (1650) ' -1.5 mm hauteur ebavurage Hauteur Ebavurage bords

        
           Rem G54 offset
          
          
           SetOEMDRO(47,0)
           SetOEMDRO(48,0)
           SetOEMDRO(49,0)
           Sleep(500)          
            
 Xx = GetOEMDRO (1800)    '600mmbord rainure   valeur coordonnée machine G53
 Yy = GetOEMDRO (1810)    '600mm debut brut barre valeur coordonnée machine G53
 Zz = GetOEMDRO (1830)    '-50mm audessus du brut dans l axe YO valeur coordonnée machine G53  
      
       SetOEMDRO(47,Xx)    'ecrit la valeur Xx pour work offset table valeur X
       SetOEMDRO  (48,Yy)    'ecrit la valeur Yy pour work offset table valeur Y    
       SetOEMDRO  (49,Zz)    'ecrit la valeur Zz pour work offset table valeur Z    
       Sleep(300)
                Zo=-10    
             Code "G53 Z" & Zo
          
            Code "G0G53"& "X" & Xx &"Y"&Yy &"Z"& Zz        
           ' DoOEMButton (1007)
            DoButton   (Cool  ' zero visu X
            DoButton   (9)  ' zero visu Y
            DoButton   (10) ' zero visu Z

         DoOEMButton   (33)  ' lance g54
      
  
         DoOEMButton   (11)  ' affiche l ecran 11
        Sleep(500)

       B= Round(GetOEMDro(802),2)  'position de Z dans visu
  
       Zdepart= Round(GetOEMDRO (1580),2) '- 100mm (Z=0) contact au dessus de la piece valeur coordonnée machine G53
       S= Zdepart+0.5     'hauteur approche piece +0.5mm
      
         Rem conditions (plus tard)
        
      

       Sleep(500)
  
   OpenTeachFile "KAreglet.tap"
  
    
 
       Code " G49  G40   G90 "   '  G49 G90G17  G50
       Code " G21"
       Code " M6 T" & Tn  'Code "M6 T" & Fraise_n°
       Code " G54"
       Code " G0 Z " & S       'Hra va à Z degagement rapide G0z+15mm

       Ya= Eor+ Rf         ' point Ya entree de la fraise en bas de la piece = extremite + rayon fraise
       Yb= (Ya)+ (Lon -Rf) ' point Yb sortie fraise en haut = Ya + longueur rainure - rayon fraise                    
       Xdd= Lar/2 'decalage du point X à droite probleme soft limite
       Xd= Xdd-Rf    ' point droit en X largeur rainure
       Xg= 0-Xd      'point gauche en X inversion du signe + en moins de Xd                    
       Xc= 0        ' point centre equivalent à XO axe piece
 
        Ztarget = (Round( Zdepart + Pr,2))      'position maxi en Z fond de rainure arrondi à 2 décimal pour éviter les bugs
      
        K = Round(Zdepart,2) '*** position courante
        
    While ismoving() 'attendre que le mouvement soit fini, sinon le VB va continuer sans attendre le Gcode
    Sleep(100)
    Wend

  Do
  
      B= Round (GetOEMDro(802),2)  ' valeur de Z memorisation de Z  
      C= Round(( B + Pe ),2)         'valeur Z + passe ebauche  
      K =Round(( K + C),2)'niveau d'usinage suivant
  
      If K > Ztarget Then 'on est au dessus de la prof maxi
      Code "F"& Ap '** rallentie avance pour la descente
      Code "G1 Z" & K 'on descend à la prof d'usinage    
      Call rainure() 'appel du sous programme rainure  
      GoTo suite 'on relance la boucle
      
   End If
  
      If K <= Ztarget Then 'on dépasse la prof maxi ou on y est déjà, donc dernière passe.
      K = Ztarget
      Code "F"& Ap '** rallentie avance pour la descente
      Code "G1 Z" & C  'K on descend à la prof d'usinage    
           ' MsgBox("Fin boucle")
        
      Call rainure() 'appel du sous programme rainure
      
   Exit Do 'fin de la boucle
      
      End If
  
     suite:    'le goto arrive ici pour relancer la boucle
  
     Loop
  
       Call ebavurage() 'appel du sous programme rainure
     Code "G0 Z " & Hra       ' va à Z degagement rapide G0z+15mm
     Code"M5 M9"  
     Code"M30"

    CloseTeachFile

    Call LoadTeachFile()
  
   'MsgBox("Fin")
    Sub rainure()  


   Code "G0 Z" & Hre          'remonte rapide l outils  debourrage
   Code "G0 Y" & Ya &"X"& Xc  ' va audessus  du point de descente    Ya =  Extremité_Origine + RayonFraise
   'Code "G1 Z" & S        ' approche dessus piece +0.5
   Code "F"& Ap           ' rallentie avance plonge
   Code "Z" & K           'descent à la 1ere valeur de K = Zdepart- Pe
   Code "F" & Ae          ' accelere l avance ebauche
   Code "Y" & Yb          'remonte en YB
   Code "X" & Xd          'va à droite +5mm
   Code "Y" & Ya          ' redescent en à l entrée
   Code "X" & Xg          'va à gauche -5mm
   Code "Y" & Yb          'remonte en YB
   Code "X" & Xd          'va à droite +5mm
   Code "X" & Xc          'va à droite +0mm dans l axe
   Code "Y" & Ya          ' redescent en à l entrée
   Code "G0 Z" & Hre      'remonte rapide l outils  debourrage

    While ismoving()       'attendre que le mouvement soit fini, sinon le VB va continuer sans attendre le Gcode  
    Sleep(100)  
    Wend
    End Sub  
      
        Sub ebavurage ()
        
        
          'MsgBox("Ebavurage debut -0.5mm")
          Ye=Ya-Eor     ' debut ebavurage en Y
          Yf=Yb+Eop     ' fin ebavurage en Y
          Xde=Xd+1      'va à droite rainure +1 mm+5mm =6mm
          Xge=Xg-1      'va à gauche -1mm -5mm =-6mm
          
          Zdepart= Round(GetOEMDRO (1580),2)     ' meme cote de depart que la rainure
          V= Round((Zdepart+Pv),2)
          ZVtarget = (Round(GetOEMDRO (1650),2))      'position maxi ebavurage en Z
              
       Do
              
              B= Round (GetOEMDro(802),2)    ' valeur de Z memorisation de position  Z
              D= Round(( B + Pv ),2)         'valeur Z + passe ebavurage    
              V =Round(( V + D),2)           'niveau d'ebavurage  suivant
           If V> ZVtarget Then               'on est au dessus de la prof maxi
            
             Code "F"& Ap                    '** rallentie avance pour la descente
             Code "G1 Z" & V                 'on descend à la prof d'ebavurage
              End If
          
           If V <= ZVtarget Then 'on dépasse la prof maxi ou on y est déjà, donc dernière passe.                V = ZVtarget  
            
             Code "F"& Ap '** rallentie avance pour la descente
             Code "G1 Z" & C  'K on descend à la prof d'usinage      
             End If
      
            Exit Do 'fin de la boucle
      
             Loop '
                          
        Code "G0 Z" & Hre          'remonte rapide l outils  debourrage
   Code "G0 Y" & Ye &"X"& Xc  ' va audessus  du point de descente    Ya =  Extremité_Origine + RayonFraise
   'Code "G1 Z" & S        ' approche dessus piece +0.5
   Code "F"& Ap           ' rallentie avance plonge
   Code "Z" & V          'descent à la 1ere valeur de V= Zdepart- Pv
   Code "F" & Ae          ' accelere l avance ebauche
   Code "Y" & Yf          'remonte en YB
   Code "X" & Xde          'va à droite +5mm
   Code "Y" & Ye          ' redescent en à l entrée
   Code "X" & Xge          'va à gauche -5mm
   Code "Y" & Yf          'remonte en YB
   Code "X" & Xde          'va à droite +5mm
   Code "X" & Xc          'va à droite +0mm dans l axe
   Code "Y" & Ye          ' redescend en à l entrée
   Code "G0 Z" & Hre      'remonte rapide l outils  débourrage    
                        
   End Sub '**************** je pense que le probleme est là************


je suis honteux de vous prendre tous ce temps Merci encore M David
WF
WF
très actif
très actif

Messages : 240
Points : 349
Date d'inscription : 17/09/2018
Age : 71
Localisation : Bondy

Revenir en haut Aller en bas

BOUCLE DANS MACRO Empty Re: BOUCLE DANS MACRO

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 1 sur 2 1, 2  Suivant

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum