PDA

View Full Version : Need Help! G28 moves Axes in wrong direction.



bemor187
10-10-2018, 01:33 PM
accidentally hit post early WORK IN PROGRESS Still adding info
Machine Details:

Mach 3, C62, USB smoothstepper, TEXAS MICROINSTRUMENTS tmc3in1, with ohmic touch (Kenmo Waterswitch) and floating head with backup switch to prevent crashing due to bad contact.
I have SheetCam set up to work with Touch and Go and THC using the MP1000-THC as stated in the TMC3in1 setup.

First off I am running machine with THC off. When I use G28 commands, it sends my axes' in the wrong direction(away from zero), and hits my X Y Z max limit switch (zeroing my machine on wrong side).
When I move my axes using Jog commands they move in the right direction.



I have a touch script for my ohmic switch, that manaully zeros my machine over my work piece and applies an offset. This script works flawless.[QUOTE] '*************************************************************************************************************'*********************************** Z AXIS TOUCH PLATE SCRIPT FOR MACH3 *************************************
'******FONT************************* FOR BOTH INCH AND MM UNITS *************************************
'*********Courier******************* CHARLIE SARSFIELD REV11 JAN/2018 *************************************
'*********************************** WWW.YOUTUBE.COM/SUNNY5RISING *************************************
'*********************************** SUNNY5RISE@GMAIL.COM *************************************
'*************************************************************************************************************


'----- 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
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
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
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


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


/QUOTE]

mactec54
10-10-2018, 08:08 PM
accidentally hit post early WORK IN PROGRESS Still adding info
Machine Details:

Mach 3, C62, USB smoothstepper, TEXAS MICROINSTRUMENTS tmc3in1, with ohmic touch (Kenmo Waterswitch) and floating head with backup switch to prevent crashing due to bad contact.
I have SheetCam set up to work with Touch and Go and THC using the MP1000-THC as stated in the TMC3in1 setup.

First off I am running machine with THC off. When I use G28 commands, it sends my axes' in the wrong direction(away from zero), and hits my X Y Z max limit switch (zeroing my machine on wrong side).
When I move my axes using Jog commands they move in the right direction.



I have a touch script for my ohmic switch, that manaully zeros my machine over my work piece and applies an offset. This script works flawless.[QUOTE] '*************************************************************************************************************'*********************************** Z AXIS TOUCH PLATE SCRIPT FOR MACH3 *************************************
'******FONT************************* FOR BOTH INCH AND MM UNITS *************************************
'*********Courier******************* CHARLIE SARSFIELD REV11 JAN/2018 *************************************
'*********************************** WWW.YOUTUBE.COM/SUNNY5RISING *************************************
'*********************************** SUNNY5RISE@GMAIL.COM *************************************
'*************************************************************************************************************


'----- 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
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
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
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


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


/QUOTE]

Does the machine home in the correct direction, if not you have to reverse this, then change the jogging direction, jogging the right way does not mean it is setup in your control correct as jogging direction can be changed to go what ever way you want it independently