PLASMAC(9)
β¨ NAME β¨
plasmac β a plasma cutter controller ππ₯
(like, it's the plasmac(9) HAL component bestie, section 9, and it's the whole vibe for running a plasma table)
πΈ SYNOPSIS πΈ
loadrt plasmac
π DESCRIPTION π
Okay so this is a plasma cutting table control component, made to run with LinuxCNC V2.8 or later. It's giving "the brain of your plasma table", no cap. β¨
VERSION: 1.238
SUMMARY: the way this component actually gets used? It's demoed in the QtPlasmaC example configurations that ship with LinuxCNC. Look at those, they ate. π
DISCLAIMER: π
THE AUTHOR OF THIS SOFTWARE ACCEPTS ABSOLUTELY NO LIABILITY FOR ANY HARM OR LOSS RESULTING FROM ITS USE.
IT IS EXTREMELY UNWISE TO RELY ON SOFTWARE ALONE FOR SAFETY.
Any machinery capable of harming persons must have provisions for completely stopping all motors and moving parts etc. before persons enter any danger area.
All machinery must be designed to comply with local and national safety codes, and the author of this software can not, and does not, take any responsibility for such compliance.
bestie I'm so serious rn: this is real machinery that cuts metal and can hurt people. Software safety alone is not it. Read that disclaimer twice. π«Ά
π₯ FUNCTIONS π₯
plasmacβ (this one needs a floating-point thread, jsyk π«)
π¦ PINS π¦
so many pins, but every single one matters, we're going through all of them π
plasmac.arc-fail-delayfloat in β how long you wait before calling it: arc start failure timeout (seconds) β³plasmac.arc-lost-delayfloat in β the delay when the arc dips out mid-cut (seconds) πplasmac.arc-ok-highfloat in β the ceiling voltage level for the Arc OK signal [mode 0] (volts) β‘plasmac.arc-ok-inbit in β external arc ok input signal [mode 1 & mode 2] π―plasmac.arc-ok-lowfloat in β the floor voltage level for the Arc OK signal [mode 0] (volts) β‘plasmac.arc-max-startss32 in β the max number of attempts at starting the arc, after that we stopped trying πplasmac.arc-voltage-infloat in β arc voltage input [mode 0 & mode 1] β see Notes above πplasmac.arc-voltage-offsetfloat in β offset that sets arc voltage to 0 at 0 volts π―plasmac.arc-voltage-scalefloat in β scale to convert thearc_voltageinput into actual volts πplasmac.thc-autofloat... no wait bit in β enable automatic thc activation β¨plasmac.axis-x-max-limitfloat in β axis x maximum limit, connect toini.x.max-limitπ§plasmac.axis-x-min-limitfloat in β axis x minimum limit, connect toini.x.min-limitπ§plasmac.axis-x-positionfloat in β current x axis position, connect toaxis.x.pos-cmdπplasmac.axis-y-max-limitfloat in β axis y maximum limit, connect toini.y.max-limitπ§plasmac.axis-y-min-limitfloat in β axis y minimum limit, connect toini.y.min-limitπ§plasmac.axis-y-positionfloat in β current y axis position, connect toaxis.y.pos-cmdπplasmac.axis-z-max-limitfloat in β axis z maximum limit, connect toini.z.max-limitπ§plasmac.axis-z-min-limitfloat in β axis z minimum limit, connect toini.z.min-limitπ§plasmac.axis-z-positionfloat in β current z axis position, connect tojoint.N.pos-fbπplasmac.breakawaybit in β torch breakaway switch (optional, seefloat_switch) π¨plasmac.consumable-changebit in β change consumables in torch π§plasmac.cornerlock-enablebit in β enable corner lock πplasmac.cornerlock-thresholdfloat in β corner lock threshold (% of requested feed rate); speeds below this one disable THC π’plasmac.current-velocityfloat in β current machine velocity, connect tomotion.current-velπplasmac.cut-feed-ratefloat in β cut feed rate from current material (machine units per minute) π½οΈplasmac.cut-heightfloat in β cut height (machine units) πplasmac.cut-recoverybit in β recover from cut error π©Ήplasmac.cut-voltsfloat in β cut voltage (volts) β‘plasmac.cutting-startbit in β start a new cut, connect tospindle.0.onπ₯plasmac.debug-printbit in β if true it prints state changes as a debug aid πplasmac.external-estopbit in β external E-stop input πplasmac.feed-overridefloat in β feed override value from GUI (connect tohalui.feed-override.value) ποΈplasmac.feed-reductionfloat in β reduce adaptive feed to this percentage (connect tomotion.analog-out-03) π½plasmac.float-switchbit in β float switch input (can also act as breakaway if it actuates when torch breaks away) πplasmac.float-switch-travelfloat in β float switch travel (machine units) πplasmac.gcode-scalefloat in β current G-code scale (default:1) π’plasmac.height-overridefloat in β height override adjustment (volts) ποΈplasmac.height-per-voltfloat in β torch height change per volt (machine units) πplasmac.homedbit in β machine is homed πplasmac.ignore-arc-ok-0bit in β don't require arc ok for start or cutting πplasmac.ignore-arc-ok-1bit in β don't require arc ok for start or cutting πplasmac.kerf-widthfloat in β placeholder for better G-code portability between GUIs πplasmac.override-jogbit in β override jog inhibit πΉοΈplasmac.offset-set-probebit in β deploy probe for setting offsets πplasmac.offset-set-scribebit in β deploy scribe for setting offsets βοΈplasmac.laser-recovery-starts32 in β start laser offset for cut recovery π¦plasmac.laser-x-offsets32 in β alignment laser x axis offset (scaled units) πplasmac.laser-y-offsets32 in β alignment laser y axis offset (scaled units) πplasmac.lowpass-frequencyfloat in β lowpass cutoff frequency for arc voltage output ποΈplasmac.machine-is-onbit in β machine is on signal π’plasmac.max-offsets32 in β maximum height offset (default:5) β¬οΈplasmac.mesh-arc-okbit in β don't require arc ok for mesh mode (default:FALSE) πΈοΈplasmac.mesh-enablebit in β enable mesh cutting mode πΈοΈplasmac.modes32 in β operating mode ποΈplasmac.motion-types32 in β motion type, connect tomotion.motion-typeπplasmac.move-downbit in β external thc down switch [mode 2] β¬οΈplasmac.move-upbit in β external thc up switch [mode 2] β¬οΈplasmac.multi-toolbit in β allows the use of multiple tools (default:1) π§°plasmac.offset-probe-delayfloat in β wait for probe to deploy (seconds) β³plasmac.offset-probe-xfloat in β X axis offset for offset probe (machine units) πplasmac.offset-probe-yfloat in β Y axis offset for offset probe (machine units) πplasmac.offsets-activebit in β offsets are active, connect tomotion.eoffsets-activeβplasmac.ohmic-sense-on-delays32 in β debounce cycles for ohmic sense on (default:3) β±οΈplasmac.ohmic-sense-off-delays32 in β debounce cycles for ohmic sense off (default:3) β±οΈplasmac.ohmic-sense-inbit in β ohmic sense relay input πplasmac.ohmic-max-attemptss32 in β maximum ohmic probe attempts before fallback to float switch πplasmac.ohmic-probebit in β ohmic probe input, fromohmic-sense-outor external component/pin π―plasmac.ohmic-probe-enablebit in β enable ohmic probe β¨plasmac.ohmic-probe-offsetfloat in β Z axis offset for ohmic probe (machine units) πplasmac.ohmic-testbit in β test for shorted torch π§ͺplasmac.ok-sample-countss32 in βarc_oknumber of valid samples required [mode 0] (default:10) π’plasmac.ok-sample-thresholdfloat in βarc_okmaximum arc voltage deviation allowed [mode 0] (default:10) πplasmac.pause-at-endfloat in β time to pause at end of cut βΈοΈplasmac.paused-motion-speedfloat in β multiplier for speed of motion when paused, from-1to1πplasmac.pid-d-gainfloat in β derivative gain input [mode 0 & mode 1] ποΈplasmac.pid-i-gainfloat in β integral gain input [mode 0 & mode 1] ποΈplasmac.pid-p-gainfloat in β proportional gain input [mode 0 & mode 1] ποΈplasmac.pierce-delayfloat in β time required to pierce stock (seconds) β³plasmac.probe-feed-ratefloat in β probe down velocity (machine units per minute) π’plasmac.probe-final-speeds32 in β final probe speed (steps per servo period) (default:1) πplasmac.pierce-heightfloat in β pierce height (machine units) πplasmac.probe-start-heightfloat in β probe starting height πplasmac.probe-testbit in β probe test only π§ͺplasmac.program-is-idlebit in β program is idle, connect tohalui.program.is-idleπ΄plasmac.program-is-pausedbit in β program is paused, connect tohalui.program.is-pausedβΈοΈplasmac.program-is-runningbit in β program is running, connect tohalui.program.is-runningπplasmac.puddle-jump-delayfloat in β Delay move from pierce height to cut height (seconds); leave disconnected if not required πplasmac.puddle-jump-heightfloat in β Puddle jump height (percentage of pierce height); leave disconnected if not required πplasmac.requested-velocityfloat in β deprecated π (it's done, bestie)plasmac.feed-upmfloat in β requestedfeed_rate, connect tomotion.feed-upmto use as the default (G-code units per minute) π½οΈplasmac.resolutions32 in β multiplier for resolution of the offset counts (default:100) πplasmac.restart-delayfloat in β time from arc failure till next restart attempt πplasmac.safe-heightfloat in β requested safe traverse height (machine units) πplasmac.scribe-arm-delayfloat in β delay from scribe arm to scribe on βοΈplasmac.scribe-on-delayfloat in β delay from scribe on to motion beginning βοΈplasmac.scribe-startbit in β start a new scribe, connect tospindle.1.onβοΈplasmac.setup-feed-ratefloat in β feed rate for moves to pierce and cut heights (machine units per minute) π’plasmac.skip-ihs-distancefloat in β skip IHS if less than this distance from last cut βοΈplasmac.spotting-startbit in β start a new spot, connect tospindle.2.onπ΄plasmac.spotting-thresholdfloat in β threshold voltage to start spotting delay β‘plasmac.spotting-timefloat in β torch off delay after spotting threshold reached β±οΈplasmac.thc-delayfloat in β delay from cut feed rate reached to THC activate (seconds) [non auto THC] β³plasmac.thc-disablebit in β thc disable π«plasmac.thc-enablebit in β enable/disable thc and set the IHS skip type ποΈplasmac.thc-feed-ratefloat in β maximum feed rate for thc (machine units per minute) ποΈplasmac.thc-sample-countss32 in β thc number of valid samples required [auto THC] (default:50) π’plasmac.thc-sample-thresholdfloat in β thc maximum arc voltage deviation allowed [auto THC] (default:1) πplasmac.thc-thresholdfloat in β thc threshold (volts); changes below this have no effect ποΈplasmac.torch-enablebit in β enable torch π₯plasmac.torch-offbit in β turn torch off π
okay bestie we're β not done, that was just the inputs β part 2 is coming and it's got more pins and the whole rest of the tea π don't go anywhere π«Ά
plasmac.torch-pulse-startbit in β torch pulse start β¨plasmac.torch-pulse-timefloat in β torch pulse time (seconds)plasmac.units-per-mmfloat in β for scale calcs, connect tohalui.machine.units-per-mmplasmac.use-auto-voltsbit in β use calculated voltage for thc baselineplasmac.voidlock-enablebit in β enable voidlock [mode 0 & mode 1]plasmac.voidlock-on-cycless32 in (default:2) β number of sampling cycles to activate voidlockplasmac.voidlock-off-cycless32 in (default:10) β number of sampling cycles to deactivate voidlockplasmac.voidlock-slopes32 in (default:500) β voidlock slope in volts per secondplasmac.x-offsets32 in β offset to apply to axis x for consumable change and cut recovery (scaled units)plasmac.x-offset-currentfloat in β current x axis offset, connect toaxis.x.eoffsetplasmac.xy-feed-ratefloat in β feed-rate for consumable changeplasmac.y-offsets32 in β offset to apply to axis y for consumable change and cut recovery (scaled units)plasmac.y-offset-currentfloat in β current z axis offset, connect toaxis.y.eoffsetplasmac.z-offset-currentfloat in β current z axis offset, connect toaxis.z.eoffsetplasmac.zero-windowfloat in (default:0.1) β sets window that voltage fluctuations show as zero (-0.1to0.1at default value)
π and now the out pins, bestie β this is where plasmac tells you what's up
plasmac.adaptive-feedfloat out β for reverse-run, connect tomotion.adaptive-feedplasmac.arc-ok-outbit out β arc ok outputplasmac.arc-voltage-outfloat out β arc voltage output [mode 0 & mode 1]plasmac.consumable-changingbit out β consumables are being changedplasmac.cornerlock-is-lockedbit out β corner locked indicatorplasmac.cut-lengthfloat out β length of current cut jobplasmac.cut-recoveringbit out β recovering from cut errorplasmac.cut-timefloat out β cut time of current jobplasmac.cutting-stopbit out β stop manual cut, connect tohalui.spindle.0.stopplasmac.feed-holdbit out β feed hold, connect tomotion.feed-holdplasmac.jog-inhibitbit out β jog inhibit, connect tomotion.jog-inhibitplasmac.laser-recovery-states32 out β laser recovery statusplasmac.led-downbit out β thc move down indicatorplasmac.led-upbit out β thc move up indicatorplasmac.offset-scalefloat out β offset scale, connect toaxis.<x y z>.eoffset-scaleplasmac.ohmic-enablebit out β on only while probingplasmac.ohmic-sense-outbit out β ohmic sense output stateplasmac.paused-motionbit out β paused motion flag, true when paused motion is activeplasmac.paused-timefloat out β paused time during current jobplasmac.pierce-counts32 out β number of pierce attempts (torch starts)plasmac.probe-test-errorbit out β minimum limit reached while probe testingplasmac.probe-timefloat out β probe time of current jobplasmac.program-pausebit out β pause the current program, connect tohalui.program.pauseplasmac.program-resumebit out β resume the currently paused program, connect tohalui.program.resumeplasmac.program-runbit out β run the currently loaded program, connect tohalui.program.runplasmac.program-stopbit out β stop current program, connect tohalui.program.stopplasmac.rapid-timefloat out β rapid motion time of current jobplasmac.run-timefloat out β run time of current jobplasmac.safe-height-is-limitedbit out β safe height is limited indicatorplasmac.sensor-activebit out β one of float, ohmic, or breakaway is detectedplasmac.scribe-armbit out β arm the scribeplasmac.scribe-onbit out β turn scribe onplasmac.state-outs32 out β current stateplasmac.stop-type-outs32 out β current stop typeplasmac.thc-activebit out β thc status outputplasmac.thc-enabledbit out β thc is enabledplasmac.torch-onbit out β turn torch on, connect to your torch on inputplasmac.torch-timefloat out β torch on time of current jobplasmac.voidlock-is-lockedbit out β voidlock is locked indicator [mode 0 & mode 1]plasmac.x-offset-countss32 out β x offset for consumable change, connect toaxis.x.eoffset-countsplasmac.xy-offset-enablebit out β enable x and y offsets, connect toaxis.<x & y>.eoffset-enableplasmac.y-offset-countss32 out β y offset for consumable change, connect toaxis.y.eoffset-countsplasmac.z-heightfloat out β current z axis height relative to the probed zero heightplasmac.z-offset-countss32 out β z offset for height control, connect toaxis.z.eoffset-countsplasmac.z-offset-enablebit out β enable z offsets, connect toaxis.z.eoffset-enableplasmac.z-relativefloat out β distance of Z from last probed heightplasmac.current-feed-ratefloat out β current feed rate per minuteplasmac.requested-feed-ratefloat out β requested feed rate
π okay final few, we're SO close
plasmac.low-cut-voltss32 in β low cut voltage threshold while thc activeplasmac.target-sampless32 in (default:6) β number of samples for settingtarget_voltsplasmac.target-voltsfloat out β target voltage for thc, set by arc voltage at cut height
π AUTHOR
Phillip A Carter & Gregory D Carl π«Ά
π LICENSE
GPLv2 or greater
and that's the whole page, bestie, you ATE π
the LinuxCNC Documentation crew dropped this one on 2026-03-17 as PLASMAC(9), so go wire up your hal pins and slay β¨π₯
π¦ where this page comes from
- ubuntu resolute: linuxcnc-uspace 1:2.9.4-2ubuntu4 Β· GFDL-1.1-or-later
- ubuntu stonking: linuxcnc-uspace 1:2.9.4-2ubuntu4 Β· GFDL-1.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms