Welcome to Our Community

Some features disabled for guests. Register Today.

Ask Grbl CNC questions here.

Discussion in 'Control Software' started by Sonny Jeon, Aug 12, 2015.

  1. Crchisholm

    Crchisholm Well-Known
    Builder

    Joined:
    Nov 4, 2016
    Messages:
    29
    Likes Received:
    1
    David , the GRBL version is 0.9j
    The source is from the Arduino GRBL library and I did not specify any compiler options in the Arduino IDE.
    the board is from Amazon...
    https://www.amazon.com/gp/product/B06XSC52SL/ref=oh_aui_detailpage_o09_s00?ie=UTF8&psc=1
    No versioning or date on the board.

    The UNO that came with the board had a dead D8 pin, so I couldn't use it. The one I used instead is ...
    https://www.amazon.com/gp/product/B0168B39N4/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1
    I have bought a few of these boards and had good luck with them. I have a lagit UNO but didn't want to use it until I know everything else is good. (if at all)

    I could do without PWM if needed, but not sure how to go about "...but compile options can change it back "
     
  2. David the swarfer

    David the swarfer OpenBuilds Team
    Staff Member Moderator Builder

    Joined:
    Aug 6, 2013
    Messages:
    949
    Likes Received:
    425
    The clone boards have the CH340 usb chip on them which always has problems transmitting long streams of data, like when running a Gcode file (-:
    Swap to the legit Uno as soon as you can. (though the photo of the board in your second link appears to show a board with a 16u2 chip you have to check the board you have, around here the web photos seldom match what actually ships)
    All detailed in the GRBL Wiki that I linked to.

    Your board looks like the older ones which still expect the old pin numbering.
    Thus
    • Z+ limit is now the spindle PWM
    • SpnEn is now Z+ limit
     
  3. Crchisholm

    Crchisholm Well-Known
    Builder

    Joined:
    Nov 4, 2016
    Messages:
    29
    Likes Received:
    1
    Yes, I read the wiki and I understand what changed between v0.8 and v0.9. My issue is ...
    • I can not find a CNC shield that looks like it might be v0.9 compatable
    • The buildlog.net stepper shield does not seem to be sold any more in the US because of a lead problem
    • I have the raspberry pi hat, but it looks different than the one in the wiki, so I really don't know if it is v0.9 compatable. Unfortunately I bought it from eBay which is where a lot of developers get rid of their sunset-ted versions.
    • You mentioned something about changing back with "compiler options" if I didn't and I an unclear on how to do that.
    Sorry for all the questions. There are just so many deminsions to this whole thing and I am tired of chasing my tail because of one stupid thing that I missed.
     
  4. Peter Van Der Walt

    Peter Van Der Walt OpenBuilds Team
    Staff Member Moderator Resident Builder Project Maker Contest Winner! Builder

    Joined:
    Mar 1, 2017
    Messages:
    273
    Likes Received:
    211
    (; don't support the knockoff/fake support channels: The original designer of that shield, Protoneer, has updated his product years ago: Arduino CNC Shield – 100% GRBL Compatable - see version 3.1 upwards. Of course the chinese fakes couldn't care less - they keep producing the old version because people keep buying it. Do the right thing and buy one from the original designer: not only doing the right thing, but also entitling you to support directly from the man who made it :)
     
    Mark Carew and David the swarfer like this.
  5. Peter Van Der Walt

    Peter Van Der Walt OpenBuilds Team
    Staff Member Moderator Resident Builder Project Maker Contest Winner! Builder

    Joined:
    Mar 1, 2017
    Messages:
    273
    Likes Received:
    211
    Or just get an CNC xPRO V3 Controller Stepper Driver - drivers, connections, and GRBL all onboard ready to go. Learning curves can be frustrating - unless your time is worth $0 - are you really saving?
     
  6. Crchisholm

    Crchisholm Well-Known
    Builder

    Joined:
    Nov 4, 2016
    Messages:
    29
    Likes Received:
    1
    Not a social security friendly product.
     
  7. Glenn67

    Glenn67 Well-Known
    Builder

    Joined:
    Dec 26, 2016
    Messages:
    6
    Likes Received:
    1
    If I have posted this in the wrong spot please forgive me but I am not sure where to start.I'm having some trouble with my machine. I just finished it and have only run a few codes they were was successful until now. I am using an xProv2 controller and G code sender. I generated the codes in Fusion 360. I have set machine zero and than set work zero. I have set X zero Y zero on my work piece as the lower corner. The first operation is a center pocket hole ( centered in the work piece-10"x10" ). The bit starts at work piece zero zero, moves to machine zero while lowering the bit, than moves back toward the work piece but doesn't raise the spindle and will crash into the piece if I let it. I tried it without the wood in place and it raises the spindle when it gets to the center of the piece. I am almost certain I am doing something wrong but I cut this operation before and I haven't made any changes to the file. Long winded I know but any help is appreciated.
    Glenn
     
  8. David the swarfer

    David the swarfer OpenBuilds Team
    Staff Member Moderator Builder

    Joined:
    Aug 6, 2013
    Messages:
    949
    Likes Received:
    425
    The problem is in your Machine Coordinate System (also known as home) and your G28 settings.
    The controller uses several offset coordinate systems but they are all relative to machine coordinates.
    (Machine Position in UGS)
    The industry standard for machine co-ordinates is X at the positive end, Y at the positive end, and Z at the positive end (all the way UP away from the work, a safe place!).
    When GRBL turns on it sets the machine cordinates to 0,0,0, this means that you have to physically position the machine before turning on.

    G28 normally defaults to 0,0,0 which means that it is the same as the machine co-ordinates.
    A G28.1 command will set the offsets to wherever the machine is at the time. Thus machine 0,0,0 can be anywhere IF you are willing to always move the machine to a safe place (Z high!) and issue G28.1

    When you set your workpeice coordinates you are changing one of the 6 Work Coordinate Systems, selected by G54 to G59. (note that UGS only ever sets G54 offsets, which is why I prefer bCNC vlachoudis/bCNC)
    (Work Position in UGS)

    Basically, Machine Position for Z will always be negative when zeroed to your work.

    The default Fusion360 postprocessor expects that the machine is set up according to industry standards and the machine coordinates and G28 are correctly set.

    You can turn off the initial G28 in the post settings
    OR
    you can use this post
    swarfer/GRBL-Post-Processor
    which does not use G28. It still expects that machine 0,0,0 is set correctly for safe movement at machine Z=0
     
    HPB, GrayUK and Mark Carew like this.
  9. Mark Carew

    Mark Carew OpenBuilds Team
    Staff Member Moderator Resident Builder Project Maker Builder

    Joined:
    Jun 28, 2013
    Messages:
    2,134
    Likes Received:
    1,407
    This would make a great software resource David ;) Nice work man thank you for sharing this.
     
    David the swarfer and GrayUK like this.
  10. David the swarfer

    David the swarfer OpenBuilds Team
    Staff Member Moderator Builder

    Joined:
    Aug 6, 2013
    Messages:
    949
    Likes Received:
    425
    no, grbl will not do that. Gcode is all about co-ordinated movement.

    but, you can use multiple arduinos running GRBL, each one driving one axis.
    now you can give each controller a separate command to do what you want.
     
  11. Johannes1969

    Johannes1969 Well-Known
    Builder

    Joined:
    Oct 24, 2016
    Messages:
    25
    Likes Received:
    2
    Hi Sonny

    I am using GRBL 1.1 and I am building a laser cutter. The problem I have is that when running the homing cycle it is try to home the Z Axis.

    The problem is I do not use the Z Axis, is here any way to disable the Z axis so it does not try to home it?
     
  12. Peter Van Der Walt

    Peter Van Der Walt OpenBuilds Team
    Staff Member Moderator Resident Builder Project Maker Contest Winner! Builder

    Joined:
    Mar 1, 2017
    Messages:
    273
    Likes Received:
    211
    You can compile a custom Grbl build:

    in config.h: gnea/grbl you can change the homing behaviour(Link takes you to the lines you have to play with. comment the default, then uncomment the behavior you want).

    Then simply recompile (Its really easy): gnea/grbl (Link takes you to compilation instructions)

     
    Anthony Bolgar likes this.
  13. Johannes1969

    Johannes1969 Well-Known
    Builder

    Joined:
    Oct 24, 2016
    Messages:
    25
    Likes Received:
    2
    Hi

    I tried but not sure what to do, my programming skills isn't that great.

    Can you please help?
     
  14. Johannes1969

    Johannes1969 Well-Known
    Builder

    Joined:
    Oct 24, 2016
    Messages:
    25
    Likes Received:
    2
    Hi Where is the correct Config.h file I found one but it is in my documents folder. If I update it and upload it with Arduino then by GRBL software does not load properly. Then I have to use my Xloader to load my Hex File again. After loading the hex file GRBL load again but still the z axis try to Home.

    I also had a look in C:\Program Files (x86)\Arduino\libraries but no config.h file.
     
  15. Crchisholm

    Crchisholm Well-Known
    Builder

    Joined:
    Nov 4, 2016
    Messages:
    29
    Likes Received:
    1
    I am having an issue with the Z axis. When ever I try and get it set to Zero on the work piece, and I jog up or down, after the jog, it will "fall" about two mm. This is sort of random...about a third of the time, it does it and once it does it once, it might do it 4 or five time in a row, and then stop. It may be something to do with my settings, but I am not sure what. I tried playing with $0 and $1, but that had no effect. Here is my config data...

    $0=25
    $1=100
    $2=0
    $3=0
    $4=0
    $5=0
    $6=0
    $10=1
    $11=0.010
    $12=0.002
    $13=0
    $20=0
    $21=0
    $22=0
    $23=0
    $24=25.000
    $25=500.000
    $26=250
    $27=1.000
    $30=1000
    $31=0
    $32=0
    $100=100.030
    $101=80.136
    $102=387.705
    $110=500.000
    $111=500.000
    $112=500.000
    $120=10.000
    $121=10.000
    $122=10.000
    $130=200.000
    $131=200.000
    $132=200.000

    This happens in both bCNC and UGS, so I don't think it's the CNC software.
    Any ideas?
     
    #705 Crchisholm, Apr 26, 2018
    Last edited: Apr 27, 2018
  16. Anthony Bolgar

    Builder

    Joined:
    Jan 14, 2016
    Messages:
    304
    Likes Received:
    151
    You need to set the stepper motors to power always on. What is happeminingh is when the motors power off, the weight of the Z axcis actually makes the unpowered stepper motors rotate.
     
  17. Crchisholm

    Crchisholm Well-Known
    Builder

    Joined:
    Nov 4, 2016
    Messages:
    29
    Likes Received:
    1
    So, does that mean setting $1 = 255?
     
  18. Anthony Bolgar

    Builder

    Joined:
    Jan 14, 2016
    Messages:
    304
    Likes Received:
    151
    @Crchisholm Yup, $1=255 You have it set to power down the motors after 1/10th of a second after last command. This should fix your problem.

    @Ed Zacly What software are you using to generate your Gcode?
     
  19. Crchisholm

    Crchisholm Well-Known
    Builder

    Joined:
    Nov 4, 2016
    Messages:
    29
    Likes Received:
    1
    I am not sure how to power down after 1/10th sec. does that happen with $1=255, or is there something further I need to do.
    Typically I use fusion 360 or VCarve Pro.
     
  20. Anthony Bolgar

    Builder

    Joined:
    Jan 14, 2016
    Messages:
    304
    Likes Received:
    151
    The 1/10th is what you currently have, you need to set it to $1=255 which means it will never power down. Sorry if I confused you.
     
  21. Crchisholm

    Crchisholm Well-Known
    Builder

    Joined:
    Nov 4, 2016
    Messages:
    29
    Likes Received:
    1
    Thanks. I confuse very easily these days. Still trying to find a cheat-sheet for tic-tac-toe
     
  22. Crchisholm

    Crchisholm Well-Known
    Builder

    Joined:
    Nov 4, 2016
    Messages:
    29
    Likes Received:
    1
    Those were the magic words. No more drop. Has the added benefit of keeping the motors locked for tool changes when I get to that point.

    Thanks for the help.
     
  23. Anthony Bolgar

    Builder

    Joined:
    Jan 14, 2016
    Messages:
    304
    Likes Received:
    151
    Glad I could help, that's what this hobby is all about especially here at OpenBuilds!
     
  24. Ed Zacly

    Ed Zacly Well-Known
    Builder

    Joined:
    Jun 4, 2017
    Messages:
    29
    Likes Received:
    4
    Issue: Spindle cuts out after starting a file

    Greetings,

    I am hopping that somebody can respond to this...

    Trying to set up and calibrate my CNC router, as a first exercise I produced a simple Circle file, (attached) it appears to be execute perfectly, except for one thing, the spindle comes on and then shortly after the cycle starts, within 3 to 5 Seconds the spindle shuts off. I've googled this up and down and can't seem to find any information about it out on the internet...

    Any input would be really appreciated, I have been trying to solve this for the last week...

    Summary:

    • Checked all wiring for proper connections & voltage - No issues Spindle starts when file is started shuts off within 3-5 Seconds - The file continues to run with out stopping
    • No error codes - as per screen shot below
    • Spindle is turning clockwise from the operator position...
    • All G code executes as "OK" - No Alarms
    • Using an xPro Controler / GRBL 1.1
    • 400 watt Spindle: https://www.smw3d.com/quiet-cut-spindle-400w/ Operating RPM 0-12000 (as advertised by the manufacturer) Operating voltage 0-48VDC
    • Speed Control Board: https://www.smw3d.com/spindle-speed-control/ Control via PWM signal or pot
    • Grbl Panel used as interface




    Screen Shots:

    upload_2018-4-28_19-51-38.png upload_2018-4-28_19-51-55.png



    **** Connected to COM3 @ 115200 baud ****

    From: GRBL Panel
    Grbl 1.1f ['$' for help]
    >>> $$
    $0=10
    $1=255
    $2=0
    $3=5
    $4=1
    $5=0
    $6=0
    $10=1
    $11=0.020
    $12=0.002
    $13=0
    $20=1
    $21=1
    $22=1
    $23=0
    $24=25.000
    $25=1500.000
    $26=250
    $27=6.350
    $30=1000
    $31=1
    $32=0
    $100=197.938
    $101=200.200
    $102=199.400
    $110=2500.000
    $111=2500.000
    $112=2500.000
    $120=50.000
    $121=50.000
    $122=50.000
    $130=795.000
    $131=1200.000
    $132=69.000
    ok

    Circle Metric 100 mm Rev A .gcode

    T1
    G17
    G21
    G90
    G0Z20.3200
    G0X0.0000Y0.0000S12000M3
    G0X100.0000Y151.5875Z5.0800
    G1Z-2.5000F762.0
    G1X100.5758Y151.5843F2540.0
    G1X101.1541Y151.5746
    G1X101.7349Y151.5583
    G1X102.3180Y151.5354
    G1X102.9035Y151.5057
    G1X103.4911Y151.4692
    G1X104.0808Y151.4258
    G1X104.6724Y151.3755
    G1X105.2659Y151.3180
    G1X105.8611Y151.2535
    G1X106.4580Y151.1817
    G1X107.0563Y151.1026
    G1X107.6561Y151.0162
    G1X108.2571Y150.9224
    G1X108.8593Y150.8211
    G1X109.4625Y150.7122
    G1X110.0665Y150.5958
    G1X110.6713Y150.4717
    G1X111.2768Y150.3399
    G1X111.8827Y150.2003
    G1X112.4890Y150.0529
    G1X113.0954Y149.8977
    G1X113.7020Y149.7346
    G1X114.3084Y149.5635
    G1X114.9146Y149.3844
    G1X115.5205Y149.1974
    G1X116.1258Y149.0023
    G1X116.7304Y148.7992
    G1X117.3342Y148.5880
    G1X117.9370Y148.3687
    G1X118.5387Y148.1413
    G1X119.1390Y147.9058
    G1X119.7380Y147.6622
    G1X120.3353Y147.4104
    G1X120.9308Y147.1505
    G1X121.5244Y146.8825
    G1X122.1159Y146.6064
    G1X122.7051Y146.3222
    G1X123.2919Y146.0300
    G1X123.8761Y145.7296
    G1X124.4576Y145.4213
    G1X125.0362Y145.1049
    G1X125.6118Y144.7807
    G1X126.1841Y144.4484
    G1X126.7530Y144.1084
    G1X127.3184Y143.7604
    G1X127.8801Y143.4047
    G1X128.4379Y143.0413
    G1X128.9917Y142.6703
    G1X129.5413Y142.2916
    G1X130.0866Y141.9054
    G1X130.6275Y141.5118
    G1X131.1637Y141.1108
    G1X131.6951Y140.7025
    G1X132.2216Y140.2870
    G1X132.7430Y139.8643
    G1X133.2592Y139.4347
    G1X133.7700Y138.9981
    G1X134.2754Y138.5547
    G1X134.7751Y138.1046
    G1X135.2691Y137.6479
    G1X135.7571Y137.1847
    G1X136.2392Y136.7150
    G1X136.7150Y136.2392
    G1X137.1847Y135.7571
    G1X137.6479Y135.2691
    G1X138.1046Y134.7751
    G1X138.5547Y134.2754
    G1X138.9981Y133.7700
    G1X139.4347Y133.2592
    G1X139.8643Y132.7430
    G1X140.2870Y132.2216
    G1X140.7025Y131.6951
    G1X141.1108Y131.1637
    G1X141.5118Y130.6275
    G1X141.9054Y130.0866
    G1X142.2916Y129.5413
    G1X142.6703Y128.9917
    G1X143.0413Y128.4379
    G1X143.4047Y127.8801
    G1X143.7604Y127.3184
    G1X144.1084Y126.7530
    G1X144.4484Y126.1841
    G1X144.7807Y125.6118
    G1X145.1049Y125.0362
    G1X145.4213Y124.4576
    G1X145.7296Y123.8761
    G1X146.0300Y123.2919
    G1X146.3222Y122.7051
    G1X146.6064Y122.1159
    G1X146.8825Y121.5244
    G1X147.1505Y120.9308
    G1X147.4104Y120.3353
    G1X147.6622Y119.7380
    G1X147.9058Y119.1390
    G1X148.1413Y118.5387
    G1X148.3687Y117.9370
    G1X148.5880Y117.3342
    G1X148.7992Y116.7304
    G1X149.0023Y116.1258
    G1X149.1974Y115.5205
    G1X149.3844Y114.9146
    G1X149.5635Y114.3084
    G1X149.7346Y113.7020
    G1X149.8977Y113.0954
    G1X150.0529Y112.4890
    G1X150.2003Y111.8827
    G1X150.3399Y111.2768
    G1X150.4717Y110.6713
    G1X150.5958Y110.0665
    G1X150.7122Y109.4625
    G1X150.8211Y108.8593
    G1X150.9224Y108.2571
    G1X151.0162Y107.6561
    G1X151.1026Y107.0563
    G1X151.1817Y106.4580
    G1X151.2535Y105.8611
    G1X151.3180Y105.2659
    G1X151.3755Y104.6724
    G1X151.4258Y104.0808
    G1X151.4692Y103.4911
    G1X151.5057Y102.9035
    G1X151.5354Y102.3180
    G1X151.5583Y101.7349
    G1X151.5746Y101.1541
    G1X151.5843Y100.5758
    G1X151.5875Y100.0000
    G1X151.5843Y99.4242
    G1X151.5746Y98.8459
    G1X151.5583Y98.2651
    G1X151.5354Y97.6820
    G1X151.5057Y97.0965
    G1X151.4692Y96.5089
    G1X151.4258Y95.9192
    G1X151.3755Y95.3276
    G1X151.3180Y94.7341
    G1X151.2535Y94.1389
    G1X151.1817Y93.5420
    G1X151.1026Y92.9437
    G1X151.0162Y92.3439
    G1X150.9224Y91.7429
    G1X150.8211Y91.1407
    G1X150.7122Y90.5375
    G1X150.5958Y89.9335
    G1X150.4717Y89.3287
    G1X150.3399Y88.7232
    G1X150.2003Y88.1173
    G1X150.0529Y87.5110
    G1X149.8977Y86.9046
    G1X149.7346Y86.2980
    G1X149.5635Y85.6916
    G1X149.3844Y85.0854
    G1X149.1974Y84.4795
    G1X149.0023Y83.8742
    G1X148.7992Y83.2696
    G1X148.5880Y82.6658
    G1X148.3687Y82.0630
    G1X148.1413Y81.4613
    G1X147.9058Y80.8610
    G1X147.6622Y80.2620
    G1X147.4104Y79.6647
    G1X147.1505Y79.0692
    G1X146.8825Y78.4756
    G1X146.6064Y77.8841
    G1X146.3222Y77.2949
    G1X146.0300Y76.7081
    G1X145.7296Y76.1239
    G1X145.4213Y75.5424
    G1X145.1049Y74.9638
    G1X144.7807Y74.3882
    G1X144.4484Y73.8159
    G1X144.1084Y73.2470
    G1X143.7604Y72.6816
    G1X143.4047Y72.1199
    G1X143.0413Y71.5621
    G1X142.6703Y71.0083
    G1X142.2916Y70.4587
    G1X141.9054Y69.9134
    G1X141.5118Y69.3725
    G1X141.1108Y68.8363
    G1X140.7025Y68.3049
    G1X140.2870Y67.7784
    G1X139.8643Y67.2570
    G1X139.4347Y66.7408
    G1X138.9981Y66.2300
    G1X138.5547Y65.7246
    G1X138.1046Y65.2249
    G1X137.6479Y64.7309
    G1X137.1847Y64.2429
    G1X136.7150Y63.7608
    G1X136.2392Y63.2850
    G1X135.7571Y62.8153
    G1X135.2691Y62.3521
    G1X134.7751Y61.8954
    G1X134.2754Y61.4453
    G1X133.7700Y61.0019
    G1X133.2592Y60.5653
    G1X132.7430Y60.1356
    G1X132.2216Y59.7130
    G1X131.6951Y59.2975
    G1X131.1637Y58.8892
    G1X130.6275Y58.4882
    G1X130.0866Y58.0946
    G1X129.5413Y57.7084
    G1X128.9917Y57.3297
    G1X128.4379Y56.9587
    G1X127.8801Y56.5953
    G1X127.3184Y56.2396
    G1X126.7530Y55.8917
    G1X126.1841Y55.5516
    G1X125.6118Y55.2193
    G1X125.0362Y54.8951
    G1X124.4576Y54.5787
    G1X123.8761Y54.2704
    G1X123.2919Y53.9700
    G1X122.7051Y53.6778
    G1X122.1159Y53.3936
    G1X121.5244Y53.1175
    G1X120.9308Y52.8495
    G1X120.3353Y52.5896
    G1X119.7380Y52.3378
    G1X119.1390Y52.0942
    G1X118.5387Y51.8587
    G1X117.9370Y51.6313
    G1X117.3342Y51.4120
    G1X116.7304Y51.2008
    G1X116.1258Y50.9977
    G1X115.5205Y50.8026
    G1X114.9146Y50.6156
    G1X114.3084Y50.4365
    G1X113.7020Y50.2654
    G1X113.0954Y50.1023
    G1X112.4890Y49.9471
    G1X111.8827Y49.7997
    G1X111.2768Y49.6601
    G1X110.6713Y49.5283
    G1X110.0665Y49.4042
    G1X109.4625Y49.2878
    G1X108.8593Y49.1789
    G1X108.2571Y49.0776
    G1X107.6561Y48.9838
    G1X107.0563Y48.8974
    G1X106.4580Y48.8183
    G1X105.8611Y48.7465
    G1X105.2659Y48.6820
    G1X104.6724Y48.6245
    G1X104.0808Y48.5742
    G1X103.4911Y48.5308
    G1X102.9035Y48.4943
    G1X102.3180Y48.4646
    G1X101.7349Y48.4417
    G1X101.1541Y48.4254
    G1X100.5758Y48.4157
    G1X100.0000Y48.4125
    G1X99.4242Y48.4157
    G1X98.8459Y48.4254
    G1X98.2651Y48.4417
    G1X97.6820Y48.4646
    G1X97.0965Y48.4943
    G1X96.5089Y48.5308
    G1X95.9192Y48.5742
    G1X95.3276Y48.6245
    G1X94.7341Y48.6820
    G1X94.1389Y48.7465
    G1X93.5420Y48.8183
    G1X92.9437Y48.8974
    G1X92.3439Y48.9838
    G1X91.7429Y49.0776
    G1X91.1407Y49.1789
    G1X90.5375Y49.2878
    G1X89.9335Y49.4042
    G1X89.3287Y49.5283
    G1X88.7232Y49.6601
    G1X88.1173Y49.7997
    G1X87.5110Y49.9471
    G1X86.9046Y50.1023
    G1X86.2980Y50.2654
    G1X85.6916Y50.4365
    G1X85.0854Y50.6156
    G1X84.4795Y50.8026
    G1X83.8742Y50.9977
    G1X83.2696Y51.2008
    G1X82.6658Y51.4120
    G1X82.0630Y51.6313
    G1X81.4613Y51.8587
    G1X80.8610Y52.0942
    G1X80.2620Y52.3378
    G1X79.6647Y52.5896
    G1X79.0692Y52.8495
    G1X78.4756Y53.1175
    G1X77.8841Y53.3936
    G1X77.2949Y53.6778
    G1X76.7081Y53.9700
    G1X76.1239Y54.2704
    G1X75.5424Y54.5787
    G1X74.9638Y54.8951
    G1X74.3882Y55.2193
    G1X73.8159Y55.5516
    G1X73.2470Y55.8917
    G1X72.6816Y56.2396
    G1X72.1199Y56.5953
    G1X71.5621Y56.9587
    G1X71.0083Y57.3297
    G1X70.4587Y57.7084
    G1X69.9134Y58.0946
    G1X69.3725Y58.4882
    G1X68.8363Y58.8892
    G1X68.3049Y59.2975
    G1X67.7784Y59.7130
    G1X67.2570Y60.1356
    G1X66.7408Y60.5653
    G1X66.2300Y61.0019
    G1X65.7246Y61.4453
    G1X65.2249Y61.8954
    G1X64.7309Y62.3521
    G1X64.2429Y62.8153
    G1X63.7608Y63.2850
    G1X63.2850Y63.7608
    G1X62.8153Y64.2429
    G1X62.3521Y64.7309
    G1X61.8954Y65.2249
    G1X61.4453Y65.7246
    G1X61.0019Y66.2300
    G1X60.5653Y66.7408
    G1X60.1356Y67.2570
    G1X59.7130Y67.7784
    G1X59.2975Y68.3049
    G1X58.8892Y68.8363
    G1X58.4882Y69.3725
    G1X58.0946Y69.9134
    G1X57.7084Y70.4587
    G1X57.3297Y71.0083
    G1X56.9587Y71.5621
    G1X56.5953Y72.1199
    G1X56.2396Y72.6816
    G1X55.8917Y73.2470
    G1X55.5516Y73.8159
    G1X55.2193Y74.3882
    G1X54.8951Y74.9638
    G1X54.5787Y75.5424
    G1X54.2704Y76.1239
    G1X53.9700Y76.7081
    G1X53.6778Y77.2949
    G1X53.3936Y77.8841
    G1X53.1175Y78.4756
    G1X52.8495Y79.0692
    G1X52.5896Y79.6647
    G1X52.3378Y80.2620
    G1X52.0942Y80.8610
    G1X51.8587Y81.4613
    G1X51.6313Y82.0630
    G1X51.4120Y82.6658
    G1X51.2008Y83.2696
    G1X50.9977Y83.8742
    G1X50.8026Y84.4795
    G1X50.6156Y85.0854
    G1X50.4365Y85.6916
    G1X50.2654Y86.2980
    G1X50.1023Y86.9046
    G1X49.9471Y87.5110
    G1X49.7997Y88.1173
    G1X49.6601Y88.7232
    G1X49.5283Y89.3287
    G1X49.4042Y89.9335
    G1X49.2878Y90.5375
    G1X49.1789Y91.1407
    G1X49.0776Y91.7429
    G1X48.9838Y92.3439
    G1X48.8974Y92.9437
    G1X48.8183Y93.5420
    G1X48.7465Y94.1389
    G1X48.6820Y94.7341
    G1X48.6245Y95.3276
    G1X48.5742Y95.9192
    G1X48.5308Y96.5089
    G1X48.4943Y97.0965
    G1X48.4646Y97.6820
    G1X48.4417Y98.2651
    G1X48.4254Y98.8459
    G1X48.4157Y99.4242
    G1X48.4125Y100.0000
    G1X48.4157Y100.5758
    G1X48.4254Y101.1541
    G1X48.4417Y101.7349
    G1X48.4646Y102.3180
    G1X48.4943Y102.9035
    G1X48.5308Y103.4911
    G1X48.5742Y104.0808
    G1X48.6245Y104.6724
    G1X48.6820Y105.2659
    G1X48.7465Y105.8611
    G1X48.8183Y106.4580
    G1X48.8974Y107.0563
    G1X48.9838Y107.6561
    G1X49.0776Y108.2571
    G1X49.1789Y108.8593
    G1X49.2878Y109.4625
    G1X49.4042Y110.0665
    G1X49.5283Y110.6713
    G1X49.6601Y111.2768
    G1X49.7997Y111.8827
    G1X49.9471Y112.4890
    G1X50.1023Y113.0954
    G1X50.2654Y113.7020
    G1X50.4365Y114.3084
    G1X50.6156Y114.9146
    G1X50.8026Y115.5205
    G1X50.9977Y116.1258
    G1X51.2008Y116.7304
    G1X51.4120Y117.3342
    G1X51.6313Y117.9370
    G1X51.8587Y118.5387
    G1X52.0942Y119.1390
    G1X52.3378Y119.7380
    G1X52.5896Y120.3353
    G1X52.8495Y120.9308
    G1X53.1175Y121.5244
    G1X53.3936Y122.1159
    G1X53.6778Y122.7051
    G1X53.9700Y123.2919
    G1X54.2704Y123.8761
    G1X54.5787Y124.4576
    G1X54.8951Y125.0362
    G1X55.2193Y125.6118
    G1X55.5516Y126.1841
    G1X55.8917Y126.7530
    G1X56.2396Y127.3184
    G1X56.5953Y127.8801
    G1X56.9587Y128.4379
    G1X57.3297Y128.9917
    G1X57.7084Y129.5413
    G1X58.0946Y130.0866
    G1X58.4882Y130.6275
    G1X58.8892Y131.1637
    G1X59.2975Y131.6951
    G1X59.7130Y132.2216
    G1X60.1356Y132.7430
    G1X60.5653Y133.2592
    G1X61.0019Y133.7700
    G1X61.4453Y134.2754
    G1X61.8954Y134.7751
    G1X62.3521Y135.2691
    G1X62.8153Y135.7571
    G1X63.2850Y136.2392
    G1X63.7608Y136.7150
    G1X64.2429Y137.1847
    G1X64.7309Y137.6479
    G1X65.2249Y138.1046
    G1X65.7246Y138.5547
    G1X66.2300Y138.9981
    G1X66.7408Y139.4347
    G1X67.2570Y139.8643
    G1X67.7784Y140.2870
    G1X68.3049Y140.7025
    G1X68.8363Y141.1108
    G1X69.3725Y141.5118
    G1X69.9134Y141.9054
    G1X70.4587Y142.2916
    G1X71.0083Y142.6703
    G1X71.5621Y143.0413
    G1X72.1199Y143.4047
    G1X72.6816Y143.7604
    G1X73.2470Y144.1084
    G1X73.8159Y144.4484
    G1X74.3882Y144.7807
    G1X74.9638Y145.1049
    G1X75.5424Y145.4213
    G1X76.1239Y145.7296
    G1X76.7081Y146.0300
    G1X77.2949Y146.3222
    G1X77.8841Y146.6064
    G1X78.4756Y146.8825
    G1X79.0692Y147.1505
    G1X79.6647Y147.4104
    G1X80.2620Y147.6622
    G1X80.8610Y147.9058
    G1X81.4613Y148.1413
    G1X82.0630Y148.3687
    G1X82.6658Y148.5880
    G1X83.2696Y148.7992
    G1X83.8742Y149.0023
    G1X84.4795Y149.1974
    G1X85.0854Y149.3844
    G1X85.6916Y149.5635
    G1X86.2980Y149.7346
    G1X86.9046Y149.8977
    G1X87.5110Y150.0529
    G1X88.1173Y150.2003
    G1X88.7232Y150.3399
    G1X89.3287Y150.4717
    G1X89.9335Y150.5958
    G1X90.5375Y150.7122
    G1X91.1407Y150.8211
    G1X91.7429Y150.9224
    G1X92.3439Y151.0162
    G1X92.9437Y151.1026
    G1X93.5420Y151.1817
    G1X94.1389Y151.2535
    G1X94.7341Y151.3180
    G1X95.3276Y151.3755
    G1X95.9192Y151.4258
    G1X96.5089Y151.4692
    G1X97.0965Y151.5057
    G1X97.6820Y151.5354
    G1X98.2651Y151.5583
    G1X98.8459Y151.5746
    G1X99.4242Y151.5843
    G1X100.0000Y151.5875
    G0Z5.0800
    G0Z20.3200
    G0X0.0000Y0.0000
    M02
















    #709 Ed Zacly, Wednesday at 8:45 AM
     

    Attached Files:

  25. Crchisholm

    Crchisholm Well-Known
    Builder

    Joined:
    Nov 4, 2016
    Messages:
    29
    Likes Received:
    1
    And the controller is definitely copatable with GRBL 1.1? Reason I ask is that I got pretty frustrated with a cheap controller that was not compatible with anything more recent than GRBL 0.8 (when they did the pin swap of pins 11 and 12).
     
  26. Prometheus

    Builder

    Joined:
    Mar 21, 2015
    Messages:
    10
    Likes Received:
    0
    I have the Panucatt Gradus board and I have built a custom OpenBuilds C-Beam machine and I am having some issues (more like settings,parameters that need tweaked) and wanted to see if anyone could PLEASE help out?

    When I use Fusion 360 and post process (grbl IS selected), I open UGS to load file and prepare to start. I hit play and I keep getting the tool change T1 M6 error and I would like to know what I can do/change so that is NOT in my .nc files anymore. It is ANNOYING to have to open the file and delete it and save and then reload every time... Hope someone can give some advice. I would also like to have a set spot for tool change but have not figured that one out yet.

    TIA!
    Below is the config for Fusion 360 grbl post processing

    Code:
    /**
      Copyright (C) 2012-2016 by Autodesk, Inc.
      All rights reserved.
    
      Grbl post processor configuration.
    
      $Revision: 41865 5b08e4835c7b3f1cc833e8f4003c19d676f0ba4d $
      $Date: 2018-02-23 13:26:31 $
     
      FORKID {154F7C00-6549-4c77-ADE0-79375FE5F2AA}
    */
    
    description = "Grbl";
    vendor = "grbl";
    vendorUrl = "https://github.com/grbl/grbl/wiki";
    legal = "Copyright (C) 2012-2016 by Autodesk, Inc.";
    certificationLevel = 2;
    minimumRevision = 24000;
    
    longDescription = "Generic milling post for Grbl.";
    
    extension = "nc";
    setCodePage("ascii");
    
    capabilities = CAPABILITY_MILLING;
    tolerance = spatial(0.002, MM);
    
    minimumChordLength = spatial(0.01, MM);
    minimumCircularRadius = spatial(0.01, MM);
    maximumCircularRadius = spatial(1000, MM);
    minimumCircularSweep = toRad(0.01);
    maximumCircularSweep = toRad(180);
    allowHelicalMoves = true;
    allowedCircularPlanes = undefined; // allow any circular motion
    
    
    
    // user-defined properties
    properties = {
      writeMachine: true, // write machine
      writeTools: true, // writes the tools
      useG28: true, // disable to avoid G28 output for safe machine retracts - when disabled you must manually ensure safe retracts
      showSequenceNumbers: false, // show sequence numbers
      sequenceNumberStart: 10, // first sequence number
      sequenceNumberIncrement: 1, // increment for sequence numbers
      separateWordsWithSpace: true // specifies that the words should be separated with a white space
    };
    
    // user-defined property definitions
    propertyDefinitions = {
      writeMachine: {title:"Write machine", description:"Output the machine settings in the header of the code.", group:0, type:"boolean"},
      writeTools: {title:"Write tool list", description:"Output a tool list in the header of the code.", group:0, type:"boolean"},
      useG28: {title:"G28 Safe retracts", description:"Disable to avoid G28 output for safe machine retracts. When disabled, you must manually ensure safe retracts.", type:"boolean"},
      showSequenceNumbers: {title:"Use sequence numbers", description:"Use sequence numbers for each block of outputted code.", group:1, type:"boolean"},
      sequenceNumberStart: {title:"Start sequence number", description:"The number at which to start the sequence numbers.", group:1, type:"integer"},
      sequenceNumberIncrement: {title:"Sequence number increment", description:"The amount by which the sequence number is incremented by in each block.", group:1, type:"integer"},
      separateWordsWithSpace: {title:"Separate words with space", description:"Adds spaces between words if 'yes' is selected.", type:"boolean"}
    };
    
    var numberOfToolSlots = 9999;
    
    
    
    var mapCoolantTable = new Table(
      [9, 8],
      {initial:COOLANT_OFF, force:true},
      "Invalid coolant mode"
    );
    
    var gFormat = createFormat({prefix:"G", decimals:0});
    var mFormat = createFormat({prefix:"M", decimals:0});
    
    var xyzFormat = createFormat({decimals:(unit == MM ? 3 : 4)});
    var feedFormat = createFormat({decimals:(unit == MM ? 1 : 2)});
    var toolFormat = createFormat({decimals:0});
    var rpmFormat = createFormat({decimals:0});
    var secFormat = createFormat({decimals:3, forceDecimal:true}); // seconds - range 0.001-1000
    var taperFormat = createFormat({decimals:1, scale:DEG});
    
    var xOutput = createVariable({prefix:"X"}, xyzFormat);
    var yOutput = createVariable({prefix:"Y"}, xyzFormat);
    var zOutput = createVariable({prefix:"Z"}, xyzFormat);
    var feedOutput = createVariable({prefix:"F"}, feedFormat);
    var sOutput = createVariable({prefix:"S", force:true}, rpmFormat);
    
    // circular output
    var iOutput = createReferenceVariable({prefix:"I"}, xyzFormat);
    var jOutput = createReferenceVariable({prefix:"J"}, xyzFormat);
    var kOutput = createReferenceVariable({prefix:"K"}, xyzFormat);
    
    var gMotionModal = createModal({}, gFormat); // modal group 1 // G0-G3, ...
    var gPlaneModal = createModal({onchange:function () {gMotionModal.reset();}}, gFormat); // modal group 2 // G17-19
    var gAbsIncModal = createModal({}, gFormat); // modal group 3 // G90-91
    var gFeedModeModal = createModal({}, gFormat); // modal group 5 // G93-94
    var gUnitModal = createModal({}, gFormat); // modal group 6 // G20-21
    
    var WARNING_WORK_OFFSET = 0;
    
    // collected state
    var sequenceNumber;
    var currentWorkOffset;
    
    /**
      Writes the specified block.
    */
    function writeBlock() {
      if (properties.showSequenceNumbers) {
        writeWords2("N" + sequenceNumber, arguments);
        sequenceNumber += properties.sequenceNumberIncrement;
      } else {
        writeWords(arguments);
      }
    }
    
    function formatComment(text) {
      return "(" + String(text).replace(/[\(\)]/g, "") + ")";
    }
    
    /**
      Output a comment.
    */
    function writeComment(text) {
      writeln(formatComment(text));
    }
    
    function onOpen() {
      if (!properties.separateWordsWithSpace) {
        setWordSeparator("");
      }
    
      sequenceNumber = properties.sequenceNumberStart;
      writeln("%");
    
      if (programName) {
        writeComment(programName);
      }
      if (programComment) {
        writeComment(programComment);
      }
    
      // dump machine configuration
      var vendor = machineConfiguration.getVendor();
      var model = machineConfiguration.getModel();
      var description = machineConfiguration.getDescription();
    
      if (properties.writeMachine && (vendor || model || description)) {
        writeComment(localize("Machine"));
        if (vendor) {
          writeComment("  " + localize("vendor") + ": " + vendor);
        }
        if (model) {
          writeComment("  " + localize("model") + ": " + model);
        }
        if (description) {
          writeComment("  " + localize("description") + ": "  + description);
        }
      }
    
      // dump tool information
      if (properties.writeTools) {
        var zRanges = {};
        if (is3D()) {
          var numberOfSections = getNumberOfSections();
          for (var i = 0; i < numberOfSections; ++i) {
            var section = getSection(i);
            var zRange = section.getGlobalZRange();
            var tool = section.getTool();
            if (zRanges[tool.number]) {
              zRanges[tool.number].expandToRange(zRange);
            } else {
              zRanges[tool.number] = zRange;
            }
          }
        }
    
        var tools = getToolTable();
        if (tools.getNumberOfTools() > 0) {
          for (var i = 0; i < tools.getNumberOfTools(); ++i) {
            var tool = tools.getTool(i);
            var comment = "T" + toolFormat.format(tool.number) + "  " +
              "D=" + xyzFormat.format(tool.diameter) + " " +
              localize("CR") + "=" + xyzFormat.format(tool.cornerRadius);
            if ((tool.taperAngle > 0) && (tool.taperAngle < Math.PI)) {
              comment += " " + localize("TAPER") + "=" + taperFormat.format(tool.taperAngle) + localize("deg");
            }
            if (zRanges[tool.number]) {
              comment += " - " + localize("ZMIN") + "=" + xyzFormat.format(zRanges[tool.number].getMinimum());
            }
            comment += " - " + getToolTypeName(tool.type);
            writeComment(comment);
          }
        }
      }
    
      if ((getNumberOfSections() > 0) && (getSection(0).workOffset == 0)) {
        for (var i = 0; i < getNumberOfSections(); ++i) {
          if (getSection(i).workOffset > 0) {
            error(localize("Using multiple work offsets is not possible if the initial work offset is 0."));
            return;
          }
        }
      }
    
      // absolute coordinates and feed per min
      writeBlock(gAbsIncModal.format(90), gFeedModeModal.format(94));
      writeBlock(gPlaneModal.format(17));
    
      switch (unit) {
      case IN:
        writeBlock(gUnitModal.format(20));
        break;
      case MM:
        writeBlock(gUnitModal.format(21));
        break;
      }
    }
    
    function onComment(message) {
      writeComment(message);
    }
    
    /** Force output of X, Y, and Z. */
    function forceXYZ() {
      xOutput.reset();
      yOutput.reset();
      zOutput.reset();
    }
    
    /** Force output of X, Y, Z, and F on next output. */
    function forceAny() {
      forceXYZ();
      feedOutput.reset();
    }
    
    function onSection() {
      var insertToolCall = isFirstSection() ||
        currentSection.getForceToolChange && currentSection.getForceToolChange() ||
        (tool.number != getPreviousSection().getTool().number);
     
      var retracted = false; // specifies that the tool has been retracted to the safe plane
      var newWorkOffset = isFirstSection() ||
        (getPreviousSection().workOffset != currentSection.workOffset); // work offset changes
      var newWorkPlane = isFirstSection() ||
        !isSameDirection(getPreviousSection().getGlobalFinalToolAxis(), currentSection.getGlobalInitialToolAxis());
      if (insertToolCall || newWorkOffset || newWorkPlane) {
        var nextTool = getNextTool(tool.number);
        if (nextTool) {
          writeBlock("T" + toolFormat.format(nextTool.number));
        }
        // stop spindle before retract during tool change
        if (insertToolCall && !isFirstSection()) {
          onCommand(COMMAND_STOP_SPINDLE);
        }
    
        if (properties.useG28) {
          // retract to safe plane
          retracted = true;
          writeBlock(gFormat.format(28), gAbsIncModal.format(91), "Z" + xyzFormat.format(0)); // retract
          writeBlock(gAbsIncModal.format(90));
          zOutput.reset();
        }
      }
    
      writeln("");
     
      if (hasParameter("operation-comment")) {
        var comment = getParameter("operation-comment");
        if (comment) {
          writeComment(comment);
        }
      }
    
      if (insertToolCall) {
        retracted = true;
        onCommand(COMMAND_COOLANT_OFF);
    
        if (tool.number > numberOfToolSlots) {
          warning(localize("Tool number exceeds maximum value."));
        }
    
        writeBlock("T" + toolFormat.format(tool.number), mFormat.format(6));
        if (tool.comment) {
          writeComment(tool.comment);
        }
        var showToolZMin = false;
        if (showToolZMin) {
          if (is3D()) {
            var numberOfSections = getNumberOfSections();
            var zRange = currentSection.getGlobalZRange();
            var number = tool.number;
            for (var i = currentSection.getId() + 1; i < numberOfSections; ++i) {
              var section = getSection(i);
              if (section.getTool().number != number) {
                break;
              }
              zRange.expandToRange(section.getGlobalZRange());
            }
            writeComment(localize("ZMIN") + "=" + zRange.getMinimum());
          }
        }
      }
     
      if (insertToolCall ||
          isFirstSection() ||
          (rpmFormat.areDifferent(tool.spindleRPM, sOutput.getCurrent())) ||
          (tool.clockwise != getPreviousSection().getTool().clockwise)) {
        if (tool.spindleRPM < 1) {
          error(localize("Spindle speed out of range."));
        }
        if (tool.spindleRPM > 99999) {
          warning(localize("Spindle speed exceeds maximum value."));
        }
        writeBlock(
          sOutput.format(tool.spindleRPM), mFormat.format(tool.clockwise ? 3 : 4)
        );
      }
    
      // wcs
      if (insertToolCall) { // force work offset when changing tool
        currentWorkOffset = undefined;
      }
      var workOffset = currentSection.workOffset;
      if (workOffset == 0) {
        warningOnce(localize("Work offset has not been specified. Using G54 as WCS."), WARNING_WORK_OFFSET);
        workOffset = 1;
      }
      if (workOffset > 0) {
        if (workOffset > 6) {
          error(localize("Work offset out of range."));
          return;
        } else {
          if (workOffset != currentWorkOffset) {
            writeBlock(gFormat.format(53 + workOffset)); // G54->G59
            currentWorkOffset = workOffset;
          }
        }
      }
    
      forceXYZ();
    
      { // pure 3D
        var remaining = currentSection.workPlane;
        if (!isSameDirection(remaining.forward, new Vector(0, 0, 1))) {
          error(localize("Tool orientation is not supported."));
          return;
        }
        setRotation(remaining);
      }
    
      // set coolant after we have positioned at Z
      {
        var c = mapCoolantTable.lookup(tool.coolant);
        if (c) {
          writeBlock(mFormat.format(c));
        } else {
          warning(localize("Coolant not supported."));
        }
      }
    
      forceAny();
    
      var initialPosition = getFramePosition(currentSection.getInitialPosition());
      if (!retracted) {
        if (getCurrentPosition().z < initialPosition.z) {
          writeBlock(gMotionModal.format(0), zOutput.format(initialPosition.z));
        }
      }
    
      if (insertToolCall || retracted) {
        var lengthOffset = tool.lengthOffset;
        if (lengthOffset > numberOfToolSlots) {
          error(localize("Length offset out of range."));
          return;
        }
    
        gMotionModal.reset();
        writeBlock(gPlaneModal.format(17));
    
        if (!machineConfiguration.isHeadConfiguration()) {
          writeBlock(
            gAbsIncModal.format(90),
            gMotionModal.format(0), xOutput.format(initialPosition.x), yOutput.format(initialPosition.y)
          );
          writeBlock(gMotionModal.format(0), zOutput.format(initialPosition.z));
        } else {
          writeBlock(
            gAbsIncModal.format(90),
            gMotionModal.format(0),
            xOutput.format(initialPosition.x),
            yOutput.format(initialPosition.y),
            zOutput.format(initialPosition.z)
          );
        }
      } else {
        writeBlock(
          gAbsIncModal.format(90),
          gMotionModal.format(0),
          xOutput.format(initialPosition.x),
          yOutput.format(initialPosition.y)
        );
      }
    }
    
    function onDwell(seconds) {
      if (seconds > 99999.999) {
        warning(localize("Dwelling time is out of range."));
      }
      seconds = clamp(0.001, seconds, 99999.999);
      writeBlock(gFormat.format(4), "P" + secFormat.format(seconds));
    }
    
    function onSpindleSpeed(spindleSpeed) {
      writeBlock(sOutput.format(spindleSpeed));
    }
    
    var pendingRadiusCompensation = -1;
    
    function onRadiusCompensation() {
      pendingRadiusCompensation = radiusCompensation;
    }
    
    function onRapid(_x, _y, _z) {
      var x = xOutput.format(_x);
      var y = yOutput.format(_y);
      var z = zOutput.format(_z);
      if (x || y || z) {
        if (pendingRadiusCompensation >= 0) {
          error(localize("Radius compensation mode cannot be changed at rapid traversal."));
          return;
        }
        writeBlock(gMotionModal.format(0), x, y, z);
        feedOutput.reset();
      }
    }
    
    function onLinear(_x, _y, _z, feed) {
      // at least one axis is required
      if (pendingRadiusCompensation >= 0) {
        // ensure that we end at desired position when compensation is turned off
        xOutput.reset();
        yOutput.reset();
      }
      var x = xOutput.format(_x);
      var y = yOutput.format(_y);
      var z = zOutput.format(_z);
      var f = feedOutput.format(feed);
      if (x || y || z) {
        if (pendingRadiusCompensation >= 0) {
          error(localize("Radius compensation mode is not supported."));
          return;
        } else {
          writeBlock(gMotionModal.format(1), x, y, z, f);
        }
      } else if (f) {
        if (getNextRecord().isMotion()) { // try not to output feed without motion
          feedOutput.reset(); // force feed on next line
        } else {
          writeBlock(gMotionModal.format(1), f);
        }
      }
    }
    
    function onRapid5D(_x, _y, _z, _a, _b, _c) {
      error(localize("Multi-axis motion is not supported."));
    }
    
    function onLinear5D(_x, _y, _z, _a, _b, _c, feed) {
      error(localize("Multi-axis motion is not supported."));
    }
    
    function onCircular(clockwise, cx, cy, cz, x, y, z, feed) {
      // one of X/Y and I/J are required and likewise
     
      if (pendingRadiusCompensation >= 0) {
        error(localize("Radius compensation cannot be activated/deactivated for a circular move."));
        return;
      }
    
      var start = getCurrentPosition();
    
      if (isFullCircle()) {
        if (isHelical()) {
          linearize(tolerance);
          return;
        }
        switch (getCircularPlane()) {
        case PLANE_XY:
          writeBlock(gPlaneModal.format(17), gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), iOutput.format(cx - start.x, 0), jOutput.format(cy - start.y, 0), feedOutput.format(feed));
          break;
        case PLANE_ZX:
          writeBlock(gPlaneModal.format(18), gMotionModal.format(clockwise ? 2 : 3), zOutput.format(z), iOutput.format(cx - start.x, 0), kOutput.format(cz - start.z, 0), feedOutput.format(feed));
          break;
        case PLANE_YZ:
          writeBlock(gPlaneModal.format(19), gMotionModal.format(clockwise ? 2 : 3), yOutput.format(y), jOutput.format(cy - start.y, 0), kOutput.format(cz - start.z, 0), feedOutput.format(feed));
          break;
        default:
          linearize(tolerance);
        }
      } else {
        switch (getCircularPlane()) {
        case PLANE_XY:
          writeBlock(gPlaneModal.format(17), gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), zOutput.format(z), iOutput.format(cx - start.x, 0), jOutput.format(cy - start.y, 0), feedOutput.format(feed));
          break;
        case PLANE_ZX:
          writeBlock(gPlaneModal.format(18), gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), zOutput.format(z), iOutput.format(cx - start.x, 0), kOutput.format(cz - start.z, 0), feedOutput.format(feed));
          break;
        case PLANE_YZ:
          writeBlock(gPlaneModal.format(19), gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), zOutput.format(z), jOutput.format(cy - start.y, 0), kOutput.format(cz - start.z, 0), feedOutput.format(feed));
          break;
        default:
          linearize(tolerance);
        }
      }
    }
    
    var mapCommand = {
      COMMAND_STOP:0,
      COMMAND_END:2,
      COMMAND_SPINDLE_CLOCKWISE:3,
      COMMAND_SPINDLE_COUNTERCLOCKWISE:4,
      COMMAND_STOP_SPINDLE:5,
      COMMAND_COOLANT_ON:8,
      COMMAND_COOLANT_OFF:9
    };
    
    function onCommand(command) {
      switch (command) {
      case COMMAND_START_SPINDLE:
        onCommand(tool.clockwise ? COMMAND_SPINDLE_CLOCKWISE : COMMAND_SPINDLE_COUNTERCLOCKWISE);
        return;
      case COMMAND_LOCK_MULTI_AXIS:
        return;
      case COMMAND_UNLOCK_MULTI_AXIS:
        return;
      case COMMAND_BREAK_CONTROL:
        return;
      case COMMAND_TOOL_MEASURE:
        return;
      }
    
      var stringId = getCommandStringId(command);
      var mcode = mapCommand[stringId];
      if (mcode != undefined) {
        writeBlock(mFormat.format(mcode));
      } else {
        onUnsupportedCommand(command);
      }
    }
    
    function onSectionEnd() {
      writeBlock(gPlaneModal.format(17));
      forceAny();
    }
    
    function onClose() {
      onCommand(COMMAND_COOLANT_OFF);
    
      if (properties.useG28) {
        writeBlock(gFormat.format(28), gAbsIncModal.format(91), "Z" + xyzFormat.format(0)); // retract
        zOutput.reset();
      }
    
      if (!machineConfiguration.hasHomePositionX() && !machineConfiguration.hasHomePositionY()) {
        if (properties.useG28) {
          writeBlock(gFormat.format(28), gAbsIncModal.format(91), "X" + xyzFormat.format(0), "Y" + xyzFormat.format(0)); // return to home
        }
      } else {
        var homeX;
        if (machineConfiguration.hasHomePositionX()) {
          homeX = "X" + xyzFormat.format(machineConfiguration.getHomePositionX());
        }
        var homeY;
        if (machineConfiguration.hasHomePositionY()) {
          homeY = "Y" + xyzFormat.format(machineConfiguration.getHomePositionY());
        }
        writeBlock(gAbsIncModal.format(90), gFormat.format(53), gMotionModal.format(0), homeX, homeY);
      }
    
      onImpliedCommand(COMMAND_END);
      onImpliedCommand(COMMAND_STOP_SPINDLE);
      writeBlock(mFormat.format(30)); // stop program, spindle stop, coolant off
      writeln("%");
    }
    
     
    #716 Prometheus, May 7, 2018
    Last edited: May 7, 2018
  27. David the swarfer

    David the swarfer OpenBuilds Team
    Staff Member Moderator Builder

    Joined:
    Aug 6, 2013
    Messages:
    949
    Likes Received:
    425
    The default GRBL post is not very good. GRBL has never understood tool changes so why is that even in there.
    It also uses G28 and most hobbiests don't understand proper machine setup for that to work reliably....

    Maybe you can try this one that I have been tweaking for GRBL
    swarfer/GRBL-Post-Processor

    If you ever get an error 33 from GRBL then check your leadin/lead out radii, Fusion tends to make them very small which leads to radius errors reported by GRBL.
     
  28. Prometheus

    Builder

    Joined:
    Mar 21, 2015
    Messages:
    10
    Likes Received:
    0
    Funny as I have downloaded that 5 min ago and was messing with it but I am getting an error. I have homing switches setup also and would like to home before and after job if possible. Other than that, it seems good. Not sure what the -10 coords are for in the PP? I home to -X/Y and +Z
    upload_2018-5-8_2-52-24.png
     
  29. David the swarfer

    David the swarfer OpenBuilds Team
    Staff Member Moderator Builder

    Joined:
    Aug 6, 2013
    Messages:
    949
    Likes Received:
    425
    Using a set spot for toolchange hinges on having a good setup.
    What this means is that the machine must act as though it has home switches and does a homing cycle (even if there are no switches). If the machien doe shave home switches and uses them properly then of course everything is relative to that.

    If there are no switche...... This means the human has to have some good habits. (-:
    Habit 1
    turn on the machine with it in the home position. Home position is at the positive end of the travels, X right, Y far away, Z up. (this includes any GRBL reset, if you have a crash and reset then make sure to move the gantry back home and reset there)
    This will mean that GRBL sets the Machine Coordinates to 0 at those positions and the work space will be negative.
    You then jog to your work 0,0,0 position and set Work Coodinates to 0,0,0 there for the part you are working on.
    Habit 2
    Go back to machine home before powering off.
    The commands 'G53 G0 Z0' then 'G53 G0 X0 Y0' will do this safely.
    I programmed a button macro for this in bCNC.
    In fact I can hit that button and turn the drivers off (but not GRBL or the GUI), go for supper, come back, power the drivers on, and continue with stage x of a job without losing position. This saves my motors from getting hot without working for it.
    So, now that you have good habits about setting machine home you can use a set spot for toolchange.
    This spot is relative to the machine home and that is why having a good known machine home is critical.
    method 1
    use G53 to move to an absolute spot.
    G53 G0 X-400 Y-700 Z0
    will do it on my OX, putting X and Y near the front left corner and Z raised up safely.
    The co-ordinates are relative to machine home so will always be negative.
    method 2
    use G28 (or g30).
    move to the spot you want.
    issue 'G28.1' so make GRBL remember the spot.

    now anytime you want to change a tool just issue a G28.
     
  30. David the swarfer

    David the swarfer OpenBuilds Team
    Staff Member Moderator Builder

    Joined:
    Aug 6, 2013
    Messages:
    949
    Likes Received:
    425
    you need to do exactly what it says (-:
    in each setup in Fusion you need to set the WCS that it is using. normally this is G54 or '1' in Fusion terms.
    right click the setup and set the WCS as shown in the video below
     

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice