Search Results (Searched for: THCAD)
- rodw
02 Feb 2025 12:01
Replied by rodw on topic Homemade CNC Plasma - hypertherm, Mesa, gear drives, nema 34.
Homemade CNC Plasma - hypertherm, Mesa, gear drives, nema 34.
Category: Show Your Stuff
Well the THCAD data is in hal so you are nearly there
what have you got set for
Voltage scale and voltage offset here?
linuxcnc.org/docs/stable/html/plasma/qtp...lasma:parameters-tab
Maybe PCW can see something missing on the night shift...
what have you got set for
Voltage scale and voltage offset here?
linuxcnc.org/docs/stable/html/plasma/qtp...lasma:parameters-tab
Maybe PCW can see something missing on the night shift...
- RNJFAB
- RNJFAB
02 Feb 2025 11:05 - 02 Feb 2025 11:23
So i have done the calculator, and fudged the numbers to get the voltage back around 0v
Confirm - 1/32 setting on board.
Confirm - Plasma is set to 20:1.
Confirm - torch starts and the light on the THCAD 10 flashes faster.
Replied by RNJFAB on topic Homemade CNC Plasma - hypertherm, Mesa, gear drives, nema 34.
Homemade CNC Plasma - hypertherm, Mesa, gear drives, nema 34.
Category: Show Your Stuff
So i have done the calculator, and fudged the numbers to get the voltage back around 0v
Confirm - 1/32 setting on board.
Confirm - Plasma is set to 20:1.
Confirm - torch starts and the light on the THCAD 10 flashes faster.
- Badutis
- Badutis
02 Feb 2025 11:00
hi guys I bought a MESA 7I96+THCAD300 for my CNC plasma machine project a couple of years ago. So I don't really remember how and why I chose THCAD300, although I have plasma machines Stahlwerk CUT 70, as far as I know, with ARC pilot type ignition. And if I understand correctly I need THCAD 10? Is there any way to modify or adapt the THCAD300 I have to my needs? Should I buy a new one? If new, what kind?
Replied by Badutis on topic CNC Plasma cutters, DIY, building info and guide
CNC Plasma cutters, DIY, building info and guide
Category: Plasma & Laser
Warning: Spoiler!
- rodw
02 Feb 2025 07:18
Replied by rodw on topic Homemade CNC Plasma - hypertherm, Mesa, gear drives, nema 34.
Homemade CNC Plasma - hypertherm, Mesa, gear drives, nema 34.
Category: Show Your Stuff
So the 9v battery tells you it's working, The light in the board should flash faster at 9 volts
Make sure the scaling link on the board is set to 1/32. Next step is to check the encoder velocity in halshow. It should be hovering around the 0 volt frequency (1/32 thereof). if not, debug the reason
There are some encoder settings in hal but they appear to be set OK
Next step is to ensure the thcad calibration settings are set for qtplasmac. There is a link to an online calculator to determine the correct settings in the QTplasmac docs.
Make sure the scaling link on the board is set to 1/32. Next step is to check the encoder velocity in halshow. It should be hovering around the 0 volt frequency (1/32 thereof). if not, debug the reason
There are some encoder settings in hal but they appear to be set OK
Next step is to ensure the thcad calibration settings are set for qtplasmac. There is a link to an online calculator to determine the correct settings in the QTplasmac docs.
- RNJFAB
- RNJFAB
02 Feb 2025 04:57 - 02 Feb 2025 07:01
Replied by RNJFAB on topic Homemade CNC Plasma - hypertherm, Mesa, gear drives, nema 34.
Homemade CNC Plasma - hypertherm, Mesa, gear drives, nema 34.
Category: Show Your Stuff
not sure about debouncing on the limit switches.
Mesa 7i96,THCAD10, closed loop nema34. hypertherm xp45 with cpc port.
all fixed with the 24v field power. thanks Rod.
next problem is the thc is not reading. I have checked the THC with 9V battery and it works there, so guessing the problem lies in my INI or HAL files.
# Generated by PNCconf at Sun Feb 2 06:15:46 2025
# Using LinuxCNC version: Master (2.9)
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
[EMC]
MACHINE = T17
DEBUG = 0
VERSION = 1.1
[DISPLAY]
DISPLAY = qtvcp qtplasmac
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.000000
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PROGRAM_PREFIX = /home/cnc/linuxcnc/nc_files
INCREMENTS = 10mm 1mm 100mm
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 83.333333
MAX_LINEAR_VELOCITY = 183.333333
MIN_LINEAR_VELOCITY = 1.666667
DEFAULT_ANGULAR_VELOCITY = 12.000000
MAX_ANGULAR_VELOCITY = 180.000000
MIN_ANGULAR_VELOCITY = 1.666667
GEOMETRY = xyz
CYCLE_TIME = 100
[FILTER]
PROGRAM_EXTENSION = .ngc,.nc,.tap GCode File (*.ngc, *.nc, *.tap)
ngc = qtplasmac_gcode
nc = qtplasmac_gcode
tap = qtplasmac_gcode
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[RS274NGC]
PARAMETER_FILE = linuxcnc.var
RS274NGC_STARTUP_CODE = G21 G40 G49 G80 G90 G92.1 G94 G97 M52P1
SUBROUTINE_PATH = ./:../../nc_files
USER_M_PATH = ./:../../nc_files
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000
[HMOT]
CARD0=hm2_7i96.0
[HAL]
HALUI = halui
HALFILE = T17.hal
HALFILE = qtplasmac_comp.hal
HALFILE = custom.hal
POSTGUI_HALFILE = custom_postgui.hal
SHUTDOWN = shutdown.hal
[HALUI]
[KINS]
JOINTS = 4
KINEMATICS = trivkins coordinates=XYYZ
[TRAJ]
SPINDLES = 3
COORDINATES = XYYZ
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 18.33
MAX_LINEAR_VELOCITY = 183.33
NO_FORCE_HOMING = 1
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
#******************************************
[AXIS_X]
# MAX_VEL & MAX_ACC need to be twice the corresponding joint value
MAX_VELOCITY = 366.6666666666667
MAX_ACCELERATION = 4000.0
OFFSET_AV_RATIO = 0.5
MIN_LIMIT = -5.0
MAX_LIMIT = 1300.0
[JOINT_0]
TYPE = LINEAR
HOME = 10.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 183.33333333333334
MAX_ACCELERATION = 2000.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 229.17
STEPGEN_MAXACCEL = 2500.00
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 10000
DIRHOLD = 10000
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = 52.0833
MIN_LIMIT = -5.0
MAX_LIMIT = 1300.0
HOME_OFFSET = -10.000000
HOME_SEARCH_VEL = -50.000000
HOME_LATCH_VEL = -25.000000
HOME_FINAL_VEL = 16.666667
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
#******************************************
#******************************************
[AXIS_Y]
# MAX_VEL & MAX_ACC need to be twice the corresponding joint value
MAX_VELOCITY = 366.6666666666667
MAX_ACCELERATION = 5000.0
OFFSET_AV_RATIO = 0.5
MIN_LIMIT = -5.0
MAX_LIMIT = 2520.0
[JOINT_1]
TYPE = LINEAR
HOME = 10.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 183.33333333333334
MAX_ACCELERATION = 2500.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 229.17
STEPGEN_MAXACCEL = 3125.00
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 10000
DIRHOLD = 10000
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = 52.0833
MIN_LIMIT = -5.0
MAX_LIMIT = 2520.0
HOME_OFFSET = -10.000000
HOME_SEARCH_VEL = -50.000000
HOME_LATCH_VEL = -25.000000
HOME_FINAL_VEL = 16.666667
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = -2
[JOINT_2]
TYPE = LINEAR
HOME = 10.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 183.33333333333334
MAX_ACCELERATION = 2500.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 229.17
STEPGEN_MAXACCEL = 3125.00
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 10000
DIRHOLD = 10000
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = 52.0833
MIN_LIMIT = -5.0
MAX_LIMIT = 2520.0
HOME_OFFSET = -10.000000
HOME_SEARCH_VEL = -50.000000
HOME_LATCH_VEL = -25.000000
HOME_FINAL_VEL = 16.666667
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = -2
#******************************************
#******************************************
[AXIS_Z]
# MAX_VEL & MAX_ACC need to be twice the corresponding joint value
MAX_VELOCITY = 66.66666666666667
MAX_ACCELERATION = 400.0
OFFSET_AV_RATIO = 0.5
MIN_LIMIT = -150.0
MAX_LIMIT = 5.0
[JOINT_3]
TYPE = LINEAR
HOME = -10.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 33.333333333333336
MAX_ACCELERATION = 200.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 41.67
STEPGEN_MAXACCEL = 250.00
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 10000
DIRHOLD = 10000
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = 392.1569
MIN_LIMIT = -150.0
MAX_LIMIT = 5.0
HOME_OFFSET = 5.000000
HOME_SEARCH_VEL = 8.333333
HOME_LATCH_VEL = 8.333333
HOME_FINAL_VEL = -8.333333
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
#******************************************
# Generated by PNCconf at Sun Jan 26 20:35:25 2025
# 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 num_spindles=[TRAJ]SPINDLES
loadrt hostmot2
loadrt hm2_eth board_ip="10.10.10.10" config="num_encoders=1 num_pwmgens=0 num_stepgens=5 sserial_port_0=0xxxxxxx"
setp [HMOT](CARD0).watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.y2,pid.z,pid.s
loadrt plasmac
addf [HMOT](CARD0).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.y2.do-pid-calcs servo-thread
addf pid.z.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs servo-thread
addf plasmac servo-thread
addf [HMOT](CARD0).write servo-thread
setp [HMOT](CARD0).dpll.01.timer-us -50
setp [HMOT](CARD0).stepgen.timer-number 1
# ---PLASMA INPUT DEBOUNCE---
#values for these are in custom.hal
loadrt dbounce names=db_breakaway,db_float,db_ohmic,db_arc-ok
addf db_float servo-thread
addf db_ohmic servo-thread
addf db_breakaway servo-thread
addf db_arc-ok servo-thread
# ---JOINT ASSOCIATED WITH THE Z AXIS---
net plasmac:axis-position joint.3.pos-fb => plasmac.axis-z-position
# ---PLASMA INPUTS---
# ---all modes---
net plasmac:float-switch => db_float.in
net plasmac:breakaway => db_breakaway.in
net plasmac:ohmic-probe => db_ohmic.in
net plasmac:ohmic-sense-in => plasmac.ohmic-sense-in
# ---modes 0 & 1
net plasmac:arc-voltage-in => plasmac.arc-voltage-in
# ---modes 1 & 2
net plasmac:arc-ok-in => db_arc-ok.in
# ---mode 2
net plasmac:move-up <= plasmac.move-up
net plasmac:move-down <= plasmac.move-down
# ---PLASMA OUTPUTS---
# ---all modes---
net plasmac:ohmic-enable <= plasmac.ohmic-enable
net plasmac:scribe-arm <= plasmac.scribe-arm
net plasmac:scribe-on <= plasmac.scribe-on
# external output signals
# --- PLASMAC:TORCH-ON ---
net plasmac:torch-on => [HMOT](CARD0).ssr.00.out-00
# external input signals
# --- ESTOP-EXT ---
net estop-ext <= [HMOT](CARD0).gpio.000.in_not
# --- BOTH-HOME-X ---
net both-home-x <= [HMOT](CARD0).gpio.001.in_not
# --- BOTH-HOME-Y ---
net both-home-y <= [HMOT](CARD0).gpio.002.in_not
# --- BOTH-HOME-Y2 ---
net both-home-y2 <= [HMOT](CARD0).gpio.003.in_not
# --- BOTH-HOME-Z ---
net both-home-z <= [HMOT](CARD0).gpio.004.in_not
# --- PLASMAC:FLOAT-SWITCH ---
net plasmac:float-switch <= [HMOT](CARD0).gpio.005.in_not
# --- PLASMAC:BREAKAWAY ---
net plasmac:breakaway <= [HMOT](CARD0).gpio.006.in_not
# --- Encoder ---
#*******************
# 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.012700
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 [HMOT](CARD0).stepgen.01.dirsetup [JOINT_0]DIRSETUP
setp [HMOT](CARD0).stepgen.01.dirhold [JOINT_0]DIRHOLD
setp [HMOT](CARD0).stepgen.01.steplen [JOINT_0]STEPLEN
setp [HMOT](CARD0).stepgen.01.stepspace [JOINT_0]STEPSPACE
setp [HMOT](CARD0).stepgen.01.position-scale [JOINT_0]STEP_SCALE
setp [HMOT](CARD0).stepgen.01.step_type 0
setp [HMOT](CARD0).stepgen.01.control-type 1
setp [HMOT](CARD0).stepgen.01.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp [HMOT](CARD0).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 => [HMOT](CARD0).stepgen.01.velocity-cmd
net x-pos-fb <= [HMOT](CARD0).stepgen.01.position-fb
net x-pos-fb => joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
net x-enable => [HMOT](CARD0).stepgen.01.enable
# ---setup home / limit switch signals---
net both-home-x => joint.0.home-sw-in
net both-home-x => joint.0.neg-lim-sw-in
net both-home-x => 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.012700
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 [HMOT](CARD0).stepgen.03.dirsetup [JOINT_1]DIRSETUP
setp [HMOT](CARD0).stepgen.03.dirhold [JOINT_1]DIRHOLD
setp [HMOT](CARD0).stepgen.03.steplen [JOINT_1]STEPLEN
setp [HMOT](CARD0).stepgen.03.stepspace [JOINT_1]STEPSPACE
setp [HMOT](CARD0).stepgen.03.position-scale [JOINT_1]STEP_SCALE
setp [HMOT](CARD0).stepgen.03.step_type 0
setp [HMOT](CARD0).stepgen.03.control-type 1
setp [HMOT](CARD0).stepgen.03.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.03.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 => [HMOT](CARD0).stepgen.03.velocity-cmd
net y-pos-fb <= [HMOT](CARD0).stepgen.03.position-fb
net y-pos-fb => joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
net y-enable => [HMOT](CARD0).stepgen.03.enable
# ---setup home / limit switch signals---
net both-home-y => joint.1.home-sw-in
net both-home-y => joint.1.neg-lim-sw-in
net both-home-y => joint.1.pos-lim-sw-in
#*******************
# Tandem AXIS Y2 JOINT 2
#*******************
setp pid.y2.Pgain [JOINT_2]P
setp pid.y2.Igain [JOINT_2]I
setp pid.y2.Dgain [JOINT_2]D
setp pid.y2.bias [JOINT_2]BIAS
setp pid.y2.FF0 [JOINT_2]FF0
setp pid.y2.FF1 [JOINT_2]FF1
setp pid.y2.FF2 [JOINT_2]FF2
setp pid.y2.deadband [JOINT_2]DEADBAND
setp pid.y2.maxoutput [JOINT_2]MAX_OUTPUT
setp pid.y2.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.y2.maxerror 0.012700
net y2-index-enable => pid.y2.index-enable
net y2-enable => pid.y2.enable
net y2-pos-cmd => pid.y2.command
net y2-pos-fb => pid.y2.feedback
net y2-output <= pid.y2.output
# Step Gen signals/setup for tandem axis
setp [HMOT](CARD0).stepgen.02.dirsetup [JOINT_2]DIRSETUP
setp [HMOT](CARD0).stepgen.02.dirhold [JOINT_2]DIRHOLD
setp [HMOT](CARD0).stepgen.02.steplen [JOINT_2]STEPLEN
setp [HMOT](CARD0).stepgen.02.stepspace [JOINT_2]STEPSPACE
setp [HMOT](CARD0).stepgen.02.position-scale [JOINT_2]STEP_SCALE
setp [HMOT](CARD0).stepgen.02.step_type 0
setp [HMOT](CARD0).stepgen.02.control-type 1
setp [HMOT](CARD0).stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net y2-pos-cmd <= joint.2.motor-pos-cmd
net y2-vel-cmd <= joint.2.vel-cmd
net y2-output => [HMOT](CARD0).stepgen.02.velocity-cmd
net y2-pos-fb <= [HMOT](CARD0).stepgen.02.position-fb
net y2-pos-fb => joint.2.motor-pos-fb
net y2-enable <= joint.2.amp-enable-out
net y2-enable => [HMOT](CARD0).stepgen.02.enable
# ---setup home / limit switch signals---
net both-home-y2 => joint.2.home-sw-in
net both-home-y2 => joint.2.neg-lim-sw-in
net both-home-y2 => joint.2.pos-lim-sw-in
#*******************
# AXIS Z JOINT 3
#*******************
setp pid.z.Pgain [JOINT_3]P
setp pid.z.Igain [JOINT_3]I
setp pid.z.Dgain [JOINT_3]D
setp pid.z.bias [JOINT_3]BIAS
setp pid.z.FF0 [JOINT_3]FF0
setp pid.z.FF1 [JOINT_3]FF1
setp pid.z.FF2 [JOINT_3]FF2
setp pid.z.deadband [JOINT_3]DEADBAND
setp pid.z.maxoutput [JOINT_3]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.012700
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 [HMOT](CARD0).stepgen.00.dirsetup [JOINT_3]DIRSETUP
setp [HMOT](CARD0).stepgen.00.dirhold [JOINT_3]DIRHOLD
setp [HMOT](CARD0).stepgen.00.steplen [JOINT_3]STEPLEN
setp [HMOT](CARD0).stepgen.00.stepspace [JOINT_3]STEPSPACE
setp [HMOT](CARD0).stepgen.00.position-scale [JOINT_3]STEP_SCALE
setp [HMOT](CARD0).stepgen.00.step_type 0
setp [HMOT](CARD0).stepgen.00.control-type 1
setp [HMOT](CARD0).stepgen.00.maxaccel [JOINT_3]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.00.maxvel [JOINT_3]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net z-pos-cmd <= joint.3.motor-pos-cmd
net z-vel-cmd <= joint.3.vel-cmd
net z-output => [HMOT](CARD0).stepgen.00.velocity-cmd
net z-pos-fb <= [HMOT](CARD0).stepgen.00.position-fb
net z-pos-fb => joint.3.motor-pos-fb
net z-enable <= joint.3.amp-enable-out
net z-enable => [HMOT](CARD0).stepgen.00.enable
# ---setup home / limit switch signals---
net both-home-z => joint.3.home-sw-in
net both-home-z => joint.3.neg-lim-sw-in
net both-home-z => joint.3.pos-lim-sw-in
# ---motion control signals---
net in-position <= motion.in-position
net machine-is-enabled <= motion.motion-enabled
# ---digital in / out signals---
setp hm2_7i96.0.encoder.00.counter-mode 1
setp hm2_7i96.0.encoder.00.filter 1
setp hm2_7i96.0.encoder.00.scale -1
net plasmac:arc-voltage-in hm2_7i96.0.encoder.00.velocity => plasmac.arc-voltage-in
# ---estop signals---
net estop-out <= iocontrol.0.user-enable-out
net estop-ext => iocontrol.0.emc-enable-in
# ---QTPLASMAC TOOLCHANGE PASSTHROUGH---
net tool:change iocontrol.0.tool-change => iocontrol.0.tool-changed
net tool:prep iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
# Include your custom HAL commands here
# This file will not be overwritten when you run PNCconf again
# ---COMMON PLASMAC DEBOUNCE---
# for the float and ohmic inputs each increment in delay is
# is a 0.001mm (0.00004") increase in any probed height result
setp db_float.delay 5
# set to zero if using internal ohmic sensing
setp db_ohmic.delay 0
setp db_breakaway.delay 5
setp db_arc-ok.delay 5
########################################
# The following variables are available for fine tuning some parameters.
# To use any of these, uncomment the required setp line and set an appropriate value.
# Dampen excessive noise on the arc voltage input
# default = 0 (volts)
#setp plasmac.lowpass-frequency 0
# The time delay from losing the arc ok signal until QtPlasmaC reacts to the arc loss.
# default = 0.0 (seconds)
#setp plasmac.arc-lost-delay 0.0
# For mode 0 Arc-OK only, the number of consecutive readings within the threshold that are required to set the Arc-OK signal.
# default = 6
#setp plasmac.arc-ok-counts 6
# For mode 0 Arc-OK only, the maximum voltage deviation that is allowed for a valid voltage to set the Arc OK signal.
#default = 10 (volts)
#setp plasmac.arc-ok-threshold 10
# The voltage above and below 0V that will display as 0V. Prevents small fluctuations from flickering the voltage display.
# default = 0 (volts)
#setp plasmac.zero-window 0
# The distance (in millimeters) away from the Z MAX_LIMIT that QtPlasmaC will allow the Z axis to travel while under machine control.
# default = 5 (mm)
#setp plasmac.max-offset 5
# The required number of consecutive times that the threshold has been exceeded before applying the void lock to the THC.
# default = 2
#setp plasmac.kerf-error-max 2
# ---OHMIC SENSE CONTACT DEBOUNCE---
setp plasmac.ohmic-sense-off-delay 3
setp plasmac.ohmic-sense-on-delay 3
Mesa 7i96,THCAD10, closed loop nema34. hypertherm xp45 with cpc port.
all fixed with the 24v field power. thanks Rod.
next problem is the thc is not reading. I have checked the THC with 9V battery and it works there, so guessing the problem lies in my INI or HAL files.
# Generated by PNCconf at Sun Feb 2 06:15:46 2025
# Using LinuxCNC version: Master (2.9)
# If you make changes to this file, they will be
# overwritten when you run PNCconf again
[EMC]
MACHINE = T17
DEBUG = 0
VERSION = 1.1
[DISPLAY]
DISPLAY = qtvcp qtplasmac
POSITION_OFFSET = RELATIVE
POSITION_FEEDBACK = ACTUAL
MAX_FEED_OVERRIDE = 2.000000
INTRO_GRAPHIC = linuxcnc.gif
INTRO_TIME = 5
PROGRAM_PREFIX = /home/cnc/linuxcnc/nc_files
INCREMENTS = 10mm 1mm 100mm
POSITION_FEEDBACK = ACTUAL
DEFAULT_LINEAR_VELOCITY = 83.333333
MAX_LINEAR_VELOCITY = 183.333333
MIN_LINEAR_VELOCITY = 1.666667
DEFAULT_ANGULAR_VELOCITY = 12.000000
MAX_ANGULAR_VELOCITY = 180.000000
MIN_ANGULAR_VELOCITY = 1.666667
GEOMETRY = xyz
CYCLE_TIME = 100
[FILTER]
PROGRAM_EXTENSION = .ngc,.nc,.tap GCode File (*.ngc, *.nc, *.tap)
ngc = qtplasmac_gcode
nc = qtplasmac_gcode
tap = qtplasmac_gcode
[TASK]
TASK = milltask
CYCLE_TIME = 0.010
[RS274NGC]
PARAMETER_FILE = linuxcnc.var
RS274NGC_STARTUP_CODE = G21 G40 G49 G80 G90 G92.1 G94 G97 M52P1
SUBROUTINE_PATH = ./:../../nc_files
USER_M_PATH = ./:../../nc_files
[EMCMOT]
EMCMOT = motmod
COMM_TIMEOUT = 1.0
SERVO_PERIOD = 1000000
[HMOT]
CARD0=hm2_7i96.0
[HAL]
HALUI = halui
HALFILE = T17.hal
HALFILE = qtplasmac_comp.hal
HALFILE = custom.hal
POSTGUI_HALFILE = custom_postgui.hal
SHUTDOWN = shutdown.hal
[HALUI]
[KINS]
JOINTS = 4
KINEMATICS = trivkins coordinates=XYYZ
[TRAJ]
SPINDLES = 3
COORDINATES = XYYZ
LINEAR_UNITS = mm
ANGULAR_UNITS = degree
DEFAULT_LINEAR_VELOCITY = 18.33
MAX_LINEAR_VELOCITY = 183.33
NO_FORCE_HOMING = 1
[EMCIO]
EMCIO = io
CYCLE_TIME = 0.100
TOOL_TABLE = tool.tbl
#******************************************
[AXIS_X]
# MAX_VEL & MAX_ACC need to be twice the corresponding joint value
MAX_VELOCITY = 366.6666666666667
MAX_ACCELERATION = 4000.0
OFFSET_AV_RATIO = 0.5
MIN_LIMIT = -5.0
MAX_LIMIT = 1300.0
[JOINT_0]
TYPE = LINEAR
HOME = 10.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 183.33333333333334
MAX_ACCELERATION = 2000.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 229.17
STEPGEN_MAXACCEL = 2500.00
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 10000
DIRHOLD = 10000
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = 52.0833
MIN_LIMIT = -5.0
MAX_LIMIT = 1300.0
HOME_OFFSET = -10.000000
HOME_SEARCH_VEL = -50.000000
HOME_LATCH_VEL = -25.000000
HOME_FINAL_VEL = 16.666667
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
#******************************************
#******************************************
[AXIS_Y]
# MAX_VEL & MAX_ACC need to be twice the corresponding joint value
MAX_VELOCITY = 366.6666666666667
MAX_ACCELERATION = 5000.0
OFFSET_AV_RATIO = 0.5
MIN_LIMIT = -5.0
MAX_LIMIT = 2520.0
[JOINT_1]
TYPE = LINEAR
HOME = 10.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 183.33333333333334
MAX_ACCELERATION = 2500.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 229.17
STEPGEN_MAXACCEL = 3125.00
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 10000
DIRHOLD = 10000
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = 52.0833
MIN_LIMIT = -5.0
MAX_LIMIT = 2520.0
HOME_OFFSET = -10.000000
HOME_SEARCH_VEL = -50.000000
HOME_LATCH_VEL = -25.000000
HOME_FINAL_VEL = 16.666667
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = -2
[JOINT_2]
TYPE = LINEAR
HOME = 10.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 183.33333333333334
MAX_ACCELERATION = 2500.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 229.17
STEPGEN_MAXACCEL = 3125.00
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 10000
DIRHOLD = 10000
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = 52.0833
MIN_LIMIT = -5.0
MAX_LIMIT = 2520.0
HOME_OFFSET = -10.000000
HOME_SEARCH_VEL = -50.000000
HOME_LATCH_VEL = -25.000000
HOME_FINAL_VEL = 16.666667
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = -2
#******************************************
#******************************************
[AXIS_Z]
# MAX_VEL & MAX_ACC need to be twice the corresponding joint value
MAX_VELOCITY = 66.66666666666667
MAX_ACCELERATION = 400.0
OFFSET_AV_RATIO = 0.5
MIN_LIMIT = -150.0
MAX_LIMIT = 5.0
[JOINT_3]
TYPE = LINEAR
HOME = -10.0
FERROR = 10.0
MIN_FERROR = 1.0
MAX_VELOCITY = 33.333333333333336
MAX_ACCELERATION = 200.0
# The values below should be 25% larger than MAX_VELOCITY and MAX_ACCELERATION
# If using BACKLASH compensation STEPGEN_MAXACCEL should be 100% larger.
STEPGEN_MAXVEL = 41.67
STEPGEN_MAXACCEL = 250.00
P = 1000.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
# these are in nanoseconds
DIRSETUP = 10000
DIRHOLD = 10000
STEPLEN = 5000
STEPSPACE = 5000
STEP_SCALE = 392.1569
MIN_LIMIT = -150.0
MAX_LIMIT = 5.0
HOME_OFFSET = 5.000000
HOME_SEARCH_VEL = 8.333333
HOME_LATCH_VEL = 8.333333
HOME_FINAL_VEL = -8.333333
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = YES
HOME_SEQUENCE = 1
#******************************************
# Generated by PNCconf at Sun Jan 26 20:35:25 2025
# 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 num_spindles=[TRAJ]SPINDLES
loadrt hostmot2
loadrt hm2_eth board_ip="10.10.10.10" config="num_encoders=1 num_pwmgens=0 num_stepgens=5 sserial_port_0=0xxxxxxx"
setp [HMOT](CARD0).watchdog.timeout_ns 5000000
loadrt pid names=pid.x,pid.y,pid.y2,pid.z,pid.s
loadrt plasmac
addf [HMOT](CARD0).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.y2.do-pid-calcs servo-thread
addf pid.z.do-pid-calcs servo-thread
addf pid.s.do-pid-calcs servo-thread
addf plasmac servo-thread
addf [HMOT](CARD0).write servo-thread
setp [HMOT](CARD0).dpll.01.timer-us -50
setp [HMOT](CARD0).stepgen.timer-number 1
# ---PLASMA INPUT DEBOUNCE---
#values for these are in custom.hal
loadrt dbounce names=db_breakaway,db_float,db_ohmic,db_arc-ok
addf db_float servo-thread
addf db_ohmic servo-thread
addf db_breakaway servo-thread
addf db_arc-ok servo-thread
# ---JOINT ASSOCIATED WITH THE Z AXIS---
net plasmac:axis-position joint.3.pos-fb => plasmac.axis-z-position
# ---PLASMA INPUTS---
# ---all modes---
net plasmac:float-switch => db_float.in
net plasmac:breakaway => db_breakaway.in
net plasmac:ohmic-probe => db_ohmic.in
net plasmac:ohmic-sense-in => plasmac.ohmic-sense-in
# ---modes 0 & 1
net plasmac:arc-voltage-in => plasmac.arc-voltage-in
# ---modes 1 & 2
net plasmac:arc-ok-in => db_arc-ok.in
# ---mode 2
net plasmac:move-up <= plasmac.move-up
net plasmac:move-down <= plasmac.move-down
# ---PLASMA OUTPUTS---
# ---all modes---
net plasmac:ohmic-enable <= plasmac.ohmic-enable
net plasmac:scribe-arm <= plasmac.scribe-arm
net plasmac:scribe-on <= plasmac.scribe-on
# external output signals
# --- PLASMAC:TORCH-ON ---
net plasmac:torch-on => [HMOT](CARD0).ssr.00.out-00
# external input signals
# --- ESTOP-EXT ---
net estop-ext <= [HMOT](CARD0).gpio.000.in_not
# --- BOTH-HOME-X ---
net both-home-x <= [HMOT](CARD0).gpio.001.in_not
# --- BOTH-HOME-Y ---
net both-home-y <= [HMOT](CARD0).gpio.002.in_not
# --- BOTH-HOME-Y2 ---
net both-home-y2 <= [HMOT](CARD0).gpio.003.in_not
# --- BOTH-HOME-Z ---
net both-home-z <= [HMOT](CARD0).gpio.004.in_not
# --- PLASMAC:FLOAT-SWITCH ---
net plasmac:float-switch <= [HMOT](CARD0).gpio.005.in_not
# --- PLASMAC:BREAKAWAY ---
net plasmac:breakaway <= [HMOT](CARD0).gpio.006.in_not
# --- Encoder ---
#*******************
# 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.012700
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 [HMOT](CARD0).stepgen.01.dirsetup [JOINT_0]DIRSETUP
setp [HMOT](CARD0).stepgen.01.dirhold [JOINT_0]DIRHOLD
setp [HMOT](CARD0).stepgen.01.steplen [JOINT_0]STEPLEN
setp [HMOT](CARD0).stepgen.01.stepspace [JOINT_0]STEPSPACE
setp [HMOT](CARD0).stepgen.01.position-scale [JOINT_0]STEP_SCALE
setp [HMOT](CARD0).stepgen.01.step_type 0
setp [HMOT](CARD0).stepgen.01.control-type 1
setp [HMOT](CARD0).stepgen.01.maxaccel [JOINT_0]STEPGEN_MAXACCEL
setp [HMOT](CARD0).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 => [HMOT](CARD0).stepgen.01.velocity-cmd
net x-pos-fb <= [HMOT](CARD0).stepgen.01.position-fb
net x-pos-fb => joint.0.motor-pos-fb
net x-enable <= joint.0.amp-enable-out
net x-enable => [HMOT](CARD0).stepgen.01.enable
# ---setup home / limit switch signals---
net both-home-x => joint.0.home-sw-in
net both-home-x => joint.0.neg-lim-sw-in
net both-home-x => 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.012700
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 [HMOT](CARD0).stepgen.03.dirsetup [JOINT_1]DIRSETUP
setp [HMOT](CARD0).stepgen.03.dirhold [JOINT_1]DIRHOLD
setp [HMOT](CARD0).stepgen.03.steplen [JOINT_1]STEPLEN
setp [HMOT](CARD0).stepgen.03.stepspace [JOINT_1]STEPSPACE
setp [HMOT](CARD0).stepgen.03.position-scale [JOINT_1]STEP_SCALE
setp [HMOT](CARD0).stepgen.03.step_type 0
setp [HMOT](CARD0).stepgen.03.control-type 1
setp [HMOT](CARD0).stepgen.03.maxaccel [JOINT_1]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.03.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 => [HMOT](CARD0).stepgen.03.velocity-cmd
net y-pos-fb <= [HMOT](CARD0).stepgen.03.position-fb
net y-pos-fb => joint.1.motor-pos-fb
net y-enable <= joint.1.amp-enable-out
net y-enable => [HMOT](CARD0).stepgen.03.enable
# ---setup home / limit switch signals---
net both-home-y => joint.1.home-sw-in
net both-home-y => joint.1.neg-lim-sw-in
net both-home-y => joint.1.pos-lim-sw-in
#*******************
# Tandem AXIS Y2 JOINT 2
#*******************
setp pid.y2.Pgain [JOINT_2]P
setp pid.y2.Igain [JOINT_2]I
setp pid.y2.Dgain [JOINT_2]D
setp pid.y2.bias [JOINT_2]BIAS
setp pid.y2.FF0 [JOINT_2]FF0
setp pid.y2.FF1 [JOINT_2]FF1
setp pid.y2.FF2 [JOINT_2]FF2
setp pid.y2.deadband [JOINT_2]DEADBAND
setp pid.y2.maxoutput [JOINT_2]MAX_OUTPUT
setp pid.y2.error-previous-target true
# This setting is to limit bogus stepgen
# velocity corrections caused by position
# feedback sample time jitter.
setp pid.y2.maxerror 0.012700
net y2-index-enable => pid.y2.index-enable
net y2-enable => pid.y2.enable
net y2-pos-cmd => pid.y2.command
net y2-pos-fb => pid.y2.feedback
net y2-output <= pid.y2.output
# Step Gen signals/setup for tandem axis
setp [HMOT](CARD0).stepgen.02.dirsetup [JOINT_2]DIRSETUP
setp [HMOT](CARD0).stepgen.02.dirhold [JOINT_2]DIRHOLD
setp [HMOT](CARD0).stepgen.02.steplen [JOINT_2]STEPLEN
setp [HMOT](CARD0).stepgen.02.stepspace [JOINT_2]STEPSPACE
setp [HMOT](CARD0).stepgen.02.position-scale [JOINT_2]STEP_SCALE
setp [HMOT](CARD0).stepgen.02.step_type 0
setp [HMOT](CARD0).stepgen.02.control-type 1
setp [HMOT](CARD0).stepgen.02.maxaccel [JOINT_2]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.02.maxvel [JOINT_2]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net y2-pos-cmd <= joint.2.motor-pos-cmd
net y2-vel-cmd <= joint.2.vel-cmd
net y2-output => [HMOT](CARD0).stepgen.02.velocity-cmd
net y2-pos-fb <= [HMOT](CARD0).stepgen.02.position-fb
net y2-pos-fb => joint.2.motor-pos-fb
net y2-enable <= joint.2.amp-enable-out
net y2-enable => [HMOT](CARD0).stepgen.02.enable
# ---setup home / limit switch signals---
net both-home-y2 => joint.2.home-sw-in
net both-home-y2 => joint.2.neg-lim-sw-in
net both-home-y2 => joint.2.pos-lim-sw-in
#*******************
# AXIS Z JOINT 3
#*******************
setp pid.z.Pgain [JOINT_3]P
setp pid.z.Igain [JOINT_3]I
setp pid.z.Dgain [JOINT_3]D
setp pid.z.bias [JOINT_3]BIAS
setp pid.z.FF0 [JOINT_3]FF0
setp pid.z.FF1 [JOINT_3]FF1
setp pid.z.FF2 [JOINT_3]FF2
setp pid.z.deadband [JOINT_3]DEADBAND
setp pid.z.maxoutput [JOINT_3]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.012700
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 [HMOT](CARD0).stepgen.00.dirsetup [JOINT_3]DIRSETUP
setp [HMOT](CARD0).stepgen.00.dirhold [JOINT_3]DIRHOLD
setp [HMOT](CARD0).stepgen.00.steplen [JOINT_3]STEPLEN
setp [HMOT](CARD0).stepgen.00.stepspace [JOINT_3]STEPSPACE
setp [HMOT](CARD0).stepgen.00.position-scale [JOINT_3]STEP_SCALE
setp [HMOT](CARD0).stepgen.00.step_type 0
setp [HMOT](CARD0).stepgen.00.control-type 1
setp [HMOT](CARD0).stepgen.00.maxaccel [JOINT_3]STEPGEN_MAXACCEL
setp [HMOT](CARD0).stepgen.00.maxvel [JOINT_3]STEPGEN_MAXVEL
# ---closedloop stepper signals---
net z-pos-cmd <= joint.3.motor-pos-cmd
net z-vel-cmd <= joint.3.vel-cmd
net z-output => [HMOT](CARD0).stepgen.00.velocity-cmd
net z-pos-fb <= [HMOT](CARD0).stepgen.00.position-fb
net z-pos-fb => joint.3.motor-pos-fb
net z-enable <= joint.3.amp-enable-out
net z-enable => [HMOT](CARD0).stepgen.00.enable
# ---setup home / limit switch signals---
net both-home-z => joint.3.home-sw-in
net both-home-z => joint.3.neg-lim-sw-in
net both-home-z => joint.3.pos-lim-sw-in
# ---motion control signals---
net in-position <= motion.in-position
net machine-is-enabled <= motion.motion-enabled
# ---digital in / out signals---
setp hm2_7i96.0.encoder.00.counter-mode 1
setp hm2_7i96.0.encoder.00.filter 1
setp hm2_7i96.0.encoder.00.scale -1
net plasmac:arc-voltage-in hm2_7i96.0.encoder.00.velocity => plasmac.arc-voltage-in
# ---estop signals---
net estop-out <= iocontrol.0.user-enable-out
net estop-ext => iocontrol.0.emc-enable-in
# ---QTPLASMAC TOOLCHANGE PASSTHROUGH---
net tool:change iocontrol.0.tool-change => iocontrol.0.tool-changed
net tool:prep iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
# Include your custom HAL commands here
# This file will not be overwritten when you run PNCconf again
# ---COMMON PLASMAC DEBOUNCE---
# for the float and ohmic inputs each increment in delay is
# is a 0.001mm (0.00004") increase in any probed height result
setp db_float.delay 5
# set to zero if using internal ohmic sensing
setp db_ohmic.delay 0
setp db_breakaway.delay 5
setp db_arc-ok.delay 5
########################################
# The following variables are available for fine tuning some parameters.
# To use any of these, uncomment the required setp line and set an appropriate value.
# Dampen excessive noise on the arc voltage input
# default = 0 (volts)
#setp plasmac.lowpass-frequency 0
# The time delay from losing the arc ok signal until QtPlasmaC reacts to the arc loss.
# default = 0.0 (seconds)
#setp plasmac.arc-lost-delay 0.0
# For mode 0 Arc-OK only, the number of consecutive readings within the threshold that are required to set the Arc-OK signal.
# default = 6
#setp plasmac.arc-ok-counts 6
# For mode 0 Arc-OK only, the maximum voltage deviation that is allowed for a valid voltage to set the Arc OK signal.
#default = 10 (volts)
#setp plasmac.arc-ok-threshold 10
# The voltage above and below 0V that will display as 0V. Prevents small fluctuations from flickering the voltage display.
# default = 0 (volts)
#setp plasmac.zero-window 0
# The distance (in millimeters) away from the Z MAX_LIMIT that QtPlasmaC will allow the Z axis to travel while under machine control.
# default = 5 (mm)
#setp plasmac.max-offset 5
# The required number of consecutive times that the threshold has been exceeded before applying the void lock to the THC.
# default = 2
#setp plasmac.kerf-error-max 2
# ---OHMIC SENSE CONTACT DEBOUNCE---
setp plasmac.ohmic-sense-off-delay 3
setp plasmac.ohmic-sense-on-delay 3
- Boogie
- Boogie
01 Feb 2025 23:52 - 01 Feb 2025 23:53
Replied by Boogie on topic The blacksmith's plasma table
The blacksmith's plasma table
Category: Plasma & Laser
Bulls eye, Tommy. It's Polish indeed. His nickname suggested me he's polish. i have the same machine (stahlwerk cut 70p) with machine torch sitting in the box for more than one year now (yes, haven't used it yet:D) and i think it's time to have some fun with it. it's HF pilot machine and i'm trying to figure out how to make it usable in cnc table. Have a bunch of Mesa cards i bought some time ago when i was visiting the States and would be nice to make it all work together. i don't have THCAD though...:/
- rodw
29 Jan 2025 04:44
Replied by rodw on topic Best way to get a couple of analog values into HAL?
Best way to get a couple of analog values into HAL?
Category: Basic Configuration
there is always the THCAD2. You might be able to use a MUX2 to swap the inputs
- gwond
- gwond
29 Jan 2025 03:29
Replied by gwond on topic Koike Aronson Plasma Conversion - sanity check on Mesa board selection?
Koike Aronson Plasma Conversion - sanity check on Mesa board selection?
Category: Driver Boards
Hi all,
Looking to help a friend do the same thing as this thread, but with a 7i97T for the servos and a 7i78 card for the stepper for Z and THCAD2 for Arc Voltage.
I could use some help reviewing the hal and ini files to see if I'm on the right track. I built a stepper machine before with a 7i96s and THCAD2, so have some experience with the setup using PNCCONF. This is my first attempt at editing the ini and hal files directly. I combined the basic 7i97 file, with the JT's configurator tool, and the plasma specific info from my 7i96s config. My main question is how to correctly identify the board names in the files. In the ini file it shows 7i97T as the board and 7i78 as the card, but I don't see how the 7i78 board gets translated to the hal file? Ignore the scales, drive values, and pin assignments for most of the signals for now.
Also, the servos are Cleveland Motion Controls p/n MTE3528-508BG, does anyone know how to determine the encoder scale on these? May just have to measure it once the system is configured.
Looking to help a friend do the same thing as this thread, but with a 7i97T for the servos and a 7i78 card for the stepper for Z and THCAD2 for Arc Voltage.
I could use some help reviewing the hal and ini files to see if I'm on the right track. I built a stepper machine before with a 7i96s and THCAD2, so have some experience with the setup using PNCCONF. This is my first attempt at editing the ini and hal files directly. I combined the basic 7i97 file, with the JT's configurator tool, and the plasma specific info from my 7i96s config. My main question is how to correctly identify the board names in the files. In the ini file it shows 7i97T as the board and 7i78 as the card, but I don't see how the 7i78 board gets translated to the hal file? Ignore the scales, drive values, and pin assignments for most of the signals for now.
Also, the servos are Cleveland Motion Controls p/n MTE3528-508BG, does anyone know how to determine the encoder scale on these? May just have to measure it once the system is configured.
- rodw
18 Jan 2025 19:40
Replied by rodw on topic QtPlasmaC v2.9 - Time between turning off and back on the arc on a Powermax 105
QtPlasmaC v2.9 - Time between turning off and back on the arc on a Powermax 105
Category: Plasma & Laser
I think you have a wiring fault. All the 105 does is close an internal relay when a valid arc is established. you provide the voltage to that relay and read the output when it opens and closes.I would confirm behaviour with a multii meter before going further.
We can't help until you provide full details of your THC, the way you have integrated with linuxcnc and the connections you have made.
Most people use a Mesa Ethernet card and Mesa THCAD and not use an external THC.
Please don't duplicate your replies.
We can't help until you provide full details of your THC, the way you have integrated with linuxcnc and the connections you have made.
Most people use a Mesa Ethernet card and Mesa THCAD and not use an external THC.
Please don't duplicate your replies.
- sharp_reaper
- sharp_reaper
16 Jan 2025 14:22
Replied by sharp_reaper on topic 7i96s Arc Voltage + Encoder Fault
7i96s Arc Voltage + Encoder Fault
Category: Plasma & Laser
Thank you Rod for your advice.
I'm testing when I have the chance. I can put the 1/32 divider frequency. I'm used to THCAD300 and always put on 1/128.
The sticker value for my THCAD2 is: FSV - 899.4 kHz | 0V - 96.8 kHz
The initial value for the offset was about 700 but I've noticed that when the Power Source is Down (No Power) the arc voltage is 0V. When I turn On the arc voltage goes to 12V.
Checked the encoder velocity pin with the value of 900. Put 900 in the offset. Arc voltage has 0V and got decent results.
Made some tests today. When I make the first pierce the arc voltage, in the first moments turn in -73 and then goes back to normal value.
After that the pierces (should be a higher value than the Cut Volts on material) seems normal to me.
Talked with the supplier of the plasma source and he refers HF equipment and to check the grounding. Reinforced the grounding connections which has a good grounding less than 0.3 Ohm.
I'm testing when I have the chance. I can put the 1/32 divider frequency. I'm used to THCAD300 and always put on 1/128.
The sticker value for my THCAD2 is: FSV - 899.4 kHz | 0V - 96.8 kHz
The initial value for the offset was about 700 but I've noticed that when the Power Source is Down (No Power) the arc voltage is 0V. When I turn On the arc voltage goes to 12V.
Checked the encoder velocity pin with the value of 900. Put 900 in the offset. Arc voltage has 0V and got decent results.
Made some tests today. When I make the first pierce the arc voltage, in the first moments turn in -73 and then goes back to normal value.
After that the pierces (should be a higher value than the Cut Volts on material) seems normal to me.
Talked with the supplier of the plasma source and he refers HF equipment and to check the grounding. Reinforced the grounding connections which has a good grounding less than 0.3 Ohm.
- rodw
16 Jan 2025 11:10
Replied by rodw on topic 7i96s Arc Voltage + Encoder Fault
7i96s Arc Voltage + Encoder Fault
Category: Plasma & Laser
Now you have a THCAD 2 you can do more tests.
But normally, you would set the THCAD to use 1/32 frequency. This would alter your offsets etc accordingly. Make that change
Assuming a 10 volt range, apply a 9 volt battery to the THCAD HV input. The flashing light should change frequency. Does it?
the voltage should be about 90% of your full volt range. Is it?
What are the calibration frequencies for your THCAD on the sticker?
Read the encoder velocity at 0 volt at rest and at 9 volts.
What are these readings?
But normally, you would set the THCAD to use 1/32 frequency. This would alter your offsets etc accordingly. Make that change
Assuming a 10 volt range, apply a 9 volt battery to the THCAD HV input. The flashing light should change frequency. Does it?
the voltage should be about 90% of your full volt range. Is it?
What are the calibration frequencies for your THCAD on the sticker?
Read the encoder velocity at 0 volt at rest and at 9 volts.
What are these readings?
- sharp_reaper
- sharp_reaper
16 Jan 2025 09:23
SOS UPDATE:
Changed the THC to THCAD2 and change for a divided arc
Put the THCAD2 outside the plasma source in a plastic box.
Shielded only on THCAD2, in new cables.
Made the changes that you recommend:
Results:
This worked a week, but it happens again. The arc voltage is on -45.
I can take more pictures, make video. If anyone can help.
Replied by sharp_reaper on topic 7i96s Arc Voltage + Encoder Fault
7i96s Arc Voltage + Encoder Fault
Category: Plasma & Laser
I'm using the calculator from the PNCconf.If you read the QTplasmac docs, there is a link to a calculator to determine your settings.
SOS UPDATE:
Changed the THC to THCAD2 and change for a divided arc
Put the THCAD2 outside the plasma source in a plastic box.
Shielded only on THCAD2, in new cables.
Made the changes that you recommend:
Results:
This worked a week, but it happens again. The arc voltage is on -45.
I can take more pictures, make video. If anyone can help.
- PCW
15 Jan 2025 19:19
Replied by PCW on topic How do I control the speed and acceleration of the analog output of the 7i77 ?
How do I control the speed and acceleration of the analog output of the 7i77 ?
Category: Advanced Configuration
You still did not answer what the Z motion range was
Anyway say its 50 mm and using the /32 tap that's
a encoder scale of ~415
When tuning you need to loosen the following error limits
and have some reasonable output scale value:TYPE = LINEAR
HOME = 0.0
FERROR = 50
MIN_FERROR = 50
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
P = 50.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
ENCODER_SCALE = 415 # estimate with THCAD /32 and 50 mm full motion
OUTPUT_SCALE = 10
OUTPUT_MIN_LIMIT = -10.0
OUTPUT_MAX_LIMIT = 10.0
#MIN_LIMIT = -100.0
#MAX_LIMIT = 0.01
MIN_LIMIT = -15000.0 # these should be some reasonable numbers one you get the encoder scale correct
MAX_LIMIT = 15000.0
HOME_OFFSET = 0.0
loadrt offset
addf offset.0.update-feedback servo-thread
addf offset.0.update-output servo-thread
setp offset.0.offset -5671.078 # for /32net z-pos-fb_with_offset <= hm2_7i96s.0.encoder.00.velocity #New Line
net z-pos-fb_with_offset => offset.0.in
net z-pos-fb <= offset.0.out
net z-pos-fb => joint.1.motor-pos-fb
net z-index-enable joint.1.index-enable <=> hm2_7i96s.0.encoder.00.index-enable
net z-pos-rawcounts <= hm2_7i96s.0.encoder.00.rawcounts
Anyway say its 50 mm and using the /32 tap that's
a encoder scale of ~415
When tuning you need to loosen the following error limits
and have some reasonable output scale value:TYPE = LINEAR
HOME = 0.0
FERROR = 50
MIN_FERROR = 50
MAX_VELOCITY = 25.0
MAX_ACCELERATION = 750.0
P = 50.0
I = 0.0
D = 0.0
FF0 = 0.0
FF1 = 1.0
FF2 = 0.0
BIAS = 0.0
DEADBAND = 0.0
MAX_OUTPUT = 0.0
ENCODER_SCALE = 415 # estimate with THCAD /32 and 50 mm full motion
OUTPUT_SCALE = 10
OUTPUT_MIN_LIMIT = -10.0
OUTPUT_MAX_LIMIT = 10.0
#MIN_LIMIT = -100.0
#MAX_LIMIT = 0.01
MIN_LIMIT = -15000.0 # these should be some reasonable numbers one you get the encoder scale correct
MAX_LIMIT = 15000.0
HOME_OFFSET = 0.0
loadrt offset
addf offset.0.update-feedback servo-thread
addf offset.0.update-output servo-thread
setp offset.0.offset -5671.078 # for /32net z-pos-fb_with_offset <= hm2_7i96s.0.encoder.00.velocity #New Line
net z-pos-fb_with_offset => offset.0.in
net z-pos-fb <= offset.0.out
net z-pos-fb => joint.1.motor-pos-fb
net z-index-enable joint.1.index-enable <=> hm2_7i96s.0.encoder.00.index-enable
net z-pos-rawcounts <= hm2_7i96s.0.encoder.00.rawcounts
- programador
15 Jan 2025 18:07
Replied by programador on topic How do I control the speed and acceleration of the analog output of the 7i77 ?
How do I control the speed and acceleration of the analog output of the 7i77 ?
Category: Advanced Configuration
What is the Z motion range for 0 to 10V out from your sensor?
Response:
ranger 10364.831 hm2_7i96s.00.enconder.00.velocity
ranger 621866.8 hm2_7i96s.00.velocity-rpm
I am testing with jump 64 on the THCAD2 board.
Simulations with other jumpers:
advanced hydraulic cylinder THCAD2 jump128
1416.431 hm2_7i96s.00.enconder.00.velocity
84985.84 hm2_7i96s.00.velocity-rpm
recessed hydraulic cylinder THCAD2 jump128
6616.257 hm2_7i96s.00.enconder.00.velocity
396875.4 hm2_7i96s.00.velocity-rpm
advanced hydraulic cylinder THCAD2 jump64
2868.069 hm2_7i96s.00.enconder.00.velocity
172084.1 hm2_7i96s.00.velocity-rpm
recessed hydraulic cylinder THCAD2 jump64
13232.51 hm2_7i96s.00.enconder.00.velocity
793950.9 hm2_7i96s.00.velocity-rpm
advanced hydraulic cylinder THCAD2 jump32
5671.078 hm2_7i96s.00.enconder.00.velocity
340264.7 hm2_7i96s.00.velocity-rpm
recessed hydraulic cylinder THCAD2 jump32
26449.64 hm2_7i96s.00.enconder.00.velocity
1586979 hm2_7i96s.00.velocity-rpm
I put the value 800 in the scale encoder, but it continues to display a calculation error message on the axis, but the axis moves a little, below is the video showing the result
Regarding another question, sorry for my lack of knowledge, do you have any example of how to: feed the encoder velocity signal through LinuxCNCs
offset component to remove the offset at 0V ?
Response:
ranger 10364.831 hm2_7i96s.00.enconder.00.velocity
ranger 621866.8 hm2_7i96s.00.velocity-rpm
I am testing with jump 64 on the THCAD2 board.
Simulations with other jumpers:
advanced hydraulic cylinder THCAD2 jump128
1416.431 hm2_7i96s.00.enconder.00.velocity
84985.84 hm2_7i96s.00.velocity-rpm
recessed hydraulic cylinder THCAD2 jump128
6616.257 hm2_7i96s.00.enconder.00.velocity
396875.4 hm2_7i96s.00.velocity-rpm
advanced hydraulic cylinder THCAD2 jump64
2868.069 hm2_7i96s.00.enconder.00.velocity
172084.1 hm2_7i96s.00.velocity-rpm
recessed hydraulic cylinder THCAD2 jump64
13232.51 hm2_7i96s.00.enconder.00.velocity
793950.9 hm2_7i96s.00.velocity-rpm
advanced hydraulic cylinder THCAD2 jump32
5671.078 hm2_7i96s.00.enconder.00.velocity
340264.7 hm2_7i96s.00.velocity-rpm
recessed hydraulic cylinder THCAD2 jump32
26449.64 hm2_7i96s.00.enconder.00.velocity
1586979 hm2_7i96s.00.velocity-rpm
I put the value 800 in the scale encoder, but it continues to display a calculation error message on the axis, but the axis moves a little, below is the video showing the result
Regarding another question, sorry for my lack of knowledge, do you have any example of how to: feed the encoder velocity signal through LinuxCNCs
offset component to remove the offset at 0V ?
- PCW
15 Jan 2025 15:13 - 15 Jan 2025 15:46
Replied by PCW on topic How do I control the speed and acceleration of the analog output of the 7i77 ?
How do I control the speed and acceleration of the analog output of the 7i77 ?
Category: Advanced Configuration
One thing I see is that the Z encoder scale is off by orders of magnitude.
If you are using the ~100 to 900 KHz range of the THCAD2, I would expect
and encoder scale to be roughly 800,000 / Z_motion_range.
What is the Z motion range for 0 to 10V out from your sensor?
It addition the scale may need to be negative. This is the first thing to get setup correctly
Also as I mentioned, you may need to feed the encoder velocity signal through LinuxCNCs
offset component to remove the offset at 0V
If you are using the ~100 to 900 KHz range of the THCAD2, I would expect
and encoder scale to be roughly 800,000 / Z_motion_range.
What is the Z motion range for 0 to 10V out from your sensor?
It addition the scale may need to be negative. This is the first thing to get setup correctly
Also as I mentioned, you may need to feed the encoder velocity signal through LinuxCNCs
offset component to remove the offset at 0V
Time to create page: 0.983 seconds