Machsupport Forum
Mach Discussion => General Mach Discussion => Topic started by: gnorton on August 19, 2012, 01:44:53 PM
-
I've got a touch off plate, but the software only half works. By this I mean the tool comes down and stops when it touches the plate, but it does not then retract and it does not set the Z height. Also, after running this macro I cannot manually jog the machine until I reset it. Can someone point out what I'm doing wrong? I "borrowed" this macro code from these forums (thanks to whomever wrote it). The code seems OK to me.
Thanks.
Greg
'Tool Zero Setting Macro
' Change the following three lines to suit your machine
PlateThickness = GetOEMDRO(1001) ' Thickness of touch plate
RetractClearance = 0.100 ' Clearance above touch plate to retract to
ProbeFeed = 5 ' Feedrate to use for probing
' Define some constants
ZDRO = 2 ' Z Axis DRO
AbsoluteModeLED = 48 ' Absolute Coordinate Mode LED
IncrementalModeLED = 49 ' Incremental Coordinate Mode LED
FeedrateDRO = 818 ' OEM code for feedrate DRO
ProbeLED = 825 ' OEM code for probe input LED
ZTouchDRO = 2002 ' OEM code for DRO that holds Z touch position
' Do nothing if probe is already grounded
If GetOemLed(ProbeLED) = 0 Then
' Wait a few seconds for user to get touchplate in place
Code "G4 P2"
' Save current feedrate
CurrentFeed = GetOemDRO(FeedrateDRO)
' Save current coordinate mode
AbsMode = GetOemLED(AbsoluteModeLED)
' Set absolute coordinate mode
Code "G90"
' Zero Z DRO
Call SetDro (ZDRO, 0.0000)
' Pause for DRO to update
Code "G4 P0.5"
' Do the touch move
Code "G31 Z-0.5 F" & ProbeFeed
' Wait for it to complete
While IsMoving()
Wend
' Delay a bit for Huh
Code "G4 P0.25"
' Get the Z position where probe input triggered
ZProbePos = GetVar(ZTouchDRO)
' Go back to touch position (G31 backs off after touch)
Code "G0 Z" & ZProbePos
' Wait for it to complete
While IsMoving ()
Wend
' Set Z DRO to touch plate thickness
Call SetDro (ZDRO, PlateThickness)
' Pause for DRO to update
'Code "G4 P0.5"
' Retract Z to SafeZ, if enabled, else to RetractClearance above plate
If(IsSafeZ() = 1) Then
SafeZ = GetSafeZ
If SafeZ > PlateThickness Then
GotoSafeZ()
End If
Else
RetractHeight = PlateThickness + RetractClearance
Code "G0 Z" & RetractHeight
End If
' Tell user we're done
Code "(Z axis is now zeroed)"
' Reset feedrate to original value
Code "F" & CurrentFeed
' Reset coordinate mode to original value
If AbsMode = 0 Then
Code "G91"
End If
Else
Code "(Z-Plate is grounded, check connection and try again)"
End If
Exit Sub
-
Is your probe seen correctly by Mach, could you have its active state the wrong way?
Hood
-
Hood,
Yes, I believe the probe is being seen correctly by Mach. On the diagnostics screen, the digitize LED lights up when the bit touches the plate. Also, when executing the macro, the Z axis stops as soon as it touches the plate. The code is also checking to see if the probe is already active when the macro starts, so I should have received a message to that effect if this were the case.
Thanks for your help.
Greg
-
Oh well only other thing I can think of, assuming the macro is correct, that you have some noise on the probe.
Presume you are using the parallel port and not some external controller?
Hood
-
Hood,
That is correct, I'm using the parallel port.
Thanks.
Greg
-
Do you have a DRO 1001 on your screen for the plate thickness?
If not, change
PlateThickness = GetOEMDRO(1001) ' Thickness of touch plate
to
PlateThickness = .125 ' Thickness of touch plate
with the .125 being the thickness of your plate.
-
Gerry,
I modified the macro as you suggested and there was no change in behavior. So I removed some of the complexity to try and locate the offending line. It seems that the machine is just ignoring the retract move and I still get the message saying "Z Axis is now zeroed". The Z axis DRO is being set properly, just no retraction move is done.
Any suggestions are welcome, below is the current version that I'm using that has been stripped down to the bare minimum.
Greg
'Tool Zero Setting Macro
' Change the following three lines to suit your machine
PlateThickness = 0.060 ' Thickness of touch plate
RetractClearance = 1.000 ' Clearance above touch plate to retract to
ProbeFeed = 5 ' Feedrate to use for probing
' Define some constants
ZDRO = 2 ' Z Axis DRO
' Wait a few seconds for user to get touchplate in place
Code "G4 P2"
' Do the touch move
Code "G31 Z-0.5 F" & ProbeFeed
' Wait for it to complete
While IsMoving()
Wend
' Delay a bit
Code "G4 P0.25"
' Set Z DRO to touch plate thickness
Call SetDro (ZDRO, PlateThickness)
Code "G0 Z0.250"
' Tell user we're done
Code "(Z axis is now zeroed)"
Exit Sub
-
Do you have a licence? I am not sure if it is required or not for probing.
Hood
-
Try changing this:
If(IsSafeZ() = 1) Then
SafeZ = GetSafeZ
If SafeZ > PlateThickness Then
GotoSafeZ()
End If
Else
RetractHeight = PlateThickness + RetractClearance
Code "G0 Z" & RetractHeight
End If
to this:
RetractHeight = PlateThickness + RetractClearance
Code "G0 Z" & RetractHeight
Retracting to SafeZ in a macro is dangerous, because the macro doesn't know if Safe Z is in work coordinates or machine coordinates.
-
Hi Greg,
This is a shot in the dark but try adding the following line to your script, just before the Code "G0 Z0.250" line and see if that cures the problem.
DoOemButton (1003)
Tweakie.
-
OK, very strange behavior is happening now, see below. But first to address the questions:
Hood - yes I'm using a licensed copy of Mach.
Gerry - thanks for the info about the safe Z retract. I will add that back to the macro when I have figured out why it's not behaving properly after touching the plate. For now I would be happy to get correct and consistent results from this macro.
Tweakie - I added your line "DoOemButton(1003)" where you specified. This caused some very strange behavior. What does this do?
1. The direction of movement was frequently up instead of down when doing the probe move. But it wasn't consistently wrong. This seems to be before it even executed your new line.
2. When your line was in the macro, after touching the plate, the machine moved on the X and Z axes simultaneously when it tried to retract. It moved about 2 inches to the right as well as moving up about the 0.25 inches specified by the macro.
I am quite mystified by this, so if anyone can set me straight I would appreciate it very much.
Thanks to everyone.
Greg
-
Hi Greg,
Sorry to say this but it sounds to me like your problems are a lot more deeply routed than just the operation of this probing script.
As there is nothing in the probing script which could possibly command any X Axis movement you should perhaps look at your machine setup in general as it is exhibiting signs of being extremely unstable.
It could possibly be with your Mach installation, your PC, the motion controller or even electrical noise pickup on your wiring but you would be wise to investigate and resolve this issue first.
Tweakie.
-
Tweakie,
Where would I even start for something like this? I should note that the machine works fine in regular operation. The only time I have this problem is when using this macro? If it was a systemic problem with machine itself I would think that other odd behaviors would be showing up at other times when I'm using the machine.
Thanks for your input, I'm just not sure where to start looking right now.
Greg
-
Hi Greg,
I understand your dilemma but the problem is not so much with your macro (which works fine here although, as Gerry has pointed out can be improved upon) as it is with the way in which the Mach3 software running on your PC handles it.
Because I and many others use the Auto Tool Zero function, without issue and on a daily basis I can only conclude that your problem will somehow be with your setup. If possible could you perhaps try the temporary use of another PC and see if this makes any difference ??
Tweakie.