Commands and Userspace Components
Some of these will have expanded descriptions from the man pages. Some will have limited descriptions. All of the components have man pages. From this list you know what components exist and can use man n name to get additional information. For example in a terminal window type
man 1 axis
to view the information in the man page.
[{axis-remote.1}] = AXIS Remote Interface
[{axis.1}] = AXIS EMC (The Enhanced Machine Controller) Graphical User Interface
[{bfload.1}] = A program for loading a Xilinx Bitfile program into the FPGA of an Anything I/O board from Mesa
[{comp.1}] = Build, compile and install EMC HAL components
[{emc.1}] = EMC (The Enhanced Machine Controller)
[{hal\_input.1}] = control HAL pins with any Linux input device, including USB HID devices
[{halcmd.1}] = manipulate the Enhanced Machine Controller HAL from the command line
[{halmeter.1}] = observe HAL pins, signals, and parameters
[{halrun.1}] = manipulate the Enhanced Machine Controller HAL from the command line
[{halsampler.1}] = sample data from HAL in realtime
[{halstreamer.1}] = stream file data into HAL in real time
[{halui.1}] = observe HAL pins and command EMC through NML
[{io.1}] = accepts NML I/O commands, interacts with HAL in userspace
[{iocontrol.1}] = accepts NML I/O commands, interacts with HAL in userspace
[{pyvcp.1}] = Virtual Control Panel for EMC2
Realtime Components
Some of these will have expanded descriptions from the man pages. Some will have limited descriptions. All of the components have man pages. From this list you know what components exist and can use man n name to get additional information in a terminal window.
Compute the absolute value and sign of the input signal
====== Loading
loadrt abs {[}count=N\|names=name1{[},name2...{]}{]}
====== Functions
addf abs.N\|name thread-name
====== Pins
abs.N.in (float in) Input value
abs.N.out (float out) Output Value, always positive
abs.N.sign (bit out) Sign of Input, false = positive, true = negative
The first abs loaded will be abs.0 and each one after that the Nnumber will increment.
Two-input AND gate. For out to be true both inputs must be true
====== Loading
loadrt and2 {[}count=N\|names=name1{[},name2...{]}{]}
====== Functions
addf and2.N\|name thread-name
====== Pins
and2.N.in0 (bit in) Input 0
and2.N.in1 (bit in) Input 1
and2.N.out (bit out) Output
at\_pid{atpid@at\\\_pid}
proportional/integral/derivative controller with auto tuning
accepts NML motion commands, interacts with HAL in realtime
Biquad IIR filter
bldc\_hall3{bldchall3@bldc\\\_hall3}
3-wire Bipolar trapezoidal commutation BLDC motor driver using Hall sensors
Perform linear interpolation between two values
====== Loading
loadrt blend {[}count=N\|names=name1{[},name2...{]}{]}
====== Functions
addf blend.N\|name thread-name
====== Pins
blend.N.in1 (float in) First input.
blend.N.in2 (float in) Second input.
blend.N.select (float in) Select input.
blend.N.out (float out) Output value.
====== Parameters
blend.N.open (bit r/w)
====== Description
If select is equal to 0.0 output is equal to in1.
If select is equal to 1.0, the output is equal to in2.
For select values between 0.0 and 1.0, the output changes linearly from in1 to in2.
If blend.N.open is true, select values outside the range 0.0 to 1.0 give values outside the range in1 to in2. If false, outputs are clamped to the the range in1 to in2
charge\_pump{chargepump@charge\\\_pump}
Create a square-wave for the charge pumpinput of some controller boards
====== Loading
loadrt charge\_pump
====== Functions
addf charge-pump
====== Pins
charge-pump.out (bit out)
charge-pump.enable (bit in) default = TRUE
====== Description
Outputs a square wave if enable is TRUE or unconnected, low if enable is FALSE
Two input version of Clarke transform
====== Loading
loadrt clarke2 {[}count=N\|names=name1{[},name2...{]}{]}
====== Functions
addf clarke2.N \| name
====== Pins
clarke2.N.a (float in) phase a input
clarke2.N.b (float in) phase b input
clarke2.N.x (float out) cartesian components of output
clarke2.N.y (float out) cartesian components of output
====== Description
The Clarke transform can be used to translate a vector quantity from a three phase system (three components 120 degrees apart) to a two phase Cartesian system.
clarke2 implements a special case of the Clarke transform, which only needs two of the three input phases. In a three wire three phase system, the sum of the three phase currents or voltages must always be zero. As a result only two of the three are needed to completely define the current or voltage. clarke2 assumes that the sum is zero, so it only uses phases A and B of the input. Since the H (homopolar) output will always be zero in this case, it is not generated.
Clarke (3 phase to cartesian) transform
====== Loading
loadrt clarke3 {[}count=N\|names=name1{[},name2...{]}{]}
====== Functions
addf clarke3.N \| name
====== Pins
clarke3.N.a (float in) three phase input vector
clarke3.N.b (float in) three phase input vector
clarke3.N.c (float in) three phase input vector
clarke3.N.x (float out) cartesian components of output
clarke3.N.y (float out) cartesian components of output
clarke3.N.h (float out) homopolar component of output
====== Description
The Clarke transform can be used to translate a vector quantity from a three phase system (three components 120 degrees apart) to a two phase Cartesian system (plus a homopolar component if the three phases don’t sum to zero).
clarke3 implements the general case of the transform, using all three phases. If the three phases are known to sum to zero, see clarke2 for a simpler version.
Inverse Clarke transform
====== Loading
loadrt clarkeinv {[}count=N\|names=name1{[},name2...{]}{]}
====== Functions
addf clarkeinv.N \| name
====== Pins
clarkeinv.N.x (float in) cartesian components of input
clarkeinv.N.y (float in) cartesian components of input
clarkeinv.N.h (float in) homopolar component of input (usually zero)
clarkeinv.N.a (float out) three phase output vector
clarkeinv.N.b (float out) three phase output vector
clarkeinv.N.c (float out) three phase output vector
====== Parameters
====== Description
The inverse Clarke transform can be used to translate a vector quantity from Cartesian coordinate system to a three phase system (three components 120 degrees apart).
Realtime software plc based on ladder logic
Two input comparator with hysteresis
Use a parameter to set the value of a pin
conv\_bit\_s32{convbits32@conv\\\_bit\\\_s32}
Convert a value from bit to s32
conv\_bit\_u32{convbitu32@conv\\\_bit\\\_u32}
Convert a value from bit to u32
conv\_float\_s32{convfloats32@conv\\\_float\\\_s32}
Convert a value from float to s32
conv\_float\_u32{convfloatu32@conv\\\_float\\\_u32}
Convert a value from float to u32
conv\_s32\_bit{convs32bit@conv\\\_s32\\\_bit}
Convert a value from s32 to bit
conv\_s32\_float{convs32float@conv\\\_s32\\\_float}
Convert a value from u32 to bit
conv\_s32\_u32{convs32u32@conv\\\_s32\\\_u32}
Convert a value from s32 to u32
conv\_u32\_bit{convu32bit@conv\\\_u32\\\_bit}
Convert a value from u32 to bit
conv\_u32\_float{convu32float@conv\\\_u32\\\_float}
Convert a value from u32 to float
conv\_u32\_s32{convu32s32@conv\\\_u32\\\_s32}
Convert a value from u32 to s32
counts input pulses (deprecated)
Compute the derivative of the input function
Return the center if within the threshold
filter noisy digital inputs, for more information see [sec:Debounce]
Edge detector
software counting of quadrature encoder signals, for more information see [sec:Encoder]
encoder\_ratio{encoderratio@encoder\\\_ratio}
an electronic gear to synchronize two axes
estop\_latch{estoplatch@estop\\\_latch}
ESTOP latch
Multiply the input by the ratio of current velocity to the feed rate
D type flip-flop
software step pulse generation
gantrykins
A kinematics module that maps one axis to multiple joints
Select from one two speed ranges
Gives six degrees of freedom in position and orientation (XYZABC). The location of the motors is defined at compile time.
genserkins
Kinematics that can model a general serial-link manipulator with up to 6 angular joints.
hm2\_7i43{hm27i43@hm2\\\_7i43}
HAL driver for the Mesa Electronics 7i43 EPP Anything IO board with HostMot2
hm2\_pci{hm2pci@hm2\\\_pci}
HAL driver for the Mesa Electronics 5i20, 5i22, 5i23, 4i65, and 4i68 Anything IO boards, with HostMot2 firmware
HAL driver for the Mesa Electronics HostMot2 firmware
Three-input hypotenuse (Euclidean distance) calculator
Low-pass filter with integer inputs and outputs
Integrator
Compute the inverse of the input signal
sets nonlinear joypad movements, deadbands and scales
kinematics definitions for emc2
Convert counts (probably from an encoder) to a float value
Limit the output signal to fall between min and max
Limit the output signal to fall between min and max
Limit the output signal to fall between min and max
Experimental general logic function component
Low-pass filter
Arbitrary 5-input logic function based on a look-up table
Compute the majority of 3 inputs
8-bit binary match detector
Kinematics for a tabletop 5 axis mill named maxwith tilting head (B axis) and horizintal rotary mounted to the table (C axis). Provides UVW motion in the rotated coordinate system. The source file, maxkins.c, may be a useful starting point for other 5-axis systems.
Track the minimum and maximum values of the input to the outputs
accepts NML motion commands, interacts with HAL in realtime
Product of two inputs
Select from one of two input values
Select from one of four input values
Select from one of eight input values
Determine whether two values are roughly equal
Inverter
Adds an offset to an input, and subtracts it from the feedback value
one-shot pulse generator
Two-input OR gate
proportional/integral/derivative controller, for more information see [sec:PID]
pluto\_servo{plutoservo@pluto\\\_servo}
Hardware driver and firmware for the Pluto-P parallel-port FPGA, for use with servos
pluto\_step{plutostep@pluto\\\_step}
Hardware driver and firmware for the Pluto-P parallel-port FPGA, for use with steppers
software PWM/PDM generation, for more information see [sec:PWMgen]
The X and Y axes are rotated 45 degrees compared to the joints 0 and 1.
sample\_hold{samplehold@sample\\\_hold}
Sample and Hold
sample data from HAL in real time
applies a scale and offset to its input
kinematics for SCARA-type robots
8-bit binary match detector
Hardware driver for the digital I/O bits of the 8250 and 16550 serial port
signal generator, for more information see [sec:Siggen]
sim\_encoder{simencoder@sim\\\_encoder}
simulated quadrature encoder, for more information see [sec:Simulated-Encoder]
Probe a pretend hemisphere
software step pulse generation, for more information see [sec:Stepgen]
Used by Stepconf to allow testing of acceleration and velocity values for an axis
stream file data into HAL in real time
Sum of two inputs (each with a gain) and an offset
set output pins with values from parameters (deprecated)
thc
Torch Height Control using a Mesa THC card.
creates hard realtime HAL threads
component for testing thread behavior
The equivalent of a time-delay relay
component that measures thread scheduling timing behavior
push-on, push-off from momentary pushbuttons
toggle button to nist logic
The joints represent the distance of the controlled point from three predefined locations (the motors), giving three degrees of freedom in position (XYZ)
tristate\_bit{tristatebit@tristate\\\_bit}
Place a signal on an I/O pin only when enabled, similar to a tristate buffer in electronics
tristate\_float{tristatefloat@tristate\\\_float}
Place a signal on an I/O pin only when enabled, similar to a tristate buffer in electronics
There is a 1:1 correspondence between joints and axes. Most standard milling machines and lathes use the trivial kinematics module.
Counts up or down, with optional limits and wraparound behavior
Window comparator
weighted\_sum{weightedsum@weighted\\\_sum}
convert a group of bits to an integer
Two-input XOR (exclusive OR) gate
====== Loading
====== Functions
====== Pins
====== Parameters
====== Description