thcud

title: thcud(9)

summary: Torch Height Control Up/Down Input

text:
# thcud(9)

## 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


threads

package: linuxcnc

title: threads(9)

summary: creates hard realtime HAL threads

text:
# threads(9)

## NAME
threads - creates hard realtime HAL threads

## SYNOPSIS
loadrt threads name1=name period1=period [fp1=<0|1>] [<thread-2-info>] [<thread-3-info>]

## DESCRIPTION
threads is used to create hard realtime threads which can execute HAL functions at specific intervals. It is not a true HAL component, in that it does not export any functions, pins, or parameters of its own. Once it has created one or more threads, the threads stand alone, and the threads component can be unloaded without affecting them. In fact, it can be unloaded and then reloaded to create additional threads, as many times as needed.

threads can create up to three realtime threads. Threads must be created in order, from fastest to slowest. Each thread is specified by three arguments. name1 is used to specify the name of the first thread (thread 1). period1 is used to specify the period of thread 1 in nanoseconds. Both name and period are required. The third argument, fp1 is optional, and is used to specify if thread 1 will be used to execute floating point code. If not specified, it defaults to 1, which means that the thread will support floating point. Specify 0 to disable floating point support, which saves a small amount of execution time by not saving the FPU context. For additional threads, name2, period2, fp2, name3, period3, and fp3 work exactly the same. If more than three threads are needed, unload threads, then reload it to create more threads.

## FUNCTIONS
None

## PINS
None

## PARAMETERS
None

## BUGS
The existence of threads might be considered a bug. Ideally, creation and deletion of threads would be done directly with halcmd commands, such as "newthread name period", "delthread name", or similar. However, limitations in the current HAL implementation require thread creation to take place in kernel space, and loading a component is the most straightforward way to do that.

branch: sisyphus


threadtest

title: threadtest(9)

text:
# threadtest(9)

## NAME
threadtest - LinuxCNC HAL component for testing thread behavior

## SYNOPSIS
loadrt threadtest [count=N|names=name1[,name2...]]

## FUNCTIONS
threadtest.N.increment (requires a floating-point thread)

threadtest.N.reset (requires a floating-point thread)

## PINS
threadtest.N.count u32 out

## AUTHOR
Jeff Epler

## LICENSE
GPL


time

title: time(9)

summary: Time on in Hours, Minutes, Seconds

text:
# time(9)

## NAME
time - Time on in Hours, Minutes, Seconds

## SYNOPSIS
loadrt time [count=N|names=name1[,name2...]]

## DESCRIPTION
Time

When either the time.N.start or time.N.pause bits goes true the cycle timer resets and starts to time until time.N.start AND time.N.pause go false. When the time.N.pause bit goes true timing is paused until time.N.pause goes false. If you connect time.N.start to halui.program.is-running and leave time.N.pause unconnected the timer will reset during a pause. See the example connections below for more information.

Time returns the hours, minutes, and seconds that time.N.start is true.

Sample PyVCP code to display the hours:minutes:seconds.

<pyvcp>

<hbox>

<text>"Cycle Time"</text>

("Helvetica",14)

<u32>

<halpin>"time-hours"</halpin>

("Helvetica",14)

<format>"2d"</format>

</u32>

<text>":"</text>

("Helvetica",14)

<u32>

<halpin>"time-minutes"</halpin>

("Helvetica",14)

<format>"2d"</format>

</u32>

<text>":"</text>

("Helvetica",14)

<u32>

<halpin>"time-seconds"</halpin>

("Helvetica",14)

<format>"2d"</format>

</u32>

</hbox> </pyvcp>

In your post-gui.hal file you might use one of the following to connect this timer:

For a new config:

loadrt time

addf time.0 servo-thread

net cycle-timer time.0.start <= halui.program.is-running

net cycle-timer-pause time.0.pause <= halui.program.is-paused

net cycle-seconds pyvcp.time-seconds <= time.0.seconds

net cycle-minutes pyvcp.time-minutes <= time.0.minutes

net cycle-hours pyvcp.time-hours <= time.0.hours

Previous to this version if you wanted the timer to continue running

during a pause instead of resetting, you had to use a HAL NOT component

to invert the halui.program.is-idle pin and connect to time.N.start as

shown below:

loadrt time

loadrt not

addf time.0 servo-thread

addf not.0 servo-thread

net prog-running not.0.in <= halui.program.is-idle

