Machsupport Forum

Mach Discussion => VB and the development of wizards => Topic started by: birillo1959 on February 21, 2018, 05:21:42 AM

Title: manual tool change
Post by: birillo1959 on February 21, 2018, 05:21:42 AM
I downloaded this macro (not mine, found on the site cncitalia) to change tool, I have a problem I do not know if I do not configure something I'm the macro that does not go
the problem is:
1 launch the macro
2 the trio is positioned for the tool change
3 goes down and makes the first touch and goes back for the change
4 tool change and redo for the second touch
5 returns from where he left
up to here everything is fine, the problem is that it does not calculate / change the difference between the two tools
I hope I have explained all the help / advice is appreciated
translated with Google

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

code "M5" ' fermo il motore

' controllo se la macchina è stata referenziata

If Not GetLed (7) Then ' è referenziato X
vxled = 1
End If

If Not GetLed (8) 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

' 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 = 400 ' imposto il feedrate massimo
fmin = 100 ' imposto il feedrate per la palpata

zavv = -50 ' distanza rapida di avvicinamento al palpatore
zmin = -80 ' 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

MsgBox ("Ora si può cambiare la punta")

Response = MsgBox ("E' stata cambiata la punta?", 4 , "ATTENZIONE")
If (Response = 6) Then
i = 99
Else
MsgBox ("Riprendo il lavoro con la punta iniziale")
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
MsgBox ("Per riprendere il lavoro premere il pulsante 'LAVORAZIONE'")
code "M3" ' riaccendo il motore e riprendo il lavoro da dove l'avevo lasciato

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

code "M3" ' riaccendo il motore

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
MsgBox ("Per riprendere il lavoro premere il tasto LAVORAZIONE")

End If

' riprendo il lavoro da dove l'avevo lasciato

Else
MsgBox ("Per poter cambiare l'utensile bisognava prima aver referenziato la macchina")
End If
Title: Re: manual tool change
Post by: TPS on February 22, 2018, 04:03:43 AM
your code contains some Kind of height correction.
even it is very crowdy.

Code: [Select]
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

-copy your code into vbscripter window (Operator --> VB Script Editor)
-use the green >|| button to step throught code
-watch z-axis dro 

Title: Re: manual tool change
Post by: birillo1959 on February 22, 2018, 04:46:08 AM
thank you for your help
the problem remains, it all works only at the end the dro is at 0, but the difference is not calculated (I hope I explained myself)
Title: Re: manual tool change
Post by: TPS on February 22, 2018, 04:58:57 AM
if you step through the code when you come to this line

-code "G53 G0 Z" & zzero-(zdif) ' riporto Z al valore zero pezzo con la differenza utensile

you can put the mouse Cursor above the following variables (1 line above):

zdif
zorig
znew

witch values are in there?
Title: Re: manual tool change
Post by: birillo1959 on February 22, 2018, 05:37:12 AM
I state that I do not have the slightest knowledge of VB
if I launch
  zdif = zorig - (znew) 'controllo se l'utensile è più corto o più lungo

  codice "G53 G0 Z" e zzero- (zdif) 'riporto Z al valore zero pezzo con la differenza utensile
  Mentre IsMoving ()
  Wend
  Chiama SetDro (2,0) 'porto contatore Z a zero
  codice "G0 Z" & zpos 'riporto Z al valore di partenza (inizio programma)
  Mentre IsMoving ()
  Wend

DROs go to 0 and do not move
thanks for your patience !
Title: Re: manual tool change
Post by: TPS on February 22, 2018, 05:43:45 AM
ok let's try again,

if you step through code in VB Scripter window by using the green >|| button on top, you see a Little yellow -> (arrow)
on the left side.

if this arrow is in line:

-code "G53 G0 Z" & zzero-(zdif) ' riporto Z al valore zero pezzo con la differenza utensile

you can put the mouse Cursor above the following variables (1 line above):

zdif
zorig
znew

and see the values as tool tip text.
Title: Re: manual tool change
Post by: birillo1959 on February 22, 2018, 06:19:24 AM
ok si i valori sono dentro
Title: Re: manual tool change
Post by: birillo1959 on February 22, 2018, 06:19:48 AM
ok yes the values are inside
Title: Re: manual tool change
Post by: TPS on February 22, 2018, 06:33:43 AM
ok yes the values are inside

and what are the values ?
Title: Re: manual tool change
Post by: birillo1959 on February 22, 2018, 06:46:51 AM
the values are:

zdif ='-2.7600937220912

Zorig ='-77.534221109466

znew ='-74.774127487374
Title: Re: manual tool change
Post by: TPS on February 22, 2018, 06:50:11 AM
so it Looks like your 'new' tool is about 2.76mm longer than the 1st one.
is this correct ?
Title: Re: manual tool change
Post by: birillo1959 on February 22, 2018, 06:55:01 AM
yes for the difference is correct (2.76mm) but it is shorter!
Title: Re: manual tool change
Post by: TPS on February 22, 2018, 06:58:26 AM
ok, i have made some changes on your code,
please test and Report values again.

