Provided by: linuxcnc-uspace_2.9.0~pre0+git20220402.2500863908-4build1_amd64 bug

NAME

       xhc-hb04 - User-space HAL component for the xhc-hb04 pendant.

DESCRIPTION

       The  xhc-hb04  component  supports  a  common  USB  pendant  that  provides  a  number  of
       pushbuttons, a manual pulse generator (mpg or jog wheel), and a selector  switch  for  the
       wheel.

       There are at least two hardware versions -- one with 16 buttons and a more common one with
       18 buttons.  The information  herein  is  based  on  the  18  button  device  with  a  USB
       Vendor:Product code of 10CE:EB70.

       In  addition  to  buttons,  the  pendant  provides an LCD display for the current stepsize
       multiplier (from a set of available integer  values),  position  (absolute  and  relative,
       labeled  MC  and  WC  respectively),  feedrate  (override  percent  and value in units per
       minute), and spindle speed (override percent and value in revolutions per  minute  (RPM)).
       The  display  is  managed  by  a  rotary  switch  that  selects one of four axes for wheel
       positioning, feed override, spindle override, or OFF.

       The pendant display,  its  rotary  selector  switch,  and  the  component  pin  names  use
       designators  x,y,z,a.   While  this arrangement presumes a machine configured as XYZA, the
       pins can be assigned independently as required in a HAL configuration.

UDEV

       The xhc-hb04 executable needs permission for reading the  pendant's  USB  device.   Debian
       package installs (debs) handle this automatically but Run-In-Place (RIP) builds may need a
       udev rules file.  This file should be created (using sudo and a text editor) as:

       /etc/udev/rules.d/99-xhc-hb04.rules with the single line:

       ATTR{idProduct}=="eb70", ATTR{idVendor}=="10ce", MODE="0666", OWNER="root", GROUP="plugdev"

Standalone Usage

       The xhc-hb04 program can be run from the command line without LinuxCNC to test  a  pendant
       in  a simulation mode.  This standalone mode is used to identify the button codes produced
       for each button press and to verify proper counting of  the  jog  wheel.   The  identified
       button  codes  can  be  used  to create a button-cfg-file.  When a button-cfg-file exists,
       pendant operation can be verified using the -I option to specify the file.

       Usage:

       $ xhc-hb04 [options]

Options

       -h    list command line options and exit

       -I button-cfg-file (see below for file format)

       -H    run in real-time HAL mode (simulation mode is default)

       -x    wait for pendant detection before creating HAL pins.

       -s n  n is one of the following stepsize sequences

             1: 1,10,100,1000 (default)
             2: 1,5,10,20
             3: 1,10,100
             4: 1,5,10,20,50,100
             5: 1,10,50,100,1000
             The stepsize selected is always multiplied by 0.001

button-cfg-file format

       Standard  configuration  files  are  provided  in  the  distribution  for   known   button
       configurations:
          /usr/share/linuxcnc/hallib/xhc-hb04-layout1.cfg
          /usr/share/linuxcnc/hallib/xhc-hb04-layout2.cfg
       or for a RIP build:
          rip_base_dir/lib/hallib/xhc-hb04-layout1.cfg
          rip_base_dir/lib/hallib/xhc-hb04-layout2.cfg

       layout1  describes  the  16  button  pendant,  layout2 describes the more common 18 button
       pendant.

       The button configuration file follows the same format as ini files but should use  a  file
       suffix of .cfg.

       File format:
         [XHC-HB04]
         BUTTON=X1:button-thename1
         BUTTON=X2:button-thename2
         BUTTON=X3:button-thename3
         etc.

       XN  is the code reported for a button press and button-thenameN is the name to be assigned
       to the pin created for the button.

Hal Usage

       Use the -H option to specify HAL mode and other options as required:

       loadusr -W  xhc-hb04 -H [Options]

       Example: loadusr -W  xhc-hb04 -H -I path_to_cfg_file -s 2

