Hello Guest it is April 23, 2024, 07:37:50 AM

Author Topic: Gcode or Vb to update tool table after probing tool length offset  (Read 9947 times)

0 Members and 1 Guest are viewing this topic.

Re: Gcode or Vb to update tool table after probing tool length offset
« Reply #10 on: December 07, 2012, 02:03:49 AM »
made a new m401 and have it sitting in the macro folder of my test setup for the cnc as I am currently away from where the actual machine is for a few days. Running it at the moment from the vb editor to test it .
Re: Gcode or Vb to update tool table after probing tool length offset
« Reply #11 on: December 07, 2012, 06:50:47 AM »
forgot to add its in the macro folder in the profile i use as a testing profile. (all ports and pins mapped but running in demo mode without and drivers loaded or ESS plug in)

Offline BR549

*
  •  6,965 6,965
    • View Profile
Re: Gcode or Vb to update tool table after probing tool length offset
« Reply #12 on: December 07, 2012, 11:40:00 AM »
IF you are not cycling the M6t# then you will not see the number change for current tool and selected tool.

(;-) TP
Re: Gcode or Vb to update tool table after probing tool length offset
« Reply #13 on: December 10, 2012, 10:08:17 AM »
Ok had to put this down to get other issues sorted but now that my manual tool release brain is working nicely time to get back into measuring these tools!

So  I have pulled together a few different auto tool zero macros and really happy with this mashup as it has a few key protection features and leave the cnc in the state it was found in. The only issue is I am constantly hitting my z+ soft limit and getting movement that is not what I expect from the G53 command.

I will highlight the lines below to show you where I am having issues but it was my understanding that G53 is in machine coordinates and therefore any offset should have NO effect. With the 0 in the tool offset table I have no issues and the script runs well. Once the offset is set tho on the G53 to Z0 the cnc seems to want to go much higher ( I am assuming the offset value but have a +1mm soft limit on the z at the moment to stop my ball screw nut slamming into bearing blockā€¦.)

I have tried many different work arounds but none worked well and I would prefer to fine the problem than have to back road methods to be honest.


'Author: Christopher Esser (Smokingman). Based on the work done by Greolt
' modded by jestah 10 dec 2012

' Define fixed parameters (Currently in Metric )

Tnumber      =  GetDRO(24)  ' gets current tool
ProbeDist     = "-50" 'Set the maximum distance to move the Z-axis before probe touches contact plate.
ProbeFeed     = "500"   'Set the first plunge speed for the probe
ProbeFeed2     = "30"   'Set the second plunge speed for the probe
Retract       = "0.5"    'Set distance to retract after probe (incremental move away from touch plate)
Retract2       = "0"    'Set distance to retract after probe ( in mech. coor.)
Xprobpos   = "100" 'Centre of tool sensor X in mech coor    
Yprobpos   = "100" 'Centre of tool sensor Y in mech coor

' Declare Global Variables
Dim CurrentFeed
Dim CurrentAbsInc
Dim CurrentGmode
Dim StartingPoint

' Begin the Program
Call GetState
Call doProbe
Call RestoreState

' Get the Starting states
Sub GetState()
  CurrentFeed   = GetOemDRO(818)    ' Get the current feedrate to return to later
  CurrentAbsInc = GetOemLED(48)     ' Get the current G90/G91 state (Abs Coordinate Mode)
  CurrentGmode  = GetOemDRO(819)    ' Get the current G0/G1 state
  StartingPoint = GetOemDRO(85) - GetOemDRO(832) ' Get starting Z position in work coordinates (Z Machine Coord DRO - Z Fixture Orig Off DRO)
End Sub

' Restore the states
Sub RestoreState()
  Code "F" &CurrentFeed ' Returns to prior feed rate
  If CurrentAbsInc = 0 Then Code "G91" ' If G91 was in effect before then return to it
  If CurrentGMode = 0 Then Code "G0"   ' If G0 was in effect before then return to it