net cycle-timer time.0.start <= not.0.out

net cycle-seconds pyvcp.time-seconds <= time.0.seconds

net cycle-minutes pyvcp.time-minutes <= time.0.minutes

net cycle-hours pyvcp.time-hours <= time.0.hours

For those who have this setup already, you can simply add a net connecting

time.N.pause to halui.program.is-paused:

net cycle-timer-pause time.0.pause <= halui.program.is-paused

## FUNCTIONS
time.N (requires a floating-point thread)

## PINS
time.N.start bit in

Timer On

time.N.pause bit in (default: 0)

Pause

time.N.seconds u32 out

Seconds

time.N.minutes u32 out

Minutes

time.N.hours u32 out

Hours

## AUTHOR
John Thornton, itaib, Moses McKnight

## LICENSE
GPL


timedelay

title: timedelay(9)

summary: The equivalent of a time-delay relay

text:
# timedelay(9)

## NAME
timedelay - The equivalent of a time-delay relay

## SYNOPSIS
loadrt timedelay [count=N|names=name1[,name2...]]

## FUNCTIONS
timedelay.N (requires a floating-point thread)

## PINS
timedelay.N.in bit in

timedelay.N.out bit out

Follows the value of in after applying the delays on-delay and off-delay.

timedelay.N.on-delay float in (default: 0.5)

The time, in seconds, for which in must be true before out becomes true

timedelay.N.off-delay float in (default: 0.5)

The time, in seconds, for which in must be false before out becomes false

timedelay.N.elapsed float out

Current value of the internal timer

## AUTHOR
Jeff Epler, based on works by Stephen Wille Padnos and John Kasunich

## LICENSE
GPL


timedelta

title: timedelta(9)

text:
# timedelta(9)

## NAME
timedelta - LinuxCNC HAL component that measures thread scheduling timing behavior

## SYNOPSIS
loadrt timedelta [count=N|names=name1[,name2...]]

## FUNCTIONS
timedelta.N (requires a floating-point thread)

## PINS
timedelta.N.jitter s32 out (default: 0)

Worst-case scheduling error (in ns). This is the largest discrepancy between ideal thread period, and actual time between sequential runs of this component. This uses the absolute value of the error, so 'got run too early' and 'got run too late' both show up as positive jitter.

timedelta.N.current-jitter s32 out (default: 0)

Scheduling error (in ns) of the current invocation. This is the discrepancy between ideal thread period, and actual time since the previous run of this component. This uses the absolute value of the error, so 'got run too early' and 'got run too late' both show up as positive jitter.

timedelta.N.current-error s32 out (default: 0)

Scheduling error (in ns) of the current invocation. This is the discrepancy between ideal thread period, and actual time since the previous run of this component. This does not use the absolute value of the error, so 'got run too early' shows up as negative error and 'got run too late' shows up as positive error.

timedelta.N.min s32 out (default: 0)

Minimum time (in ns) between sequential runs of this component.

timedelta.N.max s32 out (default: 0)

Maximum time (in ns) between sequential runs of this component.

timedelta.N.reset bit in

Set this pin to True, then back to False, to reset some of the statistics.

timedelta.N.out s32 out

Time (in ns) since the previous run of this component. This should ideally be equal to the thread period.

timedelta.N.err s32 out (default: 0)

Cumulative time error (in ns). Probably not useful.

timedelta.N.avg-err float out (default: 0)

The average scheduling error (in ns).

## AUTHOR
Jeff Epler

## LICENSE
GPL


tof

title: tof(9)

text:
# tof(9)

## NAME
tof - IEC TOF timer - delay falling edge on a signal

## SYNOPSIS
loadrt tof [count=N|names=name1[,name2...]]

## FUNCTIONS
tof.N (requires a floating-point thread)

Update the timer

## PINS
tof.N.in bit in

Input signal

tof.N.q bit out

Output signal

tof.N.et float out

Elapsed time since falling edge in seconds

## PARAMETERS
tof.N.pt float rw

Delay time in seconds

## AUTHOR
Chad Woitas

## LICENSE
GPL


toggle

title: toggle(9)

text:
# toggle(9)

## NAME
toggle - 'push-on, push-off' from momentary pushbuttons

## SYNOPSIS
loadrt toggle [count=N|names=name1[,name2...]]

## DESCRIPTION
┐ ┌──┐ ┌──┐

