SlideShare a Scribd company logo
1 of 34
Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
Automatedtool setting,Edge /Centerfinding(X/Y)
Modificationfromoriginal (BackgroundOffset,HelpWorkOffset,select2,TouchImage2, Touch
Imagec2) bitmaps
Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
DownloadXY_TOUCH_SCRIPTS.ZIP andExtract.
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
Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
Copy Script to Editor
Script Button position
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
Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y)
Thenpressthe auto buttonon the Y axis
Input G0X0Y0 --> X, Y Zero is located
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
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.
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
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
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
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
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
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
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..."
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
'*************************************************************************************************************
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
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
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
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
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 -------------------------------------------------------------------------------------
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
'*************************************************************************************************************
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
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
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
'*************************************************************************************************************
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
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
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
'*************************************************************************************************************
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
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
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
'**************************************************************************************************************
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
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
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
'**************************************************************************************************************

More Related Content

Similar to Automated tool setting edge and center finding x and y axis

망고100 보드로 놀아보자 15
망고100 보드로 놀아보자 15망고100 보드로 놀아보자 15
망고100 보드로 놀아보자 15
종인 전
 
ExperiencesSharingOnEmbeddedSystemDevelopment_20160321
ExperiencesSharingOnEmbeddedSystemDevelopment_20160321ExperiencesSharingOnEmbeddedSystemDevelopment_20160321
ExperiencesSharingOnEmbeddedSystemDevelopment_20160321
Teddy Hsiung
 
g++ -o simpleVector.exe simpleVector.cpp #include stdio.h #i.pdf
g++ -o simpleVector.exe simpleVector.cpp #include stdio.h #i.pdfg++ -o simpleVector.exe simpleVector.cpp #include stdio.h #i.pdf
g++ -o simpleVector.exe simpleVector.cpp #include stdio.h #i.pdf
arakalamkah11
 
