Search Results (Searched for: stepper spindle)
- DougM
- DougM
16 Aug 2024 16:16 - 16 Aug 2024 16:18
Replied by DougM on topic Mesa 7I92TM Parallel port pin mapping
Mesa 7I92TM Parallel port pin mapping
Category: PnCConf Wizard
Successfully flashed 7i92t_5abobx2d.bin onto the MESA card (and performed a reload).
Here is the output of readhmid:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Configuration Name: HOSTMOT2
General configuration information:
BoardName : MESA7I92
FPGA Size: 20 KGates
FPGA Pins: 256
Number of IO Ports: 2
Width of one I/O port: 17
Clock Low frequency: 100.0000 MHz
Clock High frequency: 180.0000 MHz
IDROM Type: 3
Instance Stride 0: 4
Instance Stride 1: 64
Register Stride 0: 256
Register Stride 1: 256
Modules in configuration:
Module: DPLL
There are 1 of DPLL in configuration
Version: 0
Registers: 7
BaseAddress: 7000
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: WatchDog
There are 1 of WatchDog in configuration
Version: 0
Registers: 3
BaseAddress: 0C00
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: IOPort
There are 2 of IOPort in configuration
Version: 0
Registers: 5
BaseAddress: 1000
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: QCount
There are 2 of QCount in configuration
Version: 2
Registers: 5
BaseAddress: 3000
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: StepGen
There are 10 of StepGen in configuration
Version: 2
Registers: 10
BaseAddress: 2000
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: PWM
There are 2 of PWM in configuration
Version: 0
Registers: 5
BaseAddress: 4100
ClockFrequency: 180.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: LED
There are 1 of LED in configuration
Version: 0
Registers: 1
BaseAddress: 0200
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Configuration pin-out:
IO Connections for P2
DB25 pin# I/O Pri. func Sec. func Chan Sec. Pin func Sec. Pin Dir
1 0 IOPort PWM 0 PWM (Out)
14 1 IOPort None
2 2 IOPort StepGen 0 Step/Table1 (Out)
15 3 IOPort None
3 4 IOPort StepGen 0 Dir/Table2 (Out)
16 5 IOPort StepGen 8 Step/Table1 (Out)
4 6 IOPort StepGen 1 Step/Table1 (Out)
17 7 IOPort StepGen 8 Dir/Table2 (Out)
5 8 IOPort StepGen 1 Dir/Table2 (Out)
6 9 IOPort StepGen 2 Step/Table1 (Out)
7 10 IOPort StepGen 2 Dir/Table2 (Out)
8 11 IOPort StepGen 3 Step/Table1 (Out)
9 12 IOPort StepGen 3 Dir/Table2 (Out)
10 13 IOPort None
11 14 IOPort QCount 0 Quad-A (In)
12 15 IOPort QCount 0 Quad-B (In)
13 16 IOPort QCount 0 Quad-IDX (In)
IO Connections for P1
DB25 pin# I/O Pri. func Sec. func Chan Sec. Pin func Sec. Pin Dir
1 17 IOPort PWM 1 PWM (Out)
14 18 IOPort None
2 19 IOPort StepGen 4 Step/Table1 (Out)
15 20 IOPort None
3 21 IOPort StepGen 4 Dir/Table2 (Out)
16 22 IOPort StepGen 9 Step/Table1 (Out)
4 23 IOPort StepGen 5 Step/Table1 (Out)
17 24 IOPort StepGen 9 Dir/Table2 (Out)
5 25 IOPort StepGen 5 Dir/Table2 (Out)
6 26 IOPort StepGen 6 Step/Table1 (Out)
7 27 IOPort StepGen 6 Dir/Table2 (Out)
8 28 IOPort StepGen 7 Step/Table1 (Out)
9 29 IOPort StepGen 7 Dir/Table2 (Out)
10 30 IOPort None
11 31 IOPort QCount 1 Quad-A (In)
12 32 IOPort QCount 1 Quad-B (In)
13 33 IOPort QCount 1 Quad-IDX (In)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
and here is the current HAL file (after manual edits for num_encoders, num_stepgens and num_pwmgens)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Generated by PNCconf at Fri Aug 16 08:59:19 2024
# Using LinuxCNC version: Master (2.9)
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt hostmot2
loadrt hm2_eth board_ip="10.10.10.10" config="num_encoders=2 num_pwmgens=0 num_stepgens=3 sserial_port_0=00xxxxxx"
setp hm2_7i92.0.watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.z,pid.s
addf hm2_7i92.0.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf pid.x.do-pid-calcs servo-thread
addf pid.y.do-pid-calcs servo-thread
addf pid.z.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs servo-thread
addf hm2_7i92.0.write servo-thread
setp hm2_7i92.0.dpll.01.timer-us -50
setp hm2_7i92.0.stepgen.timer-number 1
# external output signals
# external input signals
#*******************
# AXIS X JOINT 0
#*******************
setp pid.x.Pgain [JOINT_0]P
setp pid.x.Igain [JOINT_0]I
setp pid.x.Dgain [JOINT_0]D
setp pid.x.bias [JOINT_0]BIAS
setp pid.x.FF0 [JOINT_0]FF0
setp pid.x.FF1 [JOINT_0]FF1
setp pid.x.FF2 [JOINT_0]FF2
setp pid.x.deadband [JOINT_0]DEADBAND
setp pid.x.maxoutput [JOINT_0]MAX_OUTPUT
setp pid.x.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.x.maxerror 0.000500
net x-index-enable => pid.x.index-enable
net x-enable => pid.x.enable
net x-pos-cmd => pid.x.command
net x-pos-fb => pid.x.feedback
net x-output <= pid.x.output
# Step Gen signals/setup
setp hm2_7i92.0.stepgen.01.dirsetup [JOINT_0]DIRSETUP
setp hm2_7i92.0.stepgen.01.dirhold [JOINT_0]DIRHOLD
setp hm2_7i92.0.stepgen.01.steplen [JOINT_0]STEPLEN
setp hm2_7i92.0.stepgen.01.stepspace [JOINT_0]STEPSPACE
setp hm2_7i92.0.stepgen.01.position-scale [JOINT_0]STEP_SCALE
setp hm2_7i92.0.stepgen.01.step_type 0
setp hm2_7i92.0.stepgen.01.control-type 1
setp hm2_7i92.0.stepgen.01.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp hm2_7i92.0.stepgen.01.maxvel [JOINT_0]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net x-pos-cmd <= joint.0.motor-pos-cmd
net x-vel-cmd <= joint.0.vel-cmd
net x-output => hm2_7i92.0.stepgen.01.velocity-cmd
net x-pos-fb <= hm2_7i92.0.stepgen.01.position-fb
net x-pos-fb => joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
net x-enable => hm2_7i92.0.stepgen.01.enable
# ---setup home / limit switch signals---
net x-home-sw => joint.0.home-sw-in
net x-neg-limit => joint.0.neg-lim-sw-in
net x-pos-limit => joint.0.pos-lim-sw-in
#*******************
# AXIS Y JOINT 1
#*******************
setp pid.y.Pgain [JOINT_1]P
setp pid.y.Igain [JOINT_1]I
setp pid.y.Dgain [JOINT_1]D
setp pid.y.bias [JOINT_1]BIAS
setp pid.y.FF0 [JOINT_1]FF0
setp pid.y.FF1 [JOINT_1]FF1
setp pid.y.FF2 [JOINT_1]FF2
setp pid.y.deadband [JOINT_1]DEADBAND
setp pid.y.maxoutput [JOINT_1]MAX_OUTPUT
setp pid.y.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.y.maxerror 0.000500
net y-index-enable => pid.y.index-enable
net y-enable => pid.y.enable
net y-pos-cmd => pid.y.command
net y-pos-fb => pid.y.feedback
net y-output <= pid.y.output
# Step Gen signals/setup
setp hm2_7i92.0.stepgen.00.dirsetup [JOINT_1]DIRSETUP
setp hm2_7i92.0.stepgen.00.dirhold [JOINT_1]DIRHOLD
setp hm2_7i92.0.stepgen.00.steplen [JOINT_1]STEPLEN
setp hm2_7i92.0.stepgen.00.stepspace [JOINT_1]STEPSPACE
setp hm2_7i92.0.stepgen.00.position-scale [JOINT_1]STEP_SCALE
setp hm2_7i92.0.stepgen.00.step_type 0
setp hm2_7i92.0.stepgen.00.control-type 1
setp hm2_7i92.0.stepgen.00.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp hm2_7i92.0.stepgen.00.maxvel [JOINT_1]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net y-pos-cmd <= joint.1.motor-pos-cmd
net y-vel-cmd <= joint.1.vel-cmd
net y-output => hm2_7i92.0.stepgen.00.velocity-cmd
net y-pos-fb <= hm2_7i92.0.stepgen.00.position-fb
net y-pos-fb => joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
net y-enable => hm2_7i92.0.stepgen.00.enable
# ---setup home / limit switch signals---
net y-home-sw => joint.1.home-sw-in
net y-neg-limit => joint.1.neg-lim-sw-in
net y-pos-limit => joint.1.pos-lim-sw-in
#*******************
# AXIS Z JOINT 2
#*******************
setp pid.z.Pgain [JOINT_2]P
setp pid.z.Igain [JOINT_2]I
setp pid.z.Dgain [JOINT_2]D
setp pid.z.bias [JOINT_2]BIAS
setp pid.z.FF0 [JOINT_2]FF0
setp pid.z.FF1 [JOINT_2]FF1
setp pid.z.FF2 [JOINT_2]FF2
setp pid.z.deadband [JOINT_2]DEADBAND
setp pid.z.maxoutput [JOINT_2]MAX_OUTPUT
setp pid.z.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.z.maxerror 0.000500
net z-index-enable => pid.z.index-enable
net z-enable => pid.z.enable
net z-pos-cmd => pid.z.command
net z-pos-fb => pid.z.feedback
net z-output <= pid.z.output
# Step Gen signals/setup
setp hm2_7i92.0.stepgen.02.dirsetup [JOINT_2]DIRSETUP
setp hm2_7i92.0.stepgen.02.dirhold [JOINT_2]DIRHOLD
setp hm2_7i92.0.stepgen.02.steplen [JOINT_2]STEPLEN
setp hm2_7i92.0.stepgen.02.stepspace [JOINT_2]STEPSPACE
setp hm2_7i92.0.stepgen.02.position-scale [JOINT_2]STEP_SCALE
setp hm2_7i92.0.stepgen.02.step_type 0
setp hm2_7i92.0.stepgen.02.control-type 1
setp hm2_7i92.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_7i92.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net z-pos-cmd <= joint.2.motor-pos-cmd
net z-vel-cmd <= joint.2.vel-cmd
net z-output => hm2_7i92.0.stepgen.02.velocity-cmd
net z-pos-fb <= hm2_7i92.0.stepgen.02.position-fb
net z-pos-fb => joint.2.motor-pos-fb
net z-enable <= joint.2.amp-enable-out
net z-enable => hm2_7i92.0.stepgen.02.enable
# ---setup home / limit switch signals---
net z-home-sw => joint.2.home-sw-in
net z-neg-limit => joint.2.neg-lim-sw-in
net z-pos-limit => joint.2.pos-lim-sw-in
#******************************
# connect miscellaneous signals
#******************************
# ---HALUI signals---
net axis-select-x halui.axis.x.select
net jog-x-pos halui.axis.x.plus
net jog-x-neg halui.axis.x.minus
net jog-x-analog halui.axis.x.analog
net x-is-homed halui.joint.0.is-homed
net axis-select-y halui.axis.y.select
net jog-y-pos halui.axis.y.plus
net jog-y-neg halui.axis.y.minus
net jog-y-analog halui.axis.y.analog
net y-is-homed halui.joint.1.is-homed
net axis-select-z halui.axis.z.select
net jog-z-pos halui.axis.z.plus
net jog-z-neg halui.axis.z.minus
net jog-z-analog halui.axis.z.analog
net z-is-homed halui.joint.2.is-homed
net jog-selected-pos halui.axis.selected.plus
net jog-selected-neg halui.axis.selected.minus
net spindle-manual-cw halui.spindle.0.forward
net spindle-manual-ccw halui.spindle.0.reverse
net spindle-manual-stop halui.spindle.0.stop
net machine-is-on halui.machine.is-on
net jog-speed halui.axis.jog-speed
net MDI-mode halui.mode.is-mdi
# ---coolant signals---
net coolant-mist <= iocontrol.0.coolant-mist
net coolant-flood <= iocontrol.0.coolant-flood
# ---probe signal---
net probe-in => motion.probe-input
# ---motion control signals---
net in-position <= motion.in-position
net machine-is-enabled <= motion.motion-enabled
# ---digital in / out signals---
# ---estop signals---
net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in
# ---manual tool change signals---
net tool-change-request <= iocontrol.0.tool-change
net tool-change-confirmed => iocontrol.0.tool-changed
net tool-number <= iocontrol.0.tool-prep-number
# ---Use external manual tool change dialog---
loadusr -W hal_manualtoolchange
net tool-change-request => hal_manualtoolchange.change
net tool-change-confirmed <= hal_manualtoolchange.changed
net tool-number => hal_manualtoolchange.number
# ---ignore tool prepare requests---
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
I still get no movement in any of the axes. I wonder if there's something I am not properly enabling? I didn't setup the Home or e-stop signals.
Thank you for your continued assistance,
Here is the output of readhmid:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Configuration Name: HOSTMOT2
General configuration information:
BoardName : MESA7I92
FPGA Size: 20 KGates
FPGA Pins: 256
Number of IO Ports: 2
Width of one I/O port: 17
Clock Low frequency: 100.0000 MHz
Clock High frequency: 180.0000 MHz
IDROM Type: 3
Instance Stride 0: 4
Instance Stride 1: 64
Register Stride 0: 256
Register Stride 1: 256
Modules in configuration:
Module: DPLL
There are 1 of DPLL in configuration
Version: 0
Registers: 7
BaseAddress: 7000
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: WatchDog
There are 1 of WatchDog in configuration
Version: 0
Registers: 3
BaseAddress: 0C00
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: IOPort
There are 2 of IOPort in configuration
Version: 0
Registers: 5
BaseAddress: 1000
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: QCount
There are 2 of QCount in configuration
Version: 2
Registers: 5
BaseAddress: 3000
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: StepGen
There are 10 of StepGen in configuration
Version: 2
Registers: 10
BaseAddress: 2000
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: PWM
There are 2 of PWM in configuration
Version: 0
Registers: 5
BaseAddress: 4100
ClockFrequency: 180.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Module: LED
There are 1 of LED in configuration
Version: 0
Registers: 1
BaseAddress: 0200
ClockFrequency: 100.000 MHz
Register Stride: 256 bytes
Instance Stride: 4 bytes
Configuration pin-out:
IO Connections for P2
DB25 pin# I/O Pri. func Sec. func Chan Sec. Pin func Sec. Pin Dir
1 0 IOPort PWM 0 PWM (Out)
14 1 IOPort None
2 2 IOPort StepGen 0 Step/Table1 (Out)
15 3 IOPort None
3 4 IOPort StepGen 0 Dir/Table2 (Out)
16 5 IOPort StepGen 8 Step/Table1 (Out)
4 6 IOPort StepGen 1 Step/Table1 (Out)
17 7 IOPort StepGen 8 Dir/Table2 (Out)
5 8 IOPort StepGen 1 Dir/Table2 (Out)
6 9 IOPort StepGen 2 Step/Table1 (Out)
7 10 IOPort StepGen 2 Dir/Table2 (Out)
8 11 IOPort StepGen 3 Step/Table1 (Out)
9 12 IOPort StepGen 3 Dir/Table2 (Out)
10 13 IOPort None
11 14 IOPort QCount 0 Quad-A (In)
12 15 IOPort QCount 0 Quad-B (In)
13 16 IOPort QCount 0 Quad-IDX (In)
IO Connections for P1
DB25 pin# I/O Pri. func Sec. func Chan Sec. Pin func Sec. Pin Dir
1 17 IOPort PWM 1 PWM (Out)
14 18 IOPort None
2 19 IOPort StepGen 4 Step/Table1 (Out)
15 20 IOPort None
3 21 IOPort StepGen 4 Dir/Table2 (Out)
16 22 IOPort StepGen 9 Step/Table1 (Out)
4 23 IOPort StepGen 5 Step/Table1 (Out)
17 24 IOPort StepGen 9 Dir/Table2 (Out)
5 25 IOPort StepGen 5 Dir/Table2 (Out)
6 26 IOPort StepGen 6 Step/Table1 (Out)
7 27 IOPort StepGen 6 Dir/Table2 (Out)
8 28 IOPort StepGen 7 Step/Table1 (Out)
9 29 IOPort StepGen 7 Dir/Table2 (Out)
10 30 IOPort None
11 31 IOPort QCount 1 Quad-A (In)
12 32 IOPort QCount 1 Quad-B (In)
13 33 IOPort QCount 1 Quad-IDX (In)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
and here is the current HAL file (after manual edits for num_encoders, num_stepgens and num_pwmgens)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Generated by PNCconf at Fri Aug 16 08:59:19 2024
# Using LinuxCNC version: Master (2.9)
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
loadrt [KINS]KINEMATICS
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadrt hostmot2
loadrt hm2_eth board_ip="10.10.10.10" config="num_encoders=2 num_pwmgens=0 num_stepgens=3 sserial_port_0=00xxxxxx"
setp hm2_7i92.0.watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.z,pid.s
addf hm2_7i92.0.read servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf pid.x.do-pid-calcs servo-thread
addf pid.y.do-pid-calcs servo-thread
addf pid.z.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs servo-thread
addf hm2_7i92.0.write servo-thread
setp hm2_7i92.0.dpll.01.timer-us -50
setp hm2_7i92.0.stepgen.timer-number 1
# external output signals
# external input signals
#*******************
# AXIS X JOINT 0
#*******************
setp pid.x.Pgain [JOINT_0]P
setp pid.x.Igain [JOINT_0]I
setp pid.x.Dgain [JOINT_0]D
setp pid.x.bias [JOINT_0]BIAS
setp pid.x.FF0 [JOINT_0]FF0
setp pid.x.FF1 [JOINT_0]FF1
setp pid.x.FF2 [JOINT_0]FF2
setp pid.x.deadband [JOINT_0]DEADBAND
setp pid.x.maxoutput [JOINT_0]MAX_OUTPUT
setp pid.x.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.x.maxerror 0.000500
net x-index-enable => pid.x.index-enable
net x-enable => pid.x.enable
net x-pos-cmd => pid.x.command
net x-pos-fb => pid.x.feedback
net x-output <= pid.x.output
# Step Gen signals/setup
setp hm2_7i92.0.stepgen.01.dirsetup [JOINT_0]DIRSETUP
setp hm2_7i92.0.stepgen.01.dirhold [JOINT_0]DIRHOLD
setp hm2_7i92.0.stepgen.01.steplen [JOINT_0]STEPLEN
setp hm2_7i92.0.stepgen.01.stepspace [JOINT_0]STEPSPACE
setp hm2_7i92.0.stepgen.01.position-scale [JOINT_0]STEP_SCALE
setp hm2_7i92.0.stepgen.01.step_type 0
setp hm2_7i92.0.stepgen.01.control-type 1
setp hm2_7i92.0.stepgen.01.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp hm2_7i92.0.stepgen.01.maxvel [JOINT_0]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net x-pos-cmd <= joint.0.motor-pos-cmd
net x-vel-cmd <= joint.0.vel-cmd
net x-output => hm2_7i92.0.stepgen.01.velocity-cmd
net x-pos-fb <= hm2_7i92.0.stepgen.01.position-fb
net x-pos-fb => joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
net x-enable => hm2_7i92.0.stepgen.01.enable
# ---setup home / limit switch signals---
net x-home-sw => joint.0.home-sw-in
net x-neg-limit => joint.0.neg-lim-sw-in
net x-pos-limit => joint.0.pos-lim-sw-in
#*******************
# AXIS Y JOINT 1
#*******************
setp pid.y.Pgain [JOINT_1]P
setp pid.y.Igain [JOINT_1]I
setp pid.y.Dgain [JOINT_1]D
setp pid.y.bias [JOINT_1]BIAS
setp pid.y.FF0 [JOINT_1]FF0
setp pid.y.FF1 [JOINT_1]FF1
setp pid.y.FF2 [JOINT_1]FF2
setp pid.y.deadband [JOINT_1]DEADBAND
setp pid.y.maxoutput [JOINT_1]MAX_OUTPUT
setp pid.y.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.y.maxerror 0.000500
net y-index-enable => pid.y.index-enable
net y-enable => pid.y.enable
net y-pos-cmd => pid.y.command
net y-pos-fb => pid.y.feedback
net y-output <= pid.y.output
# Step Gen signals/setup
setp hm2_7i92.0.stepgen.00.dirsetup [JOINT_1]DIRSETUP
setp hm2_7i92.0.stepgen.00.dirhold [JOINT_1]DIRHOLD
setp hm2_7i92.0.stepgen.00.steplen [JOINT_1]STEPLEN
setp hm2_7i92.0.stepgen.00.stepspace [JOINT_1]STEPSPACE
setp hm2_7i92.0.stepgen.00.position-scale [JOINT_1]STEP_SCALE
setp hm2_7i92.0.stepgen.00.step_type 0
setp hm2_7i92.0.stepgen.00.control-type 1
setp hm2_7i92.0.stepgen.00.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp hm2_7i92.0.stepgen.00.maxvel [JOINT_1]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net y-pos-cmd <= joint.1.motor-pos-cmd
net y-vel-cmd <= joint.1.vel-cmd
net y-output => hm2_7i92.0.stepgen.00.velocity-cmd
net y-pos-fb <= hm2_7i92.0.stepgen.00.position-fb
net y-pos-fb => joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
net y-enable => hm2_7i92.0.stepgen.00.enable
# ---setup home / limit switch signals---
net y-home-sw => joint.1.home-sw-in
net y-neg-limit => joint.1.neg-lim-sw-in
net y-pos-limit => joint.1.pos-lim-sw-in
#*******************
# AXIS Z JOINT 2
#*******************
setp pid.z.Pgain [JOINT_2]P
setp pid.z.Igain [JOINT_2]I
setp pid.z.Dgain [JOINT_2]D
setp pid.z.bias [JOINT_2]BIAS
setp pid.z.FF0 [JOINT_2]FF0
setp pid.z.FF1 [JOINT_2]FF1
setp pid.z.FF2 [JOINT_2]FF2
setp pid.z.deadband [JOINT_2]DEADBAND
setp pid.z.maxoutput [JOINT_2]MAX_OUTPUT
setp pid.z.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.z.maxerror 0.000500
net z-index-enable => pid.z.index-enable
net z-enable => pid.z.enable
net z-pos-cmd => pid.z.command
net z-pos-fb => pid.z.feedback
net z-output <= pid.z.output
# Step Gen signals/setup
setp hm2_7i92.0.stepgen.02.dirsetup [JOINT_2]DIRSETUP
setp hm2_7i92.0.stepgen.02.dirhold [JOINT_2]DIRHOLD
setp hm2_7i92.0.stepgen.02.steplen [JOINT_2]STEPLEN
setp hm2_7i92.0.stepgen.02.stepspace [JOINT_2]STEPSPACE
setp hm2_7i92.0.stepgen.02.position-scale [JOINT_2]STEP_SCALE
setp hm2_7i92.0.stepgen.02.step_type 0
setp hm2_7i92.0.stepgen.02.control-type 1
setp hm2_7i92.0.stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp hm2_7i92.0.stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net z-pos-cmd <= joint.2.motor-pos-cmd
net z-vel-cmd <= joint.2.vel-cmd
net z-output => hm2_7i92.0.stepgen.02.velocity-cmd
net z-pos-fb <= hm2_7i92.0.stepgen.02.position-fb
net z-pos-fb => joint.2.motor-pos-fb
net z-enable <= joint.2.amp-enable-out
net z-enable => hm2_7i92.0.stepgen.02.enable
# ---setup home / limit switch signals---
net z-home-sw => joint.2.home-sw-in
net z-neg-limit => joint.2.neg-lim-sw-in
net z-pos-limit => joint.2.pos-lim-sw-in
#******************************
# connect miscellaneous signals
#******************************
# ---HALUI signals---
net axis-select-x halui.axis.x.select
net jog-x-pos halui.axis.x.plus
net jog-x-neg halui.axis.x.minus
net jog-x-analog halui.axis.x.analog
net x-is-homed halui.joint.0.is-homed
net axis-select-y halui.axis.y.select
net jog-y-pos halui.axis.y.plus
net jog-y-neg halui.axis.y.minus
net jog-y-analog halui.axis.y.analog
net y-is-homed halui.joint.1.is-homed
net axis-select-z halui.axis.z.select
net jog-z-pos halui.axis.z.plus
net jog-z-neg halui.axis.z.minus
net jog-z-analog halui.axis.z.analog
net z-is-homed halui.joint.2.is-homed
net jog-selected-pos halui.axis.selected.plus
net jog-selected-neg halui.axis.selected.minus
net spindle-manual-cw halui.spindle.0.forward
net spindle-manual-ccw halui.spindle.0.reverse
net spindle-manual-stop halui.spindle.0.stop
net machine-is-on halui.machine.is-on
net jog-speed halui.axis.jog-speed
net MDI-mode halui.mode.is-mdi
# ---coolant signals---
net coolant-mist <= iocontrol.0.coolant-mist
net coolant-flood <= iocontrol.0.coolant-flood
# ---probe signal---
net probe-in => motion.probe-input
# ---motion control signals---
net in-position <= motion.in-position
net machine-is-enabled <= motion.motion-enabled
# ---digital in / out signals---
# ---estop signals---
net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in
# ---manual tool change signals---
net tool-change-request <= iocontrol.0.tool-change
net tool-change-confirmed => iocontrol.0.tool-changed
net tool-number <= iocontrol.0.tool-prep-number
# ---Use external manual tool change dialog---
loadusr -W hal_manualtoolchange
net tool-change-request => hal_manualtoolchange.change
net tool-change-confirmed <= hal_manualtoolchange.changed
net tool-number => hal_manualtoolchange.number
# ---ignore tool prepare requests---
net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
I still get no movement in any of the axes. I wonder if there's something I am not properly enabling? I didn't setup the Home or e-stop signals.
Thank you for your continued assistance,
- waukeenahBob
- waukeenahBob
13 Aug 2024 20:25
MESA 7c81 HELP! was created by waukeenahBob
MESA 7c81 HELP!
Category: Driver Boards
I have a good bit of experience with CNC... built 2 machines in the past... one Mach3 another GRBL. Long time linux admin. Have built lots of things with RPI, New to LinuxCNC.
I am refactoring a vertical mill that I converted to CNC and Mach 3 several years ago to use LinuxCNC. In the past I used a UC ETH-300 which of course is not compatible with LinuxCNC. So I bought a Mesa 7c81 and an 8gb Raspberry Pi 4.
I have everything connected, Installed LinuxCNC 2.9.2 using the RPI image, have enabled SPI and it appears that I am talking to the Mesa card.
I have a standard chinese BOB connected to port 1 and plan to use ports 2 and 7 for home/limit switches, probe, spindle etc.
Started with pncconf selected my card and the 5ABOB3 firmware, looked up my stepper drivers for time, space, hold etc...
Cannot figure out the P1, P2, P7 Mesa Card config pages as far as pins goes... expecting to assign pin2 for step X etc... according to the BOB documentation.
I have assigned the Axis StepGen's to P1 0:, 1:, and 2: just to be able to write the config out.
When I try to test/tune an axis I hear the relay trip on the BOB which is encouraging... and when I try to jog I see the numbers changing on the Hal Meter etc but I get nothing from my steppers... they do feel slightly warm so I believe there is current going to them... but no movement at all
if I try to launch LinuxCNC using the config pncconf created I see some errors come up
"Unexpected realtime delay on task0 with period 70000" and hm2/hm2_7c81.0 Watchdog was bit.
My plan is to get basic stuff working and then add complexity...
Wondering if anyone has a config they would be willing to share?
Or advice on where to go next... been googling and searching my tail off and figure there is something basic I am missing and once I see it properly configured I will have a big DUH moment
Any help would be appreciated!
I am refactoring a vertical mill that I converted to CNC and Mach 3 several years ago to use LinuxCNC. In the past I used a UC ETH-300 which of course is not compatible with LinuxCNC. So I bought a Mesa 7c81 and an 8gb Raspberry Pi 4.
I have everything connected, Installed LinuxCNC 2.9.2 using the RPI image, have enabled SPI and it appears that I am talking to the Mesa card.
I have a standard chinese BOB connected to port 1 and plan to use ports 2 and 7 for home/limit switches, probe, spindle etc.
Started with pncconf selected my card and the 5ABOB3 firmware, looked up my stepper drivers for time, space, hold etc...
Cannot figure out the P1, P2, P7 Mesa Card config pages as far as pins goes... expecting to assign pin2 for step X etc... according to the BOB documentation.
I have assigned the Axis StepGen's to P1 0:, 1:, and 2: just to be able to write the config out.
When I try to test/tune an axis I hear the relay trip on the BOB which is encouraging... and when I try to jog I see the numbers changing on the Hal Meter etc but I get nothing from my steppers... they do feel slightly warm so I believe there is current going to them... but no movement at all
if I try to launch LinuxCNC using the config pncconf created I see some errors come up
"Unexpected realtime delay on task0 with period 70000" and hm2/hm2_7c81.0 Watchdog was bit.
My plan is to get basic stuff working and then add complexity...
Wondering if anyone has a config they would be willing to share?
Or advice on where to go next... been googling and searching my tail off and figure there is something basic I am missing and once I see it properly configured I will have a big DUH moment

