-35%
Le deal à ne pas rater :
-35% sur la machine à café Expresso Delonghi La Specialista Arte
359.99 € 549.99 €
Voir le deal

BOUCLE DANS MACRO

2 participants

Page 2 sur 2 Précédent  1, 2

Aller en bas

BOUCLE DANS MACRO - Page 2 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
très actif
très actif

Messages : 281
Date d'inscription : 17/09/2018

Revenir en haut Aller en bas

BOUCLE DANS MACRO - Page 2 Empty Re: BOUCLE DANS MACRO

Message  dh42 Ven 11 Déc 2020 - 0:37

Salut,

PS***** il y a un Probleme avec l emoticone cool qui vient ce mettre tous seul sur DoButton (Cool bug???****

Non, c'est juste que 8 suivi immédiatement de ) c'est le raccourcis pour l'émoticone "cool" ... pour éviter que ce soit pris pour un raccourcis, il faut mettre un espace entre le 8 et la )

Pour le code, je vois que tu n'a pas corrigé la 1iere erreur de syntaxe (la parenthèse manquante) ; pour le reste, une fois cette erreur corrigé, il n'y a pas d'autres erreur de syntaxe, donc si ça ne fonctionne pas, c'est une erreur de logique de fonctionnement.

le probleme provient surement du END SUB à la du SUB ebavurage qui envoi à la sortie du programme

Non, le end sub ne renvoi pas à la fin du programme, il renvoi à l'instruction qui suit celle qui l'appelée:

    Call ebavurage() 'appel du sous programme rainure
    Code "G0 Z " & Hra       ' va à Z degagement rapide G0z+15mm
    Code"M5 M9"  
    Code"M30"

une fois la sub ebavurage terminée, le programme continu à Code "G0 Z " & Hra

En programmation, quand on est perdu dans la logique, il faut faire un organigramme pour s'y retrouver et surtout, l'utilisation du mode pas à pas aide aussi beaucoup pour voir comment le programme réagit à chaque commande en éxécutant les lignes une par une et en vérifiant la valeur de certaines variables utilisées. Il peut parfois être nécessaire de "sortir" certaines valeurs pour contrôle ; par exemple en utilisant un MsgBox(variable) par ci par la.

https://fr.wikipedia.org/wiki/Organigramme_de_programmation

et ne me demande pas un soft pour tracer les organigrammes ; j'en ai essayé plusieurs et au final, ça va beaucoup mieux à la main sur une feuille de papier Wink

Mais je n ai pas d exemple de programme VBcypress avec deux boucles dedans pour voir comment on fait

Je ne comprends pas ce que tu veux dire scratch

++
David

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

Messages : 25655
Points : 38364
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 - Page 2 Empty Re: BOUCLE DANS MACRO

Message  WF Mer 16 Déc 2020 - 19:05

Bonsoir Dh42 c est encore moi
je devient maboul cet apres midi la macro tournée
maintenant ça coince
j ai des problèmes avec les labels je suis oblige de copier vos Goto Suite et suite :
et de supprimer des lettres pour que ça fonctionne ????
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  (1865)  ' 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
         
          Rem G54 offset         
          SetOEMDRO(47,0)
          SetOEMDRO(48,0)
          SetOEMDRO(49,0)
       
           
 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   


                      Zo=-10   
            Code "G53 Z" & Zo       
          Code "G0G53"& "X" & Xx &"Y"&Yy &"Z"& Zz       
    sleep(500)
            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           
       
        Rem conditions (plus tard)   

 
      OpenTeachFile "Kireglet.tap"
          Sleep(200)
      Code " G49  G40  G90 "  '  G49 G90G17  G50
      Code " G21"
      Code " M6 T" & Tn        'Code "M6 T" & Fraise_n°
      Code " G54"

      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
     
        B= Round(GetOEMDro(802),1)  'position de Z dans visu
     
        Zdepart= Round(GetOEMDRO (1580),1) '- 100mm (Z=0) contact au dessus de la piece   
       
        Ztarget = Round( Zdepart + Pr,1)      'position maxi en Z fond de rainure arrondi à 2 décimal pour éviter les bugs
     
        K = Round(Zdepart,1) '*** position courante
        'Ha= Round((Zdepart+Ha),1)        'Ha  hauteur avance approche piece +5mm
        'Code " Z "& Ha        ' approche à Z +0.5mm
        Code "Y"& Ya
           
      Do
 
      B= Round  (GetOEMDro(802),1)  ' valeur de Z memorisation de Z 
      C= Round(( B + Pe ),1)        'valeur Z + passe ebauche 
     
      K =Round(( K + C),1)'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 "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 "Z" & K    ' on descend à la prof d'usinage   
       
    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"Z " & Hra      ' va à Z degagement rapide G0z+15mm
    Code"M5 M9" 
    Code"M30"

    CloseTeachFile

    Call LoadTeachFile()
 
    Sub rainure() 

  Code "Y" & Ya &"X"& Xc  ' va audessus  du point de descente    Ya =  Extremité_Origine + RayonFraise

  Code "F" & Ae          ' accelere l avance ebauche
  Code "Y" & Ya          ' redescent en à l entrée
  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


    End Sub 
     
        Sub ebavurage ()
       
          Ye=Ya-Eor    ' debut ebavurage en Y
          Yf=Yb+Eop    ' fin ebavurage en Y
          Xde=Xd+1      'va à droite rainure +1 VALEUR POUR ETRE AVANT LES MORS ETAU
          Xge=Xg-1      'va à gauche -1mm -5mm =-6mm
          Xce =Xde+Xge  ' axe piece                 
                           
          B= Round (GetOEMDro(802),1)    ' valeur de Z memorisation de position  Z
         
          ZVdepart  = Round  (GetOEMDRO  (1790),1) ' zero depart ebavurage 
         
          ZVtarget  = Round  (GetOEMDRO  (1650),1) ' -1.5 mm profondeur total ebavurage
               
          V= Round((ZVdepart + Pv),1)         
          K = Round(Zdepart,1)        '*** position courante
               
        'Ha= Round(( ZVdepart+Ha),1)        'Ha  hauteur avance approche piece +5mm
        'Code " Z "& Ha        ' approche à Z +0.5mm
        Code "Y"& Ya
           
            'Code " G0 Z "& Ha      ' va à Z degagement rapide +0.5mm
            Code "Y"& Ye          ' va au debut Ye
            Code "X"& Xce          ' va à l axe
      Do
             
              B= Round (GetOEMDro(802),1)    ' valeur de Z memorisation de position  Z
              D= Round(( B + Pv),1)        'valeur Z + passe ebavurage   
              V =Round(( V + D),1)          'niveau d'ebavurage  suivant
         
          If V> ZVtarget Then              'on est au dessus de la profondeur ebavurage maxi
           
            Code "F"& Ap                    '** rallentie avance pour la descente
            Code "G1 Z" & V                'on descend à la prof d'ebavurage

      GoTo suit ' on appelle le parcour ebavurage niveau 1
     
      GoTo sui '  on relance la boucle  ce n'est une erreur  j ai des probleme de label   
           
        End If
         
      If V <= ZVtarget Then 'on dépasse la prof maxi ou on y est déjà, donc dernière passe.                V = ZVtarget 
         
          V= ZVtarget ' on ajuste la valeur V
            Code "F"& Ap '** rallentie avance pour la descente
            Code "G1 Z" & V  'on descend à la prof d'usinage 

      GoTo suit 'on appelle le parcour ebavurage niveau 2
       
      Exit Do 'fin de la boucle
                 
      End If
     

  sui:   
      Loop '
 
 suit: 

  Code "F" & Ae          ' accelere l avance ebauche
  Code "Y" & Ye          ' redescent en à l entrée
  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" & Xce        'va à droite +0mm dans l axe
  Code "Y" & Ye          ' redescend en à l entrée
  Code "Z" & Hre        'remonte rapide l outils  débourrage   
                       
  End Sub '                         


merci pour votre aide
WF
WF
très actif
très actif

Messages : 281
Points : 398
Date d'inscription : 17/09/2018
Age : 72
Localisation : Bondy

Revenir en haut Aller en bas

BOUCLE DANS MACRO - Page 2 Empty Re: BOUCLE DANS MACRO

Message  dh42 Jeu 17 Déc 2020 - 0:00

Salut,

Et depuis un bon moment, tu n'a toujours pas corrigé l'erreur de syntaxe sur

DoButton (Cool ' zero visu X

qui doit être

DoButton (Cool) ' zero visu X

Je vois aussi au moins une autre erreur, tu a un GOTO "suit" qui envoi à l'extérieur de la boucle Do-Loop, il ne faut pas, on sort d'une boucle Do-Loop par un Exit Do

Comme je te l'ai dis dans un précédant message, fait toi un organigramme de la logique de fonctionnement car il y a un truc qui pèche quelque part dans la logique de fonctionnement.

j ai des problèmes avec les labels je suis oblige de copier vos Goto Suite et suite :
et de supprimer des lettres pour que ça fonctionne ????

note aussi que le "suite:" est dans la sub principale (le main() ) donc tu ne peux aller à cette position QUE quand tu est dans la sub principale, et donc tu ne peux pas faire un GOTO suite quand tu est dans la sub ébavurage ... le GOTO ne peut pas sortir d'une sub, il ne doit pas sortir d'un boucle non plus ... et il ne peux pas y avoir 2 labels identiques dans un programme (d’où le fait que tes autres labels ne puissent pas s'appeler "suite:")

++
David

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

Messages : 25655
Points : 38364
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 - Page 2 Empty Re: BOUCLE DANS MACRO

Message  WF Jeu 17 Déc 2020 - 19:41

Bonsoir M David
ça y est la Macro tourne
j ai deux problemes

quand je teste  a la maison sur mon PC  il faut que je tape un G53 X0 Y0 et Z0 pour toutt mettre à zero
est ce du au fait que je peux pas faire de référencement sans CNC connecté ???


lorsque Ztarget divisé par les passes ne tombe pas juste
Ztarget = -8.5 mm et les passes -2mm le programme donne Z=-8m idem pour l ebavurage

pourtant le deuxieme if then ajustela valeur de K =Ztarget
     If K >= Ztarget Then 'on dépasse la prof maxi ou on y est déjà, donc dernière passe.
     K = Ztarget   ' ajuste la valeur de K
???????
voila le programme
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  (1865)  ' 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
              
               Rem Hauteurs ebavurage
' ZVdepart  = Round  (GetOEMDRO  (1790),1) ' zero depart ebavurage
 Pet  = GetOEMDRO  (1650) ' -1.5 mm profondeur total ebavurage

          
           Rem G54 offset          
           SetOEMDRO(47,0)
           SetOEMDRO(48,0)
           SetOEMDRO(49,0)
           Sleep(300)          
            
 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=-50    ' deplacement safe
           Code "G53 Z" & Zo        
           Code "G0G53"& "X" & Xx &"Y"&Yy &"Z"& Zz        
    While ismoving() 'attendre que le mouvement soit fini, sinon le VB va continuer sans attendre le Gcode
    Sleep(100)
    Wend
              
            DoButton   (8     )  ' zero visu X
            DoButton   (9)  ' zero visu Y
            DoButton   (10) ' zero visu Z
            Sleep(100)
        
         DoOEMButton   (33)  ' lance g54
      
         DoOEMButton   (11)  ' affiche l ecran 11            
         Rem conditions (plus tard)    

       'Sleep(100)
  
      OpenTeachFile "Krreglet.tap"
  
       Code " G49  G40   G90 "   '  G49 G90G17  G50
       Code " G21"
       Code " M6 T" & Tn  'Code "M6 T" & Fraise_n°
       Code " G54"
      

       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
 
        B= Round(GetOEMDro(802),2)  'position de Z dans visu
      
        Zdepart= Round(GetOEMDRO (1580),2) '- 100mm (Z=0) contact au dessus de la piece    
        
        Ztarget = Round( Zdepart + Pr,2)      'position maxi en Z fond de rainure arrondi à 2 décimal pour éviter les bugs
      
        K = Round(Zdepart,1) '*** position courante
        
        S= Zdepart+Ha     'hauteur avance piece +Ha mm

      Code " G0 Z "& S       ' va à Z degagement rapide +0.5mm

      Code "Y"& Ya
  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   ' ajuste la valeur de K
  
      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
          
      
       End If '**************
    
       Exit Do 'fin de la boucle
      
          
  
      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()

    Sub rainure()  


   '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" & Ya          ' redescent en à l entrée
   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


    End Sub  
      
        Sub ebavurage ()
    
          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
          Xc = Xde-Xge   'axe piece
          
          B= Round (GetOEMDro(802),2)    ' valeur de Z memorisation de position  Z
          ZVdepart= Round(GetOEMDRO (1790),2)     ' meme cote de depart que la rainure
          V= Round((ZVdepart + Pv),2)
          ZVtarget = Round (ZVdepart + Pet,2)      'position maxi ebavurage en Z
              Code" Z"& Ha
              Code" Y"& Ye &"X"& Xc
       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      
        Call tutu()     'appel du sous programme tutu
          GoTo Qker      'on relance la boucle          
              End If
          
           If V >= ZVtarget Then 'on dépasse la prof maxi ou on y est déjà, donc dernière passe.                V = ZVtarget              
              V = ZVtarget       'on ajuste la valeur de V
                Code "F"& Ap      '** rallentie avance pour la descente
                  Code "G1 Z" & V   ' on descend à la prof d'usinage          
         Call tutu()      'appel du sous programme tutu        
              End If'****************      
         Exit Do 'fin de la boucle          
           Qker:        'le goto arrive ici pour relancer la boucle
            
             Loop '
      
       End Sub
    
     Sub tutu()  
               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
          
   Code "F" & Ae          ' accelere l avance ebauche
   Code "Y" & Ye          ' redescent en à l entrée
   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 '                      
en tout cas un très très grand merci pour aide
WF
WF
très actif
très actif

Messages : 281
Points : 398
Date d'inscription : 17/09/2018
Age : 72
Localisation : Bondy

Revenir en haut Aller en bas

BOUCLE DANS MACRO - Page 2 Empty Re: BOUCLE DANS MACRO

Message  WF Jeu 17 Déc 2020 - 19:56

voila le fichier ecran de la page 12 et 11
merci encore et bonne fetes
WF
WF
très actif
très actif

Messages : 281
Points : 398
Date d'inscription : 17/09/2018
Age : 72
Localisation : Bondy

Revenir en haut Aller en bas

BOUCLE DANS MACRO - Page 2 Empty Re: BOUCLE DANS MACRO

Message  dh42 Jeu 17 Déc 2020 - 20:28

Salut,

quand je teste  a la maison sur mon PC  il faut que je tape un G53 X0 Y0 et Z0 pour toutt mettre à zero
est ce du au fait que je peux pas faire de référencement sans CNC connecté ???

C'est fort probable.

lorsque Ztarget divisé par les passes ne tombe pas juste
Ztarget = -8.5 mm et les passes -2mm le programme donne Z=-8m idem pour l ebavurage

pourtant le deuxieme if then ajustela valeur de K =Ztarget
    If K >= Ztarget Then 'on dépasse la prof maxi ou on y est déjà, donc dernière passe.
    K = Ztarget   ' ajuste la valeur de K
???????

Bin oui, le test est à l'envers c'est pas K >= Ztarget  c'est K <= Ztarget Wink  scratch

avec des passes de 2mm quand tu arrive à -8, c'est toujours supérieur à -8.5, donc on fait une autre passe, et quand tu arrive à -10, -10 est plus petit que -8.5 donc on ne fait pas la passe à -10 et on force K à -8.5

++
David

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

Messages : 25655
Points : 38364
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 - Page 2 Empty Re: BOUCLE DANS MACRO dernier

Message  WF Sam 19 Déc 2020 - 17:58

Bonjour à Tous et à Monsieur David notre Gourou
Donc ça fonctionne en TEST sans machine connectée
il faut faire G53 X0 Y0 Z0 pour que ça marche sans référencement et j ai aussi des messages "Warning soft limits" je pense que la aussi le référencement manque ????

j ai ajouté des conditions  avec message étant très " tête en l air" ça évite les catastrophes
donc voila le code et l écran à jour
UN JOYEUX NOEL A TOUS ET UN TRES TRES GRAND MERCI DH42
Code:

   'Sub Main()  
      
   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  (1865)  ' 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
              
               Rem Hauteurs ebavurage

 Pet  = GetOEMDRO  (1650) ' -1.5 mm profondeur total ebavurage
 
  REM REGLES BOB
  If Ltr > 1001  Then
  MsgBox("Reglette Trop Longue à Faire à la Retourne")
   End If

   If  Df <1.99 Then 'si diametre fraise est inferieur à
   MsgBox(" Le Diametre Fraise Mini 2mm & Maxi5.5mm Changez de Fraise et Recommencez")
   Exit Sub
   End If
  
   If  Df > 5.5 Then 'si diametre fraise est superieur à
   MsgBox(" Le Diametre Fraise Mini 2mm & Maxi5.5mm Changez de Fraise et Recommencez")
   Exit Sub
   End If
  
      If  Lar > 5.6 Then 'si la Largeur rainure est superieur à
   MsgBox(" La Largeur Rainure est Superieure 5.5mm Maxi Changez Dimensions et Recommencez")
   Exit Sub
   End If
  
         If  Pr<-7 Then 'si la Profondeur rainure est superieur à
   MsgBox(" La Profondeur Rainure est Superieure -7mm Maxi Changez Dimensions et Recommencez")
   Exit Sub
   End If
  
            If  Pr> 0 Then 'si la Profondeur rainure est superieur à
   MsgBox(" La Profondeur Rainure doit etre Negative -7mm Max Changez Dimensions et Recommencez")
   Exit Sub
   End If
          
           Rem G54 offset          
           SetOEMDRO(47,0) ' metà zero l 'offset table pour G54 X
           SetOEMDRO(48,0) ' metà zero l 'offset table pour G54 Y
           SetOEMDRO(49,0) ' metà zero l 'offset table pour G54 Z
           Sleep(300)          
            
 Xx = GetOEMDRO (1800)    ' axe brut rainure   valeur coordonnée machine G53
 Yy = GetOEMDRO (1810)    ' 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=-50    ' valeur deplacement safe
           Code "G53 Z" & Zo    ' va à deplacement safe          
           Code "G0G53"& "X" & Xx &"Y"&Yy &"Z"& Zz   ' va à la position G54 voulu en code machine    
    While ismoving() 'attendre que le mouvement soit fini, sinon le VB va continuer sans attendre le Gcode
    Sleep(100)
    Wend        'on attend la fin du mouvement
              
            DoButton   (8     )  'met à zero visu X
            DoButton   (9)       ' met à zero visu Y
            DoButton   (10)      ' met à zero visu Z
            Sleep(100)
        
         DoOEMButton   (33)  ' lance le G54
      
         DoOEMButton   (11)  ' affiche l ecran 11            
  
      OpenTeachFile "WFreglet.tap" ' ouvre et crée le fichier WFreglet.tap dans mach3 Gcode
  
       Code " G49  G40   G90 "   '  G49 G90G17  G50
       Code " G21"
       Code " M6 T" & Tn  'Code "M6 T" & Fraise_n°
       Code " G54"
              
                           REM Calculs les valeurs des cotes
                          
       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 etG54X
 
        B= Round(GetOEMDro(802),2)  'position de Z dans visu
      
        Zdepart= Round(GetOEMDRO (1580),2) '(Z=0) contact au dessus de la piece    
        
        Ztarget = Round( Zdepart + Pr,2)      'position maxi en Z fond de rainure arrondi à 2 décimal pour éviter les bugs
      
        K = Round(Zdepart,1) ' position courante
        
        S= Zdepart+Ha     'hauteur safe pour l' avance G1 = Haut piece +Ha mm
        Code " G0 Z "& S       ' va à hauteur safe
        Code "X"& Xc &"Y"& Ya ' Va au centre dans l axe en debut de rainure
 
     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 Plongeante 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 'OK signe on dépasse la prof maxi ou on y est déjà, donc dernière passe.
      K = Ztarget          ' Ajuste la valeur de k ala profondeur max
      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
          
             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
    
    'End Sub
    
     Code "G0 Z " & Hra       ' va à Z degagement rapide G0z+15mm
     Code"M5 M9"               ' stop spindle et arrosage
     Code"M30"                 ' fin programme

    CloseTeachFile         'ferme le fichier du gcode WFreglet.tap

    Call LoadTeachFile()   ' appel et charhe le WFreglet.tap
    
     'End Sub
    
    Sub rainure()  

   Code "F" & Ae          ' accelere l avance ebauche
   Code "Y" & Ya          ' redescent en à l entrée
   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


    End Sub  
      
        Sub ebavurage ()
    
          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
          Xc = Xde-Xge   'axe piece
          Xc=0
          B= Round (GetOEMDro(802),2)    ' valeur de Z memorisation de position  Z
          ZVdepart= Round(GetOEMDRO (1790),2)     ' meme cote de depart que la rainure
          V= Round((ZVdepart + Pv),2)
          ZVtarget = Round (ZVdepart + Pet,2)      'position maxi ebavurage en Z
            
              Code" Z"& Ha
              Code "X"& Xc & "Y"& Ye
       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      
        Call tutu()     'appel du sous programme tutu
          GoTo Qker      'on relance la boucle          
              End If
          
           If V <= ZVtarget Then 'OK signe on dépasse la prof maxi ou on y est déjà, donc dernière passe.                V = ZVtarget              
              V = ZVtarget       'on ajuste la valeur de V
                Code "F"& Ap      '** rallentie avance pour la descente
                  Code "G1 Z" & V   ' on descend à la prof d'usinage          
         Call tutu()      'appel du sous programme tutu        
              End If'****************      
         Exit Do 'fin de la boucle          
           Qker:        'le goto arrive ici pour relancer la boucle
            
             Loop '
      
       End Sub
    
     Sub tutu()  
          
          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
          
   Code "F" & Ae          ' accelere l avance ebauche
   Code "Y" & Ye          ' redescent en à l entrée
   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 '                        

              
WF
WF
très actif
très actif

Messages : 281
Points : 398
Date d'inscription : 17/09/2018
Age : 72
Localisation : Bondy

Revenir en haut Aller en bas

BOUCLE DANS MACRO - Page 2 Empty Re: BOUCLE DANS MACRO

Message  dh42 Sam 19 Déc 2020 - 19:32

Salut,

j ai aussi des messages "Warning soft limits" je pense que la aussi le référencement manque ????

Oui, ou les limites machine ne sont pas renseignées correctement

++
David

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

Messages : 25655
Points : 38364
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 - Page 2 Empty RE: BOUCLE DANS MACRO

Message  WF Dim 20 Déc 2020 - 14:18

Bonjour Dh42 et bonjour à tous
Concernant les Messages "Warning out off limits" proviennent de
Pour simuler le référencement je fais G53 X0 Y0 Z0  avec mes limites réglées à
axe X soft Max 1270  soft Min 0  
axe Y soft Max 1200  soft Min 0  
axe Z soft Max 0  soft Min -250  
et donc message limite normal
j ai essayer G53 X1Y1Z1 pas de Message Warning limits
Merci pour votre aide qui fut un somptueux cadeaux de Noel
WF
WF
très actif
très actif

Messages : 281
Points : 398
Date d'inscription : 17/09/2018
Age : 72
Localisation : Bondy

Revenir en haut Aller en bas

BOUCLE DANS MACRO - Page 2 Empty Re: BOUCLE DANS MACRO

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 2 sur 2 Précédent  1, 2

Revenir en haut

- Sujets similaires

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