Are nested subroutines possible?
27 Sep 2018 22:20 #118085
by helmholtz
Are nested subroutines possible? was created by helmholtz
Can anyone help with the syntax for a nested subroutine? Or to rephrase how can you call a sub from another subroutine?
I've written a couple of linux subroutines using the repeat function, so I get the basics, but it doesn't appear that you can call a sub from within another sub?
here is a Fanuc example, distilled to the basics that works but I can't wrap my head around making this work in linux syntax.
If anyone could provide a simple example like this I'd appreciate it!
Thx.
I've written a couple of linux subroutines using the repeat function, so I get the basics, but it doesn't appear that you can call a sub from within another sub?
here is a Fanuc example, distilled to the basics that works but I can't wrap my head around making this work in linux syntax.
If anyone could provide a simple example like this I'd appreciate it!
Thx.
M98 P1234 L17 (run sub 17 times)
M30 (end program)
O1234
...run some milling code then call another sub...
M98 P5678 L12 (CALL SUBPROGRAM 5678 12 TIMES)
M99
O5678 (sub called from other sub)
...more milling code...
M99 (END SUBPROGRAM )
Please Log in or Create an account to join the conversation.
28 Sep 2018 06:53 - 28 Sep 2018 13:47 #118090
by MaHa
Replied by MaHa on topic Are nested subroutines possible?
If the subroutines are specific for this machining, you could put everything in one file.Then this example must be saved as (yourfile).ngc. Otherwise save the subroutines and the main, calling the subroutine as single file. You could set the repetitions from the main calling file, so the subroutines stay variable.
o1234 sub
o111 repeat [#1]
;nccode
o5678 call [#2]
o111 endrepeat
o1234 endsub
o5678 sub
o112 repeat [#1]
;nccode
o112 endrepeat
o5678 endsub
; M A I N
o1234 call [17][12]
M2
o1234 sub
o111 repeat [#1]
;nccode
o5678 call [#2]
o111 endrepeat
o1234 endsub
o5678 sub
o112 repeat [#1]
;nccode
o112 endrepeat
o5678 endsub
; M A I N
o1234 call [17][12]
M2
Last edit: 28 Sep 2018 13:47 by MaHa. Reason: removed, no named subroutines
Please Log in or Create an account to join the conversation.
28 Sep 2018 12:26 #118105
by andypugh
Replied by andypugh on topic Are nested subroutines possible?
Are you wanting to use the Fanuc-style subs or would LinuxCNC-style subs be acceptable?
Have you tried LinuxCNC-style? ( O100 SUB / O100 ENDSUB / O100 CALL )
Have you tried LinuxCNC-style? ( O100 SUB / O100 ENDSUB / O100 CALL )
Please Log in or Create an account to join the conversation.
28 Sep 2018 15:54 #118122
by helmholtz
Replied by helmholtz on topic Are nested subroutines possible?
Thank you. That was just what I needed. 'Repeat' was a big help and just the order of how things are done.
G90
o5678 sub
o112 repeat [12]
G91
G0 A30 (ROTATE 30 DEG, 12 DIVISIONS TOTAL)
G04 P50
o112 endrepeat
o5678 endsub
o1234 sub
o111 repeat [17]
G91
G0 X0.250 (MOVE IN .250 INCREMENTS)
o5678 call
o111 endrepeat
o1234 endsub
(M A I N)
o1234 call
G90
M30
Please Log in or Create an account to join the conversation.
28 Sep 2018 16:01 #118123
by helmholtz
Replied by helmholtz on topic Are nested subroutines possible?
I'm moving from Mach3 to Linux(pathpilot) and none of my current programs work. so, I'm learning all of the new syntax and converting the programs but there are lots of differences.
Please Log in or Create an account to join the conversation.
29 Sep 2018 09:16 #118171
by andypugh
Replied by andypugh on topic Are nested subroutines possible?
Something that you didn't mention is what version of LinuxCNC you are using.
The M98 / M99 subroutine format was only added to the LinuxCNC development branch very recently (for compatibility with some other controls). Is that the version you are using?
The M98 / M99 subroutine format was only added to the LinuxCNC development branch very recently (for compatibility with some other controls). Is that the version you are using?
Please Log in or Create an account to join the conversation.
29 Sep 2018 15:47 #118180
by helmholtz
Replied by helmholtz on topic Are nested subroutines possible?
I wish I was using a version that supported M98/99 as I'm more familiar with industrial controls, which is why I had been using Mach3 on my hobby machines at home.
I'm using Tormach's Pathpilot version 2.1.3 (on a tormach mill). I haven't seen good documentation of what they are doing with their builds vs. what the rest of the linuxcnc community is doing, but it does seem that Tormach is doing it's own thing.
In general, their support is terrible which is why I'm posting here instead of asking them. MaHa's above example was very helpful and more detailed then anything I would have gotten from Tormach. They just copy and paste sections of their manual when you ask for any help, lol.
I'm using Tormach's Pathpilot version 2.1.3 (on a tormach mill). I haven't seen good documentation of what they are doing with their builds vs. what the rest of the linuxcnc community is doing, but it does seem that Tormach is doing it's own thing.
In general, their support is terrible which is why I'm posting here instead of asking them. MaHa's above example was very helpful and more detailed then anything I would have gotten from Tormach. They just copy and paste sections of their manual when you ask for any help, lol.
Please Log in or Create an account to join the conversation.
29 Sep 2018 19:55 #118191
by Grotius
Replied by Grotius on topic Are nested subroutines possible?
Hi Holzman,
linuxcnc.org/docs/html/gcode/o-code.html
Section 3 : The maximum subroutine nesting level is 10.
Don't forget to set your program prefix in your ini file, section [DISPLAY], otherwise it won't work :
PROGRAM_PREFIX = /home/holzman/.....
Good luck !!
linuxcnc.org/docs/html/gcode/o-code.html
Section 3 : The maximum subroutine nesting level is 10.
Don't forget to set your program prefix in your ini file, section [DISPLAY], otherwise it won't work :
PROGRAM_PREFIX = /home/holzman/.....
Good luck !!
Please Log in or Create an account to join the conversation.
- tommylight
- Away
- Moderator
Less
More
- Posts: 19188
- Thank you received: 6430
29 Sep 2018 23:46 #118207
by tommylight
I would venture a guess at it having about 10% of capabilities Linuxcnc has, and that is me being generous, very.
Back on topic,
Fanuc uses some nice features on a punch press i often used, LAA ( line at angle ), GRID ( well grid ), NIB ( nibble ), etc that are very easy to use but not easy to learn for normal people, as each of them has it's own variables and parameters.
Adding something like that to Linuxcnc would help a lot to people who have that type of machines running under Linuxcnc, but so far i know of 2 on this forum ( one is from Serbia and he does not share any info, the other did try to contact him for help but i do not know if he got any help ) and a third one on youtube.
KUKA uses some similar short cuts for programming robots like LIN ( linear move with settable speed ), PTP ( point to point move at normal speed so the tool tip will move at any given speed regardless to get to a point ) etc.
Still all of the above mentioned examples have to be programmed by hand in their respective editors.
Replied by tommylight on topic Are nested subroutines possible?
Mach3 has nothing industrial about it, or in it, it is a motion controller and very limited at best.I wish I was using a version that supported M98/99 as I'm more familiar with industrial controls, which is why I had been using Mach3 on my hobby machines at home.
I would venture a guess at it having about 10% of capabilities Linuxcnc has, and that is me being generous, very.
Back on topic,
Fanuc uses some nice features on a punch press i often used, LAA ( line at angle ), GRID ( well grid ), NIB ( nibble ), etc that are very easy to use but not easy to learn for normal people, as each of them has it's own variables and parameters.
Adding something like that to Linuxcnc would help a lot to people who have that type of machines running under Linuxcnc, but so far i know of 2 on this forum ( one is from Serbia and he does not share any info, the other did try to contact him for help but i do not know if he got any help ) and a third one on youtube.
KUKA uses some similar short cuts for programming robots like LIN ( linear move with settable speed ), PTP ( point to point move at normal speed so the tool tip will move at any given speed regardless to get to a point ) etc.
Still all of the above mentioned examples have to be programmed by hand in their respective editors.
Please Log in or Create an account to join the conversation.
- eneias_eringer
- Offline
- Junior Member
Less
More
- Posts: 35
- Thank you received: 7
01 Oct 2018 16:22 #118300
by eneias_eringer
Really ??? !!! and a GOTO will be implanted too ??? LOL !!!
Replied by eneias_eringer on topic Are nested subroutines possible?
Something that you didn't mention is what version of LinuxCNC you are using.
The M98 / M99 subroutine format was only added to the LinuxCNC development branch very recently (for compatibility with some other controls). Is that the version you are using?
Really ??? !!! and a GOTO will be implanted too ??? LOL !!!
Please Log in or Create an account to join the conversation.
Time to create page: 0.091 seconds