XHC-HB04 wireless MPG pendant HAL module
net pendant:is-idle not.1.in
if that is the name of your signal ( why does it have a colon in it?)
You can only have one writer to a signal, but as many readers as you like
Please Log in or Create an account to join the conversation.
[XHC_HB04_BUTTON]
start_pause=std_start_pause
The script creates a signal named pendant:is-idle
with these connections:
net pendant:is-idle <= halui.program.is-idle
net pendant:is-idle => pendant_util.is-idle
so in your custom.hal (that must follow xhc-hb04.tcl), you could change:
net prog-running not.1.in <= halui.program.is-idle
to:
net pendant:is-idle => not.1.in
Please Log in or Create an account to join the conversation.
net pendant:is-idle => not.1.in
Thank you!
Please Log in or Create an account to join the conversation.
A method to analyze or debug a configuration that uses the xhc-hb04.tcl script
_and_ additional custom hal files is to insert an inifile line to show the signal
connections made by the script:
Example:
[HAL]
HALFILE = primary_hal_file_1
...
HALFILE = primary_hal_file_n
HALFILE = LIB:xhc-hb04.tcl
HALCMD = show sig pendant: # <--- add this line
HALFILE = custom_hal_file_1
...
HALFILE = custom_hal_file_n
Start linuxcnc in a terminal using the path to the inifile
(if using run-in-place, source the rip-environment script first):
$ linuxcnc path_to_inifile.ini
An example printout for a simulator inifile adapted to use the
modification above (HALCMD = show sig pendant: ) will show all
the connections made by the script:
Signals:
Type Value Name (linked to)
float 0 pendant:feed-override
<== halui.feed-override.value
==> xhc-hb04.feed-override
bit TRUE pendant:feed-override-enable
==> halui.feed-override.count-enable
<== xhc-hb04.jog.enable-feed-override
float 0 pendant:feed-value
<== motion.current-vel
==> xhc-hb04.feed-value
bit FALSE pendant:goto-zero
==> halui.mdi-command-00
<== xhc-hb04.button-goto-zero
bit FALSE pendant:half
==> halui.spindle.stop
<== xhc-hb04.button-half
bit FALSE pendant:home
==> halui.home-all
<== xhc-hb04.button-home
bit FALSE pendant:is-idle
<== halui.program.is-idle
==> pendant_util.is-idle
bit FALSE pendant:is-manual
<== halui.mode.is-manual
==> pendant_util.is-manual
bit FALSE pendant:is-paused
<== halui.program.is-paused
==> pendant_util.is-paused
bit FALSE pendant:is-running
<== halui.program.is-running
==> pendant_util.is-running
bit FALSE pendant:jog-c
==> axis.5.jog-enable
<== xhc-hb04.jog.enable-a
float 0 pendant:jog-prescale
==> pendant_util.divide-by-k-in
<== xhc-hb04.jog.scale
float 0 pendant:jog-scale
==> axis.0.jog-scale
==> axis.1.jog-scale
==> axis.2.jog-scale
==> axis.5.jog-scale
<== pendant_util.divide-by-k-out
float 0 pendant:jog-speed
<== halui.max-velocity.value
bit FALSE pendant:jog-x
==> axis.0.jog-enable
<== xhc-hb04.jog.enable-x
bit FALSE pendant:jog-y
==> axis.1.jog-enable
<== xhc-hb04.jog.enable-y
bit FALSE pendant:jog-z
==> axis.2.jog-enable
<== xhc-hb04.jog.enable-z
bit FALSE pendant:jogenable-off
==> pendant_util.jogenable-off
<== xhc-hb04.jog.enable-off
bit FALSE pendant:macro-1
==> halui.mdi-command-01
<== xhc-hb04.button-macro-1
bit FALSE pendant:macro-2
==> halui.mdi-command-02
<== xhc-hb04.button-macro-2
bit FALSE pendant:macro-3
==> halui.mdi-command-03
<== xhc-hb04.button-macro-3
bit FALSE pendant:macro-6
==> halui.mdi-command-06
<== xhc-hb04.button-macro-6
bit FALSE pendant:macro-7
==> halui.mdi-command-07
<== xhc-hb04.button-macro-7
float 0 pendant:muxed-accel-0
<== pendant_util.amux0-out
float 0 pendant:muxed-accel-1
<== pendant_util.amux1-out
float 0 pendant:muxed-accel-2
<== pendant_util.amux2-out
float 0 pendant:muxed-accel-5
<== pendant_util.amux3-out
float 0 pendant:pos-c
<== halui.axis.5.pos-feedback
==> xhc-hb04.a.pos-absolute
float 0 pendant:pos-rel-c
<== halui.axis.5.pos-relative
==> xhc-hb04.a.pos-relative
float 0 pendant:pos-rel-x
<== halui.axis.0.pos-relative
==> xhc-hb04.x.pos-relative
float 0 pendant:pos-rel-y
<== halui.axis.1.pos-relative
==> xhc-hb04.y.pos-relative
float 0 pendant:pos-rel-z
<== halui.axis.2.pos-relative
==> xhc-hb04.z.pos-relative
float 0 pendant:pos-x
<== halui.axis.0.pos-feedback
==> xhc-hb04.x.pos-absolute
float 0 pendant:pos-y
<== halui.axis.1.pos-feedback
==> xhc-hb04.y.pos-absolute
float 0 pendant:pos-z
<== halui.axis.2.pos-feedback
==> xhc-hb04.z.pos-absolute
bit FALSE pendant:probe-z
==> motion.probe-input
<== xhc-hb04.button-probe-z
bit FALSE pendant:program-pause
==> halui.program.pause
<== pendant_util.pause
bit FALSE pendant:program-resume
==> halui.program.resume
<== pendant_util.resume
bit FALSE pendant:program-run
==> halui.mode.auto
==> halui.program.run
<== pendant_util.run
bit FALSE pendant:reset
==> halui.estop.activate
<== xhc-hb04.button-reset
bit FALSE pendant:rewind
==> halui.program.step
<== xhc-hb04.button-rewind
bit FALSE pendant:safe-z
==> halui.mdi-command-10
<== xhc-hb04.button-safe-z
bit FALSE pendant:spindle
==> halui.spindle.start
<== xhc-hb04.button-spindle
float 0 pendant:spindle-override
<== halui.spindle-override.value
==> xhc-hb04.spindle-override
bit TRUE pendant:spindle-override-enable
==> halui.spindle-override.count-enable
<== xhc-hb04.jog.enable-spindle-override
float 0 pendant:spindle-rps
<== motion.spindle-speed-out-rps-abs
==> xhc-hb04.spindle-rps
bit FALSE pendant:start-or-pause
==> pendant_util.start-or-pause
<== xhc-hb04.button-start-pause
bit FALSE pendant:step
<== xhc-hb04.button-step
==> xhc-hb04.stepsize-up
bit FALSE pendant:stop
==> halui.program.stop
<== xhc-hb04.button-stop
s32 0 pendant:wheel-counts
==> halui.feed-override.counts
==> halui.spindle-override.counts
==> pendant_util.in0
==> pendant_util.in1
==> pendant_util.in2
==> pendant_util.in3
<== xhc-hb04.jog.counts
s32 0 pendant:wheel-counts-c-filtered
==> axis.5.jog-counts
<== pendant_util.out3
s32 0 pendant:wheel-counts-neg
<== xhc-hb04.jog.counts-neg
s32 0 pendant:wheel-counts-x-filtered
==> axis.0.jog-counts
<== pendant_util.out0
s32 0 pendant:wheel-counts-y-filtered
==> axis.1.jog-counts
<== pendant_util.out1
s32 0 pendant:wheel-counts-z-filtered
==> axis.2.jog-counts
<== pendant_util.out2
bit FALSE pendant:zero-a
==> halui.mdi-command-15
<== xhc-hb04.button-zero-a
bit FALSE pendant:zero-x
==> halui.mdi-command-12
<== xhc-hb04.button-zero-x
bit FALSE pendant:zero-y
==> halui.mdi-command-13
<== xhc-hb04.button-zero-y
bit FALSE pendant:zero-z
==> halui.mdi-command-14
<== xhc-hb04.button-zero-z
Please Log in or Create an account to join the conversation.
# mpg_accels: provision for reduced acceleration for mpg jogging
mpg_accels = 50 50 500 600
This values have influence on my all settings.
Cant go to home, just crash my machine. Cant fast jog on keyboard, it is slow like should by but only when i use my mpg pendant...
Edit: Ok. I get it. MPG must be turned off before keyboard jog.
Please Log in or Create an account to join the conversation.
translation, nonetheless, the following investigation may be relevant
as it shows unexpected behavior when the pendant goes to sleep.
Current 2.7 (at commit 760a7f2) behavior for pendant:
When using LIB:xhc-hb04.tcl (with the axis gui) and using:
the jogging accelerations are set to the altered values (val1,val2,...)[XHC_HB04_CONFIG]mpg_accels = val1 val2 val3 val4
when using the pendant jog wheel _AND_ when using the keyboard arrow keys in
manual mode.
When the pendant rotary switch is in the Off position, unaltered accelerations
are used for keyboard jogging. (So the jogging accels will be higher with the
pendant rotary in the off position).
However, the pendant goes to sleep if no buttons are touched for some number of
seconds (xhc.hb04.sleeping is set to 1). (It is unclear to me what conditions
are prerequisites for the pendant to go to sleep but it is detected by the
driver). When a pendant sleep occurs, the xhc-hb04.jog.enable-off is also set
to 1 and keyboard jogging reverts to unaltered accelerations independent of
any pendant rotary switch position.
So the pendant going to sleep causes unexpected behavior of the
accelerations used for keyboard jogging.
I have made a patch so that keyboard jogging (axis gui) honors the mpg_accels
whenever halui.is_manual is true. With this patch, the pendant going to sleep
will not change keyboard jogging acceleration -- the altered accel values
will be used whenever halui.is_manual is true.
The patch is in a test branch:
git.linuxcnc.org/gitweb?p=linuxcnc.git;a...45a5dd745e4e69c134cd
For interest, you can observe the behavior of the relevant hal pins
using halshow from a terminal while making tests with the pendant:
$ halshow px.halshow
$ cat px.halshow
pin+ini.0.max_acceleration pin+halui.mode.is-manual pin+xhc-hb04.jog.enable-off pin+xhc-hb04.jog.enable-x pin+xhc-hb04.sleeping
Please Log in or Create an account to join the conversation.
Is the monitor script not included in the LiveCD distribution? If not, how do I get it?
Please Log in or Create an account to join the conversation.
specified monitor-xhc-hb04.tcl as a [HAL]HALFILE= but it
is not a HALFILE, it is specified using APPLICATIONS]APP=
README excerpt:
A application named monitor-xhc-hb04 is included to monitor disconnects and
reconnects of the pendant. This script runs in the background and will pop up
a message when the pendant is disconnected or reconnected. Usage is optional;
if used it is specified with ini file entry:
[APPLICATIONS]APP = monitor-xhc-hb04
The file is named monitor-xhc-hb04 (not monitor-xhc-hb04.tcl though
it is a tcl script) and it is located in /usr/bin and hence
in the standard PATH
Example query of a package install (uspace in this caae):
$ dpkg -L linuxcnc-uspace | grep monitor
/usr/bin/monitor-xhc-hb04
$ ls -l /usr/bin/monitor-xhc-hb04
-rwxr-xr-x 1 root root 4396 Sep 10 21:29 /usr/bin/monitor-xhc-hb04
Running one of the supplied simulator configs and studying
the ini file may be helpful
Ref: README for 2.7
git.linuxcnc.org/gitweb?p=linuxcnc.git;a...675ba593695c;hb=HEAD
Please Log in or Create an account to join the conversation.
Pedant acc. jogg is a great feature (2.7.0) but i have some comments after testing it, Some of them were already mentioned.
1) After turning on my CNC machine i must always turn HB04, and switch rotary button (XYZ../Off). If i don't do this machine will crash on homing sequence ( acceleration values). There is a problem with default PIN state. It looks like that there is no procedure to verify the status right after you turn the machine (LinuxCNC).
2) Jog ON (rotary switch to X or Y...) should have not any impact (ACC) on running program. So in my opinion HB04 acceleration should work only when wheel is turning (count impulses). Now i must always remember to turn off JOG when i have to put away my HB04.
3) HB04 ACC configuration shouldn't impact on keyboard Jog (add.2)
4) And last, Go to ZERO still don't work on HB04 like manual and sample configuration says (2.6.X and 2.7.0). I saw in this thread what modifications must be carried out, but maybe I did something wrong.
Anyway,...
GREAT WORK and Thank you
Please Log in or Create an account to join the conversation.
Pedant acc. jogg is a great feature (2.7.0) but i have some comments after
testing it, Some of them were already mentioned.
A commit based on a patch mentioned earlier in this thread
addresses unexpected keyboard jogging behavior (unaltered accels)
when the pendant goes to sleep (typically after about 40 seconds).
git.linuxcnc.org/gitweb?p=linuxcnc.git;a...945e6a36374197281ea2
If you are using a rip (run-in-place) build you must update git and rebuild.
If you are using a deb install, you must wget a deb from the buildbot
that includes this patch. You can wget a deb from:
buildbot.linuxcnc.org/dists/
I cannot reproduce any of the anomalies you describe using any of the
sim configs provided.
So please update your linuxcnc install, then test using one of
the provided sim configs and provide details on the steps required
to reproduce unexpected behavior.
The sim configs are available through the standard linuxcnc config picker:
Sample Configurations/sim/axis/xhc-hb04/xhc-hb4-layout1.ini
Sample Configurations/sim/axis/xhc-hb04/xhc-hb4-layout2.ini
Sample Configurations/sim/axis/xhc-hb04/xhc-hb4-layout2_mm.ini
Please Log in or Create an account to join the conversation.