auto zero tool

Sezione dedicata a Mach3
Rispondi
fioretto
Junior
Junior
Messaggi: 105
Iscritto il: lunedì 19 luglio 2010, 23:28
Località: Arezzo

auto zero tool

Messaggio da fioretto » mercoledì 7 ottobre 2020, 0:23

Salveragazzi mi capita una cosa molto strana con lo script di mach 3 dello zero tool della serie che quando avvio la macro la prima volta funziona perfettamente ma se la rifaccio sbaglia la ciclica cioe scende in zeta fino a quando non dovrebbe trovare la probe e li azzerarsi e fermarsi ma in realta si ferma e si azzera senza aver toccato la sonda! come se avesse qualcosa avesse chiuso il contatto.e per farlo rifare correttamente devo riavviare il pc. cosi me lo fa anche con il center finding e edge finding. La prima volta funziona tutto bene ma dopo non lo rifa piu. ho la version 066 e win7 smoothsteeper ethernet.

Avatar utente
Pedro
God
God
Messaggi: 7021
Iscritto il: domenica 6 aprile 2008, 18:44
Località: Roma

Re: auto zero tool

Messaggio da Pedro » mercoledì 7 ottobre 2020, 10:26

prova:

vai su general configuration

spunta la casella: remove tool offset

chiudi mach3 e riprova
"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."

fioretto
Junior
Junior
Messaggi: 105
Iscritto il: lunedì 19 luglio 2010, 23:28
Località: Arezzo

Re: auto zero tool

Messaggio da fioretto » mercoledì 7 ottobre 2020, 19:14

Ok provo ma l aver spuntato questa casella cosa mi comporta dopo con la macro cambio utensile manuale?
Grazie

fioretto
Junior
Junior
Messaggi: 105
Iscritto il: lunedì 19 luglio 2010, 23:28
Località: Arezzo

Re: auto zero tool

Messaggio da fioretto » giovedì 8 ottobre 2020, 0:48

Purtroppo ho provato ma non funziona ugualmente!
Come sempre la prima probe funziona correttamente e poi non funziona più cioe scende ma dopo un po anche senze toccare la sonda si rialza e dice szzeramento effettuato correttamente e se lo ripeti lo fa uguale!!!

Avatar utente
Pedro
God
God
Messaggi: 7021
Iscritto il: domenica 6 aprile 2008, 18:44
Località: Roma

Re: auto zero tool

Messaggio da Pedro » giovedì 8 ottobre 2020, 9:16

a parte non sapere quale macro usi adesso che descrivi meglio cosa accade mi viene da pensare che il percorso di azzeramento si insufficiente. Quindi nella macro, trova tu il comando, dove dice

G31Z-xxx

dove xxx è un certo numero prova a mettere al posto di questo un numero più grande, il doppio, così garantisci che Z scenda abbastanza da azzerare
"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."

fioretto
Junior
Junior
Messaggi: 105
Iscritto il: lunedì 19 luglio 2010, 23:28
Località: Arezzo

Re: auto zero tool

Messaggio da fioretto » giovedì 8 ottobre 2020, 14:11

La macro che uso è questa



'*************************************************************************************************************
'**************************** Z Axis Touch Plate Script For Mach3 R3.043 ********************************
'******FONT****************** For Both INCH And MM Units | Rev12 Sep/2020 ********************************
'*********Courier************ CHARLIE SARSFIELD ********************************
'**************************** www.YouTube.com/sunny5rising ********************************
'**************************** sunny5rise@gmail.com ********************************
'*************************************************************************************************************
'******************** TEST SCRIPT CAUTIOUSLY ****** USE SCRIPT AT YOUR OWN RISK ***********************
'*************************************************************************************************************
'*************************************************************************************************************
'******************** To Support My Work: http://PayPal.Me/CharlieCNC ***********************
'*************************************************************************************************************

'----- USER VARIABLES FOR DISTANCES, FEED RATES, TOUCH PLATES, OPTIONS ---------------------------------------
If GetParam("Units") = 0 Then
'* METRIC VALUES *
VarUnits = " MM"
VarMaxDistance = -25.4 'MAX Z TRAVEL * ALWAYS MAKE NEGATIVE
VarFeedRate = 127 'MM/MIN DOWN FEEDRATE
VarStandOff = 1.27 'STANDOFF DISTANCE ABOVE PROBE CONTACT
VarTouchPlate = 20.066 'PRIMARY/DEFAULT TOUCH PLATE THICKNESS
VarSecondPlate = 0.038 'SECONDARY TOUCH PLATE THICKNESS * OPTION FOR CHOICE DIALOG
VarThirdPlate = 0.012 'TERTIARY TOUCH PLATE THICKNESS * OPTION FOR CHOICE DIALOG
Else
'* SAE VALUES *
VarUnits = " INCH"
VarMaxDistance = -1.0 'MAX Z TRAVEL * ALWAYS MAKE NEGATIVE
VarFeedRate = 5 'INCH/MIN DOWN FEEDRATE
VarStandOff = 0.05 'STANDOFF DISTANCE ABOVE PROBE CONTACT
VarTouchPlate = 0.79 'PRIMARY/DEFAULT TOUCH PLATE THICKNESS
VarSecondPlate = 0.0015 'SECONDARY TOUCH PLATE THICKNESS * OPTION FOR CHOICE DIALOG
VarThirdPlate = 0.0005 'TERTIARY TOUCH PLATE THICKNESS * OPTION FOR CHOICE DIALOG
End If

