COMPENSATE_XY in the axis with the following table puts +/- 10 compensation on the axis as it moves. The table has these values:
TABLE(0, 0, -10, 10, -10, 10, -10, 10)
The COMPENSATE_XY takes the length that is put in the command and divides it into the number of table points. It then applies the additional distance of the compensation values linearly interpolated over the segments of the total length. So if the motion moves 300 and during the move it goes 10 less, then 10 more then 10 less and so on.
If at 0 compensation at position 0 and 10 compensation at position 50 it will move total 60 during that segment. If next segment compensation is -10 then it moves only 30 in next segment. And so on. You see the speed going up and down as it compensates for position errors. All the compensation is done in the demanded position (DPOS).
This is for single axis compensation, for example for a ball-screw to compensate for the cyclic variation in one turn. Usually the table values will be 0.1 mm or even less.