Difference between revisions of "WHB04B Pendant"
From PROBOTIX :: wiki
(Add WHB04B pendant usage guide) |
|||
| (3 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
| + | [[File:WHB04B_handheld_wireless_pendant.jpg|thumb|right|400px|WHB04B wireless jog pendant]] | ||
| + | |||
| + | [[Category:Controllers]] | ||
| + | [[Category:LinuxCNC Configurations]] | ||
| + | = WHB04B Pendant = | ||
| + | |||
| + | |||
| + | This page documents the '''current PROBOTIX LinuxCNC WHB04B wireless pendant configuration''' used on the newer Python-driver setup. | ||
| + | |||
| + | {| class="wikitable" style="width:100%; background:#f8fbff;" | ||
| + | |+ '''Quick Reference''' | ||
| + | ! Item | ||
| + | ! Behavior on this configuration | ||
| + | |- | ||
| + | | '''Supported axes''' | ||
| + | | '''X, Y, Z''' (the driver sees the '''A''' selector, but the current PROBOTIX HAL file only wires X/Y/Z jogging) | ||
| + | |- | ||
| + | | '''Jog mode at startup''' | ||
| + | | '''STEP''' | ||
| + | |- | ||
| + | | '''Jog style''' | ||
| + | | '''STEP''' = incremental jogs, '''CONT''' = velocity jogs | ||
| + | |- | ||
| + | | '''Program control''' | ||
| + | | '''Start''' = start / pause / resume, '''Stop''' = abort | ||
| + | |- | ||
| + | | '''Machine power''' | ||
| + | | '''Fn + Reset''' toggles machine power on/off | ||
| + | |- | ||
| + | | '''Macro buttons''' | ||
| + | | Bare macro-button presses call '''whb_macro_1''' through '''whb_macro_10'''; holding '''Fn''' repurposes those same buttons for overrides and machine actions | ||
| + | |- | ||
| + | | '''Re-home all axes''' | ||
| + | | '''Fn + Machine Home''' | ||
| + | |- | ||
| + | | '''Go to machine-safe Z''' | ||
| + | | '''Fn + Safe Z''' | ||
| + | |- | ||
| + | | '''Go to work X0 Y0''' | ||
| + | | '''Fn + Work Home''' | ||
| + | |- | ||
| + | | '''Feed override step''' | ||
| + | | '''10%''' per press | ||
| + | |- | ||
| + | | '''Spindle override step''' | ||
| + | | '''10%''' per press | ||
| + | |} | ||
| + | |||
| + | {| class="wikitable" style="width:100%; background:#fff8e5; border:1px solid #d7b64a;" | ||
| + | | style="width:56px; font-size:220%; text-align:center;" | ⚠ | ||
| + | | '''Important behavior notes''' | ||
| + | * On this configuration, '''bare Reset is not a normal “clear reset” button'''. It issues an E-stop request. | ||
| + | * '''Fn + Reset''' is the machine-power toggle. | ||
| + | * '''Fn suppresses macro calls.''' The driver zeros out the macro pins while '''Fn''' is held, then uses those buttons for overrides and special actions instead. | ||
| + | * The pendant is intended for '''X/Y/Z jogging and common operator actions'''. Do not assume every extra button on the WHB04B is assigned on every machine. | ||
| + | |} | ||
| + | |||
| + | __TOC__ | ||
| + | |||
| + | = Basic Use = | ||
| + | |||
| + | == 1) Select the axis == | ||
| + | Use the axis selector on the pendant to choose '''X''', '''Y''', or '''Z'''. | ||
| + | |||
| + | '''Note:''' the driver exposes an '''A''' selector pin, but the current PROBOTIX <code>whb04b.hal</code> file only wires X/Y/Z jog enable and jog counts. | ||
| + | |||
| + | == 2) Choose jog mode == | ||
| + | Use the orange '''STEP''' and '''CONT''' buttons to choose how the handwheel behaves. | ||
| + | |||
| + | === STEP mode === | ||
| + | In '''STEP''' mode, the handwheel moves the selected axis in discrete increments. | ||
| + | |||
| + | Use this for: | ||
| + | * Touching off | ||
| + | * Sneaking up on an edge | ||
| + | * Fine position adjustments | ||
| + | * Careful setup work | ||
| + | |||
| + | [[File:WHB04B wireless jog pendant.jpg|thumb|right|400px|WHB04B wireless jog pendant]] | ||
| + | |||
| + | === CONT mode === | ||
| + | In '''CONT''' mode, the handwheel acts like a continuous jog command. Jog speed follows the pendant's rotary percentage setting. | ||
| + | |||
| + | Use this for: | ||
| + | * Longer moves | ||
| + | * Fast manual positioning | ||
| + | * General jogging around the table | ||
| + | |||
| + | '''Default at startup:''' the current configuration starts in '''STEP''' mode. | ||
| + | |||
| + | == 3) Set the jog amount / speed == | ||
| + | The rotary selector affects jogging differently depending on mode: | ||
| + | |||
| + | * In '''STEP''' mode, it sets the jog increment. | ||
| + | * In '''CONT''' mode, it sets the jog velocity percentage. | ||
| + | |||
| + | == 4) Turn the handwheel == | ||
| + | Turn the handwheel to jog the selected axis. | ||
| + | |||
| + | * In '''STEP''' mode, each wheel movement commands incremental motion. | ||
| + | * In '''CONT''' mode, wheel motion commands continuous jogging at the selected speed. | ||
| + | |||
| + | = Program Control Buttons = | ||
| + | |||
| + | == Start == | ||
| + | The '''Start''' button is context-sensitive: | ||
| + | |||
| + | * If no program is running, it starts the currently loaded program from the beginning. | ||
| + | * If a program is running, it pauses the program. | ||
| + | * If a program is paused, it resumes the program. | ||
| + | |||
| + | == Stop == | ||
| + | The '''Stop''' button aborts the running program. | ||
| + | |||
| + | Use this when you want to stop the job without hitting E-stop. | ||
| + | |||
| + | == Reset == | ||
| + | On this pendant configuration, '''Reset''' by itself triggers an E-stop request. | ||
| + | |||
| + | That means it should be treated like a serious stop action, not like a casual reset/clear button. | ||
| + | |||
| + | = Function (Fn) Shortcuts = | ||
| + | |||
| + | Hold the '''Fn''' button while pressing the second button. | ||
| + | |||
| + | {| class="wikitable" | ||
| + | ! Fn Combination | ||
| + | ! Action | ||
| + | ! Notes | ||
| + | |- | ||
| + | | '''Fn + Reset''' | ||
| + | | Toggle machine power '''ON/OFF''' | ||
| + | | If the machine is on, it turns it off. If it is off, it requests machine-on. | ||
| + | |- | ||
| + | | '''Fn + Step''' | ||
| + | | Single-step a program in AUTO | ||
| + | | Useful when paused or step-testing. See note below about '''G64'''. | ||
| + | |- | ||
| + | | '''Fn + Feed+''' | ||
| + | | Increase feed override | ||
| + | | '''10%''' per press | ||
| + | |- | ||
| + | | '''Fn + Feed-''' | ||
| + | | Decrease feed override | ||
| + | | '''10%''' per press | ||
| + | |- | ||
| + | | '''Fn + Spindle+''' | ||
| + | | Increase spindle override | ||
| + | | '''10%''' per press | ||
| + | |- | ||
| + | | '''Fn + Spindle-''' | ||
| + | | Decrease spindle override | ||
| + | | '''10%''' per press | ||
| + | |- | ||
| + | | '''Fn + Machine Home''' | ||
| + | | Home all axes | ||
| + | | Performs a full re-home sequence | ||
| + | |- | ||
| + | | '''Fn + Safe Z''' | ||
| + | | Send Z to machine safe position | ||
| + | | Executes <code>G0 G53 Z0</code> | ||
| + | |- | ||
| + | | '''Fn + Work Home''' | ||
| + | | Go to work zero in X/Y after lifting Z | ||
| + | | Executes machine-safe Z first, then <code>G0 X0 Y0</code> in the current work coordinate system | ||
| + | |- | ||
| + | | '''Fn + Spindle Toggle''' | ||
| + | | Toggle spindle ON/OFF | ||
| + | | When turning back on, it uses the current commanded spindle speed | ||
| + | |- | ||
| + | | '''Fn + Probe Z''' | ||
| + | | Not configured | ||
| + | | Currently displays '''Probe-Z Not Configured''' | ||
| + | |} | ||
| + | |||
| + | = Macro Buttons = | ||
| + | |||
| + | The current Python driver does not use a separate HAL-side macro map. Instead, when '''Fn''' is ''not'' held, ten WHB04B button codes are treated as macro slots named <code>macro1</code> through <code>macro10</code>. | ||
| + | |||
| + | When one of those buttons is pressed, the driver only launches the macro if: | ||
| + | * LinuxCNC is in '''INTERP_IDLE''' | ||
| + | * the previous macro thread is no longer running | ||
| + | * the button state changed since the last USB packet | ||
| + | |||
| + | When a macro does launch, the driver switches to MDI mode and runs: | ||
| + | |||
| + | <code>O<whb_macro_N> call [axis] [fn]</code> | ||
| + | |||
| + | Where: | ||
| + | * <code>N</code> is the macro number from 1 to 10 | ||
| + | * <code>axis</code> is the raw selector value from the pendant: <code>17=X</code>, <code>18=Y</code>, <code>19=Z</code>, <code>20=A</code>, and <code>6</code> when no axis is selected | ||
| + | * <code>fn</code> is effectively always <code>0</code> here, because holding '''Fn''' sends the button down the shortcut path instead of the macro path | ||
| + | |||
| + | The source repo keeps those files under <code>~/linuxcnc-deltoro/nc_files/subs/</code>. On a customer machine, the installed path is <code>~/linuxcnc/nc_files/subs/</code>. | ||
| + | |||
| + | {| class="wikitable" | ||
| + | ! Macro slot | ||
| + | ! Trigger in this Python driver | ||
| + | ! Installed subroutine file | ||
| + | ! Current default file contents | ||
| + | |- | ||
| + | | '''Macro 1''' | ||
| + | | Feed+ button with '''Fn''' released | ||
| + | | <code>whb_macro_1.ngc</code> | ||
| + | | Placeholder message: <code>(MSG, whb_macro_1)</code> | ||
| + | |- | ||
| + | | '''Macro 2''' | ||
| + | | Feed- button with '''Fn''' released | ||
| + | | <code>whb_macro_2.ngc</code> | ||
| + | | Placeholder message: <code>(MSG, whb_macro_2)</code> | ||
| + | |- | ||
| + | | '''Macro 3''' | ||
| + | | Spindle+ button with '''Fn''' released | ||
| + | | <code>whb_macro_3.ngc</code> | ||
| + | | Placeholder message: <code>(MSG, whb_macro_3)</code> | ||
| + | |- | ||
| + | | '''Macro 4''' | ||
| + | | Spindle- button with '''Fn''' released | ||
| + | | <code>whb_macro_4.ngc</code> | ||
| + | | Placeholder message: <code>(MSG, whb_macro_4)</code> | ||
| + | |- | ||
| + | | '''Macro 5''' | ||
| + | | Machine Home button with '''Fn''' released | ||
| + | | <code>whb_macro_5.ngc</code> | ||
| + | | Placeholder message: <code>(MSG, whb_macro_5)</code> | ||
| + | |- | ||
| + | | '''Macro 6''' | ||
| + | | Safe Z button with '''Fn''' released | ||
| + | | <code>whb_macro_6.ngc</code> | ||
| + | | Placeholder message: <code>(MSG, whb_macro_6)</code> | ||
| + | |- | ||
| + | | '''Macro 7''' | ||
| + | | Work Home button with '''Fn''' released | ||
| + | | <code>whb_macro_7.ngc</code> | ||
| + | | Placeholder message: <code>(MSG, whb_macro_7)</code> | ||
| + | |- | ||
| + | | '''Macro 8''' | ||
| + | | Spindle Toggle button with '''Fn''' released | ||
| + | | <code>whb_macro_8.ngc</code> | ||
| + | | <code>M64 P1</code> | ||
| + | |- | ||
| + | | '''Macro 9''' | ||
| + | | Probe Z button with '''Fn''' released | ||
| + | | <code>whb_macro_9.ngc</code> | ||
| + | | <code>M65 P1</code> | ||
| + | |- | ||
| + | | '''Macro 10''' | ||
| + | | The driver's button-code-16 slot (historically the WHB04B ABS/REL button) | ||
| + | | <code>whb_macro_10.ngc</code> | ||
| + | | <code>M64 P0</code>, dwell 2 seconds, then <code>M65 P0</code> | ||
| + | |} | ||
| + | |||
| + | Practical consequence: if you want a bare pendant button to run custom logic, edit the matching <code>whb_macro_N.ngc</code> file. If you want '''Fn + that same button''' to do something different, that behavior lives in <code>whb04b.py</code>, not in the macro subroutine files. | ||
| + | |||
| + | = Single-Step Note (Important) = | ||
| + | |||
| + | '''Fn + Step''' uses LinuxCNC single-step behavior. | ||
| + | |||
| + | On some toolpaths, especially when the program is running under '''G64''' path blending, LinuxCNC may appear to advance more than one displayed line with a single step command. That is a LinuxCNC motion/planner behavior issue, not usually a switch-bounce problem in the pendant. | ||
| + | |||
| + | So: | ||
| + | * '''Fn + Step''' is still useful | ||
| + | * but it should not be treated as a guaranteed literal one-visible-line-at-a-time tool under every program condition | ||
| + | |||
| + | = Recommended Day-to-Day Workflow = | ||
| + | |||
| + | # Power the control up normally. | ||
| + | # Use '''Fn + Reset''' to turn machine power on if needed. | ||
| + | # Home the machine with '''Fn + Machine Home'''. | ||
| + | # Select '''X''', '''Y''', or '''Z'''. | ||
| + | # Use '''STEP''' mode for precise setup work. | ||
| + | # Use '''CONT''' mode for larger manual moves. | ||
| + | # Use '''Fn + Safe Z''' before moving around fixtures if you want a quick Z retract. | ||
| + | # Use '''Fn + Work Home''' when you want to return to the active work zero in X/Y after retracting Z. | ||
| + | # Use the bare macro buttons only if you intentionally want to run the matching <code>whb_macro_N.ngc</code> file. | ||
| + | # Use '''Start''' / '''Stop''' for normal program run control. | ||
| + | # Reserve '''Reset''' for true stop / E-stop situations. | ||
| + | |||
| + | = Configuration Notes = | ||
| + | |||
| + | This page reflects the PROBOTIX configuration that was updated during the week of '''June 26-30, 2026'''. | ||
| + | |||
| + | Important implementation notes for this specific setup: | ||
| + | * The active pendant path is the '''Python driver''' (<code>whb04b.py</code>), not the older alternate HAL-only approach. | ||
| + | * '''STEP / CONT''' behavior was intentionally configured so the pendant starts in '''STEP''' mode. | ||
| + | * Macro subroutines are dispatched directly from the Python driver as <code>O<whb_macro_N> call [axis] [fn]</code>. | ||
| + | * The current installed macro files are a mix of placeholders and simple digital-output actions, so verify the matching <code>whb_macro_N.ngc</code> file before promising customer-visible behavior. | ||
| + | |||
| + | = Related Pages = | ||
| + | |||
| + | * [[Jog Pendants]] | ||
| + | * [[Homing, Work Offsets, & Touching-off]] | ||
| + | * [[Machine Maintenance]] | ||
| + | * [[G-Code Files]] | ||
Latest revision as of 12:37, 1 July 2026
WHB04B Pendant
This page documents the current PROBOTIX LinuxCNC WHB04B wireless pendant configuration used on the newer Python-driver setup.
| Item | Behavior on this configuration |
|---|---|
| Supported axes | X, Y, Z (the driver sees the A selector, but the current PROBOTIX HAL file only wires X/Y/Z jogging) |
| Jog mode at startup | STEP |
| Jog style | STEP = incremental jogs, CONT = velocity jogs |
| Program control | Start = start / pause / resume, Stop = abort |
| Machine power | Fn + Reset toggles machine power on/off |
| Macro buttons | Bare macro-button presses call whb_macro_1 through whb_macro_10; holding Fn repurposes those same buttons for overrides and machine actions |
| Re-home all axes | Fn + Machine Home |
| Go to machine-safe Z | Fn + Safe Z |
| Go to work X0 Y0 | Fn + Work Home |
| Feed override step | 10% per press |
| Spindle override step | 10% per press |
| ⚠ | Important behavior notes
|
Contents
Basic Use
1) Select the axis
Use the axis selector on the pendant to choose X, Y, or Z.
Note: the driver exposes an A selector pin, but the current PROBOTIX whb04b.hal file only wires X/Y/Z jog enable and jog counts.
2) Choose jog mode
Use the orange STEP and CONT buttons to choose how the handwheel behaves.
STEP mode
In STEP mode, the handwheel moves the selected axis in discrete increments.
Use this for:
- Touching off
- Sneaking up on an edge
- Fine position adjustments
- Careful setup work
CONT mode
In CONT mode, the handwheel acts like a continuous jog command. Jog speed follows the pendant's rotary percentage setting.
Use this for:
- Longer moves
- Fast manual positioning
- General jogging around the table
Default at startup: the current configuration starts in STEP mode.
3) Set the jog amount / speed
The rotary selector affects jogging differently depending on mode:
- In STEP mode, it sets the jog increment.
- In CONT mode, it sets the jog velocity percentage.
4) Turn the handwheel
Turn the handwheel to jog the selected axis.
- In STEP mode, each wheel movement commands incremental motion.
- In CONT mode, wheel motion commands continuous jogging at the selected speed.
Program Control Buttons
Start
The Start button is context-sensitive:
- If no program is running, it starts the currently loaded program from the beginning.
- If a program is running, it pauses the program.
- If a program is paused, it resumes the program.
Stop
The Stop button aborts the running program.
Use this when you want to stop the job without hitting E-stop.
Reset
On this pendant configuration, Reset by itself triggers an E-stop request.
That means it should be treated like a serious stop action, not like a casual reset/clear button.
Function (Fn) Shortcuts
Hold the Fn button while pressing the second button.
| Fn Combination | Action | Notes |
|---|---|---|
| Fn + Reset | Toggle machine power ON/OFF | If the machine is on, it turns it off. If it is off, it requests machine-on. |
| Fn + Step | Single-step a program in AUTO | Useful when paused or step-testing. See note below about G64. |
| Fn + Feed+ | Increase feed override | 10% per press |
| Fn + Feed- | Decrease feed override | 10% per press |
| Fn + Spindle+ | Increase spindle override | 10% per press |
| Fn + Spindle- | Decrease spindle override | 10% per press |
| Fn + Machine Home | Home all axes | Performs a full re-home sequence |
| Fn + Safe Z | Send Z to machine safe position | Executes G0 G53 Z0
|
| Fn + Work Home | Go to work zero in X/Y after lifting Z | Executes machine-safe Z first, then G0 X0 Y0 in the current work coordinate system
|
| Fn + Spindle Toggle | Toggle spindle ON/OFF | When turning back on, it uses the current commanded spindle speed |
| Fn + Probe Z | Not configured | Currently displays Probe-Z Not Configured |
Macro Buttons
The current Python driver does not use a separate HAL-side macro map. Instead, when Fn is not held, ten WHB04B button codes are treated as macro slots named macro1 through macro10.
When one of those buttons is pressed, the driver only launches the macro if:
- LinuxCNC is in INTERP_IDLE
- the previous macro thread is no longer running
- the button state changed since the last USB packet
When a macro does launch, the driver switches to MDI mode and runs:
O<whb_macro_N> call [axis] [fn]
Where:
-
Nis the macro number from 1 to 10 -
axisis the raw selector value from the pendant:17=X,18=Y,19=Z,20=A, and6when no axis is selected -
fnis effectively always0here, because holding Fn sends the button down the shortcut path instead of the macro path
The source repo keeps those files under ~/linuxcnc-deltoro/nc_files/subs/. On a customer machine, the installed path is ~/linuxcnc/nc_files/subs/.
| Macro slot | Trigger in this Python driver | Installed subroutine file | Current default file contents |
|---|---|---|---|
| Macro 1 | Feed+ button with Fn released | whb_macro_1.ngc
|
Placeholder message: (MSG, whb_macro_1)
|
| Macro 2 | Feed- button with Fn released | whb_macro_2.ngc
|
Placeholder message: (MSG, whb_macro_2)
|
| Macro 3 | Spindle+ button with Fn released | whb_macro_3.ngc
|
Placeholder message: (MSG, whb_macro_3)
|
| Macro 4 | Spindle- button with Fn released | whb_macro_4.ngc
|
Placeholder message: (MSG, whb_macro_4)
|
| Macro 5 | Machine Home button with Fn released | whb_macro_5.ngc
|
Placeholder message: (MSG, whb_macro_5)
|
| Macro 6 | Safe Z button with Fn released | whb_macro_6.ngc
|
Placeholder message: (MSG, whb_macro_6)
|
| Macro 7 | Work Home button with Fn released | whb_macro_7.ngc
|
Placeholder message: (MSG, whb_macro_7)
|
| Macro 8 | Spindle Toggle button with Fn released | whb_macro_8.ngc
|
M64 P1
|
| Macro 9 | Probe Z button with Fn released | whb_macro_9.ngc
|
M65 P1
|
| Macro 10 | The driver's button-code-16 slot (historically the WHB04B ABS/REL button) | whb_macro_10.ngc
|
M64 P0, dwell 2 seconds, then M65 P0
|
Practical consequence: if you want a bare pendant button to run custom logic, edit the matching whb_macro_N.ngc file. If you want Fn + that same button to do something different, that behavior lives in whb04b.py, not in the macro subroutine files.
Single-Step Note (Important)
Fn + Step uses LinuxCNC single-step behavior.
On some toolpaths, especially when the program is running under G64 path blending, LinuxCNC may appear to advance more than one displayed line with a single step command. That is a LinuxCNC motion/planner behavior issue, not usually a switch-bounce problem in the pendant.
So:
- Fn + Step is still useful
- but it should not be treated as a guaranteed literal one-visible-line-at-a-time tool under every program condition
Recommended Day-to-Day Workflow
- Power the control up normally.
- Use Fn + Reset to turn machine power on if needed.
- Home the machine with Fn + Machine Home.
- Select X, Y, or Z.
- Use STEP mode for precise setup work.
- Use CONT mode for larger manual moves.
- Use Fn + Safe Z before moving around fixtures if you want a quick Z retract.
- Use Fn + Work Home when you want to return to the active work zero in X/Y after retracting Z.
- Use the bare macro buttons only if you intentionally want to run the matching
whb_macro_N.ngcfile. - Use Start / Stop for normal program run control.
- Reserve Reset for true stop / E-stop situations.
Configuration Notes
This page reflects the PROBOTIX configuration that was updated during the week of June 26-30, 2026.
Important implementation notes for this specific setup:
- The active pendant path is the Python driver (
whb04b.py), not the older alternate HAL-only approach. - STEP / CONT behavior was intentionally configured so the pendant starts in STEP mode.
- Macro subroutines are dispatched directly from the Python driver as
O<whb_macro_N> call [axis] [fn]. - The current installed macro files are a mix of placeholders and simple digital-output actions, so verify the matching
whb_macro_N.ngcfile before promising customer-visible behavior.