VarRunTheChoice = 1 'RUN PLATE CHOICE DIALOG? 0=NO 1=YES

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:\MACH3\ToolCompleteSND1.wav" 'WAV_AUDIO_FILE LOCATION

'*************************************************************************************************************
'*************************************************************************************************************

'----- 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
VarInitialZScale = GetParam("ZScale") 'Z 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
RET = MachMsg("Digitize Status Not Clear. Check Probe/Connections And Try Again!","*** ERROR! ***",0)
End 'END SCRIPT
End If


'----- CHECK IF USER WANTS TO RUN PLATE CHOICE DIALOG --------------------------------------------------------
If VarRunTheChoice = 1 Then RunTheThing 'RUN SUBROUTINE


'----- ACTIVATE TIME DELAY IF USED ---------------------------------------------------------------------------
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


'----- PREPARE FOR MOVE ----- MOVE PROBE DOWN TOWARD CONTACT -------------------------------------------------
SetParam("ZInhibitOn",0) 'TURN Z INHIBIT OFF
SetParam("ZScale",1.0) 'SET Z SCALE TO 1.0
DoOemButton(1014) 'CANCEL FEED OVERRIDE
SetOemDRO(802,0) 'ZERO Z AXIS DRO
Sleep 200 'DELAY TO ALLOW DRO TO CHANGE
Message "Auto Tool Zero Running..."
Code "G90 G31 Z" &VarMaxDistance &"F" &VarFeedRate 'MOVE DOWN @ FEEDRATE
While IsMoving() 'WAIT UNTIL MOVE IS COMPLETE BEFORE PROCEEDING
Wend


'----- GET Z CONTACT POSITION AND TEST FOR MAX TRAVEL ------ MOVE TO STANDOFF ------ UPDATE Z AXIS DRO -------
If GetVar(2002) <= VarMaxDistance + .001 Then
RET = MachMsg("Maximum Travel Reached. Reposition Z Axis Closer To Touch Plate And Try Again!","*** OOPS! ***",0)
Message ""
RETURNSTATE 'CALL REINSTATE SUBROUTINE
End 'END SCRIPT
Else
Beep
Code "G90 G0 Z" &GetVar(2002) 'MOVE TO CONTACT POINT DUE TO OVERRUN
While IsMoving()
Wend
SetOemDRO(802,0) 'ZERO Z AXIS DRO
Sleep 200
Code "G90 G0 Z" &VarStandOff 'MOVE TO STANDOFF DISTANCE
While IsMoving ()
Wend
SetOemDRO(802, VarStandOff + VarTouchPlate) 'SET Z DRO (STANDOFF + PLATE THICKNESS)
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 "Auto Tool Zero Complete! ***Remove Touch Plate***"
End If
RETURNSTATE 'CALL REINSTATE SUBROUTINE
End 'END SCRIPT

'******************************************* SUBROUTINES 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 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 TOUCH PLATE CHOICE AND TIME DELAY -----------------------------------------------
Sub RunTheThing
Dim PlateList$ (2) 'DECLARE 3 ITEM ARRAY FOR PLATE SIZE LIST
If GetParam("Units") = 0 Then
'MM FORMATTING FOR LISTBOX
PlateList (0) = Format(VarTouchPlate,"00.000") 'FILL ARRAY 1
PlateList (1) = Format(VarSecondPlate,"00.000") 'FILL ARRAY 2
PlateList (2) = Format(VarThirdPlate,"00.000") 'FILL ARRAY 3
Else
'INCH FORMATTING FOR LISTBOX
PlateList (0) = Format(VarTouchPlate,"0.0000") 'FILL ARRAY 1
PlateList (1) = Format(VarSecondPlate,"0.0000") 'FILL ARRAY 2
PlateList (2) = Format(VarThirdPlate,"0.0000") 'FILL ARRAY 3
End If

Dim UnitList$ (0) 'DECLARE 1 ITEM ARRAY FOR UNIT LISTBOX
UnitList (0) = VarUnits 'FILL ARRAY 1

'SETUP DIALOG CONTROLS
Begin Dialog PlateChoice 110,68,"Touch Plate"
ListBox 15,20,35,30, PlateList$(),.Lstbox2
ListBox 64,20,25,10, UnitList$(),.Listbox1
GroupBox 8,8,95,45,"Choose Plate Thickness",.GroupBox1
OKButton 57,34,37,12
Text 13,55,100,15, "Delay"
TextBox 37,55,30,10, .SecText
Text 70,55,30,15, "Seconds"
End Dialog

Dim Dlg1 As PlateChoice
Dlg1.SecText = VarDelayInSec 'FILL SECONDS TEXTBOX WITH DEFAULT VALUE

Button = Dialog (Dlg1) 'SHOW DIALOG AND WAIT FOR BUTTON REPLY