Input Pins (Control)

       (bit in) xhc-hb04.stepsize-up A 1 pulse on this pin changes the
              stepsize to the next higher stepsize in the  stepsize  sequence  specified  in  the
              xhc-hb04 (loadusr) command.

       (bit in) xhc-hb04.stepsize-down A 1 pulse on this pin changes the
              stepsize  to  the  next  lower  stepsize  in the stepsize sequence specified in the
              xhc-hb04 (loadusr) command.

Input Pins (to the pendant LCD display)

       (float in) xhc-hb04.[xyza].pos-absolute Absolule position display.
              (typically connect to: halui.axis.N.pos-feedback). The LCD display for pos-absolute
              is  fixed  format  with  a sign, 4 number digits and 3 fraction digits (+XXXX.XXX),
              require: -9999.999 <= value <= 9999.999.

       (float in) xhc-hb04.[xyza].pos-relative Relative position display.
              (typically connect to: halui.axis.N.pos-relative). The LCD display for pos-relative
              is  fixed  format  with  a sign, 4 number digits and 3 fraction digits (+XXXX.XXX),
              require: -9999.999 <= value <= 9999.999.

       (float in) xhc-hb04.feed-override Feed-override value.
              The float value is converted to a 16 bit integer and multiplied by 100 in order  to
              display  as  percent,  require:  0  <=  pinvalue  <=  655  (typically  connect  to:
              halui.feed-override.value)

       (float in) xhc-hb04.feed-value Current Feed-value (units/sec).
              The float value is converted to a 16 bit integer and multiplied by 60 in  order  to
              display  as  units-per-minute,  require:  0  <=  pinvalue <= 1092 (65520 units-per-
              minute) (typically connect to: motion.current-vel)

       (float in) xhc-hb04.spindle-override Spindle-override value.
              The float value is converted to a 16 bit integer and multiplied by 100 in order  to
              display  as  percent,  require:  0  <=  pinvalue  <=  655)  (typically  connect to:
              halui.spindle-override.value)

       (float in) xhc-hb04.spindle-rps Spindle speed in rps.
              (revolutions per second).  The float value is converted to a  16  bit  integer  and
              multiplied by 60 in order to display as RPMs, require: 0 <= pinvalue <= 1092 (65520
              RPM) (typically connect to: spindle.N.speed-out-rps-abs)

       (bit in) xhc-hb04.inch-icon Use inch icon (default is mm)

Output Pins (Status)

       (bit out) xhc-hb04.sleeping True when the driver receives a pendant
              inactive (sleeping) message.

       (bit out) xhc-hb04.jog.enable-off True when the pendant rotary
              selector switch is in the OFF position or when the pendant is sleeping.

       (bit out) xhc-hb04.enable-[xyza] True when the pendant rotary
              selector switch is in the [xyza] position and not sleeping.

       (bit out) xhc-hb04.enable-spindle-override True when the pendant
              rotary selector switch is in the Spindle position  and  not  sleeping.   (typically
              connect to: halui.spindle-override-count-enable)

       (bit out) xhc-hb04.enable-feed-override True when the pendant rotary
              selector  switch  is in the Feed position and not sleeping.  (typically connect to:
              halui.feed-override-count-enable)

       (bit out) xhc-hb04.connected True when connection to the pendant
              is established over the USB interface.

       (bit out) xhc-hb04.require_pendant True if driver started with
              the -x option.

       (s32 out) xhc-hb04.stepsize Current stepsize in the stepsize sequence
              as controlled by the stepsize-up and/or stepsize-down pins.

Output Pins (for jogging using axis.N.jog-counts)

       (s32 out) xhc-hb04.jog.counts Number of counts of the wheel since
              start-up (50 counts per wheel revolution).  (typically connect to axis.N.jog-counts
              (lowpass filtering may be helpful))

       (s32 out) xhc-hb04.jog.counts-neg The value of the
              xhc-hb04.jog.counts multiplied by -1.

       (float out) xhc-hb04.jog.scale  Value is the current stepsize
              multiplied by 0.001.  (typically connect to axis.N.jog-scale)