Any help would be appreciated!
- itsbrian
- itsbrian
10 Aug 2024 21:33
Trouble getting PWM to work with 7i92TF and BoB but steppers working fine was created by itsbrian
Trouble getting PWM to work with 7i92TF and BoB but steppers working fine
Category: PnCConf Wizard
Hi everyone, I've managed so far after all these years to get all the info I need on these boards by being a lurker, so thank you everyone for all the knowledge on here. I'm at a crossroads with this one though as I'm still quite new with the mesa boards.
I have the following BoB below and can confirm I can get the PWM working using software stepping by setting it on Pin 1 in the Stepconf wizard.
When setting this up using the Mesa board (7i92TF), I followed the guide below which works perfectly fine for running my steppers.
forum.linuxcnc.org/49-basic-configuratio...rallel-port-bob-g540
What needs to be changed on my setup to get this working? Mind you the config on my mesa board is whatever came straight out of the box.
My intention is to use this PWM signal to control a laser since I mainly control my spindle manually (or RS485). I'm currently testing this potential laser setup right now with an LED. If this helps, one thing I also noticed differently between software stepping and the mesa board, is that during PC boot the LED is already lit versus when it is connected to parallel port it is not.
I've attached my INI and HAL file for the mesa config. Any help would be appreciated, thanks!
I have the following BoB below and can confirm I can get the PWM working using software stepping by setting it on Pin 1 in the Stepconf wizard.
When setting this up using the Mesa board (7i92TF), I followed the guide below which works perfectly fine for running my steppers.
forum.linuxcnc.org/49-basic-configuratio...rallel-port-bob-g540
What needs to be changed on my setup to get this working? Mind you the config on my mesa board is whatever came straight out of the box.
My intention is to use this PWM signal to control a laser since I mainly control my spindle manually (or RS485). I'm currently testing this potential laser setup right now with an LED. If this helps, one thing I also noticed differently between software stepping and the mesa board, is that during PC boot the LED is already lit versus when it is connected to parallel port it is not.
I've attached my INI and HAL file for the mesa config. Any help would be appreciated, thanks!
- warreng
- warreng
10 Aug 2024 15:30
5x10 servo router rebuild - analog of step/dir with mesa card? was created by warreng
5x10 servo router rebuild - analog of step/dir with mesa card?
Category: General LinuxCNC Questions
I've got a 5' x 10' CNC router with a failed Mach 3 control. It has Yaskawa Servos (SGMGH-09ACA61) and was set up for step/dir with an ethernet smooth stepper. It was "open loop" with that control. It has four motors for the 3 main axis and a 5th motor for a rotary axis. I might not use the 5th axis but I do have a crazy idea for an automated dust collection "axis" that would probably use stepper motors.
I have a Mesa 7I76e that I bought several years ago for another machine that has yet to be completed and I think this would be my fastest/easiest control to drop in but would still leave me open loop to the control. Instead I've been thinking of running with analog servo signals and the encoder feedback into LinuxCNC using a 7I92TF with a 7I77 or a single 7I97T. It seems the 7I97T might be a bit light on general I/O since the machine has an ATC spindle and several other pneumatics that need to be controlled and sensed so I'm leaning towards the former combo.
Any suggestions wrt to Mesa card availability and the advantage of using analog vs step/dir in this application?
I have a Mesa 7I76e that I bought several years ago for another machine that has yet to be completed and I think this would be my fastest/easiest control to drop in but would still leave me open loop to the control. Instead I've been thinking of running with analog servo signals and the encoder feedback into LinuxCNC using a 7I92TF with a 7I77 or a single 7I97T. It seems the 7I97T might be a bit light on general I/O since the machine has an ATC spindle and several other pneumatics that need to be controlled and sensed so I'm leaning towards the former combo.
Any suggestions wrt to Mesa card availability and the advantage of using analog vs step/dir in this application?
- Mecanix
- Mecanix
07 Aug 2024 18:50 - 07 Aug 2024 18:52
Replied by Mecanix on topic LinuxCNC-RIO - RealtimeIO for LinuxCNC based on FPGA (ICE40 / ECP5)
LinuxCNC-RIO - RealtimeIO for LinuxCNC based on FPGA (ICE40 / ECP5)
Category: Computers and Hardware
Just checked my stepper drives and as expected (a.k.a. modern equipment), they do have built-in isolation (optos). Same as my spindle BLDC motor drive, all built-in modern stuff. And so wtf, why the excessive legendary need for so called isolation on those motion control boards for exactly?
Calling the electron godz lol...
Calling the electron godz lol...
- Mecanix
- Mecanix
07 Aug 2024 18:32 - 07 Aug 2024 18:46
Replied by Mecanix on topic LinuxCNC-RIO - RealtimeIO for LinuxCNC based on FPGA (ICE40 / ECP5)
LinuxCNC-RIO - RealtimeIO for LinuxCNC based on FPGA (ICE40 / ECP5)
Category: Computers and Hardware
I'm no control motion board expert by any trade. First one. The "Legend" has it that they are noisy and spikey. Mind you I'm having no issue running a colorlight on my lathe which share the same 5V&GND for pretty much everything (rotary encoder, switches, stepper drives, estop, everything basically). Just got isolation on the Spindle/BLDC motor drive (obviously), but that's on the drive itself not on the motion control board. And so I'm a bit lost as to what's best isolation design, low-cost, "convenience-wise".
btw - I apologize for hijacking your thread and abusing your kind generosity (and expertise!!). Just trying to get a semi-universal "RIO Control Board" schematic out for the community to copy/paste and ideally do their own...
Edit: perhaps worth using another forum for those sort of questions?! If so do not hesitate to recommend one/more/many, and I'll be on my way out!!
btw - I apologize for hijacking your thread and abusing your kind generosity (and expertise!!). Just trying to get a semi-universal "RIO Control Board" schematic out for the community to copy/paste and ideally do their own...
Edit: perhaps worth using another forum for those sort of questions?! If so do not hesitate to recommend one/more/many, and I'll be on my way out!!
- arijitdutta
- arijitdutta
07 Aug 2024 03:44 - 07 Aug 2024 04:22
Question regarding shielding was created by arijitdutta
Question regarding shielding
Category: General LinuxCNC Questions
Hi all,
This is my first time playing with electronics. I had almost zero knowledge but during the last 3 months I understand quite a bit now. I was quite afraid of it (especially Linuxcnc, I was keeping Acorn ahead because of the ease) but I am quite enjoying it now. I have wired my lathe previously with a printer BOB and it ran successfully. Now I am getting it hooked with a mesa 7i96s card with nema 23 motors and a spindle encoder. Getting a mesa board here in India is quite hectic so I will ask some questions frequently so that I dont mess anything up.
1. What are the 5V, GND pins on each stepper axis of the Mesa card used for?
2. I heard that you need shielded wires for steppers. So do I need to shield the pulse and direction wires from the mesa card to the drivers along with the wires from the drivers to the motor or just the latter is enough?
3. Even though I searched quite a bit about the enable signal of the drivers, I couldn't land on a decision on how to wire it. I understand that leaving it unconnected or having the pins low enables them and having them high disables them. I really dont want the steppers to be enabled all the time, maybe F1, F2 from Linuxcnc will disable-enable them. Any wiring suggestions?
4. There is a Frame GND on the Mesa card. Do I need to ground it?
Thanks in advance..
EDIT: I now understand what the 5v and GND is for on the mesa stepper axis segments. I somehow missed it on the manual..
This is my first time playing with electronics. I had almost zero knowledge but during the last 3 months I understand quite a bit now. I was quite afraid of it (especially Linuxcnc, I was keeping Acorn ahead because of the ease) but I am quite enjoying it now. I have wired my lathe previously with a printer BOB and it ran successfully. Now I am getting it hooked with a mesa 7i96s card with nema 23 motors and a spindle encoder. Getting a mesa board here in India is quite hectic so I will ask some questions frequently so that I dont mess anything up.
1. What are the 5V, GND pins on each stepper axis of the Mesa card used for?
2. I heard that you need shielded wires for steppers. So do I need to shield the pulse and direction wires from the mesa card to the drivers along with the wires from the drivers to the motor or just the latter is enough?
3. Even though I searched quite a bit about the enable signal of the drivers, I couldn't land on a decision on how to wire it. I understand that leaving it unconnected or having the pins low enables them and having them high disables them. I really dont want the steppers to be enabled all the time, maybe F1, F2 from Linuxcnc will disable-enable them. Any wiring suggestions?
4. There is a Frame GND on the Mesa card. Do I need to ground it?
Thanks in advance..
EDIT: I now understand what the 5v and GND is for on the mesa stepper axis segments. I somehow missed it on the manual..
- OGMaker
- OGMaker
05 Aug 2024 23:47
Replied by OGMaker on topic [ Vfdmod ] An easy VFD control over MODBUS RTU
[ Vfdmod ] An easy VFD control over MODBUS RTU
Category: HAL
Hey aekhv,
Your github and docs seem to be in a bit of a scramble with your name change on github. Any estimate of when that will get straightened out? Love the project I was able to put together a working configuration for the StepperOnline EV200 pretty easily. Mb2hal just didn't work for this device. Still trying to figure out what their spindle speed register wants, but that is their documentation problem.
Your github and docs seem to be in a bit of a scramble with your name change on github. Any estimate of when that will get straightened out? Love the project I was able to put together a working configuration for the StepperOnline EV200 pretty easily. Mb2hal just didn't work for this device. Still trying to figure out what their spindle speed register wants, but that is their documentation problem.
- captain-panda
05 Aug 2024 22:36
Replied by captain-panda on topic 3 Achs Fräse mit MESA 7C80 und Raspi 4
3 Achs Fräse mit MESA 7C80 und Raspi 4
Category: Deutsch
Hello,
Please excuse my crashing into this thread. I've found it very useful so far and managed to set up 6 out of 7 parts of my 30-year-old Gravograph Unica that I'm trying to convert to LinuxCNC running on a Raspberry Pi with a Mesa 7C80.
What's working fine so far are the 3 steppers and corresponding home switches X, Y & Z.
But: The spindle won't turn on.
I'd like to control it via PWM and as far as I can tell there should be PWM output on pin 2 of TB5 of the 7C80.
There's no useable output there, and I'm not sure where to search and what to do next ...
If there's any chance you could have a look at my .hal and .ini files, that would be very much appreciated
I also included the output of the terminal from where LinuxCNC was launched, and the output of "halcmd show signal spin".
Voltage between SINDLE+ and SPINDLE- seems to be just noise or in the mV-Magnitude.
Thank you for reading and best regards,
Erik
captain-panda
Please excuse my crashing into this thread. I've found it very useful so far and managed to set up 6 out of 7 parts of my 30-year-old Gravograph Unica that I'm trying to convert to LinuxCNC running on a Raspberry Pi with a Mesa 7C80.
What's working fine so far are the 3 steppers and corresponding home switches X, Y & Z.
But: The spindle won't turn on.
I'd like to control it via PWM and as far as I can tell there should be PWM output on pin 2 of TB5 of the 7C80.
There's no useable output there, and I'm not sure where to search and what to do next ...
If there's any chance you could have a look at my .hal and .ini files, that would be very much appreciated

