On Friday 17 August 2007, [EMAIL PROTECTED] wrote:
>Jeff Epler wrote:
>> On Fri, Aug 17, 2007 at 11:15:29AM +0100, [EMAIL PROTECTED] wrote:
>>> Just a couple of points I'm not completely clear on - in the above
>>> example, are line numbers needed on every line of the subroutine or
>>> just at the ends?
>>
>> O-numbers are required on lines where the flow control words such as
>> "sub", "endsub", "do", "while" are used.  The interpreter uses these
>> numbers to "match up" the beginning and end of a subroutine or a loop.
>
>Gene Heskett wrote:
> >N0300 do (first cut of pinion leaves)
> >N0400 o100 call [#12][#14]
> >N0500 [#17] = [#17] + 1 (increment counter)
> >N0600 G0 A[360/[#13]] (rotate work one tooth distance)
> >N0700 while [#17] LT 5
>
>Ahh, I think your do & while need to be matching o words.
>
>Thanks Jeff & Gene,
>
>I modified the script as below but now I'm back to one of the original
>problems - it won't load because it says  "near line 49 ...... unknown
>word where unary operation could be" (Line 49 is my line numbered
>N0400). This is at the call to the first subroutine, o100, and the only
>way I could clear it before was to take out the o100 before the endsub -
>but then the program wouldn't run. I tried isolating the problem by the
>rather crude method of simply temporarily deleting each line of code in
>turn to see if the error would clear or at least move on to the next
>error and this was how I identified the endsub line number to be a
>problem, however, I've just tried the same again and it has no effect. -
>now I'm stuck again although there may be just a glimmer of light from
>Gene's comment - is the error that the do/while loop in the main part of
>the program should be numbered differently and have both lines preceded
>by an Oxxx number? If so would that then be another subroutine which
>would need calling from a main program consisting just of calls? Boy,
>this stuff is fussy!!
>
>%
>#40 = 1.4        ( o.d )
>#41 = 0.38        (root dia)
>#42 = [[#40 - #41] / 2]    (cut depth)
>#43 = 5            (number of teeth)
>#44 = 4            (length of cut)
>#45 = [360/[#43]]    (angular increment)
>#46 = 0.09        (cutter thickness)
>#47 = 1            (counter)
>#48 = 1            (tooth counter)
>#49 = 10        (step angle for rounding)
>#50 = [[#40]/2]        (radius of work)
>#51 = 10        (increment for rounding steps)
>#52 = 90        (final arc angle)
>
>o100 sub        (cuts one slot in blank)
> G1 X[#1/2] F#3
> G1 Y#2
> G0 Y[0-#2]
> G1 X#1 F#3
> G1 Y#2
> G0 Y[0-#2]
>o100  endsub
>
>o200 sub        (rounds half top of pinion leaf in several steps)
>o201 do
>    G0 Z[sin[#4]/#6] X[cos[#4]/#6]
>    G1 Y#5 F4
>    G0 Y[0-[#5]]
>    G0 A#7
>    #10 = [[#4]+[#7]]
>o201 while [#4 LT #8]
>o200 endsub
>
>o300 sub        (rounds other half top of pinion leaf in several steps)
>o301 do
>    G0 Z[0-[sin[#4]/#6] X[cos[#4]/#6]
>    G1 Y#5 F4
>    G0 Y[0-[#5]]
>    G0 A[0-[#7]]
>    #10 = [[#4]+[#7]]
>o301 while [#4 LT #8]
>o300 endsub
>
>N0100 G92 X0 Y0 Z0    (set axes to zero)
>N0200 G21 G91        (metric units, incremental moves)
>
You are still missing the oNNN keywords in everything below here that involves 
the do/while constructs.
>N0300 do        (first cut of pinion leaves)
>N0400 o100 call [#42][#44][4.0]
>N0500 #47 = [#47 + 1]    (increment counter)
>N0600 G0 A[360/[#43]]    (rotate work one tooth distance)
>N0700 while [#47 LT 5]
>
>N0800 #47 = 1        (set counter back to 1)
>N0900 G0 A[0-[[#45]/3]]    (rotate by thickness of pinion leaf and)
>N1000 G0 Z#46        (move cutter - saw - to other side of leaf)
>
>N1100 do        (cut other side of pinion leaves)
>N1200 o100 call [#42][#44][4.0]
>N1300 #47 = [#47 + 1]
>N1400 G0 A[0-[360/[#43]]]
>N1500 while [#47 LT 5]
>
>N1600 #47 = 1        (set counter back to 1)
>N1700 G0 A[[#45]/6]    (move cutter to centre of leaf)
>N1800 G0 Z[0-[[#46]/2]    (                 )
>
>N1900 do        (round over half the leaf and repeat for all leaves)
>N2000 o200 call [#40][#44][#50][#51][#52]
>N2100 #47 = [#47 + 1]
>N2200 G0 A[360/[#43]]
>N2300 while [#47 LT 5]
>
>N2400 #47 = 1        (set counter back to 1)
>N2500 G0 Z0 A-90        (set cutter and pinion leaf back to centre)
>N2600 G0 Z[[#16]/2]
>N2700 do        (round over other half the leaf and repeat for all leaves)
>
>N2800 o300 call [#40][#44][#50][#51][#52]
>N2900 #47 = [#47 + 1]
>N3000 G0 A[0-[360/[#43]]]
>N3100 while [#47 LT 5]
>
>N3200 #47 = 1        (clean up)
>N3300 G0 X-20 Z40 Y50    (retract tool)
>N3200 G30
>%
>
>
>--
>Best wishes,
>
>Ian
>____________
>Ian W. Wright
>Sheffield  UK
>
>"The difference between theory and practice is much smaller in theory
>than in practice..."



-- 
Cheers, Gene
"There are four boxes to be used in defense of liberty:
 soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)
I have to think hard to name an interesting man who does not drink.
                -- Richard Burton

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Emc-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to