Machsupport Forum

Mach Discussion => FAQs => Topic started by: DWalsh62 on January 26, 2012, 04:21:11 AM

Title: Zeroing script for metric / imperial with sanity.
Post by: DWalsh62 on January 26, 2012, 04:21:11 AM
This has been beaten to death and there are many people offering a tool zeroing script in imperial and metric however this usually involves using their custom screens which may contain graphic with information or images that don't suit you.

Here is a script that does not require a custom screen set, I have added sanity to check things like G20/G21 mode, check tool selection, test if probe input is configured and probe wiring faults, will stop and restart spindle (in same rotation direction) and ask if you need/want to move X, Y or Z an to place the sensor on the work piece.

The script is included in this post as code so you can easily copy/paste it or make some modification before implementing it.

Code: [Select]
' Auto Tool Zero by Dale Walsh <dale@daleenterprise.com>

Dim Initial_Abs_Inc

Dim Initial_Feed_Rate

Dim Initial_G_State

Dim Initial_Machine_Coordinates_State

Dim Initial_Spindle_CW_State

Dim Initial_Spindle_CCW_State

Dim Initial_Spindle_State

Dim Initial_Tool_Offset_State

Dim Probing_Feed_Rate

Dim Guage_Block_Height

Dim Z_Probe_Pos

Initial_Feed_Rate = GetOEMDRO(818)

Initial_G_State = GetOEMDRO(819)

Initial_Machine_Coordinates_State = GetOEMLed(16)

Initial_Tool_Offset_State = GetOEMLED(28)

Initial_Abs_Inc = GetOEMDRO(48)

Guage_Block_Height = GetOEMDRO(1001)

If Guage_Block_Height <= 0 Then
Answer = MsgBox("A positive value must be entered for the Guage Block Height", 0, "Oh-oh")
Exit Sub
End If

If GetOEMDRO(824) <= 0 Then
Answer = MsgBox("A Tool has not been selected, select a tool and try again.", 0, "Oh-oh")
Exit Sub
End If

If IsSuchSignal(22) Then ' Check whether a probe input is defined..
If GetOEMLed(825) = 0 Then

Answer = MsgBox("Do you need to Move X, Y or Z ?", 4, "Do you need to Move")
If Answer = 6 Then
Message("Tool zeroing to Material was canceled so you can move.")
Exit Sub
End If

Answer = MsgBox("Place Sensor on work piece.", 1, "Is the Guage Block Sensor in place")
If Answer = 2 Then
Message("Tool zeroing to Material was canceled.")
Exit Sub
End If

Message("Tool zeroing to Material is requested.")

' Save settings for restoring later
Initial_Spindle_State = GetOEMLED(11)
Initial_Spindle_CW_State = GetOEMLED(164)
Initial_Spindle_CCW_State = GetOEMLED(165)

If Initial_Spindle_State = true Then  ' Spindle is running so stop it
If Initial_Spindle_CW_State = Initial_Spindle_CCW_State Then
MsgBox("Your running spindle is misconfigured -> clockwise = " &  Initial_Spindle_CW_State & " and counter-clockwise" &  Initial_Spindle_CCW_State & " , please fix this.")
Exit Sub
End If
DoSpinStop()
Sleep(500)
End if

' Turn off Tool Offset if it's on
Select Case Initial_Tool_Offset_State
Case True
DoOEMButton(136)
End Select

Select Case Initial_Machine_Coordinates_State
Case True
DoOEMButton(180)
End Select

'  Get current scale settings.
XScale = GetOEMDRO(59)
YScale = GetOEMDRO(60)
ZScale = GetOEMDRO(61)

'  Set scale to one to probe.
Call SetOEMDRO(59, 1)
Call SetOEMDRO(60, 1)
Call SetOEMDRO(61, 1)

Select Case GetOEMLED(802)
Case true ' Metric System
Probing_Feed_Rate = 150
Probe_Travel = 250
Case false ' Imperial System
Probing_Feed_Rate = 6
Probe_Travel = 10
End Select

DoOemButton(1010)
Code "G4 P1"

' Perform the probe
Code "G90 G31 Z-" & Probe_Travel & " F" & Probing_Feed_Rate
While IsMoving()
Wend

Z_Probe_Pos = GetVar(2002)
Code "G0 Z" &Z_Probe_Pos
While IsMoving()
Wend

Call SetOemDRO(802 , Guage_Block_Height)
Code "G4 P0.500"
Code "G28"
While IsMoving()
Wend

Message("Tool is now zeroed to Material.")

' Restore the original settings
Code "F" &Initial_Feed_Rate

Select Case Initial_Abs_Inc
Case 0
Code "G90"
Case 1
Code "G91"
End Select

Select Case Initial_G_State
Case 0
Code "G0"
Case 1
Code "G1"
End Select

Select Case Initial_Spindle_State
Case True ' Spindle is running so stop it
If Initial_Spindle_CW_State = true Then
DoSpinCW()
ElseIf Initial_Spindle_CCW_State = true Then
DoSpinCCW()
End If
End Select

' Restore the original Tool Offset state
Select Case Initial_Tool_Offset_State
Case True
DoOEMButton(136)
End Select

' Restore original  Machine Coordinates State
Select Case Initial_Machine_Coordinates_State
Case True
DoOEMButton(179)
End Select

Call SetOEMDRO(59, XScale)
Call SetOEMDRO(60, YScale)
Call SetOEMDRO(61, ZScale)

Else
'  Houston we have a problem
Answer = MsgBox("Guage Height Block is grounded, check connections and try again", 0, "Oh-oh")
End If
Else
Answer = MsgBox("Probe input is not defined in Port and Pins config, configure and try again.", 0, "Oh-oh")
End If

You can use the "Operator->Edit Button Script" menu option to install the script.

With minor modification you can also use it as a tool height setter.
Title: Re: Zeroing script for metric / imperial with sanity.
Post by: jzak3 on October 12, 2012, 05:16:33 PM
hello, is there any other input I can use besides the probe input for the auto zeroing plate, If not can the probe and zeroing plate use the same output?
Title: Re: Zeroing script for metric / imperial with sanity.
Post by: Bob78218 on March 07, 2014, 03:47:27 PM
Sorry i am new at this. Where do i set gauge block higth and what is the centext?

Thanks
bob78218