in : └─────┘ └────────┘ └──

┐ ┌───────────┐

out: └─────┘ └─────

## FUNCTIONS
toggle.N (requires a floating-point thread)

## PINS
toggle.N.in bit in

button input

toggle.N.out bit io

on/off output

## PARAMETERS
toggle.N.debounce u32 rw (default: 2)

debounce delay in periods

## AUTHOR
John Kasunich

## LICENSE
GPL


title: toggle2nist(9)

summary: toggle button to nist logic

text:
# toggle2nist(9)

## NAME
toggle2nist - toggle button to nist logic

## SYNOPSIS
loadrt toggle2nist [count=N|names=name1[,name2...]]

## DESCRIPTION
Toggle2nist can be used with a momentary push button to control a device that has separate on and off inputs and an is-on output.

• On a rising edge on pin in when is-on is low: It sets on until is-on becomes high.

• On a rising edge on pin in when is-on is high: It sets off until is-on becomes low.

┐ ┌─────xxxxxxxxxxxx┐ ┌─────xxxxxxxxxxxx┐

in : └─────┘ xxxxxxxxxxxx└───────────┘ xxxxxxxxxxxx└─────

┐ ┌───────────┐

on : └─────┘ └─────────────────────────────────────────

┐ ┌───────────┐

off : └───────────────────────────────────┘ └───────────

┐ ┌─────────────────────────────┐

is-on: └─────────────────┘ └───────────

## FUNCTIONS
toggle2nist.N (requires a floating-point thread)

## PINS
toggle2nist.N.in bit in

toggle2nist.N.is-on bit in

toggle2nist.N.on bit out

toggle2nist.N.off bit out

## AUTHOR
Anders Wallin

## LICENSE
GPL


ton

title: ton(9)

text:
# ton(9)

## NAME
ton - IEC TON timer - delay rising edge on a signal

## SYNOPSIS
loadrt ton [count=N|names=name1[,name2...]]

## FUNCTIONS
ton.N (requires a floating-point thread)

Update the timer

## PINS
ton.N.in bit in

Input signal

ton.N.q bit out

Output signal

ton.N.et float out

Elapsed time since rising edge in seconds

## PARAMETERS
ton.N.pt float rw

Delay time in seconds

## AUTHOR
Chad Woitas

## LICENSE
GPL


tp

title: tp(9)

text:
# tp(9)

## NAME
tp - IEC TP timer - generate a high pulse of defined duration on rising edge

## SYNOPSIS
loadrt tp [count=N|names=name1[,name2...]]

## FUNCTIONS
tp.N (requires a floating-point thread)

Update the timer

## PINS
tp.N.in bit in

Input signal

tp.N.q bit out

Output signal

tp.N.et float out

Elapsed time since start of pulse in seconds

## PARAMETERS
tp.N.pt float rw

Pulse time in seconds

## AUTHOR
Chad Woitas

## LICENSE
GPL


tpcomp

title: tpcomp(9)

text:
# tpcomp(9)

## NAME
tpcomp - Trajectory Planning (tp) module skeleton

## SYNOPSIS
Custom Trajectory Planning module loaded with [TRAJ]TPMOD=tpcomp

## DESCRIPTION
Example of a trajectory planning (tp) module buildable with halcompile.

The tpcomp.comp file (src/hal/components/tpcomp.comp) illustrates a method to use halcompile to build a trajectory planning module based on the files used for the default trajectory planner (tpmod).

The example tpcomp.comp is not usable until modified for the user environment. To create a runnable tpcomp module, the tpcomp.comp file must be edited to supply 1) a valid '#define TOPDIR' and 2) references to valid source code file names for all files used.

To avoid updates that overwrite tpcomp.comp, best practice is to rename the file and its component name (example: user_tpcomp.comp creates module: user_tpcomp).

The (renamed) component can be built and installed with halcompile and then substituted for the default tp module (tpmod) using:

$ linuxcnc -t user_tpcomp someconfig.ini

or by inifile setting: [TRAJ]TPMOD=user_tpcomp

Note:If using a deb install:

1) halcompile is provided by the deb package linuxcnc-dev

2) This source file for BRANCHNAME (master,2.9,etc) is downloadable from github:

https://github.com/LinuxCNC/linuxcnc/blob/BRANCHNAME/src/hal/components/tpcomp.comp

## PINS
tpcomp.N.is-module bit out (default: 1)

