In my app motors #3 and #4 belong to the same vertical axis Z (#3->100z, #4->100z).
I use Master/Slave config (position following mode) to control the axis.
Motor 3 is a Master, Motor 4 is a Slave.
In feedrate (linear) moves motors have almost equal speeds but different actual positions at the end of move.
Position difference depends on feedrate setpoint.
For example, if both motors go from z0 to z500 at speed F900,
at the end of move actual position of Master is 500, Slave - 500.35 mm.
The same move by F9000 gives actual position of Master 500, Slave - 503.5 mm!
How to get positions of both motors the same?
In feedrate (linear) moves (G01, G02/G03) both motors have nearly the same speed, defined by F-code.
But in rapid moves (G00) Slave has double speed as compared to Master's one.
Why does it happen?
Speeds both in linear and in rapid moves are defined by Ixx16 variables, as Ixx90=1. So if I316=1, motor #3 moves at speed 10 mm/s, motor #4 - at 20 mm/s.
In jog moves both motors have the same speeds, defined by Ixx22 variable of Master.
Actual positions at the end of move are equal and do not depend on jog speed.
All the i3xx, i4xx parameters are the same, except the following:
I302=$78014; I402=$7801C
I303=$3503; I403=$3504
I304=$3503; I404=$3504
I305=$3504; I405=$3503
I306=0; I406=1
I313=58000; I413=0
I314=-3000; I414=0
I325=$78010; I425=$78018
I383=$78011; I483=$78019