With most printer geometries you can choose where on the bed the origin (the X=0 Y=0 point) will be. There are two common choices:
The M208 S0 command defines the upper position limits of each axis, and the M208 S1 command defines the lower position limits. When an axis is homed to a low end (minimum) homing switch, the axis is assumed to be at the lower position limit. When it is homed to a high end (maximum) homing switch, it is assumed to be at the upper position limit. Therefore, changing the position limits in the M208 command will move the origin.
Example: a Cartesian printer uses a low end X homing switch, which triggers when the head reference point (i.e. the nozzle in a single tool printer) is 8mm off the low-X edge of the bed. It uses a high-end Y homing switch, which triggers when the head reference point is 2mm off the high-Y edge of the bed. The bed is 200mm square.
Suppose we want to make X0 Y0 the centre of the bed. Then the Xmin edge of the bed is at X=-100 and the homing switch triggers at X=(-100-8) = -108mm. Similarly, the Ymax edge of the bed is at Y=100 and the Y homing switch triggers at Y=(100+2) = 102mm. So we can use the following commands in config.g:
M208 S1 X-108 Y-100 ; set axis lower limits
M208 S0 X100 Y102 ; set axis upper limits
or alternatively when using firmware 2.02 or later:
M208 X-108:100 Y-100:102 ; set axis limits
If instead we want to make X0 Y0 the corner of the bed then we would use:
M208 S1 X-8 Y0 ; set axis lower limits
M208 S0 X200 Y202 ; set axis upper limits
or if using firmware 2.02 or later:
M208 X-8:200 Y0:202 ; set axis limits
Notes:
The origin is always the centre of the bed and there is no facility to change it. If you really want an offset, use either a tool offset (G10) or workplace coordinates (G10 in conjunction with G54..G59.3).
In the M669 command, use the X and Y parameters to specify the offset where you want X=0 Y=0 to be relative to the centre of the proximal joint.
To be completed.