Experimental: Pins for halui plus/minus jogging

       These pins provide some support for non-trivkins, world mode jogging.

       (float in) xhc-hb04.jog.max-velocity Connect to halui.max-velocity.value

       (float out) xhc-hb04.jog.velocity Connect to halui.jog-speed

       (bit out) xhc-hb04.jog.plus-[xyza] Connect to halui.jog.N.plus

       (bit out) xhc-hb04.jog.minus-[xyza] Connect to halui.jog.N.minus

       (float out) xhc-hb04.jog.increment Debug pin -- abs(delta_pos)

Button output pins (for the 18 button, layout2 pendant)

       The output bit type pins are TRUE when the button is pressed.

       ROW 1
           (bit out) xhc-hb04.button-reset
           (bit out) xhc-hb04.button-stop

       ROW 2
           (bit out) xhc-hb04.button-goto-zero
           (bit out) xhc-hb04.button-rewind
           (bit out) xhc-hb04.button-start-pause
           (bit out) xhc-hb04.button-probe-z

       ROW 3
          (bit out) xhc-hb04.button-spindle
          (bit out) xhc-hb04.button-half
          (bit out) xhc-hb04.button-zero
          (bit out) xhc-hb04.button-safe-z

       ROW 4
          (bit out) xhc-hb04.button-home
          (bit out) xhc-hb04.button-macro-1
          (bit out) xhc-hb04.button-macro-2
          (bit out) xhc-hb04.button-macro-3

       ROW 5
          (bit out) xhc-hb04.button-step
          (bit out) xhc-hb04.button-mode
          (bit out) xhc-hb04.button-macro-6
          (bit out) xhc-hb04.button-macro-7

Synthesized button pins

       Additional  buttons  are  synthesized  for buttons named zero, goto-zero, and half.  These
       synthesized buttons are active when the button is pressed AND the selector-switch  is  set
       to the corresponding axis [xyza].

          (bit out) xhc-hb04.button-zero-[xyza]
          (bit out) xhc-hb04.button-goto-zero-[xyza]
          (bit out) xhc-hb04.button-half-[xyza]

DEBUGGING

       For debugging USB activity, use environmental variable LIBUSB_DEBUG:

       export LIBUSB_DEBUG=[2 | 3 | 4]; xhc-hb04 [options]
              2:warning, 3:info, 4:debug

Sim Configs

       The distribution includes several simulation configurations in the directory:
          /usr/share/doc/linuxcnc/examples/sample-configs/sim/axis/xhc-hb04/
       or for a RIP build:
          rip_base_dir/configs/sim/axis/xhc-hb04/

       These  configurations  use  a distribution-provided script (xhc-hb04.tcl) to configure the
       pendant and make necessary HAL connections according to a number  of  ini  file  settings.
       The   script   uses   an  additional  HAL  component  (xhc_hb04_util)  to  provide  common
       functionality and includes support for a standard method for the start-pause button.

       The settings available include:
         1) specify button-cfg-file for standard layout1 or layout2
         2) select axes (up to 4 axes from set of x y z a b c u v w)
         3) implement per-axis filtering coefficients
         4) implement per-axis acceleration for mpg jogging
         5) implement per-axis scale settings
         6) select normal or velocity based jog modes
         7) select stepsize sequence
         8) option to initialize pin for inch or mm display icon
         9) option to require pendant on startup

       The sim configs illustrate button connections that:
         1) connect pendant stepsize-up button to the step input pin.
         2) connect buttons to halui.* pins
         3) connect buttons to motion.* pins

       Another script is included to monitor the pendant and report  loss  of  USB  connectivity.
       See the README and .txt files in the above directory for usage.

       Note:  The  sim  configs  use  the  axis  gui  but  the scripts are available with any HAL
       configuration or gui.  The same scripts can be used to  adapt  the  xhc-hb04  to  existing
       configurations  provided  that the halui, motion, and axis.N pins needed are not otherwise
       claimed.  Instructions are included in README file in the directory named above.

       Use halcmd to display the pins and signals used by the xhc-hb04.tcl script:
         halcmd show pin xhc-hb04       (show all xhc-hb04 pins)
         halcmd show pin pendant_util   (show all pendant_util pins)
         halcmd show sig pendant:       (show all pendant signals)

Author

       Frederick Rible (frible@teaser.fr)