Skip to content

G83 and other drilling modes #765

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 233 commits into
base: v0_8
Choose a base branch
from
Open

G83 and other drilling modes #765

wants to merge 233 commits into from

Conversation

elPakka
Copy link

@elPakka elPakka commented Jul 17, 2015

No description provided.

chamnit and others added 30 commits November 25, 2012 22:02
- Brand-new stepper algorithm. Based on the Pramod Ranade inverse time
algorithm, but modified to ensure step events are exact. Currently
limited to about 15kHz step rates, much more to be done to enable 30kHz
again.

- Removed Timer1. Stepper algorithm now uses Timer0 and Timer2.

- Much improved step generation during accelerations. Smoother. Allows
much higher accelerations (and speeds) than before on the same machine.

- Cleaner algorithm that is more easily portable to other CPU types.

- Streamlined planner calculations. Removed accelerate_until and
final_rate variables from block buffer since the new stepper algorithm
is that much more accurate.

- Improved planner efficiency by about 15-20% during worst case
scenarios (arcs).

- New config.h options to tune new stepper algorithm.
…t to 30kHz.

- Planner execute speed has been more than halved from 4ms to 1.9ms
when computing a plan for a single line segment during arc generation.
This means that Grbl can now run through an arc (or complex curve)
twice as fast as before without starving the buffer. For 0.1mm arc
segments, this means about the theoretical feed rate limit is about
3000mm/min for arcs now.

- Increased the Ranade timer frequency to 30kHz, as there doesn't seem
to be any problems with increasing the frequency. This means that the
maximum step frequency is now back at 30kHz.

- Added Zen Toolworks 7x7 defaults.
- Oops! Misplace an if-then statement. Should work as advertised now.
(Hopefully)
- Oops again. Thought the new planner changes made things much better,
but there was a bug. Improvements we on the order of 20% execution time
reduction, rather than half. The increase to 30kHz Ranade timer
frequency also increased the overall overhead, so the total planner
change? Zero. But, it's still better.
- Improved planner execution speed by 5% or more. Re-factored most of
the calculations in terms of the square of velocity. This removed a lot
of sqrt() calculations for every planner_recalculate.
In light of the downloads section in Github being removed, added a
builds folder for all of the .hex files. Hopefully these won't be
removed either.
…eedrate overrides.

NOTE: This push is a work-in-progress and there are known bugs that
need to be fixed, like homing acceleration being incompatible. Released
for testing. Settings will definitely be overwritten, as new settings
were needed.

- Acceleration independence installed in planner. Each axis can now
have different accelerations and Grbl will maximize the accelerations
depending on the direction its moving. Very useful for users like on
the ShapeOko with vastly different Z-axis properties.

- More planner optimizations and re-factoring. Slightly improved some
of the older calculations, but new acceleration calculations offset
these improvements. Overall no change in processing speed.

- Removed planner nominal length checks. It was arguable whether or not
this improved planner efficiency, especially in the worst case scenario
of arcs.

- Updated readme and changed to markdown format.
…iling steps. Timer0 disable fix.

- Maximum velocity for each axis is now configurable in settings. All
rapids/seek move at these maximums. All feed rates(including rapids)
may be limited and scaled down so that no axis does not exceed their
limits.

- Moved around auto-cycle start. May change later, but mainly to ensure
the planner buffer is completely full before cycle starting a streaming
program. Otherwise it should auto-start when there is a break in the
serial stream.

- Reverted old block->max_entry_speed_sqr calculations. Feedrate
overrides not close to ready at all.

- Fixed intermittent slow trailing steps for some triangle velocity
profile moves. The acceleration tick counter updating was corrected to
be exact for that particular transition. Should be ok for normal
trapezoidal profiles.

- Fixed the Timer0 disable after a step pulse falling edge. Thanks
@blinkenlight!
…ounter variable type corrected.

- Arc mm_per_segment parameter was removed and replaced with an
arc_tolerance parameter, which scales all arc segments automatically to
radius, such that the line segment error doesn't exceed the tolerance.
Significantly improves arc performance through larger radius arc,
because the segments are much longer and the planner buffer has more to
work with.

- Moved n_arc correction from the settings to config.h. Mathematically
this doesn't need to be a setting anymore, as the default config value
will work for all known CNC applications. The error does not accumulate
as much anymore, since the small angle approximation used by the arc
generation has been updated to a third-order approximation and how the
line segment length scale with radius and tolerance now. Left in
config.h for extraneous circumstances.

- Corrected the st.ramp_count variable (acceleration tick counter) to a
8-bit vs. 32-bit variable. Should make the stepper algorithm just a
touch faster overall.
- Returned the max step rate to 30kHz. The new arc algorithm works uses
so much less CPU overhead, because the segments are longer, that the
planner has no problem computing through them.

- Fixed an issue with the acceleration independence scaling. Should now
work with accelerations above 400mm/sec^2 or so.

- Updated README
- Changed some names up and removed a plan_reset() function that is
never used.
Replace some constants with N_AXIS.
code very messy but tested
These changes include a path separator fix and the removal of --gc-sections which causes ld failures, and is not needed on a pc.

This patch also changes how a compiler is selected.  The makefile will now select the system compiler , which should work fine
under mingw and linux.
Fix sim makefile so it works on mac
ontop of the edge planner
examples run byte for byte identical old and new version
New planner commits merge into dev branch.
the stepper interrupt is only halted when necessary and for the shortest
time possible (8% cycle time)
chamnit and others added 29 commits March 15, 2015 22:03
- Apparently inverse time motion were not working for quite some time.
Goes to show how many people actually use it. The calculation was bad
and is now fixed in this update. It should now work correctly.