End Sub

' Probe routine
Sub doProbe()
 
'Check to see if the probe is already grounded or faulty
  If isActive(DIGITIZE) Then   
    MsgBox "Ground fault in probe detected. Fix probe and try again. "
    Exit Sub
  End If
   
'Start the actual probe

code "G49" 'remove any tool offset (tried both of these options to stop hitting soft limits on z)
'SetToolParam(Tnumber,2,0)
'Code "G43 H" &Tnumber


Code "G0 G53 Z" & Retract2 ' ( this is where the movement hits the soft limits even with the above removing tool length offsets...?!??!?)
   While IsMoving()
     Wend
     
 Code "G0 G53 X" & Xprobpos
   While IsMoving()
     Wend
  Code "G0 G53 Y" & Yprobpos
    While IsMoving()
      Wend
 
  Code "F" &ProbeFeed        ' Set the probe plunge speed
  Code "G91 G31 Z" &ProbeDist ' Probing move using incremental move mode.
  While IsMoving()           ' Wait while it happens
  Wend

  ZProbePos = GetVar(2002)   ' Get the exact point the probe was hit
 
  If (ProbeDist+StartingPoint = ZProbePos) Then ' No contact was made during plunge
    Code "(Probe failed!)"
    Exit Sub
  End If

Code "G90 G0 Z" &ZProbePos ' Go back to that point. Always a very small amount of overrun.
  While IsMoving ()
  Wend
 
  Code "G91 G0 Z" & Retract      ' Retract
    While IsMoving()           ' Wait while it happens
    Wend
 
  Code "F" &ProbeFeed2       ' Set the probe plunge speed
  Code "G91 G31 Z-" &Retract+0.5 ' Probing move using incremental move mode.
  While IsMoving()           ' Wait while it happens
  Wend
 
  ZProbePos = GetVar(2002)   ' Get the axact point the probe was hit

  Code "G90 G0 Z" &ZProbePos ' Go back to that point. Always a very small amount of overrun.
  While IsMoving ()
  Wend
   
  SetToolParam(Tnumber,2,ZProbePos)
 
  Code "G0 G53 Z" & Retract2     ' Retract to mech zero Have seen this drive z- into the tool sensor but not recently so may have solved this somewhere
  While IsMoving ()
  Wend

Code "G43 H" &Tnumber' apply offset to tool

  Code "(Tool offset set)" 'is it possible to but the actual offset set in this box? not really a issue but would be nice  ;D
End Sub
macro working!
« Reply #14 on: December 11, 2012, 02:22:21 AM »
Ok I found a clean enough work around for this macro.... I tested it a few times today, ran well from VB editor but from MDI it would do even strange things, I have marked in blue where this would happen.

The odd thing was it would head DOWN and seemed to lump all of the blue lines together (down, x and y movement) at a very slow feed and travel until I got a servo tripping out or my hand hitting the estop. 

Thinking that it should not run them all together I added sleeps(25) between and also a big sleep(500) and a small move off z abs zero and now it seems to run fine... I don't know what it was being so strange but so far after many tests it seems to work well!

Hope it us helpful to others!

' Author: Christopher Esser (Smokingman). Based on the work done by Greolt
' modded by jestah 4th dec 2012

' Define fixed parameters (Currently in Metric )

Tnumber      =  GetDRO(24)  ' gets current tool
ProbeDist     = "-200" 'Set the maximum distance to move the Z-axis before probe touches contact plate.
ProbeFeed     = "500"   'Set the first plunge speed for the probe
ProbeFeed2     = "30"   'Set the second plunge speed for the probe
Retract       = "0.5"    'Set distance to retract after probe (incremental move away from touch plate)
Retract2       = "0"    'Set distance to retract after probe ( in mech. coor.)
Xprobpos   = "2635.74" 'Centre of tool sensor X in mech coor    
Yprobpos   = "31.64" 'Centre of tool sensor Y in mech coor' Declare Global Variables
Probeoffset = "0"' offset from probe top to table surface