Code: [Select]


code "M5" ' fermo il motore

' 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

' 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 = 400 ' imposto il feedrate massimo
fmin = 100 ' imposto il feedrate per la palpata

zavv = -50 ' distanza rapida di avvicinamento al palpatore
zmin = -80 ' 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 = GetVar(2002) ' 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

MsgBox ("Ora si può cambiare la punta")

Response = MsgBox ("E' stata cambiata la punta?", 4 , "ATTENZIONE")
If (Response = 6) Then
i = 99
Else
MsgBox ("Riprendo il lavoro con la punta iniziale")
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
MsgBox ("Per riprendere il lavoro premere il pulsante 'LAVORAZIONE'")
code "M3" ' riaccendo il motore e riprendo il lavoro da dove l'avevo lasciato

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 = GetVar (2002) ' 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

code "M3" ' riaccendo il motore

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
MsgBox ("Per riprendere il lavoro premere il tasto LAVORAZIONE")

End If

' riprendo il lavoro da dove l'avevo lasciato

Else
MsgBox ("Per poter cambiare l'utensile bisognava prima aver referenziato la macchina")
End If
 

Title: Re: manual tool change
Post by: birillo1959 on February 22, 2018, 08:16:54 AM
ok i have tried the same problem the values are

zdif ='-2.0576149949886

Zorig ='-70.315131311794

znew ='- 68.257516316105

the test was done with a different tip (I had to finish work)
Title: Re: manual tool change
Post by: TPS on February 22, 2018, 09:55:52 AM
see next post
Title: Re: manual tool change
Post by: TPS on February 22, 2018, 10:00:29 AM
Attention, sorry posted the wrong code, here the right one

Code: [Select]

code "M5" ' fermo il motore

' controllo se la macchina è stata referenziata
If Not GetLed (7) Then ' è referenziato X
vxled = 1
End If

If Not GetLed (8) 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

' 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 = 400 ' imposto il feedrate massimo
fmin = 100 ' imposto il feedrate per la palpata

zavv = -50 ' distanza rapida di avvicinamento al palpatore
zmin = -80 ' 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
code "G31 Z" & zavv+zmin
While IsMoving()
Wend
End If

zorig = GetVar(2002) ' 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

MsgBox ("Ora si può cambiare la punta")

Response = MsgBox ("E' stata cambiata la punta?", 4 , "ATTENZIONE")
If (Response = 6) Then
i = 99
Else
MsgBox ("Riprendo il lavoro con la punta iniziale")
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
MsgBox ("Per riprendere il lavoro premere il pulsante 'LAVORAZIONE'")
code "M3" ' riaccendo il motore e riprendo il lavoro da dove l'avevo lasciato

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
code "G31 Z" & zavv+zmin
While IsMoving()
Wend
znew = GetVar (2002) ' 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

code "M3" ' riaccendo il motore

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
code "G0 Z" & zpos-(zdif) ' riporto Z al valore zero pezzo con la differenza utensile
While IsMoving()
Wend
' Call SetDro (2,0) ' porto contatore Z a zero
Call SetDro (2,zpos) ' 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
MsgBox ("Per riprendere il lavoro premere il tasto LAVORAZIONE")

End If

' riprendo il lavoro da dove l'avevo lasciato

Else
MsgBox ("Per poter cambiare l'utensile bisognava prima aver referenziato la macchina")
End If
 

 
 
 

Title: Re: manual tool change
Post by: birillo1959 on February 22, 2018, 10:50:31 AM
ok, the situation has worsened:
  does not respect distances:
      zavv = -50 'rapid approach distance to the sensing device
zmin = -80 'depth beyond the palpator
xcut = 0 'X position for tool change
ycut = 0 'Y position for tool change
it goes down a lot more, continuing the main problem remains
Title: Re: manual tool change
Post by: TPS on February 22, 2018, 11:48:21 AM
ok now i had a Chance to run the code on my machine.
it did a Change from Long to short tool, and a Change from short to Long tool.
in both cases machine returned to the z-Position with the end of the new tool
where it started with the old tool.
so it was working fine here.

Code: [Select]

code "M5" ' fermo il motore

' controllo se la macchina è stata referenziata
If Not GetLed (7) Then ' è referenziato X
vxled = 1
End If

If Not GetLed (8) 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

' 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 = 400 ' imposto il feedrate massimo
fmin = 100 ' imposto il feedrate per la palpata

zavv = -50 ' distanza rapida di avvicinamento al palpatore
zmin = -80 ' 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 = GetVar(2002) ' 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

MsgBox ("Ora si può cambiare la punta")

