Press Brake CNC Control & G-Code

More
20 Jan 2017 14:01 #86251 by bymccoy

As to your Dual-Z config, one option might be to use Z and W, with W being the distance between Z1 (directly controlled) and Z2.


Yeah, I was leaning toward having a delta as the 2nd variable/position, afterall, I don't care that Z2 is N mm from the left, I just care that it's positioned far enough away from Z1 that the part I'm aligning has something to rest against. Likewise, I can then just move Z1, and Z2 will follow it - this is handy as if you fold a part multiple times or are using different tools as stations along the length of the press, then unless you change the parts orientation, you'll pretty much want the spacing to be the same.

I think for X and X1/X2 I might do something similar. Maybe specify A (which is X1's position) and then U (which is delta between X1 and X2) with X being calculated as the half way point between A and U.

The fingers normally have steps machined into them, so you can either use them as a back stop, or use a notch/step in them for the side(s) and back of the material. If you want a single side stop, then you just move the finger forward and to the left by the step size. A finger of 40mm width with a 20mm x 20mm notch, can either be used without offset on it's face, or with a 20mm x 20mm offset for the notch. I've attached an illustration to explain. This can be achieved with some nice macros/buttons in the UI and just require the step size to be added/deducted. The fingers often have rounded steps or tips, so that material has good contact when you're folding an angle and have the steps at different positions.

I'm including lots of detail in my posts for a few reasons... I know 99% of folks won't be interested, but it's a good way to 'talk through' my ideas, solicit feedback from folk with experience (albeit not just with presses but with motion control, LinuxCNC etc) and also so that if somebody else is looking to do this, then there's some info out there. I struggled to find info, so I'm happy to share and talk with anybody else looking to do this.

Thanks!
Attachments:

Please Log in or Create an account to join the conversation.

More
22 Jan 2017 22:24 #86436 by andypugh
Normally U is a sort of "auxiliary X" and W is an "auxilliary Z" but you can set things up any way you want.

I wouldn't use A unless I had to, though. ABC are normally rotary axes.

Please Log in or Create an account to join the conversation.

More
23 Jan 2017 10:25 #86465 by bymccoy
I only thought "A" as I need three X axes... So my thought:

Press = LinuxCNC

X = X (main gantry)
Y = Y (hydraulic stroke distance)
Z1 = Z (carriage #1)
Z2 = W (carriage #2)
X1 = U (finger #1)
X2 = V (finger #2)
R = ? (gantry/finger height)

I still need R assigning, maybe an ABC? Or can I define more axes without recompiling source?

Thanks
J

Please Log in or Create an account to join the conversation.

More
23 Jan 2017 10:50 #86467 by andypugh

I still need R assigning, maybe an ABC? Or can I define more axes without recompiling source?


The limitation is with G-code. G-code only allocates the letters XYZABCUVW to axis positions.

You don't _have_ to use G-code, though. LinuxCNC allows you to choose alternative interpreters. The only example that ships with LinuxCNC is "canterp" which simply takes the internal LinuxCNC movement commands. A canterp program looks like this:
github.com/LinuxCNC/linuxcnc/blob/af15a4.../canterp_example.can

Given how little there is a press-brake code, you could make your own interpreter that (unlike G-code) considers spaces as part of the syntax, so that X1 100 would be distinguishable from X 1100. This might be more effort than you want to go to.

Do you have any examples of commercial press-brake code?

Please Log in or Create an account to join the conversation.

More
23 Jan 2017 13:33 #86481 by Todd Zuercher
Since most of these extra axis moves he needs are only positioning moves, couldn't he just use custom M-codes to command the position for undefined joints (joints that don't have an axis letter).

Please Log in or Create an account to join the conversation.

More
23 Jan 2017 14:57 #86486 by bymccoy

You don't _have_ to use G-code, though. LinuxCNC allows you to choose alternative interpreters. The only example that ships with LinuxCNC is "canterp" which simply takes the internal LinuxCNC movement commands. A canterp program looks like this:
github.com/LinuxCNC/linuxcnc/blob/af15a4.../canterp_example.can

Given how little there is a press-brake code, you could make your own interpreter that (unlike G-code) considers spaces as part of the syntax, so that X1 100 would be distinguishable from X 1100. This might be more effort than you want to go to.

Do you have any examples of commercial press-brake code?


I'll have a look at canterp to get a feel...

I've not got an example of press-brake code. I genuinely don't know how they store it or the standards they use - I've heard mention of G-code, but most of the software is packaged so that the user doesn't see program code, just a table of bends. I've seen some presses that even have LED strips along the front of the machine that show where a bend should be formed - this data has to be stored somewhere, so a program is more of a table/database if anything...

So, if I move away from G-code and have custom code that is basically a tabulated style code that looks like a table in raw form, I'm free then to use more axes?

Where/what is the canterp interpreter? I see a reference to a lib, but not where that lib exists in the repo?

J

Please Log in or Create an account to join the conversation.

More
23 Jan 2017 14:57 #86487 by bymccoy

Since most of these extra axis moves he needs are only positioning moves, couldn't he just use custom M-codes to command the position for undefined joints (joints that don't have an axis letter).


Hi Todd,

How would that work in implementation?

Thanks,
J

Please Log in or Create an account to join the conversation.

More
23 Jan 2017 19:45 #86505 by andypugh

So, if I move away from G-code and have custom code that is basically a tabulated style code that looks like a table in raw form, I'm free then to use more axes?


Possibly. I think you have to actually recompile LinuxCNC to get more than 9 joints:
github.com/LinuxCNC/linuxcnc/blob/af15a4...tion/emcmotcfg.h#L23

Please Log in or Create an account to join the conversation.

More
23 Jan 2017 19:59 #86507 by bymccoy
Are the ABC axes considered rotational by the G-Code interpreter or LinuxCNC itself?

How/where do I define the names of the axes if I wanted to add more/override existing?

Canterp looks pretty interesting, I may just lift/fork that library and build a press specific version. There doesn't seem to be a standard around, non of the manufacturers seem to support anything non-UI driven, and those that might, require their offline software. I can't find sample code, so not sure if it even exists, or is just in the form of tabulated data containing the bend sequence and positions, and it's the CNC controller that figures the rest out...

Thanks
J

Please Log in or Create an account to join the conversation.

More
23 Jan 2017 20:24 #86510 by Todd Zuercher
You could make an M-code that sends a position command directly to a Stepgen and wait for a move complete signal. Some creative hal code could compare the stepgen's commanded position with it's feed back position, to tell if the move is complete. The tricky part might be figuring out how to home/reference these unofficial "joints".

Please Log in or Create an account to join the conversation.

Moderators: cncbasher
Time to create page: 0.212 seconds
Powered by Kunena Forum