' Declare Global Variables
Dim CurrentFeed
Dim CurrentAbsInc
Dim CurrentGmode
Dim StartingPoint

' Begin the Program
Call GetState
Call doProbe
Call RestoreState

' Get the Starting states
Sub GetState()
  CurrentFeed   = GetOemDRO(818)    ' Get the current feedrate to return to later
  CurrentAbsInc = GetOemLED(48)     ' Get the current G90/G91 state (Abs Coordinate Mode)
  CurrentGmode  = GetOemDRO(819)    ' Get the current G0/G1 state
  StartingPoint = GetOemDRO(85) - GetOemDRO(832) ' Get starting Z position in work coordinates (Z Machine Coord DRO - Z Fixture Orig Off DRO)
End Sub

' Restore the states
Sub RestoreState()
  Code "F" &CurrentFeed ' Returns to prior feed rate
  If CurrentAbsInc = 0 Then Code "G91" ' If G91 was in effect before then return to it
  If CurrentGMode = 0 Then Code "G0"   ' If G0 was in effect before then return to it
End Sub

' Probe routine
Sub doProbe()
 

'Start the actual probe

code "G49" 'remove any tool offset (tried both of these options to stop hitting soft limits on z)
sleep(500)

ActivateSignal(OUTPUT5) ' Dust hood up

'Code "G91 G0 Z-0.01"
Code "G90 G0 G53 Z" & Retract2 ' ( this is where the movement hits the solf limits even with the above removing tool lenght offsets...?!??!?)
   While IsMoving()
   Sleep(50)
     Wend
     
Tme = 0
While(GetOEMLED(822) = fulse)
Sleep(100)
Tme = Tme +.1
If(Tme > 2)Then
MsgBox("Hood up signal Timed out - please check!")
Exit Sub
End If
Wend
         
 Code "G0 G53 X" & Xprobpos
   While IsMoving()
   Sleep(50)
     Wend
  Code "G0 G53 Y" & Yprobpos
    While IsMoving()
    Sleep(50)
      Wend
 
  Code "F" &ProbeFeed        ' Set the probe plunge speed
  Code "G91 G31 Z" &ProbeDist ' Probing move using incremental move mode.
  While IsMoving()           ' Wait while it happens
 Sleep(50)
  Wend


  ZProbePos = GetVar(2002)   ' Get the axact point the probe was hit
 
  If (ProbeDist+StartingPoint = ZProbePos) Then ' No contact was made during plunge
    Code "(Probe failed!)"
    Exit Sub
  End If

Code "G90 G0 Z" &ZProbePos ' Go back to that point. Always a very small amount of overrun.
  While IsMoving ()
  Sleep(50)
  Wend
 
  Code "G91 G0 Z" & Retract      ' Retract
    While IsMoving()           ' Wait while it happens
   Sleep(50)
 Wend
 
  Code "F" &ProbeFeed2       ' Set the probe plunge speed
  Code "G91 G31 Z-" &Retract+0.5 ' Probing move using incremental move mode.
  While IsMoving()           ' Wait while it happens
  Sleep(50)
Wend
 
  ZProbePos = GetVar(2002)   ' Get the axact point the probe was hit

  Code "G90 G0 Z" &ZProbePos ' Go back to that point. Always a very small amount of overrun.
  While IsMoving ()
 Sleep(50)
 Wend
   
  SetToolParam(Tnumber,2,ZProbePos)
 
  Code "G0 G53 Z" & Retract2     ' Retract to mech zero
  While IsMoving ()
  Sleep(50)
Wend

Code "G43 H" &Tnumber' apply offset to tool

  Code "(Tool offset set)" 'is it possible to but the actual offset set in this box?
 
 DeActivateSignal(OUTPUT5)
 
  End Sub