Machsupport Forum
Mach Discussion => Mach4 General Discussion => Topic started by: kvid on November 07, 2021, 02:09:19 PM
-
Today I had my Haimer 3D taster in the spindle (tool Nr. 2) and I wanted to load tool Nr. 6. I wrongfully typed M3 T6 instead of M6 T3 into the MDI. Luckily the spindle speed was set to only 1000 rpm, so no damage was done, but it could have been much worse.
Is there a way in Mach4 to disable the spindle for specific tools?
-
I have a few options for our machines that I do not want the spindle turning on while being used.
I wrote a custom m3 that if those tools are the current tool to not turn on the spindle.
I used registers to pass the information to the m3.
Here is the code.
function m3()
--wx.wxMessageBox('In M03')
--mc.mcCntlSetLastError(inst, "In M03")
local inst = mc.mcGetInstance()
--Get Spindle On and Spindle Auto handles
local hSpin = mc.mcSignalGetHandle(inst, mc.OSIG_SPINDLEON)
local hreg = mc.mcRegGetHandle(inst, 'iRegs0/SpindleAuto')
--Get spindle on state
local SpinOn = mc.mcSignalGetState(hSpin)
--Get Spindle Auto value
local SpinVal = mc.mcRegGetValue(hreg)
--get if tk turned on and tk osc selected
local TKOnOff = mc.mcCntlGetParameter(502)
local TKOReg = mc.mcRegGetHandle(inst, 'iRegs0/TKOscOnOff')
local TKORegVal = mc.mcRegGetValue(TKOReg)
local TKOnOffReg = mc.mcRegGetHandle(inst, 'iRegs0/TKOnOff')
local TKOnOffVal = mc.mcRegGetValue(TKOnOffReg)
if (TKOnOff == 0) then--or (TKOnOffVal == 0) then
if (SpinVal == 0) then
--mc.mcSignalSetState(hSpin, 0)
elseif (SpinOn == 0) then
local hregSpinType = mc.mcRegGetHandle(inst, 'iRegs0/SpindleType')
local SpinType = mc.mcRegGetValue(hregSpinType)
--local hregSpinCool = mc.mcRegGetHandle(inst, 'iRegs0/SpinCool')
local hsigSpinCool = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT4)
if (SpinType == 2) then --and (TKOnOff == 0)then
--mc.mcRegSetValue(hregSpinCool, 1)
mc.mcSignalSetState(hsigSpinCool, 1)
wx.wxMilliSleep(2000)
end
-- if (TKOnOff == 0) then
mc.mcSignalSetState(hSpin, 1)
--local hrSpinType = mc.mcRegGetHandle(inst, 'iRegs0/SpindleType')
--local SpinType = mc.mcRegGetValue(hrSpinType)
if (SpinType == 0) then
wx.wxMilliSleep(1500)
elseif (SpinType == 1) then
wx.wxMilliSleep(5500)
elseif (SpinType == 2) then
wx.wxMilliSleep(11000)
end
-- end
end
elseif (TKOnOff == 1) and (TKORegVal == 1)then
local TKOscH = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT9)
mc.mcSignalSetState(TKOscH, 1)
end
end
if (mc.mcInEditor() == 1) then
m3()
end