We might have isolated the issue and may have a solution:
Lets say we have a toolaxis which has a reduction of 3.2
Meaning 3.2 motor revolutions for 1 axis revolution.
When we rotate the axis 1.8 revolutions the motor will sit at (1.83603.2=2073.6 degrees)
On the measurement link it will read 5 revolutions plus 273.6 degrees.
Now when we IndReset ref\short and rotate to 0 the axis will move another 0.2 revolutions to complete the 2 revolutions.
after the reset the axis position will have moved from 648 to -72 degrees.
Axis is now at -72
motor is at 5*360 + 273.6
Rotating the other 72 degrees will move the motor to 5360 + 273.6 + 723.2 = 2304.
Axis is now at 0,
motor is at 6*360 + 144 degrees.
so the new 0 position for this motor/resolver is 144 degrees different from it’s original 0 position.
So Far, this will not give any issues. However, now we drop this tool (Resolver at 144) and pick up a different tool (same gear ratio) with it’s resolver at 72 degrees. (only 1 axis rotation instead of 2)
Performing an IndReset now will move the axis postion a full number of 360 degree rotations, in this case 0, so no change, however the resolver still sits at 72 degrees, which devided by the gear ratio is 22.5.
Despite the tool being at the correct 0 position, the value will read ±22.5 degrees.
For this reason we think toolchange and IndReset are not supported.
Our solution (possibly):
Make sure gearbox ratio’s are a full integer, so 0 on the motor’s resolver will always correspond with 0 on the Axis.
Then, the gear ratio should be applied to the programmed postitions beforehand.
with for example:
Gearratio in motion config:= 3.0
in rapid:
CONS GearRatio:=3.2/3.0;
Targetpos.extax.eax_d:=Targetpos.extax.eax_d*GearRatio;
MoveL Targetpos etc. etc…;
This way programed positions would still work and the resolver will stay at 0 after each IndReset.
Granted, it’s not pretty but it might just work.
We’ll try in July.