i just had a revelation let's begin : is a cnc going where it should ?
this means : G01 axis = position, will move "axis" to "position" ? final position always is "position±error" (relation 1)
if error = 0, than this means that the cnc will deliver "real positioning", and such a thing does not exist yet
is obvious that cnc's producers struggle to reduce error
axis from my cnc's deliver 0.001 mm acuracy; does this mean that "error = 0.001" ? answer is no
let's consider this example :
N1 G01 axis = position - a bit
N2 G01 axis = position + something
N3 G01 axis = position
N4 G01 go somewhere
at line N3 machine is moving on "axis" from a "greater value=position + something" to a "lower value=position", so let's consider image 1 , where " movement direction " is shown from right to left
in the moment when cnc "reached" line 3 shown into attached image, N4 (next block) is executed; what means "reached" ?
it means that "control_position"="position"+"ipw for mills / droop for lathes"
however, after reaching line 3 ( shown into attached image ), axis movement continues until it reaches line 2 ( shown into attached image ); this means that "control_position"="position"+"eps 1"; here it stops
"control_position" is the position comanded by the cnc
"control_position" is the value displayed on the monitor
"control_position" is always ahead of the "real_cnc_position", because cnc's are designed to work this way thus, in this case "control_position"="real_cnc_position"-"folowing error", because machine is moving to left
how there is a "folowing error", also a "stop error" must exist, to avoid letting the "real_cnc_position" going in front of the "control_position"; thus "control_position"="position"+"eps 1=stop error" (relation 2)
"real_cnc_position" is recorded from a "device" like "absolute encoder", or the "AbsoScale", with some precision : "real_cnc_position"="device position"+"device error" ( relation 3 )
backlash exists; more ore less in above example, after line N1, machine moves to right for "something + a bit"( N2 ) and after it moves to left for "something"( N3 )
is "a bit" < , = , > than "backlash" ? this depends on how much is "a bit ( from the program / code )", and "backlash" on axis arround "position" ; so an error appears = eps 2, shown into attached image; eps 2 depends on "backlash - a bit" ( relation 4 )
if "a bit" >= "backlash" then eps 2 = 0
if "a bit" < "backlash" then eps 2 = 0 .. 100% backlash, depending on | backlash | - | a bit |
( . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . )
so, let's reload relation 1 : final position always is "position±error", where "error" depends on :
- a "stoping error", related with the "following error", as described into relation 2
- a "device error", from the "absolute encoder", or the "AbsoScale", as described into relation 3
- "eps 2" = 0 .. 100% backlash, as described into relation 4