Welcome, Guest. Please login or register.
Did you miss your activation email?
May 27, 2018, 10:46:32 AM

Login with username, password and session length
Search:     Advanced search
* Home Help Search Calendar Links Login Register
+  Machsupport Forum
|-+  Mach Discussion
| |-+  VB and the development of wizards
| | |-+  zero tool problem
Pages: 1   Go Down
Print
Author Topic: zero tool problem  (Read 804 times)
0 Members and 1 Guest are viewing this topic.
birillo1959
Active Member

Offline Offline

Posts: 72


View Profile
« on: May 12, 2018, 02:17:48 AM »

Good morning
I'm looking for help for this script
  the problem is this: if the inverter is turned on, the script for the "ZERO UTENSILE" will turn off the inverter at a certain point, otherwise everything will work
I enclose the inverter and script button image. I do not know if it depends on the button or the script can you help me?
thank you

Sub Main
   Speak ("selezionare    zero     o     cambio UTENSILE") 'Avviso Vocale
 Begin Dialog SelectCentering 200,150,160,96,"MACRO UTENSILE"
   OKButton 30,68,40,14
   CancelButton 90,68,40,14
   GroupBox 30,5,100,52,"ZERO / CAMBIO UTENSILE",.GroupBox1
   OptionGroup .OptionGroup1
   OptionButton 46,24,80,8," ZERO UTENSILE",.OptionButton1
   OptionButton 46,40,80,8," CAMBIO UTENSILE"  ,.OptionButton2
  End Dialog

  Dim Dlg1 As SelectCentering
  Button = Dialog (Dlg1)
 
  If Button = 0 Then Exit Sub
  Selected  = Dlg1.OptionGroup1

  'laser is selected
  If Selected = 0 Then
   
       
     'Tool Height Setting Macro - JLH v1.1 - 4 March 2013
   'Questa versione ha un approccio a 2 fasi, veloce per la velocita e lenta per la precisione.
   
   Speak ("confermare ZERO UTENSILE") 'Avviso Vocale
   Message "************  INIZIO ZERO UTENSILE ************"
   Sleep (1000) ' pausa di 1 secondi
   response = MsgBox ("CONFERMARE ZERO UTENSILE ")
   
   CurrentAbsInc = GetOemLED (48) 'Copy current G90/G91 state
   CurrentGMode = GetOemDRO (819) 'Copy current G0/G1 state
   CurrentFeed = GetOemDRO (818) 'Copy current feedrate
   Contact = 0 'Cancellare la bandiera di contatto
   PlateThickness =GetOEMDRO(1151)'Spessore pannello touch e impostato qui
   ProbeFeed1 = 80 'Veloce sondaggio avanzamento e impostato qui
   ProbeFeed2 = 10 'velocita' piano avanzamento e impostato qui
   SetVar (1, -30) 'La distanza massima sondaggio e impostato qui
   SetVar (2, 20) 'Ritrarre l'altezza e impostata qui
   'Code "M5" 'Assicura mandrino non e in esecuzione
   Code "G21" 'Sono utilizzati  unita metriche
   Zs = GetOemDRO (61) 'Copy current Z-Scale DRO
   Call SetOemDRO (61,1) 'Set Z-Scale DRO to 1
   DoOemButton (1010) 'Zero Z-Axis DRO
   Code "(SETTAGGIO ZERO UTENSILE)" 'Messaggio per la barra di stato
   Speak ("RICERCA CONTATTO") 'Avviso Vocale
   While IsMoving () 'Attendere che compito e stato completato
   Wend
   If GetOemLED (825) = 0 Then 'Verificare se piatto touch non e gia a terra
   Code "G90 G31 Z #1 F" & ProbeFeed1 'Mossa veloce sondaggio
   While IsMoving () 'Attendere che compito e stato completato
   Wend
   If GetOemLED (825) = True Then 'Verificare se la sonda ha toccato piastra
   Contact = 1 'Impostare il flag contatto
   End If
   DoOemButton (1003) 'Cancellare una possibile condizione di feed-hold
   ProbePos = GetVar (2002) ' esatto punto toccato dalla sonda
   ProbePos = ProbePos + 1 'Spostare la posizione della sonda verso l'alto di 0,25 millimetri
   Code "G0 Z" & ProbePos 'Ascensori sonda 0,25 millimetri sopra endpoint avanzamento veloce
   While IsMoving () 'Attendere che compito e stato completato
   Wend
   Code "G90 G31 Z #1 F" & ProbeFeed2 'Movimento lento sondaggio
   While IsMoving () 'Attendere che compito e stato completato
   Wend
   If GetOemLED (825) = True Then 'Verificare se la sonda ha toccato piastra
   Contact = 1 'Impostare il flag contatto
   End If
   ProbePos = GetVar (2002) 'Sonda punto esatto toccato
   Code "G0 Z" & ProbePos 'Ascensori sonda di esigere posizione di tocco
   While IsMoving () 'Attendere che compito e stato completato
   Wend
   Call SetDRO (2,PlateThickness) 'Set Z-Axis DRO to Touch Spessore lamiera
   Code "G0 Z #2" 'Ritrarre off Toccare piastra all'altezza set
   While IsMoving () 'Attendere che compito e stato completato
   Wend
   Code "(ASSE - Z - azzerato.)" 'Messaggio per la barra di stato
   Speak ("ASSE ZETA AZZERATO") 'Avviso Vocale
   
   Code "F" & CurrentFeed 'Ripristinare avanzamento impostazione originale
   If Contact = 0 Then 'Sonda raggiunto viaggio max senza toccare
   Code "(ERRORE LA SONDA NON HA TOCCATO)" 'Message for status bar
   Speak ("ERRORE LA SONDA NON HA TOCCATO") 'Avviso Vocale
   Response = MsgBox ("ERRORE LA SONDA NON HA TOCCATO")
   End If
   Else
   Code "(ERRORE PIASTRA A TERRA)" 'Messaggio per la barra di stato
   Speak ("ERRORE PIASTRA A TERRA") 'Avviso Vocale
   Response = MsgBox ("ERRORE - Toccare piastra e messo a terra -. Controllare il collegamento")
   End If
   Call SetOemDRO (61,Zs) 'Ripristinare Z-Scale DRO all'impostazione originale
   If CurrentAbsInc = 0 Then 'Se G91 era in vigore prima di allora tornare ad essa
   Code "G91"
   End If
   If CurrentGMode = 0 Then 'Se G0 era in vigore prima di allora tornare ad essa
   Code "G0"
   
   End If
   Exit Sub
 
  End If
 
  'web is selected
  If Selected = 1 Then
    Rem CAMBIO UTENSILE AUTOMATICO
   Speak ("confermare cambio utensile automatico") 'Avviso Vocale
   Message "************  INIZIO CAMBIO UTENSILE ************"
   Sleep (1000) ' pausa di 1 secondi
   response = MsgBox ("CONFERMARE CAMBIO UTENSILE AUTOMATICO")
   
   
   ' Condizioni macchina:
   ' Zero macchina X dietro Y sinistra Z in alto
   ' Asse X, sinistra -X destra +X
   ' Asse Y, dietro +Y avanti -Y
   ' Asse Z, alto +Z basso -Z
   ' Abilitare l'ingresso PROBE (port 1 pin 10)(Config | Input Signal)
   '
   ' condizioni di lavoro iniziali:
   ' 1) Referenziare a ZERO macchina
   ' 2) Azzerare i contatori
   ' 3) Portarsi sullo Zero pezzo
   ' 4) Azzerare i contatori
   ' 5) Inizio lavorazione
   
   
   
   ' controllo se la macchina è stata referenziata
   
   If Not GetLed (7) Then ' è referenziato X
   vxled = 1
   End If
   
   If Not GetLed (Cool Then ' è referenziato Y
   vyled = 1
   End If
   
   If Not GetLed (9) Then ' è referenziato Z
   vzled = 1
   End If
   
   Tled = vxled + vyled + vzled
   
    ' If Tled = 3 Then ' se non sono referenziati X, Y e Z esco *********xx
   
   ' parametri lavorazione
   xzero = GetDRO (30) ' memorizzo la posizione iniziale ASSOLUTA di cambio utensile
   yzero = GetDRO (31)
   zzero = GetDRO (32)
   
   xpos = GetDRO (0) ' memorizzo la posizione inizioale RELATIVA di cambio utensile
   ypos = GetDRO (1)
   zpos = GetDRO (2)
   
   fpos = GetDRO (18) ' memorizzo il feedrate iniziale
   
   ' variabili del programma
   fmax = 300 ' imposto il feedrate massimo
   fmin = 100 ' imposto il feedrate per la palpata
   
   zavv = -50 ' distanza rapida di avvicinamento al palpatore
   zmin = -140 ' profondità oltre il palpatore
   xcut = 0 ' posizione X per cambio utensile
   ycut = 0 ' posizione Y per cambio utensile
   
   xtool = GetUserDRO (1200) ' posizione X del palpatore (Settings -> Tool Change Location)
   ytool = GetUserDRO (1201) ' posizione Y del palpatore
   ztool = GetUserDRO (1202) ' posizione Z del palpatore
   
   ' inizio programma
   code "G0 F" & fmax ' porto il feedrate al valore massimo
   code "G53 G0 Z0" ' porto Z a ZERO macchina
   While IsMoving()
   Wend
   Call SetDro (2,0) ' porto il contatore Z a zero
   
   code "G53 G0 X" & xtool & "Y" & ytool ' mi allineo sul palpatore
   While IsMoving()
   Wend
   code "G0 Z" & zavv ' scendo in avvicinamento (fino a zavv)
   While IsMoving()
   Wend
   
   code "G0 F" & fmin ' porto il feedrate al minimo
   
   If IsSuchSignal (22) Then ' scendo sul palpatore per vedere la misura della punta attuale
   code "G31 Z" & zmin
   While IsMoving()
   Wend
   End If
   zorig = GetDRO (2) ' memorizzo il valore di Z della punta attuale
   code "G0 F" & fmax ' riporto il feedrate al massimo
   
   code "G53 G0 Z0" ' porto Z a ZERO macchina
   While IsMoving()
   Wend
   
   code "G53 G0 X" & xcut & "Y" & ycut ' vado in una posizione comoda per il cambio utensile
   While IsMoving()
   Wend
   
   Speak ("ora si puo' cambiare la punta") 'Avviso Vocale
   MsgBox ("ORA SI PUO' CAMBIARE LA PUNTA")
   
   Speak ("attenzione      e' stata sostituita la punta") 'Avviso Vocale
   Response = MsgBox ("E' STATA SOSTITUITA LA PUNTA?", 4 , "ATTENZIONE")
   If (Response = 6) Then
   i = 99
   Else
   Speak ("ATTENZIONE , LA PUNTA NON E' STATA SOSTITUITA, RIPRENDO IL LAVORO CON LA PUNTA INIZIALE") 'Avviso Vocale
   MsgBox ("RIPRENDO IL LAVORO CON LA PUNTA INIZIALE")
   Message "********* CAMBIO UTENSILE NON EFFETTUATO  *********"
   End If
   
   If i <> 99 Then ' non faccio nulla
   
   code "G53 G0 X" & xzero & "Y" & yzero ' torno alla posizione X Y zero pezzo
   While IsMoving()
   Wend
   code "G0 X" & xpos & "Y" & ypos ' torno alla posizione X Y da dove ero partito
   While IsMoving()
   Wend
   code "G53 G0 Z" & zzero ' riporto Z al valore zero pezzo
   While IsMoving()
   Wend
   Call SetDro (2,0) ' porto il contatore Z a zero
   code "G0 Z" & zpos ' riporto Z al valore di partenza
   While IsMoving()
   Wend
   code "G0 F" & fpos ' riporto il feedrate al valore di partenza
   Speak ("ATTENZIONE , CAMBIO UTENSILE NON EFFETTUATO , SI PUO' RIPRENDERE LA LAVORAZIONE") 'Avviso Vocale
   MsgBox ("Per riprendere il lavoro premere il pulsante 'LAVORAZIONE'")
   
   
   Else
   
   code "G53 G0 X" & xtool & "Y" & ytool ' mi allineo sul palpatore
   While IsMoving()
   Wend
   code "G0 Z" & zavv ' scendo in avvicinamento
   While IsMoving()
   Wend
   
   code "G0 F" & fmin ' porto il feedrate al minimo
   
   If IsSuchSignal (22) Then ' scendo sul palpatore
   code "G31 Z" & zmin
   While IsMoving()
   Wend
   znew = GetDRO (2) ' memorizzo il valore di Z della nuova punta
   
   code "G0 F" & fmax ' riporto il feedrate al massimo
   
   code "G53 G0 Z0" ' ritorno Z ZERO macchina
   While IsMoving()
   Wend
   End If
   
   code "G53 G0 X" & xzero & "Y" & yzero ' torno alla posizione X Y zero pezzo
   While IsMoving()
   Wend
   
   code "G0 X" & xpos & "Y" & ypos ' torno alla posizione X Y da dove ero partito
   While IsMoving()
   Wend
   
   
   
   zdif = zorig - (znew) ' controllo se l'utensile è più corto o piu lungo
   
   code "G53 G0 Z" & zzero-(zdif) ' riporto Z al valore zero pezzo con la differenza utensile
   While IsMoving()
   Wend
   Call SetDro (2,0) ' porto contatore Z a zero
   code "G0 Z" & zpos ' riporto Z al valore di partenza (inizio programma)
   While IsMoving()
   Wend
   code "G0 F" & fpos ' riporto il feedrate al valore di partenza
   Speak ("CAMBIO UTENSILE EFFETTUATO ,   SI PUO' RIPRENDERE LA LAVORAZIONE ,      RIMUOVERE PIASTRA") 'Avviso Vocale
   
   MsgBox ("RIMUOVERE PIASTRA E PREMERE IL TASTO LAVORAZIONE")
   Message "************ CAMBIO UTENSILE EFFETTUATO ************"
   
   
   End If
   Exit Sub
End If
   

   ' riprendo il lavoro da dove l'avevo lasciato                 

   

End Sub               

       
           
   




* BOTTON.jpg (58.96 KB, 573x579 - viewed 18 times.)
Logged
Tweakie.CNC
CNC is only limited by our imagination.
Global Moderator
*
Offline Offline

Posts: 7,231


Super Kitty


View Profile WWW
« Reply #1 on: May 14, 2018, 12:10:21 AM »

The line...

 DoOemButton (1003) 'Cancellare una possibile condizione di feed-hold

will turn the spindle OFF.

(That particular line of script was found necessary following a Mach3 revision in 2012 which prevented the script execution if a feed-hold condition existed. You could perhaps investigate other methods of cancelling a feed-hold without actually using 'Stop').

Tweakie.
« Last Edit: May 14, 2018, 01:36:54 AM by Tweakie.CNC » Logged

Success consists of going from failure to failure without loss of enthusiasm.  Winston Churchill.
birillo1959
Active Member

Offline Offline

Posts: 72


View Profile
« Reply #2 on: May 14, 2018, 02:50:09 AM »

thanks for the help Tweakie Wink
I canceled the line and everything works fine!
Is it a problem to have it deleted?
thank you
Logged
Tweakie.CNC
CNC is only limited by our imagination.
Global Moderator
*
Offline Offline

Posts: 7,231


Super Kitty


View Profile WWW
« Reply #3 on: May 14, 2018, 04:07:24 AM »

It depends on which version of Mach3 you are using.
If your script runs fine without the line then keep it that way.

Tweakie.
Logged

Success consists of going from failure to failure without loss of enthusiasm.  Winston Churchill.
birillo1959
Active Member

Offline Offline

Posts: 72


View Profile
« Reply #4 on: May 14, 2018, 04:35:13 AM »

the version I use is: Version R3.043.062
the script works well
thanks Tweakie
Logged
Pages: 1   Go Up
Print
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!