If Button = 0 Then 'IF CLOSE BUTTON
Message "Auto Tool Zero CANCELED"
End 'END SCRIPT
End If

'CHECK THAT SECONDS WAS ENTERED NUMERIC
If IsNumeric(Dlg1.SecText) = True Then
VarDelayInSec = Int(Dlg1.SecText)
Else
RET = MachMsg("***** SECONDS MUST BE ENTERED IN NUMERIC FORMAT! *****", _
" Substance Abuse Is Not Recommended ",0)
RunTheThing 'RESTART SUB
End If

'SET PLATE VARIABLE BASED ON PLATE CHOICE
PlateNum = Dlg1.Lstbox2
Select Case PlateNum
Case 0 'PRIMARY PLATE
'WILL USE PRIMARY/DEFAULT THICKNESS
Case 1 'SECONDARY PLATE
VarTouchPlate = VarSecondPlate
Case 2 'TERTIARY PLATE
VarTouchPlate = VarThirdPlate
End Select
End Sub

'*************************************************************************************************************
'*************************************************************************************************************

Avatar utente
Pedro
God
God
Messaggi: 7021
Iscritto il: domenica 6 aprile 2008, 18:44
Località: Roma

Re: auto zero tool

Messaggio da Pedro » giovedì 8 ottobre 2020, 17:06

ok, dove è scritto

VarMaxDistance = -25.4 'MAX Z TRAVEL * ALWAYS MAKE NEGATIVE

sostituisci il -25.4 con -100
"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."

fioretto
Junior
Junior
Messaggi: 105
Iscritto il: lunedì 19 luglio 2010, 23:28
Località: Arezzo

Re: auto zero tool

Messaggio da fioretto » giovedì 8 ottobre 2020, 23:40

No purtroppo non funziona fa sempre uguale parte farà un decimo di discesa oppure 3 mm ma comunque random e poi ritorna su ma senza aver toccato la sonda ! chi è che gli dice di fermarsi per poi ritornare indietro? come fa a sentire il contatto della Sonda se non la tocca? Ho provato anche a guardare mentre esegue la macro nel sinottico della diagnostica per vedere se quell'istante si accende il LED digitizer ma questo non avviene.
Non sarà mica il software mach3 che non funziona Eppure io ieri lo Reinstalla i ex-novo forse dovrei mettere il 10 o XP perché io al momento ho 7.

Avatar utente
Pedro
God
God
Messaggi: 7021
Iscritto il: domenica 6 aprile 2008, 18:44
Località: Roma

Re: auto zero tool

Messaggio da Pedro » venerdì 9 ottobre 2020, 0:46

forse se usi un cavetto non schermato potrebbe dare falsi impulsi spuri, prova ad aumentare, sulla pagina di general configuration il debounce
"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."

fioretto
Junior
Junior
Messaggi: 105
Iscritto il: lunedì 19 luglio 2010, 23:28
Località: Arezzo

Re: auto zero tool

Messaggio da fioretto » venerdì 9 ottobre 2020, 23:38

forse ho risolto invertendo la polarita della sonda cioe il coocodrillo che attacco alla fresa ho messo i 5v e sul piattello isolato il contatto aperto della scheda. probabilmente con il contrario risente di qualcosa boh speriamo duri!!!
comunque ora fatte tante prove sembra funzionare correttamente. Mentre invece ora è venuto fuori il problema con la macro di internal center finding che le tastature le facorrettamente lungo la circonfernza interna e sembra che il centro lo trovi ma alla fine ece un errore che dice "erro in line 139 mismatich error mantre invece dovrebbe darmi scritta la misura del diametro.
la macro è questa
'*************************************************************************************************************
'****************************** Find X/Y Center (INTERNAL) ******************************
'****************************** A Touch Script For Mach3 R3.043 ******************************
'******FONT******************** For Both INCH And MM Units | Rev13 Sep/2020 ******************************
'*********Courier************** CHARLIE SARSFIELD ******************************
'****************************** 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. *******************
'*************************************************************************************************************
'******************** TEST SCRIPT CAUTIOUSLY ****** USE SCRIPT AT YOUR OWN RISK ***********************
'*************************************************************************************************************
'*************************************************************************************************************
'******************** To Support My Work: http://PayPal.Me/CharlieCNC ***********************
'*************************************************************************************************************

'----- 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:\MACH3\ToolCompleteSND1.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
RET = 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
RET = 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
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
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
RET = 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
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 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
RET = 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 -------------------------------------------------------------------------------------
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
RET = 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
'*************************************************************************************************************

grazie

Avatar utente
Pedro
God
God
Messaggi: 7021
Iscritto il: domenica 6 aprile 2008, 18:44
Località: Roma

Re: auto zero tool

Messaggio da Pedro » sabato 10 ottobre 2020, 8:53

su windows hai impostato la virgola come separatore decimale? prova a usare il punto
"Ho controllato molto approfonditamente," disse il computer, "e questa è sicuramente la risposta. Ad essere sinceri, penso che il problema sia che voi non abbiate mai saputo veramente qual è la domanda."

Rispondi

Torna a “Mach3”