Eric,
Please don't let that be your last post.
I just want to encourage people to always test a suspected symptom against 1024 as a first test for "is it a MSM issue or a mach issue?".
Communication via email/posts can easily go off the rails - my apologies if it sounded as if don't want the questions. I really don't mean to discourage anyone from posting! When I get rushed for time, my writing tends to get a bit terse - which ends up sounding harsher in writing than I meant it to.
If the question is not about an MSM bug issue, I'll usually still try to answer as I have time - it's just that my response time may be slower for general questions than for specific MSM issues.
Please do stay around. Having done the MSM software development, I am enjoying seeing how people use it.
No matter how hard I tried to make the interface intuitive, different people try different things that I would have thought of.
I like learning what people try to do - and it helps me find ways to make MSM better.
Re G43: What the concept of TLOs do is allow a gcode program to be written without the need to know the dimensions of the tool at the time the program is written. The programmer does not need to worry about if the tool crib has only 1" long or 2" long or other length 1/2" diameter end mill.
This means that before a gcode program is run, the operator has to teach teach the control the dimensions of the available tools. When the program is run, the control (Mach) uses the dimensions supplied by the operator, as called for by the program, to run the program. Commercial controls have 2 sets of registers: one set for lengths (H registers) and one set for diameters (D registers). The registers are accessed by number. Usually there are as many D and H registers as there are tool numbers (but this is not a gcode language requirement). The operator puts TLO values in H registers and Diameters in D registers.
A program can have the control (mach) adjust the position of the spindle vertically so that the tip of the tool is where the program wants it. Doing this is called Tool length compensation. Tool length compensation is turned on with G43 (there are other Tool comp gcode that are very seldom used, I'll ignore them for now) and off with G49.
So, when the gcode program says "G43", what TLO value should be used? That is determined by the H word. Think of the H# as a parameter to the G43 command. To change the amount TLO being applied, you should use G43 H#.
An analogy might be a navigator giving a driver directions: Substitute "Turn" for G43 and "Left or Right" for H. If you tell a driver "Turn", they are likely to be much more confused than if you say "Turn Left".
The reason for a G43 after each tool change, is that there is a new tool mounted in the spindle by the tool change. Now the control needs to know what TLO value to use for the tool. Thus a G43 H# is required. Without that, the control does not know how to adjust the spindle Z position to put the tool tip at the desired WC Z position.
Now I'm going to confuse you a bit by explaining what Mach3 V3 and earlier does that is, well, frankly, screwed up - and has been fixed in V4...
Now, then, here is a key concept: Gcode does not require that the TLO for tool #5 be in H register #5. Gcode lets you put any TLO, for any tool, in any H register.
it's not uncommon for multiple TLO values to be used with a single tool. For example, think of a slotting saw on a vertical mill - some operations will want to position the saw vie the upper face of the saw , and others via the lower face of the saw. This is done by changing the H register that the TLO value is taken from.
Mach will let you say G43 in a program without a H word in the block (Line) of code.
I believe that should be an gcode syntax error - because it's an ambiguous, incomplete preparatory command.
What M3V3 does is **assume** that the H# is implied and the implied H3=current T#. So if T7 is mounted, mach assumes the value is in "H7" and uses that TLO value.
Back to the driver analogy: It's the equivalent of saying "Turn!" and mach goes left.... even if the navigator meant to go right....
This is why you may see Mach3 gcode programs with only G43 on a line. It works, sometimes, and only in Mach3,
but it is not good gcode programming practice to do this.This implicit "help" from Mach may sound nice at first glance.. but the devil is in the details....
This has the effect of converting a **common convention** (many gcode programs use H#=T# as it's simple and easy to remember) into a GCode syntax rule. This effectively change the definition of what the GCode command does.
What happens if you run a program where the gcode programmer used a convention where the TLO for T#n is in H#n+10?
FYI - Mach3 V4 has fully implemented D and H registers. The V4 version of the MSM tooling page has D and H register DROs.
Brain also tells me he used the Peter Smid book as the reference spec for how the implementation will work. This is why I recommend reading Smid - it will get one on the path to stay out of trouble then Mach3 V4 is released.
I'm hoping that this helps explain why I say that it's normal for each tool change to be followed by G43 H#.
Dave
Hi Dave
Sorry for being such a bother. This will be my final post. Zeroed to top of part means that Tool 1 using a touch plate to set the TLO to the top of part by pushing the Measure TLO button. Same procedure for Tool 2. I guess I don't understand the useage of the G43 command. I'll do some reading to educate my self. I didn't realize you had to had to use G43 after every tool change to apply the tool offset. I don't get the "H" command at all. I'll follow your advice and check out the CNC cook book site.
Thanks for the help.
Eric