Hello Community, I have a self build CNC-Machine which is using GRBL 1.1 as G-Code interpreter. GRBL can´t working with loops terms and conditions, thats established. I also know that the G-Code spezification doesn´t support this, too. But for my application is it neccessary to work with loops in G-Code. Now I want to know if there is any G-Code streamer out there which is compatible with GRBL and allows the usage of loops, terms and conditions (for example: modified G-Code-streamer with parser for loops). I hope that somebody can help. Best regards JSPiDE
Well, it sort of does support it, MacroB is one specification, and LinuxCNC has elements of it for implementing loops and subroutines. I don't know of a current one, but bCNC comes close and maybe a bit of encouragement to the writers will see it happen. Macro Reserved Words for bCNC · Issue #60 · vlachoudis/bCNC vlachoudis/bCNC Traverse around bounding box option · Issue #38 · vlachoudis/bCNC You can always write your own, start with a basic streamer and add your own macro commands to the Gcode (follow what LinuxCNC does!) and put code in the streamer to process the commands that are not standard Gcode. gnea/grbl look at 'simple-stream.py' What I would do is write a program (probably php, but could be Python/Perl/C/Java/whatever) to output my 'looped' Gcode to a file, creating 1000 or 5000 or whatever many blocks of code as needed (how many hours does it need to run?). Then any GUI can run the code.
The general spec may be limited (I haven't checked) but most implementations allow for it; Fanuc has a lot of control over code flow, as will most of the other major controllers- Siemens, Heidenhain, etc. Modern manufacturing techniques require conditional programming and inline value changes from probing, tool life management, you name it. I did it myself on a LinuxCNC machine here: This is very interesting. I also didn't know that bCNC could parse and run inline Python?! Could be very useful, I'll have to look more into that. I guess I've never properly read the bCNC wiki, gonna have to rectify that.
Hi, thanks for your replies. I´ve seen bCNC, too. But for my application i have found a very easy way to send g-code in a loop. The GRBL-project brings two python-scripts with it. These scripts are for gcode streaming. Modify them with a simple while-loop and a exit statement should do the job. I also looked for some other solutions. Every solution which is using loops, is a specific manufacturer version. The basic gcode specification is from 1983/1988 (DIN 66025-1/2) and doesn´t support something like that. This specification only supports subfunctions. Thanks to everyone of you who replied. JSPiDE