Repository navigation
Conversation
Implement User/RML-1 Z probing from captured Roland VPanel USB traffic. Check sensor and machine readiness, poll live motion status, refresh the User origin after completion, and report unverified outcomes on failure or cancellation. Block competing commands during the cycle. Add hold-to-jog for standard terminals using keyboard auto-repeat and a 200 ms release timeout, with native terminal release events when available. Pair each pulse size with a constant feed: 0.01/6, 0.1/60, 1/600, and 5 mm/3000 mm-min. Default to 5 mm, expose the current pulse/feed, remove the independent speed selector and application ramp, and clarify the Z controls as a(up)/z(down). Resolve Move-To origins and numeric targets in the selected coordinate system while preserving omitted axes. Keep preview in machine coordinates, reject failed origin reads, and hold absolute-move operation brackets open until motion ends. Compose dialog overlays and the background in one curses update to eliminate flicker. Document the vendor protocol and add captured-status replay, packet, coordinate-conversion, cancellation, repeat-timeout and interlock tests. Pin setuptools below 81 for the existing pyhershey/pkg_resources dependency. Validation: 154 tests passed, one existing Python-3.12 text-rendering test skipped, and curses PTY smoke checks passed. The operator confirmed jogging, Move-To, and Z probing on the physical MDX-40A.
Add MDX-40A Z probing and refine interactive motion controls
|
HI @btingle thanks for this. I have soldered up a replacement cable for my Z-height probe so should be able to verify it works. I have not yet tried to decode the stored Z-height sensor height (14mm?) I will try to get that figured out in the preferences dialog code. |
Mine is 15.1mm high. Calipers work well enough here :) Edit: oh I see- you need to store this value (whatever it is measured as) in the machine's configuration so it knows how to set zero... Did not implement that yet! |
|
The way the existing move command work is:
The machine sets those axis back to zero in the selected coordinate system. What is your model/firmware version shown on first connect? |
I was attempting to follow that procedure- but no matter which coordinate system I selected or what coordinates I set move-to wouldn’t do anything. So I had my chatgippity intercept move-tos from the actual vpanel application to understand how to fix. don’t know the model/firmware- probably mismatched from yours. Will check next time I’m at the machine. |
|
16:10:36.938 INFO rollingmill.usb: MDX-40A link bus=1 addr=2 serial='A' interface=0 Here is the device ID/firmware. |
|
Looks like you are on a newer firmware 1.7, mine is 1.5: I wonder if Gcode/RML/Auto mode makes a difference, and/or the workspaces being used. I will have a play around with the Z0 sensor code and see how it works. |
Press b, confirm with Y, and the firmware runs its Z0 sensor cycle for the User (RML-1) coordinate system, based on a captured VPanel session (SET 0x3902 with the 0x2001 sensor pre-checks). The TUI keeps polling during the cycle, Esc requests a stop, and any cancelled/lost/timed-out cycle is reported as unverified. Extracted from the Z-probe parts of PR #3 by btingle (probing.py, tests, docs, decode entries and the TUI hooks); the jogging and move-to changes in that PR are left out. Co-authored-by: Chris Shucksmith <chris@shucksmith.co.uk> Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Press b, confirm with Y, and the firmware runs its Z0 sensor cycle for the User (RML-1) coordinate system, based on a captured VPanel session (SET 0x3902 with the 0x2001 sensor pre-checks). The TUI keeps polling during the cycle, Esc requests a stop, and any cancelled/lost/timed-out cycle is reported as unverified. Extracted from the Z-probe parts of PR #3 by btingle (probing.py, tests, docs, decode entries and the TUI hooks); the jogging and move-to changes in that PR are left out. Co-authored-by: Chris Shucksmith <chris@shucksmith.co.uk> Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Press b, confirm with Y, and the firmware runs its Z0 sensor cycle for the User (RML-1) coordinate system, based on a captured VPanel session (SET 0x3902 with the 0x2001 sensor pre-checks). The TUI keeps polling during the cycle, Esc requests a stop, and any cancelled/lost/timed-out cycle is reported as unverified. Extracted from the Z-probe parts of PR #3 by btingle (probing.py, tests, docs, decode entries and the TUI hooks); the jogging and move-to changes in that PR are left out. Co-authored-by: Chris Shucksmith <chris@shucksmith.co.uk> Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Press b, confirm with Y, and the firmware runs its Z0 sensor cycle for the User (RML-1) coordinate system, based on a captured VPanel session (SET 0x3902 with the 0x2001 sensor pre-checks). The TUI keeps polling during the cycle, Esc requests a stop, and any cancelled/lost/timed-out cycle is reported as unverified. Extracted from the Z-probe parts of PR #3 by btingle (probing.py, tests, docs, decode entries and the TUI hooks); the jogging and move-to changes in that PR are left out. Co-authored-by: Chris Shucksmith <chris@shucksmith.co.uk> Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
@btingle PR #8 took your Z-origin sensor probe work and gave it a bit of polish, added ability to read/set the probe height (mine measures 15.030mm). I've verified in hardware that this round trips, and the offset works for the Gcode workspaces too, nice way to set the machine. Meanwhile I have merged code to re/write the 'machine config' ie. NC mode, RML-1 mode or Auto, plus the NC settings under the The jogging changes are a bit tricky as I sometimes use the mill for manual cutting work, where I slow the feed right down to cutting speed, start the spindle with I've still got no clue why the 'Move To' dialog doesn't work for you, I will do a bit more testing. Thanks for your kind words. |
I like this project because the Vpanel download is a bitch and a half to find, and this is a nice open source alternative. But it was missing some crucial features, so I have implemented them here.
The jogging works like vpanel- a single press moves it by the pulse amount (options being 5mm, 1mm, 0.1mm, 0.01mm, like vpanel) with the 5mm pulse amount correspond to max feed when held down, and corresponding decreases in feed with decreasing pulse size. The old mode can be toggled back by pressing "J" in case the new jogging behavior is too spooky.
The "b" key now initiates the Z-probe cycle (with a "y" confirmation dialogue), have confirmed this to be working correctly.
I thought at first the "move-to" feature was only working in the machine coordinate system, but further investigation revealed it just straight up didn't do anything- so I had it fixed. Have tested that it works now.
So, to summarize:
Jogging
z-probing
fixed move-to
Cheers!