## AUTHOR
Dewey Garrett

## LICENSE
GPL


tripodkins

title: tripodkins(9)

text:
# tripodkins(9)

See the file man9/kins.9.


title: tristate_bit(9)

text:
# tristate_bit(9)

## NAME
tristate_bit - Place a signal on an I/O pin only when enabled, similar to a tristate buffer in electronics

## SYNOPSIS
loadrt tristate_bit [count=N|names=name1[,name2...]]

## FUNCTIONS
tristate-bit.N (requires a floating-point thread)

If enable is TRUE, copy in to out.

## PINS
tristate-bit.N.in bit in

Input value

tristate-bit.N.out bit io

Output value

tristate-bit.N.enable bit in

When TRUE, copy in to out

## AUTHOR
Jeff Epler

## LICENSE
GPL


title: tristate_float(9)

text:
# tristate_float(9)

## NAME
tristate_float - Place a signal on an I/O pin only when enabled, similar to a tristate buffer in electronics

## SYNOPSIS
loadrt tristate_float [count=N|names=name1[,name2...]]

## FUNCTIONS
tristate-float.N (requires a floating-point thread)

If enable is TRUE, copy in to out.

## PINS
tristate-float.N.in float in

Input value

tristate-float.N.out float io

Output value

tristate-float.N.enable bit in

When TRUE, copy in to out

## AUTHOR
Jeff Epler

## LICENSE
GPL


trivkins

title: trivkins(9)

text:
# trivkins(9)

See the file man9/kins.9.


updown

title: updown(9)

text:
# updown(9)

## NAME
updown - Counts up or down, with optional limits and wraparound behavior

## SYNOPSIS
loadrt updown [count=N|names=name1[,name2...]]

## FUNCTIONS
updown.N (requires a floating-point thread)

Process inputs and update count if necessary

## PINS
updown.N.countup bit in

Increment count when this pin goes from 0 to 1

updown.N.countdown bit in

Decrement count when this pin goes from 0 to 1

updown.N.reset bit in

Reset count when this pin goes from 0 to 1

updown.N.count s32 out

The current count

## PARAMETERS
updown.N.clamp bit rw

If TRUE, then clamp the output to the min and max parameters.

updown.N.wrap bit rw

If TRUE, then wrap around when the count goes above or below the min and max parameters. Note that wrap implies (and overrides) clamp.

updown.N.max s32 rw (default: 0x7FFFFFFF)

If clamp or wrap is set, count will never exceed this number

updown.N.min s32 rw

If clamp or wrap is set, count will never be less than this number

## AUTHOR
Stephen Wille Padnos

## LICENSE
GPL


userkins

title: userkins(9)

summary: Template for user-built kinematics

text:
# userkins(9)

## NAME
userkins - Template for user-built kinematics

## SYNOPSIS
loadrt userkins [count=N|names=name1[,name2...]]

## DESCRIPTION
The userkins.comp file is a template for creating kinematics that can be user-built using halcompile.

The unmodified userkins component can be used as a kinematics file for a machine with identity kinematics for an xyz machine employing 3 joints (motors).

USAGE:

1) Copy the userkins.comp file to a user-owned

directory (mydir).

Note: The userkins.comp file can be downloaded from:

where '2.8' is the branch name (use 'master' for

the master branch)

For a RIP (run-in-place) build, the file is located in

the git tree as:

src/hal/components/userkins.comp

2) Edit the functions kinematicsForward() and

kinematicsInverse() as required

3) If required, add hal pins following examples in

the template code

4) Build and install the component using halcompile:

$ cd mydir

$ [sudo] halcompile --install userkins.comp

\# Note:

\# sudo is required when using a deb install

\# sudo is not required for run-in-place builds

\# $ man halcompile for more info

5) Specify userkins in an ini file as:

[KINS]

KINEMATICS=userkins

JOINTS=3

\# the number of JOINTS must agree with the

\# number of joints used in your modified userkins.comp

6) Note: the manpage for userkins is not updated by

halcompile --install

7) To use a different component name, rename the file

(example mykins.comp) and change all instances of

'userkins' to 'mykins'

NOTES:

1 The fpin pin is included to satisfy the requirements of

the halcompile utility but it is not accessible to kinematics

functions.

2 Hal pins and parameters needed in kinematics functions

(kinematicsForward(), kinematicsInverse()) must

