Search Results (Searched for: THCAD)
- Uthayne
- Uthayne
08 Feb 2025 18:43
Replied by Uthayne on topic Converting a THCAD-300 to a THCAD-10?
Converting a THCAD-300 to a THCAD-10?
Category: Plasma & Laser
There was nothing wrong with my THCAD-300, I just switched to a divided voltage source from the new plasma cutter instead of the raw voltage from the older plasma source. By changing the input voltage for the THCAD I would get better resolution with my divided voltage source signal.
- rodw
04 Feb 2025 20:05
Replied by rodw on topic Program exceeds machine maximum X and Y Axis
Program exceeds machine maximum X and Y Axis
Category: General LinuxCNC Questions
I was to polite to say anything but a lot of users have bought a THCAD and converted to QTplasmac.CandCNC ?
- Boogie
- Boogie
04 Feb 2025 06:31
Replied by Boogie on topic Converting a THCAD-300 to a THCAD-10?
Converting a THCAD-300 to a THCAD-10?
Category: Plasma & Laser
May I know what was wrong with THCAD-300 so you decided to convert it? Just curious.
- Boogie
- Boogie
04 Feb 2025 06:00
Replied by Boogie on topic New kid on the block - Mesa driven plasma CNC.
New kid on the block - Mesa driven plasma CNC.
Category: Plasma & Laser
Thanks, Rod for your input. I guess i'll buy THCAD. CPC is hard to swallow. Simply expensive. Any options to get usable signals from machine internals in other way?
ArcOk should be easile obtainable from PCB, controls from Linux via relays to start plasma should be easy. THCAD-300 straight from the torch connector should be fine as well, isn't it?
ArcOk should be easile obtainable from PCB, controls from Linux via relays to start plasma should be easy. THCAD-300 straight from the torch connector should be fine as well, isn't it?
- rodw
04 Feb 2025 05:30
Replied by rodw on topic New kid on the block - Mesa driven plasma CNC.
New kid on the block - Mesa driven plasma CNC.
Category: Plasma & Laser
I really think becasue your budget is blown already you should buy the 45XP and purchase a CPC CNC interface for it from Hypertherm. I'd also buy the Connector cable they have although you can just buy the plug and make yor own cable. Then If you get that far. you might as well buy the THCAD2 from Mesa. (If you are in Australia, I might have a THCAD-10 here I could part with.)
PLasma is not an entry level sport in my experience
PLasma is not an entry level sport in my experience
- Boogie
- Boogie
04 Feb 2025 05:13 - 04 Feb 2025 05:14
New kid on the block - Mesa driven plasma CNC. was created by Boogie
New kid on the block - Mesa driven plasma CNC.
Category: Plasma & Laser
Gents!
Starting new topic as I don't want to do off topics somewhere else. The time has come to make some metal parts using tools I already have. During annual review of my "weird boxes" (as my wife use to called them) I found some Mesa cards, old Dell Optiplex PC, some servos, Stahlwerk CUT 70P plasma cutter. I think it is enough to say that probably a new CNC plasma cutting machine will emerge from it after 9 months.
Initial assumptions:
- 150 cm x 100 cm work area
- light construction
- belt drive (HTD-3M 20 mm or 25 mm wide)
- Linunxcnc on board
- THC internally in Linuxcnc
My biggest interest is cutting light gauge mild steel and stainless: 0.6 mm (GA 24) to 3.0 (GA 11). Occasionally chunks like 20 mm.
My understanding is that the lower amperage setting of plasma cutter will force me to increase cutting speed the thinner sheet i will cut. Thus machine gantry and Z-axis assembly weight must be as weight efficient as possible yet still. For drive side - i have a bunch of AC servos - some are chinese 180W integrated AC servos (reguire 48 VDC PSU), some are chinese AC servopacks (230 VAC power) 400W, 600W and 750W. I found some Electrocraft E240 DC permanent magnets servos as well, together with UHU drives (some grandpas probably still remember what UHU servo is:D:D).
Not to waste resources (those servos will be assigned to various projects) i plan to use one drive for Y axis (gantry) - mechanically coupling both sides of the gantry and use HTD 3M 20 (25) mm belts for drive. There is pros and cons - i'm aware of it. Wanna try. After all - it is home shop fun project.
There is two main concers here:
1) THC (i'm not smoking)
2) plasma source
3) Mesa cards
1) I have no Mesa THCAD among my Mesa boards, so the question here is: is there other way or I have to find a way how to finance it (my budget is already gone). How accurate voltage measurement must be for Linuxcnc to perform THC well? I know some of you will say "not worth to reinvent the circle". At some places 1 USD means waaay more then in other places. In my place i need to add sadistic taxes, import fees, customs, freight and VAT on top of every oversea purchase. And i like thinkering:)
2) My plasma source - Stahlwerk CUT 70P is, unfortunately, HF/HV arc start type. After reading here and there this is the easiest way to get frustrated during first trial and error cutting. I have a change to ruin my budget even more by buying almost new Hypertherm Powermax 45 XP. Unfortunately with no CPC port and with handheld torch. Machine torch price is more than my Stahlwerk CUT 70P brand new with 7 years warranty! (Are they crazy in Hypertherm?!). Anyway I can get 45XP for USD 1000. The rest of the machine I will make out of logs and branches from nearby forest - no problem:)
What you think about plasma source choice? If i go with 45XP I'll have to stick to handheld torch and do some mods due to the lack of CPC port. Is it doable to mod 45XP? Where to get ArcOK signal from?
3) I have the following Mesa cards: 7i85S, 7i76D (i think two pieces) sinking, 7i96S (i think still two pieces) and 7i92TF (i think still two pieces). What would be the best pick for my machine? Keep in mind I'm planning to make CNC router and CNC conversion on lathe and milling machine out of those cards...
Thank you for your inputs and constructive criticism:)
Starting new topic as I don't want to do off topics somewhere else. The time has come to make some metal parts using tools I already have. During annual review of my "weird boxes" (as my wife use to called them) I found some Mesa cards, old Dell Optiplex PC, some servos, Stahlwerk CUT 70P plasma cutter. I think it is enough to say that probably a new CNC plasma cutting machine will emerge from it after 9 months.
Initial assumptions:
- 150 cm x 100 cm work area
- light construction
- belt drive (HTD-3M 20 mm or 25 mm wide)
- Linunxcnc on board
- THC internally in Linuxcnc
My biggest interest is cutting light gauge mild steel and stainless: 0.6 mm (GA 24) to 3.0 (GA 11). Occasionally chunks like 20 mm.
My understanding is that the lower amperage setting of plasma cutter will force me to increase cutting speed the thinner sheet i will cut. Thus machine gantry and Z-axis assembly weight must be as weight efficient as possible yet still. For drive side - i have a bunch of AC servos - some are chinese 180W integrated AC servos (reguire 48 VDC PSU), some are chinese AC servopacks (230 VAC power) 400W, 600W and 750W. I found some Electrocraft E240 DC permanent magnets servos as well, together with UHU drives (some grandpas probably still remember what UHU servo is:D:D).
Not to waste resources (those servos will be assigned to various projects) i plan to use one drive for Y axis (gantry) - mechanically coupling both sides of the gantry and use HTD 3M 20 (25) mm belts for drive. There is pros and cons - i'm aware of it. Wanna try. After all - it is home shop fun project.
There is two main concers here:
1) THC (i'm not smoking)
2) plasma source
3) Mesa cards
1) I have no Mesa THCAD among my Mesa boards, so the question here is: is there other way or I have to find a way how to finance it (my budget is already gone). How accurate voltage measurement must be for Linuxcnc to perform THC well? I know some of you will say "not worth to reinvent the circle". At some places 1 USD means waaay more then in other places. In my place i need to add sadistic taxes, import fees, customs, freight and VAT on top of every oversea purchase. And i like thinkering:)
2) My plasma source - Stahlwerk CUT 70P is, unfortunately, HF/HV arc start type. After reading here and there this is the easiest way to get frustrated during first trial and error cutting. I have a change to ruin my budget even more by buying almost new Hypertherm Powermax 45 XP. Unfortunately with no CPC port and with handheld torch. Machine torch price is more than my Stahlwerk CUT 70P brand new with 7 years warranty! (Are they crazy in Hypertherm?!). Anyway I can get 45XP for USD 1000. The rest of the machine I will make out of logs and branches from nearby forest - no problem:)
What you think about plasma source choice? If i go with 45XP I'll have to stick to handheld torch and do some mods due to the lack of CPC port. Is it doable to mod 45XP? Where to get ArcOK signal from?
3) I have the following Mesa cards: 7i85S, 7i76D (i think two pieces) sinking, 7i96S (i think still two pieces) and 7i92TF (i think still two pieces). What would be the best pick for my machine? Keep in mind I'm planning to make CNC router and CNC conversion on lathe and milling machine out of those cards...
Thank you for your inputs and constructive criticism:)
- rodw
03 Feb 2025 12:05
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
QTplasmac stores the THCAD scaling settings in the GUI as per the previous screen dump the OP shared.No, 7I96 TB2 pin 12 is the correct 5V source.
What are the scaling factors that you used?
(there must be a missing hal file where plasma voltage scaling/offset is done)
- Hakan
- Hakan
02 Feb 2025 20:42
EtherCAT IO and frequency counter for plasma cutter was created by Hakan
EtherCAT IO and frequency counter for plasma cutter
Category: Show Your Stuff
Here is my latest EtherCAT card, the EaserCAT 6000, with 12 digital inputs, 4 digital outputs, and one frequency counter input for THCAD output.
It's the one down in the corner. There are three RTelligent ECT60 EtherCAT stepper motor drivers as well.
The inputs are limit switches for X, Y, Z, e-stop, floating, break-away and arc-OK.
Plasma-on is controlled by output 1.
There is one frequency counter input. Come to think of it it wouldn't be difficult to add another frequency counter for ohmic sensing, but I don't think my plasma cutter supports that, a Herocut 55X.
More details are here, including all schematics and source code.
github.com/MetalMusings/MyOwnEtherCATDevice
I haven't been cutting a whole lot with it yet. The worry has been the frequency counter that had some interference, seems to have been due to poor cable choice. With that sorted, voltage reading is now stable and THC works just fine.
It's the one down in the corner. There are three RTelligent ECT60 EtherCAT stepper motor drivers as well.
The inputs are limit switches for X, Y, Z, e-stop, floating, break-away and arc-OK.
Plasma-on is controlled by output 1.
There is one frequency counter input. Come to think of it it wouldn't be difficult to add another frequency counter for ohmic sensing, but I don't think my plasma cutter supports that, a Herocut 55X.
More details are here, including all schematics and source code.
github.com/MetalMusings/MyOwnEtherCATDevice
I haven't been cutting a whole lot with it yet. The worry has been the frequency counter that had some interference, seems to have been due to poor cable choice. With that sorted, voltage reading is now stable and THC works just fine.
- Badutis
- Badutis
02 Feb 2025 17:10
Replied by Badutis on topic CNC Plasma cutters, DIY, building info and guide
CNC Plasma cutters, DIY, building info and guide
Category: Plasma & Laser
thanks tommylight for your quick reply. Well, I'm not sure about that in Arc Pilot, that's why I wrote likely. I relied on the information I was able to find on the Internet. However, I have no doubt that you are right and cutter is not an Arc Pilot. Does it change anything? I think I saw somewhere that you have implemented projects with HF plasma and THCAD300. Could you tell me where exactly those wires should be connected? anyway, if it is necessary to make this cutter work with CNC, I also have PROMA THC 150,
- 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...:/
Time to create page: 1.199 seconds