Polygon.javapublic class Polygon { private int numSides; priva.pdf
Polygon.javapublic class Polygon { private int numSides; priva.pdfPolygon.javapublic class Polygon { private int numSides; priva.pdf
Polygon.javapublic class Polygon { private int numSides; priva.pdf
apnafreez
 
Polygon.javapublic class Polygon { private int numSides; priva.pdf
Polygon.javapublic class Polygon { private int numSides; priva.pdfPolygon.javapublic class Polygon { private int numSides; priva.pdf
Polygon.javapublic class Polygon { private int numSides; priva.pdf
apnafreez
 
Hi,I have updated your code. It is working fine now. Highllighted .pdf
Hi,I have updated your code. It is working fine now. Highllighted .pdfHi,I have updated your code. It is working fine now. Highllighted .pdf
Hi,I have updated your code. It is working fine now. Highllighted .pdf
aniyathikitchen
 

Similar to Automated tool setting edge and center finding x and y axis (20)

망고100 보드로 놀아보자 15
망고100 보드로 놀아보자 15망고100 보드로 놀아보자 15
망고100 보드로 놀아보자 15
 
Config interface
Config interfaceConfig interface
Config interface
 
sas aeroplan sample
sas aeroplan samplesas aeroplan sample
sas aeroplan sample
 
Post Exploitation Bliss: Loading Meterpreter on a Factory iPhone, Black Hat U...
Post Exploitation Bliss: Loading Meterpreter on a Factory iPhone, Black Hat U...Post Exploitation Bliss: Loading Meterpreter on a Factory iPhone, Black Hat U...
Post Exploitation Bliss: Loading Meterpreter on a Factory iPhone, Black Hat U...
 
Lampiran 1.programdocx
Lampiran 1.programdocxLampiran 1.programdocx
Lampiran 1.programdocx
 
Write a Matlab code (a computerized program) for calculating plane st.docx
 Write a Matlab code (a computerized program) for calculating plane st.docx Write a Matlab code (a computerized program) for calculating plane st.docx
Write a Matlab code (a computerized program) for calculating plane st.docx
 
ExperiencesSharingOnEmbeddedSystemDevelopment_20160321
ExperiencesSharingOnEmbeddedSystemDevelopment_20160321ExperiencesSharingOnEmbeddedSystemDevelopment_20160321
ExperiencesSharingOnEmbeddedSystemDevelopment_20160321
 
Movemaster robot
Movemaster robotMovemaster robot
Movemaster robot
 
StatsCraft 2015: Monitoring using riemann - Moshe Zada
StatsCraft 2015: Monitoring using riemann - Moshe ZadaStatsCraft 2015: Monitoring using riemann - Moshe Zada
StatsCraft 2015: Monitoring using riemann - Moshe Zada
 
Linux kernel debugging
Linux kernel debuggingLinux kernel debugging
Linux kernel debugging
 
Encoder + decoder
Encoder + decoderEncoder + decoder
Encoder + decoder
 
g++ -o simpleVector.exe simpleVector.cpp #include stdio.h #i.pdf
g++ -o simpleVector.exe simpleVector.cpp #include stdio.h #i.pdfg++ -o simpleVector.exe simpleVector.cpp #include stdio.h #i.pdf
g++ -o simpleVector.exe simpleVector.cpp #include stdio.h #i.pdf
 
How the world gets its weather
How the world gets its weather How the world gets its weather
How the world gets its weather
 
Austin c-c++-meetup-feb2018-spectre
Austin c-c++-meetup-feb2018-spectreAustin c-c++-meetup-feb2018-spectre
Austin c-c++-meetup-feb2018-spectre
 
Polygon.javapublic class Polygon { private int numSides; priva.pdf
Polygon.javapublic class Polygon { private int numSides; priva.pdfPolygon.javapublic class Polygon { private int numSides; priva.pdf
Polygon.javapublic class Polygon { private int numSides; priva.pdf
 
Polygon.javapublic class Polygon { private int numSides; priva.pdf
Polygon.javapublic class Polygon { private int numSides; priva.pdfPolygon.javapublic class Polygon { private int numSides; priva.pdf
Polygon.javapublic class Polygon { private int numSides; priva.pdf
 
Hi,I have updated your code. It is working fine now. Highllighted .pdf
Hi,I have updated your code. It is working fine now. Highllighted .pdfHi,I have updated your code. It is working fine now. Highllighted .pdf
Hi,I have updated your code. It is working fine now. Highllighted .pdf
 
Assignment
AssignmentAssignment
Assignment
 
Kernel Recipes 2015: Anatomy of an atomic KMS driver
Kernel Recipes 2015: Anatomy of an atomic KMS driverKernel Recipes 2015: Anatomy of an atomic KMS driver
Kernel Recipes 2015: Anatomy of an atomic KMS driver
 
Monad - a functional design pattern
Monad - a functional design patternMonad - a functional design pattern
Monad - a functional design pattern
 

Recently uploaded

會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文
會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文
會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文
中 央社
 

Recently uploaded (20)

How to Send Pro Forma Invoice to Your Customers in Odoo 17
How to Send Pro Forma Invoice to Your Customers in Odoo 17How to Send Pro Forma Invoice to Your Customers in Odoo 17
How to Send Pro Forma Invoice to Your Customers in Odoo 17
 
8 Tips for Effective Working Capital Management
8 Tips for Effective Working Capital Management8 Tips for Effective Working Capital Management
8 Tips for Effective Working Capital Management
 
An Overview of the Odoo 17 Knowledge App
An Overview of the Odoo 17 Knowledge AppAn Overview of the Odoo 17 Knowledge App
An Overview of the Odoo 17 Knowledge App
 
e-Sealing at EADTU by Kamakshi Rajagopal
e-Sealing at EADTU by Kamakshi Rajagopale-Sealing at EADTU by Kamakshi Rajagopal
e-Sealing at EADTU by Kamakshi Rajagopal
 
PSYPACT- Practicing Over State Lines May 2024.pptx
PSYPACT- Practicing Over State Lines May 2024.pptxPSYPACT- Practicing Over State Lines May 2024.pptx
PSYPACT- Practicing Over State Lines May 2024.pptx
 
Including Mental Health Support in Project Delivery, 14 May.pdf
Including Mental Health Support in Project Delivery, 14 May.pdfIncluding Mental Health Support in Project Delivery, 14 May.pdf
Including Mental Health Support in Project Delivery, 14 May.pdf
 
Supporting Newcomer Multilingual Learners
Supporting Newcomer  Multilingual LearnersSupporting Newcomer  Multilingual Learners
Supporting Newcomer Multilingual Learners
 
The Story of Village Palampur Class 9 Free Study Material PDF
The Story of Village Palampur Class 9 Free Study Material PDFThe Story of Village Palampur Class 9 Free Study Material PDF
The Story of Village Palampur Class 9 Free Study Material PDF
 
MOOD STABLIZERS DRUGS.pptx
MOOD     STABLIZERS           DRUGS.pptxMOOD     STABLIZERS           DRUGS.pptx
MOOD STABLIZERS DRUGS.pptx
 
OS-operating systems- ch05 (CPU Scheduling) ...
OS-operating systems- ch05 (CPU Scheduling) ...OS-operating systems- ch05 (CPU Scheduling) ...
OS-operating systems- ch05 (CPU Scheduling) ...
 
ANTI PARKISON DRUGS.pptx
ANTI         PARKISON          DRUGS.pptxANTI         PARKISON          DRUGS.pptx
ANTI PARKISON DRUGS.pptx
 
UChicago CMSC 23320 - The Best Commit Messages of 2024
UChicago CMSC 23320 - The Best Commit Messages of 2024UChicago CMSC 23320 - The Best Commit Messages of 2024
UChicago CMSC 23320 - The Best Commit Messages of 2024
 
Stl Algorithms in C++ jjjjjjjjjjjjjjjjjj
Stl Algorithms in C++ jjjjjjjjjjjjjjjjjjStl Algorithms in C++ jjjjjjjjjjjjjjjjjj
Stl Algorithms in C++ jjjjjjjjjjjjjjjjjj
 
會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文
會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文
會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文會考英文
 
Sternal Fractures & Dislocations - EMGuidewire Radiology Reading Room
Sternal Fractures & Dislocations - EMGuidewire Radiology Reading RoomSternal Fractures & Dislocations - EMGuidewire Radiology Reading Room
Sternal Fractures & Dislocations - EMGuidewire Radiology Reading Room
 
Major project report on Tata Motors and its marketing strategies
Major project report on Tata Motors and its marketing strategiesMajor project report on Tata Motors and its marketing strategies
Major project report on Tata Motors and its marketing strategies
 
Book Review of Run For Your Life Powerpoint
Book Review of Run For Your Life PowerpointBook Review of Run For Your Life Powerpoint
Book Review of Run For Your Life Powerpoint
 
An overview of the various scriptures in Hinduism
An overview of the various scriptures in HinduismAn overview of the various scriptures in Hinduism
An overview of the various scriptures in Hinduism
 
male presentation...pdf.................
male presentation...pdf.................male presentation...pdf.................
male presentation...pdf.................
 
How to Manage Website in Odoo 17 Studio App.pptx
How to Manage Website in Odoo 17 Studio App.pptxHow to Manage Website in Odoo 17 Studio App.pptx
How to Manage Website in Odoo 17 Studio App.pptx
 

Automated tool setting edge and center finding x and y axis

  • 1. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y) Automatedtool setting,Edge /Centerfinding(X/Y) Modificationfromoriginal (BackgroundOffset,HelpWorkOffset,select2,TouchImage2, Touch Imagec2) bitmaps
  • 2. Mach 3 Automated Tool Setting | Edge/Center Finding (X/Y) DownloadXY_TOUCH_SCRIPTS.ZIP andExtract.
  • 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 '**************************************************************************************************************