I have began trying to write my own sort of homing script. Homing each axis individually and swapping the Z and A axis in the middle (they are tuned the exact same). Everything starts out fine, but then the A axis moves in the wrong direction and clicking the homing switch doesn't stop the homing motion. I'm forced to hit the E-stop and restart everything. The script is as follows:
local inst = mc.mcGetInstance();
mc.mcAxisHome(inst, 2);
wx.wxMilliSleep(10);
mcState = mc.mcCntlGetState(inst);
while (mcState ~= mc.MC_STATE_IDLE) do
mcState = mc.mcCntlGetState(inst);
wx.wxMilliSleep(10);
end
mc.mcAxisSetPos(inst, 2, -0.25);
local motorIdA, rc = mc.mcAxisGetMotorId(inst, 3, 0);
local motorIdZ, rc = mc.mcAxisGetMotorId(inst, 2, 0);
mc.mcAxisUnmapMotor(inst, 2, motorIdZ);
mc.mcAxisUnmapMotor(inst, 3, motorIdA);
mc.mcAxisMapMotor(inst, 2, motorIdA);
mc.mcAxisMapMotor(inst, 3, motorIdZ);
mc.mcAxisEnable(inst, 2, true);
mc.mcAxisEnable(inst, 3, true);
mc.mcAxisSetHomeDir(inst, 2, -1);
mc.mcAxisSetHomeDir(inst, 3, -1);
mc.mcAxisHome(inst, 2);
wx.wxMilliSleep(10);
mcState = mc.mcCntlGetState(inst);
while (mcState ~= mc.MC_STATE_IDLE) do
mcState = mc.mcCntlGetState(inst);
wx.wxMilliSleep(10);
end
mc.mcAxisSetPos(inst, 2, -0.25);
mc.mcAxisUnmapMotor(inst, 3, motorIdZ);
mc.mcAxisUnmapMotor(inst, 2, motorIdA);
mc.mcAxisMapMotor(inst, 3, motorIdA);
mc.mcAxisMapMotor(inst, 2, motorIdZ);
mc.mcAxisEnable(inst, 2, true);
mc.mcAxisEnable(inst, 3, true);
mc.mcAxisSetHomeDir(inst, 2, -1);
mc.mcAxisSetHomeDir(inst, 3, -1);
mc.mcAxisHome(inst, 0);
mc.mcAxisSetPos(inst, 0, -0.25);
mc.mcAxisSetPos(inst, 1, 0);
mc.mcCntlGcodeExecuteWait (inst, "G53 G90 G0 Z0.0000 X0.0000 A0.0000");