How to get tool offset in linuxcncrsh?
Load the tool table and manually enter an X offset of 0.5 for Tool 2, save the file, and re-read.
Type in the MDI command: "t2 m6 g43"
Type in the MDI command: "g0 x0 z0"
At this point, the axis display and DRO shows the tool at x=0, z=0.
From a terminal window, I manually start linuxcncrsh.
From a second terminal window, I connect to linuxcncrsh and try various commands:
get tool
TOOL 2
get tool_offset
TOOL_OFFSET 0
get abs_cmd_pos
ABS_CMD_POS 0.500000 0.000000 0.000000 0.000000 0.000000 0.000000
get abs_act_pos
ABS_ACT_POS 0.500000 0.000000 0.000000 0.000000 0.000000 0.000000
get rel_cmd_pos
REL_CMD_POS 0.500000 0.000000 0.000000 0.000000 0.000000 0.000000
get rel_act_pos
REL_ACT_POS 0.500000 0.000000 0.000000 0.000000 0.000000 0.000000
get joint_pos
JOINT_POS 0.500000 0.000000 0.000000 0.000000 0.000000 0.000000
get pos_offset
POS_OFFSET 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
So no matter how I try to get the coordinates, it returns x=0.5. From reading the manual pages, I would have expected the relative positions to be different from the absolute positions by the tool offset. Also, would expect that the "get tool_offset" command would have returned the offset of the tool with all values (why does it only return one value and that value is zero?)
So how can I get the relative position that shows in the DRO of the axis display? Alternately, how can I get the tool offset and make the correction myself?
Please Log in or Create an account to join the conversation.
One dodge I used a while ago was to use G92 X0 Y0 Z0 to store the current location in #5211 onwards, then G92.2 to remove the effect.
Please Log in or Create an account to join the conversation.
I have a partial answer about the offset
It looks like linuxcncrsh assumes everyone uses only 3 axis mills
It will always return the Z tool offset
static cmdResponseType getToolOffset(char *s, connectionRecType *context)
{
const char *pToolOffsetStr = "TOOL_OFFSET %d";
sprintf(context->outBuf, pToolOffsetStr, emcStatus->task.toolOffset.tran.z);
return rtNoError;
}
The code for the various positions is interesting.
It appears the commands take an argument of the axis number eg get abs_cmd_pos 0, which I had not realised.
If no argument is given, it returns all axes.
getPosOffset takes an argument of a capital letter for the axis too eg get pos_offset X
This business of the offsets being wrong or wrongly returned vaguely rings a bell.
I seem to recall Andy found a basic error in the calculation, but I could be confusing it with something else.
regards
Please Log in or Create an account to join the conversation.
This business of the offsets being wrong or wrongly returned vaguely rings a bell.
I seem to recall Andy found a basic error in the calculation, but I could be confusing it with something else.
You recall correctly -- it was about 2 years ago that you found some incorrect calculations rel_act_pos and abs_act_pos. Here's the link to the old thread:
www.linuxcnc.org/emc2/index.php/english/...-values?limitstart=0
Whether I use "get pos_offset" or "get pos_offset X" I still get a value of 0.0 where I'm expecting a value of 0.5 for the tool offset.
I understand what you are saying about the "get tool_offset" always returning only the Z offset. I edited the tool table and put 0.3 for z offset. Now in linuxchcrsh I get:
get tool_offset
TOOL_OFFSET 858993459
It looks like something is wrong with the formatting because its not giving a floating point value.
How hard would it be to fix this?
Please Log in or Create an account to join the conversation.
You recall correctly -- it was about 2 years ago that you found some incorrect calculations rel_act_pos and abs_act_pos. Here's the link to the old thread:
www.linuxcnc.org/emc2/index.php/english/...-values?limitstart=0
Glad my memory wasn't playing tricks, it all comes back to be now.
You are probably still the only person using linuxcncrsh though
It looks like something is wrong with the formatting because its not giving a floating point value.
How hard would it be to fix this?
The more I look at this the worse it gets
There are 2 things wrong with this code
static cmdResponseType getToolOffset(char *s, connectionRecType *context)
{
const char *pToolOffsetStr = "TOOL_OFFSET %d";
sprintf(context->outBuf, pToolOffsetStr, emcStatus->task.toolOffset.tran.z);
return rtNoError;
}
You could simply change the code to display the X offset, just change that line to
sprintf(context->outBuf, pToolOffsetStr, emcStatus->task.toolOffset.tran.x);
But the format specifier being passed to sprintf is %d, which is an int value.
It should be %f which covers float / double, because the offset is a double
So, if you are in a position to recompile your sources (only need to recompile emcrsh.cc)
Then substitute this function for the one above and see where that gets you
static cmdResponseType getToolOffset(char *s, connectionRecType *context)
{
const char *pToolOffsetStr = "TOOL_OFFSET %f";
sprintf(context->outBuf, pToolOffsetStr, emcStatus->task.toolOffset.tran.x);
return rtNoError;
}
regards
Please Log in or Create an account to join the conversation.
static cmdResponseType getToolOffset(char *s, connectionRecType *context)
{
const char *pToolOffsetStr = "TOOL_OFFSET %f";
switch (s[0])
{
case 'X': sprintf(context->outBuf, pToolOffsetStr, emcStatus->task.toolOffset.tran.x);
break;
case 'Y': sprintf(context->outBuf, pToolOffsetStr, emcStatus->task.toolOffset.tran.y);
break;
case 'Z':
default: sprintf(context->outBuf, pToolOffsetStr, emcStatus->task.toolOffset.tran.z);
break;
}
return rtNoError;
}
Not tested but builds OK
regards
Please Log in or Create an account to join the conversation.
It's been many years since I did any amount of C programming (I mostly do Java now) but it will come back to me quick enough. I'll need to download the source and stuff and then play with it. You may be correct in saying I'm probably the only one using linuxcncrsh, so I probably should get used to taking some ownership to understand the code and make fixes.
Dewey Garrett now lives in the same town as I and he should be able to help me if I get stuck.
Thanks,
Bill
Please Log in or Create an account to join the conversation.
Dewey Garrett now lives in the same town as I
The world centre of ornamental turning?
www.billooms.com
www.deweygarrett.com
Lots of lovely stuff on both sites.
Please Log in or Create an account to join the conversation.
The world centre of ornamental turning?
That's what we call it! It's fun getting together and generating new ideas together.
Please Log in or Create an account to join the conversation.