I also included the output of the terminal from where LinuxCNC was launched, and the output of "halcmd show signal spin".
Voltage between SINDLE+ and SPINDLE- seems to be just noise or in the mV-Magnitude.
Thank you for reading and best regards,
Erik
captain-panda
- avive
- avive
04 Aug 2024 22:16
EtherCAT i/o board for spindle, estop and mpg was created by avive
EtherCAT i/o board for spindle, estop and mpg
Category: EtherCAT
I'm assembling a machine on EtherCAT. All the mechanics are ready, checked on stepper motors while the servo motors are still on the way. But the spindle is available and there was a question of connecting it. The speed can be controlled by 0-10 volts or PWM. Plus, I need to connect Estop and MPG. I'm considering the following options:
1. Since I have a computer with two network ports, I can connect RP2040 via Ethernet to one of them. Cheap and angry, but I would like to do everything on one technology.
2. Noname EtherCAT i/o board from Ali Express (but which one?)
3. Beckhoff EK1828 coupler with 4 digital inputs and 8 digital outputs. www.beckhoff.com/en-en/products/i-o/ethe...-coupler/ek1828.html But is it possible to issue a computer-generated PWM signal through it and receive feedback from the spindle about the speed?
I would like to do with one device that covers all needs except servos. What are your recommendations, colleagues?
1. Since I have a computer with two network ports, I can connect RP2040 via Ethernet to one of them. Cheap and angry, but I would like to do everything on one technology.
2. Noname EtherCAT i/o board from Ali Express (but which one?)
3. Beckhoff EK1828 coupler with 4 digital inputs and 8 digital outputs. www.beckhoff.com/en-en/products/i-o/ethe...-coupler/ek1828.html But is it possible to issue a computer-generated PWM signal through it and receive feedback from the spindle about the speed?
I would like to do with one device that covers all needs except servos. What are your recommendations, colleagues?
- feng
- feng
04 Aug 2024 03:13
Hello, I would like to add an EtherCAT IO device. What should I do was created by feng
Hello, I would like to add an EtherCAT IO device. What should I do
Category: EtherCAT
# Generated by PNCconf at Sat Sep 10 10:10:56 2016
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
loadrt [KINS]KINEMATICS
#autoconverted trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadusr -W lcec_conf ethercat-conf.xml
loadrt lcec
loadrt cia402 count=4
addf lcec.read-all servo-thread
addf cia402.0.read-all servo-thread
addf cia402.1.read-all servo-thread
addf cia402.2.read-all servo-thread
addf cia402.3.read-all servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf cia402.0.write-all servo-thread
addf cia402.1.write-all servo-thread
addf cia402.2.write-all servo-thread
addf cia402.3.write-all servo-thread
addf lcec.write-all servo-thread
#*******************
# AXIS X
#*******************
# --- joint signals for motion
net x-pos-cmd <= joint.0.motor-pos-cmd
net x-vel-cmd <= joint.0.vel-cmd
net x-pos-fb <= joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
# --- connect stepper driver to joint
net x-pos-cmd => cia402.0.pos-cmd
net x-pos-fb => cia402.0.pos-fb
net x-enable => cia402.0.enable
# --- ect60 settings
setp cia402.0.csp-mode 1
setp cia402.0.pos-scale 26214.4
# --- from stepper(ethercat) to cia402
net x-statusword lcec.0.0.cia-statusword => cia402.0.statusword
net x-opmode-display lcec.0.0.opmode-display => cia402.0.opmode-display
net x-drv-act-pos lcec.0.0.actual-position => cia402.0.drv-actual-position
net x-drv-act-velo lcec.0.0.actual-velocity => cia402.0.drv-actual-velocity
# --- from cia402 to stepper(ethercat)
net x-controlword cia402.0.controlword => lcec.0.0.cia-controlword
net x-modes-of-operation cia402.0.opmode => lcec.0.0.opmode
net x-drv-target-pos cia402.0.drv-target-position => lcec.0.0.target-position
net x-drv-target-velo cia402.0.drv-target-velocity => lcec.0.0.target-velocity
#*******************
# AXIS Y
#*******************
# --- joint signals for motion
net y-pos-cmd <= joint.1.motor-pos-cmd
net y-vel-cmd <= joint.1.vel-cmd
net y-pos-fb <= joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
# --- connect stepper driver to the joint
net y-pos-cmd => cia402.1.pos-cmd
net y-pos-fb => cia402.1.pos-fb
net y-enable => cia402.1.enable
# --- ect60 settings
setp cia402.1.csp-mode 1
setp cia402.1.pos-scale 26214.4
# --- from servo(ethercat) to cia402
net y-statusword lcec.0.1.cia-statusword => cia402.1.statusword
net y-opmode-display lcec.0.1.opmode-display => cia402.1.opmode-display
net y-drv-act-pos lcec.0.1.actual-position => cia402.1.drv-actual-position
net y-drv-act-velo lcec.0.1.actual-velocity => cia402.1.drv-actual-velocity
# --- from cia402 to servo(ethercat)
net y-controlword cia402.1.controlword => lcec.0.1.cia-controlword
net y-modes-of-operation cia402.1.opmode => lcec.0.1.opmode
net y-drv-target-pos cia402.1.drv-target-position => lcec.0.1.target-position
net y-drv-target-velo cia402.1.drv-target-velocity => lcec.0.1.target-velocity
#*******************
# AXIS z
#*******************
# --- joint signals for motion
net z-pos-cmd <= joint.2.motor-pos-cmd
net z-vel-cmd <= joint.2.vel-cmd
net z-pos-fb <= joint.2.motor-pos-fb
net z-enable <= joint.2.amp-enable-out
# --- connect stepper driver to the joint
net z-pos-cmd => cia402.2.pos-cmd
net z-pos-fb => cia402.2.pos-fb
net z-enable => cia402.2.enable
# --- ect60 settings
setp cia402.2.csp-mode 1
setp cia402.2.pos-scale 26214.4
# --- from servo(ethercat) to cia402
net z-statusword lcec.0.2.cia-statusword => cia402.2.statusword
net z-opmode-display lcec.0.2.opmode-display => cia402.2.opmode-display
net z-drv-act-pos lcec.0.2.actual-position => cia402.2.drv-actual-position
net z-drv-act-velo lcec.0.2.actual-velocity => cia402.2.drv-actual-velocity
# --- from cia402 to servo(ethercat)
net z-controlword cia402.2.controlword => lcec.0.2.cia-controlword
net z-modes-of-operation cia402.2.opmode => lcec.0.2.opmode
net z-drv-target-pos cia402.2.drv-target-position => lcec.0.2.target-position
net z-drv-target-velo cia402.2.drv-target-velocity => lcec.0.2.target-velocity
#*******************
# SPINDLE
#*******************
# --- joint signals for motion
net spindle-speed-cmd spindle.0.speed-out => cia402.3.velocity-cmd
net spindle-speed-fb cia402.3.velocity-fb => spindle.0.speed-in
net spindle-on spindle.0.on => cia402.3.enable
# --- ect60 settings
setp cia402.3.csp-mode 0
setp cia402.3.pos-scale 4000
setp cia402.3.velo-scale 400
# --- from servo(ethercat) to cia402
net s-statusword lcec.0.3.cia-statusword => cia402.3.statusword
net s-opmode-display lcec.0.3.opmode-display => cia402.3.opmode-display
net s-drv-act-pos lcec.0.3.actual-position => cia402.3.drv-actual-position
net s-drv-act-velo lcec.0.3.actual-velocity => cia402.3.drv-actual-velocity
# --- from cia402 to servo(ethercat)
net s-controlword cia402.3.controlword => lcec.0.3.cia-controlword
net s-modes-of-operation cia402.3.opmode => lcec.0.3.opmode
net s-drv-target-pos cia402.3.drv-target-position => lcec.0.3.target-position
net s-drv-target-velo cia402.3.drv-target-velocity => lcec.0.3.target-velocity
#*********************
# E-STOP
#*********************
setp iocontrol.0.emc-enable-in 1
loadrt hal_parport cfg="0 in"
addf parport.0.read servo-thread
#addf mux4.0 servo-thread
# Jog Pendant
loadrt encoder num_chan=1
loadrt mux4 count=1
addf encoder.capture-position servo-thread
addf encoder.update-counters servo-thread
addf mux4.0 servo-thread
# If your MPG outputs a quadrature signal per click set x4 to 1
# If your MPG puts out 1 pulse per click set x4 to 0
setp encoder.0.x4-mode 0
# For velocity mode, set to 1
# In velocity mode the axis stops when the dial is stopped
# even if that means the commanded motion is not completed,
# For position mode (the default), set to 0
# In position mode the axis will move exactly jog-scale
# units for each count, regardless of how long that might take,
setp axis.x.jog-vel-mode 0
setp axis.y.jog-vel-mode 0
setp axis.z.jog-vel-mode 0
# This sets the scale that will be used based on the input to the mux4
setp mux4.0.in0 0.1
setp mux4.0.in1 0.01
setp mux4.0.in2 0.001
# The inputs to the mux4 component
net scale1 mux4.0.sel0 <= parport.0.pin-08-in-not
net scale2 mux4.0.sel1 <= parport.0.pin-07-in-not
# The output from the mux4 is sent to each axis jog scale
net mpg-scale <= mux4.0.out
net mpg-scale => axis.x.jog-scale
net mpg-scale => axis.y.jog-scale
net mpg-scale => axis.z.jog-scale
# The MPG inputs
net mpg-a encoder.0.phase-A <= parport.0.pin-13-in
net mpg-b encoder.0.phase-B <= parport.0.pin-10-in
# The Axis select inputs
net mpg-x axis.x.jog-enable <= parport.0.pin-15-in-not
net mpg-y axis.y.jog-enable <= parport.0.pin-11-in
net mpg-z axis.z.jog-enable <= parport.0.pin-14-in
# The encoder output counts to the axis. Only the selected axis will move.
net encoder-counts <= encoder.0.counts
net encoder-counts => axis.x.jog-counts
net encoder-counts => axis.y.jog-counts
net encoder-counts => axis.z.jog-counts
lite@LinuxCNC:~$ sudo ethercat slaves
0 0:0 OP + L7EC-400S(COE)
1 0:1 OP + L7EC-400S(COE)
2 0:2 OP + L7EC-400S(COE)
3 0:3 PREOP E EM32DX-E4
/* Master 0, Slave 3, "EM32DX-E4"
* Vendor ID: 0x00004321
* Product code: 0x01100073
* Revision number: 0x18050210
*/
ec_pdo_entry_info_t slave_3_pdo_entries[] = {
{0x7000, 0x01, 16}, /* OUT */
{0x6000, 0x01, 16}, /* IN */
};
ec_pdo_info_t slave_3_pdos[] = {
{0x1600, 1, slave_3_pdo_entries + 0}, /* RxPDO0-Map */
{0x1a00, 1, slave_3_pdo_entries + 1}, /* TxPDO1-Map */
};
ec_sync_info_t slave_3_syncs[] = {
{0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
{1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
{2, EC_DIR_OUTPUT, 1, slave_3_pdos + 0, EC_WD_ENABLE},
{3, EC_DIR_INPUT, 1, slave_3_pdos + 1, EC_WD_DISABLE},
{0xff}
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
loadrt [KINS]KINEMATICS
#autoconverted trivkins
loadrt [EMCMOT]EMCMOT servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
loadusr -W lcec_conf ethercat-conf.xml
loadrt lcec
loadrt cia402 count=4
addf lcec.read-all servo-thread
addf cia402.0.read-all servo-thread
addf cia402.1.read-all servo-thread
addf cia402.2.read-all servo-thread
addf cia402.3.read-all servo-thread
addf motion-command-handler servo-thread
addf motion-controller servo-thread
addf cia402.0.write-all servo-thread
addf cia402.1.write-all servo-thread
addf cia402.2.write-all servo-thread
addf cia402.3.write-all servo-thread
addf lcec.write-all servo-thread
#*******************
# AXIS X
#*******************
# --- joint signals for motion
net x-pos-cmd <= joint.0.motor-pos-cmd
net x-vel-cmd <= joint.0.vel-cmd
net x-pos-fb <= joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
# --- connect stepper driver to joint
net x-pos-cmd => cia402.0.pos-cmd
net x-pos-fb => cia402.0.pos-fb
net x-enable => cia402.0.enable
# --- ect60 settings
setp cia402.0.csp-mode 1
setp cia402.0.pos-scale 26214.4
# --- from stepper(ethercat) to cia402
net x-statusword lcec.0.0.cia-statusword => cia402.0.statusword
net x-opmode-display lcec.0.0.opmode-display => cia402.0.opmode-display
net x-drv-act-pos lcec.0.0.actual-position => cia402.0.drv-actual-position
net x-drv-act-velo lcec.0.0.actual-velocity => cia402.0.drv-actual-velocity
# --- from cia402 to stepper(ethercat)
net x-controlword cia402.0.controlword => lcec.0.0.cia-controlword
net x-modes-of-operation cia402.0.opmode => lcec.0.0.opmode
net x-drv-target-pos cia402.0.drv-target-position => lcec.0.0.target-position
net x-drv-target-velo cia402.0.drv-target-velocity => lcec.0.0.target-velocity
#*******************
# AXIS Y
#*******************
# --- joint signals for motion
net y-pos-cmd <= joint.1.motor-pos-cmd
net y-vel-cmd <= joint.1.vel-cmd
net y-pos-fb <= joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
# --- connect stepper driver to the joint
net y-pos-cmd => cia402.1.pos-cmd
net y-pos-fb => cia402.1.pos-fb
net y-enable => cia402.1.enable
# --- ect60 settings
setp cia402.1.csp-mode 1
setp cia402.1.pos-scale 26214.4
# --- from servo(ethercat) to cia402
net y-statusword lcec.0.1.cia-statusword => cia402.1.statusword
net y-opmode-display lcec.0.1.opmode-display => cia402.1.opmode-display
net y-drv-act-pos lcec.0.1.actual-position => cia402.1.drv-actual-position
net y-drv-act-velo lcec.0.1.actual-velocity => cia402.1.drv-actual-velocity
# --- from cia402 to servo(ethercat)
net y-controlword cia402.1.controlword => lcec.0.1.cia-controlword
net y-modes-of-operation cia402.1.opmode => lcec.0.1.opmode
net y-drv-target-pos cia402.1.drv-target-position => lcec.0.1.target-position
net y-drv-target-velo cia402.1.drv-target-velocity => lcec.0.1.target-velocity
#*******************
# AXIS z
#*******************
# --- joint signals for motion
net z-pos-cmd <= joint.2.motor-pos-cmd
net z-vel-cmd <= joint.2.vel-cmd
net z-pos-fb <= joint.2.motor-pos-fb
net z-enable <= joint.2.amp-enable-out
# --- connect stepper driver to the joint
net z-pos-cmd => cia402.2.pos-cmd
net z-pos-fb => cia402.2.pos-fb
net z-enable => cia402.2.enable
# --- ect60 settings
setp cia402.2.csp-mode 1
setp cia402.2.pos-scale 26214.4
# --- from servo(ethercat) to cia402
net z-statusword lcec.0.2.cia-statusword => cia402.2.statusword
net z-opmode-display lcec.0.2.opmode-display => cia402.2.opmode-display
net z-drv-act-pos lcec.0.2.actual-position => cia402.2.drv-actual-position
net z-drv-act-velo lcec.0.2.actual-velocity => cia402.2.drv-actual-velocity
# --- from cia402 to servo(ethercat)
net z-controlword cia402.2.controlword => lcec.0.2.cia-controlword
net z-modes-of-operation cia402.2.opmode => lcec.0.2.opmode
net z-drv-target-pos cia402.2.drv-target-position => lcec.0.2.target-position
net z-drv-target-velo cia402.2.drv-target-velocity => lcec.0.2.target-velocity
#*******************
# SPINDLE
#*******************
# --- joint signals for motion
net spindle-speed-cmd spindle.0.speed-out => cia402.3.velocity-cmd
net spindle-speed-fb cia402.3.velocity-fb => spindle.0.speed-in
net spindle-on spindle.0.on => cia402.3.enable
# --- ect60 settings
setp cia402.3.csp-mode 0
setp cia402.3.pos-scale 4000
setp cia402.3.velo-scale 400
# --- from servo(ethercat) to cia402
net s-statusword lcec.0.3.cia-statusword => cia402.3.statusword
net s-opmode-display lcec.0.3.opmode-display => cia402.3.opmode-display
net s-drv-act-pos lcec.0.3.actual-position => cia402.3.drv-actual-position
net s-drv-act-velo lcec.0.3.actual-velocity => cia402.3.drv-actual-velocity
# --- from cia402 to servo(ethercat)
net s-controlword cia402.3.controlword => lcec.0.3.cia-controlword
net s-modes-of-operation cia402.3.opmode => lcec.0.3.opmode
net s-drv-target-pos cia402.3.drv-target-position => lcec.0.3.target-position
net s-drv-target-velo cia402.3.drv-target-velocity => lcec.0.3.target-velocity
#*********************
# E-STOP
#*********************
setp iocontrol.0.emc-enable-in 1
loadrt hal_parport cfg="0 in"
addf parport.0.read servo-thread
#addf mux4.0 servo-thread
# Jog Pendant
loadrt encoder num_chan=1
loadrt mux4 count=1
addf encoder.capture-position servo-thread
addf encoder.update-counters servo-thread
addf mux4.0 servo-thread
# If your MPG outputs a quadrature signal per click set x4 to 1
# If your MPG puts out 1 pulse per click set x4 to 0
setp encoder.0.x4-mode 0
# For velocity mode, set to 1
# In velocity mode the axis stops when the dial is stopped
# even if that means the commanded motion is not completed,
# For position mode (the default), set to 0
# In position mode the axis will move exactly jog-scale
# units for each count, regardless of how long that might take,
setp axis.x.jog-vel-mode 0
setp axis.y.jog-vel-mode 0
setp axis.z.jog-vel-mode 0
# This sets the scale that will be used based on the input to the mux4
setp mux4.0.in0 0.1
setp mux4.0.in1 0.01
setp mux4.0.in2 0.001
# The inputs to the mux4 component
net scale1 mux4.0.sel0 <= parport.0.pin-08-in-not
net scale2 mux4.0.sel1 <= parport.0.pin-07-in-not
# The output from the mux4 is sent to each axis jog scale
net mpg-scale <= mux4.0.out
net mpg-scale => axis.x.jog-scale
net mpg-scale => axis.y.jog-scale
net mpg-scale => axis.z.jog-scale
# The MPG inputs
net mpg-a encoder.0.phase-A <= parport.0.pin-13-in
net mpg-b encoder.0.phase-B <= parport.0.pin-10-in
# The Axis select inputs
net mpg-x axis.x.jog-enable <= parport.0.pin-15-in-not
net mpg-y axis.y.jog-enable <= parport.0.pin-11-in
net mpg-z axis.z.jog-enable <= parport.0.pin-14-in
# The encoder output counts to the axis. Only the selected axis will move.
net encoder-counts <= encoder.0.counts
net encoder-counts => axis.x.jog-counts
net encoder-counts => axis.y.jog-counts
net encoder-counts => axis.z.jog-counts
lite@LinuxCNC:~$ sudo ethercat slaves
0 0:0 OP + L7EC-400S(COE)
1 0:1 OP + L7EC-400S(COE)
2 0:2 OP + L7EC-400S(COE)
3 0:3 PREOP E EM32DX-E4
/* Master 0, Slave 3, "EM32DX-E4"
* Vendor ID: 0x00004321
* Product code: 0x01100073
* Revision number: 0x18050210
*/
ec_pdo_entry_info_t slave_3_pdo_entries[] = {
{0x7000, 0x01, 16}, /* OUT */
{0x6000, 0x01, 16}, /* IN */
};
ec_pdo_info_t slave_3_pdos[] = {
{0x1600, 1, slave_3_pdo_entries + 0}, /* RxPDO0-Map */
{0x1a00, 1, slave_3_pdo_entries + 1}, /* TxPDO1-Map */
};
ec_sync_info_t slave_3_syncs[] = {
{0, EC_DIR_OUTPUT, 0, NULL, EC_WD_DISABLE},
{1, EC_DIR_INPUT, 0, NULL, EC_WD_DISABLE},
{2, EC_DIR_OUTPUT, 1, slave_3_pdos + 0, EC_WD_ENABLE},
{3, EC_DIR_INPUT, 1, slave_3_pdos + 1, EC_WD_DISABLE},
{0xff}
- spumco
- spumco
04 Aug 2024 02:05
Replied by spumco on topic Hardware needed to switch from mach 3 6 axis to linuxcnc 9 axis
Hardware needed to switch from mach 3 6 axis to linuxcnc 9 axis
Category: General LinuxCNC Questions
Rick,
You'll find that there are many ways to accomplish the same thing in LCNC, but what I suggested was a combination of boards that would easily drive 9 separate axis motors, plus an analog 0-10v output for typical spindle control, plus a fair amount of inputs & outputs, plus has 5 high-speed encoder inputs since you mentioned 'closed loop.'
The 7i84 vs 7i84D - boards have the same I/O quantity, but one is for sourcing outputs and the other (D) is for sinking outputs.
The above recommendation is just that - a suggestion of an easy way to get 9 axes. It was not a cost or space optimized solution, and I strongly discourage you from buying anything at this point. You need to be in research mode right now.
If you want more specific recommendations, pics of the lathe, plus a detailed description of what additional 'stuff' you want to add would help us help you. Pics of the existing control electronics (stepper drives, spindle drive, power supplies, etc.) and anything else (control panel) would help.
Make a list of all the inputs, outputs, axes, spindle, whatever. Identify the voltages, amps, what components you have and will need in the future.
As for loading... are you talking about stock or part blank loading? Does this hardware currently exist, or are you planning to fabricate some sort of automation mechanism?
-S
You'll find that there are many ways to accomplish the same thing in LCNC, but what I suggested was a combination of boards that would easily drive 9 separate axis motors, plus an analog 0-10v output for typical spindle control, plus a fair amount of inputs & outputs, plus has 5 high-speed encoder inputs since you mentioned 'closed loop.'
The 7i84 vs 7i84D - boards have the same I/O quantity, but one is for sourcing outputs and the other (D) is for sinking outputs.
The above recommendation is just that - a suggestion of an easy way to get 9 axes. It was not a cost or space optimized solution, and I strongly discourage you from buying anything at this point. You need to be in research mode right now.
If you want more specific recommendations, pics of the lathe, plus a detailed description of what additional 'stuff' you want to add would help us help you. Pics of the existing control electronics (stepper drives, spindle drive, power supplies, etc.) and anything else (control panel) would help.
Make a list of all the inputs, outputs, axes, spindle, whatever. Identify the voltages, amps, what components you have and will need in the future.
As for loading... are you talking about stock or part blank loading? Does this hardware currently exist, or are you planning to fabricate some sort of automation mechanism?
-S
- spumco
- spumco
02 Aug 2024 19:12
Replied by spumco on topic Hardware needed to switch from mach 3 6 axis to linuxcnc 9 axis
Hardware needed to switch from mach 3 6 axis to linuxcnc 9 axis
Category: General LinuxCNC Questions
Some additional info would be helpful.
What is the machine? What is the upcoming project and why do you need three additional axes?
What are the current 6 axes, and what are the three additional axes you want/need to add? (linear axes, rotary, ballscrew, belt, worm drive, etc.)
When you ask for hardware suggestions, do you mean control hardware, motion hardware, or both?
What exactly is the current control setup? What do you plan to re-use?
Closed loop how? Closed loop steppers, or closed loop back to the control (LCNC)? Why do you think you might want this?
What IO do you need? Voltage, sinking/sourcing, current requirements?
Is there a spindle? How is it controlled?
Anything you can provide details on will help.
What is the machine? What is the upcoming project and why do you need three additional axes?
What are the current 6 axes, and what are the three additional axes you want/need to add? (linear axes, rotary, ballscrew, belt, worm drive, etc.)
When you ask for hardware suggestions, do you mean control hardware, motion hardware, or both?
What exactly is the current control setup? What do you plan to re-use?
Closed loop how? Closed loop steppers, or closed loop back to the control (LCNC)? Why do you think you might want this?
What IO do you need? Voltage, sinking/sourcing, current requirements?
Is there a spindle? How is it controlled?
Anything you can provide details on will help.
- captain-panda
02 Aug 2024 09:55 - 03 Aug 2024 10:08
Gravograph Engraving Machine(s) Conversion (Updated) was created by captain-panda
Gravograph Engraving Machine(s) Conversion (Updated)
Category: Basic Configuration
Dear All,
Figured it out with extended reading - thanks for this great forum! - and a bit of creative try-and-error.
All 3 axes are set up and calibrated, homing works like a charm
Next and last open issue is the spindle - but I don't expect much difficulty with that. Otherwise there'll be another post here ...
ORIGINAL POST:
I've started a project to convert a 30-year-old engraving machine (Gravograph UNICA) to LinuxCNC running on a Raspberry PI 4 with a MESA 7C80. I have several Gravograph machines of various sizes available and am looking to roll out my conversion to most of them, if it works out as planned. These machines may be old, but as such they're solid and reliable. Also they are simple as there's just one stepper and one limit switch per axis and the spindle motor to control. The main reason for conversion is that the UNICA machine only runs on it's own Gravograph-unique operating system with a tiny monochrome CRT screen and propietary keyboard, with no communication port. The other, larger machines can communicate via serial port, but they also require Gravograph-only software ...
So far, I got the Raspberry PI, 7C80 and LinuxCNC up and running to the point that the x-axis stepper is operational by using linuxcnc.hal and linuxcnc.ini from this thread:
forum.linuxcnc.org/42-deutsch/52725-3-ac...esa-7c80-und-raspi-4
As far as I can tell, there's no wizard available (stepconf etc.) for configuring the MESA 7C80, so I need to work with the config files directly(?)
I modified linuxcnc.ini so that the stepper runs smoothly, and added three lines for the limit switch and homing. The stepper now starts running when I home the machine in LinuxCNC, and the program is apparently waiting for the limit switch to be triggered.
This is where I'm currently insecure and would like to ask for assistance:
Figured it out with extended reading - thanks for this great forum! - and a bit of creative try-and-error.
All 3 axes are set up and calibrated, homing works like a charm

Next and last open issue is the spindle - but I don't expect much difficulty with that. Otherwise there'll be another post here ...
ORIGINAL POST:
I've started a project to convert a 30-year-old engraving machine (Gravograph UNICA) to LinuxCNC running on a Raspberry PI 4 with a MESA 7C80. I have several Gravograph machines of various sizes available and am looking to roll out my conversion to most of them, if it works out as planned. These machines may be old, but as such they're solid and reliable. Also they are simple as there's just one stepper and one limit switch per axis and the spindle motor to control. The main reason for conversion is that the UNICA machine only runs on it's own Gravograph-unique operating system with a tiny monochrome CRT screen and propietary keyboard, with no communication port. The other, larger machines can communicate via serial port, but they also require Gravograph-only software ...
So far, I got the Raspberry PI, 7C80 and LinuxCNC up and running to the point that the x-axis stepper is operational by using linuxcnc.hal and linuxcnc.ini from this thread:
forum.linuxcnc.org/42-deutsch/52725-3-ac...esa-7c80-und-raspi-4
As far as I can tell, there's no wizard available (stepconf etc.) for configuring the MESA 7C80, so I need to work with the config files directly(?)
I modified linuxcnc.ini so that the stepper runs smoothly, and added three lines for the limit switch and homing. The stepper now starts running when I home the machine in LinuxCNC, and the program is apparently waiting for the limit switch to be triggered.
This is where I'm currently insecure and would like to ask for assistance:
- What terminals to connect the limit switch to at the 7C80?
- How to set it up as a NC contact (Switch opens when x-axis home position is reached)?
- How to set up homing to move the spindle towards home at first if the home switch is not triggered, and then move a short distance away and back to the final home position?
This is my current linuxcnc.ini:
Thank you for reading and thanks in advance for any answers!
Best regards,
Erik
captain-panda
- ffffrf
- ffffrf
30 Jul 2024 13:32
help with millrun and/or custom Z-X-A(or C) lathe/machine was created by ffffrf
help with millrun and/or custom Z-X-A(or C) lathe/machine
Category: Fusion 360
Hello everyone, hoping someone in the community can help. I have a lathe that I modified to have the headstock be driven by a positional stepper motor, and have added a spindle on the cross slide WITHOUT a Y axis. Thus, I am looking for help getting a working processor that can generate gcode for 2d milling in this configuration, meaning I can do things like drill holes on the face of my stock off center.
What is the best way to go about doing this? Has anyone already made or used a working post processor for this? An old thread in fusion360 support said to find a post processor for millturn and remove mention of the Y axis so it only generates gcode without it - is that the right way to go about it?
Lastly, can someone verify if my kinematics are organized correctly in fusion360? My rotational/positional axis is along the Z axis and holds the stock, my spindle is on the cross slide (X axis) and points along the Z axis (attached image)
What is the best way to go about doing this? Has anyone already made or used a working post processor for this? An old thread in fusion360 support said to find a post processor for millturn and remove mention of the Y axis so it only generates gcode without it - is that the right way to go about it?
Lastly, can someone verify if my kinematics are organized correctly in fusion360? My rotational/positional axis is along the Z axis and holds the stock, my spindle is on the cross slide (X axis) and points along the Z axis (attached image)
Time to create page: 1.250 seconds