3. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
Copy BackgroundOffset.jpg, HelpWorkOffset.jpg, select2.jpg, TouchImage2.jpg, TouchImagec2.jpg to
Bitmaps folder. Before copying, keep the original files by changing the file name with
BackgroundOffsetORIG.jpg, HelpWorkOffsetORIG.jpg, select2ORIG.jpg, TouchImage2ORIG.jpg,
TouchImagec2ORIG.jpg
Open Mach 3 and code the button
4. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
Copy Script to Editor
Script Button position
5. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
Double Check is the system in ready, check the contact probe crocodile
Pressthe auto buttonon the X axis
6. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
Thenpressthe auto buttonon the Y axis
Input G0X0Y0 --> X, Y Zero is located
7. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
The variable maximum travel for both X and Y , these set to 75% of CNCs full Travel.
Default probe engaged all rules previously explained about these Dro overrides also apply here
8. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
External Finding which we'll get to shortly all options in the options dialog can be set to a default
position, this just means one or a few less button clicks before hitting OK.
9. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
In Addition to the usuals span hold this serves two safety purpose first it buys you time to prepare
gauging
Safety gap, When the the probe reaches the side opposite the safety gap is the distance between the
inward side of the probe and the gauge or the part, if you are not using a gauge, again all dialogue
options can be set to a default
10. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
CENTER_EXTERNAL_SCRIPT_REV14.txt
'*************************************************************************************************************
'************************************ FIND X/Y CENTER (EXTERNAL) **************************************
'************************************ A TOUCH SCRIPT FOR MACH3 **************************************
'******FONT************************** FOR BOTH INCH AND MM UNITS ********************************** ****
'*********Courier******************** CHARLIE SARSFIELD REV14 JUN/2018 **************************************
'************************************ WWW.YOUTUBE.COM/SUNNY5RISING **************************************
'************************************ SUNNY5RISE@GMAIL.COM **************************************
'*************************************************************************************************************
'***************** NOTES BEFORE LAUNCHING: ****************
'***************** Z ZERO MUST ALREADY BE SET TO TOP OF PART OR ABOVE PATH OBSTACLES. ****************
'***************** PROBE MUST BE PLACED AT NEGATIVE SIDE OF AXIS AT USER PREFERRED Z HEIGHT.****************
'***************** APPROXIMATE SPAN INPUT SHOULD BE SET AT PART SIZE OR SLIGHTLY LARGER. ****************
'***************** TO USE DEFAULT PROBE & GAGE VALUES, SET RELEVANT DRO(S) TO ZERO. ****************
'***************** TO USE A GAGE VALUE OF ZERO, ENTER A NEGATIVE VALUE IN THICKNESS DRO. ****************
'*************************************************************************************************************
'----- USER VARIABLES ----------------------------------------------------------------------------------------
If GetParam("Units") = 0 Then
'METRIC VALUES
VarUnits = " MM"
VarMaxDistance = 25.4 'MAX TRAVEL BEFORE ALARM
VarFeedRate = 127 'MM/MIN FEEDRATE FOR APPROACH
VarStandOff = 1.27 'STANDOFF DISTANCE * RECOMMENDED SETTING 1.27
VarProbeDia = 3.175 'DEFAULT PROBE DIAMETER | EDGE FINDER DIA. DRO PRECEDENCE
VarGageThick = 0 'DEFAULT GAGE THICKNESS | GAGE THICKNESS DRO PRECEDENCE
VarApproxSpan = 0 'DEFAULT APPROXIMATE PART SPAN * OPTIONAL
VarSafetyGap = 6.35 'DEFAULT SAFETY GAP (EXTRA SPAN BEYOND APPROXIMATE SPAN) MIN RCMD:3.05
Else
'SAE VALUES
VarUnits = " INCH"
VarMaxDistance = 1.0 'MAX TRAVEL BEFORE ALARM
VarFeedRate = 5 'INCH/MIN FEEDRATE FOR APPROACH
VarStandOff = 0.05 'STANDOFF DISTANCE * RECOMMENDED SETTING 0.05
VarProbeDia = 0.125 'DEFAULT PROBE DIAMETER | EDGE FINDER DIA. DRO PRECEDENCE
VarGageThick = 0 'DEFAULT GAGE THICKNESS | GAGE THICKNESS DRO PRECEDENCE
VarApproxSpan = 0 'DEFAULT APPROXIMATE PART SPAN * OPTIONAL
VarSafetyGap = 0.250 'DEFAULT SAFETY GAP (EXTRA SPAN BEYOND APPROXIMATE SPAN) MIN RCMD:0.120
End If
VarRateOrRapid = 1 'DEFAULT POSITIONING MOVEMENT: 0=SAFETY RATE (FEEDRATE * 2) 1=RAPID
VarWhichAxis = 0 'DEFAULT AXIS CHOICE: 0=X 1=Y
VarSpanHold = 3 'DEFAULT SECONDS TO PAUSE MOVEMENT UPON REACHING SPAN LOCATION
VarDelayInSec = 0 'DEFAULT SECONDS TO DELAY MOTION AFTER BUTTON CLICK
VarBeepOrSpeak = 2 'COUNTDOWN AUDIO: 0=NONE 1=BEEP 2=SPEAK
VarSecOfAudio = 5 'COUNTDOWN SECOND AT WHICH AUDIO BEGINS
VarCompleteAudio = 3 'END SIGNAL: 0=NONE 1=Beep 2=SPEAK 3=WAV_AUDIO_FILE
VarWavAudioFile = "C:MACH3ToolCompleteSND1.wav" 'AUDIO FILE & PATH
'*************************************************************************************************************
'*************************************************************************************************************
'----- GET INITIAL ENVIRONMENT SETTINGS FOR LATER REINSTATEMENT ----------------------------------------------
VarInitialLinearMode = GetOemDRO(819) 'LINEAR MODE G00/G01
VarInitialDistMode = GetOemLED(48) 'DISTANCE MODE G90/G91
VarInitialFeedRate = GetOemDRO(818) 'FEEDRATE
VarInitialInhibit = GetParam("ZInhibitOn") 'Z INHIBIT STATUS OFF/ON
VarInitialXScale = GetParam("XScale") 'X SCALE VALUE
VarInitialYScale = GetParam("YScale") 'Y SCALE VALUE
VarInitialZScale = GetParam("ZScale") 'Z SCALE VALUE
VarInitialFRO = GetOemDRO(821) 'FEEDRATE OVERRIDE PERCENTAGE
Message "" 'CLEAR STATUS LINE TEXT
11. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
'----- CHECK DIGITIZE STATE; 0=CLEAR 1=ACTIVE ----------------------------------------------------------------
If GetOemLED (825) <> 0 Then
MachMsg("Digitize Status Not Clear. Check Probe/Connections And Try Again!","*** ERROR! ***",0)
End 'END SCRIPT
End If
'----- RETRIEVE PROBE DIAMETER AND GAGE THICKNESS ------------------------------------------------------------
If VarProbeDia = 0 And GetOEMDRO(1000) = 0 Then
MachMsg("Coffee First, Then Provide Probe Diameter And Try Again.","*** ERROR! ***",0)
Message "Find Center CANCELED" 'DISPLAY MESSAGE
End 'END SCRIPT
Else
If GetOEMDRO(1000) <> 0 Then VarProbeDia = Abs(GetOEMDRO(1000)) 'CHECK AND GET FINDER DIA DRO VALUE IF USED
End If
If GetOEMDRO(1001) <> 0 Then 'CHECK FOR GAGE THICKNESS VALUE
Select Case InStr(1,GetOEMDRO(1001),"-") 'CHECK IF NEGATIVE IS USED
Case 0 'NEG NOT PRESENT
VarGageThick = Abs(GetOEMDRO(1001)) 'SET GAGE THICKNESS TO DRO VALUE
Case 1 'NEG IS PRESENT
VarGageThick = 0 'SET GAGE THICKNESS TO ZERO
End Select
End If
Select Case GetParam("Units") 'SET UNITS FOR STATUS LINE DISPLAY
Case 0 'MM
VarMsgUnits = "mm"
Case 1 'INCH
VarMsgUnits = "in"
End Select
'FORMAT STATUS LINE TEXT
VarStatusMsg = "Probe: " &VarProbeDia &VarMsgUnits &" Gage: " &VarGageThick &VarMsgUnits
'----- RUN DIALOG SUBROUTINE ---------------------------------------------------------------------------------
RunTheThing
'----- ACTIVATE TIME DELAY IF USED ---------------------------------------------------------------------------
If VarDelayInSec <> 0 Then COUNTDOWN
'----- CANCEL SCALE, FEEDRATE OVERRIDE, Z INHIBIT, AND CALC VARIABLES ----------------------------------------
SetParam("XScale",1.0) 'SET X SCALE TO 1.0
SetParam("YScale",1.0) 'SET Y SCALE TO 1.0
SetParam("ZScale",1.0) 'SET Z SCALE TO 1.0
SetParam("ZInhibitOn",0) 'TURN Z INHIBIT OFF
DoOemButton(1014) 'CANCEL FEED OVERRIDE
VarInitialZ = GetOemDRO(802) 'GET STARTING Z LOCATION
Var2ndDist = VarMaxDistance + VarSafetyGap 'CALCULATE 2ND PROBE MAX DISTANCE
VarSafetyRate = "F" &VarFeedRate * 2 'SETUP SAFETY POSITIONING FEEDRATE
If VarRateOrRapid = 0 Then VarLinearMode = "G1" Else VarLinearMode = "G0" 'SETUP LINEAR MODE
'----- RUN CHOSEN AXIS SUBROUTINE 0=X 1=Y -------------------------------------------------------------------
If VarWhichAxis = 0 Then RunXCenter Else RunYCenter
'----- REINSTATE ----- RUN END AUDIO ----- DISPLAY SPAN ------------------------------------------------------
RETURNSTATE 'CALL REINSTATE SUBROUTINE
Select Case VarCompleteAudio 'PLAY SELECTED END AUDIO
Case 1 'OPTION BEEP
Beep
Case 2 'OPTION SPEAK
Speak("Tool Zero Complete.")
Case 3 'OPTION WAV_AUDIO_FILE
PlayWave(VarWavAudioFile)
End Select
Sleep 500 'DELAY 1/2 SEC
12. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
Select Case VarWhichAxis 'DISPLAY SPECS FOR RELEVANT AXIS/AXES
Case 0 'X
Message VarStatusMsg &" X Span:" &VarSpanX 'STATUS MSG X
Case 1 'Y
Message VarStatusMsg &" Y Span:" &VarSpanY 'STATUS MSG Y
End Select
End 'SCRIPT RUN COMPLETE
'******************************************* SUBROUTINES BELOW ***********************************************
'----- SUBROUTINE FOR COUNTDOWN DELAY ------------------------------------------------------------------------
Sub COUNTDOWN
VarDelayInSec = Abs(VarDelayInSec)
Do Until VarDelayInSec = 0 'LOOP UNTIL SECONDS = ZERO
Message VarStatusMsg &" Delay: " &VarDelayInSec 'DISPLAY SECONDS VALUE IN STATUS LINE
If VarDelayInSec < VarSecOfAudio + 1 Then
Select Case VarBeepOrSpeak
Case 1 'OPTION BEEP
Beep
Case 2 'OPTION SPEAK
Speak(VarDelayInSec)
End Select
End If
Sleep 1000 'PAUSE 1 SEC.
VarDelayInSec = VarDelayInSec - 1 'REDUCE SECONDS BY 1 AFTER EACH LOOP
Loop
End Sub
'----- SUBROUTINE TO RETURN INITIAL SETTINGS -----------------------------------------------------------------
Sub RETURNSTATE
'REINSTATE INITIAL FEEDRATE
Code "F" &VarInitialFeedRate
'REINSTATE DISTANCE MODE 0=G91 -1=G90
If VarInitialDistMode = 0 Then Code "G91" Else Code "G90"
'REINSTATE LINEAR MODE 0=G00 1=G01
If VarInitialLinearMode = 0 Then Code "G00" Else Code "G01"
'REINSTATE Z INHIBIT STATUS 0=OFF 1=ON
If VarInitialInhibit = 1 Then SetParam("ZInhibitOn",1)
'SET X SCALE TO INITIAL VALUE
If VarInitialXScale <> 1.0 Then SetParam("XScale",VarInitialXScale)
'SET Y SCALE TO INITIAL VALUE
If VarInitialYScale <> 1.0 Then SetParam("YScale",VarInitialYScale)
'SET Z SCALE TO INITIAL VALUE
If VarInitialZScale <> 1.0 Then SetParam("ZScale",VarInitialZScale)
'SET FEEDRATE OVERRIDE TO INITIAL VALUE
If VarInitialFRO <> 100 Then SetOemDRO(821,VarInitialFRO)
End Sub
'----- DIALOG SUBROUTINE FOR SPAN LENGTH, AXIS CHOICE, AND TIME DELAY ----------------------------------------
Sub RunTheThing
Dim ApproxText$ (0) 'DECLARE 1 ITEM ARRAY FOR APPROXIMATE SPAN
ApproxText (0) = VarApproxSpan 'FILL ARRAY 1
Dim UnitList$ (0) 'DECLARE 1 ITEM ARRAY FOR UNIT LISTBOX
UnitList (0) = VarUnits 'FILL ARRAY 1
'SETUP DIALOG CONTROLS
13. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
Begin Dialog AxisSpanChoice 110,130,"Find Center (External)", .EnableIt
Text 25,1,100,30, "*** WARNING ***"
Text 7,11,115,15, "Z0 Must Be Above Obstacles!"
TextBox 15,32,35,10, ApproxText$(),.ApproxTxt
ListBox 64,32,25,10, UnitList$(),.Listbox1
GroupBox 8,22,95,57,"Set Approx. Span",.GroupBox1
OptionGroup .grp1
OptionButton 15, 45, 30, 10, "X Axis"
OptionButton 15, 55, 30, 10, "Y Axis"
OKButton 57,50,37,12, .OkBtn
CheckBox 19,67,70,10, "Rapid Positioning", .Check1
Text 18,83,100,15, "Delay"
TextBox 42,83,30,10, .SecText
Text 75,83,30,15, "Seconds"
Text 4,100,50,15, "Span Hold"
TextBox 42,100,30,10, .HoldText
Text 75,100,30,15, "Seconds"
Text 3,117,50,15, "Safety Gap"
TextBox 42,117,30,10, .GapTxt
End Dialog
Dim Dlg1 As AxisSpanChoice
Dlg1.grp1 = VarWhichAxis 'LOAD DEFAULT AXIS
Dlg1.ApproxTxt = VarApproxSpan 'LOAD APPROX SPAN TEXTBOX WITH DEFAULT VALUE
Dlg1.Check1 = VarRateOrRapid 'SET CHECKBOX TO DEFAULT
Dlg1.SecText = VarDelayInSec 'LOAD SECONDS TEXTBOX WITH DEFAULT VALUE
Dlg1.HoldText = VarSpanHold 'LOAD SPAN HOLD SECONDS WITH DEFAULT VALUE
Dlg1.GapTxt = Format(VarSafetyGap,"##0.000") 'LOAD SAFETY GAP
Message VarStatusMsg 'SHOW STATUS MESSAGE OF PROBE/GAGE
Button = Dialog (Dlg1) 'SHOW DIALOG AND WAIT FOR BUTTON REPLY
If Button = 0 Then 'IF CLOSE BUTTON
Message "Find Center CANCELED" 'DISPLAY MESSAGE
End 'END SCRIPT
End If
'CHECK THAT APPROX SPAN WAS ENTERED NUMERIC
If IsNumeric(Dlg1.ApproxTxt) = False Then
MachMsg("***** APPROXIMATE SPAN MUST BE ENTERED IN NUMERIC FORMAT! *****", _
" Substance Abuse Is Not Recommended ",0)
RunTheThing 'RESTART SUB
End If
'CHECK THAT SECONDS WAS ENTERED NUMERIC
If IsNumeric(Dlg1.SecText) = True Then
VarDelayInSec = Int(Dlg1.SecText)
Else
MachMsg("***** SECONDS MUST BE ENTERED IN NUMERIC FORMAT! *****", _
" Stronger Coffee Is Recommended ",0)
RunTheThing 'RESTART SUB
End If
'CHECK THAT HOLD SECONDS WAS ENTERED NUMERIC
If IsNumeric(Dlg1.HoldText) = True Then
VarSpanHold = Int(Dlg1.HoldText)
Else
MachMsg("***** SECONDS MUST BE ENTERED IN NUMERIC FORMAT! *****", _
" Substance Abuse Is Not Recommended ",0)
RunTheThing 'RESTART SUB
End If
VarApproxSpan = Dlg1.ApproxTxt 'APPROXIMATE SPAN
VarWhichAxis = Dlg1.grp1 'AXIS OPTION CHOICE 0=X 1=Y
VarRateOrRapid = Dlg1.Check1 'POSITIONING MODE 0=SAFETYRATE 1=RAPID
14. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
VarSafetyGap = Dlg1.GapTxt 'SAFETY GAP
'CHECK THAT SPAN IS NOT ENTERED AS ZERO
If VarApproxSpan = 0 Then
MachMsg("***** SPAN CANNOT BE ZERO *****", _
"Stronger Coffee Is Recommended",0)
RunTheThing 'RESTART SUB
End If
End Sub
'----- DIALOG FUNCTION TO ENABLE/DISABLE CONTROLS ------------------------------------------------------------
Function EnableIt( ControlID$, Action%, SuppValue%)
Select Case Action%
Case 1 'SETTINGS FOR DIALOG START
If VarApproxSpan = 0 Then DlgEnable "OkBtn",0 Else DlgEnable "OkBtn",1
Case 3 'SETTINGS IF TEXTBOX CONTENT CHANGES
If ControlID$ = "ApproxTxt" Then
If SuppValue% = 0 Then DlgEnable "OkBtn",0 Else DlgEnable "OkBtn",1
End If
End Select
End Function
'----- X AXIS SUBROUTINE -------------------------------------------------------------------------------------
Sub RunXCenter
SetOemDRO(800,0) 'ZERO X AXIS DRO
Sleep 200 'DELAY TO ALLOW DRO TO CHANGE
Message VarStatusMsg &" X Center Running..."
Code "G90 G31 X" &VarMaxDistance &"F" &VarFeedRate 'MOVE IN X POS DIRECTION
While IsMoving() 'WAIT UNTIL MOVE IS COMPLETE BEFORE PROCEEDING
Wend
If GetVar(2000) >= (VarMaxDistance - .001) Then 'GET CONTACT POSITION AND TEST FOR MAX TRAVEL
MachMsg("Maximum Travel Reached. Reposition X Axis Closer To Part And Try Again!","*** OOPS! ***",0)
Message ""
RETURNSTATE 'CALL REINSTATE SUBROUTINE
End
Else
Beep
Code "G90 G0 X" &GetVar(2000) 'MOVE TO CONTACT POINT DUE TO OVERRUN
While IsMoving()
Wend
SetOemDRO(800,0) 'ZERO X AXIS DRO
Sleep 200
Code "G90" &VarLinearMode &"X-" &VarStandOff &VarSafetyRate 'MOVE TO X- STANDOFF
While IsMoving ()
Wend
End If
Code "G90" &VarLinearMode &"Z" &VarStandOff &VarSafetyRate 'MOVE TO Z STANDOFF
While IsMoving ()
Wend
VarSpanLocation = (VarSafetyGap+VarProbeDia+(VarGageThick*2)+CDbl(VarApproxSpan)) 'CALC SPAN LOCATION
Code "G90" &VarLinearMode &"X" &VarSpanLocation &VarSafetyRate 'MOVE TO SPAN LOCATION
While IsMoving ()
Wend
VarSpanDro = GetOemDRO(800) - Var2ndDist 'CAPTURE SPAN LOCATION DRO AND CALC SPAN2
VarDelayInSec = VarSpanHold 'SAFETY DELAY
COUNTDOWN 'CALL COUNTDOWN SUBROUTINE
Message VarStatusMsg &" X Center Continuing..."
Code "G90" &VarLinearMode &"Z" &VarInitialZ &VarSafetyRate 'MOVE DOWN TO PREVIOUS Z LOCATION
While IsMoving() 'WAIT UNTIL MOVE IS COMPLETE BEFORE PROCEEDING
Wend
Code "G91 G31 X-" &Var2ndDist &"F" &VarFeedRate 'MOVE IN X NEG DIRECTION
While IsMoving() 'WAIT UNTIL MOVE IS COMPLETE BEFORE PROCEEDING
Wend
Beep
15. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
If GetVar(2000) <= (VarSpanDro + .001) Then 'GET CONTACT POSITION AND TEST FOR MAX TRAVEL
MachMsg("Maximum Travel Reached. Reposition And Try Again!","*** OOPS! ***",0)
Message "Find Center CANCELED" 'DISPLAY MESSAGE
End 'END SCRIPT
End If
Code "G90 G0 X" &GetVar(2000) 'MOVE TO CONTACT POINT DUE TO OVERRUN
While IsMoving()
Wend
VarSpanHit = GetVar(2000)/2 'CALCULATE CENTER X LOCATION
VarSpanCalc = GetVar(2000) 'GET SPAN HIT DISTANCE FOR STATUS
Code "G91" &VarLinearMode &"X+" &VarStandOff &VarSafetyRate 'MOVE TO X+ STANDOFF
While IsMoving()
Wend
Code "G90" &VarLinearMode &"Z" &VarStandOff &VarSafetyRate 'MOVE TO Z STANDOFF
While IsMoving()
Wend
Code "G90" &VarLinearMode &"X" &VarSpanHit &VarSafetyRate 'MOVE TO X CENTER
While IsMoving()
Wend
Select Case GetParam("Units") 'SET INFORMATION FOR STATUS LINE DISPLAY
Case 0 'MM
VarSpanX = Format(VarSpanCalc-VarProbeDia-(VarGageThick*2),"###0.000") 'CALCULATE SPAN FOR STATUS
Case 1 'INCH
VarSpanX = Format(VarSpanCalc-VarProbeDia-(VarGageThick*2),"##0.0000") 'CALCULATE SPAN FOR STATUS
End Select
SetOemDRO(800,0) 'ZERO X AXIS DRO
Sleep 200
End Sub
'----- Y AXIS SUBROUTINE -------------------------------------------------------------------------------------
Sub RunYCenter
SetOemDRO(801,0) 'ZERO Y AXIS DRO
Sleep 200 'DELAY TO ALLOW DRO TO CHANGE
Message VarStatusMsg &" Y Center Running..."
Code "G90 G31 Y" &VarMaxDistance &"F" &VarFeedRate 'MOVE IN Y POS DIRECTION
While IsMoving() 'WAIT UNTIL MOVE IS COMPLETE BEFORE PROCEEDING
Wend
If GetVar(2001) >= (VarMaxDistance - .001) Then 'GET CONTACT POSITION AND TEST FOR MAX TRAVEL
MachMsg("Maximum Travel Reached. Reposition Y Axis Closer To Part And Try Again!","*** OOPS! ***",0)
Message ""
RETURNSTATE 'CALL REINSTATE SUBROUTINE
End
Else
Beep
Code "G90 G0 Y" &GetVar(2001) 'MOVE TO CONTACT POINT DUE TO OVERRUN
While IsMoving()
Wend
SetOemDRO(801,0) 'ZERO Y AXIS DRO
Sleep 200
Code "G90" &VarLinearMode &"Y-" &VarStandOff &VarSafetyRate 'MOVE TO Y- STANDOFF
While IsMoving ()
Wend
End If
Code "G90" &VarLinearMode &"Z" &VarStandOff &VarSafetyRate 'MOVE TO Z STANDOFF
While IsMoving ()
Wend
VarSpanLocation = (VarSafetyGap+VarProbeDia+(VarGageThick*2)+CDbl(VarApproxSpan)) 'CALC SPAN LOCATION
Code "G90" &VarLinearMode &"Y" &VarSpanLocation &VarSafetyRate 'MOVE TO SPAN LOCATION
While IsMoving ()
Wend
VarSpanDro = GetOemDRO(801) - Var2ndDist 'CAPTURE SPAN LOCATION DRO AND CALC SPAN2
VarDelayInSec = VarSpanHold 'SAFETY DELAY
COUNTDOWN 'CALL COUNTDOWN SUBROUTINE
Message VarStatusMsg &" Y Center Continuing..."
16. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
Code "G90" &VarLinearMode &"Z" &VarInitialZ &VarSafetyRate 'MOVE DOWN TO PREVIOUS Z LOCATION
While IsMoving() 'WAIT UNTIL MOVE IS COMPLETE BEFORE PROCEEDING
Wend
Code "G91 G31 Y-" &Var2ndDist &"F" &VarFeedRate 'MOVE IN Y NEG DIRECTION
While IsMoving() 'WAIT UNTIL MOVE IS COMPLETE BEFORE PROCEEDING
Wend
Beep
If GetVar(2001) <= (VarSpanDro + .001) Then 'GET CONTACT POSITION AND TEST FOR MAX TRAVEL
MachMsg("Maximum Travel Reached. Reposition And Try Again!","*** OOPS! ***",0)
Message "Find Center CANCELED" 'DISPLAY MESSAGE
End 'END SCRIPT
End If
Code "G90 G0 Y" &GetVar(2001) 'MOVE TO CONTACT POINT DUE TO OVERRUN
While IsMoving()
Wend
VarSpanHit = GetVar(2001)/2 'CALCULATE CENTER Y LOCATION
VarSpanCalc = GetVar(2001) 'GET SPAN HIT DISTANCE FOR STATUS
Code "G91" &VarLinearMode &"Y+" &VarStandOff &VarSafetyRate 'MOVE TO Y+ STANDOFF
While IsMoving()
Wend
Code "G90" &VarLinearMode &"Z" &VarStandOff &VarSafetyRate 'MOVE TO Z STANDOFF
While IsMoving()
Wend
Code "G90" &VarLinearMode &"Y" &VarSpanHit &VarSafetyRate 'MOVE TO Y CENTER
While IsMoving()
Wend
Select Case GetParam("Units") 'SET INFORMATION FOR STATUS LINE DISPLAY
Case 0 'MM
VarSpanY = Format(VarSpanCalc-VarProbeDia-(VarGageThick*2)," ###0.000") 'CALCULATE SPAN FOR STATUS
Case 1 'INCH
VarSpanY = Format(VarSpanCalc-VarProbeDia-(VarGageThick*2)," ##0.0000") 'CALCULATE SPAN FOR STATUS
End Select
SetOemDRO(801,0) 'ZERO Y AXIS DRO
Sleep 200
End Sub
'*************************************************************************************************************
17. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
CENTER_INTERNAL_SCRIPT_REV12.txt
'*************************************************************************************************************
'************************************ FIND X/Y CENTER (INTERNAL) **************************************
'************************************ A TOUCH SCRIPT FOR MACH3 **************************************
'******FONT************************** FOR BOTH INCH AND MM UNITS **************************************
'*********Courier******************** CHARLIE SARSFIELD REV12 JUN/2018 **************************************
'************************************ WWW.YOUTUBE.COM/SUNNY5RISING **************************************
'************************************ SUNNY5RISE@GMAIL.COM ****************************** ********
'*************************************************************************************************************
'***************** NOTES BEFORE LAUNCHING: *******************
'***************** Z AXIS OF PROBE MUST BE PLACED BELOW TOP SURFACE. *******************
'***************** TO USE DEFAULT PROBE & GAGE VALUES, SET RELEVANT DRO(S) TO ZERO *******************
'***************** TO USE A GAGE VALUE OF ZERO, ENTER A NEGATIVE VALUE IN THICKNESS DRO *******************
'*************************************************************************************************************
'----- USER VARIABLES ----------------------------------------------------------------------------------------
If GetParam("Units") = 0 Then
'METRIC VALUES
VarUnits = " MM"
VarMaxXDistance = 147.32 'X-AXIS MAX TRAVEL BEFORE ALARM
VarMaxYDistance = 223.52 'Y-AXIS MAX TRAVEL BEFORE ALARM
VarFeedRate = 127 'MM/MIN APPROACH FEEDRATE
VarProbeDia = 3.175 'DEFAULT PROBE DIAMETER | EDGE FINDER DIA. DRO PRECEDENCE
VarGageThick = 0 'DEFAULT GAGE THICKNESS | GAGE THICKNESS DRO PRECEDENCE
Else
'SAE VALUES
VarUnits = " INCH"
VarMaxXDistance = 5.8 'X-AXIS MAX TRAVEL BEFORE ALARM
VarMaxYDistance = 8.8 'Y-AXIS MAX TRAVEL BEFORE ALARM
VarFeedRate = 5 'INCH/MIN APPROACH FEEDRATE
VarProbeDia = 0.125 'DEFAULT PROBE DIAMETER | EDGE FINDER DIA. DRO PRECEDENCE
VarGageThick = 0 'DEFAULT GAGE THICKNESS | GAGE THICKNESS DRO PRECEDENCE
End If
VarRateOrRapid = 1 'DEFAULT POSITIONING MOVEMENT: 0=SAFETY RATE (FEEDRATE * 2) 1=RAPID
VarWhichAxis = 0 'DEFAULT AXIS CHOICE: 0=BOTH 1=X 2=Y
VarAxisFlip = 0 'DEFAULT SWITCH AXIS ORDER FOR "BOTH" (X/Y TO Y/X) 0=NO 1=YES
VarIsCircle = 0 'DEFAULT "IS CIRCLE" (RUN TWICE FOR ROUND HOLES) 0=OFF 1=ON
VarDelayInSec = 0 'DEFAULT SECONDS TO DELAY MOTION
VarBeepOrSpeak = 2 'COUNTDOWN AUDIO: 0=NONE 1=BEEP 2=SPEAK
VarSecOfAudio = 5 'COUNTDOWN SECOND AT WHICH AUDIO BEGINS
VarCompleteAudio = 3 'END SIGNAL: 0=NONE 1=BEEP 2=SPEAK 3=WAV_AUDIO_FILE
VarWavAudioFile = "C:MACH3ToolCompleteSND1.wav" 'AUDIO FILE & PATH
'*************************************************************************************************************
'*************************************************************************************************************
'----- GET INITIAL ENVIRONMENT SETTINGS FOR LATER REINSTATEMENT ----------------------------------------------
VarInitialLinearMode = GetOemDRO(819) 'LINEAR MODE G00/G01
VarInitialDistMode = GetOemLED(48) 'DISTANCE MODE G90/G91
VarInitialFeedRate = GetOemDRO(818) 'FEEDRATE
VarInitialInhibit = GetParam("ZInhibitOn") 'Z INHIBIT STATUS OFF/ON
VarInitialXScale = GetParam("XScale") 'X SCALE VALUE
VarInitialYScale = GetParam("YScale") 'Y SCALE VALUE
VarInitialFRO = GetOemDRO(821) 'FEEDRATE OVERRIDE PERCENTAGE
Message "" 'CLEAR STATUS LINE TEXT
'----- CHECK DIGITIZE STATE; 0=CLEAR 1=ACTIVE ----------------------------------------------------------------
If GetOemLED (825) <> 0 Then
MachMsg("Digitize Status Not Clear. Check Probe/Connections And Try Again!","*** ERROR! ***",0)
End 'END SCRIPT
End If
18. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
'----- RETRIEVE PROBE DIAMETER AND GAGE THICKNESS ------------------------------------------------------------
If VarProbeDia = 0 And GetOEMDRO(1000) = 0 Then
MachMsg("Coffee First, Then Provide Probe Diameter And Try Again.","*** ERROR! ***",0)
Message "Center Find CANCELED" 'DISPLAY MESSAGE
End 'END SCRIPT
Else
If GetOEMDRO(1000) <> 0 Then VarProbeDia = Abs(GetOEMDRO(1000)) 'CHECK AND GET FINDER DIA DRO VALUE IF USED
End If
If GetOEMDRO(1001) <> 0 Then 'CHECK FOR GAGE THICKNESS VALUE
Select Case InStr(1,GetOEMDRO(1001),"-") 'CHECK IF NEGATIVE IS USED
Case 0 'NEG NOT PRESENT
VarGageThick = Abs(GetOEMDRO(1001)) 'SET GAGE THICKNESS TO DRO VALUE
Case 1 'NEG IS PRESENT
VarGageThick = 0 'SET GAGE THICKNESS TO ZERO
End Select
End If
Select Case GetParam("Units") 'SET UNITS FOR STATUS LINE DISPLAY
Case 0 'MM
VarMsgUnits = "mm"
Case 1 'INCH
VarMsgUnits = "in"
End Select
'FORMAT STATUS LINE TEXT
VarStatusMsg = "Probe: " &VarProbeDia &VarMsgUnits &" Gage: " &VarGageThick &VarMsgUnits
'----- RUN DIALOG SUBROUTINE ---------------------------------------------------------------------------------
RunTheThing
'----- ACTIVATE TIME DELAY IF USED ---------------------------------------------------------------------------
If VarDelayInSec <> 0 Then COUNTDOWN
'----- CANCEL SCALE, FEEDRATE OVERRIDE, Z INHIBIT ------------------------------------------------------------
SetParam("XScale",1.0) 'SET X SCALE TO 1.0
SetParam("YScale",1.0) 'SET Y SCALE TO 1.0
SetParam("ZInhibitOn",0) 'TURN Z INHIBIT OFF
DoOemButton(1014) 'CANCEL FEED OVERRIDE
'----- SET POSITIONING SETTINGS ------------------------------------------------------------------------------
VarSafetyRate = "F" &VarFeedRate * 2 'SETUP SAFETY POSITIONING FEEDRATE
If VarRateOrRapid = 0 Then VarLinearMode = "G1" Else VarLinearMode = "G0" 'SETUP LINEAR MODE
'----- CALL SUBROUTINES BASED ON DIALOG SELECTION ------------------------------------------------------------
Select Case VarWhichAxis
Case 0 'BOTH
If VarAxisFlip = 0 Then 'RUN X/Y
RunXCenter
RunYCenter
If VarIsCircle = 1 Then RunXCenter : RunYCenter 'RUN SET AGAIN
Else 'RUN Y/X
RunYCenter
RunXCenter
If VarIsCircle = 1 Then RunYCenter : RunXCenter 'RUN SET AGAIN
End If
Case 1 'X
RunXCenter
Case 2 'Y
RunYCenter
End Select
'----- REINSTATE ----- RUN END AUDIO ----- DISPLAY SPAN -----------------------------------------------------
RETURNSTATE 'CALL REINSTATE SUBROUTINE
Select Case VarCompleteAudio 'PLAY SELECTED END AUDIO
19. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
Case 1 'OPTION BEEP
Beep
Case 2 'OPTION SPEAK
Speak("Tool Zero Complete.")
Case 3 'OPTION WAV_AUDIO_FILE
PlayWave(VarWavAudioFile)
End Select
Sleep 500 'DELAY 1/2 SEC
Select Case VarWhichAxis 'DISPLAY SPECS FOR RELEVANT AXIS/AXES
Case 0 'BOTH
Select Case GetParam("Units") 'SET INFORMATION FOR STATUS LINE DISPLAY
Case 0 'MM
VarSpanDia = Format((CDbl(VarSpanX) + CDbl(VarSpanY))/2,"##0.000") 'CALCULATE MM DIAMETER
VarSpanDiff = Format(CDbl(VarSpanX) - CDbl(VarSpanY),"##0.000") 'CALCULATE SPAN DIFFERENCE
Case 1 'INCH
VarSpanDia = Format((CDbl(VarSpanX) + CDbl(VarSpanY))/2,"##0.0000") 'CALCULATE INCH DIAMETER
VarSpanDiff = Format(CDbl(VarSpanX) - CDbl(VarSpanY),"##0.0000") 'CALCULATE SPAN DIFFERENCE
End Select
If VarIsCircle = 1 Then
Message VarStatusMsg &" Diameter: " &VarSpanDia &" Diff: " &Abs(VarSpanDiff) 'STATUS MSG CIRCLE
Else
Message VarStatusMsg &" X Span:" &VarSpanX &" Y Span:" &VarSpanY 'STATUS MSG X/Y OR Y/X
End If
Case 1 'X
Message VarStatusMsg &" X Span:" &VarSpanX 'STATUS MSG X
Case 2 'Y
Message VarStatusMsg &" Y Span:" &VarSpanY 'STATUS MSG Y
End Select
End 'SCRIPT RUN COMPLETE
'******************************************* SUBROUTINES BELOW ***********************************************
'----- DIALOG SUBROUTINE FOR AXIS CHOICE ---------------------------------------------------------------------
Sub RunTheThing
Dim UnitList$ (0) 'DECLARE 1 ITEM ARRAY FOR UNIT LISTBOX
UnitList (0) = VarUnits 'FILL ARRAY 1
'SETUP DIALOG CONTROLS
Begin Dialog AxisChoice 110,71,"Find Center (Internal)", .EnableIt
ListBox 63,23,25,10, UnitList$(),.Listbox1
GroupBox 8,5,95,53,"Choose Axis",.GroupBox1
OptionGroup .grp1
OptionButton 15, 12, 38, 10, "X / Y ----",.Opt0
OptionButton 15, 22, 30, 10, "X Axis",.Opt1
OptionButton 15, 32, 30, 10, "Y Axis",.Opt2
CheckBox 1,13,7,7,"",. Chk1
CheckBox 58,13,37,9, "Is Circle", .Chk2
Text 24.3,13,30,10,"Y / X ----",.txt1
OKButton 56,34,37,12
Text 13,59,100,15, "Delay"
TextBox 36,59,30,10, .SecText
Text 70,59,30,15, "Seconds"
CheckBox 19,47,70,10, "Rapid Positioning", .Check1
End Dialog
Dim Dlg1 As AxisChoice
'SET DIALOG CONTROLS BASED ON DEFAULT OPTION SETTINGS
Dlg1.grp1 = VarWhichAxis 'DEFAULT AXIS
Dlg1.Chk2 = VarIsCircle 'DEFAULT "IS CIRCLE" STATE
Dlg1.Check1 = VarRateOrRapid 'DEFAULT "RATE/RAPID" STATE
Dlg1.SecText = VarDelayInSec 'FILL SECONDS TEXTBOX WITH DEFAULT VALUE
Dlg1.Chk1 = VarAxisFlip 'DEFAULT "AXIS FLIP" STATE
Message VarStatusMsg 'SHOW STATUS MESSAGE OF PROBE/GAGE
20. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
Button = Dialog (Dlg1) 'SHOW DIALOG AND WAIT FOR BUTTON REPLY
If Button = 0 Then 'IF CLOSE BUTTON
Message "Find Center CANCELED"'DISPLAY MESSAGE
End 'END SCRIPT
End If
'CHECK THAT SECONDS WAS ENTERED NUMERIC
If IsNumeric(Dlg1.SecText) = True Then
VarDelayInSec = Int(Dlg1.SecText)
Else
MachMsg("***** SECONDS MUST BE ENTERED IN NUMERIC FORMAT! *****", _
" Stronger Coffee Is Recommended ",0)
RunTheThing 'RESTART SUB
End If
VarWhichAxis = Dlg1.grp1 'GET AXIS OPTION CHOICE 0=BOTH 1=X 2=Y
VarAxisFlip = Dlg1.Chk1 'GET AXIS FLIP CHOICE
VarIsCircle = Dlg1.Chk2 'GET IS CIRCLE OPTION
VarRateOrRapid = Dlg1.Check1 'GET POSITIONING MODE 0=SAFETYRATE 1=RAPID
End Sub
'----- DIALOG FUNCTION TO ENABLE/DISABLE CONTROLS ------------------------------------------------------------
Function EnableIt( ControlID$, Action%, SuppValue%)
Select Case Action%
Case 1 'SETTINGS FOR DIALOG START
If VarWhichAxis = 0 Then DlgEnable "Chk2",1 Else DlgEnable "Chk2",0
If VarWhichAxis = 0 Then DlgEnable "Chk1",1 Else DlgEnable "Chk1",0
If VarAxisFlip = 1 Then DlgVisible "txt1",1 Else DlgVisible "txt1",0
Case 2 'TOGGLE SETTINGS BASED ON WHICH CONTROL IS CLICKED
If ControlID$ = "Opt0" Then DlgEnable "Chk1",1 : DlgEnable "Chk2",1
If ControlID$ = "Opt1" Then DlgEnable "Chk1",0 : DlgEnable "Chk2",0
If ControlID$ = "Opt2" Then DlgEnable "Chk1",0 : DlgEnable "Chk2",0
If ControlID$ = "Chk1" Then DlgVisible "txt1"
End Select
End Function
'----- SUBROUTINE FOR COUNTDOWN DELAY ------------------------------------------------------------------------
Sub COUNTDOWN
VarDelayInSec = Abs(VarDelayInSec)
Do Until VarDelayInSec = 0 'LOOP UNTIL SECONDS = ZERO
Message VarStatusMsg &" Delay: " &VarDelayInSec 'DISPLAY SECONDS VALUE IN STATUS LINE
If VarDelayInSec < VarSecOfAudio + 1 Then
Select Case VarBeepOrSpeak
Case 1 'OPTION BEEP
Beep
Case 2 'OPTION SPEAK
Speak(VarDelayInSec)
End Select
End If
Sleep 1000 'PAUSE 1 SEC.
VarDelayInSec = VarDelayInSec - 1 'REDUCE SECONDS BY 1 AFTER EACH LOOP
Loop
End Sub
'----- SUBROUTINE TO RETURN INITIAL SETTINGS -----------------------------------------------------------------
Sub RETURNSTATE
'REINSTATE INITIAL FEEDRATE
Code "F" &VarInitialFeedRate
'REINSTATE DISTANCE MODE 0=G91 -1=G90
If VarInitialDistMode = 0 Then Code "G91" Else Code "G90"
'REINSTATE LINEAR MODE 0=G00 1=G01
21. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
If VarInitialLinearMode = 0 Then Code "G00" Else Code "G01"
'REINSTATE Z INHIBIT STATUS 0=OFF 1=ON
If VarInitialInhibit = 1 Then SetParam("ZInhibitOn",1)
'SET X SCALE TO INITIAL VALUE
If VarInitialXScale <> 1.0 Then SetParam("XScale",VarInitialXScal e)
'SET Y SCALE TO INITIAL VALUE
If VarInitialYScale <> 1.0 Then SetParam("YScale",VarInitialYScale)
'SET FEEDRATE OVERRIDE TO INITIAL VALUE
If VarInitialFRO <> 100 Then SetOemDRO(821,VarInitialFRO)
End Sub
'----- X AXIS SUBROUTINE -------------------------------------------------------------------------------------
Sub RunXCenter
'----- MOVE PROBE TOWARD CONTACT
SetOemDRO(800,0) 'ZERO X AXIS DRO
Sleep 200 'DELAY TO ALLOW DRO TO CHANGE
Message VarStatusMsg &" X Center Running..."
Code "G90 G31 X" &VarMaxXDistance &"F" &VarFeedRate 'MOVE IN X POS DIRECTION
While IsMoving() 'WAIT UNTIL MOVE IS COMPLETE BEFORE PROCEEDING
Wend
If GetVar(2000) >= (VarMaxXDistance - .001) Then 'TEST FOR MAX TRAVEL
MachMsg("Maximum Travel Reached. Reposition X Axis Closer To Part And Try Again!","*** OOPS! ***",0)
Message ""
RETURNSTATE 'CALL REINSTATE SUBROUTINE
End 'END SCRIPT
Else
Beep
Code "G90 G0 X" &GetVar(2000) 'MOVE TO CONTACT POINT DUE TO OVERRUN
While IsMoving()
Wend
VarXPosPosition = GetVar(2000) 'CAPTURE X POSITIVE HIT
Code "G90" &VarLinearMode &"X0" &VarSafetyRate 'MOVE TO START POINT
While IsMoving ()
Wend
Code "G91 G31 X-" &VarMaxXDistance &"F" &VarFeedRate 'MOVE IN X NEG DIRECTION
While IsMoving() 'WAIT UNTIL MOVE IS COMPLETE BEFORE PROCEEDING
Wend
Beep
Code "G90 G0 X" &GetVar(2000) 'MOVE TO CONTACT POINT DUE TO OVERRUN
While IsMoving()
Wend
VarXNegPosition = GetVar(2000) 'CAPTURE X NEGATIVE HIT
SetOemDRO(800,0) 'ZERO X AXIS DRO
Sleep 200 'DELAY TO ALLOW DRO TO CHANGE
VarSubt = (VarXPosPosition - VarXNegPosition)/2 'CALCULATE CENTER
Code "G90" &VarLinearMode &"X" &VarSubt &VarSafetyRate 'MOVE TO CENTER
While IsMoving()
Wend
Select Case GetParam("Units") 'SET INFORMATION FOR STATUS LINE DISPLAY
Case 0 'MM
VarSpanX = Format(VarProbeDia+(VarGageThick*2)+(VarXPosPosition-VarXNegPosition),"##0.000") 'CALC SPAN
Case 1 'INCH
VarSpanX = Format(VarProbeDia+(VarGageThick*2)+(VarXPosPosition-VarXNegPosition),"##0.0000") 'CALC SPAN
End Select
SetOemDRO(800,0) 'ZERO X AXIS DRO
Sleep 200 'DELAY TO ALLOW DRO TO CHANGE
End If
End Sub
'----- Y AXIS SUBROUTINE -------------------------------------------------------------------------------------
22. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
Sub RunYCenter
'----- MOVE PROBE TOWARD CONTACT
SetOemDRO(801,0) 'ZERO Y AXIS DRO
Sleep 200 'DELAY TO ALLOW DRO TO CHANGE
Message VarStatusMsg &" Y Center Running..."
Code "G90 G31 Y" &VarMaxYDistance &"F" &VarFeedRate 'MOVE IN Y POS DIRECTION
While IsMoving() 'WAIT UNTIL MOVE IS COMPLETE BEFORE PROCEEDING
Wend
If GetVar(2001) >= (VarMaxYDistance - .001) Then 'TEST FOR MAX TRAVEL
MachMsg("Maximum Travel Reached. Reposition Y Axis Closer To Part And Try Again!","*** OOPS! ***",0)
Message ""
RETURNSTATE 'CALL REINSTATE SUBROUTINE
End 'END SCRIPT
Else
Beep
Code "G90 G0 Y" &GetVar(2001) 'MOVE TO CONTACT POINT DUE TO OVERRUN
While IsMoving()
Wend
VarYPosPosition = GetVar(2001) 'CAPTURE Y POSITIVE HIT
Code "G90" &VarLinearMode &"Y0" &VarSafetyRate 'MOVE TO START POINT
While IsMoving ()
Wend
Code "G91 G31 Y-" &VarMaxYDistance &"F" &VarFeedRate 'MOVE IN Y NEG DIRECTION
While IsMoving() 'WAIT UNTIL MOVE IS COMPLETE BEFORE PROCEEDING
Wend
Beep
Code "G90 G0 Y" &GetVar(2001) 'MOVE TO CONTACT POINT DUE TO OVERRUN
While IsMoving()
Wend
VarYNegPosition = GetVar(2001) 'CAPTURE Y NEGATIVE HIT
SetOemDRO(801,0) 'ZERO Y AXIS DRO
Sleep 200 'DELAY TO ALLOW DRO TO CHANGE
VarSubt = (VarYPosPosition - VarYNegPosition)/2 'CALCULATE CENTER
Code "G90" &VarLinearMode &"Y" &VarSubt &VarSafetyRate 'MOVE TO CENTER
While IsMoving()
Wend
Select Case GetParam("Units") 'SET INFORMATION FOR STATUS LINE DISPLAY
Case 0 'MM
VarSpanY = Format(VarProbeDia+(VarGageThick*2)+(VarYPosPosition-VarYNegPosition)," ###0.000") 'CALC SPAN
Case 1 'INCH
VarSpanY = Format(VarProbeDia+(VarGageThick*2)+(VarYPosPosition-VarYNegPosition)," ##0.0000") 'CALC SPAN
End Select
SetOemDRO(801,0) 'ZERO Y AXIS DRO
Sleep 200 'DELAY TO ALLOW DRO TO CHANGE
End If
End Sub
'*************************************************************************************************************
23. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
X_NEGATIVE_SCRIPT_REV9.txt
'*************************************************************************************************** **********
'******************************* X AXIS (NEGATIVE SIDE) TOUCH SCRIPT FOR MACH3 *****************************
'******FONT********************** FOR BOTH INCH AND MM UNITS ******************************
'*********Courier***************** CHARLIE SARSFIELD REV9 MAY/2018 *******************************
'********************************** WWW.YOUTUBE.COM/SUNNY5RISING ********************************
'*********************************** SUNNY5RISE@GMAIL.COM **********************************
'*************************************************************************************************************
'***************** NOTES: *******************
'***************** TO USE DEFAULT PROBE & GAGE VALUES, SET RELEVANT DRO(S) TO ZERO *******************
'***************** TO USE A GAGE VALUE OF ZERO, ENTER A NEGATIVE VALUE IN THICKNESS DRO *******************
'*************************************************************************************************************
'----- USER VARIABLES FOR DISTANCES, FEED RATES, AND OPTIONS -------------------------------------------------
If GetParam("Units") = 0 Then
'METRIC VALUES
VarMaxDistance = 25.4 'MAX TRAVEL
VarFeedRate = 127 'MM/MIN APPROACH FEEDRATE
VarStandOff = 1.27 'STANDOFF DISTANCE
VarProbeDia = 3.175 'DEFAULT PROBE DIAMETER | EDGE FINDER DIA. DRO PRECEDENCE
VarGageThick = 0.091 'DEFAULT GAGE THICKNESS | GAGE THICKNESS DRO PRECEDENCE
Else
'SAE VALUES
VarMaxDistance = 1.0 'MAX TRAVEL
VarFeedRate = 5 'INCH/MIN APPROACH FEEDRATE
VarStandOff = 0.05 'STANDOFF DISTANCE
VarProbeDia = 0.125 'DEFAULT PROBE DIAMETER | EDGE FINDER DIA. DRO PRECEDENCE
VarGageThick = 0.0036 'DEFAULT GAGE THICKNESS | GAGE THICKNESS DRO PRECEDENCE
End If
VarDelayInSec = 0 'DEFAULT SECONDS TO DELAY MOTION
VarBeepOrSpeak = 2 'COUNTDOWN AUDIO: 0=NONE 1=BEEP 2=SPEAK
VarSecOfAudio = 5 'SECOND AT WHICH AUDIO BEGINS
VarCompleteAudio = 3 'END SIGNAL: 0=NONE 1=Beep 2=SPEAK 3=WAV_AUDIO_FILE
VarWavAudioFile = "C:MACH3ToolCompleteSND1.wav" 'AUDIO FILE & PATH
'*************************************************************************************************************
'*************************************************************************************************************
'----- GET INITIAL ENVIRONMENT SETTINGS FOR LATER REINSTATEMENT ----------------------------------------------
VarInitialDistMode = GetOemLED(48) 'DISTANCE MODE G90/G91
VarInitialLinearMode = GetOemDRO(819) 'LINEAR MODE G00/G01
VarInitialFeedRate = GetOemDRO(818) 'FEEDRATE
VarInitialInhibit = GetParam("ZInhibitOn") 'Z INHIBIT STATUS OFF/ON
VarInitialXScale = GetParam("XScale") 'X SCALE VALUE
VarInitialFRO = GetOemDRO(821) 'FEEDRATE OVERRIDE PERCENTAGE
Message "" 'CLEAR STATUS LINE TEXT
'----- CHECK DIGITIZE STATE; 0=CLEAR 1=ACTIVE ----------------------------------------------------------------
If GetOemLED (825) <> 0 Then
MachMsg("Digitize Status Not Clear. Check Probe/Connections And Try Again!","*** ERROR! ***",0)
Message "Edge Find CANCELED" 'DISPLAY MESSAGE
End 'END SCRIPT
End If
'----- RETRIEVE PROBE DIAMETER AND GAGE THICKNESS ------------------------------------------------------------
If VarProbeDia = 0 And GetOEMDRO(1000) = 0 Then
MachMsg("Coffee First, Then Provide Probe Diameter And Try Again.","*** ERROR! ***",0)
Message "Edge Find CANCELED" 'DISPLAY MESSAGE
Sleep 2000 : Message ""
End 'END SCRIPT
Else
24. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
If GetOEMDRO(1000) <> 0 Then VarProbeDia = Abs(GetOEMDRO(1000)) 'CHECK AND GET FINDER DIA DRO VALUE IF USED
End If
If GetOEMDRO(1001) <> 0 Then 'CHECK FOR GAGE THICKNESS VALUE
Select Case InStr(1,GetOEMDRO(1001),"-") 'CHECK IF NEGATIVE IS USED
Case 0 'NEG NOT PRESENT
VarGageThick = Abs(GetOEMDRO(1001)) 'SET GAGE THICKNESS TO DRO VALUE
Case 1 'NEG IS PRESENT
VarGageThick = 0 'SET GAGE THICKNESS TO ZERO
End Select
End If
Select Case GetParam("Units") 'SET UNITS FOR STATUS LINE DISPLAY
Case 0 'MM
VarMsgUnits = "mm"
Case 1 'INCH
VarMsgUnits = "in"
End Select
'FORMAT STATUS LINE TEXT
VarStatusMsg = "Probe: " &VarProbeDia &VarMsgUnits &" Gage: " &VarGageThick &VarMsgUnits
'----- ACTIVATE TIME DELAY IF USED ---------------------------------------------------------------------------
VarDelayInSec = Abs(VarDelayInSec)
If VarDelayInSec <> 0 Then
Do Until VarDelayInSec = 0 'LOOP UNTIL SECONDS = ZERO
Message VarDelayInSec 'DISPLAY SECONDS VALUE IN STATUS LINE
If VarDelayInSec < VarSecOfAudio + 1 Then
Select Case VarBeepOrSpeak
Case 1 'OPTION BEEP
Beep
Case 2 'OPTION SPEAK
Speak(VarDelayInSec)
End Select
End If
Sleep 1000 'PAUSE 1 SEC.
VarDelayInSec = VarDelayInSec - 1 'REDUCE SECONDS BY 1 AFTER EACH LOOP
Loop
End If
'----- CANCEL SCALE, FEEDRATE OVERRIDE, Z-INHIBIT ------------------------------------------------------------
SetParam("XScale",1.0) 'SET X SCALE TO 1.0
DoOemButton(1014) 'CANCEL FEED OVERRIDE
SetParam("ZInhibitOn",0) 'TURN Z INHIBIT OFF
'----- MOVE PROBE TOWARD CONTACT -----------------------------------------------------------------------------
SetOemDRO(800,0) 'ZERO X AXIS DRO
Sleep 200 'DELAY TO ALLOW DRO TO CHANGE
Message VarStatusMsg &" X Zero Running..."
Code "G90 G31 X" &VarMaxDistance &"F" &VarFeedRate 'MOVE IN X POS DIRECTION
While IsMoving() 'WAIT UNTIL MOVE IS COMPLETE BEFORE PROCEEDING
Wend
'----- GET CONTACT POSITION AND TEST FOR MAX TRAVEL ------ MOVE TO STANDOFF ------ UPDATE X AXIS DRO ---------
If GetVar(2000) >= (VarMaxDistance - .001) Then
MachMsg("Maximum Travel Reached. Reposition X Axis Closer To Part And Try Again!","*** OOPS! ***",0)
Message ""
RETURNSTATE 'CALL REINSTATE SUBROUTINE
End 'END SCRIPT
Else
Beep
Code "G90 G0 X" &GetVar(2000) 'MOVE TO CONTACT POINT DUE TO OVERRUN
While IsMoving()
Wend
SetOemDRO(800,0) 'ZERO X AXIS DRO
Sleep 200
25. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
Code "G90 G1 X-" &VarStandOff &"F" &VarFeedRate*2 'MOVE TO STANDOFF DISTANCE
While IsMoving ()
Wend
SetOemDRO(800, "-" &VarStandOff + VarGageThick + (VarProbeDia/2)) 'SET X DRO
Sleep 200
Select Case VarCompleteAudio
Case 1 'OPTION BEEP
Beep
Case 2 'OPTION SPEAK
Speak("Tool Zero Complete.")
Case 3 'OPTION WAV_AUDIO_FILE
PlayWave(VarWavAudioFile)
End Select
Message VarStatusMsg &" X Tool Zero Complete!"
End If
RETURNSTATE 'CALL REINSTATE SUBROUTINE
End 'SCRIPT COMPLETE
'******************************************* SUBROUTINE BELOW ************************************************
'----- SUBROUTINE TO RETURN INITIAL SETTINGS -----------------------------------------------------------------
Sub RETURNSTATE
'REINSTATE INITIAL FEEDRATE
Code "F" &VarInitialFeedRate
'REINSTATE DISTANCE MODE 0=G91 -1=G90
If VarInitialDistMode = 0 Then Code "G91" Else Code "G90"
'REINSTATE LINEAR MODE 0=G00 1=G01
If VarInitialLinearMode = 0 Then Code "G00" Else Code "G01"
'REINSTATE Z INHIBIT STATUS 0=OFF 1=ON
If VarInitialInhibit = 1 Then SetParam("ZInhibitOn",1)
'SET X SCALE TO INITIAL VALUE
If VarInitialXScale <> 1.0 Then SetParam("XScale",VarInitialXScale)
'SET FEEDRATE OVERRIDE TO INITIAL VALUE
If VarInitialFRO <> 100 Then SetOemDRO(821,VarInitialFRO)
End Sub
'*************************************************************************************************************
26. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
Y_POSITIVE_SCRIPT_REV9.txt
'*************************************************************************************************************
'******************************* Y AXIS (POSITIVE SIDE) TOUCH SCRIPT FOR MACH3 *****************************
'******FONT********************** FOR BOTH INCH AND MM UNITS ******************************
'*********Courier***************** CHARLIE SARSFIELD REV9 MAY/2018 *******************************
'********************************** WWW.YOUTUBE.COM/SUNNY5RISING ********************************
'*********************************** SUNNY5RISE@GMAIL.COM *********************************
'*************************************************************************************************************
'***************** NOTES: *******************
'***************** TO USE DEFAULT PROBE & GAGE VALUES, SET RELEVANT DRO(S) TO ZERO *******************
'***************** TO USE A GAGE VALUE OF ZERO, ENTER A NEGATIVE VALUE IN THICKNESS DRO *******************
'*************************************************************************************************************
'----- USER VARIABLES FOR DISTANCES, FEED RATES, AND OPTIONS -------------------------------------------------
If GetParam("Units") = 0 Then
'METRIC VALUES
VarMaxDistance = 25.4 'MAX TRAVEL
VarFeedRate = 127 'MM/MIN APPROACH FEEDRATE
VarStandOff = 1.27 'STANDOFF DISTANCE
VarProbeDia = 3.175 'DEFAULT PROBE DIAMETER | EDGE FINDER DIA. DRO PRECEDENCE
VarGageThick = 0.091 'DEFAULT GAGE THICKNESS | GAGE THICKNESS DRO PRECEDENCE
Else
'SAE VALUES
VarMaxDistance = 1.0 'MAX TRAVEL
VarFeedRate = 5 'INCH/MIN APPROACH FEEDRATE
VarStandOff = 0.05 'STANDOFF DISTANCE
VarProbeDia = 0.125 'DEFAULT PROBE DIAMETER | EDGE FINDER DIA. DRO PRECEDENCE
VarGageThick = 0.0036 'DEFAULT GAGE THICKNESS | GAGE THICKNESS DRO PRECEDENCE
End If
VarDelayInSec = 0 'DEFAULT SECONDS TO DELAY MOTION
VarBeepOrSpeak = 2 'COUNTDOWN AUDIO: 0=NONE 1=BEEP 2=SPEAK
VarSecOfAudio = 5 'SECOND AT WHICH AUDIO BEGINS
VarCompleteAudio = 3 'END SIGNAL: 0=NONE 1=Beep 2=SPEAK 3=WAV_AUDIO_FILE
VarWavAudioFile = "C:MACH3ToolCompleteSND1.wav" 'AUDIO FILE & PATH
'*************************************************************************************************************
'*************************************************************************************************************
'----- GET INITIAL ENVIRONMENT SETTINGS FOR LATER REINSTATEMENT ----------------------------------------------
VarInitialDistMode = GetOemLED(48) 'DISTANCE MODE G90/G91
VarInitialLinearMode = GetOemDRO(819) 'LINEAR MODE G00/G01
VarInitialFeedRate = GetOemDRO(818) 'FEEDRATE
VarInitialInhibit = GetParam("ZInhibitOn") 'Z INHIBIT STATUS OFF/ON
VarInitialYScale = GetParam("YScale") 'Y SCALE VALUE
VarInitialFRO = GetOemDRO(821) 'FEEDRATE OVERRIDE PERCENTAGE
Message "" 'CLEAR STATUS LINE TEXT
'----- CHECK DIGITIZE STATE; 0=CLEAR 1=ACTIVE ----------------------------------------------------------------
If GetOemLED (825) <> 0 Then
MachMsg("Digitize Status Not Clear. Check Probe/Connections And Try Again!","*** ERROR! ***",0)
Message "Edge Find CANCELED" 'DISPLAY MESSAGE
End 'END SCRIPT
End If
'----- RETRIEVE PROBE DIAMETER AND GAGE THICKNESS ------------------------------------------------------------
If VarProbeDia = 0 And GetOEMDRO(1000) = 0 Then
MachMsg("Coffee First, Then Provide Probe Diameter And Try Again.","*** ERROR! ***",0)
Message "Edge Find CANCELED" 'DISPLAY MESSAGE
Sleep 2000 : Message ""
End 'END SCRIPT
Else
27. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
If GetOEMDRO(1000) <> 0 Then VarProbeDia = Abs(GetOEMDRO(1000)) 'CHECK AND GET FINDER DIA DRO VALUE IF USED
End If
If GetOEMDRO(1001) <> 0 Then 'CHECK FOR GAGE THICKNESS VALUE
Select Case InStr(1,GetOEMDRO(1001),"-") 'CHECK IF NEGATIVE IS USED
Case 0 'NEG NOT PRESENT
VarGageThick = Abs(GetOEMDRO(1001)) 'SET GAGE THICKNESS TO DRO VALUE
Case 1 'NEG IS PRESENT
VarGageThick = 0 'SET GAGE THICKNESS TO ZERO
End Select
End If
Select Case GetParam("Units") 'SET UNITS FOR STATUS LINE DISPLAY
Case 0 'MM
VarMsgUnits = "mm"
Case 1 'INCH
VarMsgUnits = "in"
End Select
'FORMAT STATUS LINE TEXT
VarStatusMsg = "Probe: " &VarProbeDia &VarMsgUnits &" Gage: " &VarGageThick &VarMsgUnits
'----- ACTIVATE TIME DELAY IF USED ---------------------------------------------------------------------------
VarDelayInSec = Abs(VarDelayInSec)
If VarDelayInSec <> 0 Then
Do Until VarDelayInSec = 0 'LOOP UNTIL SECONDS = ZERO
Message VarDelayInSec 'DISPLAY SECONDS VALUE IN STATUS LINE
If VarDelayInSec < VarSecOfAudio + 1 Then
Select Case VarBeepOrSpeak
Case 1 'OPTION BEEP
Beep
Case 2 'OPTION SPEAK
Speak(VarDelayInSec)
End Select
End If
Sleep 1000 'PAUSE 1 SEC.
VarDelayInSec = VarDelayInSec - 1 'REDUCE SECONDS BY 1 AFTER EACH LOOP
Loop
End If
'----- CANCEL SCALE, FEEDRATE OVERRIDE, Z-INHIBIT ------------------------------------------------------------
SetParam("YScale",1.0) 'SET Y SCALE TO 1.0
DoOemButton(1014) 'CANCEL FEED OVERRIDE
SetParam("ZInhibitOn",0) 'TURN Z INHIBIT OFF
'----- MOVE PROBE TOWARD CONTACT -----------------------------------------------------------------------------
SetOemDRO(801,0) 'ZERO Y AXIS DRO
Sleep 200 'DELAY TO ALLOW DRO TO CHANGE
Message VarStatusMsg &" Y Zero Running..."
Code "G90 G31 Y-" &VarMaxDistance &"F" &VarFeedRate 'MOVE IN Y NEG DIRECTION
While IsMoving() 'WAIT UNTIL MOVE IS COMPLETE BEFORE PROCEEDING
Wend
'----- GET CONTACT POSITION AND TEST FOR MAX TRAVEL ------ MOVE TO STANDOFF ------ UPDATE Y AXIS DRO ---------
If GetVar(2001) <= ("-" &VarMaxDistance - .001) Then
MachMsg("Maximum Travel Reached. Reposition Y Axis Closer To Part And Try Again!","*** OOPS! ***",0)
Message ""
RETURNSTATE 'CALL REINSTATE SUBROUTINE
End 'END SCRIPT
Else
Beep
Code "G90 G0 Y" &GetVar(2001) 'MOVE TO CONTACT POINT DUE TO OVERRUN
While IsMoving()
Wend
SetOemDRO(801,0) 'ZERO Y AXIS DRO
Sleep 200
28. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
Code "G90 G1 Y+" &VarStandOff &"F" &VarFeedRate*2 'MOVE TO STANDOFF DISTANCE
While IsMoving ()
Wend
SetOemDRO(801, VarStandOff + VarGageThick + (VarProbeDia/2)) 'SET Y DRO
Sleep 200
Select Case VarCompleteAudio
Case 1 'OPTION BEEP
Beep
Case 2 'OPTION SPEAK
Speak("Tool Zero Complete.")
Case 3 'OPTION WAV_AUDIO_FILE
PlayWave(VarWavAudioFile)
End Select
Message VarStatusMsg &" Y Tool Zero Complete!"
End If
RETURNSTATE 'CALL REINSTATE SUBROUTINE
End 'SCRIPT COMPLETE
'******************************************* SUBROUTINE BELOW ************************************************
'----- SUBROUTINE TO RETURN INITIAL SETTINGS -----------------------------------------------------------------
Sub RETURNSTATE
'REINSTATE INITIAL FEEDRATE
Code "F" &VarInitialFeedRate
'REINSTATE DISTANCE MODE 0=G91 -1=G90
If VarInitialDistMode = 0 Then Code "G91" Else Code "G90"
'REINSTATE LINEAR MODE 0=G00 1=G01
If VarInitialLinearMode = 0 Then Code "G00" Else Code "G01"
'REINSTATE Z INHIBIT STATUS 0=OFF 1=ON
If VarInitialInhibit = 1 Then SetParam("ZInhibitOn",1)
'SET Y SCALE TO INITIAL VALUE
If VarInitialYScale <> 1.0 Then SetParam("YScale",VarInitialYScale)
'SET FEEDRATE OVERRIDE TO INITIAL VALUE
If VarInitialFRO <> 100 Then SetOemDRO(821,VarInitialFRO)
End Sub
'*************************************************************************************************************
29. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
X_POSITIVE_SCRIPT_REV9.txt
'*************************************************************************************************************
'******************************* X AXIS (POSITIVE SIDE) TOUCH SCRIPT FOR MACH3 *****************************
'******FONT********************** FOR BOTH INCH AND MM UNITS ******************************
'*********Courier***************** CHARLIE SARSFIELD REV9 MAY/2018 *******************************
'********************************** WWW.YOUTUBE.COM/SUNNY5RISING ********************************
'*********************************** SUNNY5RISE@GMAIL.COM *********************************
'*************************************************************************************************************
'***************** NOTES: *******************
'***************** TO USE DEFAULT PROBE & GAGE VALUES, SET RELEVANT DRO(S) TO ZERO *******************
'***************** TO USE A GAGE VALUE OF ZERO, ENTER A NEGATIVE VALUE IN THICKNESS DRO *******************
'********************************************************************************************************* ****
'----- USER VARIABLES FOR DISTANCES, FEED RATES, AND OPTIONS -------------------------------------------------
If GetParam("Units") = 0 Then
'METRIC VALUES
VarMaxDistance = 25.4 'MAX TRAVEL
VarFeedRate = 127 'MM/MIN APPROACH FEEDRATE
VarStandOff = 1.27 'STANDOFF DISTANCE
VarProbeDia = 3.175 'DEFAULT PROBE DIAMETER | EDGE FINDER DIA. DRO PRECEDENCE
VarGageThick = 0.091 'DEFAULT GAGE THICKNESS | GAGE THICKNESS DRO PRECEDENCE
Else
'SAE VALUES
VarMaxDistance = 1.0 'MAX TRAVEL
VarFeedRate = 5 'INCH/MIN APPROACH FEEDRATE
VarStandOff = 0.05 'STANDOFF DISTANCE
VarProbeDia = 0.125 'DEFAULT PROBE DIAMETER | EDGE FINDER DIA. DRO PRECEDENCE
VarGageThick = 0.0036 'DEFAULT GAGE THICKNESS | GAGE THICKNESS DRO PRECEDENCE
End If
VarDelayInSec = 0 'DEFAULT SECONDS TO DELAY MOTION
VarBeepOrSpeak = 2 'COUNTDOWN AUDIO: 0=NONE 1=BEEP 2=SPEAK
VarSecOfAudio = 5 'SECOND AT WHICH AUDIO BEGINS
VarCompleteAudio = 3 'END SIGNAL: 0=NONE 1=Beep 2=SPEAK 3=WAV_AUDIO_FILE
VarWavAudioFile = "C:MACH3ToolCompleteSND1.wav" 'AUDIO FILE & PATH
'*************************************************************************************************************
'************************************************************************************************* ************
'----- GET INITIAL ENVIRONMENT SETTINGS FOR LATER REINSTATEMENT ----------------------------------------------
VarInitialDistMode = GetOemLED(48) 'DISTANCE MODE G90/G91
VarInitialLinearMode = GetOemDRO(819) 'LINEAR MODE G00/G01
VarInitialFeedRate = GetOemDRO(818) 'FEEDRATE
VarInitialInhibit = GetParam("ZInhibitOn") 'Z INHIBIT STATUS OFF/ON
VarInitialXScale = GetParam("XScale") 'X SCALE VALUE
VarInitialFRO = GetOemDRO(821) 'FEEDRATE OVERRIDE PERCENTAGE
Message "" 'CLEAR STATUS LINE TEXT
'----- CHECK DIGITIZE STATE; 0=CLEAR 1=ACTIVE ----------------------------------------------------------------
If GetOemLED (825) <> 0 Then
MachMsg("Digitize Status Not Clear. Check Probe/Connections And Try Again!","*** ERROR! ***",0)
Message "Edge Find CANCELED" 'DISPLAY MESSAGE
Sleep 2000 : Message ""
End 'END SCRIPT
End If
'----- RETRIEVE PROBE DIAMETER AND GAGE THICKNESS ------------------------------------------------------------
If VarProbeDia = 0 And GetOEMDRO(1000) = 0 Then
MachMsg("Coffee First, Then Provide Probe Diameter And Try Again.","*** ERROR! ***",0)
Message "Edge Find CANCELED" 'DISPLAY MESSAGE
End 'END SCRIPT
Else
30. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
If GetOEMDRO(1000) <> 0 Then VarProbeDia = Abs(GetOEMDRO(1000)) 'CHECK AND GET FINDER DIA DRO VALUE IF USED
End If
If GetOEMDRO(1001) <> 0 Then 'CHECK FOR GAGE THICKNESS VALUE
Select Case InStr(1,GetOEMDRO(1001),"-") 'CHECK IF NEGATIVE IS USED
Case 0 'NEG NOT PRESENT
VarGageThick = Abs(GetOEMDRO(1001)) 'SET GAGE THICKNESS TO DRO VALUE
Case 1 'NEG IS PRESENT
VarGageThick = 0 'SET GAGE THICKNESS TO ZERO
End Select
End If
Select Case GetParam("Units") 'SET UNITS FOR STATUS LINE DISPLAY
Case 0 'MM
VarMsgUnits = "mm"
Case 1 'INCH
VarMsgUnits = "in"
End Select
'FORMAT STATUS LINE TEXT
VarStatusMsg = "Probe: " &VarProbeDia &VarMsgUnits &" Gage: " &VarGageThick &VarMsgUnits
'----- ACTIVATE TIME DELAY IF USED ---------------------------------------------------------------------------
VarDelayInSec = Abs(VarDelayInSec)
If VarDelayInSec <> 0 Then
Do Until VarDelayInSec = 0 'LOOP UNTIL SECONDS = ZERO
Message VarDelayInSec 'DISPLAY SECONDS VALUE IN STATUS LINE
If VarDelayInSec < VarSecOfAudio + 1 Then
Select Case VarBeepOrSpeak
Case 1 'OPTION BEEP
Beep
Case 2 'OPTION SPEAK
Speak(VarDelayInSec)
End Select
End If
Sleep 1000 'PAUSE 1 SEC.
VarDelayInSec = VarDelayInSec - 1 'REDUCE SECONDS BY 1 AFTER EACH LOOP
Loop
End If
'----- CANCEL SCALE, FEEDRATE OVERRIDE, Z-INHIBIT ------------------------------------------------------------
SetParam("XScale",1.0) 'SET X SCALE TO 1.0
DoOemButton(1014) 'CANCEL FEED OVERRIDE
SetParam("ZInhibitOn",0) 'TURN Z INHIBIT OFF
'----- MOVE PROBE TOWARD CONTACT -----------------------------------------------------------------------------
SetOemDRO(800,0) 'ZERO X AXIS DRO
Sleep 200 'DELAY TO ALLOW DRO TO CHANGE
Message VarStatusMsg &" X Zero Running..."
Code "G90 G31 X-" &VarMaxDistance &"F" &VarFeedRate 'MOVE IN X NEG DIRECTION
While IsMoving() 'WAIT UNTIL MOVE IS COMPLETE BEFORE PROCEEDING
Wend
'----- GET CONTACT POSITION AND TEST FOR MAX TRAVEL ------ MOVE TO STANDOFF ------ UPDATE X AXIS DRO ---------
If GetVar(2000) <= ("-" &VarMaxDistance - .001) Then
MachMsg("Maximum Travel Reached. Reposition X Axis Closer To Part And Try Again!","*** OOPS! ***",0)
Message ""
RETURNSTATE 'CALL REINSTATE SUBROUTINE
End 'END SCRIPT
Else
Beep
Code "G90 G0 X" &GetVar(2000) 'MOVE TO CONTACT POINT DUE TO OVERRUN
While IsMoving()
Wend
SetOemDRO(800,0) 'ZERO X AXIS DRO
Sleep 200
31. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
Code "G90 G1 X+" &VarStandOff &"F" &VarFeedRate*2 'MOVE TO STANDOFF DISTANCE
While IsMoving ()
Wend
SetOemDRO(800, VarStandOff + VarGageThick + (VarProbeDia/2)) 'SET X DRO
Sleep 200
Select Case VarCompleteAudio
Case 1 'OPTION BEEP
Beep
Case 2 'OPTION SPEAK
Speak("Tool Zero Complete.")
Case 3 'OPTION WAV_AUDIO_FILE
PlayWave(VarWavAudioFile)
End Select
Message VarStatusMsg &" X Tool Zero Complete!"
End If
RETURNSTATE 'CALL REINSTATE SUBROUTINE
End 'SCRIPT COMPLETE
'******************************************* SUBROUTINE BELOW ************************************************
'----- SUBROUTINE TO RETURN INITIAL SETTINGS -----------------------------------------------------------------
Sub RETURNSTATE
'REINSTATE INITIAL FEEDRATE
Code "F" &VarInitialFeedRate
'REINSTATE DISTANCE MODE 0=G91 -1=G90
If VarInitialDistMode = 0 Then Code "G91" Else Code "G90"
'REINSTATE LINEAR MODE 0=G00 1=G01
If VarInitialLinearMode = 0 Then Code "G00" Else Code "G01"
'REINSTATE Z INHIBIT STATUS 0=OFF 1=ON
If VarInitialInhibit = 1 Then SetParam("ZInhibitOn",1)
'SET X SCALE TO INITIAL VALUE
If VarInitialXScale <> 1.0 Then SetParam("XScale",VarInitialXScale)
'SET FEEDRATE OVERRIDE TO INITIAL VALUE
If VarInitialFRO <> 100 Then SetOemDRO(821,VarInitialFRO)
End Sub
'**************************************************************************************************************
32. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
Y_NEGATIVE_SCRIPT_REV9.txt
'*************************************************************************************************************
'******************************* Y AXIS (NEGATIVE SIDE) TOUCH SCRIPT FOR MACH3 *****************************
'******FONT********************** FOR BOTH INCH AND MM UNITS ******************************
'*********Courier***************** CHARLIE SARSFIELD REV9 MAY/2018 *******************************
'********************************** WWW.YOUTUBE.COM/SUNNY5RISING ********************************
'*********************************** SUNNY5RISE@GMAIL.COM *********************************
'*************************************************************************************************************
'***************** NOTES: *******************
'***************** TO USE DEFAULT PROBE & GAGE VALUES, SET RELEVANT DRO(S) TO ZERO *******************
'***************** TO USE A GAGE VALUE OF ZERO, ENTER A NEGATIVE VALUE IN THICKNESS DRO *******************
'*************************************************************************************************************
'----- USER VARIABLES FOR DISTANCES, FEED RATES, AND OPTIONS -------------------------------------------------
If GetParam("Units") = 0 Then
'METRIC VALUES
VarMaxDistance = 25.4 'MAX TRAVEL
VarFeedRate = 127 'MM/MIN APPROACH FEEDRATE
VarStandOff = 1.27 'STANDOFF DISTANCE
VarProbeDia = 3.175 'DEFAULT PROBE DIAMETER | EDGE FINDER DIA. DRO PRECEDENCE
VarGageThick = 0.091 'DEFAULT GAGE THICKNESS | GAGE THICKNESS DRO PRECEDENCE
Else
'SAE VALUES
VarMaxDistance = 1.0 'MAX TRAVEL
VarFeedRate = 5 'INCH/MIN APPROACH FEEDRATE
VarStandOff = 0.05 'STANDOFF DISTANCE
VarProbeDia = 0.125 'DEFAULT PROBE DIAMETER | EDGE FINDER DIA. DRO PRECEDENCE
VarGageThick = 0.0036 'DEFAULT GAGE THICKNESS | GAGE THICKNESS DRO PRECEDENCE
End If
VarDelayInSec = 0 'DEFAULT SECONDS TO DELAY MOTION
VarBeepOrSpeak = 2 'COUNTDOWN AUDIO: 0=NONE 1=BEEP 2=SPEAK
VarSecOfAudio = 5 'SECOND AT WHICH AUDIO BEGINS
VarCompleteAudio = 3 'END SIGNAL: 0=NONE 1=Beep 2=SPEAK 3=WAV_AUDIO_FILE
VarWavAudioFile = "C:MACH3ToolCompleteSND1.wav" 'AUDIO FILE & PATH
'*************************************************************************************************************
'*************************************************************************************************************
'----- GET INITIAL ENVIRONMENT SETTINGS FOR LATER REINSTATEMENT ----------------------------------------------
VarInitialDistMode = GetOemLED(48) 'DISTANCE MODE G90/G91
VarInitialLinearMode = GetOemDRO(819) 'LINEAR MODE G00/G01
VarInitialFeedRate = GetOemDRO(818) 'FEEDRATE
VarInitialInhibit = GetParam("ZInhibitOn") 'Z INHIBIT STATUS OFF/ON
VarInitialYScale = GetParam("YScale") 'Y SCALE VALUE
VarInitialFRO = GetOemDRO(821) 'FEEDRATE OVERRIDE PERCENTAGE
Message "" 'CLEAR STATUS LINE TEXT
'----- CHECK DIGITIZE STATE; 0=CLEAR 1=ACTIVE ----------------------------------------------------------------
If GetOemLED (825) <> 0 Then
MachMsg("Digitize Status Not Clear. Check Probe/Connections And Try Again!","*** ERROR! ***",0)
Message "Edge Find CANCELED" 'DISPLAY MESSAGE
End 'END SCRIPT
End If
'----- RETRIEVE PROBE DIAMETER AND GAGE THICKNESS ------------------------------------------------------------
If VarProbeDia = 0 And GetOEMDRO(1000) = 0 Then
MachMsg("Coffee First, Then Provide Probe Diameter And Try Again.","*** ERROR! ***",0)
Message "Edge Find CANCELED" 'DISPLAY MESSAGE
Sleep 2000 : Message ""
End 'END SCRIPT
Else
33. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
If GetOEMDRO(1000) <> 0 Then VarProbeDia = Abs(GetOEMDRO(1000)) 'CHECK AND GET FINDER DIA DRO VALUE IF USED
End If
If GetOEMDRO(1001) <> 0 Then 'CHECK FOR GAGE THICKNESS VALUE
Select Case InStr(1,GetOEMDRO(1001),"-") 'CHECK IF NEGATIVE IS USED
Case 0 'NEG NOT PRESENT
VarGageThick = Abs(GetOEMDRO(1001)) 'SET GAGE THICKNESS TO DRO VALUE
Case 1 'NEG IS PRESENT
VarGageThick = 0 'SET GAGE THICKNESS TO ZERO
End Select
End If
Select Case GetParam("Units") 'SET UNITS FOR STATUS LINE DISPLAY
Case 0 'MM
VarMsgUnits = "mm"
Case 1 'INCH
VarMsgUnits = "in"
End Select
'FORMAT STATUS LINE TEXT
VarStatusMsg = "Probe: " &VarProbeDia &VarMsgUnits &" Gage: " &VarGageThick &VarMsgUnits
'----- ACTIVATE TIME DELAY IF USED ---------------------------------------------------------------------------
VarDelayInSec = Abs(VarDelayInSec)
If VarDelayInSec <> 0 Then
Do Until VarDelayInSec = 0 'LOOP UNTIL SECONDS = ZERO
Message VarDelayInSec 'DISPLAY SECONDS VALUE IN STATUS LINE
If VarDelayInSec < VarSecOfAudio + 1 Then
Select Case VarBeepOrSpeak
Case 1 'OPTION BEEP
Beep
Case 2 'OPTION SPEAK
Speak(VarDelayInSec)
End Select
End If
Sleep 1000 'PAUSE 1 SEC.
VarDelayInSec = VarDelayInSec - 1 'REDUCE SECONDS BY 1 AFTER EACH LOOP
Loop
End If
'----- CANCEL SCALE, FEEDRATE OVERRIDE, Z-INHIBIT ------------------------------------------------------------
SetParam("YScale",1.0) 'SET Y SCALE TO 1.0
DoOemButton(1014) 'CANCEL FEED OVERRIDE
SetParam("ZInhibitOn",0) 'TURN Z INHIBIT OFF
'----- MOVE PROBE TOWARD CONTACT -----------------------------------------------------------------------------
SetOemDRO(801,0) 'ZERO Y AXIS DRO
Sleep 200 'DELAY TO ALLOW DRO TO CHANGE
Message VarStatusMsg &" Y Zero Running..."
Code "G90 G31 Y" &VarMaxDistance &"F" &VarFeedRate 'MOVE IN Y POS DIRECTION
While IsMoving() 'WAIT UNTIL MOVE IS COMPLETE BEFORE PROCEEDING
Wend
'----- GET CONTACT POSITION AND TEST FOR MAX TRAVEL ------ MOVE TO STANDOFF ------ UPDATE Y AXIS DRO ---------
If GetVar(2001) >= (VarMaxDistance - .001) Then
MachMsg("Maximum Travel Reached. Reposition Y Axis Closer To Part And Try Again!","*** OOPS! ***",0)
Message ""
RETURNSTATE 'CALL REINSTATE SUBROUTINE
End 'END SCRIPT
Else
Beep
Code "G90 G0 Y" &GetVar(2001) 'MOVE TO CONTACT POINT DUE TO OVERRUN
While IsMoving()
Wend
SetOemDRO(801,0) 'ZERO Y AXIS DRO
Sleep 200
34. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
Code "G90 G1 Y-" &VarStandOff &"F" &VarFeedRate*2 'MOVE TO STANDOFF DISTANCE
While IsMoving ()
Wend
SetOemDRO(801, "-" &VarStandOff + VarGageThick + (VarProbeDia/2)) 'SET Y DRO
Sleep 200
Select Case VarCompleteAudio
Case 1 'OPTION BEEP
Beep
Case 2 'OPTION SPEAK
Speak("Tool Zero Complete.")
Case 3 'OPTION WAV_AUDIO_FILE
PlayWave(VarWavAudioFile)
End Select
Message VarStatusMsg &" Y Tool Zero Complete!"
End If
RETURNSTATE 'CALL REINSTATE SUBROUTINE
End 'SCRIPT COMPLETE
'******************************************* SUBROUTINE BELOW ************************************************
'----- SUBROUTINE TO RETURN INITIAL SETTINGS -----------------------------------------------------------------
Sub RETURNSTATE
'REINSTATE INITIAL FEEDRATE
Code "F" &VarInitialFeedRate
'REINSTATE DISTANCE MODE 0=G91 -1=G90
If VarInitialDistMode = 0 Then Code "G91" Else Code "G90"
'REINSTATE LINEAR MODE 0=G00 1=G01
If VarInitialLinearMode = 0 Then Code "G00" Else Code "G01"
'REINSTATE Z INHIBIT STATUS 0=OFF 1=ON
If VarInitialInhibit = 1 Then SetParam("ZInhibitOn",1)
'SET Y SCALE TO INITIAL VALUE
If VarInitialYScale <> 1.0 Then SetParam("YScale",VarInitialYScale)
'SET FEEDRATE OVERRIDE TO INITIAL VALUE
If VarInitialFRO <> 100 Then SetOemDRO(821,VarInitialFRO)
End Sub
'**************************************************************************************************************