Editing gcode subroutine in gmoccappy locks up program

More
21 Oct 2016 16:32 #81919 by george4657
I am trying to learn how to use o g-codes to generate subroutines.
Using linuxcnc 2.8.0 gmoccapy 2.1.0
I am an experienced C programmer trying to learn the syntax for g-code.
When testing while loops I make errors that causes an infinite loop and when I save file I think the program tests for errors and gets in the loop and never comes out.
I then have to crash out of linuxcnc and restart it. I then have to zero xy an z axis before I can try edit again.
My X and Y home are fast but my Z is slow as it has a fine thread drive and an offset for zero.

I there anyway to crash out of the editor without closing cnc program.

Thanks
George

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

More
21 Oct 2016 17:07 #81922 by Todd Zuercher
Try it with a different ui like axis which uses a separate text editor and see what happens.

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

More
21 Oct 2016 18:04 #81924 by george4657
I set up a new format with axis.
First problem I loaded my test program and it loaded.
I clicked file->edit and bottom of screen filled up with program but I could not edit it. Do I have to setup editor in ini file.

Second problem I loaded a test file I know did not work in gmoccapy and it locked up the axis program also.
This in fact locked up the whole computer so I had to use power button to reboot computer.
I can't see how to add an attachment so i will paste file.


o100 while [#3 LT .1]
; 1 = center X
; 2 = center Y
; 3 = radius
#3 = [#3-1]
M5
g01 x[#1-#3] y[#2] f200
M3
g02 x[#1 +#3] y[#2] i[#3] j[0]
g02 x[#1-#3] y[#2] i[-#3] j[0]
#3 = [#3-1]
m5
o100 endwhile



g21
g90
g01 x0y0 f200
o100 call [0][10][10]
o100 call [0][20][9]
o100 call [10][10][8]
o100 call [10][20][7]
m2.

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

More
21 Oct 2016 18:31 - 21 Oct 2016 18:44 #81925 by Todd Zuercher
I think axis is still set up to use gedit as the default editor. You'll either have to install gedit or edit your ini to choose a different editor.

Now to look at your code. To start with, I don't think you can call your while loop code as a sub program, I think you may need to set up a sub program to contain your while loop, then call that.

Next I'm not sure what this is supposed to do
; 1 = center X
; 2 = center Y
; 3 = radius
Are they comments? if so they should be in () as far as I know G-code doesn't use : for anything.

G-code is much simpler than C. The while/endwhile loop, just first performs the test and if true executes the g-code within and repeats.

So as I see it I think you are aiming more for something like this
o200 sub
o100 while [#3 GT .1] 
(#1 = center X)
(#2 = center Y)
(#3 = radius)
g01 x[#1-#3] y[#2] f200
M3
g02 x[#1 +#3] y[#2] i[#3] j[0]
g02 x[#1-#3] y[#2] i[-#3] j[0]
#3 = [#3-1]
m5
o100 endwhile
M5
g01 x[#1-#3] y[#2] f200
o200 endsub


g21
g90
g01 x0y0 f200
o200 call [0][10][10]
o200 call [0][20][9]
o200 call [10][10][8]
o200 call [10][20][7]
m2. 
Last edit: 21 Oct 2016 18:44 by Todd Zuercher.

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

More
21 Oct 2016 20:12 #81927 by george4657
From doc's ; ok
" Comments can be embedded in a line using parentheses () or for the remainder of a line using a semi-colon"

Doc's for while loop do not show it embedded in an other routine but this explains error "no file <o100> found" when calling while loop o100

Tested below code
-- crash from infinite loop ----
o200 sub
o100 while [#3 GT .1]
G01 x 40
o100 endwhile (would never be below .1 if all with value > .1)
o200 call[10]

---- same code loop fails test so no infinite loop so no crash ----
o200 sub
o100 while [#3 LT .1] (have to remember LT is Less than not Larger than)
G01 x 40
o100 endwhile (would never run as first loop < .1 so no error)
o200 call[10]

It is good that editor catches this error as you would not want an infinite loop to run on your cnc machine but I wish there was a way to exit editor or have editor time out.
Is there a simulator program I can use for code visualization rather than use actual linuxcnc?

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

More
21 Oct 2016 20:34 - 21 Oct 2016 20:38 #81928 by Todd Zuercher
Huh, learn something new every day. (regarding using colon for comments)

That is because the docs are showing using a while loop, not using a while loop as a subroutine.

Most of the G-code simulators/backplots I've played with usually barf on most subprograms, loops, or parametric programing. partly because most every control manufacturer/G-code dialect handles that stuff a little different.

I think this one camotics.org/ is derived at least partially from Linuxcnc code and does a better job than most with parametric programming.
Last edit: 21 Oct 2016 20:38 by Todd Zuercher.

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

More
21 Oct 2016 23:54 #81930 by george4657
Its a semi-colon not a colon for comments.

Downloaded camotics and it worked good so thanks for that info.
It even works in windows which is where I do my development work as I only have linux on my shop cnc machines.
Thanks
George

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

More
22 Oct 2016 10:07 #81934 by newbynobi
Hallo,

sorry you had problems with gmoccapy. Unfortunately the editor is incorporated in gmoccapy, I do not see a way to check if the code will run or not, as "my" editor only passes the code to the interpreter and that one will hang in the infinite loop. I you know C++, you might be able to add such a very recommended feature into that component.

Norbert

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

More
24 Oct 2016 15:49 #81989 by andypugh

I there anyway to crash out of the editor without closing cnc program.


Try "ESC"

Also, your code samples have no O200 ENDSUB to terminate the subroutine.

I think that O200 might even be calling itself recursively in your examples.

O200 CALL [10] will pass 10 in #1. Your loops are using #3, which will (probably) remain as zero throughout.

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

More
25 Oct 2016 18:11 #82049 by george4657
I tried esc as well as other keys with no success.
Sub problems as shown are from cut and paste of example. Could not figure how to attach actual file.
I no longer have a problem because I now know that LT is "Lesser than" not "Larger than" and while loops can not be called by themselves but must be called within a sub
I now develop using program camotics as recommended by Todd.
This program has a simulation mode and runs in windows a well a linux and does not lock up with endless loop.

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

Moderators: newbynobiHansU
Time to create page: 0.087 seconds
Powered by Kunena Forum