be setup in a function (userkins_setup()) invoked

by the initial motion module call to kinematicsType().

## FUNCTIONS
userkins.N.fdemo (requires a floating-point thread)

## PINS
userkins.N.fpin s32 out (default: 0)

pin to demonstrate use of a conventional (non-kinematics) function fdemo

## AUTHOR
Dewey Garrett

## LICENSE
GPL


watchdog

title: watchdog(9)

summary: monitor multiple inputs for a heartbeat

text:
# watchdog(9)

## NAME
watchdog - monitor multiple inputs for a "heartbeat"

## SYNOPSIS
loadrt watchdog num_inputs=N

You must specify the number of inputs, from 1 to 32. Each input has a separate timeout value.

## FUNCTIONS
process

Check all input pins for transitions, clear the ok-out pin if any input has no transition within its timeout period. This function does not use floating point, and should be added to a fast thread.

set-timeouts

Check for timeout changes, and convert the float timeout inputs to int values that can be used in process. This function also monitors enable-in for false to true transitions, and re-enables monitoring when such a transition is detected. This function does use floating point, and it is appropriate to add it to the servo thread.

## PINS
watchdog.input-n bit in

Input number n. The inputs are numbered from 0 to num_inputs-1.

watchdog.enable-in bit in (default: FALSE)

If TRUE, forces out-ok to be false. Additionally, if a timeout occurs on any input, this pin must be set FALSE and TRUE again to re-start the monitoring of input pins.

watchdog.ok-out bit out (default: FALSE)

OK output. This pin is true only if enable-in is TRUE and no timeout has been detected. This output can be connected to the enable input of a charge_pump or stepgen (in v mode), to provide a heartbeat signal to external monitoring hardware.

## PARAMETERS
watchdog.timeout-n float in

Timeout value for input number n. The inputs are numbered from 0 to num_inputs-1. The timeout is in seconds, and may not be below zero. Note that a timeout of 0.0 will likely prevent ok-out from ever becoming true. Also note that excessively long timeouts are relatively useless for monitoring purposes.

## LICENSE
GPL


wcomp

title: wcomp(9)

summary: Window comparator

text:
# wcomp(9)

## NAME
wcomp - Window comparator

## SYNOPSIS
loadrt wcomp [count=N|names=name1[,name2...]]

## FUNCTIONS
wcomp.N (requires a floating-point thread)

## PINS
wcomp.N.in float in

Value being compared

wcomp.N.min float in

Low boundary for comparison

wcomp.N.max float in

High boundary for comparison

wcomp.N.out bit out

True if in is strictly between min and max

wcomp.N.under bit out

True if in is less than or equal to min

wcomp.N.over bit out

True if in is greater than or equal to max

## NOTES
If max <= min then the behavior is undefined.

## AUTHOR
Jeff Epler

## LICENSE
GPL


title: weighted_sum(9)

summary: convert a group of bits to an integer

text:
# weighted_sum(9)

## NAME
weighted_sum - convert a group of bits to an integer

## SYNOPSIS
loadrt weighted_sum wsum_sizes=size[,size,...]

Creates weighted sum groups each with the given number of input bits (size).

## DESCRIPTION
The weighted_sum converts a group of bits to an integer. The conversion is the sum of the weights of the bits that are on plus any offset. The weight of the m-th bit is 2^m. This is similar to a binary coded decimal but with more options. The hold bit stops processing the input changes so the sum will not change.

The default value for each weight is 2^m where m is the bit number. This results in a binary to unsigned conversion.

There is a limit of 8 weighted summers and each may have up to 16 input bits.

## FUNCTIONS
process_wsums (requires a floating point thread)

Read all input values and update all output values.

## PINS
wsum.N.bit.M.in bit in

The m'th input of weighted summer n.

wsum.N.hold bit in

When TRUE, the sum output does not change. When FALSE, the sum output tracks the bit inputs according to the weights and offset.

wsum.N.sum signed out

The output of the weighted summer

wsum.N.bit.M.weight signed rw

The weight of the m'th input of weighted summer n. The default value is 2^m.

wsum.N.offset signed rw

The offset is added to the weights corresponding to all TRUE inputs to give the final sum.

## SEE ALSO
scaled_s32_sums(9), sum2(9).


title: xhc_hb04_util(9)

summary: xhc-hb04 convenience utility

text:
# xhc_hb04_util(9)