- `;` comment type is now supported. This is standard on LinuxCNC and
common on 3d printers. It was previously not supported due to not
existing in the NIST standard, which is out-dated.

- New compile-option to ECHO the line received. This should help users
experiencing very weird problems and help diagnose if there is
something amiss in the communication to Grbl.

- New compile-option to use the spindle direction pin D13 as a spindle
enable pin with PWM spindle speed on D11. This feature has been
requested often from the laser cutter community. Since spindle
direction isn’t really of much use, it seemed like good good trade.
Note that M4 spindle enable counter-clock-wise support is removed for
obvious reasons, while M3 and M5 still work.
- Installed a compile-option for inverting the spindle enable pin for
certain electronics boards users have reported needing this.
- Commit history added to repo, as an easier way for people to see view
the changes over time.

- Grbl logo copyright license added. All rights reserved with regards
to the Grbl logo.

- G2/3 full circles would sometime not execute. The problem was due to
numerical round-off of a trig calculation. Added a machine epsilon
define to help detect and correct for this problem. Tested and should
not effect general operation of arcs.
- The limit pin reporting wasn’t working correctly due to calling the
wrong similarly-named function. Verified to be working now.
- Critical fix for M0 program pause. Due to its recent change, it would
cause Grbl to suspend but wouldn’t notify the user of why Grbl was not
doing anything. The state would show IDLE and a cycle start would
resume it. Grbl now enters a HOLD state to better indicate the state
change.

- Critical fix for M2 and M30 program end. As with M0, the state
previously would show IDLE while suspended. Grbl now does not suspend
upon program end and leaves job control to the GUI. Grbl simply reports
a `[Pgm End]` as a feedback message and resets certain g-code modes.

- M2/30 g-code reseting fix. Previously Grbl would soft-reset after an
M2/30, but this was not complaint to the (linuxcnc) g-code standard. It
simply resets [G1,G17,G90,G94,G40,G54,M5,M9,M48] and keeps all other
modes the same.

- M0/M2/M30 check-mode fix. It now does not suspend the machine during
check-mode.

- Minor bug fix related to commands similar to G90.1, but not G90.1,
not reporting an unsupported command.

- Homing cycle refactoring. To help reduce the chance of users
misunderstanding their limit switch wiring, Grbl only moves a short
distance for the locate cycles only. In addition, the homing cycle
pulls-off the limit switch by the pull-off distance to re-engage and
locate home. This should improve its accuracy.

- HOMING_FORCE_ORIGIN now sets the origin to the pull-off location,
rather than where the limit switch was triggered.

- Updated default junction deviation to 0.01mm. Recent tests showed
that this improves Grbl’s cornering behavior a bit.

- Added the ShapeOko3 defaults.

- Added new feedback message `[Pgm End]` for M2/30 notification.

- Limit pin reporting is now a $10 status report option. Requested by
OEMs to help simplify support troubleshooting.
Makes comparison, addition of new ones easier
Moving defaults to individual files in subdirectory
- Updated new homing cycle to error out when a pull-off motion detects
the limit is still active.

- Created a limits_get_state() function to centralize it. It reports
state as a bit-wise booleans according to axis numbering.

- Updated the print uint8 functions. Generalized it to allow both base2
and base10 printouts, while allowing base2 prints with N_AXIS digits
for limit state status reports. Doing this saved about 100bytes of
flash as well.

- Applied CoreXY status reporting bug fix by @phd0. Thanks!
- Moved cpu_map files to a cpu_map directory, like the defaults file
organization.
- CoreXY motions were moving to the negative value of the intended
target. Now fixed.
Otherwise compilation fails on linux, or other case sensitive systems

Signed-off-by: Michel Pollet <[email protected]>
- Added X-Carve 500mm and 1000mm default files.

- Tweaked all default files. Removed obsolete AUTO_START and updated
some JUNCTION_DEVIATION defaults after testing showed these needed to
be reduced slightly.
- I’m now officially annoyed.
- G61 exact path is the Grbl default path control mode, so it’s now
added as a supported g-code.
- New restore setting defaults command. Only wipes ‘$$’ setting in
EEPROM and reloads them based on the defaults used when Grbl was
compiled. Used with a `$RST` command

NOTE: `$RST` is intentionally not listed in the Grbl ‘$’ help message.
- Tweaked the previous EEPROM restore implementation and added new
functionality.

- `$RST=$` restores the `$$` grbl settings back to firmware defaults,
which are set when compiled.

- `$RST=#` restores the `$#` parameters in EEPROM. At times it’s useful
to clear these and start over, rather than manually writing each entry.

-`$RST=*` wipe all of the data in EEPROM that Grbl uses and restores
them to defaults. This includes `$$` settings, `$#` parameters, `$N`
startup lines, and `$i` build info string.

NOTE: This doesn’t write zeros throughout the EEPROM. It only writes
where Grbl looks for data. For a complete wipe, please use the Arduino
IDE’s EEPROM clear example.

- Refactored the restore and wipe functions in settings.c to
accommodate the new commands.
- `$RST=#` was not wiping the G30 positions from EEPROM. Minor but now
fixed.
@antoniosap
Copy link

G83 macro, now, is processed in G0/G1 from front end as bCNC

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.