I have three DRO's; one for X move value, one for Y move, and one for feed rate. The feed rate entered is an absolute feed rate so the feed rate is determined as a percentage of 150in/min(100% jog speed on my setup)
After calculating the diagonal distance needed to travel, feed rate values are calculated for the X and Y so that the motors move together and arrive at the same point at the same time. the values are factors of the Hypotenuse so as to create the right triangle.
For some reason I was originally having issues with setting slow feed rates because the motors were running at rapid feed rates and the PMDX BOB was sending strange signals resulting in the motors moving abnormally slowly(up to 10x slower than was entered). After the jog rate was corrected in the configurations it ran smoothly.
The script is all in the "left up" section, there are probably more tonumber() functions than are necessary, but I was having some problems and haven't gone back to remove extras as they don't cause any issues.
--"Move To" Script
local inst = mc.mcGetInstance()
local hypLength = 0
local rateH = scr.GetProperty("droSpeed", "Value") --Requires DRO named "droSpeed"
local rateX = 0
local rateY = 0
local xJog = scr.GetProperty("droXmove", "Value") --Requires DRO named "droXmove"
local yJog = scr.GetProperty("droYmove", "Value") --Requires DRO named "droYmove"
local xNeg = 1
local yNeg = 1
hypLength = tonumber(hypLength)
rateH = tonumber(rateH)
rateX = tonumber(rateX)
rateY = tonumber(rateY)
xJog = tonumber(xJog)
yJog = tonumber(yJog)
xNeg = tonumber(xNeg)
yNeg = tonumber(yNeg)
--Determining if negative values
if(xJog < 0) then
xNeg = -1
math.abs(xJog)
end
if(yJog < 0) then
yNeg = -1
math.abs(yJog)
end
--X Y Rates Calc
hypLength = math.sqrt((xJog^2)+(yJog^2))
rateX = xJog/hypLength
rateX = rateH*rateX
rateY = yJog/hypLength
rateY = rateH*rateY
--Feed rate calcs if single asix travel(100% = 150in/min)
if(xJog or yJog == 0) then
rateH = rateH/1.50
rateH = tonumber(rateH)
rateX = rateH
rateY = rateH
end
--Set jog rate for each axis
rateX = tonumber(rateX)
rateY = tonumber(rateY)
mc.mcJogSetRate(inst, 0, rateX)
mc.mcJogSetRate(inst, 1, rateY)
--Input distance to travel for each axis
xJog = tonumber(xJog)
yJog = tonumber(yJog)
xJog = xJog*xNeg
yJog = yJog*yNeg
mc.mcJogIncStart(inst, 0, xJog)
mc.mcJogIncStart(inst, 1, yJog)
Thanks again for all the help, I hope this can be of use to others as well