## NAME
xhc_hb04_util - xhc-hb04 convenience utility

## SYNOPSIS
loadrt xhc_hb04_util [count=N|names=name1[,name2...]]

## DESCRIPTION
Provides logic for a start/pause button and an interface to halui.program.is_paused, is_idle, is_running to generate outputs for halui.program.pause, resume, run.

Includes 4 simple lowpass filters with coef and scale pins. The coef value should be 0 <= coef <=1, smaller coef values slow response. See the lowpass manpage for calculating the filter time constant ($ man lowpass).

## FUNCTIONS
xhc-hb04-util.N (requires a floating-point thread)

## PINS
xhc-hb04-util.N.start-or-pause bit in

xhc-hb04-util.N.is-paused bit in

xhc-hb04-util.N.is-idle bit in

xhc-hb04-util.N.is-running bit in

xhc-hb04-util.N.pause bit out

xhc-hb04-util.N.resume bit out

xhc-hb04-util.N.run bit out

xhc-hb04-util.N.in0 s32 in

xhc-hb04-util.N.in1 s32 in

xhc-hb04-util.N.in2 s32 in

xhc-hb04-util.N.in3 s32 in

xhc-hb04-util.N.out0 s32 out

xhc-hb04-util.N.out1 s32 out

xhc-hb04-util.N.out2 s32 out

xhc-hb04-util.N.out3 s32 out

xhc-hb04-util.N.scale0 float in (default: 1.0)

xhc-hb04-util.N.scale1 float in (default: 1.0)

xhc-hb04-util.N.scale2 float in (default: 1.0)

xhc-hb04-util.N.scale3 float in (default: 1.0)

xhc-hb04-util.N.coef0 float in (default: 1.0)

xhc-hb04-util.N.coef1 float in (default: 1.0)

xhc-hb04-util.N.coef2 float in (default: 1.0)

xhc-hb04-util.N.coef3 float in (default: 1.0)

xhc-hb04-util.N.divide-by-k-in float in

xhc-hb04-util.N.divide-by-k-out float out

xhc-hb04-util.N.k float in (default: 1.0)

## AUTHOR
Dewey Garrett

## LICENSE
GPL


title: xor2(9)

summary: Two-input XOR (exclusive OR) gate

text:
# xor2(9)

## NAME
xor2 - Two-input XOR (exclusive OR) gate

## SYNOPSIS
loadrt xor2 [count=N|names=name1[,name2...]]

## FUNCTIONS
xor2.N (requires a floating-point thread)

## PINS
xor2.N.in0 bit in

xor2.N.in1 bit in

xor2.N.out bit out

out is computed from the value of in0 and in1 according to the following rule:

in0=TRUE in1=FALSE

in0=FALSE in1=TRUE

out=TRUE

Otherwise,

out=FALSE

## SEE ALSO
and2(9), logic(9), lut5(9), not(9), or2(9).

## AUTHOR
John Kasunich

## LICENSE
GPL


title: xyzab_tdr_kins(9)

text:
# xyzab_tdr_kins(9)

## NAME
xyzab_tdr_kins - Switchable kinematics for 5 axis machine with rotary table A and B

## SYNOPSIS
loadrt xyzab_tdr_kins [count=N|names=name1[,name2...]]

## DESCRIPTION
This is a switchable kinematics module for a 5-axis milling configuration using 3 cartesian linear joints (XYZ) and 2 rotary table joints (AB).

The module contains two kinematic models:

type0 (default) is a trivial XYZAB configuration with joints 0..4 mapped to axes XYZAB respectively.

type1 is a XYZAB configuration with tool center point (TCP) compensation.

For an example configuration, run the sim config: '/configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini'.

Further explanations can be found in the README in '/configs/sim/axis/vismach/5axis/table-dual-rotary/'.

xyzab_tdr_kins.comp was constructed by modifying the template file: userkins.comp.

For more information on how to modify userkins.comp run: $ man userkins. Also, see additional information inside: 'userkins.comp'.

For information on kinematics in general see the kinematics document chapter (docs/src/motion/kinematics.txt) and for switchable kinematics in particular see the switchkins document chapter (docs/src/motion/switchkins.txt)

## PINS
xyzab-tdr-kins.N.dummy s32 out (default: 0)

one pin needed to satisfy halcompile requirement

## AUTHOR
David Mueller

## LICENSE
GPL