Response = MsgBox ("E' stata cambiata la punta?", 4 , "ATTENZIONE")
If (Response = 6) Then
i = 99
Else
MsgBox ("Riprendo il lavoro con la punta iniziale")
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
MsgBox ("Per riprendere il lavoro premere il pulsante 'LAVORAZIONE'")
code "M3" ' riaccendo il motore e riprendo il lavoro da dove l'avevo lasciato

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 = GetVar (2002) ' 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

code "M3" ' riaccendo il motore

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
MsgBox ("Per riprendere il lavoro premere il tasto LAVORAZIONE")

End If

' riprendo il lavoro da dove l'avevo lasciato

Else
MsgBox ("Per poter cambiare l'utensile bisognava prima aver referenziato la macchina")
End If
 

 
  
 



Title: Re: manual tool change
Post by: birillo1959 on February 22, 2018, 01:58:49 PM
ok the macro works fine but in the end it does not change the values of the tip, maybe I have some wrong settings in the program I do not know, I can not get over it. ???
thank you anyway for the help offered.
Title: Re: manual tool change
Post by: TPS on February 22, 2018, 03:30:58 PM
ok the macro works fine but in the end it does not change the values of the tip, maybe I have some wrong settings in the program I do not know, I can not get over it. ???
thank you anyway for the help offered.

please try to explain what you mean with "in the end it does not change the values of the tip" because i have tested again and cannot see what is going wrong.

the only explanation i have, the the probe is not seeing the hit of of touch plate.

maybe you can some photo's/Video what makes it a Little bit easer for me to understand what is going wrong.

maybe we can do a teamviewer session. 
Title: Re: manual tool change
Post by: birillo1959 on February 22, 2018, 03:45:44 PM
ok, I try to explain
1 launch the script (0 piece)
2 the probe goes to x0 y0 z0 (all high)
3 drops down to touch
4 dates back to the tool change
5 changed tool drops up to touch
6 reposition to 0 piece, here the problem does not calculate the tool difference.
I hope I explained myself
Title: Re: manual tool change
Post by: TPS on February 23, 2018, 01:58:36 AM
hello,
this part is doing the lenght (height) correction

      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



when your are Debugging (stepping throught) the script,
and excecute this line:

      code "G53 G0 Z" & zzero-(zdif) ' riporto Z al valore zero pezzo con la differenza utensile


you should see a move from the z-axis with the difference of tool length

later in code, with this line:

      Call SetDro (2,0) ' porto contatore Z a Zero


z-axis dro gets zeroed.

and now, with this code:

      code "G0 Z" & zpos ' riporto Z al valore di partenza (inizio programma)


it will return to the z-height where it left for toolchange, but with the corrected z-axis.
(z-axis will Display the same value as before toolchange)
Title: Re: manual tool change
Post by: birillo1959 on February 23, 2018, 04:30:59 AM
ok, if possible I would like to eventually correct the difference (without putting money!). it's possible to do it?
Title: Re: manual tool change
Post by: TPS on February 23, 2018, 04:37:10 AM
for the Moment i can not see the Problem.

in your Video you put a coin (or washer) for the probe of new tool,
so the toollength of new tool is LONGER (toollength = tool + thickness of coin),
and so it is locic that machine is stopping higher at the end.
this difference is the thickness of the coin.

----ok, if possible I would like to eventually correct the difference (without putting money!). it's possible to do it?

what do you mean with this?
Title: Re: manual tool change
Post by: birillo1959 on February 23, 2018, 04:57:31 AM
ok I try to explain myself
1 from scratch piece macro launch
2 goes to position and makes the first palpate
3 change tip and second palpate
4 return to zero piece, here it goes to 0 piece but does not calculate the difference between the two tips, in practice it returns to zero piece with the measure of the first tip
Title: Re: manual tool change
Post by: TPS on February 23, 2018, 05:02:21 AM
then you have only to comment out These code


'      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


anyway this does not make sense to me.
Title: Re: manual tool change
Post by: birillo1959 on February 23, 2018, 05:12:01 AM
the machine returns to 0 piece the DRO scores 0
but the tip does not change the difference between the first palpate and the second
I try to explain better, if the second tip is 1mm shorter at the end the machine is positioned on zero piece x0 y0 z0 (the dro are all at 0) but physically the tip remains 1mm higher than 0 piece
Title: Re: manual tool change
Post by: TPS on February 23, 2018, 05:22:21 AM
again,

if you put a coin (or washer) on your touch plate tip will be LONGER not SHORTER,
so machine has to stop higher (thickness of coin or washer).
Title: Re: manual tool change
Post by: birillo1959 on February 23, 2018, 05:48:20 AM
ok I thank TPS for the patience and availability offered.

I solved by deleting the two lines:

code "M5" ' fermo il motore
code "M3" ' riaccendo il motore

I do not know why (maybe they were in conflict?) when I was doing the tests, the inverter was off, the macro with working voice warnings was set

 Rem  MANUAL TOOL CHANGE   
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 (8) 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

' riprendo il lavoro da dove l'avevo lasciato