Manual Pendant Configuration for Mach4 with ESS and C22

Used software: Mach4 4.2.0.4612. 

https://www.machsupport.com/ftp/Mach4/DevlopmentVersions/Mach4Hobby_Installer-4.2.0.4612.exe

ESS Plugin Mach4: ESS v278.1 

https://warp9td.com/files/Plugins/ESS/Mach4/ESS_Mach4_v278.1.zip

 

Plugin config

STEP 1: Pins Config

 

STEP 2: Input Signal

 

 

STEP 3: Control Configuration / MPGs

 

STEP 4:

You can download, install, and use this screen:

https://www.cnc4pc.com/pub/media/productattachments/files/wx6_MPG.zip

Or you can edit the screen manually by adding the Lua code as explained below.

 

 

STEP 5: Copy the following code at the end of the screen script or Download
https://www.cnc4pc.com/pub/media/productattachments/files/Script_for_Mach4.txt

 

 

--------------------------------------

-- CNC4PC Pendant --

--------------------------------------

-- These simply run the CNC4PCPendant function if their state changes.

SigLib = {

[mc.ISIG_INPUT10] = function (state)

CNC4PCPendant()

end,

[mc.ISIG_INPUT11] = function (state)

CNC4PCPendant()

end,

[mc.ISIG_INPUT12] = function (state)

CNC4PCPendant()

end,

[mc.ISIG_INPUT13] = function (state)

CNC4PCPendant()

end,

[mc.ISIG_INPUT14] = function (state)

CNC4PCPendant()

end,

[mc.ISIG_INPUT15] = function (state)

CNC4PCPendant()

end,

[mc.ISIG_INPUT16] = function (state)

CNC4PCPendant()

end,

[mc.ISIG_INPUT17] = function (state)

CNC4PCPendant()

end,

[mc.ISIG_INPUT18] = function (state)

CNC4PCPendant()

end,

[mc.ISIG_INPUT19] = function (state)

CNC4PCPendant()

end

}

---------------------------------------------------------------

-- CNC4PC Pendant function.

---------------------------------------------------------------

function CNC4PCPendant()

local hSig, rc = mc.mcSignalGetHandle(inst, mc.ISIG_INPUT10) -- Is mapped to Port 2 Pin 4 *X

Selection local XSelection, rc = mc.mcSignalGetState(hSig)

local hSig, rc = mc.mcSignalGetHandle(inst, mc.ISIG_INPUT11) -- Is mapped to Port 2 Pin 5 *Y

Selection local YSelection, rc = mc.mcSignalGetState(hSig)

local hSig, rc = mc.mcSignalGetHandle(inst, mc.ISIG_INPUT12) -- Is mapped to Port 2 Pin 6 *Z

Selection local ZSelection, rc = mc.mcSignalGetState(hSig)

local hSig, rc = mc.mcSignalGetHandle(inst, mc.ISIG_INPUT13) -- Is mapped to Port 2 Pin 7 *A

Selection local ASelection, rc = mc.mcSignalGetState(hSig)

local hSig, rc = mc.mcSignalGetHandle(inst, mc.ISIG_INPUT14) -- Is mapped to Port 2 Pin 8 *.001

Selection

local Step001, rc = mc.mcSignalGetState(hSig)

local hSig, rc = mc.mcSignalGetHandle(inst, mc.ISIG_INPUT15) -- Is mapped to Port 2 Pin 9 *.010

Selection

local Step010, rc = mc.mcSignalGetState(hSig)

local hSig, rc = mc.mcSignalGetHandle(inst, mc.ISIG_INPUT16) -- Is mapped to Port 2 Pin 10 *.100

Selection

local Step100, rc = mc.mcSignalGetState(hSig)

local hSig, rc = mc.mcSignalGetHandle(inst, mc.ISIG_INPUT17) -- Is mapped to Port 2 Pin 15

*Estop local PenStop, rc = mc.mcSignalGetState(hSig)

local hSig, rc = mc.mcSignalGetHandle(inst, mc.ISIG_INPUT18) -- Is mapped to Port 2 Pin 12 *B

Selection

local BSelection, rc = mc.mcSignalGetState(hSig)

local hSig, rc = mc.mcSignalGetHandle(inst, mc.ISIG_INPUT19) -- Is mapped to Port 2 Pin 13 *C

Selection

local CSelection, rc = mc.mcSignalGetState(hSig)

local PenJogOn, rc = mc.mcSignalGetHandle(inst, mc.OSIG_OUTPUT10)-- Is mapped to Port 2 Pin

1

*Jog on LED if XSelection == 1 then

mc.mcMpgSetAxis(inst, 0, 0) --X Axis

mc.mcCntlSetLastError(inst, "X

Selected")

mc.mcSignalSetState(PenJogOn, 1)

elseif YSelection == 1 then

mc.mcMpgSetAxis(inst, 0, 1) --Y Axis

mc.mcCntlSetLastError(inst, "Y

Selected")

mc.mcSignalSetState(PenJogOn, 1)

elseif ZSelection == 1 then

mc.mcMpgSetAxis(inst, 0, 2) --Z Axis

mc.mcCntlSetLastError(inst, "Z

Selected")

mc.mcSignalSetState(PenJogOn, 1)

elseif ASelection == 1 then

mc.mcMpgSetAxis(inst, 0, 3) --A Axis

mc.mcCntlSetLastError(inst, "A

Selected")

mc.mcSignalSetState(PenJogOn, 1)

elseif BSelection == 1 then

mc.mcMpgSetAxis(inst, 0, 4) --B Axis

mc.mcCntlSetLastError(inst, "B

Selected")

mc.mcSignalSetState(PenJogOn, 1)

elseif CSelection == 1 then

mc.mcMpgSetAxis(inst, 0, 5) --C Axis

mc.mcCntlSetLastError(inst, "C

Selected")

mc.mcSignalSetState(PenJogOn, 1)

else

mc.mcMpgSetAxis(inst, 0, -1) --No Axis

mc.mcCntlSetLastError(inst, "No Axis Selected")

mc.mcSignalSetState(PenJogOn, 0)

end

if Step001 == 1 then

mc.mcMpgSetInc(inst, 0,

.001) elseif Step010 == 1

then mc.mcMpgSetInc(inst,

0, .010) elseif Step100 == 1

then mc.mcMpgSetInc(inst,

0, .100) end if PenStop == 1

then mc.mcCntlEStop(inst)

end

end

 

STEP 6: Exit and save the screen and it will be ready.