Hello Guest it is March 28, 2024, 09:39:10 AM

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

0 Members and 1 Guest are viewing this topic.

Hi guys,

Ok next newbie question.... I am trying to update my tool table offsets but can’t for the life of me find any reference to how to update the tool table using VB.

I have found a few macros and have made one for my more basic manual tool change cnc that just zeros out the Z DRO but as I have got my sticky fingers on a small ATC cnc I would prefer to have the tools in the rack measured and offsets stored in the tool table so that while cutting it only has to grab a tool and avoid measuring each after the change.

I just need to know the code that will actually update the tool table, I have been searching but have not found any thing and my attempts to get it to work in MDI have been fruitless..
Once again many thanks in advance!

Offline BR549

*
  •  6,965 6,965
    • View Profile
Re: Gcode or Vb to update tool table after probing tool length offset
« Reply #1 on: December 06, 2012, 12:10:20 AM »
IN the Mach manual look up G10

IN The Mach programmers manual look up SetToolParam()

(;-)TP
Re: Gcode or Vb to update tool table after probing tool length offset
« Reply #2 on: December 06, 2012, 12:27:13 AM »
Thanks for the point in the right direction, once i have the code done i will post it for all! well at least for the experts to pick to shreds :P

Offline Tweakie.CNC

*
  • *
  •  9,196 9,196
  • Super Kitty
    • View Profile
Re: Gcode or Vb to update tool table after probing tool length offset
« Reply #3 on: December 06, 2012, 07:00:15 AM »
Quote
once i have the code done i will post it for all! well at least for the experts to pick to shreds

No worries Jestah - the experts would not do that.  ;D

Tweakie.
PEACE

Offline BR549

*
  •  6,965 6,965
    • View Profile
Re: Gcode or Vb to update tool table after probing tool length offset
« Reply #4 on: December 06, 2012, 12:36:23 PM »
First you would have to FIND some experts to show it too (;-)

(;-) TP
Re: Gcode or Vb to update tool table after probing tool length offset
« Reply #5 on: December 06, 2012, 09:47:25 PM »
I would actually like it if people could pick my macros and vb to shreds as I have only really been learning a few months and cut and paste most things untill it works.... Slowly I am working out what each function is for but having many minds on a task tends to make a stronger product!

My code so far seems to work as expected apart from a few points:

Tnumber      =  getselectedtool() ' gets current tool
 
this line only returns the value of zero so I am wondering if i am using it right...

I also am using this line to make the offset changes

code "G10 L1 P" &Tnumber & "Z" &ZProbePos ' failing at the moment but maybe due to the zero for the tool number
Code "(Tool offset set)" ' Success! But is it possible to but the actual offset set in this box?
One of the last lines of code is a very basic call to the give a message, could this be set to display the actually offset applied? If so could you give me some pointers to how to do this?


Once this is working I would like to add a call in the start-up to remember the start point so I can return the tool to that point once this macro is done.

Many thanks and hope that once we get the last bugs sorted this code will be useful to others!
-----------------------------------------------------------------------------------------------------


' on top of the X-Y plane at the Z zero position. Cutting tool acts as a probe.

' Operation steps:
'       1. Get current state (Feedrate, G90/G91, G0/G1, Plate Thickness, and Starting Point)
'       2. Check if probe is grounded. Restore state and exit if it is.
'       3. Check if spindle is running. Give option to abort if it is
'       5. Move probe down at a rate of "ProbeFeed" until "ProbeDist" is reached, set Z-DRO and retract the distance set in "Retract"
'               If "ProbeDist" is reached before the probe is contacted, the state is restored and the Z-DRO is left unset

' Last updated: 6/12/12
' Author: Christopher Esser (Smokingman). Based on the work done by Greolt
' modded by jestah 6th dec 2012

' Define fixed parameters (Currently in Metric )

Tnumber      =  getselectedtool() ' getts current tool
ProbeDist     = "-200" 'Set the maximum distance to move the Z-axis before probe touches contact plate.
ProbeFeed     = "1000"   'Set the first plunge speed for the probe
ProbeFeed2     = "30"   'Set the second plunge speed for the probe
VerifyTimeout = "10"   'Set timeout to wait for probe verify in seconds
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 PlateThickness
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
  PlateThickness = GetUserDRO(1151) ' Read contact plate thickness DRO
  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

  ' Check to see if the spindle is running
  If GetOemLED(11) Then
    Begin Dialog SindleOn 16,32,180,96,"Spindle Running!"
      OKButton 132,8,40,14
      CancelButton 132,28,40,14
      Text 12,8,120,40,"It appears the spindle is running! Select 'OK' to continue anyway or 'Cancel' to exit."
    End Dialog
    Dim Dlg1 As SindleOn
    Button = Dialog (Dlg1)
    If Button=0 Then
      Code "(Auto Tool Zero Aborted!)"
      Exit Sub
    End If
  End If
  
  'Start the actual probe
 Code "G0 G53 Z" & Retract2
 Code "G0 G53 X" & Xprobpos
  Code "G0 G53 Y" & Yprobpos
  Code "F" &ProbeFeed        ' Set the probe plunge speed
  Beep                       ' Signal start of Z movement
  Code "G91 G31Z" &ProbeDist ' Probing move using incremental move mode.
  While IsMoving()           ' Wait while it happens
  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 "G0 Z" & Retract      ' Retract
  Code "F" &ProbeFeed2        ' Set the probe plunge speed
  Code "G91 G31Z" &Retract+1 ' Probing move using incremental move mode.
  While IsMoving()           ' Wait while it happens
  Wend
  
  Code "G90 G0 Z" &ZProbePos ' Go back to that point. Always a very small amount of overrun.
  While IsMoving ()
  Wend

  code "G10 L1 P" &Tnumber & "Z" &ZProbePos

  Code "G0 G53 Z" & Retract2     ' Retract
  While IsMoving ()
  Wend
  Code "(Tool offset set)" ' Success! but is it possible to but the actuall offset set in this box?
End Sub

« Last Edit: December 06, 2012, 09:49:05 PM by jestah »

Offline BR549

*
  •  6,965 6,965
    • View Profile
Re: Gcode or Vb to update tool table after probing tool length offset
« Reply #6 on: December 06, 2012, 09:52:09 PM »
IF you want the current tool you use

GetCurrentTool()


GetSelectedtool() is the tool number that is loaded into the buffer with the T# call  the M6 call  tansfers the Selected tool to the current tool status.


Just a thought, (;-) TP
Re: Gcode or Vb to update tool table after probing tool length offset
« Reply #7 on: December 06, 2012, 09:56:54 PM »
So for this am I better to look at one of the tool number dros on screen for getting the current loaded tool?

is it also bad practus to call a macro from a macro?

what is the difference between a oem dro and standard dro?
Re: Gcode or Vb to update tool table after probing tool length offset
« Reply #8 on: December 07, 2012, 12:48:32 AM »
tired GetCurrentTool() and it still retruns 0 ... hmmmm maybe im still not doing this right!

Offline BR549

*
  •  6,965 6,965
    • View Profile
Re: Gcode or Vb to update tool table after probing tool length offset
« Reply #9 on: December 07, 2012, 01:26:32 AM »
Where are you running this macro from ?

(;-) TP