---
name: "thcud"
section: "9"
platform: "linux"
package: "linuxcnc-uspace"
version: "1:2.9.4-2+deb13u1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/thcud"
---

# thcud(9)

Torch Height Control Up/Down Input

## NAME

thcud - Torch Height Control Up/Down Input

## SYNOPSIS

**loadrt thcud**

## DESCRIPTION

Torch Height Control This THC takes either an up or a down input from a THC

If enabled and torch is on and X + Y velocity is within tolerance of set speed allow the THC to offset the Z axis as needed to maintain voltage.

If enabled and torch is off and the Z axis is moving up remove any correction at a rate not to exceed the rate of movement of the Z axis.

If enabled and torch is off and there is no correction  pass the Z position and feed back untouched.

If not enabled pass the Z position and feed back untouched.

Typical Physical Connections using a Parallel Port\
 Parallel Pin 12 \<= THC controller Plasma Up\
 Parallel Pin 13 \<= THC controller Plasma Down\
 Parallel Pin 15  \<= Plasma Torch Arc Ok Signal\
 Parallel Pin 16 =\> Plasma Torch Start Arc Contacts

HAL Plasma Connections\
 net torch-up thcud.torch-up \<= parport.0.pin-12-in\
 net torch-down thcud.torch-down \<= parport.0.pin-13-in\
 net torch-on spindle.0.on =\> parport.0.pin-16-out (start the arc)\
 net arc-ok thcud.arc-ok \<= motion.digital-in-00 \<= parport.0.pin-15-in (arc ok signal)

HAL Motion Connections\
 net requested-vel thcud.requested-vel \<= motion.requested-vel\
 net current-vel thcud.current-vel \<= motion.current-vel

PyVCP Connections In the XML file you need something like:

  \<pyvcp\>\
   \<checkbutton\>\
     \<text\>"THC Enable"\</text\>\
     \<halpin\>"thc-enable"\</halpin\>\
   \</checkbutton\>\
   \</pyvcp\>

Connect the PyVCP pins in the postgui.hal file like this:

net thc-enable thcud.enable \<= pyvcp.thc-enable

## FUNCTIONS

- **thcud** (requires a floating-point thread)

  ## PINS

- **thcud.torch-up bit in**

  Connect to an input pin

- **thcud.torch-down bit in**

  Connect to input pin

- **thcud.current-vel float in**

  Connect to motion.current-vel

- **thcud.requested-vel float in**

  Connect to motion.requested-vel

- **thcud.torch-on bit in**

  Connect to spindle.N.on

- **thcud.arc-ok bit in**

  Arc Ok from Plasma Torch

- **thcud.enable bit in**

  Enable the THC, if not enabled Z position is passed through

- **thcud.z-pos-in float in**

  Z Motor Position Command in from axis.n.motor-pos-cmd

- **thcud.z-pos-out float out**

  Z Motor Position Command Out

- **thcud.z-fb-out float out**

  Z Position Feedback to Axis

- **thcud.cur-offset float out**

  The Current Offset

- **thcud.vel-status bit out**

  When the THC thinks we are at requested speed

- **thcud.removing-offset bit out**

  Pin for testing

- **thcud.correction-vel float in**

  The Velocity to move Z to correct

## PARAMETERS

- **thcud.velocity-tol float rw**

  The deviation percent from planned velocity

## AUTHOR

John Thornton

## LICENSE

GPLv2 or greater
