XHC-HB04 wireless MPG pendant HAL module

More
11 years 1 month ago #62564 by ArcEye
Code:
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 to join the conversation.

More
11 years 1 month ago #62566 by dgarrett
When using the script xhc-h04.tcl with an ini file specification for:
Code:
[XHC_HB04_BUTTON] start_pause=std_start_pause

The script creates a signal named pendant:is-idle
with these connections:
Code:
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:
Code:
net prog-running not.1.in <= halui.program.is-idle

to:
Code:
net pendant:is-idle => not.1.in

Please Log in to join the conversation.

More
11 years 1 month ago #62569 by tommy
Code:
net pendant:is-idle => not.1.in
solved the problem!
Thank you!

Please Log in to join the conversation.

More
11 years 1 month ago #62604 by dgarrett
For reference:

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:
Code:
[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):
Code:
$ 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:
Code:
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 to join the conversation.

More
11 years 1 month ago #62612 by FiliP
LinuxCNC 2.7 with MPG HB04 and i have a problem (or it is how it should be?).

# 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 to join the conversation.

More
11 years 1 month ago #62623 by dgarrett
Not sure I understand any of your posting -- probably because of language
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:

Code:
[XHC_HB04_CONFIG]mpg_accels = val1 val2 val3 val4
the jogging accelerations are set to the altered values (val1,val2,...)
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:
Code:
$ halshow px.halshow
where the file px.halshow is (example for x axis only):
Code:
$ 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 to join the conversation.

More
11 years 1 month ago #62782 by vgraves
I recently migrated from Ubuntu 10.04/Linuxcnc2.7pre to Wheezy/Linuxcnc2.7.0 using the LiveCD. While my machine operation works as before, I'm having trouble with my xhc pendant. I am trying to follow the guidance given in the README file in the xhc-hb04 sim folder. When I run Linuxcnc, I get the following Debug info:

Attachment not found



Is the monitor script not included in the LiveCD distribution? If not, how do I get it?

Please Log in to join the conversation.

More
11 years 1 month ago #62785 by dgarrett
The error message posted seems to indicate that you
specified monitor-xhc-hb04.tcl as a [HAL]HALFILE= but it
is not a HALFILE, it is specified using APPLICATIONS]APP=

README excerpt:
Code:
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):
Code:
$ 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 to join the conversation.

More
11 years 1 month ago #62938 by FiliP
Hi.
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 to join the conversation.

More
11 years 1 month ago #62946 by dgarrett

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 to join the conversation.

Time to create page: 0.216 seconds
Powered by Kunena Forum