Linear And Circular Interpolation Contouring Control Using Repeated Computation

McGee April 11, 1

Patent Grant 3656124

U.S. patent number 3,656,124 [Application Number 04/762,835] was granted by the patent office on 1972-04-11 for linear and circular interpolation contouring control using repeated computation. This patent grant is currently assigned to Giddings & Lewis, Inc.. Invention is credited to John K. McGee.


United States Patent 3,656,124
McGee April 11, 1972
**Please see images for: ( Certificate of Correction ) **

LINEAR AND CIRCULAR INTERPOLATION CONTOURING CONTROL USING REPEATED COMPUTATION

Abstract

A numerical path control system including a time shared digital computer generating for each of a plurality of axes regularly recurring numerical excursion commands. A two axis system is shown to be capable of deriving from a small number of data words successive straight line path or circular arc path command signals at a rate of 50 times a second and of converting these into intermediate or secondary command signals which are applied to the servos of the machine axes at a rate of 500 times a second.


Inventors: McGee; John K. (Houston, TX)
Assignee: Giddings & Lewis, Inc. (Fond du Lac, WI)
Family ID: 25066140
Appl. No.: 04/762,835
Filed: September 26, 1968

Current U.S. Class: 700/275; 318/573
Current CPC Class: G05B 19/414 (20130101); G05B 19/371 (20130101); G05B 19/4103 (20130101); G05B 2219/34132 (20130101); G05B 2219/34167 (20130101)
Current International Class: G05B 19/19 (20060101); G05B 19/4103 (20060101); G05B 19/414 (20060101); G05B 19/37 (20060101); G05B 19/41 (20060101); G06f 015/46 ()
Field of Search: ;235/157,151.11,197 ;340/172.5 ;318/20,573

References Cited [Referenced By]

U.S. Patent Documents
3058657 October 1962 Tripp
3109092 October 1963 Lott et al.
3277288 October 1966 Hartley
Primary Examiner: Shaw; Gareth D.
Assistant Examiner: Chapnick; Melvin B.

Claims



I claim as my invention:

1. The method of moving a member simultaneously along X and Y axes to produce resultant movement along a desired path segment which extends either substantially along or at right angles to a vector which is the sum of X and Y axis components d.sup.x and d.sub.y, comprising the steps of

a. computing and digitally signaling in a digital processing apparatus the numerical values of small incremental moves .DELTA.X and .DELTA.Y each of which is proportional to a different one of the components d.sub.x and d.sub.y by the same factor of proportionality which is equal to (V.sup.. .DELTA.T)/D where V is a numerical value representing path velocity, .DELTA.T is a numerical value representing a time period, and D is a numerical value representing the length of said vector,

b. measuring off successive, equal and actual time periods .DELTA.T, and

c. during each such time period utilizing said digital signaling to cause movement of said member through the distance .DELTA.X along said X axis and through the distance .DELTA.Y along the Y axis.

2. The method defined in claim 1 further including the step of changing the factor of proportionality relating the values of .DELTA.X and .DELTA.Y to d.sub.x and d.sub.y by changing the numerical value V while keeping the numerical value .DELTA.T constant, thereby to determine and control the velocity V of the movable member along the desired path segment.

3. The method defined in claim 1, further characterized in that said components d.sub.x and d.sub.y are the X and Y components I and J of a vector path segment having a length D and wherein said steps (b) and (c) are repeated until said member has moved along the desired path through a distance substantially equal to D.

4. The method defined in claim 3 wherein the incremental moves .DELTA.X and .DELTA.Y are computed according to the expressions

5. The method defined in claim 1, further characterized in that said components d.sub.x and d.sub.y are the X and Y axis components J and I of radius vectors R extending from the center of an arc to points on an arc forming the path segment, and the incremental moves .DELTA.X and .DELTA.Y are the X and Y axis components of resultant vector increments .DELTA.D extending substantially along chords of arcs which are bisected at right

angles by said radius vectors. 6. The method defined in claim 5 wherein the incremental moves .DELTA.X and .DELTA.Y are computed according to the expressions

where V is the numerical value of a desired velocity of the member along the arc, .DELTA.T is the numerical value of one of said time periods, and

R is the length of said radius vector. 7. The method of moving a member simultaneously along X and Y axes to produce resultant movement along successive path segments D which are the vector sum of X and Y axis components I and J, comprising the steps of

1. producing within a digital processing apparatus, in accordance with successive sets of compiled data defining the successive path segments, successive sets of digital signals representing numerical values of (i) the x axis component length I, (ii) the Y axis component length J, and (iii) a factor of proportionality Q which is itself directly proportional to the desired path velocity of said member and inversely proportional to the path segment length D,

a. computing and digitally signaling in said apparatus, from said successive sets of signals, the numerical values of small incremental moves .DELTA.X and .DELTA.Y which are respectfully proportional to I and J by said factor of proportionality Q,

b. measuring off successive, equal time periods .DELTA.T in actual time,

c. during each such time period utilizing said digital signaling to cause movement of said member through the distance .DELTA.X along the X axis and through the distance .DELTA.Y along the Y axis and

d. changing said factor of proportionality Q as signaled in different ones of said successive sets of signals in order to change the path velocity at which said member is actually moved in response to said successive sets of

compiled data. 8. The method defined in claim 7 in which said step (a) includes the multiplication of I.times.Q and J.times.Q in order to produce said digital signaling of the numerical values of said small incremental

moves .DELTA.X and 66 Y. 9. The method defined in claim 8 wherein the factor of proportionality Q is equal to (V .sup.. .DELTA.T)/D, where V is the desired velocity along the path segment, D is the length of the path segment and .DELTA.T numerically represents one of the said time periods; and wherein said incremental moves .DELTA.X and .DELTA.Y are computed according to the respective expressions

10. The method of moving a member simultaneously along X and Y axes to produce resultant motion substantially along successive arcuate path segments defined by radius vectors R extending from centers to points on the arcs and having X and Y axis components I and J, said method comprising the steps of

1. producing within a digital processing apparatus, in accordance with successive sets of compiled data defining the successive arcuate path segments, successive sets of digital signals representing numerical values of (i) the X axis component length I, (ii) the Y axis component length J, and (iii) a factor of proportionality Q which is itself directly proportional to the desired path velocity and inversely proportional to the length of the vector R,

a. computing and digitally signaling in said apparatus, from said successive sets of signals, the numerical values of small incremental moves .DELTA.X and .DELTA.Y which are respectively proportional to J and I by said factor of proportionality Q,

b. measuring off at least one series of successive, equal and actual time periods .DELTA.T,

c. during each of the time periods in each of said series utilizing said digital signaling to cause movement of said member through at least the one of the distances .DELTA.X and .DELTA.Y along the respective axes X and Y and

d. changing said factor of proportionality Q as signaled in different ones of said successive sets of signals in order to change the path velocity at which said member is actually moved in response to said successive sets of

compiled data. 11. The method defined in claim 10 in which said step (a) includes the multiplication of I.times.Q and J.times.Q in order to produce said digital signaling of the numerical values of said small incremental

moves .DELTA.X and .DELTA.Y. 12. The method defined in claim 11 wherein the factor of proportionality Q is equal to (V .sup.. .DELTA.T)/R, where V is the desired velocity along the arc, R is the length of said radius vector, and .DELTA.T numerically represents one of said time periods, and wherein said incremental moves .DELTA.X and .DELTA.Y are computed rapidly during each time period according to the expressions

13. The method of moving a member simultaneously along X and Y axes to produce resultant composite motion at a desired vector velocity V, comprising the steps of

a. computing and digitally signaling in a digital processing apparatus numerical values of .DELTA.X and .DELTA.Y which are respectively equal to V.sub.x .DELTA.T and V.sub.y.sup.. .DELTA.T where V.sub.x and V.sub.y are numbers representing the X and Y axis components of the desired vector velocity V and .DELTA. T is a predetermined constant number representing time,

b. measuring off successive, equal and actual time periods .DELTA.T,

c. during each such actual time period causing said member in response to said digital signaling to move the distance .DELTA.X along the X axis and the distance .DELTA.Y along the Y axis, and

d. changing the velocity representing numbers V.sub.x and V.sub.y by equal proportions to modify the signaled values .DELTA.X and .DELTA.Y, thereby to modify the magnitude of the desired velocity V and the resultant

velocity at which the member is moved. 14. The method moving a member simultaneously along X and Y axes to produce resultant composite motion at different desired velocities V and different vector angles, comprising the steps of

a. computing in a digital processing apparatus a first number proportional to V .sup.. cos .theta., where V represents the desired velocity and .theta. represents the desired vector angle relative to the X axis,

b. computing in said apparatus a second number proportional to V.sup.. sin .theta.,

c. computing and digitally signaling in said apparatus a third number .DELTA.X equal to the product of the first number and a predetermined constant, time-representing number .DELTA.T,

d. computing and digitally signaling in said apparatus a fourth number .DELTA.Y equal to the product of said second number and .DELTA.T,

e. measuring off successive, equal and actual time periods .DELTA.T, and

f. during each such time period causing said member in response to the signals representing .DELTA.X and .DELTA.Y to move the distance .DELTA.X

along the X axis and to move the distance .DELTA.Y along the Y axis. 15. The method defined in claim 14 further including the step of changing the quantity V to change the composite velocity at which said member is

moved. 16. The method defined in claim 14 further including the step of changing the angle .theta. to change the direction in which said member is

moved. 17. The method defined in claim 14 wherein the quantity cos .theta. is determined by the ratio I/D and the quantity sin .theta. is determined by the ratio J/D, where I and J are the X and Y axis component distances of a desired path segment having a length D, the quantities I and J normally being substantially greater than the quantities .DELTA.X and

.DELTA.Y. 18. The method defined in claim 14 wherein the quantity cos .theta. is determined by the ratio J/R and the quantity sin .theta. is determined by the ratio I/R, where I and J are the X and Y axis component distances of a radius length R extending from the center of a circle to a point on an arc of that circle which is to be traced by the movement of

the member. 19. The method defined in claim 18 wherein the component distances I and J and the ratios I/R and J/R are changed at intervals of

.DELTA.T in actual time. 20. The method defined in claim 14 wherein the third and fourth numbers .DELTA.X and .DELTA.Y are recomputed and

re-signaled in said apparatus at intervals .DELTA.T in actual time. 21. A method of generating a series of numerical command signals for moving a member displaceable along X and Y axes at velocity V in a straight line path at angle .theta. with the X axis comprising:

a. measuring off successive equal periods of .DELTA.T in actual time,

b. producing in a digital processing apparatus first and second sets of signals respectively representing numerically unit moves V .sup.. .DELTA.T .sup.. sin .theta. and V .sup.. .DELTA. T .sup.. cos .theta.,

c. producing in said apparatus third and fourth sets of signals digitally representing respectively commanded positions XSC and YSC along the X and Y axes to which said member is to move, and

d. changing said third and fourth sets of signals, once during each .DELTA.T time period, by amounts equal to said unit moves V .sup.. .DELTA.T .sup.. sin .theta. and V .sup.. .DELTA.T .sup.. cos .theta.,

respectively. 22. The method of moving a member displaceable along X and Y axes at a selected angle in space and through a desired composite distance D at a desired composite velocity V which comprises

a. representing by digital signals in a digital processing apparatus the X and Y components I and J of said composite distance,

b. processing said digital signals in said apparatus to derive first and second sets of signals representing .DELTA.X and .DELTA.Y numbers which are respectively equal to:

1. the product of I, a predetermined time-representing number .DELTA.T and the composite velocity V, all divided by the composite distance D, and

2. the product of J, said predetermined time-representing number .DELTA.T, and the composite velocity V all divided by the composite distance D;

c. measuring off successive equal time periods of .DELTA.T in actual time, and

d. during each such time period utilizing said first and second sets of signals to drive said member simultaneously and substantially uniformly through the distance .DELTA.X along the X axis and through the distance .DELTA.Y along the Y axis until the member has been moved substantially

through the composite distance D. 23. The method of moving a member displaceable along X and Y axes through successive path segments D at successive selected angles in space with successive desired composite velocities V which comprises:

a. representing numerically by digital electrical signals the X and Y components I and J of one path segment D,

b. processing said signals to derive first and second sets of electrical signals numerically representing .DELTA.X and .DELTA.Y distances which are respectively equal to:

1. the product of I, a predetermined time-representing number .DELTA.T, and the composite velocity V, all divided by the one path segment D, and

2. the product of J, said predetermined time-representing number .DELTA.T, and the composite velocity V all divided by the one path segment D,

c. measuring off successive equal periods of .DELTA.T in actual time,

d. during each such time period utilizing said first and second sets of signals to drive said member simultaneously and substantially uniformly through the distance .DELTA.X along the X axis and through the distance .DELTA.Y along the Y axis until the member has been moved substantially through the one path segment D, and

e. during at least one of the last few periods .DELTA.T prior to the complete execution of the one path segment D, representing numerically by digital electrical signals the X and Y components I and J of the next path segment D, and thereafter continuing the steps (b) through (d) defined above to effect execution of movement by the member through said next path

segment D. 24. The method of moving a member displaceable along X and Y axes through a desired composite distance D at a selected angle in space and with a desired composite velocity V which comprises

a. representing by first digital signals in a digital processing apparatus a numerical quantity Q which is equal to the quotient of the velocity V divided by the distance D, all multiplied by a number representing a predetermined time period .DELTA.T,

b. representing by second digital signals in said apparatus the X and Y components I and J of said composite distance D,

c. processing said first and second digital signals to derive first and second sets of signals in said apparatus representing .DELTA.X and .DELTA.Y numbers which are respectively equal to:

1. the product of I times the value of Q, and

2. the product of J times the value of Q,

d. measuring off successive equal time periods of .DELTA.T in actual time, and

e. during each such time period utilizing said first and second sets of signals to drive said member simultaneously and substantially uniformly through the distance .DELTA.X along the X axis and through the distance

.DELTA.Y along the Y axis. 25. The method defined in claim 1 further including the steps of

d. computing and digitally signaling in said apparatus the numerical values of micromoves .DELTA.X/N and .DELTA.Y/N, where N is a preselected constant,

e. measuring off N equal and successive actual time periods .DELTA.T/N during each of said periods .DELTA.T,

f. and executing the said step (c) by utilizing the digital signaling of micromoves during each of said periods .DELTA.T/N to cause movement of said member through the distance .DELTA.X/N along said X axis and through

the distance .DELTA.Y/N along the Y axis. 26. The method of moving a member simultaneously along X and Y axes to produce resultant composite motion at a desired vector velocity V, comprising the steps of

a. computing and digitally signaling in digital processing apparatus numerical values of .DELTA.X and .DELTA.Y which are respectively equal to V.sub. x.sup.. .DELTA.T and V.sub. y .sup.. .DELTA.T, where V.sub. x and V.sub. y are numbers representing the X and Y axis components of the desired velocity vector V and .DELTA.T is a predetermined constant number representing time,

b. measuring off successive, equal and actual time periods .DELTA.T/N, where N is a predetermined constant,

c. creating X and Y axis command signals XSC and YSC representing the commanded positions of said member relative to reference points along the X and Y axes, respectively,

d. during each said time periods and in response to said digital signaling changing X and Y axis command signals by amounts equal to .DELTA.X/N and .DELTA.Y/N, respectively, and

e. utilizing said changing command signals to move said member along the X and Y axes so as to keep the actual X and Y axis positions of said member substantially in agreement with the commanded positions represented by

said changing command signals. 27. The method set forth in claim 26 wherein said X and Y axis command signals XSC and YSC are changed in said apparatus N times during each actual time period of .DELTA.T duration, so that at the end of each .DELTA.T period the member will have moved

distances .DELTA.X and .DELTA.Y along the X and Y axes, respectively. 28. The method set forth in claim 26 wherein said X and Y axis command signals are changed in said apparatus according to step (e) N-1 times during N-1 successive time periods .DELTA.T,/N and wherein during each Nth time period .DELTA.T/N said X and Y command signals are changed in said apparatus by whatever amounts may be necessary to make the total change therein for the preceding N periods equal to .DELTA.X and .DELTA.Y,

respectively. 29. A method of moving a member displaceable along X and Y axes at a selected angle .theta. in space at a desired composite velocity V comprising the steps of

a. representing by first and second sets of digital signals in a digital processing apparatus numerical values of .DELTA.X and .DELTA.Y respectively equaling V .sup.. cos .theta..sup.. .DELTA.T and V .sup.. sin .theta..sup.. .DELTA.T, where .DELTA.T numerically represents a predetermined time period,

b. deriving in said apparatus from said first and second sets of digital signals third and fourth sets of signals digitally representing .DELTA.X/N and .DELTA.Y,/N where in N is a predetermined numerical constant,

c. measuring off successive periods .DELTA.T/N in actual time,

d. creating from said third and fourth sets of signals digital command numbers XSC and YSC in said apparatus which are changed in steps during each such period .DELTA.T/N by incremental amounts of .DELTA.X/N and .DELTA.Y,/N and

e. driving said member along the X and Y axes at velocities respectively proportional to the average rates of change of said digital command

numbers XSC and YSC. 30. The method of moving a member displaceable along X and Y axes through a desired composite distance D at a desired angle .theta. with a desired composite velocity V comprising the steps of

a. representing in a digital processing apparatus by first digital signals the numerical values of the X and Y axis components I and J of said distance D,

b. representing in said apparatus by second digital signals the numerical values of macromove distances .DELTA.X and .DELTA.Y which are equal to (I .sup.. V .sup.. .DELTA.T)/D and (J .sup.. V .sup.. .DELTA.T)/D, where .DELTA.T is a number representing a predetermined time interval,

c. measuring off in actual time successive equal minor time periods each .DELTA.T/N in duration, where N is a predetermined constant,

d. generating in said apparatus third digital signals numerically representing commanded coordinate positions XSC and YSC of said member along the X and Y axes,

e. deriving from said second digital signals fourth digital signals numerically representing micromove distances .DELTA.X/N and .DELTA.Y/N,

e1. producing in said apparatus fifth and sixth digital signals representing numerically commanded positions XSC and YSC,

f. algebraically combining in said apparatus during each of said minor time periods .DELTA.T/N said third and fourth digital signals to update to a new value said fifth and sixth digital signals such that

where XSC.sub. 1 and YSC.sub. 1 symbolize the value of XSC and YSC at the beginning of a given minor time period, and XSC.sub. 2 and YSC.sub. 2 symbolize the said new value, and

g. moving said member along the X and Y axes by filtering digital servos which act to keep the actual positions of said member along the X and Y axes substantially equal to the changing numerical values of XSC and XSC.

1. A method of generating a series of numerical command signals for moving a member displaceable along X and Y axes at velocity V in a straight line path at angle .theta. with the X axis comprising

a. measuring off successive equal major periods .DELTA.T in actual time,

b. measuring off successive equal minor periods .DELTA.T/N in actual time so as to subdivide each of said major periods .DELTA.T into N minor time periods .DELTA.T/N,

c. producing in a digital processing apparatus first and second sets of signals respectively representing numerically macromove numbers V.sup. . .DELTA.T .sup.. cos .theta. and V.sup.. .DELTA.T .sup.. sin .theta.,

d. producing in said apparatus third and fourth sets of signals respectively representing numerically micromove numbers

by dividing by a factor of N the respective ones of the signaled numbers V.sup. . .DELTA.T .sup.. cos .theta. and V.sup. . .DELTA.T .sup.. sin .theta.,

e. producing in said apparatus fifth and sixth sets of signals respectively representing commanded positions XSC and YSC along the X and Y axes to which said member is to move, and

f. changing said fifth and sixth sets of signals during successive ones of said minor time periods by amounts equal to said micromove numbers

respectively. 32. The method of moving a member simultaneously along X and Y axis to produce resultant movement along a desired path segment which extends substantially along or at right angles to a vector which is the sum of X and Y axis components d .sub.x and d.sub.y, comprising the steps of

a. computing and digitally signaling in a digital processing apparatus the numerical values of small incremental moves .DELTA.X and .DELTA.Y which are each proportional to a different one of the components d.sub. x and d.sub. y by the same factor of proportionality,

b. measuring off a first series of immediately successive, equal and actual time periods .DELTA.T1,

c. measuring off a second series of immediately successive, equal and actual time periods .DELTA.T2 each of which is equal in duration to a time period .DELTA.T1 and staggered to partially overlap one of the periods .DELTA.T1,

d. during each time period .DELTA.T1, utilizing the signaling of .DELTA.X to cause movement of the member through the distance .DELTA.X along the X axis, and

e. during each time period .DELTA.T2, utilizing the signaling of .DELTA.Y to cause movement of the member through the distance .DELTA.Y along the Y

axis. 33. The method defined in claim 32 and further characterized in that said step (a) is performed repeatedly at intervals equal in duration to .DELTA.T1 and .DELTA.T2, thereby to reflect in the computed values .DELTA.X and .DELTA.Y any change in the components d.sub. x and d.sub. y

or in the factor of proportionality. 34. The method of generating periodically updated numerical command signals for moving a member displaceable along X and Y axes at any desired angle .theta. relative to the X axis and at a composite velocity V, said method comprising the steps of

a. measuring off a first series of immediately successive, equal and actual time periods .DELTA.T1,

b. measuring off a second series of immediately successive, equal and actual time periods .DELTA.T2 each of which is equal in duration to a time period .DELTA.T1 and is staggered to partially overlap one of the periods .DELTA.T1,

c. computing and digitally signaling in a digital processing apparatus the numerical values of incremental moves .DELTA.X and .DELTA.Y which are respectively proportional to V .sup.. cos .theta. .sup.. .DELTA.T and V .sup.. sin .theta. .sup.. .DELTA.T, where .DELTA.T numerically represents the duration of each period .DELTA.T1 or .DELTA.T2,

d. utilizing, during each actual time period .DELTA.T1, the digital signaling of .DELTA.X to cause a change in an X axis command signal by the amount .DELTA.X, and

e. utilizing, during each actual time period .DELTA.T2, the digital signaling of .DELTA.Y to cause a change in a Y axis command signal by the

amount .DELTA.y. 35. The method set forth in claim 34, and wherein said computing and digital signaling of the moves .DELTA.X and .DELTA.Y is repeated at a rate of once per period .DELTA.T of time, so as to modify the composite velocity or the angle represented by the changing X and Y

axis command signals if the quantities V or .theta. change. 36. A method of generating a series of numerical commands for moving a member displaceable along X and Y axes at velocity V in a straight line path at angle .theta. with the X axis comprising

a. generating in a digital processing apparatus first, second, third and fourth sets of time base signals, the first recurring at equal time periods of .DELTA.T1, the second recurring at equal time periods .DELTA.T2, the third recurring at equal time periods of .DELTA.T1/N, N times during each time period .DELTA.T1, and the fourth recurring at equal time periods .DELTA.T2/N, N times during each of the time periods .DELTA.T2, said time periods .DELTA.T1 and .DELTA.T2 being of equal duration .DELTA.T but staggered and interleaved relative to one another so that said time periods .DELTA.T1/N and .DELTA.T2/N are coextensive in time,

b. producing in said apparatus fifth and sixth sets of signals respectively representing commanded points XSC and YSC along the X and Y axes to which said member is to move,

c. producing in said apparatus a seventh set of signals digitally representing the quantity V.sup. . .DELTA.T .sup.. sin .theta.,

d. producing in said apparatus an eighth set of signals digitally representing the quantity V . .DELTA.T .sup.. cos .theta.,

e. deriving from said seventh set of signals a ninth set of signals in said apparatus digitally representing the quantity

f. deriving from said eighth set of signals a tenth set of signals in said apparatus digitally representing the quantity

g. during successive ones of said time periods .DELTA.T1/N changing the quantity represented by said fifth set of signals by the quantity represented by said ninth set of signals, and

h. during successive ones of said time periods .DELTA.T2/N changing the quantity represented by said sixth set of signals by the quantity

represented by said tenth set of signals. 37. The method set forth in claim 36, further characterized in that the said step (c) is executed once during each time period .DELTA.T1, and said step (d) is executed once

during each time period .DELTA.T2. 38. The method of moving a member simultaneously along X and Y axes at a resultant velocity V through a series of points distributed along an arc of a circle, comprising the steps of

a. measuring off a succession of equal actual time intervals .DELTA.T,

b. representing by digital signals in a digital processing apparatus a number XSC designating the X axis coordinate of a point on the arc,

c. representing by digital signals in said apparatus a number YSC designating the Y axis coordinate of a point on the arc,

d. computing in said apparatus at successive intervals .DELTA.T the X axis displacement .DELTA.X between successive points on the arc which are separated by a linear chord distance .DELTA.D,

e. computing in said apparatus at successive intervals .DELTA.T the Y axis displacement .DELTA.Y between successive points on the arc which are separated by a linear chord distance .DELTA.D, where the distance .DELTA.D for steps (d) and (e) is equal to V .sup.. .DELTA.T,

f. changing the representation of the number XSC by the computed quantity .DELTA.X at successive intervals .DELTA.T,

g. changing the representation of the number YSC by the computed quantity .DELTA.Y at successive intervals .DELTA.T,

h. moving said member along the X axis through distances and at a velocity corresponding respectively to the changes and average rate of change of the represented number XSC, and

i. moving said member along the Y axis through distances and at a velocity corresponding respectively to the changes and the average rate of change

of the represented number YSC. 39. A method of moving a member displaceable along X and Y axes on a circular arc containing an initial point P0 and a succession of points P1, P2, P3, P4, P5...Pn, each of said points P0 through Pn being a linear distance .DELTA.D from the adjacent one of said points comprising

a. measuring off successive, equal and actual time periods T1, T2, T3, T4, T5...Tn,

b. prior to the respective time periods T1, T3, T5, --producing in a digital processing apparatus signals respectively representing numerically the X axis distances .DELTA.X.sub.02, .DELTA.X.sub.24, .DELTA.X.sub.46 ...between the points P.sub.0 to P2, P2 to P4, P4 to P6 ...,

c. during respective pairs of said series of time periods T1-T2, T3-T4, T5-T6 ...driving said member under control of said signals through said distances .DELTA.X.sub. 02, .DELTA.X.sub. 24, .DELTA.X.sub. 46 ...along the X axis,

d. prior to the respective time periods T2, T4, T6 ...producing in said apparatus signals respectively representing numerically the Y axis distances Y.sub.13, Y.sub.35, Y.sub.57 ...between the points P1 to P3, P3 to P5, P5 to P7 ..., and

e. during respective pairs of said time periods T2-T3, T4-T5, T6-T7 ...driving said member along the Y axis through said distances .DELTA.Y.sub.13, .DELTA.Y.sub.35, Y.sub.57 ... with the speed of said member along both axes being kept substantially uniform during each of said pairs T1-T2, T3-T4, T5-I6....and T2-T3, T4-T5, T6-T7....of time

periods. 40. A method of moving a member displaceable along X and Y axes on a circular arc generated by a radius vector of length R which passes from an initial point P.sub.0 on said arc through a series of points P1, P2, P3, P4, P5 on said arc, each of said points P.sub.0 through P5 being a linear distance .DELTA.D from the adjacent one of said points, comprising

a. measuring off successive, equal and actual time periods T1, T2, T3, T4, T5 ...,

b. prior to time period T1:

1. producing in a digital processing apparatus first and second sets of signals respectively representing numerically the inverse X component I.sub.0 of said radius vector in its initial position at point P.sub.0 and the inverse Y component J.sub.1 of said radius vector at point P.sub.1,

2. processing said J.sub.1 signals to derive therefrom in said apparatus signals numerically representing the quantity

and storing said .DELTA.X.sub. 02 signals,

c. during time period T.sub.1 :

1. processing said I.sub.0 and .DELTA.X.sub. 02 signals to derive therefrom in said apparatus signals numerically representing the quantity I.sub. 0 - .DELTA.X.sub. 02 = I.sub. 2 and storing said I.sub. 2 signals,

2. processing said I.sub. 2 signals to derive therefrom in said apparatus signals numerically representing the quantity

and storing said .DELTA.Y.sub. 13 signals,

d. during time periods T.sub.1 and T.sub.2 utilizing said .DELTA.X.sub. 02 signals to move said member at uniform speed along the X axis through a distance .DELTA.X.sub. 02,

e. during time period T.sub.2 :

1. processing said J.sub. 1 and .DELTA.Y.sub. 13 signals to derive therefrom in said apparatus signals numerically representing the quantity J.sub. 1 - .DELTA.Y.sub. 13 = J.sub. 3 and storing said J.sub. 3 signals,

2. processing in said apparatus said J.sub.3 signals to derive therefrom signals numerically representing the quantity

and storing said .DELTA.X.sub. 24 signals,

f. during time periods T.sub.2 and T.sub.3 utilizing said .DELTA.Y.sub. 13 signals to move said member at uniform speed along the Y axis through a distance .DELTA.Y.sub. 13,

g. during time period T.sub.3 :

1. processing in said apparatus said I.sub.2 and .DELTA.X.sub. 24 signals to derive therefrom signals representing the quantity I.sub. 2 - .DELTA.X.sub. 24 = I.sub. 4 and storing said I.sub. 4 signals,

2. processing in said apparatus said I.sub. 4 signals to derive therefrom signals numerically representing the quantity

and storing said .DELTA. Y.sub.35 signals,

h. during time periods T.sub.3 and T.sub.4 utilizing said .DELTA. X.sub.24 signals to move said member at uniform speed along the X axis through a distance .DELTA.X.sub. 24 , and

i. during time periods T.sub.4 and T.sub.5 utilizing said .DELTA.Y.sub. 35 signals to move said member at a uniform speed along the Y axis

through a distance .DELTA.Y.sub. 35. 41. A method of moving a member displaceable along X and Y on a circular arc generated by a radius vector of length R which passes from an initial point P.sub.O on said arc through a series of points P1, P2, P3, P4, P5 on said arc, each of said points P.sub.O through P5 being a distance .DELTA.D from the adjacent one of said points, comprising

a. measuring off successive, equal and actual time periods T1, T2, T3, T4, T5 ...and measuring off successive shorter time intervals t each of which is in duration equal to two of said periods divided by N, where N is an integer,

b. prior to time period T.sub.1 ;

1. producing in a digital processing apparatus first and second sets of signals respectively representing numerically the inverse X component I.sub.0 of said radius vector in its initial position and the inverse Y component J.sub.1 of said radius vector at point P.sub.1,

2. processing in said apparatus the signals J.sub.1 to derive therefrom signals numerically representing the quantity

and storing said .DELTA.X.sub.02 signals,

c. during time period T.sub.1 :

1. processing in said apparatus said I.sub.0 and .DELTA.X.sub. 02 signals to derive therefrom signals numerically representing the quantity I.sub.0 -.DELTA.X.sub.02 = I.sub.2 and storing said I.sub.2 signals,

2. processing in said apparatus said I.sub.2 signals to derive therefrom signals numerically representing the quantity

and storing said .DELTA.Y.sub. 13 signals,

d. during time periods T.sub.1 and T.sub.2 :

1. deriving in said apparatus from said .DELTA.X.sub. 02 signals, signals numerically representing the quantity .DELTA.X.sub. 02 /N, and

2. utilizing said last derived signals to move said member along the X axis through a distance of .DELTA. X.sub.02 /N during each of N successive time intervals t,

e. during time period T.sub.2 :

1. processing in said apparatus said J.sub. 1 signals and said .DELTA.Y.sub. 13 signals to derive therefrom signals numerically representing the quantity J.sub. 1 - .DELTA.Y.sub. 13 = J.sub. 3 and storing said J.sub. 3 signals,

2. processing in said apparatus said signal J.sub. 3 to derive therefrom signals numerically representing the quantity

and storing said .DELTA.X.sub. 24 signals,

f. during time periods T.sub.2 and T.sub.3 :

1. deriving in said apparatus from said .DELTA.Y.sub. 13 signals, signals numerically representing the quantity .DELTA.Y.sub. 13 /N, and

2. utilizing said last derived signals to move said member along the Y axis through a distance .DELTA. Y.sub.13 /N during each of N successive time intervals t,

g. during time period T.sub.3 :

1. processing in said apparatus said I.sub.2 signals and said .DELTA.X.sub. 24 signals to derive therefrom signals representing the quantity I.sub.2 - .DELTA.X.sub. 24 = I.sub. 4 and storing said I.sub.4 signals,

2. processing in said apparatus said I.sub.4 signals to derive therefrom signals numerically representing the quantity

signals,

h. during time periods T.sub.3 and T.sub.4 :

1. deriving in said apparatus from said signals .DELTA. X.sub.24 signals numerically representing the quantity .DELTA. X.sub.24 /N, and

2. utilizing said last derived signals to move said member along the X axis through a distance .DELTA. X.sub.24 /N during each of N successive time intervals t,

i. during time periods T.sub.4 and T.sub.5 :

1. deriving in said apparatus from said .DELTA. Y.sub.35 signals, signals numerically representing the quantity .DELTA. Y.sub.35 /N, and

2. utilizing said last derived signals to move said member along the Y axis through a distance .DELTA. Y.sub.35 /N during each of N successive time

intervals t, 42. The method of moving a member simultaneously along X and Y axes to produce resultant motion along a desired path to reach a commanded end point having position coordinates X.sub.2, Y.sub. 2, comprising the steps of

a. computing and signaling by first and second sets of digital signals in a digital processing apparatus the numerical values of incremental moves .DELTA.X and .DELTA.Y which are respectively proportional to cos .THETA. and sin .THETA., where .THETA. is the angle at which said path lies relative to the X axis,

b. measuring off successive, equal and actual time periods .DELTA.T,

c. during each of said periods utilizing said first and second sets of signals to cause said member to move the distance .DELTA.X along the X axis and to move the distance .DELTA.Y along the Y axis,

d. detecting and signaling in said apparatus a forecasted overrun during that particular one of said time periods .DELTA.T when one of the coordinates Xp or Yp which will be reached by said member at the end of the next M periods .DELTA.T lies beyond the corresponding end point coordinate X.sub.2 or Y.sub. 2 on the path, where M is an integer greater than zero,

e. in response to such detection, adjusting said first and second signals in said apparatus to represent modified values .DELTA.X' and .DELTA.Y' of incremental moves which will bring the member to actual coordinates Xa and Ya substantially equal to the end point coordinates X.sub. 2 and Y.sub. 2.

3. The method defined in claim 42 and wherein said integer M is 11.

44. The method defined in claim 42 and wherein said integer M is 1. 45. The method defined in claim 42 and wherein the modified value .DELTA.X' is made equal to 1/ Mth of the difference (X.sub. 2 - X'.sub.a) and the modified value .DELTA.Y' is made equal to 1/ Mth of the difference (Y.sub. 2 - Y' .sub.a), where X' .sub.a and Y'.sub.a are the coordinates to be reached by said member during said particular one of said time

periods. 46. The method defined in claim 43 and wherein said step (d) includes the sub-steps of

d1. producing in said apparatus an indicator signal indicative of particular axis (X or Y) along which the member's velocity is the greatest,

d2. in response to said indicator signal and during each of said time periods .DELTA.T, computing and digitally signaling in said apparatus the numerical value of the predicted coordinate (X.sub. p or Y.sub. p) which will be reached by said member along the axis of greatest velocity (X or Y) at the end of the next M periods .DELTA.T,

d3. comparing in said apparatus said signaled value ( X.sub.p or Y.sub. p) during each of said time periods .DELTA.T with the corresponding end point coordinate (X.sub. 2 or Y.sub. 2) on the axis of greatest velocity, and

d4. executing said step (e) when said comparing indicates that the said predicted coordinate (X.sub.p or Y.sub.p) lies beyond the end point coordinate (X.sub.2 or Y.sub.2) in the direction of travel along the axis

of greatest velocity. 47. The method of moving a member displaceable along X and Y axes at a selected angle in space and through a desired composite distance D at a desired composite velocity V to a desired end point coordinates X.sub.2, Y.sub.2 which comprises

a. representing by digital signals in a digital processing apparatus the X and Y components I and J of said composite distance,

b. processing in said apparatus said digital signals to derive first and second sets of signals representing .DELTA.X and .DELTA.Y numbers which are respectively equal to:

1. the product of I, a predetermined time-representing number .DELTA.T and the composite velocity V, all divided by the composite distance D, and

2. the product of J, said predetermined time-representing number .DELTA.T, and the composite velocity V all divided by the composite distance D,

c. measuring off successive equal periods of .DELTA.T in actual time,

d. during each such time period utilizing said first and second sets of signals to drive said member simultaneously and substantially uniformly through the distance .DELTA.X along the X axis and through the distance .DELTA.Y along the Y axis, and

e. adjusting the said first and second sets of signals in said apparatus to represent modified values of the .DELTA.X and .DELTA.Y numbers during at least one of said periods to make the position reached by said member at the end of a given time period .DELTA.T agree closely with the desired end

point coordinates X.sub.2, Y.sub.2. 48. The method of moving a member displaceable along X and Y axes through successive composite distance components D at successive selected angles in space with successive desired composite velocities V which comprises:

a. representing numerically by digital electrical signals in a digital processing apparatus the X and Y components I and J of a first composite distance D,

b. processing said signals in said apparatus to derive first and second sets of signals numerically representing .DELTA.X and .DELTA.Y distances which are respectively equal to:

1. the products of I, a predetermined time-representing number .DELTA.T, and the composite velocity V, all divided by the first composite distance D, and

2. the product of J, said predetermined time-representing number .DELTA.T, and the composite velocity V, all divided by the first composite distance D,

c. measuring off successive equal time periods of .DELTA.T in actual time,

d. during each of said time periods .DELTA.T utilizing said first and second sets of signals to drive said members simultaneously and substantially uniformly through the distance .DELTA.X along the X axis and through the distance .DELTA.Y along the Y axis,

e. adjusting said first and second sets of signals in said apparatus to represent modified values .DELTA.X' and .DELTA.Y' of said .DELTA.X and .DELTA.Y distances during at least one of said periods to make the composite movement executed by said member at the end of one of said time periods .DELTA.T agree closely with the desired first composite distance D, and

f. during at least one of the last few periods .DELTA.T prior to the complete execution of the composite distance D representing numerically in said apparatus by digital electrical signals the X and Y components I and J of the next composite distance D and processing such latter signals as defined in step (b) above, and immediately after said one time period repeating the steps (c) through (e) defined above to effect execution of

movement by the member of said next composite distance D. 49. For use with a numerical director wherein, during each of a series of equal time periods .DELTA.T.sub.1, .DELTA.T.sub.2 ... .DELTA.T.sub.n digital XCP signals are generated in a digital processing apparatus to represent points XCP.sub.1, XCP.sub.2, ... XCP.sub.n which are spaced along the X axis .DELTA.X distance apart and which are to be successively reached by a controlled member in order to reach the X axis coordinate XCEP of the desired end point of a path segment at a desired velocity, a method of predicting the particular time period during which said member would go past said end point, comprising the steps of

a. producing in said apparatus XCEP signals representing said XCEP coordinate,

b. during each of said time periods producing in said apparatus look-ahead signals representing the projected X axis coordinate of the point which said member will be directed to reach during the following M time periods, where M is a preselected integer,

c. during each of said time periods comparing in said apparatus said look-ahead signals with said XCEP signals, and

d. producing in said apparatus a warning signal during the first time period in which said comparison indicates that the X axis coordinate represented by said look-ahead signals is beyond the X axis coordinate

represented by said XCEP signals. 50. The method of claim 49 further characterized by the additional step of terminating movement along said path segment at the end of the time period preceding said particular time

period. 51. The method of claim 49 further characterized by the additional steps of

a. producing in said apparatus an auxiliary signal during said first time period if the amount by which the X axis coordinate represented by said look-ahead signals is past the X axis coordinate represented by said XCEP signals exceeds approximately one-half the X axis distance .DELTA.X to be traversed by said member during the particular time period in which said overrun is predicted to occur,

b. terminating movement along said path segment at the end of the time period preceding said particular time period if both of said warning signal and said auxiliary signal are produced during said first time period, and

c. terminating movement along said path segment at the end of said particular time period if only said warning signal is produced during said

first time period. 52. The method of claim 49 further characterized by the additional step of generating in said apparatus modified signals XCP' in place of at least one of said XCP signals which normally would occur after said first time period, said modified signals XCP' representing points which are spaced along the X axis .DELTA.X' distance apart and the last

one of which coincides with said XCEP coordinate. 53. The method of claim 51 further characterized by the additional steps of

a. generating in said apparatus modified signals XCP' in place of each of M successive ones of said signals in response to the production of both said warning signal and said auxiliary signal during said first time period, said modified XCP signals representing points which are spaced on the X axis by a distance which is greater than .DELTA.X, and

b. generating in said apparatus modified XCP signals in place of each of M successive XCP signals in response to the production of only said warning signal during said first time period, said modified XCP signals representing points which are spaced along the X axis by a distance which

is less than .DELTA.X. 54. A method of generating a series of numerical command signals for moving a member displaceable along X and Y axes to a target point X2, Y2 along a straight line path at a velocity V and at an angle .theta. to the X axis comprising

a. generating time base signals cyclically recurring at, and defining a succession of, equal time periods .DELTA.T,

b. producing in a digital processing apparatus first and second sets of signals respectively representing, in the form of macromove numbers, distances V .sup. . .DELTA.T .sup. . cos .theta. and V .sup. . .DELTA.T .sup. . sin .theta. through which said member is to move over an elapsed time of .DELTA.T duration along the X and Y axes respectively,

c. producing in said apparatus third and fourth sets of signals respectively representing points XCP, YCP along the X and Y axes which said member is to reach,

d. periodically upgrading said third and fourth sets of signals by amounts equal to said macromove numbers V .sup.. .DELTA.T .sup. . sin .theta. and V .sup.. .DELTA.T .sup.. cos .theta. respectively,

e. following each upgrading of one of said sets of signals producing in said apparatus signals representing the projected distance which said member will be directed to traverse along a selected one of said X and Y axes during the following M time periods of .DELTA.T duration where M is a predetermined integer other than zero, and

f. determining in said apparatus whether or not the position to be reached by the member after it has traversed said projected distance will be

beyond its target point for said selected axis. 55. The method of claim 54 further characterized by the additional step of

a. in response to a determination that said member would reach its target point along said selected axis within M time periods of .DELTA.T duration, changing said macromove numbers V.sup...DELTA.T.sup.. sin .theta. and V.sup.. .DELTA.T.sup.. cos .theta. for subsequent time periods .DELTA.T so as to cause said upgraded third and fourth sets of signals in said apparatus to represent coordinate points XCP and YCP which are substantially equal to the target coordinates X2 and Y2 after upgrading

during one of the time periods. 56. The method of claim 54 further characterized by the additional steps of

a. during each time period .DELTA.T producing in said apparatus first and second sets of signals representing the amount, if any, by which said member would be directed past its target point along said selected axis during the following M and M-1/2 time periods,

b. if it is determined that said member would be directed to travel past its target point on said selected axis within M-1/2 time periods, increasing by equal proportions the signaled macromove numbers V.sup. . .DELTA.T.sup. . cos .theta. and V.sup. . .DELTA.T.sup. . sin .theta. to be traveled along said X and Y axes during each of the M-1 time periods .DELTA.T which precede the specific time period .DELTA.T in which said member would travel past its target point, so that said member will actually reach its target points X2, Y2 substantially at the end of the last one of said preceding M-1 time periods .DELTA.T, and

c. if it is determined that said member would be directed to travel past its target point along said selected axis within M time periods .DELTA.T but not within M-1/2 time periods .DELTA.T, reducing the signaled macromove numbers V.sup. . .DELTA.T.sup. . cos .theta. and V.sup.. .DELTA.T.sup.. sin .theta. representing the distances to be traversed by said member during the specific time period .DELTA.T in which the element would otherwise travel past its target point along said selected axis and also during the M-2 time periods .DELTA.T prior thereto by equal proportions so that the element will actually reach its target points x2,

Y2 substantially at the end of said specific time period .DELTA.T. 57. In a system for moving a member simultaneously along X and Y axes to produce resultant movement along a desired path segment which extends substantially along or at right angles to a vector which is the sum of X and Y axis components d.sub.x and d.sub.y, the combination comprising

a. means for digitally signaling the numerical values of the components d.sub.x and d.sub.y,

b. a time shared arithmetic computer having a cyclic time base generator repeatedly signaling recurring successive and equal time periods .DELTA.T,

c. means for feeding the signals representing d.sub.x and d.sub.y to said computer during at least a portion of some of said periods .DELTA.T along with signals representing a factor of proportionality Q to obtain output signals from the computer representing small, incremental moves .DELTA.X and .DELTA.Y which are respectively proportional to d.sub.x and d.sub.y by said factor of proportionality Q, said factor of proportionality Q itself being directly proportional to the desired path velocity and inversely proportional to the length of said vector,

d. and means responsive to said output signals from said computer for driving said member through the distance .DELTA.X along the X axis during each of said time periods .DELTA.T, and for driving said member through the distance .DELTA.Y along the Y axis during each of said time periods

.DELTA.T. 58. In a system for moving a member simultaneously along X and Y axes to produce resultant movement along a path segment D having X and Y axis components I and J, the combination comprising

a. means for digitally signaling the numerical values of the components I and J,

b. a time shared arithmetic computer having a time base generator repeatedly signaling the lapse of successive, equal time periods .DELTA.T,

c. means feeding the signals representing I and J to said computer during at least a portion of some of said time periods together with signals representing a factor of proportionality to obtain output signals from the computer representing small incremental moves .DELTA.X and .DELTA.Y which are respectively proportional to I and J, said factor of proportionality Q itself being directly proportional to the desired path velocity and inversely proportional to the length of said path segment,

d. and means responsive to said output signals for driving said member during each period .DELTA.T through the distance .DELTA.X along the X axis

and the distance .DELTA.Y along the Y axis. 59. The combination set forth in claim 58, further characterized in that said means (d) includes

d1. accumulator registers adapted to receive and digitally store signals representing command coordinate numbers XSC and YSC,

d2. means controlling said computer to cause the latter once during each time period .DELTA.T to (i) add the number .DELTA.X to the number XSC and store the result in said registers and

ii. add the number .DELTA.Y to said number YSC and store the result in said registers,

d3. and servo drive means responsive to the XSC and YSC signals to drive said member along the X and Y axes through distances and at velocities proportional to the extents and the average rate of change of the numbers

XSC and YSC, respectively. 60. The combination set forth in claim 58, further characterized in that said factor of proportionality Q is equal to ( V.sup.. .DELTA.T)/ D, where V represents a desired velocity along the path segment, D represents the length of the path segment, and .DELTA.T numerically represents the duration of each of said periods .DELTA.T, the said output signals .DELTA.X and .DELTA.Y thereby respectively representing the quantities (V.sup. . .DELTA.T.sup. . I)/D and ( V.sup..

.DELTA. T.sup.. J)/ D. 61. In a numerical control system a director for producing first and second sets of digital command signals each changed at time intervals of .DELTA.T to represent successive designated X and Y coordinates of a controlled member which is to move at a velocity V from a pair of initial coordinates X.sub.i, Y.sub.i along a linear path D having an X component I and a Y component J comprising

a. a digital computer,

b. a plurality of digital signal storage means for storing digital signals;

c. means for storing in respective ones of a first and a second of said signal storage means, signals numerically representing I and J,

d. means for causing said computer successively to process the signals stored in said first and second storage means and to produce as a result signals numerically representing the quantities

e. means for storing the signals representing .DELTA.X and .DELTA.Y in respective ones of a third and a fourth of said signal storage means,

f. said plurality including fifth and sixth storage means for holding first and second command signals numerically representing commanded coordinates XCP and YCP,

g. means for initially supplying into said fifth and sixth storage means signals which make the stored representation of XCP and YCP equal to the initial coordinates X.sub.i and Y.sub.i, and

h. means for causing said computer to operate during equal, successive time periods .DELTA.T on the signals stored in said fifth storage means so as to change the coordinate value XCP represented thereby the quantity .DELTA.X and on the signals stored in said sixth storage means so as to change the coordinate value YCP represented thereby by the quantity

.DELTA.Y. 62. In a numerical control system a director for producing first and second sets of digital command signals changed at periods of .DELTA.T to represent successive designated X and Y coordinates of a controlled member which is to move at a velocity V from a point having coordinates X0, Y0 along a linear path D having an X component I and a Y component J comprising

a. a digital computer,

b. a plurality of digital signal storage means for storing digital signals,

c. means for storing, in respective ones of a first and a second of said signal storage means, signals numerically representing I and J,

d. means for causing said computer successively to process the signals stored in said first and second storage means and to produce as a result signals numerically representing the quantities

e. means for storing the signals representing .DELTA.X and .DELTA.Y in respective ones of a third and a fourth of said signal storage means,

f. means for initially storing in respective ones of a fifth and a sixth of said plurality of storage means signals XSC and YSC representing the coordinates X0 and YO, and

g. means for causing said computer to operate at intervals of .DELTA.T/N, where Nis a predetermined constant, on the signals XSC stored in said fifth storage means so as to change the coordinate value represented thereby by the quantity .DELTA.X/N , and on the signals YSC stored in said sixth storage means so as to change the coordinate value represented

thereby by the quantity .DELTA.Y/N. 63. A numerical control system for moving a controlled member in an X-Y coordinate system at a velocity V from a pair of initial coordinates X.sub.i, Y.sub.i along a linear path D having an X component I and a Y component J comprising

a. a digital computer,

b. a plurality of digital signal storage means for storing digital signals,

c. means for storing in respective ones of a first and a second of said signal storage means signals numerically representing I and J,

d. means for causing said computer successively to process the signals stored in said first and second storage means and to produce as a result signals numerically representing the quantities

where .DELTA.T is a predetermined time interval;

e. means for storing the signals representing .DELTA.X and .DELTA.Y in respective ones of a third and a fourth of said signal storage means,

f. said plurality including fifth and sixth storage means for holding first and second command signals numerically representing X and Y commanded coordinates XCP and YCP,

g. means for initially setting said fifth and sixth storage means to make the stored representation of XCP and YCP equal to the initial coordinates X.sub.0 and Y.sub.0,

h. means for feeding to said computer

1. the signals stored in said third and fifth storage means, respectively representing .DELTA.X and XCP, and

2. the signals stored in said fourth and sixth storage means, respectively representing .DELTA.Y and YCP,

i. means for causing said computer to produce in response to the signals from said third and fifth storage means signals representing XCP.sub.new = XCP + .DELTA.X and in response to the signals from said fourth and sixth storage means signals representing YCP.sub.new = YCP + .DELTA.Y,

j. means for feeding said XCP.sub.new and YCP.sub.new signals from said computer to said fifth and sixth storage means respectively, and

k. first and second filtering servos respectively connected to respond to said changing XCP and YCP signals and to keep the positions of said controlled member along the X and Y axes substantially equal to the

numerical values of XCP.sub.new and YCP.sub.new. 64. In a numerical control system a director for producing first and second sets of digital command signals each changed at time intervals of .DELTA.T to represent successive designated X and Y coordinates of a controlled member which is to move at a velocity V from a pair of initial coordinates X.sub.i, Y.sub.i along a linear path D having an X component I and a Y component J comprising

a. a digital computer

b. a plurality of digital signal storage means for storing digital signals,

c. means for storing, in respective ones of a first and a second of said plurality, signals numerically representing I and J,

d. means for storing, in a third one of said plurality, signals representing Q which is equal to said velocity V times one of said time intervals .DELTA.T, all divided by said path D,

e. means for causing said computer to utilize the signals stored in said first and third storage means to produce signals numerically representing the quantity I times Q, and for storing said I times Q signals in a fourth one of said plurality to represent an X increment .DELTA.X,

f. means for causing said computer to utilize the signals stored in said second and third storage means to produce signals numerically representing the quantity J times Q and for storing said J times Q signals in a fifth one of said plurality to represent a Y increment .DELTA.Y,

g. said plurality including sixth and seventh storage means for holding first and second command signals numerically representing commanded coordinates XCP and YCP,

h. means for initially supplying into said sixth and seventh storage means signals which make the stored representation of XCP and YCP equal to the initial coordinates X.sub.i and Y.sub.i,

i. means for causing said computer to utilize the signals in said fourth storage means to change at time intervals at .DELTA.T the coordinate value XCP represented by the signals stored in said sixth storage means by the quantity .DELTA.X, and

j. means for causing said computer to utilize the signals in said fifth storage means to change at time intervals of .DELTA.T the coordinate value YCP represented by the signals stored in said sixth storage means by the

quantity .DELTA.Y. 65. In a numerical control system a director for producing first and second sets of digital command signals changed at periods of .DELTA.T to represent successive designated X and Y coordinates of a controlled member which is to move at a velocity V from a point having coordinates X.sub.0 and Y.sub.0 along a linear path D having an X component I and a Y component J to an end point having coordinates X.sub.1, Y.sub.1 comprising

a. a digital computer,

b. a plurality of digital signal storage means,

c. means for storing digital signals for storing in respective ones of a first and a second of said signal storage means signals numerically representing I and J,

d. means for causing said computer successively to process the signals stored in said first and second storage means and to produce as a result signals numerically representing the quantities

e. means for storing the signals representing .DELTA.X and .DELTA.Y in respective ones of a third and a fourth of said signal storage means,

f. said plurality including fifth and sixth storage means for holding first and second command signals numerically representing commanded coordinates XCP and YCP,

g. means for initially supplying into said fifth and sixth storage means signals which make the stored representation of XCP and YCP equal to the coordinates X.sub.0 and Y.sub.0,

h. means for causing said computer to operate over a given period of time at intervals of .DELTA.T on the signals stored in said fifth storage means so as to change the coordinate value XCP represented thereby by the quantity .DELTA.X and on the signals stored in said sixth storage means so as to change the coordinate value YCP represented thereby by the quantity .DELTA.Y, and

i. means for causing said computer to operate over another given period of time at intervals of .DELTA.T on the signals stored in said fifth and sixth storage means to change the coordinate values XCP and YCP represented thereby by quantities .DELTA.X' and .DELTA.Y', said quantities .DELTA.X' and .DELTA.Y' having values such that after one of said time intervals .DELTA. T during said another given time period the coordinate values of XCP and YCP will closely agree with the coordinates X.sub.1,

Y.sub.1 of said end point. 66. In a numerical control system a director for producing first and second sets of digital command signals changed at periods of .DELTA.T to represent successive designated X and Y coordinates of a controlled member which is to move at a velocity V from a point having coordinates X.sub.0 and Y.sub.0 along successive linear paths D, each having an X component I and a Y component J comprising

a. a digital computer,

b. a plurality of digital signal storage means for storing digital signals,

c. means for storing in respective ones of a first and a second of said signal storage means signals numerically representing I and J,

d. means for causing said computer successively to process the signals stored in said first and second storage means and to produce as a result signals numerically representing the quantities

e. means for storing the signals representing .DELTA.X and .DELTA.Y in respective ones of a third and a fourth of said signal storage means,

f. said plurality including fifth and sixth storage means for holding first and second command signals numerically representing commanded coordinates XCP and YCP,

g. means for initially supplying into said fifth and sixth storage means signals which make the stored representation of XCP and YCP equal to the coordinates X.sub.0 and Y.sub.0,

h. means for causing said computer to utilize the signals stored in said third storage means to change by an amount .DELTA.X at intervals of .DELTA.T the coordinate value XCP represented by the signals stored in

said fifth storage means, 67. The director of claim 66 further characterized by means for producing third and fourth sets of command signals XSC and YSC changed at periods of .DELTA.T/N, where N is a predetermined constant, to represent successive designated X and Y coordinates which are intermediate the X and Y coordinates XCP and YCP represented by said first and second command signals, said means for producing third and fourth sets of command signals including

a. seventh and eighth storage means for storing digital signals,

b. means for initially storing in respective ones of said seventh and eighth storage means XSC and YSC signals representing the coordinates X.sub.0 and Y.sub.0,

c. means for causing said digital computer during each successive period .DELTA.T/N to process the signals stored in said third storage means to derive therefrom the quantity .DELTA.X/N and thereafter to operate upon the signals stored in said seventh storage means so as to change the XSC coordinate value represented thereby by the quantity .DELTA.X/N, and

d. means for causing said digital computer during each period .DELTA.T/N to process the signals stored in said fourth storage means so as to derive therefrom the quantity .DELTA.Y/N and thereafter to operate upon the signals stored in said eighth storage means so as to change the YSC coordinate value represented thereby by the quantity .DELTA.Y/N.

i. means for causing said computer to utilize the signal stored in said fourth storage means to change by an amount .DELTA.Y at intervals of .DELTA.T the coordinate value YCP represented by the signals stored in said sixth storage means,

j. means responsive to the coordinate represented by the signals stored in at least one of said fifth and sixth storage means reaching within a predetermined distance of the end of the first of said linear paths D for entering signals numerically representing the I and J values of the next one of said paths D in the respective ones of said first and second storage means, said means (d) through (h) being operative to repeat their

defined functions thereafter. 68. The director of claim 66 further characterized by means for predicting the specific time period .DELTA.T during which the command signal XCP will be changed to represent X coordinates which are past a desired X axis end point coordinate XCEP, said means for predicting including

a. ninth storage means and means for storing in it the signals representing said end point coordinate XCEP, and

b. means for causing said computer to process during each said time period .DELTA.T the signals stored in said third, fifth, and ninth storage means to produce a signal representing the comparative magnitudes of

1. the quantity stored in said ninth storage means, and

2. the sum of the quantity stored in said fifth storage means and M times the quantity stored in said third storage means, where M is a preselected integer greater than zero, and

c. means responsive to said signal representing comparative magnitudes for producing a block end warning signal during the first time period in which

the initially lesser of the compared quantities becomes the greater. 69. The director of claim 68 further characterized by means for producing, during the same time period .DELTA.T in which said block end warning signal appears, a signal indicative of whether or not the command signals scheduled to be produced during said specific time period .DELTA.T represent an X coordinate which differs from said end point coordinate

XCEP by more than one-half .DELTA.X. 70. The director of claim 68 further characterized by means responsive to said block end warning signal for changing, for a predetermined number of time periods .DELTA.T prior to said specific time period .DELTA.T, the signals stored in said third and fourth storage means to represent modified values of .DELTA.X' and .DELTA.Y' which, when repetitively added said predetermined number of times to the coordinate quantities represented by the signals XCP stored in said fifth storage means, will cause said last named signals to represent the X and Y axis coordinate values which essentially equal said

end point coordinate value XCEP. 71. In a straight line generator for extending a straight line through a distance D at a resultant velocity V during successive time periods .DELTA.T along the Y axis and during successive time periods .DELTA.T' along the X axis, said time periods .DELTA.T and .DELTA.T' being of equal duration but symmetrically staggered, the combination comprising

a. computing means for performing arithmetic computations,

b. means for storing a number I and a number J respectively representing the X and Y component distances of the distance D,

c. means for receiving and storing a number .DELTA.X,

d. means for receiving and storing a number .DELTA.Y,

e. first control means for causing said computing means to multiply said number I by a factor of (V.sup. . .DELTA.T)/D and to store the resulting product in said means for receiving and storing the number .DELTA.X,

f. second control means for causing said computing means to multiply said number J by a factor of V.sup.. .DELTA.T/D and to store the resulting product in said means for receiving and storing the number .DELTA.Y,

g. means for extending said straight line along the X axis during each of said periods .DELTA.T by an amount represented by said number .DELTA.X, and

h. means for extending said straight line along the Y axis during each of said periods .DELTA.T' by an amount represented by said number .DELTA.Y.

. In a numerical control system a director for producing X and Y axis command signals numerically representing motion along a straight line through a distance D at a resultant velocity V during successive time periods .DELTA.T along the Y axis and during successive time periods .DELTA.T' along the X axis said time periods .DELTA.T and .DELTA.T' being of equal duration but symmetrically staggered, the combination comprising

a. computing means for performing arithmetic computations,

b. means for storing a number I and a number J respectively representing the X and Y coordinate distances from a first point Po to a second point Pe,

c. means for receiving and storing a number .DELTA.X and a number .DELTA.Y respectively representing desired motion along the X and Y axes during said time periods .DELTA.T' and .DELTA.T respectively,

d. first control means for causing said computing means to multiply said number I by a factor of V.sup.. .DELTA.T/D and to store the resulting product in said means for receiving and storing the number .DELTA.X,

e. a second control means for causing said computing means to multiply said number J by a factor of V.sup.. .DELTA.T/D and to store the resulting product in said means for receiving and storing the number .DELTA.Y,

f. a first updatable storage register and means for entering into it a number X.sub.s representing the X coordinate of said point Po,

g. a second updatable storage register and means for entering into it a number Y.sub.s representing the Y coordinate of a point P.sub.1 on a straight line between said points P.sub.0 and Pe and at a distance of (V.sup.. .DELTA.T)/2 from said point P.sub.o

h. third control means for causing said computing means to change the number X.sub.s stored in said first register N times during each of said time periods .DELTA.T, each time by an amount substantially equal to .DELTA.X/N, and

i. fourth control means for causing said computing means to change the number Y.sub.s stored in said second register N times during each of said time periods .DELTA.T', each time by an amount substantially equal to

.DELTA.Y/N. 73. A numerical control for causing relative motion between two machine members along a circular path, comprising

a. first and second storage means for storing digital signals,

b. means including a digital computer for storing in said first storage means a first series of numbers at regularly spaced time intervals .DELTA.T, respective ones of said first series of numbers representing the X axis distances between a first series of equidistance points P0, P2, P4 on said circular path,

c. means including said digital computer for storing in said second storage means a second series of numbers at regularly spaced time intervals .DELTA.T' which are staggered symmetrically with but are of the same duration as said time intervals .DELTA.T, respective ones of said second series of numbers representing the Y axis distances between a second series of equidistant points P1, P3, P5 on said circular path staggered symmetrically with but spaced the same distance apart as said points P0, P2, P4,

d. means responsive to the numbers stored in said first storage means for causing relative motion between said machine members corresponding to respective ones of said X axis distances during successive ones of said time intervals .DELTA.T, and

e. means responsive to the numbers stored in said second storage means for causing relative motion between said machine members corresponding to respective ones of said Y axis distances during successive ones of said

time intervals .DELTA.T'. 74. a circle generator comprising

a. first and second storage means for storing digital signals,

b. a digital computer,

c. first control means for causing said computer to calculate and store in said first storage means a first series of numbers at regularly spaced time intervals .DELTA.T, respective ones of said first series of numbers representing the X axis distances between a first series of equidistant points P0, P2, P4 on said circle,

d. second control means for causing said digital computer to calculate and store in said second storage means a second series of numbers at regularly spaced time intervals .DELTA.T' which are staggered symmetrically with but are of the same duration as said time intervals .DELTA.T, respective ones of said second series of numbers representing the Y axis distances between a second series of equidistant points P1, P3, P5 on said circle staggered symmetrically with but spaced the same distance apart as said points P0, P2, P4,

e. third and fourth storage means respectively for storing numbers representing the X coordinate of said point P0 and the Y coordinate of said point P.sub.1,

f. means for causing said digital computer successively to change the number stored in said third storage means N times during each of said time intervals .DELTA.T, each time by an amount equal to 1/ N times the number then stored in said first storage means, and

g. means for causing said digital computer successively to change the number stored in said fourth storage means N times during each of said time intervals .DELTA.T' each time by an amount equal to 1/ N times the

number then stored in said second storage means. 75. A numerical control for causing relative motion between two machine members along a circular path, comprising

a. computing means for performing arithmetic computations,

b. means for storing a number I representing the X coordinate distance from a first point P0 of said circular path to the center of said circular path, a number J representing the Y coordinate distance of a second point P.sub.1 on said circular path to the center of said circular path, a number .DELTA.Y representing a desired extension of said circular path along the Y axis toward said point P1, and a number .DELTA.X representing a desired extension of said circular path along the X axis from the X coordinate of said point P0 to the X coordinate of a point P2 on said circular path, said point P1 being midway between said points P0 and P2,

c. first control means for causing said computing means to replace the stored number I with the remainder of said number I less the stored number .DELTA.X, then to multiply said remainder by a factor -Q, where Q is the ratio of the distance between said points P0 and P2 and the distance between said point P0 and the center of said circular path, and finally to store the resulting product as a newly stored number .DELTA.Y, representing the next desired extension of said circular path along the Y axis, in place of the previously stored number .DELTA.Y,

d. second control means for causing said computing means to replace the stored number J with the remainder of said number J less the newly stored number .DELTA.Y, then to multiply said last remainder by said ratio Q, and finally to store the resulting product as a newly stored number .DELTA.X, representing the next desired extension of said circular path along the X axis, in place of said previously stored number .DELTA.X, each of said first and second control means repeating its assigned series of functions a predetermined time after the other of said control means has carried out its assigned series of functions, and

e. means for causing relative motion between said machine members along the X and Y axes by amounts corresponding to successive ones of said newly

stored .DELTA.X and .DELTA.Y numbers. 76. In a circular curve generator the combination comprising

a. computing means for performing arithmetic computations,

b. means for storing a number I representing the X coordinate distance from a first point P0 of said circle to the center of said circle, a number J representing the Y coordinate of a second point P1 on said circle to the center of said circle, a number .DELTA.Y representing a desired extension of said curve along the Y axis toward said point P.sub.1, and a number .DELTA.X representing a desired extension of said curve along the X axis from the X coordinate of said point P0 to the X coordinate of a point P2 on said circle, said point P.sub.1 being midway between said points P0 and P2,

c. first control means for causing said computing means to replace the stored number I with the remainder of said number I less the stored number .DELTA.X, then to multiply said remainder by a factor -Q, where Q is the ratio of the distance between said points P0 and P2 and the distance between said point P0 and the center of said circle, and finally to store the resulting product as a newly stored number .DELTA.Y, representing the next desired extension of said curve along the Y axis, in place of the stored number .DELTA.Y,

d. second control means for causing said computing means to replace the stored number J with the remainder of said number J and the newly stored number .DELTA.Y, then to multiply said last remainder by said ratio Q, and finally to store the resulting product as a newly stored number .DELTA.X, representing the next desired extension of said curve along the X axis, in place of said stored number .DELTA.X, each of said first and second control means repeating its assigned series of functions a predetermined time after the other of said control means has carried out its assigned series of functions,

e. means for storing a pair of numbers respectively representing the X coordinate of said point P0, and the Y coordinate of said point P.sub.1, and

f. third and fourth control means respectively for causing said computing means to change the stored P0 X coordinate and the P1 Y coordinate numbers by increments corresponding to respective successions of said newly stored .DELTA.X and .DELTA.Y numbers, each said incremental change being made by

said computing means in N substantially equal steps. 77. In a circle generator, the combination comprising

a. arithmetic computing means for performing arithmetic computations,

b. means for initially storing a number I.sub.0 representing the X coordinate distance from a first point PO on said circle to the center of said circle and a number J.sub.0 representing the Y coordinate distance of said point P.sub.0 to the center of said circle,

c. storage means for receiving from said computing means and storing a number .DELTA.Y representing a distance along the Y axis and a number .DELTA.X representing a distance along the X axis,

d. first control means for causing said computing means to multiply said initially stored number I.sub.0 by a factor -Q, where Q is the ratio of the distance between said point P0 and a further point P2 on said circle and the distance between said point P0 and the center of said circle, and to store the product, representing twice the desired initial extension of said circle along the Y axis, in said storage means as the first number .DELTA.Y,

e. second control means for causing said computing means to replace the initially stored number J.sub.0 with a new number J.sub.1 which is equal to the remainder of said number J.sub.0 less one-half of said stored first number .DELTA.Y, to multiply said sum by said ratio Q and finally to store the product, representing the first desired extension of said circle along the X axis, in said storage means as the first number .DELTA.X,

f. third control means for causing said computing means to replace the initially stored number I.sub.0 with a new number I.sub.2 which is equal to the remainder of said number I.sub.0 less the stored first number .DELTA.X, then to multiply said last-named remainder by a factor of -Q, and finally to store newly the resulting product, representing the next desired extension of said circle along the Y axis in place of the said stored first number .DELTA.Y,

g. fourth control means for causing said computing means to replace the stored number J.sub.1 with the remainder of said number J.sub.1 less the newly stored number .DELTA.Y, then to multiply said last remainder by said ratio Q, and finally to store newly the resulting product, representing the next desired extension of said circle along the X axis, in place of said stored first number .DELTA.X, each of said third and fourth control means repeating its assigned series of functions a predetermined time after the other of said third and fourth control means has carried out its assigned series of functions, and

h. means for extending said circle by amount corresponding to one-half said first number .DELTA.Y and successive ones of said newly stored numbers .DELTA.Y along the Y axis, and by amounts corresponding to said first number .DELTA.X and successive ones of said newly stored numbers .DELTA.X

along the X axis. 78. A circle generator comprising

a. first and second storage means for storing digital signals,

b. a digital computer,

c. first control means for causing said digital computer to calculate and store in said first storage means a first series of numbers at regularly spaced time intervals .DELTA.T, respective ones of said numbers representing the X coordinate distances between a first series of equidistant points P.sub.0, P2, P4 on said circle,

d. second control means for causing said digital computer to calculate and store in said second storage means a second series of numbers at regularly spaced intervals .DELTA.T' which are staggered symmetrically with but are of the same duration as said time intervals .DELTA.T, respective ones of said second series of numbers representing the Y coordinate distances between a second series of equidistant points P1, P3, P5 on said circle staggered symmetrically with but spaced the same distance apart as said points P0, P2, P4,

e. third and fourth storage means respectively for storing numbers representing the X coordinate of said point P0 and the Y coordinate of said point P1,

f. means for causing said digital computer to change the numbers stored in said third storage means during successive ones of said time intervals .DELTA.T by amounts equal to the numbers stored in said first storage means,

g. means for causing said digital computer to change the numbers stored in said fourth storage means during successive ones of said intervals .DELTA.T' by amounts equal to the numbers stored in said second storage means,

h. fifth storage means for storing a number X.sub.1 representing the X coordinate of a target point on said circle,

i. control means for causing said computer to compare during each said time interval .DELTA.T the sum of (1) the changed number stored in said third storage means, and (2) an integral multiple of the number stored in said first storage means with (3) the number stored in said fifth storage means, and to produce a signal indicating which of the compared quantities is the lesser; and

j. means responsive to said signal for producing a block end warning signal during the first time period .DELTA.T in which the lesser of the compared

quantities becomes the greater. 79. In a numerical control system a director for producing first and second sets of digital command signals changed at time periods of .DELTA.T to represent successive designated X and Y coordinates of a controlled member which is to move at a velocity V from a point having coordinates X.sub.0, Y.sub.0 along a linear path to an end point having coordinates X.sub.1, Y.sub.1, the combination comprising

a. an arithmetic digital computer,

b. a plurality of digital signal storage means for storing digital signals,

c. means for storing in respective ones of a first and a second of said signal storage means signals numerically representing quantities .DELTA.X and .DELTA.Y,

d. means for initially storing in respective ones of a third and a fourth of said plurality of storage means signals representing the coordinates X.sub.0, Y.sub.0,

e. means for causing said computer to operate at intervals of .DELTA.T on the signals stored in said third storage means so as to vary the coordinate value represented thereby by the quantity .DELTA.X and on the signals stored in said fourth storage means so as to vary the coordinate values represented thereby by the quantity .DELTA.Y, the values represented by the resulting signals in said third and fourth storage means being designated XCP and YCP respectively,

f. means for comparing the quantities XCP + M.DELTA.X and XCP + M.DELTA.X-1/2.DELTA.X during each of said time periods .DELTA.T with the value of said X axis end point coordinate X.sub.1 and giving a first indication if the first of said quantities has been changed to go through the value of said coordinate X.sub.1 and giving a second indication if the second of said quantities has also been changed to go through the value of said coordinate X.sub.1,

g. means responsive to said first indication to cause said digital computer to replace, during the following time period .DELTA.T, signals stored in said first and second storage means with signals respectively representing the quantities

and

h. means responsive to said second indication to cause said digital computer to replace during the same time period .DELTA.T in which said second indication is given the signals stored in said first and second storage means with signals representing the quantities

80. A method for reducing the handling capacity required for storage in arithmetic elements of a numerical director used to generate command signals for moving a member displaceable along X and Y axes by continuously computing in the form of macromove numbers the distances which said member is to traverse along the X and Y axes during each of a succession of equal time periods and by further processing the computed macromove numbers to produce successive X and Y axis target points to be reached by said member after successive ones of said time periods comprising

1. measuring off in actual time successive, equal time periods .DELTA.T,

a. computing and signaling in digital processing apparatus during each time period to N significant figures the distance to be traversed by said member along one of said axes during the following time period,

b. adding in said apparatus to the result the last M digits of the distance required for said one axis during the previous time period,

c. storing in said apparatus the first N-M digits of the sum of said addition in a first register and the last M digits of said sum in a second register, and

d. processing in said apparatus only the digits stored in said first register to produce signals representing target points along said one axis, whereby the number of digits required to be processed by said director in the process of computing said target points is reduced by M

without causing an error to accumulate. 81. A method of advancing the X and Y axis servo drives of a member driven by said servo drives along the X and Y axes through a selected path comprising

a. measuring off a first series of time intervals .DELTA. T and a second series of time intervals .DELTA.T', said intervals .DELTA.T' being of the same duration as, but starting midway through respective ones of, said intervals .DELTA.T,

b. individually computing and signaling, in a digital processing apparatus, for each of said time intervals .DELTA.T the X axis distance to be traversed by said member during said time interval .DELTA.T and for each of said time intervals .DELTA.T' the Y axis distance to be traversed by said member during said time interval .DELTA.T',

c. during each of said time intervals .DELTA.T advancing the X axis servo drive in a plurality of substantially equal increments the sum of which equals the X axis distance computed for a said time interval .DELTA.T, and

d. during each of said time intervals .DELTA.T' advancing the Y axis servo drive in a plurality of substantially equal increments the sum of which equals the Y axis distance computed for a said time interval .DELTA.T'.

A method of moving a member displaceable along X and Y axes through successive path segments which comprises

a. representing in a digital processing apparatus a first path segment by a pair of digitally signaled path numbers I and J,

b. measuring off a first series of time intervals .DELTA.T and a second series of time intervals .DELTA.T', said intervals .DELTA.T' being of the same duration as, but starting midway through respective ones of said intervals .DELTA.T,

c. for each of said time intervals .DELTA.T computing in said apparatus from said path numbers I and J the Y coordinate distance to be traversed by said member during said time interval .DELTA.T and for each of said time intervals .DELTA.T' computing in said apparatus from said path numbers I and J the X coordinate distance to be traversed by said member during said time interval .DELTA.T',

d. during each of said intervals, .DELTA.T moving said member along the Y axis in a plurality of substantially equal increments the sum of which equals the Y coordinate distance computed for said time interval .DELTA.T, and during each of said time intervals .DELTA.T' moving said member along the X axis in a plurality of substantially equal increments the sum of which equals the X coordinate distance computed for said time interval .DELTA.T', and

e. during at least one of the last few periods .DELTA.T prior to the complete execution of said first path segment representing in said apparatus a second path segment by a second pair of digitally signaled path numbers I and J and thereafter repeating steps (c) and (d) to cause said member to execute said second path segment.
Description



BACKGROUND OF THE INVENTION

The present invention relates in general to systems wherein information read from a punched tape or the like is supplied to data processing apparatus which in turn controls the operation of a utilization device. Such systems are exemplified by the well-known "numerical control" systems for machine tools or the like in which a numerically defined program of successive motions to be executed along a continuous path is represented on successive blocks of, and read from, a punched tape into a "director" which governs the servo drives of the movable elements of the machine tool.

In past numerical path controls for machine tools it has been customary to produce a separate stream of relatively evenly time spaced pulses for each separate axis of the machine tool and to assign a physical significance to each pulse so produced. For example, a common convention has been to regard each pulse as corresponding to an increment of movement such as 0.0001".

Because of the extremely wide speed range required for each axis, the pulse repetition rate may vary from 0 to a maximum through a very large number of different pulse repetition frequencies. For a machine having a top speed of 200" per minute, the maximum pulse repetition rate at 0.0001 inches per pulse would be 33-1/3 kHz.

A numerical path control built in accordance with past practice would, therefore, typically require the production of a separate stream of pulses for each of the separate axes, each of which can range from 0 to 33-1/3 kHz. Equipment limitations have in many cases dictated the reduction of the maximum pulse repetition frequency in path controls to a lower value, with the result that, to maintain the top speed of the machine, each pulse had to be assigned a larger value, such as 0.0002 or 0.0004", reducing the quality of obtainable surface finish.

Some systems have operated so as to change the pulse value depending on the speed range of the machine at the time. In this manner the quality of the surface finish produced by the cutting tool on the workpiece surface, and also the accuracy, can be retained by using a pulse value of 0.0001" per pulse for the relatively low speeds used during cutting, and to achieve high traverse rates between cutting operations by using a larger pulse value, such as 0.0002 or 0.0004" for the traversing operation. Nevertheless, due to the extremely large range of pulse frequencies that may be required of the system, to my knowledge a fixed time base for the production of such pulses has not been established.

Without a fixed time base for the production of the pulses for any of the separate axes of the machine it has been impossible to utilize a single time-shared set of equipment to serve all of the axes and the other control needs of the machine as well.

OBJECTS OF THE INVENTION

In view of the shortcomings of past numerical path controls as explained above, it is a principal object of this invention to depart from past practice wherein pulses representing uniform increments of position change are produced at relatively even intervals on an unknown and changing time base for each of the individual machine axes, and to employ instead a method wherein non-uniform increments of position change are produced at exactly recurring intervals on a known and unchanging time base for each of the individual machine axes.

A closely related object of the present invention is to discard the variable frequency multiple pulse train approach and to develop a new approach in which a group of digitally signaled command numbers are generated, where each command number of the group is the primary position command number for one axis, and where each primary position command number is stored in a primary register which is regularly updated at fixed time intervals.

It is a further object of the invention to generate the primary position command numbers at a relatively slow cyclic rate such that a single time-shared set of components can easily keep many machine axes supplied with updated primary command numbers.

As a corollary to the above, it is a subsidiary object of the invention to generate at a higher cyclic rate a secondary set of position command numbers, which are stored in secondary registers, which are updated at the higher cyclic rate, and which effectively achieve a multistep linear interpolation between successive primary position command numbers.

Yet another object which is related to that of producing regularly recurring command numbers is to develop the primary position command numbers at a relatively infrequent but regular rate such that the primary position command computations can be synchronized with the regularly recurring time base, hereinafter called the program iteration period, and furthermore, to develop an easily performed method for generating the secondary position command numbers from the primary position command numbers.

It is a still further object of the invention to develop the secondary position command numbers at a relatively more frequent but regular rate such that the secondary position command computations can be synchronized with the regularly recurring time base, and to update the secondary position command numbers at such a fast rate that the machine servos tend to move smoothly from one primary command position to the next, as urged by the smaller but more frequent changes of the secondary command numbers.

Within the framework of the foregoing objects, it is a more specific object of the invention to develop a method and apparatus for performing linear path generation, or interpolation, for straight line cuts, that can be extended beyond two axes.

Another object of this invention is to provide a method and apparatus for causing the programmed rate of motion during linear interpolation to be slightly altered during a selected part of the movement so that all command position numbers, both primary and secondary will converge to the programmed end point at the end of a program iteration period, thereby allowing the next program iteration to drive the machine servos into the next motion block.

Another more specific object of this invention is to develop an accurate method and apparatus for circular path generation, or interpolation, for circular cuts that can be applied to any two axes by appropriate switching devices.

In relation to both linear and circular interpolation it is another object of this invention to provide a method and means for sensing that the command numbers are approaching a selected end point. Closely related to the foregoing object and particularly related to the generation of a linear path is the object of providing a method and means for determining when and how to alter the final approach speed toward the end point so that the speed change will be held within an arbitrary small amount, and to provide a simple method for altering the final approach speed so as to hit the end point with a minimum speed change.

A further and subsidiary object of this invention is to reduce the amount of equipment required for linear and circular interpolation without affecting the degree of precision obtained by utilizing only a limited number of the most significant digits of a computed primary position command number, but carrying the remaining digits of the number to form a part of the computation of the next primary position command number.

Another principal object of the invention is to enable a single time-shared set of components to accept information from the punched tape at the appropriate time and to process that information as may be required prior to putting the information to use. In this connection it is a more specific object of the invention to allow the time-shared set of components to perform certain functions at certain time periods of the regularly recurring time base, or iteration, but to perform different functions during these same time periods under different conditions.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a perspective view of a milling machine shown to provide one example of a typical application of features of the invention.

FIG. 2 illustrates the path followed by a member of the exemplary milling machine under the control of command signals produced in accordance with a feature of the invention.

FIG. 3 illustrates the manner in which data representing successive segments of a desired tool path appears on punched tape.

FIG. 4 shows the arrangement of one block of data on the tape.

FIGS. 5a and 5b illustrate the vector quantities represented by numerical commands produced in the process of generating a linear path.

FIGS. 6a through 6b illustrate generally the vector quantities represented by numerical commands generated in the process of producing a circular path in accordance with features of the invention.

FIG. 7 formed of FIGS. 7a-7d when joined as indicated thereon is a general block diagram of a system embodying features of the present invention.

FIG. 8 is a guide for assembling FIG. 9 constituted of FIGS. 9a-9l.

FIG. 9 when assembled as shown in FIG. 8 is a detailed block diagram of a system organized in the manner shown in FIG. 7.

FIGS. 10a-10c illustrates the relationship between programming charts used to cause the system of FIG. 9 to operate in different modes during corresponding series of time periods.

FIG. 11 is a set of wave forms showing the time relationships between various timing pulses generated in the system of FIG. 9.

FIGS. 12, 12a, and 12b illustrate the last two stages of a shift register suitable for use as one of the buffer registers in FIG. 9l.

FIG. 13 illustrates one stage of a storage register suitable for use as one of the active registers 57 in FIG. 9.

FIG. 14 is a timing diagram for the computer of FIG. 9f.

FIG. 15 is a representation of all the storage registers shown in FIG. 9 and of the location of the decimal points of the numbers stored in those registers.

FIG. 16 illustrates an exemplary gating arrangement for deriving a gating pulse at a desired time period from program step signals produced by the time base generating components of FIG. 9.

FIG. 17 is a flow chart showing operations performed during the last modified macromove of a linear path segment, including calculations for entering another linear path segment.

FIG. 18 is a flow chart of operations performed during a macromove along a linear path segment.

FIG. 19 is a vector diagram illustrating the manner in which the commanded X and Y axis macromoves are adjusted in order to terminate a commanded linear segment exactly at the end of a macromove.

FIG. 20 is a flow chart showing the sequence in which different operating modes of the system illustrated in FIG. 9 follow one another in process of generating successive linear and circular path segments.

FIG. 21 is a flow chart of steps performed during the last macromove to be executed at a normal rate along the linear path, with a large overrun indication causing macromove calculations for ten subsequent time periods at a rate adjusted to hit the end point exactly at the end of the tenth drive period.

FIG. 22 is a flow chart of the operations performed during the first through the ninth of the ten iterations for which the macromove has been modified to hit the end point exactly.

FIG. 23 is a flow chart of operations performed during a macromove along a linear path segment in which a small projected overrun is detected.

FIG. 24 is a flow chart showing the steps performed during the last macromove to be executed at a normal rate following a time period (FIG. 23) in which a small projected overrun was detected, causing macromove calculations for ten time periods modified to hit the end point exactly.

FIGS. 25a- f are a series of vector diagrams showing the manner in which successive ones of the vector quantities necessary to generate a circular path are derived from initially given vector quantities.

FIGS. 26a- c are composite vector diagrams showing a series of X and Y macromove vectors produced in the manner shown in FIGS. 25a- f and also showing a series of points along a circle defined by the X and Y macromove vectors so produced.

FIG. 27 shows the manner in which the Y coordinate distance J1 between a point P1 on a circle and the center of the circle is derived from the Y coordinate distance J0 between a preceding point P0 and the center of the circle.

FIG. 28 is a flow chart showing operations performed during the last modified macromove of a linear path segment and set-up calculations for entering a circular path segment.

FIGS. 29a and 29b is a vector diagram showing the signs of I, J, .DELTA.X and .DELTA.Y during clockwise and counterclockwise circular interpolation.

FIGS. 30a and 30b show the distribution of a series of micropositions along the X and Y axes produced as part of a process of generating a series of numerical commands for a circular path.

FIG. 31 is a flow chart showing operations during a typical iteration for describing a circular path segment.

FIG. 32 illustrates a method of eliminating ambiguity from a test which is performed to detect when the commanded position along a circular path is within a predetermined distance from the desired end point of that path.

FIG. 33 is a flow chart showing the data processing operations performed during an iteration in which a large projected overrun is detected, and which is to be followed by a linear path segment.

FIG. 34 is a similar to FIG. 33 but shows instead the data processing operations during an iteration in which a large projected overrun has been detected, and which is to be followed by a circular path segment.

FIG. 35 is a flow chart showing operations during an iteration in which a small projected overrun has been detected.

FIG. 36 is a flow chart showing the data processing operations performed during an iteration for a circular path segment following an iteration (FIG. 35) in which a small projected overrun was detected, and which is to be followed by a linear path segment.

FIG. 37 is a flow chart similar to FIG. 36 except that the iteration is to be followed by a circular path segment.

FIGS. 38a, b, and c illustrate the time relationships of signals in the servo system shown in FIG. 9a.

FIG. 39 is a guide for assembling FIG. 40 constituted of FIG. 40a-40m.

FIG. 40 is a second embodiment of a system for generating and executing both linear and circular path segments in the staggered mode.

FIGS. 41a and 41b illustrate the vector quantities represented by numerical commands produced by the second exemplary system in the process of generating a linear path in accordance with certain features of the invention.

FIG. 42 illustrates generally the vector quantities represented by numerical commands generated by the second exemplary system in the process of producing a circular path in accordance with features of the invention.

FIG. 43 is a vector diagram illustrating the manner in which proximity to the desired end point of a path segment is detected in the second exemplary system when movement along the X axis is faster than the movement along the Y axis.

FIG. 44 is a vector diagram illustrating the manner in which proximity to the end point is detected in the second exemplary system when movement along the Y axis is the faster.

FIG. 45 is a flow chart showing the sequence in which different operating modes of the system illustrated in FIG. 40 follow one another in the process of generating successive linear and circular path segments.

FIG. 46 is a flow chart of steps performed during the last staggered linear iteration in which no overrun has been detected.

FIG. 47 is a flow chart of steps performed by the second exemplary system during the first of two linear to circular transitional iterations which are performed when the linear path segment is expected to terminate during the first half of an iteration.

FIG. 48 is a flow chart of steps performed by the second exemplary system during the transitional iteration following that illustrated in FIG. 47.

FIG. 49 is a flow chart of steps performed by the second exemplary system during the last staggered circular iteration in which no overrun has been detected.

FIG. 50 is a flow chart of steps performed by the second exemplary system during the first of three linear to circular transitional iterations performed when the linear path segment is to terminate in the second half of an iteration.

FIG. 51 is a flow chart of steps performed by the second exemplary system during the transitional iteration following that shown in FIG. 50.

FIG. 52 is a flow chart of steps performed by the second exemplary system during the transitional iteration following that shown in FIG. 51.

FIG. 53 is a flow chart of steps performed by the second exemplary system during the first of two circular to linear transitional iterations performed when the circular path segment is to terminate in the first half of an iteration.

FIG. 54 is a flow chart of steps performed by the second exemplary system during the transitional iteration following that shown in FIG. 53.

FIG. 55 is a flow chart of steps performed by the second exemplary system during the first of three transitional iterations performed when the circular path segment is to terminate during the second half of an iteration.

FIG. 56 is a flow chart of steps performed by the second exemplary system during the transitional iteration following that shown in FIG. 55.

FIG. 57 is a flow chart of steps performed by the second exemplary system during the transitional iteration following that shown in FIG. 56.

FIG. 58 is a vector diagram illustrating the operations performed by the second exemplary system during the iterations shown in FIGS. 46, 47, 48 and 49 in executing a changeover from a linear to a circular path segment where the linear path segment is to end in the first half of an iteration.

FIG. 59 is a vector diagram illustrating the operations performed by the second exemplary system during the iterations shown in FIGS. 46, 50, 51, 52 and 49 in executing a changeover from a linear to a circular path segment where the linear path segment is to end in the second half of an iteration.

FIG. 60 is a vector diagram illustrating the operations performed by the second exemplary system during the iterations shown in FIGS. 49, 55, 56 and 57 in executing a changeover from a circular to a linear path segment where the linear path segment is to end in the second half of an iteration.

While the invention has been shown and will be described in some detail with reference to two exemplary embodiments thereof, there is no intention that it must be limited to such detail. To the contrary, it is intended to cover here all modifications, alternatives, and equivalents falling within the spirit and scope of the invention as defined by the appended claims.

E. AN EXEMPLARY MACHINE TOOL

In order to illustrate a particular environment in which the present invention will find especially advantageous use, it will be described here with reference to controlling paths described by an element of a numerically controlled milling machine along two mutually orthogonal axes. A milling machine 10 (shown in FIG. 1) is typical of the many different types of machine tools which may be numerically controlled and whose numerical control requires digital command signals for operation. The exemplary milling machine includes a work table 11 movable horizontally along a bed 12 and adapted to carry a workpiece 13 which is to be machined. A milling tool 14 is mounted on, and vertically movable with, a ram 15 which is slidable within vertical ways (not shown) formed on a saddle 16, the latter in turn being movable horizontally along the ways of a rail 17 which is supported at its opposite ends by spaced columns 18 and 19. The milling tool 14 may thus be moved along horizontal and vertical X and Y axes relative to the workpiece 13 which in turn may be moved along a Z horizontal axis at right angles to the X horizontal axis.

By proper proportioning of the X, Y and Z axis components of commanded movement and velocity, the milling tool 14 moves through the workpiece 13 along a path and at a depth to cut a desired contour thereon. To produce such controlled movement of the workpiece 13 and the milling tool 14, the saddle 16 includes a nut (not shown) engaged with a lead screw 20 driven through suitable gears (not shown) by a reversible servomotor 21. As the latter motor is caused to rotate in one direction or the other at different speeds, the saddle 16 will be moved horizontally in +X or -X directions and at velocities determined by the speed of the motor. Correspondingly, the ram 15 carries a nut (not shown) engaged with a vertically disposed lead screw 24 driven by a reversible servomotor 25 so that energization of that motor in one direction or the other moves the milling tool 14 in +Y or -Y directions. Finally, the table 11 also carries a nut (not shown) which is engaged with a second horizontally disposed lead screw 22 driven by a reversible servomotor 23 whereby the table 11 and the workpiece 13 thereon may be moved in +Z or -Z direction. To simplify the description which follows, only that part of the numerical control associated with the X and Y axis drive motors 21 and 25 will be illustrated. It will be understood by those skilled in the art, however, that such a control may be modified without departing from the scope of the invention to accommodate the third or Z axis servomotor 23, and indeed to control simultaneous motions along as many axes as might be desired.

F. GENERAL DISCUSSION OF CONCEPTS AND METHODS

1. Positioning Controls v. Path Controls

The objective of a position control system is to locate a tool at a desired point in the shortest possible time. The nature of the path traveled by the tool between two successive points is of no importance. Thus a positioning control system will usually read a block of information from a record medium such as punched tape, the block including, as a minimum, the X and Y coordinates of the next desired point. In response to the block of data, the positioning control will generate electronic command signals which define the desired position of the next point for each of the X and Y coordinates. The command signals for the X axis are sent to the X axis servo drive and the corresponding signals for the Y axis are sent to the Y axis servo drive. Each servo drive includes its own feedback position transducer for signaling the actual position of the tool as well as a discriminating circuit for sensing the difference between the commanded position and the actual position of the tool along the respective axis. The discriminating circuit associated with each servo drive produces an error signal telling the servo drive how fast it should move and in which direction to reduce the position error for its axis to zero.

For an exemplary programmed path as illustrated in FIG. 2, if the X and Y servo drives had been directed to locate the tool at point P1 initially and were then directed to move it to point P2, they would both reach a very high speed initially due to the initial large error. Indeed, the initial speed of travel along the X and Y axes would be approximately equal, so that the composite direction of travel imposed upon the driven tool by the servo drives would be about 45.degree. from the horizontal. The Y axis servo drive would approach its target position before the X axis servo drive because, in the illustrated example, it has a shorter distance to travel. It would rapidly decelerate and come to a stop at point P2. Meanwhile, the X axis servo drive would continue on, without slowing down, until point P2 is approached, at which time it too would decelerate and come to a stop. Thus, it is seen that in a position control system of the type described, there is no control over the path followed by the controlled tool.

In contrast, in a contouring system the velocities of motion along the X and Y axes are controlled such that the resultant velocity vector, and the path of the tool, lie along a line 27b from points P1 to P2. The signals applied to the servo drives thus control not only axis distance but also velocities and they are reduced to zero when the tool reaches the point P2. Each axis velocity and the distance traveled along each axis in response to any given block of command data, are controlled, but in order to determine the net or resultant velocity, that is the feed rate which is of importance especially in metal cutting operations, it is necessary to change the axis velocities from block to block while keeping their ratio such that motion is at the desired angles. By making the successive straight line increments at different angles relatively short, and causing them to be executed in immediate succession, any arbitrary curve or contour may be produced with the desired degree of accuracy. For purely circular arcs, however, circular interpolation may be employed in which velocities along each axis are almost continuously readjusted to make the tool move from a first to a second point along the arc.

2. Contouring in Accordance with the Present Invention

Turning again to FIG. 2, illustrated therein is an exemplary path 27 through which a controlled member such as the tool 14 of FIG. 1 may be moved. Two sets of coordinate X and Y axes are shown, the first set of axes 29 and 31 representing a four quadrant coordinate system in which a person programming the path 27 may work. The second set of axes 33 and 35 represents the single quadrant coordinate system of the controlled machine into which the information developed by the programmer is eventually translated. For the present preliminary discussion concentrating on the manner in which the data representing the path 27 is initially presented, attention need be paid only to the first set of coordinate axes 29 and 31.

The path 27 consists of a series of segments, both straight line and circular, extending between a series of points P0, P1, P2, P3 and P4. The data representing the desired motion along the path 27 is usually presented in the form of a series of blocks of information, each block representing the desired motion along a different one of the path segments 27a - 27d. A record medium frequently used to carry these blocks of information is punched tape of the type illustrated in FIGS. 3 and 4. It will be recognized, of course, that punched tape is merely representative of the variety of record media which can be utilized to feed data to the apparatus which is to be described, but familiarity with the punched tape format and coding here illustrated will facilitate an understanding of the operation of the apparatus shown generally in FIG. 7 and in detail in FIGS. 9 and 40.

The elongated punched tape 37 fragmentarily shown in FIGS. 3 and 4 is made of paper, plastic or the like and contains eight longitudinal channels one through eight and a lengthwise column of sprocket holes to facilitate transport of the tape through a tape reader. Each transverse row on the tape may thus receive holes punched in different combinations of the eight channels to represent by any selective code notation different numbers, letters or symbols. In the present instance, the familiar E.I.A. standard coding is employed and the combination of holes in each row of the tape shown in FIG. 4 represents the letter number or symbol labeled at the left side. It may be observed that the ten decimal digits 0 through 9 utilize weighted combinations of holes applied in channels 1, 2, 3 and 4, these being assigned the respective weights 1, 2, 4 and 8 so that each decimal digit is represented in 1, 2, 4, 8, binary coded decimal notation.

The command data representing respective ones of the successive desired motions 27a, 27b, 27c, 27d appears on the punched tape 37 in successive "blocks," with each block being constituted by a plurality of successive transverse rows. One of these blocks of data, representing the desired motion along the path segment 27b, is shown in FIG. 4. It is seen to consist of a first group of eight rows representing the sign and magnitude of the X coordinate of the point P2. Of the eight rows of holes, the first identifies the quantity represented by the following seven rows of holes and is later converted into an "address" signal to help guide the information to its designated storage. The second row represents the sign of the number, and the last six rows represent the six digits of which the number is comprised. This quantity is identified by the symbol X and in the illustrated example is equal to -03.0000".

The next series of eight rows on the tape 37 represent the Y coordinate of P2 which is shown in FIG. 2 as +20.0000". Also included in the block are the X and Y coordinate distances I and J from the point P1 to the point P2, shown as +06.0000 and +02.5000 respectively. The following three rows of holes identify the shape of the path segment that is to be generated, i.e., whether it is to be linear or circular. The next seven rows of holes signal a precomputed quantity Q which indicates the velocity at which movement is to occur along the path segment represented by the previous five groups of rows. The block ends with a standard EL symbol which indicates the end of the block.

In accordance with the present invention, the data stored on the punched tape 37 and representing a given path segment, such as the segment 27b of the path 27, is read from the tape and is converted into digital electrical signals. These signals are then continually processed to digitally represent at successive instants in time the X and Y coordinates of a point which progresses along the path 27b at the desired velocity. In the particular embodiment of the invention to be described herein, the point thus signalled is changed 500 times every second. Stated differently, a new target point or coordinate is generated for each of the X and Y servo drives every 2 milliseconds. The length of the path segment 27b in the example illustrated in FIG. 2 is slightly over 6 inches. Let it be assumed for simplicity of illustration that the path segment 27b is exactly 6 inches long. Let it be assumed further that the desired speed along the path segment 27b is 1 inch per minute, so that the total time required for the controlled machine tool to travel from point P1 to P2 along the path segment is 6 minutes. Significantly, during this time a total of 180,000 different digitally signalled command positions will be generated for each of the two servo drives. All of the numerous command positions generated during this 6 minute period are derived automatically from the relatively few numbers contained in the block of data stored on the punched tape 37.

3. Macromove and Micromove Calculations

Because of the large number of points signalled and because of the very short interval between the generation of successive points, it would be undesirable to compute each point through the same basic mathematical process. Instead, in accordance with an important feature of the invention, a two-step process is used. The first step involves the generation of signals for each of the X and Y axes representing successive positions or points along those axes. Successive ones of these points are defined herein as macropositions and the moves whereby the controlled tool is traversed from one of these positions to the next are defined as composite macromoves. In the exemplary embodiment, which will be described herein, such macroposition signals are generated 50 times each second or every 20 milliseconds. The computations whereby the successive macropositions are derived from the basic data appearing in a block of information on the punched tape are relatively lengthy.

As part of the second, and considerably shorter part of the process, signals representing a series of progressive micropositions which fall between each pair of successive macropositions are derived from the previously computed macroposition signals at 2 millisecond intervals. Summarizing, for each axis, a first series of target points, called macropositions, are generated through a detailed computational sequence, and a second and much larger series of intermediate points, called micropositions, which are equally approximately spaced and which lie between the macropositions, are derived from the signals representing the macropositions through a much shorter and simpler process.

A. LINEAR PATH GENERATION

FIGS. 5a and 5b show in greater detail the quantities and relationships involved in generating the path segment 27b from point P1 to point P2 of FIG. 2. FIG. 5a shows the path segment 27b as the diagonal vector D, its X component as the vector I, and its Y component as the vector J. In accordance with a basic feature of the invention, a time period .DELTA.T is chosen which in comparison to the total time required to advance the desired position of the controlled machine element from point P1 to point P2 is very short. Consequently, a large number of such time periods .DELTA.T will elapse while the desired position advances from point P1 to point P2. The distance by which the desired position is to be advanced during a single time period .DELTA.T is shown in FIG. 5b as the hypotenuse .DELTA.D of a triangle. This is the distance which was previously referred to as a composite macromove. Its X component forms the base of the triangle and is identified as the vector .DELTA.X, and its Y component forms the vertical side of the triangle and is identified as the vector .DELTA.Y.

The size of the composite macromoves which are to be executed during the respective time periods .DELTA.T are a function of the length of the time period .DELTA.T and the desired velocity V as expressed by the equation

.DELTA.D = V. .DELTA. T (1)

From an inspection of the triangles illustrated in FIGS. 5a and 5b it is seen that they are geometrically similar, since the hypotenuse of the smaller triangle of FIG. 5b is merely a short portion of the hypotenuse D of the larger triangle of FIG. 5a. Consequently, it follows from the law of similar triangles that

.DELTA.X/I = .DELTA. D/D (2)

Similarly, it follows from the law of similar triangles that

.DELTA.Y/J = .DELTA. D/D (3) But .DELTA.D = V.DELTA. T (4)

and D = .sqroot. I.sup. 2 + J.sup. 2 (5)

Substituting (4) and (5) into (2) and multiplying both sides of the equation by I gives

Substituting (4) and (5) into (3) and multiplying both sides of the equation by J gives

For the exemplary embodiment to be disclosed it is assumed that, for any given path segment represented by a block of data on the tape, the quantities V, I, and J each have a single value. Furthermore, the time period .DELTA.T is a chosen constant which remains the same for all of the segments of the path. This permits the use of a composite constant Q, hereinafter referred to as the "macromove quotient", (so named because it happens to be equal to .DELTA.D/D) in place of the term

Substituting (8) in equations (6) and (7) yields the much simpler expressions

.DELTA.X = I.sup. . Q (9) .DELTA.Y (10) From the foregoing series of equations it may be seen that the quantities .DELTA.X and .DELTA.Y, respectively representing the desired movement of the commanded position during a time period .DELTA.T along the X and Y axes, may be given in a partially precomputed form by using the term "Q" in place of the fraction

Thus, given the quantities I, J, and Q, the desired X and Y macromove components .DELTA.X and .DELTA.Y may be calculated relatively simply by the process of multiplication. However, even though multiplication is a relatively simple process, nevertheless it is a time-consuming one, especially where both the multiplier and the multiplicand are multi-digit numbers. It is for this reason that a series of intermediate points or micropositions lying intermediate a pair of adjacent macropositions is developed by an even more direct process. As shown in FIG. 5b a composite macromove .DELTA.D is divided into N equal portions .DELTA.D/N. These smaller portions are referred to herein as composite micromoves and their X and Y components are shown in the smaller triangle of FIG. 5b as the quantities .DELTA.X/N and .DELTA.Y/N. In order to take fullest advantage of the two-step process described here, "N" is made equal to ten and the quantities .DELTA.X/N and .DELTA.Y/N are derived by dividing respective ones of the quantities .DELTA.X and .DELTA.Y by 10, which is very simply performed in a calculating machine or computed by shifting the signals representing those quantities by one decimal place.

After the quantities .DELTA.X, .DELTA. Y, .DELTA. X/N and .DELTA.Y/N have been calculated, a series of macropositions and micropositions are developed by a process of successive additions. In particular, for the X axis the quantity .DELTA.X is cumulatively added at intervals of .DELTA.T to the X coordinate of the starting point P1 so that, during each time period .DELTA.T, a new macroposition is generated for the X axis. By a similar process of successive additions a series of Y axis macropositions are developed at intervals of .DELTA.T extending with the passage of time from near the Y coordinate of the point P1 to the Y coordinate of the point P2.

The micropositions are derived in a similar manner from the micromove components .DELTA.X/N and .DELTA.Y/N. Thus, the first microposition for the X axis is produced by adding the quantity .DELTA.X/N to the X coordinate of the initial point P1 and successive micropositions for the X axis are produced at intervals of .DELTA.T/N by further additions of the quantity .DELTA.X/N to the previously derived sum. The same procedure is followed for deriving Y micropositions from the Y coordinates of point P1 and micromove component .DELTA.Y/N.

The foregoing analysis has been principally in terms of geometrical relations. However, it should be remembered that in carrying out the invention, the successive macropositions and micropositions do not simply exist in space. Rather, they are numerically represented by digital electrical signals as are the quantities, I, J, V, .DELTA.T, (or I, J, and Q) from which they are derived. These digital electrical signals representing successive target positions are then applied continuously to the X and Y servo drives in order to advance the position of the controlled machine tool shown herein as the milling tool 14. In this manner, the tool may be traversed along several consecutive straight line path segments, each of them being represented by a different block of data containing individual values for the quantities I, J, and Q (or V and .DELTA.T if the quotient Q is not used). In carrying out the process, the digital signals representing the X and Y components I and J of the composite distance D are read by appropriate means from the tape on which they are initially stored, are converted into digital electrical signals and are processed by data processing apparatus to derive therefrom first and second sets of digital signals representing the .DELTA.X and .DELTA.Y numbers, in accordance with the equations (6) and (7) given above. Having derived signals representing the .DELTA.X and .DELTA.Y numbers, successive periods of .DELTA.T are measured off in actual time and during each such time periods, the first and second sets of signals representing the quantities .DELTA.X and .DELTA.Y are utilized to drive a controlled member through the distance .DELTA.X along the X axis and through the distance .DELTA.Y along the Y axis. In accordance with an additional, but optional, feature of the invention, signals are also produced to represent fractions .DELTA.X/N and .DELTA.Y/N, and N times during each of the successive time periods .DELTA.T these signals are utilized to drive the controlled member simultaneously along X and Y axes through intermediate distances .DELTA.X/N and .DELTA.Y/N.

b. Circular Path Generation

The method of generating electrical signals representing successive target positions along a circular path is shown generally in FIG. 6a. It will be noted that the circular arc 39 there shown includes a quarter of a circle and thus does not correspond to the circular path shown in FIG. 2. Similarly, the points P0 through P5 appearing in FIG. 6a do not correspond to similarly labeled points appearing in FIG. 2. It should also be noted that the points P0 and P5 appearing in FIG. 6a are much further apart than they would normally be in order to clarify the geometrical explanation of the process.

Distributed along the arc 39 in FIG. 6a are a first series of points P0, P2 and P4, and a second series of points P1, P3 and P5 symmetrically interspersed with the points P0, P2 and P4. The first series of points P0, P2 and P4 are connected by chords of equal length .DELTA.D as are the second series of points P1, P3 and P5. Each of the points P1 through P5 is connected to the center C of the circle, of which the arc 39 forms a part, by a radius R. The X components of the string of chords connecting the points P0, P2 and P4 are labeled .DELTA.X, and the Y components of the second series of chords which connect the points P1. P3 and P5 are labeled .DELTA.Y. In accordance with the invention as it pertains to generating a circular path, signals representing the X coordinates of the points P0, P2 and P4 are produced at intervals of time .DELTA.T, and signals representing the Y coordinates of the points P1, P3 and P5 are produced at time intervals .DELTA.T' which are equal to but symmetrically staggered with respect to the time intervals .DELTA.T associated with the points P2 and P4. Furthermore, in carrying out another feature of the invention, during each of the time periods .DELTA.T which elapse between the generation of the points P0, P2 and P4, at intervals of .DELTA.T/N signals are produced representing the X coordinates of equally spaced intermediate points lying along the chords of the circle connecting the points P0, P2 and P4. In a similar manner signals are also produced representing the Y coordinates of points intermediate the points P1, P3 and P5. This is best seen in FIG. 6b showing the .DELTA.X vector components extending between P0 and P2, P2 and P4, and P4 and P6 and the vector components .DELTA.Y extending from P1 to P3 and from P3 to P5. By comparing the paths illustrated in FIGS. 5b and 6b, it will be seen that, (a) the successive vector quantities .DELTA.X and .DELTA.Y represent successive macromoves along the X and Y axes, each of the macromoves along the respective axes being carried out over a period of time .DELTA.T and .DELTA.T' respectively, and (b) each of the macromoves .DELTA.X is divided into N micromoves .DELTA.X/N and similarly each of the macromoves .DELTA.Y is divided into N micromoves .DELTA.Y/N.

In generating the circular path a two step approach is used which is similar to the process explained with reference to linear path generation. As part of the first step, the quantities .DELTA.X and .DELTA.Y are calculated and the X coordinates of the points P2 and P4 as well as the Y coordinates of the points P3 and P5 are derived by a processed of successive cumulative additions of the quantities .DELTA.X to the X coordinate of a starting point and of the quantities .DELTA.Y to the Y coordinate of a starting point. As part of the second step, each of the quantities .DELTA.X and .DELTA.Y is divided into N equal parts, preferably 10, and for each of the X and Y axes digital signals representing the X and Y coordinates of the intermediate target points, or micropositions, are generated. The signals representing the X and Y coordinates of the intermediate points are then applied to respective ones of the X and Y servo drives so that the X axis servo drive moves in close proximity with the X coordinates of a string of chords connecting points P0, P2, and P4, while the Y axis servo moves later in time by 1/2 .DELTA.T in close proximity with the Y coordinates of string of chords connecting the points P1, P3 and P5. The resultant of these two motions is a path very closely approximating the arc of the circle along which the two strings of chords extend.

FIGS. 6c and 6d illustrate some of the principles underlying the process of circular path generation carried out in accordance with the present invention. Shown in FIG. 6c is the same arc appearing in FIG. 6a with the points P0 and P2 connected by a chord of length .DELTA.D. With the chord .DELTA.D as the hypotenuse, a triangle is formed by the X and Y components of the chord. Lying halfway between the points P0 and P2 on the circle is a point P1 and connecting the center C of the circle to the point P1 is a radius vector R1 having an inverse X component I.sub.1 and an inverse Y component J.sub.1. Since the radius R.sub.1 extends through the midpoint of the chord .DELTA.D from the center of the circle, the chord and the radius vector are at right angles, and from this it follows that the triangles formed by the chord .DELTA.D and its X and Y components on the one hand, and by the radius vector R.sub.1 and its inverse X and Y components on the other hand are similar triangles.

Turning to FIG. 6d there is shown therein one of the strings of chords connecting the points P1, P3 and P5 in FIG. 6a. The particular chord shown in FIG. 6d connects the points P1 and P3 and forms the hypotenuse of a triangle whose other two sides are made up of the X and Y components of the chord. Lying midway between the points P1 and P3 on the arc in FIG. 6d is the point P2 connected to the center C of the circle by a radius vector R2. The radius vector R2 forms the hypotenuse of a second right triangle, in FIG. 6d, the other two sides of this triangle being made up of the inverse X and Y components I2 and J2 of the radius vector R2. Following the same reasoning advanced in connection with FIG. 6c, the chord of FIG. 6d and the radius vector R2 are at right angles and therefore the two right triangles of FIG. 6d are also similar triangles.

As part of the process of circular interpolation according to the invention, alternate ones of the radius vectors connecting the points P0 through P5 to the point C in FIG. 6a are represented by the X and Y coordinate distances from respective ones of them to the center of the circle C. The manner in which these X and Y coordinate distances are derived will not be described at this point. Let it be assumed instead that the radius vector R1 shown in FIG. 6c is represented by the Y coordinate distance J1 from the point P1 to the point C and that the radius vector R2 is represented by the X coordinate distance from the point P2 to the point C. Given this information as well as the desired velocity along the chords of the circle and the duration of the chosen time period .DELTA.T associated with each chord, the X component .DELTA.X.sub. 02 of the chord shown in FIG. 6c and the Y component .DELTA.Y.sub. 13 of the chord shown in FIG. 6d may be derived.

Turning first to the generation of the chords shown in FIG. 6c, from the law of similar triangles it follows that

Similarly, with reference to the chord shown in FIG. 6d, it follows from the law of similar triangles that ##SPC1##

It is helpful to compare the equations (18) and (19), which relate to generating a circular path, with the equations (9) and (10) relating to the generation of a linear path. It is seen that they are the same, except that the positions of I and J are interchanged, and -J is used. As written, equations (18) and (19) apply only for a clockwise (CW) progressing circular path. For CCW progression, the sign of the right side of each equation is simply reversed.

The information appearing in FIGS. 6c and 6d permits not only the calculation of the vector quantities .DELTA.X.sub. 02 and .DELTA.Y.sub. 13 representing X and Y axis macromoves, but they also permit calculation of the Y coordinate distance from the point P3 to the center of the circle C and therefore the representation of the next radius vector R3 which, in turn, is used to calculate the X component of the next chord extending from the point P2 to the point P4 as seen in FIG. 6a. This is achieved by algebraically adding the quantities +J.sub. 1 and - .DELTA.Y.sub. 13, which respectively represent the Y coordinate distance from the point P.sub.1 to the center C of the circle, and from the point P3 to the point P.sub.1. This step of addition follows in the process the step of multiplication indicated by equation 16 (or alternatively equation 19) and once it is performed and the Y coordinate distance from point P3 to the center of the circle C is derived, then the X component of the next chord, extending between the points P2 and P4 and representing the next X axis macromove is calculated by another process of multiplication similar to that expressed by the equation 15 (or alternatively by the equation 18). In this manner, successive points are generated along a circular arc, alternate ones of the points being represented by their X and Y coordinates. These points are the X and Y macropositions mentioned with reference to FIGS. 6a and 6b. Also, as part of the process, X and Y axis macromoves .DELTA.X and .DELTA.Y are alternately calculated and may then be divided into equal segments as shown in FIG. 6b by a process of division, permitting the generation of a series of X and Y axis micropositions along the X and Y axes from the respective series of chords shown in FIG. 6a.

4. THE DISCLOSED SYSTEM

FIG. 7 is a general block diagram of a system designed to carry out the process of linear and circular interpolation as described briefly in the foregoing sections. Two versions of the system will be described in greater detail with reference to detailed block diagrams respectively shown in FIGS. 9 and 40. Systems for carrying out the inventive processes are disclosed herein in detail in order to aid in understanding some of the specific aspects of the processes. Alternative ways for carrying out these specific aspects will occur to those skilled in the art of numerical controls and neither the details of the disclosed apparatus nor the specific intermediate steps performed thereby should be thought of as necessarily essential to the invention.

The system of FIG. 7 comprises four major groups of components. The first group serves to read a block of data from the record medium upon which it is initially stored, and to store it temporarily while the rest of the system is processing the previously read block of data. This group of components includes a tape reader 41, a decoder 43, and a tape reader start control 45. Also part of the group are a plurality of buffer registers 47. There are six such buffer registers, one for each of the six numbers which comprise a block of data on the punched tape 37 shown in FIG. 3. Connected between the decoder 43 and the buffer registers 47 is a buffer register shift control 49. When it is desired to transfer a block of data from the punched tape 37 to the buffer registers 47, a transport mechanism within the tape reader 41 advances the tape past a reading mechanism which converts the indicia on the tape into electrical signals row by row. By means of the decoder 43, address signals are derived from the data rows representing the address symbols I, J, X, Y, G and Q and these signals in turn cause the buffer register shift control 49 successively to feed the signals following the respective I, J, X, Y, G, and Q address indicia into respective ones of the buffer registers 47 over the trunk line 51.

The second principal group of components is made up of a time shared digital computer 53, a plurality of computer function control arrays 55, and a series of "active" registers 57, so called because the data stored in them is continuously being processed by the computer 53. The output of each of the active registers 57 is connected through a common computer input trunk (CIT) line 59 to the inputs of the digital computer 53, and each of the active registers 57 receives at its inputs the signals produced by the digital computer 53 through a common computer output trunk (COT) line 61. In addition to serving as a path for transferring signals stored in the active registers 57 to the computer 53, the computer input trunk line 59 also carries the signals which are stored temporarily in the buffer registers 47 to be transferred to the active registers 57 by first entering them in the computer 53 over the computer input trunk line 59, and then transferring the signals from the computer 53 to the active registers 57 through the computer output trunk line 61.

It is the principal function of the computer 53 to process the digital data stored in the active registers 57 and to deposit the resulting data in appropriate ones of those registers. This operation is performed in a regularly recurring cyclical manner so that the information may be thought of as circulating counterclockwise, out of the active registers 57 through the input trunk line 59 into the computer 53, and out of the computer 53 through the output trunk line 61 back into the active registers 57. The selection and timing of the operations of the computer 53 necessary to perform this processing cycle is determined by the computer function control arrays 55. Specifically, each of the control arrays 55 applies to a respective control input of the computer 53 a control signal at the instant when the computer is to perform the operation associated with the particular control array involved. Just as the functioning of the digital computer must be timed, so must the flow of data from the active registers 57 onto the computer input trunk line 59. It is by selecting a particular one of the active registers 57 to feed data onto the input trunk line 59 that the data to be processed at a particular instant is selected. For this reason, each of the active registers 57 is provided with a set of READ gates which, when enabled, apply the signals then stored in the register to the computer input trunk line 59. Each of the READ gates is controlled by an array of program gates, the latter being labeled PGA in FIG. 7. When it is desired to transfer the data stored in a particular one of the active registers 57 into the digital computer 53 for processing, the program gate array associated with that register is caused to apply an enabling signal to the READ gates which are provided for that register. It is also desirable to have control over the particular one of the active registers 57 into which a particular group of signals produced by the computer 53 is to be deposited. Toward this end, each of the registers is provided with a set of WRITE gates which are operative, when enabled, to enter the signals, then on the computer output trunk lie 61 into their associated register. Associated with each set of WRITE gates is an array of program gates (PGA) similar to those associated with the READ gates so that when it is desired to deposit the numbers produced by the computer 53 in a particular one of the registers 57, the program gate array associated with that register is caused to apply an enabling signal to the WRITE gates provided for the register.

To provide a time base for the operation of the entire system is the function of the third major group of components shown in FIG. 7. This group includes a Time Base and Digital Sweep 63, which, in the exemplary embodiment, is capable of producing at a plurality of outputs, a thousand different signal combinations, each representing a different one of a thousand cyclically repeating time periods. This basic set of timing signals is applied over a trunk line 65 to a Multimode Time Base Logic 67, which in effect, converts the single set of timing signals capable of producing a thousand different time periods into any selected one of four different groups of timing signals, each group representing the same series of a thousand time periods, but under different conditions. These conditions are determined in the third component 69 of the timing system, labeled the End of Block Responsive Time Base Mode Selector. The Time Base Mode Selector 69 responds to signals produced by the fourth component 71 of the timing system labeled the End of Block Anticipating System which in turn, receives the information upon which it acts from the digital computer 53 through the computer output trunk line 61. The End of Block Anticipating System 71 in combination with the Time Base Mode Selector 69 is operative to change the timing signals being produced at the outputs of the Multimode Time Base Logic 67 when the X and Y axis positions represented by the command signals which are being generated are near to the end of the path represented by the block of data then stored in the active registers 57. The purpose of this feature is to cause the computer 53 to operate in different modes as the end of the data block which is being processed is approached, and different operations become necessary.

The timing signals which appear at the outputs of the Multimode Time Base Logic 67 are distributed throughout the rest of the system by a trunk line network 73. Thus, these timing signals are applied to the computer function control arrays 55, to the program gate arrays associated with the active registers 57, and to the program gate arrays associated with the buffer registers 47. The timing signals are also distributed by the trunk line network 73 to the Tape Reader Start Control 45, so that the tape reader 41 may be started in proper time relationship with the termination of the processing of data in the active registers 57, and with the transfer of data into those registers from the buffer registers 47 through the computer 53.

Comprising the last major group of components forming the system of FIG. 7, are the X and Y axis servos 75 and 77. Over a pair of trunk lines 79 and 81, the servos 75 and 77 continuously receive regularly the microposition signals which are recomputed at frequent and regularly spaced intervals of time and which are periodically stored in two of the active registers 57 as the end result of the data processing operation carried out by the digital computer 53.

In the present application, a single method is disclosed for performing circular interpolation. It is the "staggered" method, so called because the points whose X coordinates are calculated by the basic computational process and described generally with reference to FIG. 6 are not the same ones as the points for which the Y coordinates are so produced.

In contrast to the single method for performing circular interpolation, two different methods are disclosed for performing linear interpolation. They are the "simultaneous interpolation" method and the "staggered interpolation" method. In the simultaneous linear interpolation method, the processes or steps performed to derive X and Y coordinate points are performed concurrently for each of a succession of points along the path to be described. In other words, for each point for which the basic computational process is carried out to generate an X coordinate, there is also performed a similar basic computational process for producing the Y axis coordinate. On the other hand, in staggered linear interpolation, the process is staggered in the same way as it is in staggered circular interpolation. In other words, a given one of a succession of points along the path is represented by its X coordinate derived by the basic computational process, and the next point on the path is represented by its Y coordinate similarly derived. In the detailed description which will follow, two systems are disclosed. One of them, shown in FIG. 9, is operative to produce both linear and circular paths through the processes simultaneous linear interpolation and staggered circular interpolation. A second system, which is similar to the first, is shown in FIG. 40 and is operative to generate linear and circular path segments through the process of staggered linear interpolation and staggered circular interpolation. The point that is to be observed here is that the system which is generally shown in FIG. 7 is representative of the organization of both of the systems disclosed in detail in FIGS. 9 and 40. The structural features which distinguish the two systems illustrated in FIGS. 9 and 40 reside principally in the details of their associated program gate arrays, and in their computer function control arrays. Otherwise, the general organization of the two systems is the same.

5. OPERATION OF THE SYSTEM DISCLOSED GENERALLY IN FIG. 7

The first step in processing a block of data taken from the punched tape 37 is to transfer the data for temporary storage into the buffer registers 47. It should be noted that all of the data blocks, except the very first to be processed, will be entered in the buffer registers 47 just after the transfer of the previous data block from the buffer registers to the active registers 57. The data block thus entered in the buffer registers 47 remains there for substantially the entire time during which the previous data block, just transferred to the active registers 57, is being processed through the computer 53 to generate the path represented by that previous block of data. Thus, at substantially all times two blocks of data are being stored in the system, one block in the active registers 57 and the other in the buffer registers 47.

Turning now to the particular ones of the buffer registers 47, two of the registers 47X and 47Y, are provided for receiving the X and Y coordinates of the end point that is to be reached in accordance with the block of data. They are labeled "X Axis Block Target Buffer Register (XEP BUF)" and "Y Axis Block Target Buffer Register (YEP BUF)." In terms of the data described with reference to the exemplary data block in FIG. 4, the information which will be stored in register 47X comprises the rows of indicia making up the X coordinate of the point P2, and the data to be stored in the register 47Y comprises the rows of indicia making up the Y coordinate of the point P2 in FIG. 2.

The next pair of buffer registers 47I and 47J receive the data representing (in the case of a linear block) the sign and distance along the X and Y axes of the movement to be carried out in accordance with the block of data. The X and Y sign and distance data are referred to (in the case of a linear block) as the quantities I and J respectively, and the registers storing them are labeled "X Axis Component For Next Block (I BUF)," and "Y Axis Component For Next Block (J BUF)" respectively.

A fifth buffer register 47Q labeled "Macromove Quotient Buffer Register (Q BUF)" is provided to receive the signals derived from the tape indicia representing the macromove quotient Q. Finally, a sixth buffer register 47G labeled "Path Mode Buffer Register (G BUF)" receives the signals corresponding to the tape indicia which represent the number G.

As noted previously, the entire block of data now residing in the buffer registers 47 was transferred there shortly after the previous block of data had been transferred from the buffer registers 47 into the active registers 57. The present block of data residing in the buffer registers 47 remains there until the previous block of data has served its purpose in the active registers 57 and is no longer needed. This occurs very shortly before the move along the path segment represented by the previous block of data and residing in the active registers 57 has been carried out. It may be assumed that this previous path segment is the segment 27a between points P0 and P1 in FIG. 2, and that the block of data now to be transferred from the buffer registers 47 into the active registers 57 represent the following path segment 27b extending from point P1 to point P2 in FIG. 2.

Concentrating now on the active registers 57 which are about to receive the block of data residing in the buffer registers 47, they may be divided functionally into two groups, 57A and 57B. The first group 57A is comprised of six registers which correspond to the six buffer registers 47, and which are provided to receive the data when it is transferred from the buffer registers 47. Specifically, the data stored in the buffer registers 47X and 47Y is received and stored in a pair of active registers 95 and 97 respectively labeled "X Axis Block Target Register (XCEP)" and "Y Axis Block Target Register (YCEP)," the symbols XCEP and YCEP designating "X command end point" and "Y command end point."

A second pair of active registers is provided to receive the information transferred from the buffer registers 47I and 47J. They are the "X Axis Component For Present Block (I)" register 99 and the "Y Axis Component For Present Block (J)" register 101.

The last pair of the first group of active registers 57 serve to store the data read from the QBUF and GBUF registers 47Q and 47G, and are identified in FIG. 7 as the "Macromove Quotient Register (Q)" 103 and the "path mode register (G)" 105.

The data stored in the foregoing group 57A of six registers serves as the basic information from which additional signals representing intermediate macropositions and micropositions are derived by the digital computer 53 through the process of interpolation in accordance with the present invention.

In general, the basic data stored in the six active registers 95 - 105 is utilized in the process of interpolation by the computer 53 by transferring the data over the computer input trunk line 59 to the computer, storing the data in appropriate storage devices (not shown) provided within the computer and operating on the data to derive desired further data therefrom.

To receive the signals produced by the computer 53 as a result of the computations which form part of the interpolation process is the function of the second group 57B of the active registers 57. Let us assume that the block of data representing the desired motion along the path segment 27b from point P1 to point P2 in FIG. 2 has been transferred from the buffer registers 47 to the six active registers 95 - 105. The computational process for performing interpolation is then ready to begin. The first step is to produce the X and Y axis macromove numbers .DELTA.X and .DELTA.Y corresponding to the macromove distances .DELTA.X and .DELTA.Y illustrated previously in FIG. 5. It will be noted that all numbers produced by the system under discussion are represented by digital signals.

It should be understood that when mention is made herein of reading, writing, adding, storing or otherwise processing a "number" the reference being made is to the signals which represent that number, rather than to the number per se.

It will be recalled from the discussion of FIG. 5b that, for a linear path segment,

.DELTA.X = I.sup. . Q (9)

and

.DELTA.Y = J.sup. . Q (10)

In carrying out the invention therefore, the numbers stored in the I register 99, the J register 101, and the Q register 103 are transferred into corresponding storage devices in the digital computer 53. The computer then produces a pair of axis macromove numbers I.sup. . Q and J.sup. . Q. One of these numbers, the number J.sup. . Q, is entered over the computer output trunk line 61 into a pair of storage registers 107 and 111, respectively identified in FIG. 7 as the "Y Axis Macromove Magnitude Register (.DELTA.Y)" and as the "Y Axis Macromove Remainder Register (YR)." The reason for using two registers to store a single number need not be understood at this point. Suffice it to say that in the exemplary embodiment to be described herein, the four most significant digits of the macromove number J.sup. . Q are stored in the .DELTA.Y register 107, and that the remaining digits of the number are stored in the YR register 111. Subsequently, the computer produces an axis macromove number I.sup. . Q and it is stored in another pair of active registers 109 and 113, respectively labeled "X Axis Macromove Magnitude Register (.DELTA.X)" and "X Axis Macromove Remainder Register (XR)."

The four most significant digits of the product J.sup. . Q stored in the .DELTA.Y register 107, are used to produce a number representing the Y coordinate of the point which is to be reached at the end of the axis macromove .DELTA.Y. The Y coordinate number, resulting from this operation is stored in a register 115, designated as "Y Axis Macroposition Register (YCP)." The operation is performed after each calculation of the number .DELTA.Y by adding in the computer the numbers then stored in the registers 115 and 107, and storing the sum in the YCP register 115.

Similarly for the X axis, a register labeled the "X Axis Macroposition Register (XCP)" 117 is provided for storing the X command position number XCP. Thus, the number representing the last XCP macroposition is transferred from the register 117 to the computer 53 followed by the .DELTA.X number from register 109. Their sum is then produced by the computer and replaces the previously stored XCP number in the register 117.

In addition to producing XCP and YCP macropositions, the system is also capable of producing micropositions designating the points along the X and Y axes to be reached at the ends of successive micromoves such as those shown in FIG. 5b. The numbers representing Y axis micropositions are received in a register 119 labeled the "Y Axis Microposition Register (YSC)," and the numbers representing the successive X axis micropositions are received in a similar register 121 labeled "X Axis Microposition Register (XSC)." The numbers stored in the registers 119 and 121 may be thought of as the end product of the computations carried out by the computer 53, since it is these numbers which are applied in the form of digital electrical signals over the trunk lines 79 and 81 to the X and Y axis servos 75 and 77. It is these numbers therefore, which serve as the Y Servo Command and X Servo Command numbers. Hence the abbreviation YSC and XSC to designate the numbers stored in the registers 119 and 121.

The Y axis microposition number YSC is derived in a manner similar to that for deriving the Y axis macroposition number YCP. Thus, the number stored in the register 119, and representing the last microposition for the Y axis is taken from the register and is transferred to the computer 53. To this number is then added a number representing a micromove, or .DELTA.Y/N. The latter quantity is derived by taking the number from the .DELTA.Y register 107, transferring it to the computer 53, and dividing it by N. The result, .DELTA.Y/N, is added to the number previously read from the YSC register 119, and the sum is transferred from the computer 53 back into the YSC register 119. The process of adding the number .DELTA.Y/N to the number YSC taken from the YSC register 119, is repeated in the exemplary embodiment every 2 milliseconds, thus serving to make available to the Y axis servo 77, signals representing a new microposition number 500 times every second. Successive microposition numbers are also derived for representing successive micropositions along the X axis. These numbers, as stated previously, are stored in the register 121, and they are derived from the .DELTA.X number stored in the register 109 in a manner which is identical to that for deriving the YSC number in the register 119 from the number .DELTA.Y in the register 107.

The computational process whereby data is periodically taken from the active registers 107-121, applied to the computer 53, processed by the computer to generate successive position numbers, and returned to the registers continues until the system detects that the process is about to be completed. This occurs when the axis macroposition number stored in one of the registers 115 and 117 approaches within a predetermined distance of the desired end point for the corresponding axis, as represented by the number stored in one of the block target registers 95 and 97. In a preferred embodiment of the invention, a test is carried out for one of the axes after each macroposition has been computed for that axis. Furthermore, in the preferred embodiment of the invention, in order to enhance the sensitivity of the test, the axis for which this test is performed is that axis along which the commanded movement is the faster. Thus, for example, in computing the macropositions for the path 27b in FIG. 2, the test would be performed for the X axis, since the desired movement and the required speed for executing such movement along the X axis are greater than the corresponding quantities for the Y axis. In performing the test to determine when the computational process for the data associated with the path 27b has been completed, each time a new macroposition number XCP is stored in the XCP register 117 that number is compared by the digital computer 53 with the number stored in the XCEP register 95. When it is detected that the macroposition number XCP is within a predetermined distance of the target point XCEP, the computer 53 produces a signal indicating this condition and this signal is applied over the computer output trunk line 61 to the End of Block Anticipating System 71. In response to an "end of block" signal from the system 71, the Time Base Mode Selector 69 changes the timing signals which are produced by the Time Base Logic 67, and this change in timing signals in turn changes the sequence of operations performed by the computer 53. When the system is performing simultaneous linear interpolation, the new sequence of operations results in a modification of the position signals applied to the servo devices 75 and 77 so as to bring the last macroposition numbers stored in the registers 115 and 117 as close as possible to the corresponding target points XCEP and YCEP for the block. Another effect of the change in the sequence of operations is to initiate the transfer into the active registers 57 of the data which up to that point was being held in the buffer registers 47 and which is associated with the data block representing the next path segment 27c. The change in the timing signals produced by the Multimode Time Base Logic 67 is also effective to cause the Tape Reader Start Control 45 to start the transport mechanism of the tape reader 41 so as to cause the tape reader to read the following block of data corresponding to the path segment 27d from the punched tape 37 and to transfer that data into the buffer registers 47.

The purpose of the foregoing description has been to provide a general understanding of the manner in which a system capable of performing linear and circular interpolation might be organized. Sufficient details have not been given up to this point to understand exactly the operation or organization of the system. To provide such an exact understanding will be the purpose of the detailed description of two exemplary systems which follow. As stated earlier, both of the systems which will be described herein conform substantially to the organization of the system shown generally in FIG. 7 and an occasional reference back to the foregoing general description and to FIG. 7, as the detailed description unfolds may be found helpful.

G. DETAILED DESCRIPTION OF SIMULTANEOUS LINEAR PATH GENERATION

1. The System in Greater Detail

The process by which macroposition numbers XCP and YCP are generated for each of a series of equally spaced points will be described in detail in connection with a system, shown in FIG. 9, which is capable of performing both simultaneous linear interpolation and staggered circular interpolation. Before considering the operation of the system whereby linear path generation is carried out, selected parts of the system will first be described. It will be apparent to those skilled in the art that the methods here to be described are carried out through the utilization of digital processing apparatus, but the specific apparatus so employed may take any of a wide variety of forms.

A. THE CENTRAL TIMING SYSTEM

Provision is made in the numerical control system of FIG. 9 for producing a digital sweep formed of signals which digitally represent a reference number repeatedly and cyclically changing through a progressively increasing series of values during successive time intervals. Provision is also made for providing a sinusoidal reference signal for the X and Y axis servo drives 75 and 77, and for deriving from the digital sweep, signals which control the time periods during which various operations of the numerical control are performed. A particularly effective combination for performing all of these functions are the Time Base and Digital Sweep 63 and the Time Base Mode Selector 69 shown respectively in FIGS. 9b and 9e.

1. PRODUCING THE DIGITAL SWEEP

Forming part of the Time Base and Digital Sweep 63 is a series of four cascaded binary coded decimal pulse counters 131, 133, 135, and 137. The digital sweep is derived from the outputs of the first three stages, 131, 133, and 135, respectively labeled the A, B, and C decade counters and collectively identified as the Digital Sweep Generator 139. The decade counters 131-137 are of similar construction and are well known to those skilled in the art. A typical unit of this type includes four cascaded flip-flops interconnected so that the decade repeatedly counts from 0 to 9 in response to successive input pulses, being reset to 0 by every 10th input pulse and signaling its contents on four output lines, or terminals, in 8, 4, 2, 1 binary code. Additionally, each time the unit is reset to 0, it produces a signal on a fifth or "carry" line.

The A decade counter 131 is stepped by output pulses produced at a repetition frequency of 500 kiloherz by a Divide by 4 circuit 141 which in turn is driven by pulses from a 2 megaherz clock 143. The output pulses produced by the clock 143 and the Divide by 4 circuit 141 are shown in FIG. 11 as the waveforms 145 and 147 respectively. The units digit of the digital sweep is signaled on output terminals of the A decade counter 131, labeled A1, A2, A4 and A8 to signify the binary weight of the signals appearing on the respective terminals. Since the pulse repetition frequency of the pulses applied to the A decade counter 131 is 500 kiloherz, or a pulse every 2 microseconds, the A decade counter cycles through its 10 count states every 20 microseconds. Through line 149 the "carry" output of the A decade counter 131 is applied to the input of the B decade counter 133 and consequently that counter cycles through its 10 count states every 200 microseconds and on its four output terminals, labeled B1, B2, B4 and B8 is signaled the tens digit of the digital sweep. The "carry" output of the B decade counter 133 is applied to the input of the C decade counter 135 through the line 151, causing that counter to cycle through its 10 count states every 2 milliseconds. It is on the output terminals C1, C2, C4, and C8 of this counter that the binary coded decimal signals representing the hundreds digit of the digital sweep are derived.

Collectively, the cycling decade counters 131, 133, and 135 produce a digital sweep formed of signals representing a reference number which repeatedly cycles during successive time intervals from a first predetermined value (here 000) to a second predetermined value (here 999) by uniform increments (here 1) and at uniformly time-spaced instants (here 2 microseconds). The signals produced by the Digital Sweep Generator 139 are applied to other components of the system and in order to maintain clarity in the drawings, their connections are not indicated by lines. Instead the output terminals of the Digital Sweep Generator 139 contain the symbol .DELTA. and terminals of devices elsewhere in the system, such as the compare circuits in FIG. 9d, which are connected to terminals of the Digital Sweep Generator, contain similar symbols, with an additional indication of the particular Digital Sweep Generator terminal to which they are connected.

2. PRODUCING GATING PULSES TO ASSURE UTILIZATION OF THE DIGITAL SWEEP WHILE ITS COUNT STATES ARE STABLE

The progression of the reference number collectively signaled by the cycling decade counters of the Digital Sweep Generator 139 is shown in FIG. 11 as the staircase shaped waveform. It will be seen that each new count state begins with the negative going edge of the waveform 147 and lasts until the next such negative going edge. The wavy line during the initial portion of each count state represents an instability period during which the counters are tumbling from their previous count states. It is the principal function of the Divide by 4 circuit 141 to produce a gating pulse which occurs during the central portion of the stable period of each count state so that units in the system which utilize the output of the Digital Sweep Generator may be gated open to receive the outputs of the Digital Sweep Generator during its stable count states.

The Divide by 4 circuit 141 includes two gated flip-flops 155 and 157. The flip-flop 155 has a pair of inputs J1 and K1 for receiving gating signals and a third input labeled CP for receiving clock pulses. The flip-flop also has a pair of outputs labeled T1 and T1 characterized by the fact that when a logic "1" level signal appears at one of the outputs, a logic "0" level signal is produced at the other. The flip-flop 157 has inputs and outputs corresponding to those of flip-flop 155 and are labeled J2, K2, CP, T2 and T2. Flip-flops of the type illustrated for use in the Divide by 4 circuit are commonly referred to as J-K flip-flops and are well known to those skilled in the art. It will therefore suffice here to describe the manner in which they operate under four possible conditions.

Condition 1: if neither the J input nor the K input receives a logic 1 level signal, i.e., if neither J nor the K input is "qualified," while a clock pulse is applied to the flip-flop, then the clock pulse does not change the state of the flip-flop. Condition 2: if the K input is qualified during application of a clock pulse, the negative-going edge of the clock pulse following qualification of the K input of the flip-flop will reset it to its "0" state, in which state its T output produces a logic 0 level and its T output produces a logic 1 level. Condition 3: if the J input is qualified, application of a clock pulse will set the flip-flop to its "1" state, that is, to that state in which its T output produces a logic 1 signal and its T output produces a logic 0 signal. With respect to the last two conditions, it will be understood that, if the flip-flop is already in the 0 state when its K input is qualified, it will simply stay in that state after a clock pulse is applied to it. Similarly, if the flip-flop is already in the 1 state when its J input is qualified, it will simply stay in that state after receiving a clock pulse. Condition 4: if both the J and K inputs of the flip-flop are qualified at the time when a clock pulse is applied to the flip-flop, application of a clock pulse to the flip-flop will cause it to reverse its state from whichever state it had been in prior to application of the clock pulse.

With this basic understanding of the J-K flip-flops which form the Divide-by-4 circuit 141, operation of the circuit can be simply described. It is the well-known switch tail or Johnson counter and is basically a two-stage serial shift register connected in a loop with the outputs cross-connected to the inputs. The T1 and T1 outputs of Flip-flop 155 are connected to the J2 and K2 inputs of flip-flop 157 respectively and the T2 and T2 outputs of flip-flop 157 are connected to the K1 and J1 inputs respectively of the flip-flop 155. The clock pulse inputs of both flip-flops 155 and 157 receive pulses from the 2 megaherz clock 143. Assuming that initially both flip-flops are in the reset condition, logic 1 signals are applied by the T1 and T2 outputs of the flip-flops to the K2 and J1 inputs of the two flip-flops. This is indicated by the waveform diagrams shown above the Divide by 4 circuit 141. Consequently, upon receiving the negative going or switching edge of the first clock pulse, the first flip-flop 155 becomes set but the second flip-flop 157 remains in the reset condition.

With the flip-flop 155 set, when the negative-going edge of the second clock pulse occurs, the T1 output of the flip-flop 155 will be qualifying the J2 input of flip-flop 157 while the T2 output of the flip-flop 157 will continue to qualify the J1 input of flip-flop 155 so that the negative-going edge of the second clock pulse will leave the flip-flop 155 in the set state but will also cause the second flip-flop 157 to switch from the reset to the set state. Thus, when the third clock pulse arrives, the T1 and T2 outputs of flip-flops 155 and 157 will qualify the J2 and K1 inputs of flip-flops 155 and 157. Since the K1 input of flip-flop 155 and the J2 input of flip-flop 157 are qualified when the trailing edge of the third clock pulse occurs, that trailing edge will cause flip-flop 155 to be reset while leaving flip-flop 157 in the set condition. This last change causes the T1 output of flip-flop 155 to qualify the K2 input of flip-flop 157 and the T2 output of flip-flop 157 to qualify the K1 input of flip-flop 155. With this set of conditions existing, arrival of the trailing edge of the fourth clock pulse resets the flip-flop 157 while leaving the flip-flop 155 reset. This was the initial condition of the two flip-flops. From this point, the cycle repeats.

The T2 pulse train, produced by the flip-flop 157, is the one used to drive the Digital Sweep Generator 139, which is advanced by one count with each negative-going edge of the T2 waveform. Thus, the time which elapsed during the four clock pulses represents one count state of the Digital Sweep Generator 139. Specifically, the A decade counter 131 changes its count state on the trailing edge of the T2 pulse, delayed by the propagation delay of its flip-flops. Decade counter 133 changes its count state, as signaled at its output terminals, on the trailing edge of the carry output of decade counter 131, delayed by the delays of the flip-flops in counter 133. Thus the delays in successive counters 131-137 cumulate. In the diagram above the Divide by 4 circuit 141, the shaded area spanning the second, third, and fourth clock pulses begins at the instant when the C decade counter 135 has stabilized and ends when the A decade counter 131 begins to change. Thus the shaded area represents the approximate time period during which all of the counters 131-135 of the Digital Sweep Generator 139 are in a stable state. The unshaded area, coinciding approximately with the first clock pulse, represents the brief time period during which some of the individual counters of the Digital Sweep Generator are tumbling to their new count states.

To produce a gating pulse which falls approximately during the mid-portion of the shaded area representing the stable state of the Digital Sweep Generator, the T1 output of flip-flop 155 and the T2 output of flip-flop 157 are applied to an AND gate 159. From the waveforms related to the Divide by 4 circuit 141, it is seen that the T1 and T2 outputs of flip-flops 155 and 157 are concurrently at a logic 1 level during the mid-portion of the shaded area so that during this time period a logic 1 or enabling voltage level appears at the output of AND gate 159. This signal is represented by the logic symbol T1 .sup.. T2.

3. GENERATING A BASIC SERIES OF PROGRAM STEPS

The Time Base and Digital Sweep 63 also includes means for producing timing signals during different predetermined states of the Digital Sweep Generator so as to time the operation of various elements in relation to particular count states of the Digital Sweep Generator 139. The particular arrangement used here comprises a Program Step Generator 161 formed of the B and C decade counters 133 and 135 of the Digital Sweep Generator 139, and the D decade counter 137, the latter being driven by the carry output of the C decade counter 135. Just as the ABC decade counters 131, 133, and 135, when taken together, comprise a Divide by 1,000 counter which cycles through a thousand count states 500 times per second, so that the BCD decade counters 133, 135, and 137, when taken together, comprise a Divide by 1000 counter which cycles through a thousand different count states 50 times per second. Stated differently, the count signaled by the ABC decade counters 131, 133, and 135, which comprise the Digital Sweep Generator 139, changes 10 times for every change in the count signaled by the BCD decade counters 133, 135, and 137 which comprise the Program Step Generator 161.

The relationship just described is graphically illustrated in FIG. 11 wherein the waveform 163 illustrates the steps through which the Program Step Generator 161, formed of the BCD decade counters 133, 135, and 137, progresses. Each of these steps is a program step, and it is seen from the figure that, during the same period in which the program steps progress from 0 to 100, the Digital Sweep Generator 139 goes through a complete cycle from 000 to 999.

The relationship between digital sweep numbers and program steps is also illustrated in FIG. 10a. It shows a rectangular chart vertically divided into 10 columns, each column divided into 10 equal zones and each zone being further divided into ten equal steps. Thus, the chart is divided into one thousand equal steps, and each step represents one count state of the Program Step Generator 161. The top step in the first column is labeled 000 and represents the initial count state of the Program Step Generator 161. The bottom or last step of the first column is labeled 099 and represents the 100th count state of the Program Step Generator. Steps in the remaining nine columns have a similar significance; thus, the top step of the second column represents count state number 101, the bottom step of that column the 200th count state, and so on through the entire chart until the last step of the last column, representing the 1,000th count state of the Program Step Generator.

As pointed out earlier, for each step or count state of the Program Step Generator 161 the Digital Sweep Generator 139 goes through ten steps or count states of its own. Thus, during each 100 steps represented by successive columns of the programming chart, the Digital Sweep Generator cycles through a thousand different count states from 000 to 999 and this is indicated in FIG. 10b by the leftward sloping line 165 which is an approximate representation of the count states of the Digital Sweep Generator 139.

Continuing with the consideration of the Program Step Generator 161, it is seen that it generates a series of 1,000 potential program steps from which any step may be selected by means which are responsive to the particular set of signals existing on the outputs of the Program Step Generator during that step. This selection might be performed by devoting a separate set of AND gates to each program step that is to be selected. Obviously this would require quite a large number of such AND gates since each program step is signaled on 12 output terminals, B1-B8, C1-C8, and D1-D8. Consequently, to reduce the complexity of the equipment required to select various program steps for performance of differently timed functions, a series of three binary coded decimal to decimal code converters 167, 169 and 171 are provided for reducing the number of signals by which different program steps are represented. Each of the three code converters has four input terminals for receiving a binary coded decimal digit from one of the three decade counters of the Program Step Generator 161 and ten output terminals. The units converter 167 signals the units digit of the program step on one of 10 terminals labeled zero through nine; the tens converter 169 signals the 10s digit of the program step on one of 10 terminals labeled 00 through 90; and the hundreds converter 171 signals the hundreds digit of the program step on one of its 10 outputs labeled 000 through 900.

Through the use of the code converters, each of the 1,000 program steps shown in the programming chart in FIG. 10a is represented by signals on a different combination of three output terminals among the thirty output terminals of the code converters 167, 169, and 171. As an example, assume that the Program Step Generator is in its count state number 746, or with reference to the programming chart of FIG. 10a, in the 47th step of the eight column. This count state and program step will be represented at the output terminals of the Program Step Generator 161, by logic 1 signals appearing on terminals B2 and B4, C4, and D1, D2, and D4. In contrast, the same count state and program step is represented at the outputs of the binary coded decimal to decimal converters 167, 169, and 171 by logic 1 signals on three output terminals: the 700 terminal of the hundreds converter 171, the 40 terminal of the tens converter 169, and the 6 terminal of the units converter 167. Thus, if it were desired to initiate operation of some part of the system during count state 746, it could be accomplished by use of means such as an AND gate responsive to concurrent signals on the three code converter output terminals just listed. This is indeed the way in which many of the timing signals are produced in the system, and the AND gates used for this purpose will be referred to as "program" gates.

The Time Base and Digital Sweep 63 also includes a decoder 173 for producing a program clock pulse (PCP) and a WRITE pulse (WP). Each of the PCP and WP pulses occur once during each cycle of the A decade counter 131 and their relative times of occurrence during the ten counts of each cycle of the A decade counter 131 are shown in the waveform diagrams directly above the counter in FIG. 9b. The PCP pulse initiates each program step and the WP pulse signals the instant when data is to be stored in a storage register during a particular program step. The details of the decoder 173 will be obvious to one skilled in the art and will not be described. It uses the outputs A1, A2, A4 and A8 of the decade counter 131 and may also use T1, T2 of the Divide by 4 circuit 141. The decoder 173 may include suitable inverters, AND gates, and flip-flops arranged in accordance with the logic required to produce the PCP and the WP pulses so as to avoid marginal timing problems. In particular, the PCP pulse should end before the count state of the Program Step Generator changes.

4. GENERATING ALTERNATIVE SERIES OF PROGRAM STEPS

The Program Step Generator 161 as thus far described can produce 1,000 timing signals, each defining a different 20 microsecond time period during each cycle of the Program Step Generator. It has been stated that, to initiate a certain operation during a given count state of the Program Step Generator 161 such as count state 746, three inputs of a program gate would be connected to the 700, 40, and 6 output of the converters 171, 169, and 167. Let it be assumed, however, that a certain operation is to be initiated during count state 746 only if a given condition exists, a different operation only if another condition exists, a third operation only if a third condition is met and yet another operation only if a fourth condition has been reached. Let it be assumed also, that a fifth operation is to be carried out during count state 746 regardless of whether or not any of the first, second, third and fourth conditions have been met. This is the function of the Multimode Time Base Logic 67 shown in detail in FIG. 9d. It includes four groups of AND gates 175, 177, 179, and 181. Each group includes 10 AND gates of which only the first and last two are shown. Within each group, successive ones of the individual AND gates have one of their inputs connected to successive ones of the individual outputs 000 to 900 of the converter 171 in FIG. 9d.

The output terminals of the 10 AND gates 175 are identified as 1000, 1100....1900, and may be caused to receive the signals present on the outputs 000, 100, ...900 of the converter 171 by an enabling signal on the input line and M1. The remaining AND gate groups 177, 179, and 181 have outputs identified as 2100-2900, 3100-3900, and 4100-4900 respectively. Signals corresponding to those on the outputs 000-900 may be placed on the outputs 2100-2900, 3100-3900, and 4100-4900 by enabling signals on respective ones of the input lines M2, M3, and M4. If the first of the four conditions is signaled by an enabling signal on the line M1, and the second, third and fourth conditions are signaled on the lines M2, M3 and M4 respectively, then to produce a timing signal during the count state 746 of the Program Step Generator 161 only when the first condition exists, two of the three inputs of the program gate will remain connected to the 40, and the 6 outputs of the converters 169 and 167 but the third input will have to be connected to the 1700 output of the AND gates 175 instead. In this way, a timing signal will be produced at the output of the program gate during count state 746 only if the first condition is in fact signaled on the M1 line. By similar reasoning, to produce a timing signal during count state 746 only if the second, third, and fourth conditions have been fulfilled, the third input to the program gate will have to be connected to the 2700, 3700, and 4700 output terminals of the AND gates 177, 179, and 181. If on the other hand, a timing signal is to be produced during count state 746 of the Program Step Generator 161 regardless of the existence of the four different conditions, then the inputs of the program gate should be connected directly to the 700, 40, and 6 outputs of the converters 171, 169, and 167.

Thus the generation of a timing signal during any one of the 1,000 different count states of the Program Step Generator 161 may be conditioned on the existence of one of four conditions, and for each one of the four conditions there exist 1,000 potential timing signals which may be derived with the aid of respective ones of the AND gates 175, 177, and 179, and 181. The 1,000 potential time periods or program states that may be derived directly from the outputs of the converters 171, 169, and 167 were shown in FIG. 10a in the form of a programming chart. Similar programming charts exist for the four different groups of 1,000 timing signals which can be derived in response to signals on the lines M1, M2, M3, and M4. One such programming chart is shown in FIG. 10c. It is identical to the programming chart of FIG. 10a except that its 10 columns are numbered 1,000-1900 in keeping with the numbers and the AND gates 175 which must be enabled to produce the timing signals represented by the programming chart.

Summarizing, the programming chart shown in FIG. 10a represents 1,000 different time periods corresponding to the 1,000 successive count states of the Program Step Generator 161 during which a timing signal may be derived by means of a program gate connected to the outputs of the converters 171, 169, and 167. Each of the 1,000 different timing signals represented by the programming chart on FIG. 10a may be thought of as requiring a single program gate connected to an appropriate three of the 30 output terminals of the converters 171, 169, and 167. Thus, if it were desirable to produce a timing signal during each of the 1,000 program steps of the Program Step Generator 161, 1,000 program gates, each connected to a different combination of three output terminals of the converters might be used. In such a case, 1,000 different timing signals would be produced, one during each of the count states of the Program Step Generator 161, regardless of the presence of a signal on the lines M1-M4. If, in a similar manner 1,000 program gates were connected to the AND gates 175, and to the outputs of the converters 169 and 167 so as to generate the 1,000 possible timing signals represented by the programming chart in FIG. 10c, these timing signals would be produced only if an enabling signal were received by the AND gates 175 over the input line M1. Further, if the timing signals thus produced were used to initiate 1,000 different operations in the system in succession, these operations too would occur only when the M1 input line was energized. In actual practice, four groups of programming gates (or equivalent devices) are provided, each for producing a series of timing signals under a different one of the four conditions referred to. A different series of operations is initiated by each of the four series of timing signals, each series being repeated with each cycle of the Program Step Generator 161. In this manner, the system of FIG. 9 may be caused to carry out any one of four series of operations, or to operate in any one of four different "modes," by energizing an appropriate one of the four input lines M1-M4.

The four different modes in which the system of FIG. 9 is capable of operating are required to perform four different types of operation as a path consisting of linear and circular segments is generated. In its first mode of operation the system generates either a linear or a circular path segment. This mode of operation is typically repeated a large number of times in the course of generating a path, each repetition being called an iteration, extending over a period of time which is equal to the cycling time of the program step generator 161, and resulting in the generation of a new pair of macropositions for the X and Y axes.

Modes 2 and 3 relate exclusively to the generation of a linear path and relate in particular to a corrective operation performed during the last few iterations associated with the generation of the linear path which is designed to bring the last macroposition for each of the X and Y axes in coincidence with the desired end point for the linear path segment.

The last of the four modes of operation is put into effect during the last sequence of operations associated with generating either a linear or a circular path. In this mode of operation the system transfers data from the buffer registers 47 to the active registers 57 and processes the data so as to generate the macromove numbers for the following path segments to be executed.

It can be stated generally that in a typical operational sequence the system operates a large number of times and through a large number of the same, mode 1, iterations in generating a linear or circular path segment. It is toward the end of the path segment that a relatively rapid change occurs in the operating mode of the system. This rate of change may be so rapid as to shift the system through different modes of operation within one iteration, or within less than 20 milliseconds. This indeed is the case where the system is completing a circular path. It will be seen that, when generating a circular path, the system shifts abruptly from its first to its fourth mode of operation toward the end of the path. In contrast, in performing simultaneous linear interpolation, and in carrying out a feature of the invention which is yet to be discussed as the end of the linear path is approached the system shifts from operating mode 1 to mode 2, then into mode 3 and operates in that mode for nine iterations and only during the last iteration is it switched into mode 4 operation in which the macromove numbers for the following path segment are derived. To permit the system to step through its successive operating modes at different rates, depending on whether a circular or a linear path segment is being generated, is the function of the Time Base Mode Selector 69 (FIG. 9e).

5. THE TIME BASE MODE SELECTOR

Generally, the Time Base Mode Selector 69 responds to certain pre-selected conditions occurring in the system to take a step toward changing the operating mode of the system in a prearranged manner. One condition to which the Time Base Mode Selector 69 responds is the nearing of the end of the path segment being generated by the system. This condition is sensed by the Fast Axis Projected Overrun Detector 71, and is indicated on its output line 82 by a signal which is one of the many signals that are applied to the Time Base Mode Selector 69. In all, in the exemplary system of FIG. 9 there are over 20 different conditions to which the Time Base Mode Selector 69 is designed to respond. Each of these conditions is detected by a different logic gate or gating array. The various conditions thus responded to are listed in a block 183 which thus symbolically represents the array of program gates which are used for this purpose. The various conditions represented in the block 183 will be explained subsequently in connection with the operation of the system. It need only be noted at this point that, in response to each condition an output signal is produced by the program gate array 183 and is applied over a line 184 to one input of an AND gate 185 whose other input is energized by the PCP output of the Time Base and Digital Sweep 63. Therefore, every time an output signal is produced by the program gate array 183, a program clock pulse is gated through the AND gate 185. These gated program clock pulses are applied to a four stage binary counter 186 whose outputs in turn are decoded by a binary to single line decoder 187. Binary counters and decoders of the type suitable for use in the Time Base Mode Selector 69 are well known to those skilled in the computer arts and in fact the combination illustrated in the FIG. 9e is shown and explained in Digital Computer Principles by the Burroughs Corporation, McGraw-Hill Book Company, Inc., 1962, at page 327. The decoder 187 is provided with a series of 16 outputs numbered S1 through S16. In combination the binary counter 186 and the decoder 187 operate in a manner analogous to a stepping switch in that, in response to each pulse received from the AND gate 185 the binary counter is stepped to its next higher count state, signaled at its outputs in binary coded decimal form. These output signals in turn appear at successive ones of the 16 outputs S1-S16 of the decoder 187. The binary counter 186 has a count capacity of 16 and is cyclic in operation. Thus, the first program clock pulse gated through the AND gate 185 causes an output signal to appear on the S1 output terminal of the decoder 187, and the 16th gated pulse results in a signal on the S16 decoder output terminal. The following pulse applied to the counter 186 again sets it in its first count state and again causes a signal to appear on the S1 output of the decoder 187.

The output terminals S1-S16 of the decoder 187 are operatively connected in four groups to the four control lines M1-M4 of the Multimode Time Base Logic 67. The first three output terminals S1-S3 are connected through an OR gate 189 to the input line M1. The fourth output terminal S4 is connected directly to the second input control line M2. The fifth through the 13th output terminals S5 - S13 are connected through a second OR gate 190 to the third input line M3, and the last three outputs S14 - S16 are connected through a third OR gate 191 to the fourth input line M4.

When the system is performing linear path generation, the binary counter 186 is stepped generally once, or in some cases, twice during each of the last few iterations performed during the generation of the linear path. As a result, the system is caused successively to change its mode of operation through the first, second, third and fourth modes. On the other hand, when the system is generating a circular path, as the end of the path is approached, in one or two iterations the counter 186 is caused by the program gate array 183 rapidly to step through its second through 14th or S2 through S14 stages, thus causing the system to shift from its first mode of operation to its fourth in one or two iterations.

6. PRODUCING A REFERENCE SIGNAL FOR THE SERVO DRIVES

A third function performed by the Time Base and Digital Sweep 63, is to provide a sinusoidal reference signal for the servo drives 75 and 77. By means of a flip-flop 175, a square wave which is in phase with the cycling periods of the digital sweep is generated. The flip-flop 175 may be of the same type as those described in connection with the Divide by 4 circuit 141 and it is so shown. To drive the flip-flop 192 in phase with the digital sweep, its J input is connected to the C4 output of the C decade counter 135 and the "ANDed" C1 and C8 outputs of the same decade counter are applied by means of an AND gate 177 to the K input of the flip-flop. Finally the clock pulse (CP) input of the flip-flop is connected to carry output line 151 of the B decade counter 133. Consequently, in accordance with the operation of the J-K flip-flop as explained previously, the flip-flop 175 is set every time the Digital Sweep Generator 139 changes from its 499th count state to its 500th count state and is reset every time the Digital Sweep Generator changes from its 999th count state to its 000 state. The desired square wave voltage appears at the Q output of the flip-flop 175 and is shown in FIG. 10b as the waveform A to the immediate right of the programming chart. The 500 c.p.s. output of the flip-flop 175 is applied to a reference sine wave shaper 181 and is converted thereby into a 500 c.p.s. sinusoidal reference voltage B which, as seen in FIG. 10b, is in phase with the square wave A. Suitable sine wave shapers are well known in the art and need not be described here.

B. TAPE READER AND BUFFER REGISTERS

Having considered in detail the manner in which various timing signals are produced for the system of FIG. 9 attention will next be directed to the peripheral, input portion of the system whereby information is read from the punched tape 37 and stored temporarily in the buffer registers 47. The XEP BUF register 47 is exemplary of all the buffer registers with exceptions which will be noted in connection with particular ones of registers. It consists of two parts, a six stage shift register for storing six binary coded decimal digits of a number, and a seventh stage for storing the sign of that number. Each digit stage of the shift register is made up of four J-K flip-flops which are identical to the flip-flops 155 and 157 described with reference to the Divide By 4 circuit of FIG. 9b, with the sole difference that the letters Q and Q are used in place of the letters T and T to denote the outputs. Input signals are applied to the register 47X on a set eight input lines labeled 8, 8, 4, 4, 2, 2, 1 and 1. Successive pairs of eight input lines are applied to the J and K inputs of successive ones of the four flip-flops comprising the lowest order digit position of the register. The two lowest order positions are shown in detail in FIG. 12.

Flip-flops 201, 203, 205 and 207 comprise the lowest order digit stage, and the second stage includes another four flip-flops 209, 211, 213 and 215, each of which receives at its J and K inputs the Q and Q outputs of the corresponding flip-flop of the preceding stage. The first two digit stages are exemplary of the other four stages which are not shown. They too contain four flip-flops per stage and the flip-flops comprising each stage are connected to the flip-flops comprising the preceding stage in the same manner in which the second stage flip-flops 209-215 are connected to the first stage flip-flops 201-207.

To enter data into the shift register, groups of binary coded signals are periodically applied to its eight input lines and synchronously with these signals clock pulses are applied at regular intervals over an "X shift" input line 217 X to the CP inputs of all the flip-flops of the shift register. With each shift clock pulse the binary signals on the eight input lines are stored in the lowest order stage of the shift register. With each succeeding clock pulse, the signals are shifted to the next higher order stage and a new group of signals is entered into the lowest order stage of the shift registers until after the sixth clock pulse and the sixth group of signals, the first group of signals has been transferred all the way to the last or highest order stage of the register and the last group of signals has been stored in the first, or lowest order, stage of the register.

In the operation of the system of FIG. 9 it is desirable to transfer simultaneously all of the signals which have been entered serially into the digit stages of the buffer register 47X. For this purpose, the register also includes a group of READ gates. In particular, four READ gates 218 are provided for each digit stage of the register and each of them receives one of the eight outputs of the stage. Thus, a total of 24 READ gates 218 comprise the group of gates for simultaneously transferring or "reading" the contents of the six digit stages of the register 47X onto the computer input trunk line 59.

Each READ gate is comprised of a standard two-input positive logic AND gate and an isolating diode as illustrated in FIG. 12a. As shown in FIG. 12a, a typical two-input READ gate includes a pair of diodes 208 and 210 whose cathodes receive the two logic input signals applied to the gate and whose anodes are connected together and through a resistor 212 to the positive terminal of a voltage source. The output of the AND gate is applied to one of the conductors 59--1 of the trunk 59 through an isolating diode 214. The other end of the trunk line conductor 59--1 is typically connected to the negative terminal of the voltage source through a path within the computer 53, represented in FIG. 12a by the resistor 216.

The READ gate, comprised of the components 208-214 just described and connected to the trunk line conductor 59--1 may be assumed to be one of those shown as part of the buffer register 47X. Several other buffer registers have corresponding READ gates whose outputs are also connected to the trunk conductor 59--1. One of these READ gates is shown in FIG. 12a as being comprised of the resistor 212a, a pair of diodes 208a and 210a, the foregoing three components comprising the AND gate portion of the READ gate, and an isolating diode 214a. The isolating diodes 214 and 214a serve to prevent the Interaction of the several READ gates which are part of different registers but whose outputs are connected to the same trunk conductor.

To clarify the correspondence between the symbol used for a READ gate and the actual circuit represented by that symbol, the two READ gates which are drawn in in FIG. 12a in detail are shown in FIG. 12b, with the READ gate symbols being substituted for the individual components of the gates.

To time the simultaneous transfer of data from the buffer register 47X, a gating signal is applied over a line 219X labeled "RD/XEP BUF" to a second input of each of the READ gates 218.

In addition to the six digit stages of the register 47X, it also includes a seventh stage (shown in FIG. 9k to the left of the highest order digit stage) for storing the sign of the number whose digits are stored in the other six register stages. This sign is not shown in the detailed representation of the register in FIG. 12. It comprises a single J-K flip-flop 220X with the J and K inputs of the flip-flops receiving signals respectively representing a negative and a positive sign. To time the entry of the sign signal into the sign flip-flop 220X, a sign store clock pulse is applied to its CP input. And to permit transfer of the sign information stored in the flip-flop 220X along with the digit data stored in the six digit stages of the register 47X, its group of READ gates 218 includes an AND gate connected between an output of the sign store flip-flop and the trunk line 59 and gated concurrently with the other gates in the group from the line 219X.

The foregoing description of the XEP BUF buffer register 47X applies equally to the buffer registers 47Y, 47I, and 47J, each of which also includes a single stage for storing a sign signal and six digit stages for storing a six digit number. Due to the much smaller number to be stored therein, the G BUF register 47G has fewer stages than the other four registers 47X, Y, I and J. From the discussion related to FIG. 4 it will be recalled that the G number comprises three digits, the first designating the letter G and the second and third designating a two digit number. Only the second digit of the number is actually used. Consequently the G BUF register 47G comprises a single digit stage of four flip-flops connected exactly as the flip-flops 201-207 in FIG. 12. The first digit to be entered in the register is simply destroyed when the second number is subsequently entered and this second number is then converted into a control signal by means of a G BUF decoder 221.

The decoder 221 has four control outputs respectively labeled G01, G02, G03, and G02+G03, and is operative to produce a logic 1 signal at those of its outputs which correspond to the number stored in the G BUF register 47G. If the number stored in the register is 1, a logic 1 signal is produced at the G01 output of the decoder and this represents to the rest of the system that the numbers stored in the registers 47X, Y, I and J represent a linear path segment. If the number stored in the register 47G is 2, a logic 1 signal appears on the G02 output of the decoder 221, indicating that the path segment to be generated is circular, progressing clockwise. A counterclockwise progressing circular path segment is indicated by a logic 1 signal on the G03 output of the decoder and this occurs when the number stored in the register 47G is 3. And, if a 2 or a 3 is stored in the register 47G, the G02 + G03 line of the decoder 221 is energized with a logic 1 signal, indicating that the path to be generated is circular but that it may be either clockwise or counterclockwise.

The Q BUF register 47Q differs from the XEP BUF register 47X, first in that it has only 5 digit positions and secondly in that it does not have a sign storing flip-flop. The reason for these differences arises out of the fact that the Q number which is stored in the register 47Q is represented on the tape in "floating point" terminology. According to this terminology a multi digit number is represented by a sign followed by a digit called the "characteristic," which is in turn followed by a series of digits which are collectively called the "mantissa." The characteristic digit serves to indicate where the decimal point should be placed. If the characteristic digit is zero, the decimal point should be placed immediately before the first digit of the mantissa. If the decimal point should be placed after the first digit of the mantissa, the value of the characteristic will be +1. If there should be a zero between the decimal point and the first digit of the mantissa, the characteristic digit will be a -1. Furthermore, if the decimal point should appear after the second, third, or fourth digit of the mantissa, this will be indicated by a characteristic digit of +2, +3, and +4 respectively. Similarly, if there should be 2, 3 or 4 zeros between the decimal point and the first digit of the mantissa, respective ones of these conditions will be indicated by the characteristic which is -2, - 3 and -4. Thus the particular number represented by the indicia on the block illustrated in FIG. 4 is 0.001, meaning that the ratio of the macromove .DELTA.D to the total movement D to be executed in response to the block of data is 0.001 and that, therefore, it will require 1,000 macromoves to complete the path segment involved. For practical purposes the value of the Q number will always be less than 0.1 and, therefore, the sign of the characteristic of the Q number will always be negative, and the Q BUF register 47Q need not have a sign store flip-flop.

To provide individual control over the stepping of data in different ones of the buffer registers 47, each of the registers is provided with an individual shift control line for supplying clock pulses to associated shift registers. In addition to the X shift clock pulse line 217X associated with the register 47X, five other clock pulse lines 217Y, 217I, 217J, 217G, and 217Q are associated with respective ones of the registers 47Y, I, J, G and Q. Each of the six clock pulse lines 217 receives clock pulses through an individual one of six clock pulse control AND gates 222X, Y, I, J, G, Q from a common shift clock pulse line 223 connected to a first input of each of the AND gates. Means are provided individually to enable each of the AND gates 222 thereby passing shift clock pulses only to a selected one of the registers 47. The clock pulses are derived directly from the sprocket holes on the punched tape 37, thus insuring that they will be in synchronism with the numbers being read from the tape. Specifically, the tape reader 41 includes a nine channel photoelectric hole detector, eight channels for the eight information channels on the tape 37 and a ninth channel for the sprocket holes of the tape. As each row of holes is transported past the detector, it produces data channel pulses on eight output lines, shown collectively in FIG. 91 as a trunk line 225, and a timing pulse on a ninth output line 227. Since the sprocket hole is smaller than the data holes, the timing pulse produced in response thereto is shorter in duration than the data channel pulses as indicated by the waveforms to the left of the tape reader 41. This assures that any shifting operation initiated by the clock pulses will occur between the leading and lagging edges of the data channel pulses.

The sprocket hole pulses are applied to the shift clock pulse line 223 through an AND gate 229 which is part of a logic gating arrangement for permitting only those pulses that are derived from sprocket holes in digit data rows to reach the line 223.

The data channel pulses of the tape reader 41 are applied over the tape reader output trunk line 225 to the decoder 43 which is shown in block form only, since decoders are well known to persons skilled in the art of data processing. It need only be noted that the decoder 43 is provided with eight inputs connected to receive the signals on the trunk line 225 and with a first group of eight outputs labeled 8, 8, 4, 4, 2, 2, and 1, 1. As row after row of the indicia on the tape 37 are read by the tape reader 41, the decoder 43 is operative to produce at its first group of eight outputs electrical signals representing each row of indicia in binary coded decimal form. The aforesaid eight outputs comprise the decoder output trunk line 51 noted previously with reference to FIG. 7 and are connected to the similarly labeled eight inputs of each of the buffer registers 47.

A principal function of the decoder 43 is to generate over individual ones of a second group of output lines 231 signals in response to those rows of indicia on the tape 37 which represent the characters X, Y, I, J, G and Q. Thus by means of appropriate logic gating devices signals are produced on successive ones of six output lines 231X, 231Y, 231I, 231J, 231G, and 231Q of the decoder 43 as respective ones of the data rows representing the characters I, J, X, Y, Q, and G are sensed by the tape reader 41. At a seventh output 232, marked EL, the decoder also produces a signal when the last, or EL row of block has been read. The signals which are produced at the output lines 231 are called the address signals and are used to control the flow of clock pulses to that one of the buffer registers which is to receive the particular number being read from the tape. Toward this end six J-K flip-flops 233 are provided, one for each of the six buffer registers 47. Each of the six address output lines 231 of the decoder 43 is connected through a common OR gate 235 to the K inputs of all of the flip-flops 233 so that all of the flip-flops are reset each time an address character is read from the tape. Furthermore, respective ones of the six address output lines 231 are individually connected directly to the J input of a different one of the six flip-flops 233 so that, as successive ones of the address characters X, Y, I, J, G, and Q are decoded, successive ones of the flip-flops 233X, Y, I, J, G and Q receive a signal at their J inputs. A second input of the AND gate 237 is connected to the output of the OR gate 235 so that each time an address character is read from the tape and an address signal is produced on one of the six lines 231, a sprocket hole pulse is gated through the AND gate 237 to the CP inputs of all of the flip-flops 233.

As the tape 37 is transported through the tape reader 41, each time an address row of indicia is read and decoded, all six of the flip-flops 233 receive a pulse at their K inputs and also at their CP inputs. Furthermore, one of the flip-flops will also receive a pulse on its J input directly from one of the six address outputs 231 of the decoder 43. Only those five flip-flops which receive signals at their CP and K inputs will be reset, and the sixth flip-flop, receiving signals at all three of its inputs, will be caused to reverse its state from a reset to a set condition. Consequently, as each address row on the tape is read and decoded, a different one of the flip-flops 233 will be set. Thus in response to the X address row, containing holes in channels 1, 2, 3, 5 and 6, a signal will be produced by the decoder 43 on its output line 231X and this signal will be fed to the J input of the flip-flop 233X causing that flip-flop to be the only one whose state is reversed and leaving the flip-flop in its set state. As a result, a logic 1 signal appears at the Q output of the flip-flop. This output, labeled the "X ADR" (X address) is connected by a line 239X to the second input of the shift clock pulse control AND gate 222X. The logic 1 signal thereon permits shift clock pulses to pass from the line 223 onto the X shift clock pulse line 217X.

The Q outputs of the other five flip-flops 233Y, I, J, G, and Q are similarly connected by lines 239Y, I, J, G, Q to supply enabling signals to the AND gates 222Y, I, J, G, and Q through which sprocket hole pulses are fed to the other five buffer registers 47Y, I, J, G, and Q.

The next row of indicia after the X address row represents a minus sign and is presented by the decoder 43 on the second of a pair of special "+" and "-" output lines 241 and 243. The + and lines 241 and 243 are connected to the J and K inputs of the sign flip-flops of the buffer registers 47X, Y, I, J. The lines 241 and 243 are also connected to the inputs of an OR gate 245 whose output is connected to one input of an AND gate 247. The other input of the AND gate 247 receives sprocket hole pulses through the line 227 from the tape reader 41 and the output of the AND gate is connected over a line 249 to one input of each of four AND gates 251X, 251Y, 251I, and 251J. Respective ones of the AND gates 251X, Y, I, J, have their outputs connected to the CP inputs of the sign store flip-flops 220X, Y, I, J and their second inputs connected to the Q outputs of respective ones of the flip-flops 233X, Y, I, J. By means of the gates 245 and 247, sprocket hole pulses are passed to the inputs of the AND gate 251 only when a sign signal is present on one of the decoder output lines 241 and 243, and by means of the AND gate 251, the sprocket hole pulses are applied to the sign store flip-flop 220 of that register which is about to receive the digits associated with the sign signal. Thus the sign signal on the lines 241 or 243 will be entered in the proper sign store flip-flop 220.

To prevent shift clock pulses from reaching the register 47X before the first X digit has been read from the tape, the AND gate 229 which controls the supply of sprocket hole pulses to the clock pulse line 223 is disabled while the X sign is read from the tape and is enabled only when a digit is being read from the tape. For this purpose, the output of the OR gate 235 is fed to an OR gate 253 whose output, in turn, is applied through an inverter 255 to a second input of the AND gate 229. As a result, whenever the OR gate 235 receives a logic 1 signal from one of the address lines 231 of the decoder 243, that signal is applied through the OR gate 253 to, and is inverted by, the inverter 255 to be applied as a logic 0 signal to the AND gate 229. A sprocket hole pulse is thus prevented from being passed through the AND gate 229 whenever the data being read from the tape is an address row.

Further, to prevent a sprocket hole pulse from passing through the AND gate 229 when a sign signal or an EL row is being read, the output of the AND gate 245 is connected to a second input of the OR gate 253, and the EL output 232 of the decoder 43 is connected to an input of the OR gate 235.

Following the reading, decoding and storing of the sign of the X coordinate number, the next row of indicia, representing the first digit of the X coordinate, a 0, is read and decoded. Since the row represents a digit, none of the input lines to the OR gates 235 or 245 carries a logic 1 signal so that a logic 0 voltage level appears at the output of the OR gate 253. This signal level is inverted by the inverter 255 and is applied as a logic 1 signal level to the AND gate 229, enabling it. As a result, a sprocket hole pulse is passed through the AND gate 229 onto the digit store clock pulse line 223. This sprocket hole pulse is gated through the AND gate 222X by the address signal from the address flip-flop 233X, causing the data appearing on the digit output lines of the decoder 43 to be shifted into the lowest order digit stage of the register 47X. As successive digit rows are read, five more sprocket hole pulses are applied through the AND gate 222X and over the line 217X as shift clock pulses to the register 47X, causing the other five digits of the X coordinate to be shifted into the register. After the last shifting operation, the first read digit will be stored in the highest order stage of the register and the last read digit will be stored in the lowest order stage. In the same manner, the sign and digit rows of the Y, I, and J numbers are stored in the registers 47Y, 47I, and 47J.

The storage of the G and Q numbers in the registers 47G and 47Q differs from the foregoing process only in that neither of the G and Q numbers needs a sign. Consequently, the step associated with the reading and storing of the sign of the number is omitted.

When the last digit of the G number has been stored in the G BUF register 47G, the tape reader 41 is stopped until the next block of data is to be transferred from the tape 37 to the buffer registers 47. The stopping and starting of the tape reader is synchronized with the remainder of the system of FIG. 9 by means of the tape reader start control 45, principally comprising a J-K flip-flop 257. The tape reader 41 is provided with a RUN input 259 connected to the Q output of the flip-flop 257 and is operative to begin transporting the tape 37 and reading the data thereon when a logic 1 voltage level is applied to the RUN input by the flip-flop. The clock pulse input (CP) of the flip-flop 257 is connected to the output of an OR 261 and one of the inputs of the OR gate is, in turn, connected to the output of an AND gate 263. One input of the AND gate 263 and the K input of the flip-flop 257 are both connected to the EL output of the decoder 43 through a line 265. The other input of the AND gate 263 is connected to the sprocket hole pulse line 227. Consequently, assuming that the flip-flop 257 was set to start the tape reader 41 at the start of the block, when the last row of data in the block, representing the end of line symbol EL is read by the tape reader 41, a logic 1 signal is applied to the K input of the flip-flop and shortly thereafter a sprocket hole pulse is gated through the AND gate 263 and the OR gate 261 to the clock pulse input of the flip-flop. As soon as the EL symbol has been read, the flip-flop 257 is reset and applies a logic 0 voltage level to the RUN input 259 of the tape reader 41, causing the tape reader to stop just short of reading the first row of data in the following block.

The OR gate 261 receives at a second input the output of an AND gate 267. One input of the AND gate 267 is connected to the PCP output of the decoder 173 in FIG. 9b and the other input of the AND gate is connected to the output of a program gate 269 which produces a program pulse on program step 4,995. Program step 4,995 marks the time when the data in the active registers 57 has served its purpose in generating the path segment derived therefrom and occurs after the data from the buffer registers 47 has been transferred into the active registers 57 for generating the next path segment. The output of the program gate 269 is also connected directly to the J input of the start control flip-flop 257. Therefore, during program step 4995, a logic 1 voltage level is applied to the J input of the flip-flop 257 and during this same program step a clock pulse is applied to the CP input of the flip-flop so that it is set and applies a logic 1 voltage level to the RUN input 259 of the tape reader 41, causing the tape reader to start transporting the tape 37.

C. THE ACTIVE REGISTERS

In contrast to the serial transfer of data from the decoder 43 to the buffer registers 47, the flow of data between the buffer registers 47 or the active registers 57 and the digital computer 53 is characterized by parallel, or simultaneous transfer. Generally, as one of the first operations in the process performed by the system of FIG. 9, the data stored in respective ones of the six buffer registers 47 is read in parallel into the computer 53 on six different program steps by enabling the READ gates of the respective buffer registers. The data so placed on the computer input trunk line (CIT) 59 is temporarily stored in the computer 53 without removing it from the register from which it was read and is then put by the computer on the computer output trunk line (COT) 61 during the following program step to be stored in a designated one of the active registers 57. The trunks 59 and 61 each contain four conductors for each digit of the number to be sent over them and an additional line for the sign of the number. The exemplary system has a capacity for processing numbers with up to seven digits and therefore each of the trunks 59 and 61 includes a total of 29 conductors. FIG. 13 shows the trunks 59 and 61 in greater detail, illustrating the four conductors associated with the lowest order digit to be carried on the output trunk 61 as the conductors 61-1, 61-2, 61-3, and 61-4. Similarly, the four conductors associated with the lowest order digit to be carried from the active registers 57 to the computer 53 are shown as the conductors 59-1, 59-2, 59-3, and 59-4. Also shown in FIG. 13 is the lowest order digit stage of the .DELTA.X register 109. The register stage illustrated in FIG. 13 is representative of all of the other six digit stages of the register 109. The sign stage of the register is similar to one quarter of the digit stage. Thus, the .DELTA.X register has a total of 17 flip-flops, and is representative of all of the other active storage registers, except that some of them have more digit stages, others have fewer digit stages, and others yet do not have a sign stage.

Referring to FIG. 13, the lowest order digit stage of the .DELTA.X register includes four R-S flip-flops 281, 283, 285, and 287. There is no provision for shifting the data stored in the flip-flops 281-287 to a higher stage. Rather, data is transmitted over the four trunk line conductors 61-1, -2, -3, and -4 to the flip-flops 281-287 and is subsequently sent from the flip-flops over the four trunk line conductors 59-1, -2, -3, and -4. To permit simultaneous transmission of signals over the trunk line 61 a group of 17 inverters and 17 pairs of AND gates, which collectively comprise the WRITE gates associated with the register, are provided. Those of the inverters and AND gates that are associated with the lowest order digit stage of the register are shown in FIG. 13 as the inverters 288 and the AND gates 289 connected between the trunk line conductors 61-1, -2, -3, and -4 and the R-S inputs of the flip-flops 281-287. One input of four of the AND gates 289 is connected to a respective one of the conductors 61-1, -2, -3, and -4 and the output of each of these four AND gates is connected to the S input of a different one of the four flip-flops 281-287. The second group of four AND gates are connected to the outputs of the four INVERTERS 288, which in turn are connected to respective ones of the lines 61-1, 61-2, 61-3, 61-4.

The second group of four AND gates have their outputs connected to respective ones of the R inputs of the four flip-flops 281-287. With the common input to the eight AND gates 289 held at logic "0," the four R-S flip-flops 281-287 are held in their existing state. When a number is to be written into the flip-flops of the .DELTA.X register, the line 291 is brought to the logic "1" level by appropriate program gating. At the appropriate time within the program step thus selected, the formerly blocked WP pulse is allowed to pass through the AND gate 290 to the common input of the 8 AND gates 289. When this occurs, the common inputs are enabled, and the R-S flip-flops 281 through 287 acquire the data from lines 61-1, 61-2, 61-3, and 61-4. A logic "1" presented at the S input sets an R-S flip-flop; a logic "1" presented at the R input resets the R-S flip-flop. When a logic "0" is presented on both inputs, the flip-flop does not change. The combination of logic "1" on both inputs is prevented from occurring by INVERTERS 288.

To transfer a stored number from the register 109 to the computer 53, a group of seventeen READ gates, one for each of the seventeen flip-flops of the register 109, is provided. Each READ gate is a coincidence responsive logic device, four of which are shown as the READ gates 295, each having one input connected to the Q output of a respective one of the four flip-flops 281-287 and all of them having a second input connected to a common READ control line 297. The outputs of the four READ gates 295 are individually connected to respective ones of the trunk line conductors 59-1, -2, -3, and -4 so that, when a READ control signal (R/.DELTA.X) is applied over the conductor 297 to the READ gates 295 the information stored in the four flip-flops 281-287 is simultaneously applied via the READ gates to the aforesaid conductors.

D. AN EXEMPLARY TIME SHARED DIGITAL COMPUTER

The destination as well as the source of almost all of the signals stored in the active registers 57 is the time shared digital computer 53. Such computers are well known and the discussion of their details would overburden this description. As a general example, reference may be made to Chapter 21 in the textbook "Digital Computer Principles" by Burroughs Corporation published in 1962 by McGraw-Hill Book Company, Inc. Because only ordinary skill in the art is required to organize the arithmetic computer, and the latter may take a variety of specific forms, there will only be here defined, in detail, the functions that are performed by the computer 53 and the times during which those functions are performed.

To satisfy the varied demands of the system of FIG. 9 in its different modes of operation, the computer 53 is capable of performing several arithmetic operations such as algebraic addition and subtraction, and multiplication. The basic operating mode of the computer 53 is that of addition and all other operating modes are brought about by special control signals. The computer receives its inputs from the computer input trunk line 59 over eight branches of four conductors each, respective branches being labeled in FIG. 9f as CIT-1 through CIT-8 and representing successively lower order digits of a number. In addition to the 32 conductors in the eight branches, a 33rd input conductor CIT (- ) is provided for carrying the sign of the number signaled on the other conductors. The output of the computer 53 is stored in an Answer Register 53a which includes stages one through eight corresponding to the eight numerical digits received by the computer over the trunk line 59 and a sign stage corresponding to the sign signal received by the computer.

Each of the eight digit stages includes means for storing four binary signals representing a decimal digit and these may be four J-K flip-flops such as those used in the buffer storage registers in the system. The sign stage includes means for storing a single binary signal representing the sign of the number stored in the other stages of the register and may comprise a single J-K flip-flop. The numbers stored in the Answer Register 53a appear on the conductors of the computer output trunk 61 which are connected to the Q outputs of the respective flip-flops comprising the register through eight output branches COT-1 through COT-8 and a ninth output line COT (- ). Each of the eight branches COT-1 through COT-8 has four conductors, and respective ones of the groups are connected to successive ones of the stages 1 through 8 of the Answer Register 53a. The single COT (- ) line is connected to the single flip-flop comprising the sign stage of the Answer Register.

A digit signaled on a particular one of the input line branches CIT-1 through CIT-8 is processed in the corresponding stage of the Computer Register 53a. Thus, a digit signaled on branch CIT-5 will be processed in stage 5 of the Computer 53a. In performing addition, the computer 53 adds to each digit stored in the Answer Register 53a that digit of the following number which is signaled on the corresponding branch of the trunk line 59. Each decade of the computer, except the last, also includes means for carrying any excess over 9 of the sum developed therein to the next higher order stage. Thus, for instance, if stored augend of +346 is stored in stages 6, 7, and 8 of the Answer Register 53a and subsequently an addend of +778 is applied over branches CIT-6, -7, and -8 to the computer, the result of +1,124 will appear in stages 5, 6, 7, and 8 of the Answer Register.

An important attribute of the computer 53 is that it is time-shared so as to perform many different operations upon data received by it from diverse sources in the system. Toward this end the computer is synchronized with the rest of the system. The relationship between the timing of the computer 53 and the rest of the system of FIG. 9 will be best understood by recalling the concept of program steps explained with reference to FIGS. 10 and 11. As explained there, certain operations of the system may be timed to occur during selected ones of a plurality of time periods, called program steps, each of which is 20 microseconds long. For example, a number stored in a particular active storage register may be caused to be transferred to the computer input trunk line 59 in response to a gating signal applied to the READ gates of that register during a particular one of the program steps. The point to observe is that, in the exemplary system the time during which such a gating signal is being applied to the READ gates of the program storage register coincides with the program step involved.

Each operation of the computer 53 is also performed in response to a control signal produced during a particular program step, but the operating cycle of the particular computer which is illustrated herein does not coincide with that program step. Instead, the operation begins during the middle of the program step in which that operation was initiated and ends at the middle of the following program step. The particular operation of the computer to which reference is being made is that of addition. Thus, the computer is so timed that, in response to a control signal during a given program step, it commences its operation for performing addition, called the Adder Cycle, halfway through that program step and terminates that adder cycle halfway through the following program step. Since the time periods during which numbers from various ones of the buffer and active storage registers 47 and 57 are gated onto the trunk line 59 coincide with the various program steps, the adder cycles are staggered relative to the time periods during which data is supplied to the computer 53. This staggered time relationship is illustrated in FIG. 14. Shown against a time scale extending from 0 to 60 microseconds are three program steps N, N+1, and N+2 represented by a continuous row of three blocks 311, 313, and 315. The adder cycles N and N+1 corresponding to the first two program steps are shown staggered therewith, as the second row of blocks 317 and 319.

An example will serve to illustrate how the exemplary computer 53 would add two numbers stored in different registers of the system. Let it be assumed that a number stored in the .DELTA.X register 109 is added to the number stored in XCP register 117. During program step N the XCP number is read from the register 117 over the trunk line 59 into the digital computer 53 over its input branches CIT-2 through CIT-8. During the same program step the computer is instructed by means of a control signal over its CAR control input to clear its Answer Register 53a and its Overhanging Register 53b of any number that might have been stored in it. These events are indicated in FIG. 14 by the blocks 321 and 323. Addition begins during the adder cycle N and is represented in FIG. 14 by the block 325.

During this period the Answer Register 53a is effectively "cleared" by supplying zeroes at the augend input terminals of the computer 53 in place of the numbers in the Answer Register which are normally used as the augend, while supplying the XCP number at the addend input terminals of the computer from the trunk line 59. Since the Answer Register 53a has thus been made to appear empty, the result of the first adder cycle N is that only the XCP number will be stored therein. The above operation for causing the Answer Register to appear empty will be referred to throughout this specification simply as "clearing the Answer Register." Furthermore, since the result of "clearing" the Answer Register is to prevent the number which had been stored in it from being, in effect, re-entered in the same register as the augend of the next addition, clearing the Answer Register, in effect, "removes" the number which had been stored in it, and for this reason throughout the specification the step of clearing the Answer Register 53a, or the larger Accumulator Register 53ab, will be referred to as "removing" a number from those registers.

During the next program step N+1 the sign and four digits of the .DELTA.X number are read onto branches CIT ( - ), and CIT-5, -6, -7, and -8 of the trunk line 59 and through them to the computer 53. This operation is shown to occur during program step N+ 1 and is represented by the block 327.

To complete the addition, the computer 53 is signaled halfway through the program step N+1 to commence its next adder cycle N+1. In its normal, "add mode" operation within the system, the computer receives such a signal during each program step. In response to the signal indicating commencement of the adder cycle N+1, and with the computer operating in the ADD mode, the number signaled on the trunk line 59 is algebraically added by the computer to the previously stored XCP number and the resulting sum is substituted in place of the previously stored XCP number in the Answer Register 53a, as indicated by the block 329. In the actual operation of the system of FIG. 9, after the addition just described has been performed, the sum is substituted for the number previously stored in the XCP register 117. This occurs during the second half of the program step N+2, as indicated by the block 331.

In the foregoing example the seven digits of the XCP number were entered into the computer 53 over its input line branches CIT-2 through CIT-8 and the four digits of the .DELTA.X number were then entered over the input line branches CIT-5 through CIT-8. Entry of the .DELTA.X number into the computer caused it to be added immediately so as to produce the correct sum of the two numbers in the Answer Register 53a. The reason why the addition was performed so directly is that the digits stored in corresponding stages of the registers 117 and 109 from which the numbers XCP and .DELTA.X were taken have the same significance. In the case of the XCP register 117, the significance of the digits residing in its various stages can be readily seen in FIG. 9g by observing that a decimal point has been placed between the second and third highest order digit positions. Thus, the digit stored in the highest order stage of the register 117 in the exemplary system represents tens of inches. The next lower order stage represents units inches and successively lower order stages to the right of the decimal point represent tenths, hundredths, thousandths, 10 thousandths, and 100 thousandths inches. Since the .DELTA.X register 109 has only four digit stages in the exemplary system, its highest order stage represents hundredths of inches, so that the largest possible .DELTA.X number that can be stored therein is 0.09999 or approximately 0.1 inches. This simply means that all macromove numbers are assumed to be less than 0.1 inches when the time period .DELTA.T during which such a macromove is carried out is 20 milliseconds. This is a reasonable assumption since an excursion of 0.1 inches during 20 milliseconds would be the equivalent of 5 inches per second or 300 inches per minute.

Unlike the register 117 the .DELTA.X register 109 does not carry an indication of the decimal point, because its highest order digit stage is one place removed therefrom. Instead, this information, as well as the placement of the decimal point and the digital significance of numbers in all of the other registers, is shown in FIG. 15. The registers of the system are shown in FIG. 15 as stacked upon one another, with each register being represented as a row of squares and identified by appropriate symbols to its left. FIG. 15 readily shows that the decimal points of the numbers XCP and .DELTA.X coincide and that they may be added to one another in the manner explained hereinabove. This is not always the case, however, since FIG. 15 shows that not all of the numbers have their decimal points in the same place. When two numbers with differently placed decimal points are to be added, the first number is usually shifted in the Accumulator Register 53ab to bring its decimal point into alignment with that of the second number and only then is the addition performed.

So long as the computer continues to operate in the ADD mode, every time a number is read from one of the registers 57 onto the computer input trunk line 59 during a program step, that number will be automatically added during the following adder cycle to the sum previously stored in the Answer Register 53a. The addition operation is usually terminated by enabling the WRITE gates of a selected one of the active registers 57 during the particular program step in which the desired sum is available in the Answer Register 53a.

If it is desired that the computer 53 subtract a number signaled on the input trunk line 59 from a number stored in its Answer Register, a control signal is applied to its SX input concurrently with the reading onto the trunk line 59 of the number that is to be subtracted.

The computer is also capable of performing multiplication, this operation being initiated by a control signal on its X control input. This operation may be assumed to involve a series of successive additions of the multiplicand by a number which is equal to the least significant digit of the mantissa of the multiplier (which is Q, represented in characteristic mantissa form, see section G1(b) ), followed by a shift of the partial sum stored in the Answer Register 53a one position to the right, then another series of successive additions of the multiplicand a number of times equal to the second least significant digit of the mantissa of the multiplier, followed by another shift to the right of the partial sum in the Answer Register 53a, and so on until the multiplicand has been repeatedly added a number of times equal to the most significant digit of the mantissa of the multiplier. At this time the sum in the Answer Register 53a is shifted to the left a number of positions which is equal to the characteristic of the multiplier. It can be shown that the product will then be located correctly in the Answer Register 53a.

To store the digits which are shifted toward the right from stage 8 of the Answer Register 53a an "overhanging" register 53b is provided. This register is shown as including four digit stages and forms a continuation of the Answer Register 53a. Indeed, the Answer Register 53a and the overhanging register 53b will be considered as a single 12 stage accumulator register 53ab. However, only the first eight stages of this 12 stage register receive sum data from the computer 53 and only those eight stages feed the sum data to the output trunk line 61. It is evident that the Accumulator Register 53ab has means for shifting its contents both toward the right and toward the left. The shifting operations performed during multiplication are internally initiated by the computer and these are not individually described herein. During certain other operations carried out by the computer, however, it is instructed to shift a number stored in its Accumulator Register 53ab to the right and also to the left and on occasion by four positions during a single adder cycle. These shifting operations are externally initiated by application of control signals during designated program steps to the SAR (shift accumulator right), SAL (shift accumulator left), SR4 (shift right 4), and SL4 (shift left four) control inputs of the computer. The timing of such control signals and shifting operations initiated thereby is shown by block 333 and waveforms 335 and 337 (FIG. 14).

Provision is also made in the computer 53 for selectively clearing either the Answer Register 53a or the Overhanging Register 53b. Such selective clearing operations are performed by the computer in response to control signals on the ZR1 (zero register portion 1) and the ZR2 (zero register portion 2) control inputs.

Another operation performed by the computer 53 is that of comparing two numbers and signaling on a pair of outputs 339 and 341 the relative magnitudes of the compared numbers. In carrying out this operation, the first of the two numbers to be compared is read onto the trunk line 59 during program step N and the second of the two numbers is read onto the trunk line during program step N+1, concurrently with a "classify" control signal (block 343) which is applied to the CX control input of the computer 53. The result of the comparison operation appears on one of the two outputs 339 and 341 in time to be used during the following program step (block 345). If the first of the two numbers is less than the second, a logic 1 signal appears on the output line 341. If the first number is equal to or greater than the second, this condition is indicated by a logic 1 signal on the output line 339.

The last mode of operation performed by the computer 53 is referred to as "force positive." In this mode of operation the computer treats the number which is entered into it as a positive number, regardless of what its sign is. To cause the computer to operate in this mode, a control signal is applied to the FP control input of the computer concurrently with the reading of the second number onto the trunk line 59.

E. PATH TYPE INDICATOR FOR THE CURRENT PATH SEGMENT

In describing the buffer registers 47 in FIG. 9k reference was made to the G register 47G and to the G decoder 221. It was stated that the decoder 221 is operative to produce at its outputs a signal indicative of the type of path represented by the signals stored in the other buffer registers 47. This information is useful in the present system because it can be used to control the type of operations to be performed on the date stored in the other buffer registers, in accordance with the shape of the path segment represented by them. Such a path indicative signal is also useful during the continuous processing of data in the active registers 57 which occurs while the path is being executed, that is, while the controlled machine element is being moved along that path. It is for this reason that the G number residing in the buffer register 47G is transferred along with the numbers in the other buffer registers 47 to the active registers 57 and in particular to the path mode, or G, register 105.

The G register 105 appears immediately to the right of the computer 53 in FIG. 9f, and is comprised of two R-S flip-flops, each for storing a binary signal. When the G number is transmitted from the G BUF register 47G to the computer 53, it is carried to the computer on the CIT-8 branch of the trunk line 59 and, in particular, on the one and two bit lines of that branch. When the number is subsequently sent from the computer to the G register 105, it is carried on the one and two bit lines of the COT-8 branch of the output trunk line 61 to the WRITE gates associated with the flip-flops of the register 105. In this manner, the digitally signaled G number, whether it be 1, 2, or 3, is transferred from the G BUF register 47G to the G active register 105. To convert the binary coded representation of the G number in the active register 105 into a single line representation, a decoder 106, which is similar to the G BUF decoder 221 is provided. The decoder 106 is shown in detail in FIG. 9f and includes an array of three AND gates 106a, 106b, and 106c, connected to one another and through a trunk line 108 to the outputs of the G register 105 so that a logic 1 voltage level appears at the output of respective ones of the AND gates 106a, 106c and 106b, in response to a logic 1, 2, and 3 stored in the register. The decoder also includes an OR gate 106d connected to the outputs of the AND gates 106b and 106c so that a logic 1 signal appears at its output when either of the AND gates 106b and 106c is enabled. Since G numbers of 1, 2, and 3 signify paths which are linear, clockwise circular, and counterclockwise circular respectively, logic 1 signals on the outputs of the AND gates 106a, 106c, and 106b are respectively designated as LIN, CW, and CCW. Finally, a logic 1 signal at the output of the OR gate 106d is designated CIRC, meaning that a logic 1 signal at the output of the OR gate 106d is used to initiate operations which are to be performed whenever a circular path is to be generated, be it clockwise or counterclockwise.

F. THE PROGRAM GATE ARRAY (PGA)

The type of operation to be performed by the computer 53 and the particular program step during which this is to occur depends on several factors. Among these is the type of path to be generated and the stage to which the generation of that path has progressed. Both of these factors are detected by means of a large number of program gates, each of which is connected to respond to the particular condition that is to initiate a particular computer operation. In most cases, a given type of computer operation will be required to be performed in response to a unique combination of several different conditions, each combination being detected by an individual program gate. All of the program gates associated with a given computer operation, such as shifting four places, are collected in a group, and are referred to as a Program Gate Array, or PGA for short. All of the PGA's associated with the computer 53 are shown in FIG. 9c and one of these, the PGA 347 for initiating the shift left four (SL4) operation, is also shown in detail in FIG. 16. For reasons which will become apparent during the description to follow, the computer will be instructed to shift the contents of its Accumulator Register 53ab four positions to the left during program steps 1465 and 1470 when generating a circular path, program steps 1865 and 1870 when generating a linear path, and during program steps 1965, 1970, 4870, and 4970 for both a linear path and a circular path. In response to each of the foregoing eight conditions, therefore, a control signal is produced at the output of the Program Gate Array 347. Each of the eight control signals produced under the eight different conditions is derived by means of a different one of eight program gates 347a, b, c, d, e, f, g, and h. Taking the first program gate 347a as an example, it is an AND gate having four inputs, the first three being connected to the 1400 output of the Multimode Time Base Logic 67 and to the 70 and 0 outputs of the Time Base and Digital Sweep 63. The fourth input of the program gate 347a is connected to the CIRC output of the G decoder 106 so that, when the path being generated is circular, regardless of whether it is clockwise or counterclockwise, a pulse is produced during program step 1470 at the output of the program gate.

The second program gate 347b is similarly connected to produce a program pulse at its output during program step 1870 when a LIN signal is produced by the G decoder 106. The remaining six program gates 347c- h are connected in a similar manner to appropriate outputs of the Multimode Time Base Logic 67, the Time Base and Digital Sweep 63 and the Path Type indicator 106 to produce at their respective outputs program pulses during program steps 1970, 4870, 4970, 1465.sup.. CIRC, 1865.sup.. LIN, and 1965. By means of an OR gate 347i the outputs of all of the five program gates 347a-h are collected and made to appear at the output of the OR gate. This single output constitutes the output of the entire Program Gate Array 347.

Program gate arrays are also used to time the reading of numbers into the computer trunk line 59 from, and the writing of numbers from the computer output trunk line 61 into the active registers 57. Each register is seen to have next to it two such PGA's, one connected to the WRITE gates and the other to the READ gates of the register. The different conditions under which a signal is produced by a particular PGA are listed therein in the same manner as done for the PGA's shown in FIG. 9c.

2. OPERATION OF THE SYSTEM IN GENERATING A LINEAR PATH

a. Steps Performed Prior to the Execution of the First Macromove Along a Linear Path to Generate .DELTA.X and .DELTA.Y Numbers

In describing the process of linear path generation, and subsequently the process of circular path generation, reference will be made to the hypothetical path 27 shown in FIG. 2. Thus, the description will proceed on the assumption that the path 27 is being generated, and will begin with a point on the path just short of the end of the path segment 27a. The description will then follow the generation of the linear path segment 27b and subsequently the generation of the circular path segment 27c. Interlaced with the description of the linear and circular path generating process will be a description of the means provided for carrying out the processes, that is, the system of FIG. 9. By the nature of the processes to be described, each of them involves a very large number of steps, some of which are related to optional features which are not essential to the basic processes themselves. The steps performed by the apparatus in carrying out linear and circular path generation will be described, with a few exceptions, in chronological order, that is, in the order in which they occur in time. This will permit an orderly presentation of the operation of the exemplary system. However, in many cases, steps which are directed to carrying out a particular feature do not follow one another, and the relationship between these steps will not be apparent. Therefore, periodically as the description proceeds, the various features and sub-processes which have been carried out will be summarized.

Beginning with steps associated with generating the linear path segment 27b in FIG. 2, let it be assumed that the system is in the process of completing the previous path segment 27a, and that it is presently executing the last macromove associated with that path segment. Some of the events taking place during the time period are shown in FIG. 17 which is a flow chart of operations performed by the system of FIG. 9 during a complete iteration or system cycle when the system is operating in mode 4. The flow chart is, in effect, a programming chart such as those shown in FIGS. 10a and 10c. It has 10 columns numbered 4000 through 4900 and each column is understood to have a hundred 20 microsecond time periods, during each of which a different operation may be performed. However, rather than attempt to show each single step performed during the iteration represented by the flow chart in FIG. 17, these steps are identified only by the operation toward which they are directed.

Reviewing the programming chart concept briefly, it will be recalled that each iteration or machine cycle represented by a programming chart such as that shown in generalized form in FIG. 10a, takes 20 milliseconds, this being the cycling time of the Program Step Generator 161. It will be understood of course, that this iteration time is entirely optional and has been chosen only for sake of a specific example.

The steps and operations carried out during the first six columns of the FIG. 17 chart relate entirely to the execution of the previous path segment 27a. They will become of interest when the termination of a linear path is considered and will be discussed at that time. The operations related to the generation of the next straight line path segment 27b begins during the seventh column, numbered 4600, of the chart.

1. TRANSFERRING OF DATA REPRESENTING NEXT PATH SEGMENT FROM BUFFER REGISTERS TO ACTIVE REGISTERS

The initial operations carried out during the 4600 column are directed to transferring the numbers associated with the next block segment 27b from the buffer registers 47, where they had been stored up to this time, to the active registers 57. First, the I and then the J number is transferred and then the XEP and the YEP numbers are transferred from the buffer registers 47X and 47Y to their designated active registers 57. Next, the Q number is transferred from the buffer register 47Q to the Q active register 103 and, finally, the G number is transferred from the buffer register 47G to its designated active register.

The foregoing series of operations, whereby numbers are transferred "from buffer to active," are shown in detail, step by step, in Table I. ##SPC2##

This table includes two columns, the first labeled 4600.sup.. LIN and related to finishing a linear path segment or block of data, and the other labeled 4600.sup.. CIRC, related to finishing a circular data block. They are shown side by side to permit comparison of the steps performed during corresponding time periods in carrying out linear and circular path generation. The first 14 steps during each column of the FIG. 17 programming chart are devoted to utilizing the results of data generated by the system and are separately shown in another table. The transferring of data from buffer to active begins on step 18 (time period 18) of column 4600. By means of a program gate 349 a READ gating signal is applied to the I BUF register 47I during program step 4618, causing the I number stored therein to be placed upon branches CIT-2 through CIT-7 of the computer input trunk line 59, from which it is entered in the computer 53 during the adder cycle associated with the program step 4618.

During the following program step 4619 a WRITE gating signal is applied to the I register 99 by its WRITE PGA 355 (FIG. 9j) causing the I number appearing during this program step in the Answer Register 53a of the computer to be entered into the I register over trunk line branches COT-2 through COT-8. Since the I BUF number stored in the Answer Register 53a had only six digits the least significant of which was stored in digit stage 7 of the register, a zero is stored in the least significant digit stage of the I register 99. The reason for this additional digit will become apparent later in this description.

Having transferred the I number from buffer to active through the computer 53, its Answer Register 53a is cleared in the next step 20 by application of a control signal to its CAR input. This clearing operation is performed many times during the operation of the system and to produce the control signals required to initiate the clearing operation a program gate array 351 (FIG. 9c), comprising many individual program gates is provided. A series of conditions under which the program gate array 351 is to produce a CAR signal is listed in the block representing the array. The particular program step 4620 is 14th on the list.

To transfer the J number from buffer to active, a READ pulse is applied to the J BUF register 47J by a program gate 353 during program step 4623. In response to this READ signal the J number is read into the trunk line 59 during program step 4623 and appears in the Answer Register 53a during the following program step. The J number is stored during the program step 4624 by a WRITE signal applied to the J register 101 by its associated WRITE PGA 357.

Having transmitted the J number from the Answer Register 53a to the J register 101, the Answer Register is cleared on program step 4626 by means of a CAR signal from the program gate array 351 (condition 15). Also during program step 4626 the XEP number is read from the XEP BUF register 47X by application of a gating pulse derived by means of a program gate 359. As a result, the programmed X axis end point is transmitted to the Answer Register 53a over trunk line branches CIT-3 through CIT-8, causing the number to be stored in stages 3 through 8 of the register. Before this number is stored in the active registers 57, however, it is modified to translate it from the programmer's coordinate system into the machine's coordinate system. This is an entirely optional step and may be omitted if so desired. Indeed, in certain applications it is desirable not to translate the data from the programmer's coordinates (also known as "part coordinates") in order to permit display of the data in the form which is familiar to the programmer and to the operator of the machine with which the system is used. However, in the exemplary system the data is transformed and the nature of the changes made in making the transformation will be understood by referring to FIG. 2.

As seen in FIG. 2, the zero point of the machine's single quadrant coordinate system is offset by 50 inches along both the X and the Y axes with reference to the center of the programmer's four quadrant coordinate system. The direction of the fixed X and Y axis offsets is such that the position of any point defined with reference to the programmer's coordinate system may be translated into the machine's coordinates of that point.

Another optional feature for which allowance is made in the detailed program shown in Table I is the machinist's "dialed in offset" correction. By means of this optional feature the machinist operating the machine tool can enter an additional offset on either or both of the X and Y axes to compensate for dimensional inaccuracies of the cutting tool used. To implement the 50 inch fixed offset correction along both the X and Y axes, a pair of READ gates 361 and 363, shown in FIG. 9f, are provided, their respective outputs connected to the one and four bit lines of trunk line branch CIT-3. Each of the READ gates 361 and 363 has two inputs, the first of both being connected to a source of logic 1 voltage. The other inputs of the READ gates are parallel connected to a 2 program gate array so as to be simultaneously enabled thereby. Consequently, when the READ gates 361 and 363 are enabled they pass a logic 1 voltage level over the 1 and 4 bit lines of the trunk line branch CIT-3 to the one and four bit flip-flops of stage 3 of the Computer 53, thereby entering digitally the number 5 therein. By defining the decimal point between stages 4 and 5 of the Answer Register for this offset number, it is made to represent 50.0000 inches, as seen in FIG. 15.

The machinist's X and Y offset numbers are produced by a pair of registers 365 and 367, respectively labeled in FIG. 9f as X OFF register and the Y OFF register. Each of the registers 365 and 367 has six digit stages and a sign stage. Each digit stage may be set by appropriate means digitally to signal any number from 0 to 9 and similarly the sign stage may also be caused to signal either + or -. Because the X OFF and Y OFF registers 365 and 367 are independently settable and do not receive their data from the buffer registers 47, they do not have WRITE gates as do the other active registers. They are provided, however, with READ gates which may be identical to those shown in FIG. 13 with reference to the X.DELTA. register 109. The READ gates of the registers 365 and 367 are connected to apply the signals stored in the digit stages of the registers to trunk line branches CIT-3 through CIT-8 and through them to cause the numbers to be entered in stages 3 through 8 of the Computer 53.

With the X axis end point number which had been read from the buffer register 47X still in the Answer Register 53a, a READ gating signal is applied to the READ gates 361 and 363 during program step 4627 in order to cause them to apply a digitally signalled number 5 to the computer as previously described. This pulse is produced by a program gate 369 whose output is applied through an OR gate 371 to the inputs of the READ gates 361 and 363. As a result, a 50.000 inch offset is added during the adder cycle associated with program step 4627 to the X coordinate in the Answer Register 53a. The machinist's offset is added to or subtracted from, the sum in the Answer Register 53a during the following program step 4628 in response to a READ signal applied to the X OFF register 365 from a program gate 373. The final result, representing the X coordinate fully translated into machine coordinates, appears in the Answer Register 53a during program step 4629 and during this program step is transmitted over the output trunk line 61 to the XCEP register 95 in response to a WRITE command signal from a Program Gate Array 375 associated with the XCEP register 95. This completes the transfer and translation into machine coordinates of the X axis end point number from the buffer register 47X to the active register 95.

The manner in which the Y axis block end point is transferred during the next four program steps from the buffer register 47Y to the active register 97 is exactly the same as the foregoing, except that the steps occur at different times and are initiated by different program gates, and that different registers are involved. Thus, first the Answer Register 53a is "cleared" during program step 4630 by a CAR pulse from the Program Gate Array 351 (condition 16). During the same program step the YEP BUF number is read from buffer register 47Y in response to a READ gating signal from a program gate 377. During the following program step 4631 a 50.000 inch offset is read into the computer through the READ gates 361 and 363 in response to a READ gating signal produced by a program gate 379, and fed through the OR gate 371 to the READ gates. During the next program step 4632 the machinist's Y offset is read from the Y OFF register 367 in response to a READ gating signal from a program gate 381 shown immediately to the left of the register. The result, representing the YEP BUF number translated into machine coordinates, is read from the Answer Register 53a into the YCEP register 97 by a WRITE gating signal applied thereto from a Program Gate Array 383 associated with that register.

Transfer of the Q number from the buffer register 47Q to the corresponding active register 103 is carried out during program steps 4635 and 4636. The Q number is read from the register 47Q during program step 4635 by a READ gating signal applied to the register from a program gate 385 and during the same program step the Answer Register 53a of the computer 53 is cleared by a CAR signal from the PGA 351 (condition 17). Stored in stages 4 through 8 of the Answer Register 53a during the following program step 4636, the Q number is written into the Q active register 103 from the Answer Register 53a by a WRITE gating signal from a program gate 387.

This completes the first sequence preparatory to generating the linear path segment 27b during which the I and J numbers and the X and Y coordinate numbers were transferred from buffer to active. No further operations are performed during the 4600 column. It will be noted that the G number has been left in the G BUF register 47G. The reason for this is that the G number associated with the path segment 27a which is currently being generated is still stored in register 105, and cannot as yet be discarded.

2. CONVERTING THE DATA TRANSFERRED TO THE ACTIVE REGISTERS INTO MACROMOVE AND MICROMOVE NUMBERS

In carrying out the invention, the digital signals representing the X component I of the composite distance to be covered in executing the path segment 27b are processed to derive a set of signals digitally representing a .DELTA.X macromove number which is equal to I.sup.. .DELTA.T.sup.. V/D (Equation 20). Additionally, the digital signals representing the Y component J of the composite distance D are processed to derive therefrom a Y axis macromove number .DELTA.Y, which in turn is equal to J.sup.. .DELTA.T.sup.. V/D (Equation 21). These equations will be recognized as being equivalent to those shown as equations (6) and (7) in FIG. 5b. In accordance with a more specific feature of the invention, several of the numbers comprising the equations (6) and (7) are precomputed and collectively represented as the number Q. The numbers which are so computed and their relation to the number Q is shown in equation (8) in FIG. 5b. Thus, the two computations referred to above as equations (20) and (21) are shortened to the form represented by the equation (9) and (10) of FIG. 5b. Reproduced here for convenient reference they are: .DELTA.X = I.sup.. Q (9); .DELTA.Y = J.sup.. Q (10).

In the exemplary embodiment of FIG. 9 the number Q is precomputed externally of the system and is supplied thereto as part of the data block representing a path segment. It will be understood, however, that this precomputation could also be performed internally. Thus, instead of the number Q the block of data representing a given path segment might include the number V. .DELTA. T is a known constant. In such a case, the system would use a digital computer capable of squaring, square rooting, and dividing as well as adding and multiplying and the operations called for by the equations (6) and (7) would be carried out internally by the computer.

It should also be noted that the X and Y components I and J of the path segment D need not be given on the tape if the X and Y coordinates of the desired end point are supplied. Instead, the I and J numbers could be derived by the system simply by subtracting from the X and Y end point coordinate numbers the corresponding numbers of the previous data block. The disclosed system merely represents the simplest of several possible alternatives.

A. MULTIPLYING J.times.Q AND SPLITTING OFF THE REMAINDER

Referring now to FIG. 17, the basic computations represented by equations (9) and (10) are carried out during corresponding time periods of the adjacent programming sheet columns 4900 and 4800. The first quantity to be computed is J.times.Q and the quantity I.times.Q is computed subsequently. The steps involved in carrying out these computations are shown in greater detail in Table II. ##SPC3##

The first pair of columns in the table pertain to computations performed in preparation to entering a linear block and are of immediate interest. The third and fourth columns of the table pertain to computations in preparation for performing circular interpolation and will be discussed in a subsequent section. As in the case of Table I, the corresponding steps pertaining to linear and circular path generation are shown side by side to facilitate comparison.

The operations performed during the first 15 time periods represented by the Table II are not shown for the same reason mentioned in connection with Table I. These time periods are assigned to certain repetitive operations which relate to the execution of the previous linear path segment 27a and will be discussed with reference to a separate table directed to those operations.

The steps listed in the first column of Table II correspond to those indicated generally in the 4800 column of the FIG. 17 iteration. Therefore, each of the steps or operations performed during that first column in Table II is initiated by a signal on the 4800 output of the Multimode Time Base Logic 67 and also by a signal on the G01 output of the G BUF decoder 221, if the step is to be performed only when the next path segment is linear.

To begin the computation of J.times.Q the multiplier Q is read during step 4817.sup.. G01 from the Q active register 103 in response to a READ gating pulse from the Program Gate Array 389 (FIG. 9j) associated with the register. This step is also performed during program steps 4817.sup.. G02 and 4817.sup.. G03, and hence the PGA is conditioned to produce a gating signal simply in response to the signals representing program step 4817 (condition 3). The Q number thus read is stored in the auxiliary storage devices (not shown) provided for that purpose in the computer 53. For sake of example, it may be assumed that such a storage device is identical in structure to the Q active register 103.

Next, during program step 4818.sup.. G01, the number J is read from the J active register 101 in response to a program gating pulse from its associated PGA 391 (condition 9). The J number thus read is also stored in a storing device (not shown) in the computer 53 which may be identical to the J active register 101.

Concurrently with the reading of the J number from register 101 a multiply instruct signal is applied to the X (multiply) control input of the computer 53 by PGA 393 (FIG. 9c) in response to the fourth of its seven listed responsive conditions. The multiplication of J.times.Q is carried out in the exemplary computer during steps 19 through 64. This allows for 10 program steps for each of the four mantissa digits of the Q number read from the active register 103 and additional steps for shifting the product in accordance with the characteristic of the Q number. The product appears in the Answer Register 53a during step 4864.sup.. G01, correctly positioned relative to the decimal point of the multiplicand I, which is between digit positions 3 and 4 in the register (See I in FIG. 15).

For practical values of path segment length and desired velocity along that path segment it may be assumed that the product stored in the Accumulator Register 53ab will have a zero in position 4 and that the first non-xero digit of the product will be in stage 5 or in an even lower digit stage of the register. In all, the non-zero digits of the product will be stored in some or all of stages 5 through 12 of the register, the last four of these being part of the Overhanging Register 53b and the digits stored in them having a digital significance of millionths, 0.1 millionths, 0.01 millionths, and 0.001 millionths (or billionths) inches. Because of their extremely small size these digits are not sufficiently significant to be utilized by the servo drives 75 and 77. Thus, it would be desirable to discard them and to use only the four digits of the product J.sup.. Q that are stored in stages 5, 6, 7, and 8 of the Answer Register 53a. This would simplify the handling of the product J.sup.. Q. However, if the four least significant digits which are stored in stages 9 through 12 were simply discarded, an undesirable error would eventually accumulate. To achieve simplification without affecting accuracy, in accordance with another feature of the present invention there is provided a method, and apparatus for performing that method, for storing the first group of digits of J.sup.. Q, those in the Answer Register 53a, in a first register and for storing a second group of digits, those in the Overhanging Register 53b, in a second register. In carrying out this aspect of the invention, only those digits stored in the first register are processed to develop macro-positions along the X axis, thereby reducing the storage capacity required for the computations involved in producing them.

The computation of J.sup.. Q is performed at regularly recurring instants, and as a part of each such computation the last four digits of the previous product J.sup.. Q, which had been formed in the second register as part of the previous computation of J.sup.. Q, are added to the result. The last four digits of the sum are then split off again and separately stored. In this manner each time the computation J.sup.. Q is performed, it is performed to an accuracy of 1-billionths of an inch. Even though the last four digits of the product are not used at this time, they are carried along as an unused part of the product, to be included in the next computation so as to insure that no significant accumulation of error occurs in the overall results.

Turning again to Table II, the first step in the operation of "splitting off the remainder" occurs in the step 4868 .sup.. G.sub.01 when the WRITE gates of the .DELTA.Y register 107 are opened by a gating signal from the Program Gate Array 395 (condition 4) provided for that register. As a result, the sign and digits of the product J.sup.. Q stored in stages .+-., 5, 6, 7, and 8 of Answer Register 53a are transferred into the .DELTA.Y register 107 and are stored therein.

During the following program step 4869 .sup.. G.sub.01 a control signal is applied to the ZR1 control input of the computer 53 from a Program Gate Array 397 (FIG. 9c) (condition 4). In response to this control signal, section R1 of the Accumulator Register 53ab is cleared so that stages 1 through 8 of the register all contain zeros. It now remains to transfer the contents of stages 9 through 12 of the Accumulator Register 53ab representing the "remainder" digits of J.sup.. Q, into the YR (for "Y Remainder") register 111. Toward this end, during the following program step 4870.sup.. G.sub.01 the numbers stored in the Overhanging Register 53b are shifted four positions to the left by applying a control signal to the SL4 input of the computer 53. This signal is produced by the Program Gate Array 347 (condition 7) and in the manner explained with reference to FIG. 14 causes the contents of the register 53ab to be shifted 4 positions to the left during the same program step. By so doing the numbers previously stored in the Overhanging Register 53ab which does not have means for reading out its contents to the computer output trunk line 61 have been transferred to stages 5 through 8 of the Answer Register 53a which does have the appropriate connections, the trunk line branches COT-5 through COT-8. Through these branches, the sign and the four least significant digits of the product J.sup.. Q, now in stages .+-. and 5 through 8, are transferred to the YR register 111 by a gating pulse applied to the WRITE gates of that register from a PGA 399 (condition 3) provided to control the entry of data into that register.

The computation of I.sup.. Q follows the same steps during Column 4900 .sup.. G.sub.01 as those performed in calculating the product J.sup.. Q except that, instead of the number J it is the number I which is fed to the computer and instead of the registers .DELTA.Y and YR 107 and 111, it is the .DELTA.X and XR registers 109 and 113 in which the product is stored. Briefly, during step 4918 .sup.. G.sub.01 the number I is read from the I register 99 (PGA 400 condition 8) and is transferred over the trunk line 59 to a storage device within the computer 53 (not shown). The Q number, serving as the multiplier, is again read into its storage device within the computer 53 during program step 4917 .sup.. G.sub.01.

Also during step 4918 .sup.. G.sub.01 a multiply command signal is applied to the computer from the PGA 393 (condition 3) in response to which the computer carries out the I.sup.. Q multiplication during program steps 4919.sup.0 G.sub.01 - 4964 .sup.. G.sub.01. The sign and the first four digits of the product, stored in stages .+-., 5, 6, 7, and 8 of the Answer Register 53, are transmitted during program step 4968.sup.. G.sub.01 to the .DELTA.X register 109 and are entered therein by a WRITE gating signal from a PGA 401 (condition 2) associated with that register. The first four digits are then eliminated from the Answer Register 53a during program step 4969.sup.. G.sub.01 by a control signal from the "ZR1 + ZR2" PGA 397 (condition 5). The last four digits of the product are then transferred into stages 5, 6, 7 and 8 of the Answer Register 53a from stages 9 through 12 of the Overhanging Register 53b by a "Shift Left 4" operation carried out during step 4970.sup.. G.sub.01 in response to a control signal produced by the PGA 347 (condition 8). During the next program step 4971.sup.. G.sub.01 the sign and the last four digits of the product are transferred from stages 5 through 8 of the Answer Register 53a to the XR register 113 and are read into that register in response to a gating signal from its associated PGA 403 (condition 2).

As a result of the foregoing two series of computations, the products J.sup.. Q and I.sup.. Q have now been stored in their designated active storage registers. It is now appropriate to transfer the G number from the G BUF buffer register 476 to the G active register 105.

This may be done now because the execution of the path segment 27a is complete, so that the G number presently in the G active register is no longer needed.

To transfer the G number from buffer to active, the Answer Register 53a is cleared during step 4973.sup.. G.sub.01 by a control signal from CAR PGA 351 (condition 18) and during the same step the number stored in the G BUF register 47G is read therefrom by a gating signal from a program gate 405. The G number is transferred over trunk line 59 to the computer 53 and appears in its Answer Register 53a during the following program step 4974.sup.. G.sub.01 at which time it is entered into the G active register 105 in response to a gating signal applied thereto by a program gate 407. This completes the transfer from buffer to active of all of the basic data required to generate the following linear path segment 27b. Accordingly, during program step 4995.sup.. G.sub.01 a control signal is applied by the program gate 269 to the tape reader control flip-flop 257 (FIG. 91). The data representing the next path segment 27c is then read from the tape 37 and is stored in the buffer registers 47.

b. Going into Mode 1 Operation

Having transferred all the necessary information into the active registers 57 and having started the transfer of data from the tape to the buffer registers for the following path segment, it is now time to change the mode of operation of the system from that associated with the transfer and basic computation of data to that associated with the interpolation of the transferred and basically computed data for the generation of a linear path. Accordingly, means are provided in the form of one of the array of program gates 183 to advance the end of block counter from its 14th count state through its 15th and 16th count states into its first count state wherein its decoded output appearing on output S1 of the binary to single line decoder 187 enables the M1 input of the Time Base Mode Selector 69. This, it will be recalled, places the system in its mode 1 operation.

In order to step the End of Block Counter from its 14th to its first count state the Program Gate Array 183 includes three program gates for successively applying a stepping pulse to the End of Block Counter 186 in response to conditions 4997, 4998, and 4999 (conditions 19, 20, and 21). As a result, at the end of program step 4999.sup.. G01 the system is placed in its mode 1 operation. In this mode, a thousand successive program steps, from 1000 to 1999 and corresponding to a programming chart such as that shown in FIG. 10c, are recurringly signaled at the outputs of the AND gates 175 of the Multimode Time Base Logic 67 in conjunction with the tens and units converters 169 and 167 of the Time Base and Digital Sweep 63 in FIG. 9b.

b. Upgrading and Updating With Macromove and Micromove Numbers to Produce Macropositions and Micropositions

It will be helpful to summarize the operations which have been performed up to this point and also the operations which are to be performed next in the generation of the linear path segment 27b. In preparation for generating the path segment 27b and while the system was executing the previous path segment 27a the macromove numbers .DELTA.X and .DELTA.Y of a given computation were computed on the basis of information transferred from the buffer registers 47 plus the XR and YR unused remainders from the previous computation. Only the first four digits of the .DELTA.X and .DELTA.Y macromove numbers will be used, those stored in the .DELTA.X and .DELTA.Y registers 109 and 107, and the new remainders XR and YR carried over. These macromove numbers represent the movements which are to be executed along the X and Y axes during the next time period or iteration .DELTA.T which, for the illustrated system, is 20 milliseconds long. (The phrase "time period .DELTA.T, or iteration" denotes a designated segment in time, which in the exemplary embodiment is 20 milliseconds long, as determined by the cycling period of the Program Step generator 161, and which repeats). What remains to be done and what is performed by the system in Mode 1 operation is to measure off successive periods .DELTA.T in actual time and to utilize the .DELTA.X and .DELTA.Y numbers stored in the registers 109 and 107 to generate for each successive time period .DELTA.T corresponding X and Y axis macropositions which are to be reached at the end of the time period.

The means for measuring off successive periods .DELTA.T in actual time has already been described. It is the program step generator 161 cycling at a repetition rate of once every 20 milliseconds. The macroposition numbers for the X and Y axes are also referred to as the X command position (XCP) and Y command position (YCP). Means are provided in the form of the XCP register 117 and the YCP register 115 to store signals initially representing the X and Y coordinates of the starting point P1 of the linear path segment 27b and means for supplying these particular coordinates to the registers 115 and 117 are also provided. In generating macropositions, the signals stored in the XCP and YCP registers 117 and 115 are "upgraded" during each time period .DELTA.T so as to cause them to represent a new macroposition for each of the X and Y axes. To do this, means are provided to cause the computer 53 to utilize the .DELTA.X and .DELTA.Y numbers stored in the registers 109 and 107 to perform the upgrading of the numbers stored in the XCP and YCP registers 117 and 115. In accordance with a more specific aspect of the invention, there is also provided a method, and means therefor, for generating signals which represent intermediate micropositions for each of the X and Y axes representing points which are to be reached at instants distributed in time along a given time period .DELTA.T. In carrying out this aspect of the invention, successive periods .DELTA.T/N in actual time are measured off, N such time periods spanning each of the time periods .DELTA.T. Furthermore, there are derived from the signals stored in the .DELTA.X and .DELTA.Y registers 109 and 107 microposition signals which are changed at the end of each time period .DELTA.T/N by incremental amounts of .DELTA.X/N and .DELTA.Y/N.

For the above purpose there are provided a pair of storage means, the XSC and YSC registers 121 and 119, and means are also provided for initially storing in the registers 121 and 119 XSC (X servo command) and YSC (Y servo command) signals representing the coordinates of the starting point P1 of the linear path segment 27b. Moreover, means are provided for causing the digital computer 53 during each successive period .DELTA.T/N to process the signals stored in the .DELTA.X register 109 to derive therefrom the quantity .DELTA.X/N and thereafter to operate upon the signals stored in the XSC register 121 so as to change the XSC coordinate value represented thereby by the quantity .DELTA.X/N. Similarly, means are provided for causing the computer 53 during each period .DELTA.T/N to process the signals stored in the .DELTA.Y register 107 so as to derive from them the quantity .DELTA.Y/N and thereafter to operate upon the signals stored in the YSC register 119 so as to change the YSC coordinate value which they represent by the quantity of the .DELTA.Y/N.

FIG. 18 is a general programming chart of the operations performed by the system during each iteration in mode 1. Among these are the generation of macropositions and micropositions. A new pair of micropositions is generated during the initial ten steps of each 100 step column of the programming chart. A new pair of macropositions is produced only once during an iteration, and this occurs during steps 10-14 of the first column of the programming chart. These steps are shown in detail in Table III and it will be noted that the steps there shown are common to all modes of operation of the system. ##SPC4##

The 10 columns of the programming chart shown in Table III are identified as X000, X100, X900, indicating that the first digit of the program step number, denoting the operating mode of the system, is immaterial, and that this chart applies to all operating modes. Consequently, all of the program gates provided to initiate the operations shown in Table III are connected to receive their highest order input from the hundreds converter 171 of the Time Base and Digital Sweep 63 in FIG. 9b.

Turning now to a detailed consideration of producing micropositions, the first step is to clear the Answer Register 53a. This is timed to occur during program step X000 (Table III) by a CAR signal from PGA 351 (condition 1). During the same step a READ gating signal is applied to the .DELTA.X register 109 by an associated program gate array 409 (condition 1), causing the .DELTA.X number to be stored in the Answer Register 53a. The next step in the process, performed during step 001, is to derive from the macromove number .DELTA.X a micromove number .DELTA.X/N. In the present example, N=10 in conformance with the number of smaller time periods into which the time period .DELTA.T had been divided. Had .DELTA.T been divided by 20, i.e., if the programming chart had 20 columns, then a micromove for such a time period would be 1/20th of a macromove number.

To divide the macromove number .DELTA.X by 10, it is simply shifted one position to the right during program step 001 in response to a Shift Right control signal applied to the SAR control input of the computer 53 by a Program Gate Array 411 (condition 1) provided for that purpose and shown in FIG. 9c. As a result of the shifting to the right of the .DELTA.X number, the Answer Register 53a will contain during the following program step 002, the X axis micromove number .DELTA.X/10 representing the movement to be executed along the X axis substantially during the first 1/10 of the time period .DELTA.T.

To produce the first X microposition number for the time period .DELTA.T, the X micromove number stored in the Answer Register 53a is added to the X microposition number presently stored in the XSC register 121. This presently stored microposition number is the X coordinate of the starting point of the linear path segment 27b and was stored therein at the end of the generation of the previous path segment 27a. To add the micromove .DELTA.X/10 to the last X microposition number XSC, the latter is transferred to the computer 53 from the XSC register 121 during program step 002, by application of a READ gating signal to the XSC register 121 from a Program Gate Array 412 associated with that register (condition 1). As explained previously in section G1 (d), the reading into the computer of a number without a special control signal to one of the 10 control inputs to the computer causes the number to be added algebraically to the number stored in the Answer Register 53a. Consequently, at the end of the adder cycle associated with program step 002, there is stored in the Answer Register 53a the sum of the previous X microposition number read from the XSC register 121 and the current micromove number .DELTA.X/10. The sum, representing the first X microposition for the time period .DELTA.T under discussion is transferred from the Answer Register 53a to the XSC register 121 during program step 005 by the application of a WRITE gating signal to the register from a program gate 413 shown to the right of the register in FIG. 9g.

The foregoing four steps, performed during program steps 000, 001, 002, and 005, represent the updating of the microposition number stored in the XSC register 121. A similar updating sequence is next performed for the Y axis microposition stored in the YSC register 119. The process begins during program step 005 with the clearing of the Answer Register 53a to prevent the X axis microposition number XSC from reaching the augend input of the computer. For this purpose the PGA 351 is operative to apply a CAR signal to the corresponding control input of the computer 53 during program step 005. This is indicated as condition 2 in the program gate array 351, shown as 05. The reason why the condition is not shown as 005 is that, for reasons which will be shown hereinafter, a CAR signal is also produced during program steps 105, 205...905 and therefore these 10 conditions are adequately defined by the program step number 05. Other such multiple steps are produced by 00, etc.

Also during program step 005, the Y axis macromove number .DELTA.Y is transferred from the .DELTA.Y register 107 to the Answer Register 53a by applying a READ gating signal to the register from a Program Gate Array 415 (condition 1). During the next program step 006 the macromove number stored in the register 53a is shifted to the right by one position, thereby dividing it by 10 and producing therein the Y axis micromove number .DELTA.Y/10. The shifting to the right by one position is initiated by a control signal applied to the SAR input of the computer 53 by the Program Gate Array 411 (condition 2).

The Y micromove number .DELTA.Y/10 stored in the Answer Register 53a is added to the previous Y microposition number YSC by transferring that number from the YSC register 119 to the computer 53, the latter operating in the ADD mode. This is done during program step 007, and is initiated by a READ gating signal applied to the YSC register 119 by a program gate array 417 (condition 1). The sum, representing the next Y microposition number YSC, is transferred from the Answer Register 53a over the trunk line 61 to the YSC register 119 during program step 010 by means of a WRITE gating signal applied to the register 119 by a program gate 419.

Summarizing the foregoing sequence of operations carried out during steps 000-010, the XSC and YSC registers 121 and 119 have both been updated so as to store in them the first of the 10 microposition numbers for the time period .DELTA.T.

The first step in upgrading the XCP and YCP registers for producing new macroposition numbers is that of clearing the Answer Register 53a and is carried out during program step 010. During this program step a CAR signal is applied to the appropriate control input of the computer 53 by the CAR PGA 351 (condition 3). Next, during the same program step, the X macroposition number presently stored in the XCP register 117 is read therefrom by applying to the register a READ gating signal from its associated Program Gate Array 421 (condition 1) and is stored in the Answer Register 53a. During program step 001, the X macromove number .DELTA.X is read into the computer 53 from the .DELTA.X register 109 by a READ gating signal supplied to the register from its associated Program Gate Array 409 (condition 10) and is automatically added to the stored macroposition number XCP. The sum, representing the upgraded X macroposition number XCP appears in the Answer Register 53a during the following program step 012 and is written into the XCP register 117 during the same program step by a WRITE gating signal applied to that register from its Program Gate Array 423 (condition 1).

A similar process is next performed to upgrade the YCP register 115 and commences with the clearing of the Answer Register 53a during program step 012 to remove the upgraded XCP number therefrom (CAR PGA 351, condition 4). During the same program step the current Y axis macroposition number is added into the cleared Answer Register 53a from the YCP register 115 by the application of a READ gating signal to the register from its Program Gate Array 425 (condition 1). During the next program step 013 the Y axis macromove number .DELTA.Y is added to the current YCP number stored in the Answer Register 53a by reading the .DELTA.Y number from the register 107 onto the computer input trunk 59. For this purpose, a READ gating signal is applied to the register by its Program Gate Array 415 (condition 10). The sum, appearing in the register 53a during program step 014, is entered in the YCP register 115 by a WRITE gating signal applied thereto by its Program Gate Array 427 (condition 1). This completes the upgrading of the XCP and YCP registers 117 and 115. They now contain macroposition numbers representing the X and Y axis coordinates to be reached at the end of the time period .DELTA.T represented by the programming chart of FIG. 18. In order to prepare the computer for other operations that are to follow, its Answer Register 53a is cleared during the next program step 015 (CAR PGA 351, condition 5).

The updating operations performed during the first 1/10 of the iteration represented by column X000 in Table III are repeated during the corresponding time periods in each of the following eight-tenths of the iteration represented by columns X100 through X800 of Table III. This is indicated in the table by horizontal arrows originating from particular operations performed during the column X000 and running through the corresponding steps of the columns to its right. Thus, for example, the horizontal arrow originating from R/.DELTA.X (read .DELTA.X) in step 00 of column X000 in Table III signifies that the same operation of reading the number from .DELTA.X register 109 is also performed during step 00 of each of the columns X100 through X800, i.e., during program steps X100, X200, ...X800. The gating signals for initiating these reading operations are indicated in the PGA 409 in FIG. 9h as the conditions 2 through 9 inclusive. It may be confirmed by reference to other portions of FIG. 9 that other gating signals for initiating all of the other operations indicated for columns X200 through X800 of Table III are similarly shown in their respective Program Gate Arrays. By these means a new updated microposition is written into the XSC register 121 during the sixth program step of each of nine successive but time-separated series of 10 program steps. Similarly, a new microposition for the Y axis is written during the eleventh program step of each series into the YSC register 107. Each updated XSC value differs by .DELTA.X/10 from the previous XSC value and similarly each YSC value varies by .DELTA.Y/10 from the previous YSC value.

To compensate for any potential errors, the last updating operation during Column X900 in Table III is carried out by using the macroposition numbers XCP and YCP. These numbers, stored in the registers 117 and 115, are free of the small errors inherent in the microposition numbers XSC and YSC since they were produced by adding the entire .DELTA.X and .DELTA.Y numbers to the previous XCP and YCP numbers. Therefore, they represent the correct values of the X and Y axis micropositions XSC and YSC for the 10th Column X900 of the Table III. Accordingly, during the first step 00 of the Column X900, the Answer Register 53a is cleared by a CAR signal from the CAR PGA 351 (condition 1) and during the same program step the X macroposition number is read from the XCP register 117 and added into the cleared Accumulator Register 53a in response to a gating signal applied to the XCP register from its associated PGA 421 (condition 2). The XCP macroposition number is then written into the XSC register 121 during program step X905 by a gating signal applied to the register from the program gate 413. During the same program step, as in all of the previous columns of Table III, the Answer Register 53a is cleared by a pulse from CAR PGA 351 (condition 2) and the Y axis macroposition number is added into it from the YCP register 115 by a gating signal from its PGA 425 (condition 2). The number so stored is then transmitted from the Answer Register 53a to the YSC register 119 as the new YSC microposition number during step X910 by a WRITE signal applied to the register by the program gate 419.

Referring again to FIG. 18, the updating operations of the XSC and YSC registers 121 and 119 are represented by the two horizontal strips extending along the top of the programming chart of FIG. 18 and the upgrading operations of the XCP and YCP registers 117 and 115 comprise the first two operations indicated in block form following the updating operations performed during the first column of the programming chart. These operations are common to all of the programming charts used in performing linear interpolation and are performed during each iteration, or once every 20 milliseconds.

The generation of macropositions and micropositions shown on the programming chart of FIG 18 is continuously repeated, causing the generated positions to progress and to be executed along the desired path segment until the macroposition associated with one of the X and Y axes reaches within a predetermined distance of the programmed end point P2 of the path segment 27b for that axis. In accordance with this aspect of the invention, provision is made for predicting M time periods .DELTA.T in advance, the specific time period .DELTA.T during which an overshoot of the end point P2 will occur, i.e., during which the macroposition numbers XCP and YCP will be changed to represent X and Y coordinates which are past the desired end point P2 of the path segment 27b as represented by the end point coordinates XCEP2 and YCEP2. Toward this end the computer 53 is caused during each of the time periods .DELTA.T to process the signals representing a chosen one of the end point coordinates XCEP and YCEP, the corresponding one of the macropositions XCP and YCP, and the corresponding one of the .DELTA.X and .DELTA.Y numbers to produce a signal representing the comparative magnitudes of:

1. the chosen end point coordinate, and

2. the sum of the corresponding macroposition number and M times the corresponding macromove number.

In response to the signal produced by the computer, representing the comparative magnitudes of (1) and (2), a warning signal is generated during the first time period .DELTA.T in which the initially lesser of the compared quantities (1) and (2) becomes the greater. It will be seen in the following more detailed explanation that this reversal of relative magnitudes is indicative of a predicted overshoot of the desired end point coordinate. This feature of predicting a future overshoot condition will be referred to as "look-ahead."

c. Geometrical Analysis of Look-Ahead with Macromoves Adjusted to Hit the End Point

1. General Discussion

The purpose of the look-ahead feature is to enable the system to reach the programmed end point for a linear path segment such as 27b exactly at the end of an iteration. In order to understand the usefulness of this feature, it will be helpful to understand why this is unlikely to occur without some adjustment in the magnitudes of at least some of the calculated macromoves .DELTA.X and .DELTA.Y. The basic reason for computing and executing .DELTA.X and .DELTA.Y macromoves at regularly recurring time periods .DELTA.T is to cause movement along a designated path segment at a predetermined velocity. Thus, the primary significance of the macromove numbers .DELTA.X and .DELTA.Y is velocity and not distance. Consequently, the calculations for deriving the macromove numbers .DELTA.X and .DELTA.Y are directed to producing movement along a predetermined path segment toward a designated target point at a predetermined velocity. It is not the objective of these computations to reach the end point at the end of any particular macromove. To do so would require unduly high computational accuracy. However, this objective can be attained without increasing the computational accuracy otherwise required, by adjusting for certain of the time periods .DELTA.T the magnitudes of the .DELTA.X and .DELTA.Y macromove numbers which are to be executed during those time periods. Stated very simply, the movements to be carried out during these time periods .DELTA.T are either "stretched" or "compressed" by amounts which will result in the target point being reached exactly at the end of a time period .DELTA.T.

In previous sections there have been described, with reference to a path segment 27b extending toward an end point P2, certain means causing the computer 53 to operate over a first period of time at intervals of .DELTA.T on the signals stored in the XCP register 117 and the YCP register 115 so as to "upgrade", or change, the coordinate values represented thereby by the quantities .DELTA.X and .DELTA.Y, respectively. In accordance with the feature to be described next, means are also provided for causing the computer 53 to operate, over another given period of time and at similar intervals .DELTA.T, on the signals in the XCP and YCP registers so as to upgrade them by the quantities .DELTA.X' and .DELTA.Y' whose values are such that after one of the similar time intervals .DELTA.T, the upgraded XCP and YCP values agree closely with the X and Y coordinates of the end point P2.

Referring to FIG. 19, in accordance with the invention a preferred method for attaining the above objective is illustrated with reference to the path segment 27b previously shown in FIG. 2. Shown in FIG. 19 are the .DELTA.X and .DELTA.Y movements executed along the X and Y axes during a series of time periods .DELTA.T1-.DELTA.T1000 and the composite movement representing the path 27b is also shown. The X axis excursion I for the path segment 27b was previously given as 6 inches and the macromove quotient Q was stated to be 0.001. Accordingly, the X axis macromove .DELTA.X is 0.006 inches. In view of this assumption the end point P2 would be reached after exactly 1,000 iterations of 0.006 inches each, exactly at the end of iteration .DELTA.T1000. Of these only the first two and the last 14 are fully shown in FIG. 19.

In addition to the end point P2 two alternative end points P2' and P2" are also shown. Let it be assumed first that, instead of the end point P2, the end point P2' had been programmed on the tape 37. It can be shown that the magnitudes computed for the .DELTA.X and .DELTA.Y macromoves would not have been affected by this very small change and that the point P2, which is short of the point P2' would still have been reached at the end of the 1,000th .DELTA.T iteration as before. If movement were stopped at this point, the desired end point P2' would not be reached. On the other hand, if one more iteration were carried out, the movement executed during that iteration would carry past the desired end point P2'.

2. The Two Tests for Detecting the Presence and Sign of a Projected Overrun

In accordance with a specific aspect of the invention related to reaching the end point exactly at the end of an iteration, a distinction is made, based upon the amount by which this last macromove would carry past the actual end point. If the amount of "overrun" would exceed half of a macromove, that is, if the end point would be passed during the first half of the time period .DELTA.T, it is classified as a large overrun. If not, it is classified as a "small" overrun. Thus it is seen that, since the point P2' lies less than one-half macromove away from the point P2, the execution of another full macromove past the point P2 would result in a large overrun.

A small overrun is illustrated by the second alternative end point P2" lying more than one-half macromove past the point P2.

In carrying out the invention, two tests are performed during each time period .DELTA.T while movement along the path segment 27b progresses toward the end point, taken initially to be the point P2' to illustrate a large overrun. The first test detects proximity to the desired end point P2' far enough in advance to permit subsequent macromoves to be so adjusted as to cause the end point to be reached at the end of one of them. The second test is used to determine whether the detected overrun condition is large or small. If large, one type of corrective operation is carried out and if small, the corrective operation is of a second type. Specifically, the number of iterations for which the macromove numbers .DELTA.X and .DELTA.Y are modified are made sufficiently large to prevent the resulting change in speed from being excessive. A convenient number for computation is 10. In the illustrated embodiment of the invention, it is the last 10 iterations for which a modified pair of macromove numbers .DELTA.X and .DELTA.Y are computed.

3. The First Test

To allow sufficient time to modify the macromove numbers .DELTA.X and .DELTA.Y for the last 10 iterations for the path segment 27b, the overrun prediction is made 11 time periods .DELTA.T in advance. It is made by producing during each time period .DELTA.T, as part of the iteration performed during that time period, a point projected 11 macromoves forward along a selected one of the coordinates X and Y measured from the point that would be reached at the end of the current iteration. Several of these projections, produced during iterations .DELTA.T987-.DELTA.T990, are shown in FIG. 19 as the horizontally extending vectors 431a- d. In the exemplary system the look-ahead test projection is always done for the axis along which desired movement is faster in order to enhance the sensitivity of the test. In the illustrated example, this is the X axis.

Each of the projected points along the selected coordinate is compared with the corresponding coordinate of the end point to detect the first iteration .DELTA.T during which an overrun would occur if movement continued along the path at the existing rate, i.e., with the existing macromoves. The first three of the look-ahead projections 431a- c fall short of the X coordinate XCEP2' of the end point P2' and as a result, the following iteration is carried out with the "standard" macromove numbers X.DELTA. and Y.DELTA.. However, the fourth projection 431d, produced during iteration .DELTA.T990, extends past the coordinate XCEP2' and this condition is detected and is used to initiate appropriate corrective action. The corrective action undertaken in response to detecting this projected overrun condition depends, however, on the result of the second test, which is related to the size of the overrun. If the second test indicates a large overrun, greater than half a macromove, the system is permitted to complete the iteration during which the overrun was detected but is forced to perform the following 10 iterations with increased macromoves .DELTA.X' and .DELTA.Y'. On the other hand, if a small overrun is detected, the system is permitted to complete the iteration during which the detection occurred and also the following iteration at the normal rates. The subsequent 10 iterations are then carried out with slightly shortened macromoves .DELTA.X" and .DELTA.Y".

4. The Second Test

The second test is represented in FIG. 19 as a short vector extending leftward from the end of one of the longer vectors 431a-d. Each of the short vectors 433a-d is half a macromove, i.e., 1/2 .DELTA.X, long and represents an operation whereby the amount of overrun indicated by the first test is compared with 1/2 .DELTA.X in order to determine whether it would be "small" or "large". In the case of the vector 431d the second test represented by its corresponding short vector 433d indicates that the projected overrun revealed by the first test represented by the vector 431d would be a large one because the short vector 433d extending backward from the end of the first vector 431d does not quite extend to the X coordinate XCEP2' of the assumed end point P2'. In other words, even if the projection were shortened by half a macromove it would still extend past the X coordinate XCEP2'.

5. Calculating Adjusted Macromoves .DELTA.X', .DELTA.Y' for a Large Projected Overrun

Continuing with the assumption that P2' is the end point and that a large projected overrun had been predicted to occur during iteration .DELTA.T1001, the iteration .DELTA.T990 during which the projected overrun was detected is carried out at the normal .DELTA.X and .DELTA.Y macromoves. However, during the same iteration, while movement along the path 27b is advancing from command point (or macroposition) CP989 to command point CP990, calculations are being made to produce adjusted X and Y axis macromoves to be executed during the following ten iterations so that at the end of the last one of them the end point P2' will be reached along both the X and the Y axes. These adjusted macromoves for reaching the point P2' are identified in FIG. 19 by the symbols .DELTA.X' and .DELTA.Y'.

To compute the adjusted X axis macromoves .DELTA.X' the difference between the X coordinates of the end point P2' and of the macroposition CP991 is determined. This difference is the quantity 10 .DELTA.X'. It is divided by 10, resulting in the adjusted X axis macromove .DELTA.X' which is then repeatedly executed once during each of the following 10 iterations, thereby insuring that at the end of the last of them, movement along the X axis will have reached the X coordinate XCEP.sub. 2 of the end point P2' exactly. The results of these computations are identified in FIG. 19 as the vector 435, representing the quantity 10 .DELTA.X' and by a series of 10 shorter vectors 437, together equal in length to the vector 435 and individually representing the adjusted X axis macromoves .DELTA.X'. Since the vector 10 .DELTA.X' is slightly longer than 10 .DELTA.X, each of the adjusted X axis macromoves .DELTA.X' is longer than a normal macromove .DELTA.X and the end point XCEP2' along the X axis is reached exactly at the end of iteration .DELTA.T1000.

The adjusted macromoves .DELTA.Y' for the Y axis are calculated in a similar manner. During iteration .DELTA.T990 the distance remaining between the Y axis coordinate of the macroposition CP990 to be reached at the end of the iteration and the Y coordinate YCEP2' of the point P2' is determined. This distance is identified in FIG. 19 as the vector 439 and it represents the quantity 10 .DELTA.Y'. During this same iteration the quantity 10 .DELTA.Y' is divided by 10, producing the adjusted Y axis macromoves .DELTA.Y' shown in FIG. 19 as the string of vectors 441. During the following 10 iterations .DELTA.T991- .DELTA.T1000 the 10 adjusted macromoves .DELTA.Y' are executed concurrently with the adjusted X axis macromoves .DELTA.X'.

6. Calculating Adjusted Macromoves .DELTA.X", .DELTA.Y" for a Small Projected Overrun

Let it be assumed next that the actual programmed end point is P2". This assumed end point has X and Y axis coordinates XCEP2" and YCEP2" and is less than half a macromove short of the point scheduled to be reached at the end of iteration .DELTA.T1001. It, too, is detected during iteration .DELTA.T990 by use of the forward projected point represented by the vector 431d. Thus, it becomes known during the iteration .DELTA.T990 that an overrun would occur during iteration .DELTA.T1001. By means of the second test carried out during iteration .DELTA.T990, represented by the shorter vector 433d, it is further determined that the projected overrun along the X axis would be less than 1/2 .DELTA.X. As a result, in accordance with the invention, instead of increasing the X and Y axis macromoves in order to reach the end point P2" at the end of iteration .DELTA.T1000, as was done in the case of a large overrun, a number of the remaining iterations are modified by shortening the X and Y axis macromoves so as to reach the end point P2" only at the end of iteration .DELTA.T1001. To simplify calculations, such modified macromoves are calculated for the last 10 iterations .DELTA.T992 - .DELTA.T1001 by determining the difference between the X coordinate of the macroposition CP991 that will be reached a the end of iteration .DELTA.T991 and the X coordinate XCEP2" of the end point P2". The result is divided by 10, yielding the adjusted macromove quantity .DELTA.X" for the X axis, ten of which are then successively executed during the time periods .DELTA.T992- .DELTA.T1001. The quantities 10 .DELTA.X" and .DELTA.X" calculated in this manner are shown in FIG. 19 as the vectors 443 and 445, respectively. Also, during iteration .DELTA.T991 the quantities 10 .DELTA.Y" and .DELTA.Y" are calculated, these being represented in FIG. 19 by the vectors 447 and 449, respectively.

7. Summary and Restatement in Data Processing Terms

Summarizing the foregoing, if the overrun predicted for a given iteration, such as iteration .DELTA.T1001 in FIG. 19 is more than half a macromove, then the macromoves .DELTA.X and .DELTA.Y are increased for the 10 iterations immediately preceding the given iteration and the programmed end point for the path segment is reached at the end of the iteration .DELTA.T1000. On the other hand, if the overrun during a given iteration such as iteration .DELTA.T1001 is predicted to be less than 1/2 macromove, then the macromoves .DELTA.X and .DELTA.Y are reduced for the nine iterations immediately preceding the given iteration and additionally for the given iteration itself and the programmed end point for the path segment is caused to be reached at the end of the given iteration .DELTA.T1001.

The time periods .DELTA.T during which the first series of adjusted macromoves .DELTA.X' and the second series of adjusted macromoves .DELTA.X" are executed are shown by diagonal lines extending from the ends of the respective adjusted macromoves to the vertical lines designating the time periods .DELTA.T991 - .DELTA.T1001. The corresponding adjusted macromoves .DELTA.Y' and .DELTA.Y" are executed concurrently with the adjusted X axis macromoves .DELTA.X' and .DELTA.X".

A principal advantage of providing two possible corrections of the macromoves .DELTA.X and .DELTA.Y, depending upon the magnitude of the projected overrun, is that, in the instance of adjusting the last 10 macromoves, the greatest amount of change in the magnitude of the macromoves and therefore in the rate at which motion is executed along the path 27b is 5 percent. Assume, for example, that an attempt had been made to reach the programmed end point at the end of iteration .DELTA.T1000 in the case of a small overrun such as illustrated by the assumed end point P2". Specifically, assume that the programmed end point P2" is only 0.1 macromove short of the point which would be reached at the normal rate at the end of iteration .DELTA.T1001. If it were desired to reach this point at the end of iteration .DELTA.T1000 instead, each macromove along both the X and Y axes would have to be increased by 0.09 macromoves or by 9 percent. But the end point P2" can instead be reached exactly at the end of iteration .DELTA.T1001 with only a 1 percent change in speed by reducing each of the macromoves by 0.01 macromove.

It will be understood that the numbers used in the above example have been chosen because they lend themselves most readily to rapid calculation. However, it would be equally within the scope of the invention to use a longer look-ahead projection and to approach the end point so as to hit it exactly at the end of a given iteration with 20 instead of 10 adjusted macromoves.

To better illustrate the full scope of this feature of the invention it will be restated using symbols and data processing terms in place of specific numbers, but with the corresponding numbers in the previous example being shown in parentheses. Thus, during each time period .DELTA.T, first and second sets of signals are produced representing the amount, if any, by which motion would be directed past the programmed end point along a selected axis at the end of the following M (11) and M-1/2 (10.5) time periods. If it is predicted that motion would be directed past the programmed end point along the selected axis within M-1/2 (10.5) time periods, the macromove numbers along the X and Y axes are increased by equal amounts for each of the M-1 (10) time periods .DELTA.T which precede the time period .DELTA.T for which an overrun was predicted so as to cause the programmed end point to be reached substantially at the end of the last one of the M-1 (10) time periods .DELTA.T. On the other hand, if it is determined that motion would be directed to extend past the programmed end point along the selected axis within M (11) time periods .DELTA.T but not within M-1/2 (10.5) time periods .DELTA.T, the macromove numbers for the specific time period .DELTA.T during which an overrun was predicted to occur ( .DELTA.T1001) as well as the macromoves for the M-2 (9) time periods .DELTA.T immediately prior thereto are reduced by equal amounts so that motion will end exactly at the programmed end point at the end of the specific time period ( .DELTA.T1001).

d. Data Processing Steps Carried Out by the Exemplary System in Performing Look-Ahead and Macromove Adjustment

1. Sequence of Iterations During Generation of Linear Path Segment

To explain the sequence of iterations performed by the system of FIG. 9 corresponding to the time periods .DELTA.T1- .DELTA.T1001 illustrated in FIG. 19, reference will first be made to FIG. 20. Illustrated therein are a series of blocks, each block representing a programming chart such as those shown in FIGS. 17 and 18. The first iteration, performed during time period .DELTA.T1 is represented by the block 451 and is seen to be the type of iteration illustrated in FIG. 18 and discussed previously. The iterations of FIG. 18 are repeated during time periods .DELTA.T2- .DELTA.T988. During each of these, a standard macromove is executed along the X and Y axes, causing a resultant motion to progress along the linear path segment 27b toward the programmed end point of that path segment. Following this series of iterations two possible options, corresponding to the two possible corrective actions discussed with reference to FIG. 19, are shown. The first option, undertaken when a large overrun is detected, is shown as the top row of blocks extending from iteration .DELTA.T988. The second option, chosen when a small overrun is detected, is represented by the second row of blocks, also extending from iteration .DELTA.T988.

Taking the top row of blocks first, agreeably with the example in FIG. 19, one more FIG. 18 iteration is performed during time period .DELTA.T989 with the standard macromove along the X and Y axes. During the following time period .DELTA.T990, a large overrun is detected by means of the look-ahead feature. As a result, the operations performed during the following time period .DELTA.T990 include calculations whereby modified macromoves are computed. The operations performed during this type of an iteration are illustrated in FIG. 21 and will be discussed in greater detail hereinafter.

During each of the following 9 time periods .DELTA.T991- .DELTA.T1000 yet another type of iteration is carried out, these being shown in FIG. 22. Iterations of this type are performed with the system in mode 3 operation and are characterized by the fact that during each of them adjusted macromoves are executed. After the last of the nine FIG. 22 iterations, one more iteration is performed with the adjusted macromoves during time period .DELTA.T1000 in accordance with the operations shown in FIG. 17. These were discussed in detail previously in Section G.sup.. 2.a and will be recalled to have included the computation of the standard macromoves for performing or generating the initial portion of the next linear path segment.

Referring now to the second row of blocks shown in FIG. 20 for time periods .DELTA.T989- .DELTA.T1000 in FIG. 20, the first of the iterations, during .DELTA.T989, is again of the FIG. 18 type and precedes the iteration in which a small overrun is detected. The latter occurs during time period .DELTA.T990 and causes the operations performed during this time period to assume a sequence which is shown in FIG. 23. Because the detected overrun is small, however, adjusted macromoves are not computed until the following time period .DELTA.T991 and these are shown in FIG. 24. The adjusted macromoves are executed during the next 10 iterations .DELTA.T992- .DELTA.T1001, the first 9 of which are of the type shown in FIG. 22 and the last of which is in accordance with FIG. 17.

2. Data Processing Steps Associated with Detecting a Projected Overrun

a. Determining the Fast Axis

Turning again to FIG. 18 for a closer analysis of the look-ahead feature, the first step is to determine for which of the X and Y axes are the computed macromoves .DELTA.X and .DELTA.Y larger, i.e., which of the axes is the "fast" axis. The identification of the fast axis is carried out during program steps 1015-1017 of the programming chart shown in FIG. 18 and are shown in detail in Table IV. ##SPC5##

During program step 1015 the programmed coordinate excursion I is read from the I active register 99 by a gating pulse from its PGA 400 (condition 1). The I number so read is transferred to the computer 53 and is stored therein. During the following step 1016 the programmed Y coordinate excursion J is read from the J active register 101 in response to a gating signal from its PGA 391 (condition 5). This information, too, is stored in the computer 53. Concurrently with reading of the J number a "compare" control signal is applied to the CX input of the computer 53 by a Program Gate Array 453 shown in FIG. 9c and labeled "FP+CX" (condition 3). In response to the control signal, the computer 53 carries out a compare operation whose results appear at one of its outputs 339 and 341 during program step 1017. If I is equal to or greater than J, a logic 1 signal appears on the output 339. If I is less than J, a similar signal is produced on the output line 341. To preserve this indication, a J-K flip-flop labeled FAX FF 455 (fast axis X) is provided. Through a pair of AND gates 457 and 459 the flip-flop 455 is so connected to the compare outputs 339 and 341 that if I is greater than J during program step 1017 the flip-flop is set, and if I is less than J the flip-flop is reset. Accordingly, if the X axis is the fast axis, a logic 1 signal appears at the Q output of the flip-flop 455 during program step 1017 and this output is labeled FAX. Conversely, if the Y axis is the fast axis, a logic 1 signal appears at the Q output of the flip-flop and this output is labeled FAX.

(b) Producing the Look-Ahead Point and Performing the First Test

Following the identification of the fast axis, a look-ahead point is subsequently generated along that axis beginning with program step 1028. It will be understood, of course, that the particular program steps during which the operations which are being described here are performed, are of no significance except where indicated and thus if it were desired, the computations which will be described next could have been initiated during any of the program steps 1018-1027. The first operation, performed during program step 1028, is to clear the Answer Register 53ab and to read the number stored in the .DELTA.X register 109 if the X axis was identified as the fast axis or the number in the .DELTA.Y register 107 if the Y axis was so identified. Toward this end the PGA 409 associated with the .DELTA.X register 109 is conditioned to apply a READ gating signal to the .DELTA.X register 109 during program step 1028 if an FAX signal is produced by the flip-flop 455 (condition 11). Conversely, the PGA 415 is conditioned to apply a READ gating signal to the .DELTA.Y register 107 during program step 1028 if an FAX signal is produced by the flip-flop 455 (condition 11). Since the present description relates to the path segment 27b whose X-component I is greater than its Y component J, the .DELTA.X number will be read into the computer during program step 1028.

The .DELTA.X number read into the computer 53 during program step 1028 appears in its Answer Register of 53a during program step 1029 and is effectively multiplied by 10 by shifting the contents of the Answer Register one position to the left. The appropriate control signal is applied to the SAL control input of the computer 53 by Program Gate Array 463 in FIG. 9c (condition 1). This multiplication is the first step in "building up" an 11 macromove look-ahead number. As a result of the operation, a number which is equal to 10 .DELTA.X is stored in the Answer Register 53a. To increase this number to 11 .DELTA.X, the number .DELTA.X is again read from the register 109 into the computer 53 during program step 1030 in response to a READ signal from PGA 409 (condition 12). The result appears in the Answer Register 53a during program step 1031, but its numerical digits are not immediately utilized. Instead, during program step 1031 the sign of the number 11 .DELTA.X is stored in a sign store flip-flop 465, labeled "ACNX" and shown in FIG 9e as part of the Fast Axis Projected Overrun Detector 71.

In addition to the flip-flop 465, the detector 71 also includes a pair of AND gates 467 and 469. In the computer 53, the sign stage was previously described as a single JK flip-flop. In the exemplary system of FIG. 9, a(-) sign is represented by a logic 1 signal on the Q output of the sign flip-flop, and this is the output supplied to the COT(-) line of the computer output trunk 61. The output line COT(-) is directly connected to the J input of the ACNX flip-flop 465 in the detector 71 and is referred to as ACN (Accumulator Negative).

The inverse of the ACN signal, ACN is applied to the K input of the flip-flop 465 by means of an inverter 471 whose input is connected to the COT(-) line. Consequently, if the sign of the number 11 .DELTA.X is negative, the ACNX flip-flop 465 is set and a logic 1 signal, referred to as ACNX, appears at its Q output. On the other hand, if the number 11 .DELTA.X is positive, the ACNX flip-flop 465 is reset and a logic 1 signal labeled ACNX appears at its Q output.

Continuing with the look-ahead process, the sign is read into the ACNX flip-flop 465 during program step 1031 by means of a program gate 473 which is connected to the CP input of the flip-flop through an additional AND gate 475 enabled by a WP pulse from the decoder 173 of the Time Base and Digital Sweep 63 (FIG. 9b). Having stored the sign of the look-ahead number 11 .DELTA.X and with that number still in the Answer Register 53a during the following program step 1032, the upgraded macroposition number XCP, representing the position to be reached at the end of the current time period .DELTA.T, is additively read into the computer 53 from the XCP register 117 by a READ gating signal from the Program Gate Array 421 (condition 3). The resulting sum (XCP + 11 .DELTA.X) appears in the Answer Register 53a during the following program step 1033 and represents the desired look-ahead point projected forward 11 .DELTA.X macromoves from the macroposition which is programmed to be reached at the end of time period .DELTA.T1. (See FIGS. 19 and 20).

Having produced the look-ahead point, it now remains to compute the projected overrun, if any. This is achieved in the exemplary system by subtracting the programmed X coordinate end point XCEP from the look-ahead point and using the sign of the difference to detect an overrun condition. The minuend of this operation is in the Answer Register 53a; however, the subtrahend, which is the XCEP number, cannot be read subtractively into the computer because its decimal point is located one position to the right of the decimal point of the subtrahend. (Compare XCEP and XCP in FIG. 15). Accordingly, during program step 1033 the number XCP + 11 .DELTA.X is shifted one position to the right in the Answer Register 53a in response to a control signal applied to the SAR control input by the Program Gate Array 411 (condition 23).

With the number representing the look-ahead point 11 .DELTA.X in proper decimal point position, the XCEP number is subtractively read into the computer 53a during program step 1034 from the XCEP register 95 in response to a READ gating signal from its Program Gate Array 359 (condition 1). The computer 53 is put in the subtractive mode by a control signal applied to its SX input from the Program Gate Array 479 (condition 1).

In accordance with a specific aspect of the invention related to detecting an overrun, a comparison is made during program step 1035 between the sign of the remainder produced during the program step 1034 and the sign of the quantity 11 .DELTA.X, previously stored in the ACNX flip-flop 465 in FIG. 9e during step 1031. It may be readily shown that, so long as the two signs are opposite, an overrun condition has not occurred. Thus, for the test performed during iteration .DELTA.T1 the look-ahead quantity 11 .DELTA.X is positive, since motion is to be toward the right in FIG. 19. When the end point coordinate XCEP.sub.2 is subtracted from the look-ahead point projected forward 11 .DELTA.X past the upgraded macroposition XCP.sub.1, the remainder will be negative, since XCEP.sub.2 is greater than XCP.sub.1 + 11 .DELTA.X. Thus, the sign of the quantity 11 .DELTA.X is opposite that of the quantity XCP.sub.1 11 .DELTA.X -XCEP.sub.2. However, during the first iteration that the look-ahead point XCP.sub.n + 11 .DELTA.X extends past the end point coordinate XCEP.sub.2, so that the quantity which had been the lesser becomes the greater, the sign of the remainder of XCP.sub.1 + 11 .DELTA.X -XCEP.sub.2 will become the same as the sign of the quantity 11 .DELTA.X.

The foregoing condition is detected by applying the ACN signal from the Answer Register 53a directly to a second input of the AND gate 467 which also receives the stored ACNX signal from the Q output of the flip-flop 465. Similarly, in addition to receiving the output ACNX from the Q output of the flip-flop 465, the AND gate 469 is also connected to receive the signal ACN directly from the output of the inverter 471. As a result, during the program step 1035 a logic 1 output is passed through the AND gate 467 and appears at its output only if both the quantity 11 .DELTA.X and the remainder of XCP.sub.n +11 .DELTA.X -XCEP.sub.2 are negative. On the other hand, the second AND gate 469 produces an output only if both of the aforesaid quantities are positive. The outputs of the two AND gates 467 and 469 are fed to an OR gate 481.

During each of the time periods .DELTA.T1 - .DELTA.T989 in which the path segment 27b is generated, the look-ahead point XCP.sub.n .DELTA.X will be less than the programmed end point XCEP.sub.2, the signs applied to the detector 71 during program steps 1031 and 1035 will differ, and no signal will appear at the output of the OR gate 481 during step 1035. During the first iteration, however, in which the initially lesser look-ahead point XCP.sub.n +11 .DELTA.X (.DELTA.T990 in the example of FIGS. 19 and 20) becomes the greater, the sign of XCP.sub.n +11 .DELTA.X -XCEP.sub.2 is reversed and a logic 1 signal is applied to the OR gate 481 by the AND gate 469 during step 1035. The resulting signal which appears at the output of the OR gate 481 is in effect an end of block warning signal utilized by the system to change its mode of operation a predetermined number of iterations before the specific time period .DELTA.T in which a projected overrun is predicted to occur.

As indicated in the discussion of FIG. 19 for the exemplary path segment 27b, a projected overrun condition will not be indicated or predicted, for many iterations. Means are provided, however, to initiate in response to a signal from OR gate 481 of the detector 71 a change in the mode of operation of the system such that during selected ones of the following iterations adjusted macromoves are computed for the X and Y axes. Toward this end the output of the OR gate 481 is connected to the Program Gate Array 183, to serve as the input of the Time Base Mode Selector 69 in FIG. 9e. The output from the detector 71 is identified by the symbols SST. ("Same sign twice"). One of the program gates of the array 183 represented by the first condition listed therein (1035.sup.. LIN.sup.. S1.sup.. SST) is connected to produce a signal in response to an SST signal from the overrun detector 71 during program step 1035 if the system is generating a linear path and if the End of Block Counter 186 is in its first count state as indicated by a logic 1 level on the S.sub.1 output of the decoder 187. Therefore, in response to an SST overrun indication, whether it be caused by a small projected overrun or a large one, the PGA 183 allows a PCP pulse to be applied to the End of Block Counter 186, advancing it at the end of program step 1035 from its first to its second count state, indicated by a signal on the S2 output of the decoder 187.

The operation of advancing the End of Block Counter 186 to state S2, which can only occur when a projected overrun has been detected, appears in Column 1000 of FIGS. 21 and 23.

c "Retracting" the Look-Ahead Point by 1/2 Macromove and Performing the Second Test

A second test, directed to determining the magnitude of an overrun, if any, is carried out during steps 1036-1042 of the iteration shown in FIG. 18 and Table IV.

First, the projected overrun which is still stored in the Answer Register 53a during program step 1036 is shifted two positions to the left in the register during program steps 1036 and 1037 in response to Shift Left control pulses from the PGA 463 (conditions 2 and 3). The rest of the iteration is shown in Table IV-A. ##SPC6##

During steps 1038-1042 the macromove number stored in the .DELTA.X register 109 is subtractively read into the computer 53 five times. Due to the shifting of the minuend in the register 53a two positions to the left, each subtractive reading of the .DELTA.X number in the computer has the effect of reducing the number remaining in the Answer Register by 0.1 .DELTA.X so that, after the last of the five program steps 1038-1042, 1/2 .DELTA.X will have been subtracted from the projected overrun. The necessary gating and control signals for carrying out the foregoing operations are listed in PGA 409 of the .DELTA.X register 109 as condition 14. It will be noted that condition 14 depends on the presence of an FAX signal at the output of the FAX flip-flop 455. Had this not been present; that is, had the Y axis been the fast axis, the number in the .DELTA.Y register 107 would have been read instead in response to gating signals indicated as condition 13 in its associated PGA 415.

During step 1043 a test is performed on the remainder in the Answer Register 53a to determine whether or not the projected overrun exceeded a 1/2 macromove. The test is identical to that performed previously during step 1035; that is, the sign of the remainder present in the register 53a during step 1043 is compared with the sign of the look-ahead quantity 11 .DELTA.X. If they are the same, it is an indication that even with the projected overrun reduced by a 1/2 macromove an overrun would occur; or, in other words, that the projected overrun is equal to or greater than a 1/2 macromove.

Referring to FIG. 9e, if movement is in a positive direction, a logic 1 signal will be applied to the OR gate 481 by the AND gate 469 on step 1043 during the first iteration in which the sign of the remainder in the register during step 1043 is the same as the stored sign of the look-ahead quantity 11 .DELTA.X. Similarly, a logic 1 signal is applied by the AND gate 467 to the OR gate 481 during the first time period .DELTA.T during which a similarity of signals occurs if movement is in a negative direction. By means of a program gate represented in the PGA 183 by condition 3, if a projected overrun condition was detected during a given time period .DELTA.T as a result of the first test, causing the S2 output of the decoder 187 to be energized, then a second SST signal at the output of the detector 71 caused by a positive result from the second test will cause the End of Block Counter 186 to be advanced to its third count state and the decoder 187 to produce a signal on its S3 output.

3 Changing System Operation into Mode 2 in Response to Detection of a Large Projected Overrun

Since the projected overrun detected during program step .DELTA.T990 is assumed to be large, a changeover needs to be made from the FIG. 18 iteration to an iteration which includes computational steps for deriving the adjusted macromove numbers which will be required during the following 10 iterations. FIG. 21 illustrates this iteration.

Referring to FIG. 21 it will be observed that the periodic updating of the XSC and the YSC registers 121 and 119 are the only operations performed during the second, third and fourth columns 1100-1400 of the programming chart. Up to this point the only difference between the FIG. 21 type iteration and that shown in FIG. 18 is that, during the first column on the programming chart in FIG. 21 both of the tests performed have resulted in projected overrun indications. For this reason the two blocks in FIG. 21, column 1000, calling for advancement of the EOB Counter to S2 and then to S3 are not crossed out. The changeover to operations characteristic of the iteration shown in FIG. 21 is initiated during program step 1589. During this program step the End of Block Counter 186 is advanced to its fourth count state, provided that it is already in its third count state. This further advancement of the binary counter 186 has the effect of producing a signal on the S4 output of the decoder 187, which, in turn, enables the AND gates 177 of the Time Base Logic 67 thereby placing the system in its mode 2 operation. The significance of this change is that, in its mode 2 operation the system carries out the computations required to produce the adjusted macromoves necessary to hit the end point exactly.

To advance the binary counter 186 from its third to its fourth count state, the Program Gate Array 183 includes a gate, represented as condition 5, which is connected to produce the required stepping signal during program step 1589, provided a signal is present on the S3 output of the decoder 187. This does not occur for the example illustrated in FIG. 19 until time period .DELTA.T990 and then only if the assumed end point is P2'. During that time period, however, with P2' being the assumed end point, in response to the condition created by advancement of the End of Block Counter 186 from state S1 to state S4 during the same time period .DELTA.T, after program step 1589, or slightly after the first half of time period .DELTA.T990, the system is switched over into its mode 2 operation as indicated by the headings 2600-2900 on the last four columns of the programming chart of FIG. 21. During each of the previous 989 time periods .DELTA.T1- .DELTA.T989 the system operates in its mode 1 and the operations which it performs are those shown in FIG. 18.

4. Data Processing Steps Associated with Calculating Adjusted Macromoves

In addition to the frequently repeated updating operations performed during each column, two series of computations are performed during columns 1800 and 1900 of FIG. 18. The first of these is almost identical to the operations performed in column 4800 of FIG. 17 and, similarly, the second series of operations performed in column 1900 of FIG. 18 is almost exactly the same as those carried out in column 4900 of FIG. 17.

Turning first to the computations performed during column 1800 in FIG. 18 during steps 1817-1864 the product J.sup.. Q is derived from the numbers stored in the registers 101 and 103. Thus, during program step 1817 (Table IV) the number Q is read from the register 103 in response to a gating signal applied thereto by its PGA 389 (condition 1). During the following program step 1818 the number J is read from the Register 101 by a gating signal from its PGA 391 (condition 6). During the same program step, a multiply command signal is applied to the computer 53 from its PGA 393 (condition 5). In response to the multiply command signal, the operation J.sup.. Q is performed by the computer during program steps 1819-1864. This is followed by adding the "remainder" digits which were split off the product formed during the previous iteration. Toward this end, the product J.sup.. Q is shifted four positions to the left in the Answer Register 53a during program step 1865 by a Shift Left 4 control signal from the PGA 347 (condition 2). The four remainder digits are then read from the YR register 111 during program step 1866.sup.. LIN by a gating signal from its Program Gate Array 399 (condition 1). With the product of J.sup.. Q correctly aligned in the Answer Register 53a with the incoming digits from the YR register 111 the latter is directly added to the product and the sum appears in the Answer Register 53a during program step 1867.sup.. LIN. It is then shifted to the right four positions by Shift Right 4 control signal from the PGA 487 in FIG. 9c (condition 2). The digits remaining in the Answer Register 53a after the shifting operation represent the macromove number .DELTA.Y and are transferred into the .DELTA.Y 107 Register by a WRITE signal from its Program Gate Array 395 (condition 1).

During the following three steps the remainder digits of the product J.sup.. Q just completed are transferred to the YR register 111. First, during program step 1869 the digits in the Answer Register 53a are zeroed by the ZR1 control signal from the PGA 397 (condition 2). Next, during program step 1870, the four digits stored in the overhanging register 53b are transferred to the left by four positions by a Shift Left 4 control signal from the PGA 347 (condition 5). Finally, during the program step 1871 the four digits now residing in stages 5, 6, 7 and 8 of the Answer Register 53a are transferred to the YR Register 111 by a WRITE signal from its Program Gate Array 399 (condition 2).

During the corresponding steps of column 1900 the same operations are performed as those carried out during 1800, but with the number "I" being used instead of the number "J" and with the .DELTA.X and XR registers being used instead of the .DELTA.Y and YR registers to receive the result. These operations will not be described in detail. They are shown in Tables IV and IV-A, and the appropriate program and control gates required to perform them are identified in FIG. 9.

It should be noted that the multiplication of J.sup.. Q and I.sup.. Q to produce .DELTA.Y and .DELTA.X macromove numbers need not be performed during each FIG. 18 iteration because these products remain the same for those iterations during which one linear path segment is generated at constant velocity. Thus, having derived the .DELTA.Y and .DELTA.X quantities during the first FIG. 18 iteration during time period .DELTA.T1, these stored and left undisturbed in separate registers. This is so because these quantities remain the same for all of the iterations during which one linear path segment is generated at a constant velocity until an overrun condition is detected. The reason why these quantities have been shown as being newly computed during each iteration is that is may be desirable in some instances to provide for modification of velocities during a segment by manual override or adaptive controls, and also in the case of circular interpolation, described below.

Returning now to time period .DELTA.T990 and continuing with the assumption that a large overrun has been detected, the first series of operations carried out by the system in Mode 2 during Column 2800 of FIG. 21 is directed to generating an adjusted macromove number .DELTA.Y'. Generally, this is achieved by subtracting the macroposition YCP from the end point coordinate YCEP, dividing the result by 10 and storing the resulting quotient. Preceding this sequence, however, the last digit of the macroposition number YCP is eliminated. The reason for this is that the YCP macromove number has one more digit than the YCEP end point coordinate from which it is to be subtracted. Were this extra digit not eliminated, it would prevent the subsequent division from producing adjusted macromove numbers that would fit in the .DELTA.Y register 107. The Y servo command register YSC also carries a digit corresponding to the extra digit of YCP (see FIG. 15), but this digit is not transmitted to the Y servo 77 over the lines 81.

The detailed steps performed by the system in Mode 2 are shown in Table V. ##SPC7##

To eliminate the last digit of the YCP number, it is read into the computer 53 from the YCP Register 115 during program step 2815 by a gating signal from the PGA 425 (condition 7). Lodged in the Answer Register 53a during the following program step 2816, the YCP number is shifted one position to the right by a shift signal applied to the computer by the PGA 411 (condition 26). The last digit of the YCP number is now in stage 9 of the Overhanging Register 53b and is eliminated by a ZR2 signal applied to the corresponding control input of the computer by the PGA 397 (condition 6). With its lowest order digit eliminated, the YCP number is shifted back toward the left by one digit position during program step 2818 in response to an appropriate control signal from the SAL PGA 463 (condition 6). The YCP number is now in a proper position in the Answer Register 53a to be transmitted over the output trunk line 61 and it is stored during program step 2819 in the YCP register 115 by a WRITE gating signal from its PGA 427 (condition 2). This completes the elimination of the lowest order digit of the macroposition number YCP.

To subtract the modified YCP number from the YCEP number residing in the YCEP Register 97 the YCEP number is transferred to the computer 53 during program step 2820 by a READ gating signal applied by its associated PGA 487 (condition 2). During the same program step, just prior to the reading of the YCEP number, the Answer Register 53a is cleared by a CAR signal from PGA 351 (condition 12). Next, the YCEP number, the minuend just stored in the Answer Register, is shifted one position to the left to bring its decimal point into alignment with that of the subtrahend YCP (see FIG. 15). Accordingly, a Shift Left control signal is applied to the computer 53 during program step 2821 from PGA 463 (condition 7).

With the minuend YCEP properly positioned in the register 53, the subtrahend YCP is subtractively read into computer 53 during program step 2822. Toward this end a subtract control signal is applied to computer 53 from the PGA 479 (condition 3) and a READ gating signal is applied to the YCP register 115 by its PGA 425 (condition 8). The remainder, stored in the Answer Register 53a during program step 2823, is 10 .DELTA.Y', representing the sum of 10 adjusted Y axis macromoves, at the end of which the end Point YCEP will be reached exactly.

To derive from the 10 .DELTA.Y' number the adjusted Y axis macromove number .DELTA.Y', the 10 .DELTA.Y' number in the Answer Register 53a is shifted one position to the right during program step 2823 by means of a control signal applied to the SAR input of the computer 53 from its PGA 411 (condition 27). The result is transmitted from the Answer Register 53a to the Y axis macromove register 107 during program step 2824 by the application to the register of a WRITE gating signal from its PGA 395 (condition 3). Thus, during the ninth column of the programming chart of FIG. 21, the adjusted macromove .DELTA.Y' has been calculated and stored in the .DELTA.Y register 107. A similar series of calculations are performed during the tenth portion of the iteration represented by the column 2900 of the programming chart to derive from the macroposition number XCP and the end point coordinate XCEP the adjusted macromove number .DELTA.X'. These steps and the necessary gating means are indicated in Table V, and in FIG. 9 and will not be described in detail. Suffice it to say that, at the end of the series of operations, during program step 2924.sup.. LIN, the adjusted macromove number .DELTA.X' becomes stored in the .DELTA.X register 109.

5. Changing System Operation into Mode 3 in Order to Execute Adjusted Macromoves During Subsequent Iterations

With the adjusted macromoves .DELTA.X' and .DELTA.Y' computed and stored, the only operation remaining during the FIG. 21 iteration is to cause the system to change to its mode 3 operation. In this mode the system executes during each iteration one of the macromoves .DELTA.X' and .DELTA.Y' along the X and Y axes, as indicated in FIG. 22. Changeover of the system from its mode 2 operation to its mode 3 operation is initiated during program step 2999 by advancing the End of Block Counter 186 to its fifth count state signaled by a logic 1 voltage level on the S5 output of the decoder 187. Since the End of Block Counter is already in its count state 4, a single signal is sufficient and this signal is applied to the counter 186 by the PGA 183 (FIG. 9e) during program step 2999 as indicated by condition 17 in the PGA. In response to the signal on the S5 output of the decoder 187, the third group of AND gates 179 of the Multi Mode Time Base Logic is enabled, causing timing signals 3000-3999 to be recurringly generated, as indicated by the heading of the 10 columns in FIG. 22.

6 Operation of the System in Mode 3

The first of the FIG. 22 iterations is performed during time period .DELTA.T991 and is repeated eight more times, once during each of the following time periods .DELTA.T992-.DELTA.T999. Each of these iterations comprises principally only two types of operations. First, the XSC and YSC registers are updated during each of the ten time periods .DELTA.T/10 represented by the 10 columns 3000-3900 of the FIG. 22 iteration. Second, the XCP and YCP registers 117 and 115 are upgraded during the 3000 column of the iteration. A comparison of the Programming Chart of FIG. 22 with the basic Programming Chart shown in FIG. 18 will reveal that the updating and upgrading operations are performed during the same time periods. The only difference between the operations is that different numerical values are used. Consequently, Table III and the description given in reference to it in Section G.2.b. is equally applicable to the steps performed during the FIG. 22 iterations carried out during the time periods .DELTA.T991- .DELTA.T999.

7 Changing the System to Mode 4 Operation Following Execution of the 9the Pair of Adjusted Macromoves

An additional step performed once during each of the FIG. 22 iterations, but not during the FIG. 18 iteration, is directed to registering the number of times that the FIG. 22 iterations have been performed. Toward this end, means are provided for advancing the End of Block Counter 186 one count state for each FIG. 22 iteration. This is achieved by applying a stepping pulse to the End of Block Counter 186 during program step 3999 of each FIG. 22 iteration. The stepping pulses originate from the PGA 183 and the particular Program Gate for generating them is indicated as condition 18. The FIG. 22 iteration is permitted to repeat nine times. After the last such iteration, the system is directed to leave its mode 3 operation and to enter its fourth mode. In this mode, previously discussed with reference to FIG. 17, computations are performed to derive a macromove for the next path segment after the end point of the current path segment has been reached. To bring about the desired changeover from mode 3 to mode 4 operation, the S14 output of the decoder is connected through the OR gate 191 to the fourth set of AND gates 181 in the Time Base Logic 67. These AND gates, as explained previously, cause the system to operate in its fourth mode when they are enabled. The S14 output of the decoder 187 becomes enabled at the end of the ninth FIG. 22 iteration, shown in FIG. 20 as appearing at the end of time period .DELTA.T999. By the end of this time period, nine iterations have been performed with the adjusted macromoves, leaving only one iteration to be performed with those adjusted macromoves in order to reach the programmed end point P2 exactly. This is the iteration shown in FIG. 17. Thus, during time period .DELTA.T1000 the updating and upgrading operations associated therewith are carried out with the adjusted macromove quantities .DELTA.X' and .DELTA.Y'.

The FIG. 17 iteration also includes computational steps associated with producing another linear path segment. A slightly different type of iteration is also available for commencing a circular path segment, and this will be disclosed in a subsequent portion of this specification. The computational steps performed during the columns 4600-4900 of FIG. 17 have been discussed previously, in section G.2.a, in connection with initiating the generation of the path segment 27b. Thus, the completion of the updating and upgrading steps of the FIG. 17 iteration during time period .DELTA.T1000 completes the operations associated with generating the linear path segment 27b.

8. Changing System Operation from Mode 1 to Mode 2 in Response to the Detection of a Small Projected Overrun

The foregoing detailed description with reference to FIG. 20 of the iterations shown in FIGS. 18, 21, 22 and 17 was based on the assumption that a large overrun was detected during time period .DELTA.T990. It was seen that, in keeping with the analysis offered with reference to FIG. 19, it was necessary for the system to switch over to its next mode of operation during the same time period in which a projected large overrun was detected ------this, in order to calculate the adjusted macromove before the following time period .DELTA.T begins. The iteration during which such a prompt switchover occurs is that shown in FIG. 21.

Let it be assumed, however, that instead of a large overrun, a small overrun was detected during time period .DELTA.T990. In this event it is desirable to defer the switchover of the system for one time period so that it occurs during the time period .DELTA.T991 following the time period .DELTA.T990 (during which the small projected overrun was detected). In this way, the first FIG. 22 iteration during which adjusted macromoves are executed is also deferred, and does not occur until time period .DELTA.T992 (see FIG. 20).

It is in order to prevent a switchover from mode 1 to mode 2 in the time period .DELTA.T during which a small overrun is detected that advancement of the End of Block Counter 186 through its second and third count states is made necessary before the further change of the counter to its fourth count state, and with it, switchover of the system to mode 2 can occur. This series of events cannot occur, however, if the detected overrun is a small one because advancement of the End of Block Counter 186 into its third count state will not occur during the same time period .DELTA.T in which such an overrun was detected. It will, however, occur during the following time period .DELTA.T.

Specifically, means are provided, in the form of a Program Gate represented by condition 4 of the PGA 183, for advancing the End of Block Counter 186 from its second to its third count state during a given time period .DELTA.T if during the previous time period .DELTA.T the counter was advanced only to its second count state.

The steps carried out during the time period in which a small overrun is detected and during the following time period are shown as the iterations appearing in FIGS. 23 and 24. A comparison of the FIG. 23 iteration with the FIG. 21 iteration shows that the principal difference between the two is that the event represented in FIG. 21 by the last block in its 1000 column is crossed out in the corresponding block in FIG. 23. The legend in the block in question states that the End of Block Counter 186 shall be advanced from its second to its third count state if the second test associated with overrun indicates that the overrun was greater than 1/2 macromove. If, as assumed, the overrun is small and this test yields a negative result, the counter 186 is not advanced to its third count state, but instead, the iteration is completed with the counter still in its second count state as shown by the last block in Column 1900 of FIG. 23.

As a result of the failure of the End of Block Counter 186 to advance from its second to its third state during the Column 1000 of the FIG. 23 iteration, the further advancement of the counter into its fourth count state, shown to occur during the FIG. 21 iteration toward the end of its fifth Column 1500, also fails to occur so that the iteration is completed with the system in its Mode 1.

As a second result of the End of Block Counter 186 not advancing to its third state S3 during program step 1043 of time period .DELTA.T990, the following iteration, shown in FIG. 24 begins with the system still in Mode 1. However, during the FIG. 24 iteration, that is, during time period .DELTA.T991, the End of Block Counter 186 is advanced to S3 and finally, about halfway through .DELTA.T991, the operation of the system is changed from Mode 1 to Mode 2 in the same manner as was previously seen to occur during the FIG. 21 iteration performed during time period .DELTA.T990. Thus, the End of Block Counter 186, having been previously advanced to its third count state S3 on step 1014 of the FIG. 24 iteration is advanced to its fourth count state S4 during program step 1589 of the FIG. 24 iteration. With the counter 186 thus advanced, all events thereafter are the same as if a large overrun had been detected during the time period .DELTA.T991 during which the iteration of FIG. 24 is performed. Consequently, during the next nine time periods .DELTA.T992 - .DELTA.T1000, the iterations of FIG. 22 are carried out, following which, provided the next path segment is to be linear, the system is caused to switch during time period .DELTA.T1001 into operating mode 4 and the iteration shown in FIG. 17. The End Point is reached at the end of time period .DELTA.T1001.

H. detailed Description of Staggered Circular Path Generation

1. The Concept

a. Assuming Components of Two Radius Vectors are Given:

Circular path generation in accordance with the present invention was explained in a previous section with reference to FIGS. 6a-6d and will be explained in greater detail presently with reference to FIGS. 25a-25f. The latter figures show successive steps in generating a circular path progressing counterclockwise. Referring in particular to FIG. 25a, it is assumed that movement is to be accomplished along a circular arc generated by a radius vector of length R which passes from an initial point P.sub.0 on the arc through a series of points P1, P2, P3, P4, P5 on the arc at the end of respective ones of a consecutive series of equal time periods T1, T2, T3, T4 and T5. It is also assumed that the data initially furnished includes the X component I.sub.0 of the inverse of the radius vector R.sub.0 which extends from the center C of the circle to the initial point P.sub.0 on the arc, and that the information also includes the Y component J.sub.1 of the inverse of the radius vector R.sub.1 extending from the center C of the circle to the point P.sub.1. The inverse of the radius vector R.sub.0 is simply that radius vector turned head for tail, as a straight line extending from the point P.sub.0 to the circle center C. The reason why the X and Y components of the inverse of the radius vectors are given is that this convention has been adopted by the numerical control industry to define circular paths. Had the radius vector and its X and Y components been so adopted, the following description would be little changed. The same fundamental principles would still apply. In conformance with the present convention, in the following paragraphs and in the claims the quantities I and J will be referred to by the short names "inverse X component" and "inverse Y component" of a radius vector.

In generating the circular path in accordance with the invention, prior to the respective time periods T.sub.1, T.sub.3 and T.sub.5, signals are produced respectively representing numerically the X coordinate distances .DELTA.X.sub.02 and .DELTA.X.sub.24 between the points P.sub.0, P.sub.2 and P.sub.4. These quantities are shown vectorially in FIGS. 25b and 25f. In a similar manner, prior to the respective time periods T.sub.2 and T.sub.4, signals are also produced respectively representing numerically the Y coordinate distances Y.sub.13 and Y.sub.35 between the points P.sub.1, P.sub.3 and P.sub.5. The first of these quantities is shown vectorially in FIG. 25d.

The .DELTA.X signals are utilized during respective pairs of the time periods such as T.sub.1 -T.sub.2, and T.sub.3 -T.sub.4, during which a controlled member is driven under the control of the .DELTA.X signals through the distances .DELTA.X.sub.02 and .DELTA.X.sub.24 along the X axis. Correspondingly, the .DELTA.Y signals are utilized during respective pairs of time periods T.sub.2 - T.sub.3 and T.sub.4 - T.sub.5 by driving the controlled member along the Y axis through the distances .DELTA.Y.sub.13 and .DELTA.Y.sub.35. In accordance with a more detailed aspect of the invention, motion along both axes is kept substantially uniform during each of the pairs of time periods.

The manner in which the .DELTA.X and .DELTA.Y quantities are developed will be explained next. The .DELTA.X.sub.02 number, representing motion to be executed along the X axis during time periods T.sub.1 and T.sub.2 is derived from the inverse Y axis component J.sub.1 of the radius vector R.sub.1 in accordance with equation (22) in FIG. 25b. The derivation of the equation was given previously with reference to equation (15) in FIG. 6. The differences between equation (15) and (22) are due to the fact that the direction of motion shown in FIG. 25b is counterclockwise, whereas FIG. 6c, to which equation (15) applies, shows motion in a clockwise direction. Secondly, the term V.sup.. .DELTA.T in equation (15) is replaced in equation (22) by .DELTA.D, representing the chord which extends from point P.sub.0 to point P.sub.2. Finally, the term .cuberoot.I.sub.1.sup.2 + J.sub.1.sup.2 in equation (15) is replaced by (R), the radius vector.

Having produced the macromove number .DELTA.X.sub.02 prior to the time period T.sub.1, the macromove is executed by moving the controlled element along the X axis by a distance .DELTA.X.sub.02 during the time periods T.sub.1 and T.sub.2 at substantially uniform speed. The next quantity to be derived is the Y axis macromove number .DELTA.Y.sub.13. As shown in FIG. 25d, in order to calculate .DELTA.Y.sub.13, the X coordinate distance from the point P.sub.2 to the center C of the circle, that is, the inverse X component I.sub.2 of the radius vector R.sub.2, must be known. I.sub.2 is determined by advancing the inverse X component of R.sub.0 by means of the X component .DELTA.X.sub.02 of the chord CH.sub.02 which was derived in the previous step. This is achieved during time period T.sub.1 by processing the previously stored signals representing I.sub.0 and .DELTA.X.sub.02 so as to derive therefrom further signals numerically representing the quantity I.sub.0 - .DELTA.X.sub.02 in accordance with equation (23) in FIG. 25c. Having thus derived signals representing the inverse X component, I.sub.2 of the radius vector R.sub.2, the Y component .DELTA.Y.sub.13 of the next chord CH.sub.13, extending from P.sub.1 to P.sub.3 in FIG. 25d, is produced by processing the signals representing I.sub.2 in accordance with equation (24) in FIG. 25d to derive therefrom signals numerically representing the quantity

and storing the resulting signals. With the .DELTA.Y.sub.13 signals stored, the macromove .DELTA.Y.sub.13 along the Y axis is executed at substantially uniform speed during time periods T.sub.2 and T.sub.3, as indicated in FIG. 25d The stored .DELTA.Y.sub.13 macromove number is also used to produce the Y axis inverse component J.sub.3 of the radius vector R.sub.3 required to derive the next X axis macromove number .DELTA.X.sub.24. As shown in FIG. 25e, the component J.sub.3 is derived by advancing the inverse Y component J.sub.1 of the radius vector R.sub.1 by means of the Y component .DELTA.Y.sub.13 of the chord CH.sub.13. In data processing terms, during time period T.sub.2 the stored signals representing J.sub.1 and .DELTA.Y.sub.13 are processed to derive from them signals which numerically represent the quantity J.sub.3 = J.sub.1 - .DELTA.Y.sub.13 (equation 25). Shortly thereafter and still during the time period T.sub.2, the derived signals are further processed in accordance with equation (26) in FIG. 25f to derive therefrom signals numerically representing the quantity

This quantity is the X component of chord CH.sub.24 extending from point P.sub.2 to point P.sub.4 in FIG. 25f. The signals representing the macromove number .DELTA.X.sub.24 are stored and are used to control movement along the X axis during time periods T.sub.3 and T.sub.4 by an amount corresponding to the number .DELTA.X.sub.24.

In equations (22) and (26) of FIGS. 25b and 25f, the right-hand side of the equation is positive, whereas in FIG. 25d a negative sign appears. It will be understood that the particular signs shown in FIGS. 25b, 25c, 25d, and 25f are characteristic of a circular path progressing counterclockwise. As will be explained subsequently with reference to FIG. 29a, the signs of equations 22, 24, and 26 will be different when the movement is clockwise.

Recapitulating the foregoing analysis of staggered circular interpolation given with reference to FIG. 25, movement is along two series of staggered chords. The first series of chords is represented by CH.sub.02 and CH.sub.24 in FIGS. 25b and 25f. The second series of chords is represented by CH.sub.13 in FIG. 25d. It is not exactly accurate to say that movement is along either one of the two series of chords. Rather, movement along the X axis is represented by the X coordinate of the first series of chords CH.sub.02 and CH.sub.24 and movement along the Y axis is represented by the Y components of the second series of chords. Furthermore, movements along the two series of chords are mutually time-staggered so that it is rather difficult to visualize the actual path covered by a controlled member whose movements along the X and Y axes are represented by the X and Y components of the first and second series of chords referred to.

To clarify the actual path in space defined by the X and Y components of the two series of chords, FIG. 26a shows a first series of macromove chords extending from point P.sub.0 to P.sub.7 whose X components .DELTA.X.sub.02, .DELTA.X.sub.24, .DELTA.X.sub.46 and .DELTA.X.sub.68 are the macromoves executed along the X axis during time periods T.sub.1 - T.sub.2, T.sub.3 - T.sub.4, T.sub.5 - T.sub.6 and T.sub.7 - T.sub.8, respectively. FIG. 26b, on the other hand, shows a second series of macromove chords, including a half chord extending from point P.sub.0 to P.sub.1 and three full chords extending from P.sub.1 to P.sub.3, P.sub.3 to P.sub.5 and P.sub.5 to P.sub.7. The Y components .DELTA.Y.sub.01, .DELTA.Y.sub.13 .DELTA.Y.sub.35 and .DELTA.Y.sub.57 of the respective macromove chords in the second series are executed during time periods T.sub.1, T.sub.2 - T.sub.3, T.sub.4 - T.sub.5 and T.sub.6 - T.sub.7, respectively.

The composite of the motions represented by FIGS. 26a and 26b is shown in FIG. 26c which is a plot of the points P.sub.0 through P.sub.7 having the X and Y coordinates shown in FIGS. 26a and 26b. Because of the greatly exaggerated scale, the plotted points P.sub.0 through P.sub.7 in FIG. 26c visibly deviate from a true circle. Thus, the chords drawn in FIGS. 26a and 26b appear significantly spaced from the arcs upon which they lie. Under normal cutting conditions, however, adjacent ones of the points P.sub.0 through P.sub.7 would be less than 0.01 inches apart and the points P.sub.0 through P.sub.7 in FIG. 26c would be extremely close to a true circle.

b. Assuming that Components of Only a Single Radius Vector are Given

The foregoing explanation of staggered circular interpolation given with reference to FIG. 25 was based on the assumption that the initially available data would include the inverse X component I.sub.0 of the radius R.sub.0 and the inverse Y component J.sub.1 of the radius vector R.sub.1. This assumption was made in order to simplify the initial detailed explanation of staggered circular interpolation. Normally, however, the components I.sub.0 and J.sub.1 would not be available. Instead, it may be expected that the starting data will comprise both inverse components I.sub.0 and J.sub.0 of a single radius vector R.sub.0. In accordance with yet another specific aspect of the present invention, a process is provided for deriving from the inverse X and Y components I.sub.0 and J.sub.0 the inverse Y component J.sub.1, thus yielding the quantities which were assumed to have been given in the previous analysis.

Referring to FIG. 27, prior to time period T.sub.1 first and second sets of signals respectively representing the inverse X and Y components I.sub.0 and J.sub.0 of the starting radius vector R.sub.0 are produced. The signals representing I.sub.0 are processed to derive therefrom signals numerically representing the quantity I.sub.0.sup.. .DELTA.D/R. From FIG. 27 it may be seen that I.sub.8 0.sup.. .DELTA.D/R represents twice the Y component .DELTA.Y.sub.01 of the chord shown in FIG. 27 to extend over a distance .DELTA.D, from the point P.sub..sub.-1 to the point P.sub.1 on the circle.

As the next step in deriving J.sub.1, the signals representing 2 .DELTA.Y.sub.01 and J.sub.0 are processed so as to derive from them signals numerically representing the quantity J.sub.0 - .DELTA.Y.sub.01. The resulting signals represent to a very close approximation the desired Y axis component J.sub.1. A slight error is involved in this process due to the fact that .DELTA.Y.sub.01 would have to be subtracted from j.sub.0, which is the Y coordinate distance from the center of the chord in FIG. 27 to the center C of the circle, in order that the result be exactly J.sub.1. By subtracting .DELTA.Y.sub.1 from J.sub.0 instead, an error which is equal to J.sub.0 - j.sub.0 is introduced. This error, however, is negligible and is visible in FIG. 27 only because of its greatly exaggerated scale.

2. Staggered Circular Interpolation as Carried Out by the System of FIG. 9

a. In General:

The numerical control system of FIG. 9 is operative in the mode to be described hereinafter to cause relative motion between two machine members along a circular path. The elements of the system which are of particular significance in carrying out this function include first and second storage means, shown as the .DELTA.X register 109 and the .DELTA.Y register 107. By means which include the digital computer 53, a first series of numbers are stored in the first storage means at regularly spaced intervals .DELTA.T. Respective ones of these numbers represent the X coordinate distances between a first series of equidistant points P.sub.0, P.sub.2 and P.sub.4 on a circle as shown in FIGS. 25a-f. Additional means also including the computer 53, are provided for storing in the .DELTA.Y register 107 a second series of numbers at regularly spaced intervals .DELTA.T' which are staggered symmetrically with, but are of the same duration as the time intervals .DELTA.T. Respective ones of the latter numbers represent the Y coordinate distances between a second series of equidistant points P.sub.1, P.sub.3 and P.sub.5 on the circle. As seen in FIGS. 25a-f, the points P.sub.1, P.sub.3 and P.sub.5 are staggered symmetrically with, but spaced the same distance apart as the points P.sub.0, P.sub.2 and P.sub.4.

The object of generating the two series of numbers is, of course, to provide successive macropositions which are to be reached along the X and Y axes during the respective time intervals .DELTA.T and .DELTA.T'. Toward this end, means are provided which are responsive to the numbers stored in the .DELTA.X register 109 for causing relative motion between the machine members during successive ones of the time intervals .DELTA.T corresponding to respective ones of the X coordinate distances represented by the successive numbers stored in the .DELTA.X register. Correspondingly, means are also provided which, in response to the numbers stored in the .DELTA.Y register 107 causes relative motion between the machine members during successive ones of the time intervals .DELTA.T' corresponding to respective ones of the Y coordinate distances represented by the successive numbers stored in the .DELTA.Y register.

b. The Form of Starting Data for a Circular Path Segment

Before going into further detail as to the system, consideration will be given first to the form of the data which will be assumed to have been provided by means of the punched holes on the tape 37. Referring to FIG. 3, the tape will include in the form of punched holes a pair of numbers representing the X and Y coordinates of the desired end point of the circular arc that is to be executed by the system. These coordinates are referred to as XEP and YEP when they are initially stored in the buffer registers 47X and 47Y and are referred to as XCEP and YCEP when subsequently stored in the active registers 95 and 97. Thus, the first two numbers in a data block given for a circular path segment have the same significance and are identified by the same symbols as the corresponding numbers in a data block for a linear path segment.

The next two numbers in a data block for a circular path segment are the I and J numbers. Although they are analogous to the corresponding numbers for a linear block in that they represent X and Y coordinate distances, the I and J numbers for a circular block are different in an important respect. Thus, the I and J numbers in a circular data block represent the X and Y coordinate distances from a given point on the circle to which they relate to the center of that circle. In actual practice successive path segments follow one another as shown in FIG. 2. Consequently, the starting point of a given segment will be the same as the end point of the previous segment. From this it follows that the I and J values of the starting radius vector of a circular path segment, that is, the X and Y coordinate distances from the initial point on the path segment to the center of the circle may be given in the form of the X and Y coordinates of the center of the circle. In this event, the system would be required to perform the additional step of deriving from the end point coordinate of the previous path segment and from the coordinates of the center of the circular path segment, the I and J values of the starting radius vector for that path segment. However, in order to simplify this description, it will be assumed, as in the case of a linear block, that the I and J values of the starting radius vector are given.

Concluding the data block for a circular path segment, the fifth and sixth numbers are the path designation "G" and the macromove quotient "Q" as in the case of a linear data block. As explained in a previous section, the G number will be 02 for a clockwise circular path, 03 for a counterclockwise circular path.

The significance of the macromove quotient Q was explained in detail with reference to FIG. 6 and is expressed by the equation (8a) there shown. In physical terms, the macromove quotient Q is equal to the ratio of a macromove chord .DELTA.D of a circular arc (see FIGS. 6a-6d) to the length of its radius vector. Stated as a very simple equation,

Q = .DELTA.D/R (27)

c. Generating Successive I, J, .DELTA.X and .DELTA.Y Numbers

Assuming that a circular path segment is to be executed next by the system, the numbers included in the data block representing that segment will have been transferred from the tape 37 to the buffer registers 47 well before the need for that data arose. Toward the end of the execution of the path segment immediately preceding the circular path segment, the data related to the circular path segment is transferred from the buffer registers 47 to the active registers 57. In the exemplary system shown in FIG. 9, the I register 99 serves as a means for initially storing the number I.sub.0 representing the X coordinate distance from the starting point P.sub.0 on the circle to the center of the circle. Similarly, the J register 101 serves as the means for storing the corresponding J.sub.0 number.

As stated previously, the .DELTA.X and .DELTA.Y registers 109 and 107 serve to receive and store the .DELTA.X and .DELTA.Y numbers representing desired excursions along the X and Y axes. To derive the J.sub.1 component in the manner explained with reference to FIG. 27, first control means are provided for causing the computer 53 to multiply the initially stored number I.sub.0 by .+-. Q (+ if G.sub.02, - if G.sub.03). The result represents twice the desired initial extension of the circle along the Y axis and is stored in the .DELTA.Y register 107 as the first .DELTA.Y number.

Second control means are provided for causing the computer 53 to replace the initially stored J.sub.0 number with a new number J.sub.1 which is equal to the remainder of J.sub.0 less one-half of the stored 2 .DELTA.Y.sub.01 number. The second control means also serves to cause the computer to multiply the resulting sum by .+-.Q (- if G.sub.02, + if G.sub.03) and to store the product, representing .DELTA.X.sub.02, the first desired extension of the circle along the X axis, in the .DELTA.X register 109.

With the numbers I.sub.0 and J.sub.1 in the I and J registers 99 and 101, the starting conditions assumed in FIG. 25a have been attained. Ignoring initially the execution of the distances represented by the numbers .DELTA.Y.sub.01 and .DELTA.X.sub.02, third control means are additionally provided for causing the computer 53 to replace the initially stored number I.sub.0 with a new number I.sub.2, which is equal to the remainder of I.sub.0 less the stored first number .DELTA.X. This third control means is also operative to cause the computer to multiply the resulting sum by .+-.Q (+ if CW, - if CCW) and to store newly (that is, as the new .DELTA.Y number) the resulting product (after having picked up the previous remainder YR), representing the next desired extension of the circle along the Y axis, in place of the stored first number .DELTA.Y. The operations initiated by the third control means are represented by the vector diagrams and equations appearing in FIGS. 25c and 25d.

To replace the stored number J.sub.1 in the J register 101 with the remainder of that number less the newly stored number .DELTA.Y, to multiply this remainder by Q, and to store newly the resulting product (allowing for remainders), representing the next desired extension of the circle along the X axis, in place of the stored first number .DELTA.X in the .DELTA.X register 109, fourth control means are provided, which are effective to cause the computer 53 to carry out each of the necessary operations. Furthermore, each of the third and fourth control means is operative to repeat its assigned series of functions a predetermined time after the other has carried out its assigned series of functions, so that .DELTA.X and .DELTA.Y numbers are newly stored alternatively and repeatedly.

The succession of .DELTA.X and .DELTA.Y numbers are utilized in the generation of the circle by means operative to extend the circle along the Y axis by amounts corresponding to one-half the first .DELTA.Y number and successive ones of the newly stored .DELTA.Y numbers and along the X axis by amounts corresponding to the first .DELTA.X number and successive ones of the newly stored .DELTA.X numbers. The extension of the circle is physical but may be either in the form of electrical position command signals or in the form of mechanical movement either of a single machine component along two axes relative to a stationary machine component or in the form of relative movement between two components moved at right angles to one another. In the exemplary system, extension of the circle is executed both electrically, in the form of macroposition signals developed by the computer 53 and stored in the XCP register 117 and YCP register 115 and mechanically, by movement of the machine element 14 by means of the servo drives 75 and 77.

The foregoing description of some of the concepts underlying staggered circular interpolation and of the manner in which these concepts are carried out by the system of FIG. 9 was based on the diagrams of FIGS. 25a-f which show a circular path which is generated in a counterclockwise direction. The following detailed description will be patterned on the assumption that it is the path segment 27c shown in FIG. 2 which is being generated. In effect, the ensuing description will be a continuation of the previous detailed description relating to the generation and execution of the linear path segment 27b. That description had progressed, in section G. 2. d (8), to the end of the linear block which was reached either at the end of time period .DELTA.T1000 or .DELTA.T1001. Let it be assumed that the end point was reached at the end of time period .DELTA.T1000. If it were also assumed that the path segment following path segment 27b is also to be linear, then the iteration shown in FIG. 17 would be performed during .DELTA.T1000. That is, during the time period .DELTA.T1000 the system would operate in mode 4 and would execute, in 10 substantially equal micromoves, the last of the ten adjusted macromoves which were computed during time period .DELTA.T990. In the present case, however, where the path segment 27c is to be circular, the iteration carried out after the last of the FIG. 22 type of iterations is different from that shown in FIG. 17 and appears in FIG. 28.

The iterations carried out in accordance with FIGS. 17 and 28 are very similar. Both of them are directed to executing the last adjusted macromoves along the X and Y axes for the preceding linear path segment. They also resemble one another in that during both iterations data is transferred from buffer registers 47 to the active registers 57 in order to permit their use in computing the macromoves .DELTA.X and .DELTA.Y for the following path segment; linear in the case of FIG. 17, and circular in the case of FIG. 28.

The FIG. 28 type iteration differs from the FIG. 17 type iteration in that, the computations shown in the last two columns of FIG. 28 are for deriving the initial macromoves for a circular path in contrast to the corresponding operations shown in the last two columns of FIG. 17, which represent operations for deriving the initial macromoves for a linear path.

As shown in FIG. 20, a FIG. 28 type of iteration may follow either a series of upwardly adjusted macromoves, which has been assumed to be the case, or a series of downwardly adjusted macromoves which are represented by the lower series of FIG. 22 iterations, the last of which occurs during time period .DELTA.T1000.

The steps involving transfer of data from buffer to active, shown to occur during column 4600 of FIG. 28, is the same as explained previously with reference to Table 1 and need not be repeated here. The first series of operations which are characteristic of FIG. 28 are those which occur during column 4800. These are shown in detail in Table II of section G. 2. a. (2)(a) to which reference shall again be made.

d. Data Processing Steps Performed Prior to the Generation of Signals Representing a Circular Path

The first series of steps 4817 (G.sub.02 + G.sub.03) through 4864 (G.sub.02 + G.sub.03) is directed to deriving the number 2 .DELTA.Y.sub.01 (see FIG. 27). This is obtained by multiplying I by Q (where Q = .DELTA.D/R) and storing the product in the .DELTA.Y register 107 and in the Y remainder register 111. Ignoring the sign of the product I.sup.. Q initially, it may be confirmed by comparison of the first and third columns of Table II that the steps performed during steps 17 through 64 of column 4800 (G.sub.02 + G.sub.03) are essentially the same as the corresponding steps performed during column 4800.sup.. G.sub.01. The steps 4817-4864 (G.sub.02 + G.sub.03) associated with circular interpolation differ from the steps 4817.sup.. LIN - 4864.sup.. LIN principally in that the multiplicand is read from the I register 99 rather than from the J register 101. This difference is reflected by condition 9 in the PGA 400 associated with the I register 99, showing that a READ gating signal will be applied to that register during step 4818, provided that either a G.sub.02 or a G.sub.03 signal appears at the outputs of the G buffer decoder 221 in FIG. 9k. The corresponding condition 9 for PGA 391 of the J register 101 is not realized because it requires the presence of a G.sub.01 signal at the output of the decoder 221, which occurs only when the following path segment is to be linear.

The product of the multiplication performed during steps 17 through 64 in column 4800 (G.sub.02 + G.sub.03) is written into the .DELTA.Y register 107 and the YR register 111 during steps 68 through 71 in exactly the same manner as described previously with reference to column 4800.sup.. G.sub.01. Briefly, the product of I.sup.. Q is split into two parts, with the four lowest order digits being stored in the YR register 111 and the other four digits being stored in the .DELTA.Y register 107. Again, the same gating and control signals are utilized to carry out these steps as were used for performing the corresponding steps for a linear path segment and need not be referred to again. The following operation, however, does not find its counterpart in the computations performed for a linear path. It relates to computing - 0.5 .DELTA.Y in order to derive the required starting component J.sub.1 in the manner explained previously with reference to FIG. 27. From FIG. 27 it will be recalled that the initially computed .DELTA.Y macromove number is referred to as 2 .DELTA.Y.sub.01, so that, in effect, the operation amounts to advancing the initially provided J.sub.0 component by 0.5 (2 .DELTA.Y.sub.01).

The first step in the process is to clear the Answer Register 53a during step 4873 (G.sub.02 + G.sub.03) and this is in response to an appropriate control signal from the PGA 351 (condition 19). During the same program step and during the following four program steps 4874-4877 (G.sub.02 + G.sub.03) the 2 .DELTA.Y.sub.01 number stored in the .DELTA.Y register 107 is subtractively read into the computer 53 five times by means of five READ gating signals applied to the register by its associated PGA 415 (condition 16) and by means of five subtract control signals applied to the computer 53 by the SX PGA 479 (condition 10).

During the following step 4878 (G.sub.02 + G.sub.03) the contents of the Answer Register 53a, representing - 5(2 .DELTA.Y.sub.01) are shifted one position to the right in response to a control signal from the PGA 411 (condition 30). This effectively causes the number in the Answer Register to appear as - 0.5(2 .DELTA.Y.sub.01). The J.sub.0 number stored in the J register 101 is read into the computer 53 during the next time period 4879 (G.sub.02 + G.sub.03) in response to a READ gating signal from PGA 391 (condition 3) and is automatically added by the computer to the - 0.5(2 .DELTA.Y.sub.01) stored therein. The result, J.sub.0 - 0.5 (2 .DELTA.Y.sub.01) = J.sub.0 - .DELTA.Y.sub.01, appears in the register 53a during program step 4880 (G.sub.02 + G.sub.03) and is written into the J register as the number J.sub.1 by a WRITE gating signal from its PGA 357 (condition 3).

Summarizing the operations performed thus far, following the entering of a circular block into the active registers 57, the first .DELTA.Y number, representing twice the desired initial extension along the Y axis, was derived from I.sub.0 and Q and using the .DELTA.Y number and the initially provided number J.sub.0, the number J.sub.1 was calculated and stored in the J register 101. As explained previously with reference to FIG. 25b, the number J.sub.1 is required to derive the first X axis macromove number .DELTA.X.sub.02 and the steps for achieving this are shown in column 4900 (G.sub.02 + G.sub.03) of Table II.

The initial steps carried out during steps 4918-4971 (G.sub.02 + G.sub.03) correspond almost exactly to the steps performed during the corresponding steps 4918-4971 .sup.. G.sub.01 in preparation for computing the .DELTA.X macromove number for the linear path segment 27b. The principal difference is that, instead of I the multiplicand is J so that, to transfer the multiplicand to the computer 53 a gating signal is applied to the J register 101 during step 4918 (G.sub.02 + G.sub.03) from the PGA 391 (condition 10). The number thus transferred is J.sub.1 and is multiplied by Q, with the product appearing in the Answer Register 53a after the program step 4964 (G.sub.02 + G.sub.03). The product is then split into two parts and stored in the .DELTA.X register 109 and the XR register 113. There are now stored in the .DELTA.X register 109 and the .DELTA.Y register 107, appropriate macromove numbers for initiating generation of the first pair of macroposition numbers corresponding to the X and Y coordinates of the point P2.

Reference will now be made to a further provision which differentiates circular interpolation from linear interpolation. It is directed to selecting the proper sign for the multiplicand I or J depending upon whether the desired circular path is to progress clockwise or counterclockwise. The rule governing the selection of sign may be easily derived by referring to FIGS. 29a and 29b. They are vector diagrams showing the signs of I, J, .DELTA.X and .DELTA.Y in all four quadrants during the generation of a circle either clockwise (FIG. 29a) or counterclockwise (FIG. 29b).

As shown in FIG. 29a, when a circular path is generated clockwise, the sign of J is always opposite the sign of .DELTA.X. On the other hand, the sign of I is seen to be always the same as the sign of .DELTA.Y. Consequently, in view of equations (18) and (19), whenever the circular path is to progress clockwise, -J and +I should be used in order that .DELTA.X and .DELTA.Y have the proper sign.

The relative signs of I and .DELTA.Y are the exact opposite and the relative signs of J and .DELTA.X are the same when the circular path to be generated is to progress counterclockwise, and this is shown in FIG. 29b. Thus, during all four quadrants, I and .DELTA.Y are of opposite sign, while J and .DELTA.X are of the same sign. Therefore, when performing equations (18) and (19) the number J is used without a modification, but the number I is provided with a minus (-) sign. However, the I and J numbers still carry their own signs as part of the numbers.

In other portions of this specification and in certain of the claims the process of giving the I or J number a negative significance before multiplying it by Q is expressed in terms of multiplying the I or J number by -Q for the sake of brevity. These of course are fully equivalent expressions, since giving a number a negative significance is equivalent to multiplying it by -1.

The foregoing rules for selecting the sign of the multiplicand I or J are also indicated in FIG. 28 and require no further comment. The appropriate control signals for implementing these rules are indicated by conditions 13 and 14 in the Program Gate Array 479 as shown in FIG. 9c. Thus, when the I multiplicand number is read into the computer during step 4818, a control signal directing the computer 53 to attach a negative significance to that number will be applied to the computer if a G.sub.03 signal is produced by the GBUF decoder 221 in FIG. 9k; in other words, if the path to be interpolated is counterclockwise. Similarly, when the J multiplicand is read into the computer 53 during step 4918, a control signal is applied to the computer 53 directing it to attach a negative significance to that number if a G.sub.02 signal is produced by the decoder 221; that is, if the path to be interpolated is clockwise.

With the numbers .DELTA.X.sub.02, 2 .DELTA.Y.sub.01, I.sub.0 and J.sub.1 stored in the registers 109, 107, 99 and 101 and with the G number transferred to the G active register 105 during steps 4973-4974 (G.sub.02 + G.sub.03 ) the tape reader may be started during program step 4995 (G.sub.02 + G.sub.03) in order to transfer to the buffer registers 47 the data relating to the next path segment 27d in FIG. 2. Following this, the End of Block Counter 186 is advanced from its count state S14 which it had reached during the last of the FIG. 22 iterations through count states S15, S16 into count state S1 in the manner explained previously with reference to the corresponding program steps 4997.sup.. G.sub.01 - 4999.sup.. G.sub.01 in Table II. The last change in the count state of the End of Block counter 186 causes the system to switch over from its mode 4 operation into mode 1 in which the AND gates 175 of the Multi Mode Time Base Logic 67 in FIG. 9d are enabled. The operations comprising the iteration of the system in mode 1 when performing circular interpolation are shown in FIG. 31. Before turning to FIG. 31, however, reference will first be made to FIG. 30 to illustrate the physical significance of the steps performed thus far.

e. A Physical Representation of Macromoves and Micromoves Generated During the Initial Portion of a Clockwise Circular Path Segment

FIGS. 30a and 30b show in detail the macromoves and micromoves executed during the initial iterations of the circular path segment 27c. Thus, it will be understood that the initial point P.sub.0 in FIGS. 30a-b corresponds to the point P.sub.2 of the circular path segment 27c in FIG. 2. Furthermore, each of the time periods .DELTA.T associated with a complete iteration such as that which appears in FIG. 31 is shown as two time periods, such as T.sub.1 and T.sub.2 in FIGS. 30a and 30b. Thus, the first iteration .DELTA.T1001 associated with the execution of the path segment 27c is shown in FIGS. 30a and 30b as the time periods T.sub.1 and T.sub.2.

From the starting data, comprising the I.sub.0 and J.sub.0 components of the starting radius R.sub.0, there was computed the macromove quantity 2 .DELTA.Y.sub.01 which was subsequently used to derive the J.sub.1 component of the radius vector R.sub.1. The J.sub.1 component was then used to compute during the steps shown in column 4900 of FIG. 28 the first macromove number .DELTA.X.sub.02 which appears in FIG. 30b. Thus, at the end of the iteration shown in FIG. 28, which corresponds to time period .DELTA.T1000 in FIG. 20, and just prior to the time period T.sub.1 shown in FIGS. 30a-b, there are stored in the .DELTA.X and .DELTA.Y registers the numbers representing the required excursion along the Y axis to reach the Y coordinate of the point P.sub.1 and the required excursion along the X axis to reach the X coordinate of the point P.sub.2. Stored in the J register 101 is the J.sub.1 number and stored in the I register 99 is the number I.sub.0.

This, then, represents the state of the data at the start of time period .DELTA.T1001. Physically, the preceding linear path segment 27b has just reached P.sub.0 in FIGS. 30a-b and the next type of iteration, illustrated generally in FIG. 31 performed first during time period .DELTA.T1001 and repeated many times during the following time periods, is ready to begin.

f. Data Processing Steps and Operations Performed by the System in Mode 1 While Executing a Circular Path Segment

1. Y Axis Data Used for Updating YSC Register Changes Midway Through an Iteration Due to Staggering

A comparison between FIG. 31, representing a typical iteration during staggered circular interpolation, with FIG. 18 representing the corresponding iteration during simultaneous linear interpolation reveals certain organizational similarities. First, as in FIG. 18, two strips extend horizontally across the top of FIG. 31, representing the updating of the XSC and YSC registers 121 and 119. These operations are identical with those performed during linear interpolation.

Although the updating operations during circular interpolation are the same as those performed during linear interpolation, there is a difference, due to the staggered nature of circular interpolation according to the invention, in the data which is being processed. From the detailed explanation of linear interpolation with reference to FIG. 18, it will be recalled that the updating of the XSC register 121 was done on the basis of the .DELTA.X macromove number which was generated before the start of the iteration and which was valid for the entire iteration shown in FIG. 18. This is also the case with staggered circular interpolation. Thus, the .DELTA.X.sub.02 number which was computed during the 4900 column of FIG. 28 is truly the macromove to be executed during the time periods T.sub.1 and T.sub.2 shown in FIG. 30b to which the time period .DELTA.T1001 of the first of many FIG. 31 iterations corresponds.

It was seen then, that the macromove data used to update the XSC register 121 remains the same for an entire circular iteration, just as in the case of linear interpolation. The same is not true, however, for the data used for updating the YSC register 119. This is so because the initially computed macromove number 2 .DELTA.Y.sub.01 is only valid for the Y axis up to the Y coordinate of point P.sub.1 which is to be reached during the first half of the iteration shown in FIG. 31. Indeed, only half of this number, .DELTA.Y.sub.01 is utilized, this half representing the desired Y coordinate distance from the point P.sub.0 to the point P.sub.1. Therefore, a new .DELTA.Y macromove number must be computed for the updating of the YSC register 121 during the column 1500 of FIG. 31 and for the following nine updatings of that register. This "new" .DELTA.Y macromove number is then used as the basis for updating the YSC register 121 during the second half of the FIG. 31 iteration in which it is computed and for the first half of the following FIG. 31 iteration. This staggered arrangement is reflected in FIG. 31 by using two update strips side-by-side, each extending across five columns of the FIG. 31 chart under the single strip representing the updating of the XSC register 119 and extending across all 10 columns of the FIG. 31 chart.

The generation of the first pair of micropositions for the X and Y axes, as well as the subsequent micropositions during the FIG. 31 iteration, may be explained with reference to Table III. Each of the steps performed in accordance with that table, to which detailed reference was made in section G. 2. b. are also performed during staggered circular interpolation. Thus, during the first five steps of column 1000 of the FIG. 31 iteration, the XSC register 121 is updated by dividing the number .DELTA.X.sub.02 by 10 and adding the resulting quotient, 0.1 .DELTA.X.sub.02, to the microposition number then in the XSC register (X.sub.0). To update the YSC register 119, the number 2 .DELTA.Y.sub.01 in the .DELTA.Y register 107 is divided by 10 during the following five program steps, and the result, 1/5 .DELTA.Y.sub.01, is added to the number (Y.sub.0) in the YSC register. Since the number (Y.sub.0) represents the Y coordinate of the Point P.sub.0, the updated microposition number, Y.sub.0 + 1/5 .DELTA.Y.sub.01 represents the Y coordinate of the first microposition to be reached during the FIG. 31 iteration, and is so identified in FIG. 30a. During each of the subsequent columns 1100-1800 of the FIG. 31 iteration, the XSC microposition number is updated by 0.1 .DELTA.X.sub.02 and during the last column 1900 it is conformed to the upgraded XCP number which is X.sub.0 + .DELTA.X.sub.02. Similarly, during each of the four columns 1100-1400 the YSC microposition number is updated by 0.2 .DELTA.Y.sub.01, the last such update yielding a YSC microposition number which is Y.sub.0 + .DELTA.Y.sub.01.

2. Upgraded YCP Number Modified During Iteration Using New .DELTA.Y Macromove Number

Another significant difference between the iterations shown in FIGS. 31 and 18 lies in the manner in which the upgrading of the XCP and YCP registers 117 and 115 is carried out. In the case of linear interpolation, it will be recalled from FIG. 18 that the XCP and YCP registers are upgraded substantially concurrently, near the beginning of the iteration, with numbers which represent the macroposition which is to be reached at the end of the iteration. In the case of linear interpolation, such upgrading operations were seen to have a dual purpose. First, the upgraded XCP and YCP numbers are used as a preliminary step in the look-ahead process, whereby a prediction is made of the point expected to be reached at the end of the 11th macromove following the iteration during which the test is made. A second purpose of the upgrading operation was seen to be to provide numbers accurately representing the macroposition to be reached at the end of the iteration, numbers which can be used in the last updating of the XSC and YSC registers.

The upgrading of the XCP and YCP registers 117 and 115 in carrying out circular interpolation have a similar two-fold purpose. The XCP and YCP upgrading in the FIG. 31 iteration starts out in exactly the same manner as that carried out in a FIG. 18 operation for a linear interpolation. That is, the XCP register 117 is upgraded during steps 10-12 of the 1000 column and the YCP register 115 is upgraded during the steps 12-14. These steps are shown in detail in Table III. The number XCP.sub.0 + .DELTA.X.sub.02 which is stored in the XCP register after the upgrading accurately represents the X coordinate X.sub.2 of the macroposition P.sub.2 which will be reached at the end of the iteration. The same is not true, however, of the number which will be stored in the YCP register after it has been upgraded. The reason for this is that, to upgrade the number in the YCP register, the macromove number 2 .DELTA.Y.sub.01 stored in the .DELTA.Y register 107 is used; that is, the macromove number 2 .DELTA.Y.sub.01 is added to the previous macroposition number Y.sub.0 stored in the YCP register. However, the .DELTA.Y macromove number so used applies only up to the fifth microposition that is generated during the FIG. 31 iteration, that one which is produced during column 1400. For the following five micropositions of that iteration and for the first five micropositions of the following iteration, a new .DELTA.Y number representing the Y axis macromove .DELTA.Y.sub.13 must be computed which, it will be seen, is done during column 1400 of the iteration after the updating of the XSC and YSC registers.

The upgraded number Y.sub.0 + 2 .DELTA.Y.sub.01 which is in the YCP register 115 during column 1000 of the first FIG. 31 iteration is sufficiently accurate for purposes of the look-ahead process performed subsequently during that column. It is not sufficiently accurate, however, for deriving the macroposition number during column 1900 of the iteration. Consequently, means are provided for correcting the upgraded macroposition number in the YCP register 115 as soon as the new .DELTA.Y macromove number .DELTA.Y.sub.13 becomes available during the FIG. 31 iteration under consideration.

The manner in which this is carried out will be understood more readily if the upgrading of the number Y.sub.0 in the YCP register during the column 1000 is thought of as projecting the number Y.sub.0 presently in the YCP register ahead by the full macromove 2 .DELTA.Y.sub.01. Then, recognizing that only the first half of the projection 2 .DELTA.Y.sub.01 is correct and that the second half is in error, it may be seen that a correction can be effected by retracting the point which had been projected forward by the full macromove 2 .DELTA.Y.sub.01 by one-half of that macromove; that is, .DELTA.Y.sub.01, and by then projecting forward again by one-half of the newly computed macromove .DELTA.Y.sub.13 which is truly applicable to the second half of the FIG. 31 iteration.

To retract the point which had been projected forward by a full macromove 2 .DELTA.Y.sub.01 during column 1000, the number in the upgraded YCP register is "downgraded" by one-half (2 .DELTA.Y.sub.01) during column 1300; that is, one-half of the "old" .DELTA.Y number 2 .DELTA.Y.sub.01 is subtracted therefrom. Then, after the "new" number .DELTA.Y.sub.13 has been computed during column 1400 of the FIG. 31 iteration, one-half of that number is added to the "downgraded" YCP number, thereby again upgrading it by one-half .DELTA.Y truly to represent the Y coordinate (Y.sub.0 + .DELTA.Y.sub.01 + 1/2 .DELTA.Y.sub.13) of the macroposition P.sub.2 to be reached at the end of the iteration (see FIG. 30a).

Reference will now be made to Tables VI and VI A which show in detail all of the steps characteristic of the FIG. 31 iteration with the exception of the operations performed during the first 13 steps in each of the 10 columns comprising the iteration, these being shown in Table III. ##SPC8## ##SPC9##

The first operation, which will be described with reference to Table VI will be the "downgrading" and subsequent upgrading of the YCP register during columns 1300 and 1500 of a FIG. 31 iteration. For a reason similar to that which caused a YR register 111 to be provided to store the four least significant digits of the .DELTA.Y macromove number a YCPR register 116 is provided to store the least significant digit of the upgraded YCP macroposition number, with the other five digits of the number being stored in the YCP register 115.

Continuing to assume that the FIG. 31 iteration under discussion is that which corresponds to the time periods T.sub.1, T.sub.2 in FIGS. 30a-b, the number in the YCP register 115 after its upgrading during column 1000 will represent the Y coordinate of the point P.sub.0 projected forward; that is, upward by the macromove 2 .DELTA.Y.sub.01. Algebraically, it is YCP.sub.0 + 2 .DELTA.Y.sub.01. The first step, then, to correct this number during column 1300 is to subtract one-half of the macromove number, .DELTA.Y.sub.01, therefrom. Toward this end, during step 1315, the five highest order digits of the YCP number, which is YCP.sub.0 + 2 .DELTA.Y.sub.01 are transmitted from the YCP register 115 to the computer 53 in response to a READ gating signal from its associated PGA 425 (condition 5). These digits become stored in digit stages 2-8 of the Answer Register 53a during the following program step 1316.sup.. CIRC and are shifted one position to the left by a control signal from PGA 463 (condition 4). This frees stage 8 of the Answer Register 53a to receive the lowest order digit of the YCP number from the YCPR register 116 during program step 1317.sup.. CIRC. The appropriate READ gating signal is applied to the YCPR register 116 by a program gate 489 through an OR gate 491. It will be noted that the highest order digit of the YCP number, which normally resides in digit stage 2 of the Answer Register 53a, is now in digit stage 1 of the Answer Register so that, in effect, the number presently in the Answer Register 53a is 10(YCP.sub.0 + 2 .DELTA.Y.sub.01).

In order to subtract half of the .DELTA.Y number 2 .DELTA.Y.sub.01 from the inaccurately upgraded macroposition number YCP.sub.0 + 2 .DELTA.Y.sub.01, the entire number 2 .DELTA.Y.sub.01 is subtracted five times from the number 10(YCP.sub.0 + 2 .DELTA.Y.sub.01) in the Answer Register 53a, giving the result 10(YCP.sub.0 + .DELTA. Y.sub.01). This result is then simply divided by 10, giving the "downgraded" macromove number YCP.sub.0 + .DELTA.Y.sub.01. Accordingly, the macromove number 2 .DELTA.Y.sub.01 is subtractively read from the .DELTA.Y register 107 into the computer 53 five times, once during each of the program steps 1318.sup.. CIRC - 1322.sup.. CIRC. The READ gating signals required are represented by condition 14 of program gate 415 associated with the .DELTA.Y register 107 and by condition 5 of the SX PGA 479 in FIG. 9c. The result, 10(YCP.sub.0 + .DELTA.Y.sub.01) appears in the Answer Register 53a during program step 1323.sup.. CIRC.

The lowest order digit of the result is transmitted from digit stage 8 of the Answer Register 53a to the YCPR register 116 during program step 1323.sup.. CIRC by a WRITE gating signal applied to the register 116 by a program gate 493 through an OR gate 495. The remaining five digits of the result are shifted toward the right from stages 1-7 to stages 2-8 during program step 1324.sup.. CIRC in response to an appropriate control signal from the PGA 411 (condition 24). Thus, the lowest order digit of the number 10(YCP.sub.0 + .DELTA.Y.sub.01) has been stored in the YCPR register 116 and the remaining digits have been effectively divided by 10 so that what is stored in the Answer Register 53a during program step 1325.sup.. CIRC are the first five digits of the number YCP.sub.0 + .DELTA.Y.sub.01. These digits are transferred during the same program step to the YCP register 115 by a WRITE gating signal applied to the register from PGA 427 (condition 12). Thus, the number in the YCP register 115 has been "downgraded" to the middle of the FIG. 31 iteration and accurately represents the Y coordinate YCP.sub.0 + .DELTA.Y.sub.01 of the macroposition P.sub.1 which is to be reached at the end of the first half of the FIG. 31 iteration; that is, at the end of the time period T.sub.1 in FIG. 30.

During the following column 1400 of the FIG. 31 iteration, the new macromove number for the Y axis, .DELTA.Y.sub.13, is derived and becomes available toward the end of column 1400. It is used during column 1500 to upgrade the "downgraded" macromove number in the YCP register to the value representing the Y coordinate of the point P.sub.2 that is to be reached at the end of the FIG. 31 iteration. This is carried out by adding to the "downgraded" number YCP.sub.0 + .DELTA.Y.sub.01 in the YCP register 115 half of the new macromove number .DELTA.Y.sub.13, producing the correct result, YCP.sub.0 + .DELTA.Y.sub.01 + 0.5 .DELTA.Y.sub.13. That this result is correct may be confirmed from FIG. 30a.

Turning to Table VI, the first step is to transmit the first five digits of the number YCP.sub.0 + .DELTA.Y.sub.01 from the YCP register 115 to the computer 53. This occurs during program step 1515.sup.. CIRC and is done by applying a READ gating signal to the YCP register 115 from the PGA 425 (condition 6). The seven digits are transferred from digit stages 2-8 to digit stages 1-7 of the Answer Register 53a during the following program step 1516.sup.. CIRC by a control signal from the PGA 463 (condition 5). The sixth and least significant digit of the number YCP.sub.0 + .DELTA.Y.sub.01 is transmitted from the YCPR register 116 to the computer 53 and, in particular, to its digit stage 8 during program step 1517 by a READ gating signal applied to the YCPR register from a program gate 497 through the OR gate 491. The number now stored in the Answer Register 53a is 10(YCP.sub.0 + .DELTA.Y.sub.01). During the following five program steps 1518.sup.. CIRC - 1522.sup.. CIRC the new macromove number .DELTA.Y.sub.13 is added five times to the number in the Answer Register 53a by a succession of five READ gating signals represented by condition 15 of the PGA 415 associated with the .DELTA.Y register 107. The result, 10(YCP.sub.0 + .DELTA.Y.sub.01 + 0.5 .DELTA.Y.sub.13), appears in the Answer Register 53a during program step 1523.sup.. CIRC. Its lowest order digit is transferred from digit stage 8 of the Answer Register 53a to the YCPR register 116 during the same program step by application of a WRITE gating signal to the register from its associated program gate 499 through the OR gate 495. The remaining seven digits are shifted one position to the right from digit stages 1-7 of the Answer Register 53a during the following program step 1524.sup.. CIRC by a shift control signal from PGA 411 (condition 25). Consequently, during program step 1525.sup.. CIRC the digits appearing in stages 2-8 of the Answer Register 53a represent the highest order digits of the number YCP.sub.0 + .DELTA.Y.sub.01 + 0.5 .DELTA.Y.sub.13. These digits are transmitted during the program step 1525.sup.. CIRC to the YCP register 115 by application of a WRITE gating signal to that register from its associated PGA 427 (condition 4). This completes the second upgrading of the YCP number in the YCP register 115 so that it now represents correctly the Y coordinate of the point P.sub.2 to be reached at the end of the FIG. 31 iteration (See also FIG. 30a).

3. Computing the New .DELTA.Y Macromove Number

Attention will now be directed to the specific steps carried out to compute the new Y axis macromove number .DELTA.Y.sub.13. Referring first to FIG. 31, and in particular to column 1400 thereof which is taken to occur just before the time period T.sub.2 in FIG. 30, the first task is to derive from the .DELTA.X.sub.02 number in the .DELTA.X register 109 and from the I.sub.0 number stored in the I register 99 the I.sub.2 component of the radius vector R.sub.2 shown in FIG. 30a. As may be seen from FIG. 30a and recalling the previous discussion with reference to FIGS. 25c and 25d, the value I.sub.2 will be required to compute the quantity .DELTA.Y.sub.13. This operation is referred to in FIG. 31 as "upgrading I by substracting .DELTA.X." Thus, it may be confirmed by reference to FIG. 29a that, when a circular path is to be generated clockwise, the macromove component .DELTA.X must be subtracted from the I component in order that the change in the latter be in the right sense. Taking as an example the fourth quadrant, both I and .DELTA.X are positive. Whatever the angular position of the radius vector with which a given I component is associated, as that radius vector is advanced clockwise, its I component must diminish. Clearly, then, subtraction of .DELTA.X will yield the correct result. The same is true for a circular path which is to be generated counterclockwise, as may be seen from FIG. 29b. Taking the first quadrant as an example, the .DELTA.X and I vectors are both negative. Again, regardless of the angular position of the radius vector, as it is rotated counterclockwise, its I component must shrink; that is, it must be a smaller negative number. Consequently, the subtraction of the negative .DELTA.X number from the negative I number will result in a smaller negative number for the I component.

To subtract .DELTA.X.sub.02 from I.sub.0, I.sub.0 is transmitted from the I register 99 to the computer 53 during program step 1415.sup.. CIRC by a READ gating signal from PGA 400 (condition 6). During the following program step 1416.sup.. CIRC, the .DELTA.X.sub.02 number is subtractively read into the computer 53 from the .DELTA.X register 109. To this end, a READ gating signal is applied to the .DELTA.X register 109 during program step 1416.sup.. CIRC from its associated PGA 409 (condition 13) and a subtract control signal is applied to the computer 53 from its associated PGA 479 (condition 6). The result, I.sub.0 - .DELTA.X.sub.02, appears in the Answer Register 53a during program step 1417.sup.. CIRC and is transmitted to the I register 99 as the upgraded or new I component number I.sub.2 by the application of a WRITE gating signal to the I register 99 from its PGA 355 (condition 1).

With the desired I component number I.sub.2 in the I register 99, the next operation is to derive the quantity .DELTA.Y.sub.13 = I.sub.2.sup. . .DELTA.D/R. It will be recalled that (.DELTA.D/R) = Q, which is stored in the Q register 103. Consequently, the computation is simplified to I.sub.2.sup. . Q and is seen in FIG. 31 to occur during program steps 1417.sup.. CIRC - 1464.sup.. CIRC. Specifically, with reference to Table VI, the Q number is read into the computer 53 from the Q register 103 during program step 1417.sup.. CIRC by a gating signal from its PGA 389 (condition 2) after clearing of the Answer Register 53a by a control signal from the PGA 351 (condition 10). The upgraded I.sub.2 number is transmitted to the appropriate storage register in the computer 53 from the I register 99 by a READ gating signal applied to the register from its PGA 400 (condition 7) during the following program step 1418.sup.. CIRC. During the same program step, a "multiply" control signal is applied to the computer 53 from its PGA 393 (condition 1). It should be noted that, since the path being generated is clockwise, the I.sub.2 number used for the subsequent multiplication process is to be positive, in keeping with the rules developed with reference to FIG. 29. Had the illustrated path been progressing in a counterclockwise direction, the I number would have been read into the computer 53 with a sign reversal, caused by an SX control signal, as indicated by condition 11 in PGA 479 of FIG. 9c.

The operation I.sub.2.sup.. Q is completed by the computer 53 during program step 1464 shown in Table VI-A and the result appears in the Answer Register 53a during program step 1465.sup.. CIRC.

The following operations which are carried out during steps 1465.sup.. CIRC - 1471 .sup.. CIRC are the same as those shown to occur during steps 1865.sup.. LIN - 1871 .sup.. LIN, as discussed previously with reference to FIG. 18 and Table IV-A. By means of these operations any number in the YR register 111 is added to the product I.sub.2.sup. . Q, the first four digits of the sum are stored as the number .DELTA.Y.sub.13 in the .DELTA.Y register 107 and the four least significant digits in the YR register 111. The necessary control and gating signals are indicated by condition 1 of the SL4 PGA 347, condition 2 of the RYR PGA 399, condition 1 of an SR4 PGA 501 in FIG. 9c, condition 2 of the W/.DELTA.Y PGA 395, condition 1 of the "ZR1 + ZR2" PGA 397, condition 4 of the SL4 PGA 347 and condition 1 of the W/YR PGA 398.

Having computed the macromove number .DELTA.Y.sub.13 during the 1400 column of the FIG. 31 iteration, that number is used for three purposes, some of which have already been explained. First, the macromove number .DELTA.Y.sub.13 is used during the next column 1500 and during each of the following four columns of the present FIG. 31 iteration and during the first four columns of the following FIG. 31 iteration to generate successive Y axis microposition numbers by repeated updatings of the YSC register 119. This is performed during steps 05, 06 and 10 of each of the columns 1500 - 1800 and 1000 - 1400 of the iteration as shown in Table III, by dividing the macromove number .DELTA.Y.sub.13 by 10 and successively adding the quotient to the number stored in the YSC register.

The second purpose for which the number .DELTA.Y.sub.13 is used is to upgrade the number in the YCP register 115 to the value which it is to have at the end of the FIG. 31 iteration. This was explained in the immediately preceding sections. The third purpose for which the number .DELTA.Y.sub.13 is used is to upgrade the component number J.sub.1 which is presently in the J register 101 by subtracting from that number the macromove number .DELTA.Y.sub.13. By inspection of FIG. 30a, it may be seen that the result will be J.sub.3 ; that is, the Y component of the point P.sub.3. It is this component which is necessary to compute

The upgrading of the component number J.sub.1 and the subsequent computation of the new macromove number .DELTA.X.sub.24 required for the following FIG. 31 iteration is performed during the 1900 column of the current FIG. 31 iteration; that is, toward the end of time period .DELTA.T1001. The first step in the sequence, performed during program step 1915.sup.. CIRC is to transmit the number J.sub.1 from the J register 101 to computer 53 by means of a READ gating signal from its associated PGA 391 (condition 1). The new macromove number .DELTA.Y.sub.13 is then read subtractively into the computer 53 from the .DELTA.Y register 107. The necessary gating and subtract signals are indicated by condition 17 of the R/.DELTA.Y PGA 415 and condition 7 of the SX PGA 479. The result, J.sub.3 = J.sub.1 - .DELTA.Y.sub.13 appears in the Answer Register 53a during the following program step 1917.sup.. CIRC and is transmitted to and stored in the J register 101 during that program step by application to the register of a WRITE gating signal from its associated PGA 357 (condition 1).

This completes the upgrading of the J vector component so that, in effect, there is now stored in the J register 101 the inverse Y component of the radius vector R.sub.3 which has been "advanced" from P.sub.1 to P.sub.3. Next, the Answer Register 53a is cleared during program step 1917.sup.. CIRC by a control signal from CAR PGA 351 (condition 11) and the multiplier Q is entered by a control signal from the R/Q PGA 389 (condition 4). The multiplicand J.sub.3 is entered into the computer during program step 1918.sup.. CIRC from the J register 101 by a gating signal from its PGA 391 (condition 2). The circle being generated is clockwise; therefore, a -J.sub.3 must be used and consequently the J.sub.3 number is read into the computer 53 subtractively, as indicated by condition 12 of the SX PGA 479. With the multiplicand -J.sub.3 just written into the appropriate storage device in the computer 53 and with the multiplier Q stored in its associated storage device in the computer, the multiplication process -J.sub.3 . Q is initiated during program step 1918.sup.. CIRC by a "multiply" control signal represented by condition 2 of the X PGA 393. The multiplication process -J.sub.3.sup. . Q is carried out during the ensuing program steps 1918.sup.. CIRC - 1964.sup.. CIRC indicated in Tables VI and VI-A. The product, -J.sub.3.sup. . Q, appears in the Answer Register 53a during the next program step 1965.sup.. CIRC. During program steps 1965.sup.. CIRC - 1971.sup.. CIRC, any digits stored in the XR register 113 are added to the product. The resulting eight-digit number in the Answer Register 53a is split into two parts. These parts are stored in the .DELTA.X register 109 as the macromove number .DELTA.X.sub.24, and in the XR register 113 as the "remainder" of .DELTA.X.sub.24 in the same manner as described previously with reference to steps 1965 - 1971 of Table IV-A.

In executing the clockwise circular path segment 27c, the system repeats the FIG. 31 iteration many times. Thus, during the following time period .DELTA.T 1002 the I.sub.2 component number is upgraded to I.sub.4 = I.sub.2 - .DELTA.X.sub.24 and, using the new I.sub.4 component number, the next Y axis macromove number .DELTA.Y.sub.35 = I.sub.4.sup. . Q is computed during column 1400, or, with reference to FIG. 30, just before the end of time period T.sub.3. The new macromove number .DELTA.Y.sub.35 is then executed at substantially uniform speed and in ten substantially uniform increments during time periods T.sub.4, T.sub.5. Subsequently, during column 1900 of the second FIG. 31 iteration, the component J.sub.3 is upgraded to J.sub.5 = J.sub.3 - .DELTA.Y.sub.35, this occurring just before the end of the time period T.sub.4 in FIG. 30. The new component number J.sub.5 is then used to compute the next macromove number .DELTA.X.sub.46 = -J.sub.5 .sup.. Q which is executed during time periods 5 and 6 shown in FIG. 30, again in ten equal increments due to the periodic updating of the XSC register.

g. The Particular Advantages of a Two-Level Interpolation Process in Generating a Circular Path Segment

It should be noted in connection with linear interpolation that the .DELTA.X and .DELTA.Y macromove numbers need not be computed newly for each successive iteration as the linear path segment is being generated, provided there were the means for extremely fine resolution, i.e., the remainder is insignificant. Therefore, it would have been theoretically possible in the case of linear interpolation to use a single level interpolation in which the .DELTA.X/10 and the .DELTA.Y/10 micromove numbers would have been computed during the initial FIG. 17 iteration simply by carrying out the computations J.sup.. Q/10 and I.sup.. Q/10. In other words, linear interpolation could be carried out by computing micromoves and micropositions only and without the intermediate computation of macromoves and macropositions. In the case of circular interpolation this situation is significantly different. As the circular path is being generated, the macromove numbers .DELTA.X and .DELTA.Y continually change. Thus, it is impossible initially to compute a pair of macromove numbers .DELTA.Y and .DELTA.Y or a pair of micromove numbers .DELTA.X/10 and .DELTA.Y/10 which can then be used for the entire process. To the contrary, it is apparent from FIGS. 30a and 30b that the distance to be covered during a given time period .DELTA.T continually changes along both axes. But to compute each successive micromove and microposition by multiplying a radius vector component I or J by the number Q would put very heavy demands upon a computer. On the other hand, to compute only macromoves .DELTA.X and .DELTA.Y and macropositions XCP and YCP would result in the generation of relatively widely spaced-apart points and a surface which would not be sufficiently smooth for all purposes. It is here then, that the two-level interpolation process is used to the best advantage. The relatively lengthy process of J.sup.. Q and I.sup.. Q is carried out only for deriving the macromove numbers .DELTA.X and .DELTA.Y and the much simpler process of dividing each new macromove number .DELTA.X and .DELTA.Y by 10 and adding the result to the microposition numbers stored in the XSC and YSC registers 121 and 119 is used for deriving the intermediate micropositions.

h. Terminating the Circular Path Segment

(1) Macromoves are not Adjusted and the Path Segment is not Necessarily Reached at the End of an Iteration

In several respects the manner in which a circular path segment is terminated in accordance with the present invention is similar to that discussed previously in connection with terminating a linear path segment. During each time period .DELTA.T look-ahead signals are produced representing the projected fast axis coordinate of the point which is expected to be reached along the circular path segment during a following time period. These look-ahead signals are compared with signals representing the corresponding coordinate of the designated End of Point of the path segment and a warning signal is produced during the first time period in which the comparison indicates that the fast axis coordinate represented by the look-ahead signals had passed the corresponding coordinate of the designated end point. Furthermore, as with a linear path segment, a determination is also made during each time period .DELTA.T of the extent of the projected overrun. If the fast axis coordinate represented by the look-ahead signals is more than one-half macromove past the corresponding coordinate of the End Point of the path segment an auxiliary signal is produced. Movement along the circular path segment is terminated at the end of the time period .DELTA.T preceding the particular time period for which an overrun has been predicted to occur if both a warning signal and an auxiliary signal were produced; that is, if the projected overrun was predicted to exceed one-half macromove. Movement is terminated at the end of the particular time period for which an overrun is predicted to occur if only the warning signal was produced; that is, if the projected overrun was predicted not to exceed one-half macromove.

When the path terminating process described briefly in the preceding paragraph is performed for a linear path in combination with the adjustment of macromoves in order to hit the End Point exactly, it becomes necessary to predict an overrun condition several time periods .DELTA.T in advance in order to leave a sufficient number of such time periods in which to compute and execute the adjusted macromoves. In the termination process shown to be carried out by the exemplary system for a circular path segment, adjustment of macromoves is not used. Instead, the macromoves continue to be computed on the basis of the originally supplied data and an overrun or an underrun is permitted to occur; that is, if the path segment is terminated at the end of the time period for which an overrun was predicted to occur, that overrun will actually occur. Similarly, if the path segment is terminated during the immediately preceding time period, the path will have been terminated short of its designated End Point, thus causing an underrun. This may cause a small error to be introduced into the interpolation process performed for the following path segment which may in certain circumstances be tolerable. In this event, the following path segment is permitted to commence on the basis of the original data provided therefor. The resulting error will be in the nature of an offset.

In other circumstances, the offset which would result from terminating the circular path segment at the end of a time period .DELTA.T without a correction may be intolerable. For use of the system in such situations an entirely different mode of correction is provided to compensate for failure of the preceding path segment to terminate on its prescribed End Point exactly. This correction, by which some of the data representing the following path segment is modified, is shown incorporated in the exemplary system and described in detail hereinafter in Sections H.2.k, lfor sake of completeness only. It is not claimed herein but is claimed, instead, in a separate application Ser. No. 762,836 filed by Arthur O. Fitzner for DATA PROCESSING METHOD FOR MINIMIZING POTENTIAL ERRORS OCCURRING DURING LINEAR AND CIRCULAR INTERPOLATION on Sept. 26, 1968

2 Proximity to the End Point Must be Tested for Both Axes

The operations connected with predicting a projected overrun and determining its magnitude are generally shown in FIG. 31 in column 1000. They correspond to a similar series of operations performed during a typical macromove in the course of simultaneous linear interpolation and shown in column 1000 of FIG. 18. The first operation is to upgrade the numbers in the XCP and YCP registers 117 and 115 to the macroposition values which are to be reached at the end of the iteration represented by FIG. 31. This represents a prediction of the positions along the X and Y axes which will be reached by the path segment, or by an element which is moved along that path segment, by the end of the time period .DELTA.T. Following this, a determination is made as to which of the X and Y axes is the fast axis so that the forward projection toward the End Point might be made along that axis. The test based upon comparison of a forward projected point along the fast axis with the corresponding coordinate of the designated End Point for the path segment is not sufficient, however, by itself, to give an unambiguous indication of a projected overrun of the designated End Point, The reason for this may be seen in FIG. 32. It shows movement along a path segment clockwise in the second and first quadrants toward a designated End Point whose X and Y coordinates are XCEP and YCEP. The End Point in FIG. 32 is in the top half of the 1st quadrant so that the X axis is the fast axis; that is, motion along that axis is at a higher rate than along the Y axis.

Consequently, the look-ahead signals are produced for the X axis and it is on the basis of a comparison of those signals with the signals representing the coordinate XCEP that a projected overrun is detected. In the case assumed in FIG. 32 the results of such a test would be correct because with motion along the path segment progressing clockwise and with the Y coordinate YCEP of the designated End Point being in the first quadrant, an overrun would, in fact, occur.

Let it be assumed instead, however, that the designated end point has the coordinates XCEP/YCEP' so that it falls in the fourth quadrant, as shown in FIG. 32. In such a case, a comparison of the look-ahead signals along the fast axis with the corresponding coordinate XCEP of the designated end point would, by itself, give a misleading result because it would indicate, (correctly) that the end point XCEP/YCEP' was about to be reached along the X axis, and this would be interpreted by the system (incorrectly) as an indication that the end point is about to be reached along the Y axis as well. To eliminate a false indication of proximity to the End Point, a preliminary test is performed by the exemplary system to determine whether or not the path segment has progressed along the slow axis to within the vicinity of the designated path End Point.

3 Testing for Proximity of the Path Segment to its Designated End Point Along the "Slow" Axis

In accordance with the related invention, to confirm that a circular path segment such as that shown in FIG. 32 has extended past its designated End Point rather than the mirror image of that point, a special test is performed. Specifically, along with each projection forward of a fast axis macroposition coordinate, a pair of slow axis coordinates are produced which "bracket" an adjacent slow axis macroposition coordinate. More particularly, in accordance with a feature of the present invention during each iteration a one-macromove look-ahead projection is made from the fast axis macroposition coordinate XCP toward the fast axis End Point coordinate XCEP. Additionally, in accordance with the related invention which is not claimed herein, and with particular reference to FIG. 32, a pair of points PL1 and PL2 are produced which are a small distance above and below the Y axis macroposition coordinate YCP for the iteration. The points PL1 and PL2 may be rapidly derived by respectively adding and subtracting the absolute value of 0.1J to and from the coordinate value YCP, yielding YCP+0.1J for the point PL1 and YCP -0.1J for the point PL2. In other words, the "size of the bracket" along the slow axis is chosen to be 0.2J. If YCEP, the slow axis End Point coordinate is within the bracketed range; that is, if it is less than YCP+0.1J and greater than YCP -0.1J, the slow axis test is satisfied, indicating that the specified End Point is, in fact, being approached. Consequently, if the fast axis look-ahead test indicates an overrun, it will be interpreted by the system as an actual projected overrun of the designated End Point. It may be said, therefore, that, in addition to looking ahead along the fast axis a probe is also cast to either side in order to determine whether an End Point is about to be reached.

4 Testing for a Projected Overrun by the Path Segment of its Designated End Point Along the "Fast" Axis

Following the proximity test for the slow axis, the previously predicted macroposition for the end of the current time period .DELTA.T is projected forward by one macromove so that, in effect, the resulting signals represent the point which will be reached along the fast axis at the end of the following iteration. This point is then compared with the corresponding coordinate of the prescribed end point for the path segment by a "compute overrun" operation. If a projected overrun is in fact detected and if the prior check of the slow axis revealed that the path segment is in the vicinity of the slow axis coordinate of the prescribed End Point, the End of Block Counter 186 is advanced to its second, S2 state, as in the case of the linear path segment. The forward projection of the macroposition along the fast axis is then "retracted" by one-half macromove, again as in the case of linear path segment, and a second comparison is made with the corresponding coordinate of the prescribed End Point to determine whether or not a projected overrun condition still exists. If it does, it means that, were another FIG. 31 iteration to be performed during the following time period, the resulting overrun along the fast axis would exceed one-half macromove along that axis. In that event, the End of Block Counter 186 is advanced another step to its third count state.

(5) Typical Iterations for Terminating a Circular Path Segment

FIG. 31 represents a typical iteration performed during the generation and execution of signals representing points along a circular path segment before an overrun has been detected. Consequently, the blocks in column 1000 relating to the advancing of the End of Block Counter are crossed out, since the events which bring this about do not occur during a typical iteration. An iteration during which a large projected overrun is detected, causing the End of Block Counter 186 to be advanced from its first count state S1 through its second count state S2 to its third counter state S3, is represented by FIG. 33 wherein the blocks in column 1000 showing these events appear without crosses therein.

In the situation shown by the FIG. 33 iteration; that is, where a large overrun has been detected, the path segment is to be terminated during the time period immediately preceding the time period for which such an overrun was predicted. Since the overrun predicted during the FIG. 33 iteration is for the following time period, the path segment must be terminated at the end of the FIG. 33 iteration and during the same iteration the basic computations required to convert the I, J and Q data for the next block into macromove numbers must be carried out. Consequently, during the FIG. 33 iteration the system must be changed from mode 1 to mode 4 operation and this is indicated by the designation of the last four columns of the FIG. 33 iteration as 4600, 4700, 4800 and 4900.

As will be described in greater detail, the set of calculations performed during the last four columns 4600 - 4900 of the FIG. 33 iteration are those required if the following path segment is to be linear. FIG. 34 shows an iteration identical to that shown in FIG. 33, except that the computations performed during its last four columns 4600 - 4900 are those that are required when the following path segment is circular.

FIG. 35 illustrates what happens during an iteration in which a small overrun is detected; that is, during which the End of Block Counter 186 is only advanced to its second count state as indicated by the fact that the last block in the 1000 column of the FIG. 35 iteration is crossed out. The only detail in which the FIG. 35 iteration (during which a small overrun is detected) varies from the FIG. 31 iteration (during which no overrun is detected) is in that, during the FIG. 35 iteration, the End of Block Counter is advanced from count state 1 to count state 2. All of the other computations which are performed during the FIG. 35 iteration are exactly the same as those carried out during the FIG. 31 iteration. In the flow chart of FIG. 20 each of the alternative iterations illustrated in FIGS. 33, 34, and 35 is shown to occur during time period .DELTA.T 2500. This is simply an arbitrary time selected for sake of example and agrees generally with the length of the circular path segment 27c relative to the length of the preceding linear path segment 27b in FIG. 2.

The events which occur during the iteration which follows one in which a small overrun was detected, that is, a FIG. 35 iteration, are shown in FIG. 36. This iteration, shown in FIG. 20 to occur during time period .DELTA.T 2051, is characterized by advancement of the End of Block Counter 186 during the 1000 column to its third count state S3 as a direct result of the advancement of the counter 186 to its second count state S2 during the preceding FIG. 35 iteration.

The consequence of stepping the counter 186 to its third count state S3 during the initial portion of the FIG. 36 iteration is seen to be the same as its advancement to that count state during a FIG. 33 iteration. Thus, the system is caused to switch over to its mode 4 operation at the end of the 1500 column of the iteration, as indicated by the designations 4600, 4700, 4800 and 4900 of the last four columns. During these four columns, set-up calculations are carried out which are identical to those performed during the corresponding columns of the FIG. 33 iteration, those required where the following path segment is to be a linear one. If, on the other hand, the next path segment is to be circular, the computations which are performed during columns 4600 - 4900 are those shown in FIG. 37, which is also shown in FIG. 20 to occur during time period .DELTA.T 2501.

Summarizing the foregoing general discussion of typical iterations for terminating a circular path segment with reference to FIGS. 33 through 37, FIGS. 33 and 34 show what takes place during a time period in which a large overrun is detected. The set-up calculations performed during the last two columns, 4800 and 4900, of these iterations, are those required to begin execution of a linear and a circular path segment respectively. Thus, the computations shown to be carried out during the last two columns on the FIG. 33 iteration are exactly the same as those previously discussed with reference to the corresponding columns of FIG. 17. Similarly, the computations which are carried out during the last two columns of the FIG. 34 iteration are exactly the same as those explained previously with reference to FIG. 28.

FIG. 35 illustrates what happens during an iteration in which a small overrun is detected and, except for advancement of the End of Block Counter 186 from its count state S1 to its count state S2, all of the steps performed during this iteration are the same as those carried out during the FIG. 31 iteration. Finally, FIGS. 36 and 37 show the events which take place during the time period immediately following that in which a small overrun was detected. The two Figures differ from FIGS. 33 and 34 only in the manner in which the End of Block Counter 186 is advanced to its third count state in column 1000.sup.. CIRC. Otherwise, all of the computations carried out during the FIG. 36 iteration are exactly those performed during the FIG. 33 iteration and the same identity prevails between a FIG. 37 and a FIG. 34 iteration.

i. Data Processing Steps Directed to Detecting a Projected Overrun by Testing for Proximity to the End Point Along Both Axes

In the following discussion, reference will again be made to Tables VI and VI-A, which were referred to previously in Section H.2.f.(2).

The first columns of Tables VI and VI-A, taken one after the other and labeled 1000.sup.. CIRC, represent in detail the operations performed during column 1000 of each of FIGS. 31 through 37, with the small variations which exist between the corresponding columns of the several Figures being indicated in the Tables. It will be assumed initially that the steps are performed as part of a FIG. 31 iteration; that is, that an overrun has not been detected.

1. Determining the Fast Axis

During the first 15 steps of the 1000.sup.. CIRC column of Table VI, the XSC and YSC registers 121 and 119 and the XCP and YCP registers 117 and 115 are updated and upgraded as explained previously with reference to Table III. The possible advancement of the End of Block Counter 186 during step 14 does not occur because the counter was not previously advanced to its second, S2, count state. During the following two program steps 1015.sup.. CIRC and 1016.sup.. CIRC, the J and I component numbers are transmitted to the computer 53 from the J and I registers 101 and 99 in order to determine which of them is larger; i.e., along which axis movement is to be at a higher rate. The READ gating signals causing the J and I numbers to be so transmitted are indicated by condition 4 of R/J PGA 391 and condition 3 of R/I PGA 400. Concurrently with transmission of the number I to the computer 53, a compare-instruct signal is applied to the computer from the "FP and CX" PGA 453 (condition 3). If the first of the two numbers transmitted to the computer 53 is greater than or equal to the second, that is, if J is greater than or equal to I, the FAX flip-flop 455 is preset, indicating by a logic 1 voltage level on its FAX output that motion along the X axis is to be equal to or faster than along the Y axis. If the contrary is true and J is less than I, the flip-flop is reset and a logic 1 voltage level on its FAX output indicates that the rate of motion along the Y axis is greater than the rate of motion along the X axis.

It will be observed that the order in which I and J are transmitted to the computer 53 is the reverse of that in which they were transmitted during a linear macromove. The reason for this is that in the case of circular interpolation the size of a macromove along the X axis is proportional to J and not to I as in the case of linear interpolation. Similarly, the Y axis macromove .DELTA.Y in the case of circular interpolation is proportional to I instead of J. Consequently, whereas in generating linear path segments movement on the X axis is faster than along the Y axis if I is greater than J, the reverse applies when the path segment being generated is circular.

2. Proximity Test for the Slow Axis

With the identity of the fast axis and, therefore, of the slow axis determined, the next operation is aimed at checking the slow axis for proximity to the End Point in accordance with the process described previously with reference to FIG. 32. In implementing this feature there are generated for a selected one of the X and Y axes first and second digital signals representing first and second spaced apart coordinates which are respectively farther from and nearer to the origin of the axes than the corresponding coordinate of the path segment; in the present instance, the upgraded XCP and YCP number. A determination is then made as to whether or not the corresponding coordinate of the designated End Point for the selected one of the axes, XCEP and YCEP, lies between the first and second spaced apart coordinates.

More specifically, the signals representing the first of the spaced apart coordinates along the selected one of the two axes are compared with the signals representing the corresponding End Point coordinate, and an upper bracket signal is produced and stored if the comparison indicates that the End Point coordinate lies between the origin of the two axes and the first coordinate. Furthermore, the digital signals representing the second of the pair of spaced apart points along the selected one of the two axes are also compared with the signals representing the corresponding coordinate of the End Point and a lower bracket signal is produced and stored if it is found that the second coordinate lies between the origin and the corresponding End Point coordinate. The proximity test along the slow axis is satisfied if both the upper and lower bracket signals have been stored.

To store the upper bracket and lower bracket signals, an upper bracket flip-flop UBFF 503 and a lower bracket flip-flop LBFF 505 are provided. They comprise the principal components of the Storages for Slow Axis End Point Proximity Test unit 71" in FIG. 9e.

The first step in checking the slow axis for proximity to the End Point is to clear the Answer Register 53a by means of a control signal from the CAR PGA 351 (condition 7). During the same time period the J number is transmitted to the computer 53 from the register 101 if the X axis is the fast axis and the I number is so transmitted if the X axis is not the fast axis. In other words, the inverse radius vector component along the slow axis is read into the computer. This is the first step in forming the absolute number .vertline.0.1J .vertline.or .vertline.0.1I.vertline.. The means for applying the necessary READ gating signal to the appropriate one of the I and J registers 99 and 101 are indicated by condition 4 of the R/I PGA 400 and by condition 7 of the R/J PGA 391. In order to insure that the number read from one of the registers 99 and 101 is treated as an absolute value, i.e., so that its sign is disregarded, a Force Positive control signal is concurrently applied to the computer 53 from the "FP and CX" PGA 453 (condition 1).

As a result of the operations performed during step 1018.sup.. CIRC, at the end of the adder cycle associated with that step there is stored in the Answer Register 53a the quantity .vertline.J .vertline.if the X axis is the fast axis and the quantity .vertline.I .vertline.if the Y axis is the fast axis. In order to divide by 10 the absolute value stored in the Answer Register 53a, it is shifted one position to the right during the following step 1019 by a control signal applied to the computer from the SAR PGA 411 (condition 19). The number now stored in the Answer Register 53ab is therefore .vertline.0.1J.vertline.or .vertline.0.1I.vertline., depending upon the identity of the slow axis. In preparation for receiving the results of the slow axis proximity test the UBFF and LBFF flip-flops 503 and 505 are reset during the same program step 1019.sup.. CIRC by means of a common program gate 507.

To produce the signals representing the upper bracket coordinate, which is farther from the origin than the corresponding coordinate of the path segment, the absolute value .vertline.0.1J .vertline.or .vertline.0.1I.vertline. is added to the corresponding coordinate of the path segment, YCP or XCP, yielding as the end result YCP + 0.1J if the Y axis is the slow axis. Accordingly, during program step 1020.sup.. CIRC the macroposition number YCP is read into the computer 53 from the YCP register 115 if the X axis is the fast axis and the corresponding number from the XCP register 117 is so read if the Y axis is the fast axis. The necessary READ gating signals for these alternative operations appear in Program Gate Arrays 425 and 421 as the condition 4. The resulting coordinate number YCP + .vertline.0.1J.vertline. or XCP + .vertline.0.1I.vertline. is shifted one position to the right during program step 1021.sup.. CIRC by a control signal, represented in SAR PGA 411 as condition 20, in order to bring it into alignment with the corresponding coordinate of the designated End Point YCEP or XCEP with which the upper bracket coordinate number is to be compared.

The computer is placed in the compare mode during program step 1022.sup.. CIRC by a control signal from the "FP and CX" PGA 453 (condition 4) and during the same program step the End Point coordinate corresponding to that built up in the Answer Register 53a during the preceding steps is transmitted to the computer 53 for comparison therewith from one of the registers XCEP and YCEP 95 and 97, as indicated by condition 4 in each of the Program Gate Arrays 359 and 487.

Let it be assumed that the path segment and its designated End Point are as shown in FIG. 32, and that therefore movement along the Y axis is the slower. Accordingly, during program step 1022.sup.. CIRC the end point coordinate number YCEP is compared with the upper bracket coordinate YCP + .vertline.0.1J.vertline., shown in FIG. 32 as the point PL1. Means are provided to produce an upper bracket signal if the End Point coordinate YCEP lies between the upper bracket coordinate YCP + .vertline.0.1J.vertline. and the origin. Serving as a means for carrying out this function is the comparison circuitry of the computer 53 which produces a "greater than or equal to" signal at its output 339 if the first of the compared quantities, YCP + .vertline.0.1J.vertline., is greater than or equal to the second of the compared quantities, YCEP. To store this signal the output line 339 of the computer 53 is connected to the J input of the UBFF flip-flop 503 through a program gate 509 whose other inputs are conditioned to transmit the signal appearing on the line 339 during program step 1023.sup.. CIRC. Accordingly, if the first test for proximity along the slow axis is satisfied, the upper bracket signal causes the flip-flop 503 to be set and is thus stored therein.

Continuing with the assumption that the Y axis is the slow axis, during step 1024.sup.. CIRC the Answer Register 53a is cleared by a signal from the CAR PGA 351 (condition 8) in preparation for the following part of the slow axis proximity test. During the same program step the inverse component number from the J register 101 is transmitted to the computer 53 by a READ gating signal from the R/J PGA 391 (condition 8). During the steps which follow, the J number thus read into the computer 53 is divided by 10 and then subtracted from the macroposition number YCP in order to produce the lower bracket signal representing the lower bracket coordinate shown in FIG. 32 as the point PL2. Consequently, a "force positive" signal is applied to the computer 53 from the "FP and CX" PGA 453 (condition 2) in order to cause the computer to ignore the sign of the J number. Additionally, a "Subtract" control signal is also applied to the computer from the SX PGA 479 (condition 15) in order to cause the computer 53 to treat the J number as a negative number. Accordingly, when subsequently the J number is divided by 10 and added to the macroposition coordinate number YCP the result will be YCP - .vertline.0.1J.vertline..

At the end of program step 1024.sup.. CIRC the number which is stored in the Answer Register 53a is - .vertline.J.vertline. and during the following program step 1025.sup.. CIRC this number is shifted one position to the right and thereby divided by 10 by means of a "Shift Accumulator Right" control signal from the SAR PGA 411 (condition 21). The result is - .vertline.0.1J.vertline.. The YCP macroposition number is additively read into the computer 53 during the following step 1026.sup.. CIRC from the YCP register 115 by means of a READ gating signal from the R/YCP PGA 425 (condition 10). The result of this operation is YCP - .vertline.0.1J.vertline.; i.e., the lower bracket coordinate point PL2 in FIG. 32.

A test is next performed to determine whether or not the coordinate point YCP - .vertline.0.1J.vertline. lies between the origin and the corresponding coordinate YCEp of the designated End Point of the path segment. Stated differently, a comparison is made between the lower bracket coordinate number YCP - .vertline.0.1J.vertline. and the corresponding End Point coordinate YCEP, and if the first of the compared quantities is the lesser, the test is satisfied. This test is shown is Table VI to occur during program step 1028.sup.. CIRC. Preparatory to this comparison operation the lower bracket coordinate number YCP - .vertline.0.1J.vertline. in the Answer Register 53ab is shifted one position to the right in order to bring its decimal point into alignment with the other of the compared quantities YCEP. This shift to the right occurs during program step 1027.sup.. CIRC in response to a control signal from the SAR PGA (condition 22).

During the next program step 1028.sup.. CIRC the computer 53 is placed in the compare mode by a control signal from the "FP and CX" PGA 453 (condition 5) and the YCEP End Point coordinate number is transmitted to the computer from the YCEP register 97 by a READ gating signal applied thereto by its associated R/YCEP PGA 487 (condition 5). If the "lower bracket" test represented by this comparison is satisfied, an output will appear at the "less than" output line 341 of computer 53 indicating that the lower bracket coordinate YCP - .vertline.0.1J.vertline. is closer to the origin than the designated End Point coordinate YCEP. This signal is applied to the lower bracket flip-flop 505 through a program gate 511 whose other inputs are conditioned to transmit the "less than" signal to the J input of flip-flop during program step 1029.sup.. CIRC. The flip-flop thus becomes set at the end of program step 1029.sup.. CIRC, storing the lower bracket signal, if the lower bracket test is satisfied.

Summarizing, if both of the tests carried out for proximity of the path segment to the designated End Point along the slow axis are satisfied, both of the flip-flops 503 and 505 become set and maintain UB and LB signals at their Q outputs indicative of their set condition. The system is now ready to perform the proximity test for the fast axis which has been assumed to be the X axis.

3. Proximity Test for the Fast Axis

The test which is performed during steps 1030.sup.. CIRC - 1043.sup.. CIRC during each of the iterations shown in FIG. 31-37 for detecting proximity to the designated End Point of a circular path segment along the fast axis is quite similar to the corresponding test performed during steps 1028.sup.. LIN - 1043.sup.. LIN during each of the iterations shown in FIGS. 18, 21, 23 and 24 for a linear path segment. In essence the only significant difference between the two tests is in the number of macromoves by which the position along the path segment is projected forward. For a linear path segment this forward projection was shown to be 11 macromoves. For a circular path segment the look-ahead is reduced to a single macromove. In view of these similarities reference should be made to the previously given detailed description of the two-step proximity test for the fast axis given in section G. 2. d(2) under the heading "Data Processing Steps Associated with Detecting a Projected Overrun." Briefly, with reference to Table VI and to FIG. 32, during step 1030.sup.. CIRC, Answer Register 53a is initially cleared by a signal from CAR PGA 351 (condition 9) and an X axis macromove number .DELTA.X is entered into the computer 53 from the .DELTA.X register 109 by a READ gating signal from the R/.DELTA.X PGA 409 (condition 12). From condition 12 of PGA 409 it is seen that the READ gating signal will issue only if the X axis is the fast axis. In the event that motion along the Y axis is faster, the .DELTA.Y number is read, as indicated by condition 12 of the R/.DELTA.Y PGA 415.

During step 1031.sup.. CIRC a WRITE Gating Signal is applied to the CP input of the ACNX flip-flop 465 of the Fast Axis Projected Overrun Detector 71 in FIG. 9e. This conditions the flip-flop 465 to be set if the sign of the .DELTA.X macromove number just entered into the computer 53 is negative and to be reset if the .DELTA.X number is positive. Since it is being assumed that the circular path in FIG. 32 is being generated and that the path is approaching the End Point XCEP, YCEP in the first quadrant, .DELTA.X is positive and ACNX flip-flop 465 is reset.

To produce the "look-ahead" number for the X axis, the upgraded macroposition number XCP is read into the computer 53 during program step 1032.sup.. CIRC from the XCP register 117 by a READ gating signal from the R/XCP PGA 421 (condition 3). Again it will be noted that condition 3 of PGA 421 includes the condition FAX so that the XCP number will only be read into the computer during step 1032.sup.. CIRC if the X axis is the fast axis. If this is not the case the number in the YCP register 115 is read instead, as indicated by condition three of the R/YCP PGA 425. The number stored at the end of the adder cycle associated with program step 1032.sup.. CIRC is XCP + .DELTA.X. Since XCP is the upgraded macroposition number which is to be reached at the end of the present iteration, the number XCP + .DELTA.X is the position that is to be reached along the fast axis at the end of the following iteration. This number is shifted one position to the right in the Answer Register 53a by a control signal from the SAR PGA 411 (condition 23) in order to align the decimal point of the look-ahead number with the decimal point of XCEP, the X coordinate of the End Point of the circular path. During step 1034.sup.. CIRC the End Point coordinate XCEP is subtractively read into the computer 53 by a READ gating signal applied to the XCEP register 95 from its associated R/XCEP PGA 353 (condition 1).

The sign of the remainder of the subtraction operation performed during step 1034.sup.. CIRC is applied to the AND gates 467 and 469 of the fast axis projected overrun detector 71. As indicated by the legends on the inputs of the AND gate and as explained previously in section G. 2. d. (2) (b), if the sign of the remainder is the same as the sign of the macromove number which was read into the computer 53 during step 1030.sup.. CIRC, the forward projected look-ahead point has passed the corresponding coordinate of the path End Point and this condition is indicated by an SST ("Same Sign Twice") signal appearing at the output 182 of the detector 71. The SST signal has the effect of advancing the End of Block Counter 186 by one count state during program step 1035.sup.. CIRC, but only if the prior proximity tests for the slow axis End Point yielded a positive result, as indicated by the UB and LB outputs from the UBFF and LBFF flip-flops 503 and 505, and (b) the Counter 186 was in state 1.

The means for producing a signal for advancing the End of Block Counter 186 under the aforesaid conditions is represented by condition 2 of the Program Gate Array 183. As indicated by the individual terms of the condition, such means would comprise coincidence gating means having eight inputs connected respectively to the 1000 output and the AND gate group 175 of the Multimode Time Base Logic 67 in FIG. 9d, the 30 output of the converter 169 and the 5 output of the converter 167 in the Time Base and Digital Sweep, the CIRC output of the Path Type Indicator 106, the UB and LB outputs of the flip-flops 503 and 505, the S1 output of the decoder 187 in the Time Base Mode Selector 69 and the SST output appearing on the output line 182 of the Fast Axis Projected Overrun Detector 71.

It will be understood that each listed condition in the PGA 183 represents such a coincidence gating means, also referred to herein as a "Program Gate," connected to receive the signals represented in that listed condition, and that the output of all of the coincidence gating means are connected to the respective inputs of a single OR gate in the manner shown in FIG. 15.

The next series of steps are directed to "retracting" the look-ahead point by one-half macromove in the same manner as explained previously in section G.2.d.(2)(c) with reference to a linear path. As described in that section, the number in the Answer Register 53a representing the look-ahead point is shifted to the left by two digit positions so as to give that number a "weight" of 10+ .DELTA.X) relative to the macromove number in the .DELTA.X register 109. This is caused to occur during program steps 1036.sup.. CIRC and 1037.sup.. CIRC by successive applications of Shift Left control signals from the SAL PGA 463 (conditions 2 and 3). During the following five program steps 1038-1042 the .DELTA.X macromove number is read subtractively into the computer 53 from the .DELTA.X register 109 by gating signals represented in the R/.DELTA.X PGA 409 by condition 14. The remainder produced in the Answer Register 53a during the adder cycle associated with program step 1042.sup.. CIRC is 10(XCP + 0.5.DELTA.X - XCEP), or 10 times the difference between the upgraded XCP macroposition projected forward by one-half macromove less the designated End Point coordinate XCEP for the path. In the context of the example shown in FIG. 32, if an overrun has occurred and it exceeded one-half macromove, the sign of the remainder in the Answer Register 53a will be positive. The sign of this remainder is applied to the AND gates 467 and 469 and if the sign is the same as that of the .DELTA.X macromove, indicating a projected overrun even with only a one-half macromove forward projection, an SST signal indicative of this condition will appear on the output line 182 of the detector 71 during program step 1042.sup.. CIRC. By means of a program gate represented by condition three in the Program Gate Array 183 a signal is produced on the output line 184 of the array 183 in response to the SST signal during program step 1043.sup.. CIRC if the End of Block Counter 186 was previously advanced to its S2 (second) count state, as indicated by a signal on the S2 output of the decoder 187.

During a typical iteration for generating a circular path segment as shown in FIG. 31, no overrun is detected and the End of Block Counter 186 remains in its first count state so that a signal appears only on the S1 output of the decoder 187. Consequently, the blocks in column 1000 of FIG. 31 which represent advancement of the End of Block Counter 186 are crossed out. If a sufficient number of FIG. 31 type iterations have been carried out so that the path segment closely approaches its End Point XCEP, YCEP and if the first test for proximity to the fast axis End Point indicates an overrun but the second test does not, the counter 186 is stepped to its second count state S2 but not its third, as shown in FIG. 35. In this case, the counter will be automatically advanced to its third count state, S3, during the following iteration during program step 1014.sup.. S2 by means of a stepping signal represented by condition 4 of the PGA 183. This situation is represented by FIGS. 36 and 37 which represent the last iteration for a circular path segment following an iteration in which a small overrun was detected.

If, on the other hand, both tests for the fast axis indicate an overrun condition, i.e., if the projected overrun is more than one-half macromove along the fast axis, the End of Block Counter 186 is stepped to its S3 (third) count state during the same iteration, as shown in FIGS. 33 and 34. In such event, set-up calculations for the following path segment are promptly carried out so that the current path segment may be terminated at the end of the iteration.

j. Data Processing Steps Directed to Changing Operation of the System From Mode 1 to Mode 4

To perform the setup calculation required to begin generation of the following path segment, the system must be placed in its fourth operating mode. It will be recalled that the exemplary embodiment of the system is placed in its fourth operating mode when the counter 186 reaches its count state S14. In the case of linear interpolation it was desirable to advance the End of Block Counter 186 by only one count state during each FIG. 22 iteration in order to carry out nine such iterations with adjusted macromoves. These intermediate iterations are not utilized with circular interpolation and, instead, it becomes desirable to switch the system over directly from mode 1 into its mode 4 operation during the iteration in which a large overrun is detected or during the iteration following that in which a small overrun has been detected. Consequently, means are provided for rapidly stepping the counter 186 from its S1 to its S14 count state during an iteration in which a large overrun has been detected, as shown in FIGS. 33 and 34 and to step it from its S2 to its S14 count state during the iteration following that in which a small overrun is detected, as shown in FIGS. 36 and 37. Means for rapidly advancing the End of Block Counter 186 to its fourteenth count state are indicated in the Program Gate Array 183 by conditions 5, 6 and 7-16.

To understand the manner in which the End of Block Counter 186 is rapidly stepped through several of its count states during a single iteration let it be assumed that a large projected overrun has been detected during time period .DELTA.T2500 so that the iteration is of the type shown in FIG. 33 or 34. The End of Block Counter 186 will have advanced to its S3 count state during step 1043.sup.. CIRC. By means of a program gate represented by condition 5 of the Program Gate Array 183 a further stepping signal will be applied to the End of Block Counter 186 during program step 1589.sup.. CIRC causing it to be advanced to its S4 count state which now puts the system in Mode 2. By means of another program gate, (PGA 183, condition 6), during the following program step, now 2590.sup.. CIRC, yet another stepping signal is applied to the counter 186 as a result of it having reached its S4 count state during the preceding program step, so that at the end of program step 2590.sup.. CIRC the End of Block Counter 186 is stepped to its S5 count state. This results in a signal on the S5 output of the decoder 187 so that an M3 output signal is produced at the output of the OR gate 190, putting the system in Mode 3. This M3 output signal is used as an input to each of nine further program gates represented by conditions 8-16 of the PGA 183. Each of these nine program gates are also conditioned by the CIRC output of the Path Type Indicator 106, by the 3500 output of the group of AND gates 179 in the Multi Mode Time Base Logic 67, and the 90 output of the converter 169 in the Time Base and Digital Sweep 63. Finally, respective ones of the nine program gates represented by the conditions 8-16 receive outputs one through nine of the Units Decoder 167 of the Time Base and Digital Sweep 53 so that respective ones of them produce an output signal during successive ones of the program steps 3591.sup.. CIRC - 3599.sup.. CIRC, provided the OR gate 190 of the Multi Mode Time Base Logic 69 continues to produce an M3 signal.

The last of the stepping signals produced by the program gates represented by conditions eight to 16 places the End of Block Counter 186 at count state S14. The S14 signal from the decoder 187 is passed through and appears at the output of the OR gate 191 of the Time Base Mode Selector 69 as an M4 signal, which is applied to the AND gates 181 of the Multi Mode Time Base Logic 67, placing the system in its mode 4 operation.

If it were assumed instead, that only a small projected overrun of the End Point had been detected during a given iteration, the End of Block Counter 186 would be advanced during that iteration to its S2 count state only, as shown in FIG. 35. However, during the following iteration, which might be either of the type illustrated in FIG. 36 or of the type shown in FIG. 37, the End of Block Counter would be stepped to its S14 count state.

k. The Reason for and Manner of Modifying the Data Representing the Next Path Segment

The operation to be described in this section is related to the generation of path segments in accordance with the present invention, but as indicated previously, it is claimed in the patent application Ser. No. 762,836 filed by Arthur O. Fitzner on Sept. 26, 1968 . In order to put this related feature in proper context certain features of the present invention will be summarized briefly. In accordance with the present invention a method and the system for performing that method have been described for moving a machine element or member at a controlled velocity along a series of path segments, any one of which may be either linear or circular. The starting point of each path segment is the same as the end point of the preceeding path segment, i.e., the path segments are contiguous.

Each path segment is represented by a block of data from which there are initially derived the X and Y components I and J of the path segment if it is linear and the X and Y coordinate distances I and J from the starting point of the path segment to its prescribed center if it is circular. Each block of data also includes the composite velocity at which movement along its associated path segment is to occur, expressed as the "macromove quotient"(V.sup.. .DELTA.T)/Dor(V.sup.. .DELTA.T)/R.

From each block of data there are derived, during respective ones of a series of equal time periods .DELTA.T, by a process called "interpolation," digital signals representing the X coordinates XCP of a series of points lying on the path segment and the Y coordinates YCP of a series of points lying on the path segment. During each of the time periods .DELTA.T the machine element or member is moved along the X and Y axes to a new XCP, and a new YCP coordinate. The distance .DELTA.X from a given XCP coordinate to the next XCP coordinate is so proportioned relative to the distance .DELTA.Y from the corresponding YCP coordinate to the next YCP coordinate that the composite motion of the element resulting from the respective motion through successive XCP and YCP coordinates will always be in the required direction to execute motion along the path segment. But there is no assurance that either coordinate of the end point of the path segment will coincide with the corresponding coordinate reached at the end of any one of the time periods .DELTA.T. Indeed, without some special provision, it is almost certain that, were the element to continue to move, eventually, during one of the time periods .DELTA.T one or both of the XCP and YCP coordinates to which the element is moved would lie past the corresponding coordinate of the end point of the path segment. Accordingly, movement of the element along the path segment is terminated at the end of that time period .DELTA.T for which a selected one of the XCP and YCP coordinates falls closest to the corresponding coordinate of the end point. This may cause the end of the actually executed path segment to fall short of, or extend past, the starting point of the following path segment.

Therefore, were the next path segment to be derived from its associated data block as originally provided, its originally prescribed direction would remain unchanged, but its starting point would be different due to the underrun or overrun of the preceding path segment. In short, the new path segment, if it is linear, or its center, if it is circular, would be offset by the amount of underrun or overrun of the preceding path segment.

In accordance with the related invention claimed in the application of Arthur O. Fitzner, the I and J values in the data block representing the following path segment are altered so as to change their composite vector until it extends between the actual end point of the preceding path segment and the prescribed end point or center of the following path segment, depending upon whether it is linear or circular. In the preferred method in accordance with this related feature, this is accomplished by modifying each of the I and J components of the next path segment by an amount which is equal to the underrun or overrun of the end point of the preceding path segment along the corresponding coordinate axis. For example, if the preceding path segment stops short of its prescribed end point by an amount .DELTA.X along the X axis and by an amount .DELTA.Y along the Y axis, then the I and J values for the following path segment, whether it be linear or circular, are modified to I+.DELTA.X and J+.DELTA.Y. If there is an overrun of .DELTA.X and .DELTA.Y instead, the I and J values are modified to I-.DELTA.X and J-.DELTA.Y.

Taking a specific example, let it be assumed that a large projected overrun was detected during time period .DELTA.T2500 and that the next path segment to be generated is linear. The iteration, therefore, is that shown in FIG. 33. Having detected during column 1000 of the iteration that the fast axis coordinate of the end point would be overrun by the end of the following iteration; i.e., during time period .DELTA.T2501, the system performs steps to terminate the current path segment at the end of the present iteration; that is, at the end of time period .DELTA.T2500, and to begin the following path segment at the start of time period .DELTA.T2501. The setup computations utilizing I and J to compute .DELTA.Y and .DELTA.X for the following path segment are performed during column 4800 and 4900 of the FIG. 33 iteration, but since the current path segment has been stopped short of its designated End Point a correction is made to the I and J values and these corrections are made during column 4600 of the iteration.

1. Data Processing Steps Directed to Modifying the Data Representing the Next Path Segment

The first of the numbers to be corrected is I and, therefore, the first step in the correction process is to compute the correction to be made to I. This correction is XCEP - XCP, or the difference between the X coordinate of the path segment end point and the X coordinate of the path segment at the end of the last iteration for the path segment. The steps for carrying out this computation appear in column 4600.sup.. CIRC of Table I in section G.2.a.(1). The XCEP number is read into the computer 53 during program step 4615.sup.. CIRC from the XCEP register 95 by a READ gating signal applied to the register from the R/XCEP PGA 359 (condition 3). The number appears in the Answer Register 53a during the following program step 4616.sup.. CIRC and is shifted one position to the left by a control signal from the SAL PGA 463 (condition 10) in order to bring it into alignment with the XCP number which is to be subtracted therefrom during the next program step 4617.sup.. CIRC. During that program step the number XCP is transmitted to the computer 53 from the XCP register 117 by a gating signal from the R/XCP PGA 421 (condition 5) and in response to a subtract control signal from the SX PGA 479 (condition 8). The remainder, XCEP -XCP appears in the Answer Register 53a during the next program step 4618.sup.. CIRC and represents the correction number which is to be added to the I number representing the next path segment and currently in the buffer register 47I.

The I number is additively read into the computer 53 from the I buffer register 471 during program step 4618.sup.. CIRC by a READ gating signal from program gate 349. The result, I + (XCEP - XCP), is the corrected I number for the following path segment and is entered into the I active register 99 during program step 4619.sup.. CIRC by a WRITE gating signal from the W/I PGA 355 (condition 2). Next, the J number in the J buffer register 47J is modified and in preparation the Answer Register 53a is cleared by a control signal from the CAR PGA 351 (condition 14). During the same program step, following the clearing of the Answer Register 53a, the YCEP number is entered into the computer 53 from the YCEP register 97 by a READ gating signal from the R/YCEP PGA 487 (condition 3). The number thus entered into the computer and lodged in its Answer Register 53a is shifted one position to the left during program step 4621.sup.. CIRC by a Shift Left control signal from the SAL PGA 463 (condition 11). Next, the YCP number is subtractively entered into the computer 53 from the YCP register 115 by a READ gating signal from the R/YCP PGA 425 (condition 9) and by a signal from the SX PGA 479 (condition 9). The result, appearing in the Answer Register 53a during the following program step 4623.sup.. CIRC, is YCEP - YCP, or the correction number for the J number in the buffer register 47J. That number is additively entered into the computer 53 during program step 4623.sup.. CIRC by a READ gating signal applied to the register from its associated program gate 353 and the J number is automatically added to the previously computed correction number resulting in the storage during program step 4624.sup.. CIRC in the Answer Register 53a of the corrected J number J + (YCEP - YCP). This corrected J number is entered from the Answer Register 53a into the J active register 101 during program step 4624.sup.. CIRC by a WRITE gating signal from its W/J PGA 357 (condition 2).

The remaining operations carried out during column 4600.sup.. CIRC need not be described at this point since they are identical to the corresponding operations described with reference to the iteration shown in FIG. 17. They relate to the transfer from buffer to active of the X and Y components XCEP and YCEP of the next path segment, adding to them the necessary offset corrections stored in the XOFF and YOFF registers 365 and 367 and to the transfer of the Q number from buffer to active.

Similarly, the computational steps carried out during column 4800 for computing the .DELTA.Y number, and during column 4900 for computing the .DELTA.X number are identical to those described in detail previously with reference to FIG. 17 and need not be considered again at this point.

m. Return of the System to Mode 1 Operation for Executing the Next Path Segment

After the .DELTA.Y and .DELTA.X macromove numbers have been computed during columns 4800 and 4900 of the FIG. 33 iteration, the last number G in the data block, representing the following path segment 27d of FIG. 2, which is linear, is transferred from buffer to active during steps 4973 (G.sub.01) - 4974 (G.sub.01) shown in Table II, section G.2.a.(2) (a). Referring further to Table II, the tape reader 41 is started during step 4995 (G.sub.01) in response to a signal applied to the J input of the flip-flop 257 in FIG. 9-1. This initiates reading from the tape into buffer of the data block representing the path segment which follows the path segment whose data block was just transferred from buffer to active. The only steps remaining to be performed during the FIG. 33 iteration prior to commencement of the execution of the following path segment is to switch the system into its mode 1 operation by advancing the End of Block Counter 186 through its S15 and S16 count states into its S1 count state by means of three successive signals produced by the Program Gate Array 183 during program steps 4997.sup.. G.sub.01, 4998.sup.. G.sub.01 and 4999.sup.. G.sub.01. The program gates required are represented in the Program Gate Array 183 by conditions 19, 20 and 21. With the End of Block Counter 186 in its S1 count state the signal appearing at the S1 output of the decoder 187 is applied to and produced on the output of the OR gate 189 of the Time Base Mode Selector 69 as the signal M1 enabling the AND gates 175 and placing the system in its mode 1 operation.

I. detailed Description of a Servomechanism for Executing a Path Segment in Accordance with Interpolated Microposition Numbers

As noted previously, in accordance with the present invention a linear or a circular path segment is executed by physically extending the path segment. This extension may be either in the form of electrical position signals or in the form of mechanical movement of a machine component such as the movable machine element 14 in FIG. 1. In the preceding sections a detailed description has been given of the generation of electrical position command signals. There will now be described in detail a pair of servomechanisms referred to previously with reference to FIG. 7a as elements 75 and 77 which are suitable for moving the machine element 14 in accordance with the X and Y axis macroposition command signals XCP and YCP and, more specifically, in accordance with the X and Y axis microposition command signals XSC and YSC.

Referring to FIG. 9, the numerical control system there shown includes a pair of servomechanisms 75 and 77 for translating the movable element 14 along X and Y axes according to the numerically defined command signals generated in accordance with the present invention. Since the servomechanisms may be identical, only one need be described. The movable element 14 is translated through distances and at velocities along the X axis corresponding to the numerically defined X axis commands which appear in the XSC register 121 by appropriate energization of the reversible servomotor 21 connected to turn the lead screw 20. Engaged with the lead screw through a nut (not shown) and fixed to the element 14 is the ram 16 (these elements having been described previously with reference to FIG. 1). The element 14 is moved with the ram in a -X or +X direction (toward the left or toward the right in FIG. 9a) and at speeds corresponding to the magnitude and polarity of a DC voltage applied to the servomotor 21 by a servoamplifier 521. The manner in which the signal for driving the servoamplifier 521 is generated will be described hereinafter.

Stated briefly, a comparison is made between the instantaneous position of the movable element 14 and the command signal. Based on this comparison an error signal is produced whose sense and magnitude correspond to the sign and extent of the error which exists between the instantaneous directed and actual positions of the element. In this manner, the velocity of the element is made to correspond to the rate of change in the commanded instantaneous position.

Provision is made to generate a feedback signal whose phase relative to a reference signal is indicative of the actual instantaneous position of the movable machine element 14. In the exemplary arrangement shown in FIG. 9a, the 500 cps output B of the sine wave shaper 181 (FIG. 9b) is used.

To provide an indication of the actual instantaneous position of the movable element 14, a resolver 523 is provided for producing a recurring feedback signal which is indicative by the sense and magnitude of its phase angle, relative to the reference signal B, of the sign and extent of the displacement of the movable element from a datum position. It comprises a stator with stator windings 525 and 527 associated with a rotor carrying a rotor winding 529. The resolver rotor is mechanically coupled through suitable gearing (not shown) to the lead screw 20, so that as the latter is turned by the servomotor 21, the resolver rotor turns with it. As a specific example, the resolver rotor may be geared to the lead screw 20 so that it makes one revolution for each 0.1 inch of travel by the movable element 14.

The resolver 523 is excited by the sinusoidal reference signal B fed to its rotor winding 529. The resulting pulsating magnetic field induces a pair of sinusoidal signals in the stator windings 525 and 527 with the amplitude of the output signals varying as sine and cosine functions of the angular position of the movable rotor winding 529 with respect to the stator windings.

By means of a phase shifter 531 the variable amplitude sinusoidal signals appearing across the resolver stator windings 525 and 527 are converted into a single sinusoidal signal C which is of constant amplitude but whose phase relative to that of the sinusoidal reference signal B shifts 360.degree. with each complete rotation of the resolver rotor. In the illustrated example, for each 0.1 inch movement of the machine element 14, the resolver rotor winding 529 is rotated 360.degree. so that with each such movement of the element the feedback signal C is shifted by 360.degree. relative to the reference signal B. As the machine element 14 continues to move, the feedback signal C is brought into phase with the reference signal B at successive "datum" positions spaced 0.1 inches apart. When the element 14 is moved to the left or to the right of such a datum position, the sense and magnitude of the phase angle .phi.2 between the mid-cycle points of the feedback signal C and the reference signal B reflects the sign and extent of the displacement of the element from that datum position.

The phase relationships just described are illustrated in FIGS. 38a-c. In FIG. 38a the feedback signal C lags the reference wave B by a small angle .phi. .sub.2a indicating that the movable element 14 is on one side, say to the right, of one of the datum points. In FIG. 38b the feedback signal C lags the reference wave B by a larger angle .phi. .sub.2b, indicating that the element 14 is further away from the datum position compared to the case illustrated by FIG. 38a. FIG. 38c illustrates the relative phases of the feedback signal C and the reference wave B when the movable element 14 is on the opposite side of a datum position from that illustrated in FIGS. 38a and 38b. In such a case the feedback signal C leads the reference wave B by an angle .phi. .sub.2c.

As explained previously in section G.1.a.(1) with reference to FIGS. 9b and 10, provision is made in the system to produce signals digitally representing a reference number which during successive time intervals repeatedly and cyclically changes in small uniform increments from a first to a second predetermined value. The signaled reference number itself thus undergoes successive cycles of variation, relative to which a repeating signal may vary in phase.

More particularly, digital sweep generating means, shown in FIG. 9b as the cycling binary counters 131, 133, 135, are provided to produce binary coded decimal signals which change to signal a reference number that increases linearly in uniform steps at uniform time intervals during each cycle of the reference wave B. The reference number thus cyclically increases from a minimum value (e.g., 000) to a maximum value (e.g., 999) and then repeats, in synchronism with the reference wave B. In effect, therefore, each increment of the reference number corresponds to one time portion of a cycle of the reference wave, the latter being divided up into many small time intervals equal in number to the number of counts or increments in the reference number variation.

The phase relation here assumed between the reference square wave A, the reference wave B, and the number signaled by the cycling counters 131, 133 and 135, (as indicated by the positively sloped line D,) is shown in FIG. 38a. The vertical scale left of line D indicates that, during a complete cycle of the reference square wave A, the reference number D signaled by the cycling counters 131-135 increases from 000 to 999 at a uniform rate, and that the mid-point of the square wave A occurs at the instant when the cycling counters are just turning 500, the middle of their total range. The same relationships apply to the reference wave B, since it is assumed to be in phase with wave A.

Provision is made to produce a repeating signal F (called "compare signals") at each instant when the cyclically changing and digitally signaled reference number is equal to the periodically changing digitally signaled command number. In this way, the phase angle or phase modulation of the repeating signal F varies in sign and magnitude (relative to the cycling intervals of the reference number signaled by the digital sweep counters 131-135) according to the sense and extent of the changes in the microposition command number. Specifically, the repeating signal F is produced by comparing the cyclically changing reference number D, or digital sweep, against the dynamically changeable command number E, so that the phase angle of that repeating signal changes in sense and extent (relative to the recurring reference wave B, which is fixed in phase relative to the cycling intervals of the reference number) according to the sense and extent of the difference between (a) the mid-point value (e.g., 500 as here described) of the cyclically changing reference number D and (b) the instantaneous value of the updated command number E. Thus, the digital intelligence of the dynamically changing command number E is converted into a corresponding phase analog variation, since the phase angle between the repeating signal F and the reference wave B changes by amounts, in a sense, and at an average rate which correspond respectively to the amount, sense and average rate of change of the command number.

As shown in FIG. 9d, this comparison of two digitally represented but changing numbers is effected by connecting the twelve output lines of the cycling counters 131-135 and the 12 output lines of the updated XSC register to the respective inputs of a fast-acting multi-digit comparing device 533. The comparing device operates to produce a compare signal F in the form of a short pulse on its output line 533a only when the reference number digitally represented in binary code on the output lines of the counters 131-135 is equal to the updated command number digitally represented in binary code on the output lines of the XSC register 121.

At some value of the reference number, during each cycle thereof (from 000 to 999) it will become equal to the digitally signaled XSC microposition command number because the latter, being a three-digit decimal number, will always fall within the range spanned by the cyclically changing reference number. Thus, a compare signal F will be produced at some instant during each cycle of the digital sweep counters 131-135 and the train of pulses F recurring at a nominal rate of 500 per second will by their variation in phase, relative to the reference wave B, represent the corresponding changes in the XSC command number.

The manner in which the compare signals F, i.e., the phase variable command signal, change in phase relative to the reference signal B is illustrated in FIGS. 38a, b, c. In these figures, the number held in the XSC register 121 is represented by the horizontal lines E, and the instant of equal comparison is indicated by their intersections with the lines D representing the cyclically changing reference number.

Since the reference number D increases from its minimum to its maximum value once during each cycle of the reference signal B, the instant, or phase, during the cycle of the reference signal B when the compare signal F occurs is unambiguously determined by the amount to which the reference number D has increased when it becomes equal to the command number E. Hence, the phase of the compare pulse F with reference to the phase of the reference wave B is determined by the magnitude of the command number E, so that the compare signal F is itself a time phase command signal.

To cause the movable element to advance at uniform velocity in small "micromove" increments in conformance with the larger generated "macromove" increments generated by the system, the information in the XSC storage register 121 is periodically updated in the manner explained in detail previously in section G.2.b.

FIGS. 38b and 38c show two examples of updating, both at the same instant t.sub.u during the cycle of the reference signal B. In the example of FIG. 38b, the command number E is reduced by updating, while in the example of FIG. 38c the change is in the opposite direction. It is important to note that the instant of occurrence of the compare signal F is determined by the magnitude of the updated command number E.

The time phased command signal F and the variable phase feedback signal C are caused to operate a single bistate device whose outputs are then used to produce a polarized error signal which is indicative of the magnitude and the sense of the error phase angle between the phase command and feedback signals. The bistate device, shown as a flip-flop 535, has two stable states which will be referred to as "0" and "1" states. The flip-flop 535 is set into its "1" state by the compare signal F, fed to its "set" input terminal S from the output of the comparing device 533 at the instant when the reference number D becomes equal to the command number E.

Means are also provided for resetting the flip-flop 535 into its "0" state at the instant of each positive-going zero crossing of the feedback signal C. The positive-going zero crossing signal for resetting the flip-flop is derived from the feedback signal C by means of a square wave shaping circuit 537. At one of its output terminals the square wave shaper 537 produces a first square wave G which is in phase with the feedback signal C. The square wave G is fed to a unipolar differentiating circuit 539 whose output is connected to the reset input terminal R of the flip-flop 535. In response to each positive-going wave front of the square wave G, and hence at the positive-going zero crossings of the feedback signal C, the differentiating circuit 539 produces a triggering pulse which resets the flip-flop.

The flip-flop 535 has a pair of output terminals labeled "1" and "0". When the flip-flop is in its "1" state, the "0" output produces a logic signal which is at the logical "0" level and the "1" output produces a logic signal at the logical "1" level. In the embodiment illustrated in FIG. 9a, the logical "0" level is positive relative to the logical "1" signal level. When the flip-flop is reset into its "" state, the logic signals at its outputs are reversed with a logical "1" signal appearing at the "0" output and a logical "0" signal appearing at the "1" output.

At a second output terminal, the square wave shaper 537 produces a complement of the square wave G, such complement being labeled G. Thus, at all times, the square wave shaper produces at its two outputs a pair of bi-valued logic signals, one signal G being at a relatively low, binary logic "1" level during each positive half cycle of the feedback signal C and at a binary "0" level during each negative half cycle of the feedback signal. The other square wave signal G is at a low, binary logic "1" level during each negative half cycle and at a binary "0" level during each positive half cycle of the feedback signal (FIG. 38a).

In order to produce a polarized DC signal which is indicative of the sign and magnitude of the error phase angle between the feedback signal C and the compare signal F, the complement output G of the square wave shaper 537 and the "1" output H of the flip-flop 535 are applied to a first AND gate 541, and the G output of the square wave shaper 537 and the "0" output H of the flip-flop 535 are applied to a second AND gate 543.

The outputs of the AND gates 541 and 543 are connected to control terminals 545 and 547 of two current generators respectively. The generators work into a common load resistor 553 but are oppositely poled so that when the negative current generator 549 is turned on, current flows from ground through the resistor 553 and through the generator 549 into a negative terminal 555, thus establishing a negative voltage K across the resistor. Conversely, when the positive current generator 551 is turned on, current flows from a positive terminal 557 through the generator 551 and the resistor 553 into ground, causing a positive voltage L to appear across the resistor. Regardless of which current generator is turned on, the size of the signal across the resistor 553 is kept at a predetermined magnitude by a bipolar Zener diode 559, having the same Zener voltage in both directions.

When the compare signal F leads the negative-going zero crossing point C .sub.0 of the feedback signal C, the first AND gate 541, controlled by the G and H signal outputs of the wave shaper 537 and the flip-flop 535 produces a pulse, labeled in FIGS. 9a and 38b as "Enable K". The "Enable K" pulse turns on the "negative" current generator 549 so as to produce a negative signal K across the resistor 553 for a time interval which is directly proportional to the amount of the phase lead.

Similarly, when the compare signal F lags the point C .sub.0, the second AND gate 543 under the control of the signals G and H produces a pulse shown as "Enable L" and turns on the "positive" current generator 551 to produce a positive signal L across the resistor 553, again for a time interval directly proportional to the amount of the phase lag.

The manner in which the square wave shaper 537, the flip-flop 535, the AND gates 541 and 543 and the current generators 549 and 551 cooperate to produce the bipolar K and L signals is shown by the various signals in FIGS. 38a-c, but will not be described here. For a detailed explanation, reference should be made to my copending patent application for Apparatus for Controlling the Instantaneous Positions and Velocities of Movable Elements According to Digital Numerical Commands, Ser. No. 555,048, filed June 3, 1966 now U.S. Pat. No. 3,539,895. Suffice it to say that, with the compare signal F leading the negative-going zero crossing point C .sub.0 of the feedback signal C, a negative signal, shown at K in FIG. 38b, is generated during a period which begins with the compare signal F and which ends with the next negative-going zero crossing of the feedback signal C.

If the compare signal F lags behind the same arbitrary point C .sub.0 of the feedback signal C, a positive signal, shown at L in FIG. 38c, is generated during a period which commences with the negative-going zero crossing of the feedback signal C and ends with the occurrence of the compare signal F.

As the movable element 14 is being translated, the compare signal F representing the desired position and rate of change of position of the element 14 will lead or lag the negative-going zero crossing point C .sub.0 of the feedback signal C depending upon whether the element is being driven in the +X or -X direction. To convert the variable width, constant amplitude pulses K or L into a smoothly variable control signal, e.g., a polarized variable DC voltage suitable for application to a servoamplifier and thence to the servomotor 21, they are averaged by a low-pass filter 561. The output of the low pass filter 561 is thus a polarized DC signal representative of the sense and magnitude of the average error phase angle between the compare signal F and the negative-going zero crossing C .sub.0 of the feedback signal C over several cycles. After amplication by the servoamplifier 521, the DC error signal is applied to the servomotor 21 causing it to drive the movable element 14 in a direction and at a velocity which conforms with the direction and rate of change in the phase of the compare pulse F, that is, in a sense and at a rate directed by the sequence of XSC microposition command signals developed by the system. When the phase angle of the command phase pulse F begins to change, and the error phase angle departs from zero, the servomotor 21 begins to move, so that the phase of the feedback signal C is shifted by the resolver 523 in a direction to restore the error phase angle to zero. Thus, the instantaneous position error cannot exceed 0.05 inch and the single fine resolver 523 is sufficient to keep the system tracking the dynamically changing directed position along the X axis.

What has been described in the foregoing paragraphs is a particularly suitable filtering servo drive for moving the element 14 along the X axis in accordance with the digital command signal XSC developed by the system. The means for driving the movable element 14 along the Y axis in accordance with the Y axis microposition command number YSC include a second compare circuit 563, shown in FIG. 9d, which may be identical to the compare circuit 533 also shown in that figure. In response to the YSC command signal received over the trunk lines 81, the compare circuit produces a compare pulse shown as the "Y axis command" pulse. This pulse is applied to the Y axis servomechanism 77, shown in 9a as a single block. Its construction may be identical to that of the X axis servomechanism 75, as shown in FIG. 9a in detail. Thus, the Y axis servomechanism 77 includes the motor 25 (FIG. 1) which is operative to move the element 14 vertically with the ram 15 through the drive screw 24.

J. an Alternative System for Performing Linear and Circular Interpolation

1. Introduction

A second system for performing linear and circular iterations may be used as an alternative to that disclosed in FIG. 9a-l is shown in FIG. 40 a-m. The two systems are very similar and most of the components comprising the system shown in FIG. 9 have a corresponding counterpart in the system shown in FIG. 40. To permit a quick understanding of the similarities of the two systems, those components of the system shown in FIG. 40 which have a corresponding counterpart in the system shown in FIG. 9 are given the same reference numeral but with a prime (') added.

With a few exceptions, the general block diagram shown in FIG. 7 applies to the second exemplary system of FIG. 40 as well as it does to the first exemplary system of FIG. 9. Some of the differences between the systems will be explained in the sections which follow.

2. Principal Structural Differences Between the First and Second Exemplary Systems

a. The Time Base Mode Selector

In the first exemplary system of FIG. 9 the Time Base Mode Selector 69, shown in FIGS. 9d and 9e, is arranged successively to place the system in four different operating modes. These changes in operating modes are brought about by successively stepping the End of Block Counter 186 through its count states, thereby placing a signal on successive ones of the sixteen outputs S1-S16 of its associated decoder 187. The decoder outputs S1-S16 are used for a single purpose: to control the advancement of the End of Block Counter 186 and to bring about the different operating modes of the system.

The second exemplary system of FIG. 40 has only three operating modes comparable to those of the system of FIG. 9. These modes are still controlled exclusively by the outputs of a decoder 187' corresponding to the decoder 187 of FIG. 9e. However, the relationship between the count states of the End of Block Counter 186' of FIG. 40e as signaled on the outputs of its associated decoder 187' and the count states of the system as signaled on lines M1', M2', and M3' in FIG. 40d is different from the relationship between the signals and count states of the corresponding components shown in FIGS. 9e and 9d. Specifically, the system of FIG. 40 is in its first mode so long as there is a signal on any of the outputs S1-S4 of its decoder 187'. These four outputs are connected to a single OR gate 570 whose output in turn is connected to the M1' input of the AND gates 175'. The system is placed in its second major operating mode when one of the outputs S6 and S7 of the decoder 187' carries a signal, these two outputs being connected through a second OR gate 571 to the M2' input of the second set of AND gates 177' of the Multi Mode Time Base Logic 67'. Finally, the system is placed in its third major mode of operation when there is a signal on the S8 output of the decoder 187', this output being directly connected to the M3' input line to the third group of AND gates 179' of the Multi Mode Time Base Logic 67.

Another difference between the systems shown in FIGS. 9 and 40 is that in the second exemplary system the outputs of the decoder 187' are used to control the operation of the system in various ways other than by simply connecting them through a series of OR gates directly to the AND gates of the Multi Mode Time Base Logic, as illustrated in the first embodiment in FIG. 9. Thus, the signals appearing on the S5 and S6 outputs of the decoder 187' are applied to an OR gate 573 whose output is combined with the G.sub.02 + G.sub.03 output of the G buffer decode unit 221' in FIG. 40.sub.1 in an AND gate 575 whose output, represented by the logical expression (S5 +S6).sup.. (G.sub.02 + G.sub.03) is inverted by an inverter 576. The output of the inverter 576, (S5 + S6).sup.. (G.sub.02 + G.sub.03 ) is labeled as the output PX2 and is used throughout the system to control its operation in a manner which will be described in detail in the following section. Briefly, the function or signal PX2 is generated only so long as the end of the current path has not been detected if the next path segment is circular, but continues unaffected by the detection of the end of the path segment, if the next path segment is linear.

b. The Slow Axis End Point Storages

In the first exemplary embodiment which appears in FIG. 9, means were shown for testing proximity to the end point along the slow axis in the circular mode in order to avoid an ambiguity which is inherent when such proximity is tested along the fast axis only. The operation of this feature is described in Sections H.2.h.(2) and H.2.h.(3). As noted there, the feature of testing proximity to the end point along the slow axis is a related invention claimed in another application. In order to simplify the explanation of the manner in which the second exemplary system of FIG. 40 operates, this feature is not shown as a part of that system. It will be, however, apparent to those skilled in the art how such a feature would be implemented in the second exemplary embodiment if this were desired.

Another minor difference is related to the fast axis projected overrun detector 71' of the second system of FIG. 40 which includes an additional component, an inverter 577, whose input is connected to the output of the OR gate 481' and whose output, used as the output of the detector 71', is SST. With the output SST of the of the inverter 577 being applied to the Program Gate Array 183' of the Time Base Mode Selector 69', the Program Gate Array is responsive to advance the count state of the End of Block Counter 186 each time a change of sign occurs. This is in contrast to the first system in which the Program Gate Array 183 is responsive to the repetition of the same sign twice on the COT (-) output of the computer 53.

c. The YCPR Register

For reasons which will be explained subsequently the YCPR register 116, as shown in FIG. 9g, and its associated gates 489, 491, 493, 495, 497 and 499 are not needed and do not appear in the second system.

d. Additional Registers XMP and YMP for Storing Macroposition Numbers in Machine Coordinates

In the first exemplary embodiment of FIG. 9 certain fixed and variable offsets, which are required to translate the numerical data from the programmer's coordinates to machine coordinates, are applied to the data initially when they are transferred from the buffer registers 47 to the active registers 57 and before any of the computations connected with the producing of macromoves and micromoves have been performed. (See Section G.2.a.(1) ). The disadvantage inherent in this is that, when the data which is being computed is displayed for viewing by an operator or by personnel testing the system, the numbers which will appear will be less comprehensible to the viewer than they would be if they had been left in their original form, in which they conform to the dimensions appearing in the drawing of the part which is being machined. For this reason, in the second exemplary system the data are not converted into machine coordinates until the last computational sequence associated with carrying out a particular macromove, so that all of the results of previous computations will be displayed to the viewer in terms which are directly compatible with the numbers which were used to program the tape, and which appear on the part drawings.

It should also be noted that, in contrast to the first exemplary system, wherein a large fixed offset is added to the data to translate it from the four-quadrant programmer's coordinates into a single-quadrant coordinate framework, in the second exemplary embodiment no fixed offset is applied. Hence, the program gates 361, 363, 369, 379 and the OR gate 371 which are used in the first system for applying the fixed offset to that system do not appear in the second system of FIG. 40. Accordingly, in the system of FIG. 40 the machine's coordinate system has four quadrants, and its center is offset from the center of the programmer's coordinate system, shown in FIG. 2, only by the machinist's dialed-in offset.

More specifically, for most computations the data in the system, such as I, J, .DELTA.X, .DELTA.Y, XCP, and YCP, are left unmodified. However, the microposition numbers which are periodically updated in the XSC and YSC registers 121' and 119' are always in machine coordinates. As previously explained, they are updated ten times during each iteration. To cause the numbers which are applied to them to be in machine coordinates, once during each iteration, just preceding the tenth updating of the XSC register 121', the number stored in the XCP register 117', which is in part coordinates, is modified by adding to it the X axis offset from the X OFF register 365' and writing the resulting number, referred to as XMP, into an additional register 579, as shown in FIG. 40g. Subsequently, the XMP number is read into the XSC register 121' as the tenth updated X axis microposition number. Similarly, for the Y axis, just prior to the tenth update of the YSC register 119', the number stored in the YCP register 115' is transformed from part coordinates to machine coordinates by adding thereto the offset number stored in the Y OFF register 367' and depositing the result in a second additional register, the YMP register 581, shown in FIG. 40g below the XMP register 579. Subsequently, the YMP number is read into the YSC register 119' as the tenth updated Y axis microposition number.

The timing of the reading into and writing from the XMP register 579 is controlled by a pair of associated program gates 579a and 579b and, similarly, a pair of program gates 581a and 581b are provided to control the READ and WRITE gates of the YMP register 581.

e. An Additional "Scratch Pad" Register

In transferring data from the buffer registers to the active registers in the second exemplary system of FIG. 40, certain corrections are made to the data being transferred. To simplify the computations involved, a "scratch pad" register 582 is provided and is shown in FIG. 40j below the Q register 103a. During the computational sequence, data is written into the scratch pad register 582 from the output of the computer 53' under the control of a control signal W/SP from a Program Gate Array 582 and the signals stored in the register 582 are transmitted therefrom to the computer 53' in response to an R/SP signal from a Program Gate Array 585.

3. Principal Operational Differences Between the Two Embodiments

a. Linear Interpolation is also in a Staggered Mode

In contrast to the operation of the first exemplary system shown in FIG. 9 in which linear interpolation is performed in a simultaneous manner, in the second exemplary embodiment both circular and linear interpolation are carried out in the staggered mode. As will become apparent as this description proceeds, this similarity between the linear and circular interpolation modes greatly simplifies both the operation of the system and the manner in which it may be explained.

b. Neither Macromove Adjustment Nor Next Block Correction is Used in Going From One Path Segment to the Next

Two different modes for going from one path segment to the next were described with reference to the first exemplary system. In terminating a linear path segment exactly at the end of an iteration, a method was described whereby some of the macromoves are modified in size in order to cause the linear path segment to reach its designated end point exactly at the end of a given iteration. On the other hand, when a circular path segment is to be terminated, the macromove adjustment method was not shown to be used, but instead, the I and J numbers representing the following path segment were described as being modified in order to compensate for any errors which might result from the fact that the circular path segment being terminated at the end of one of the iterations might not end exactly at its designated end point.

Neither of these methods is employed in the second exemplary system shown in FIG. 40.

The reason for the difference is that the system of FIG. 40 operates in the staggered mode in generating both linear and circular path segments. Further, it may be assumed that in generating a succession of path segments in which a circular path segment follows a linear path segment, or a linear path segment follows a circular path segment or two circular path segments follow one another, successive ones of such path segments are tangential. Since the successive path segments are tangential and since all of them are interpolated in the staggered mode, a smooth transition may be made form one path segment to the following path segment without the need to terminate any of the path segments at the end of a given iteration. Instead, such end points are permitted to be reached during an iteration and the I and J components associated with the following path segment are initially upgraded by an amount which is determined by the proportion of the last iteration which was completed in accordance with the preceding path segment.

c. The Time Relationship of the Macromoves .DELTA.X and .DELTA.Y Relative to the Time Period .DELTA.T is Reversed

In the first exemplary system of FIG. 9 the .DELTA.X macromove is computed at the end of an iteration and is executed during the entire following iteration, while the .DELTA.Y macromove is calculated toward the end of the first half of an iteration and is executed during the following half of that iteration and the first half of the following iteration. In the second exemplary embodiment of FIG. 40 the times for the computation and the execution of macromoves are exactly the reverse. A .DELTA.Y macromove is executed during a single iteration, and a .DELTA.X macromove is executed during the second half of a given iteration and the first half of the following iteration. These time relationships are illustrated in the vector diagram of FIG. 41b for a linear path segment and in the vector diagram of FIG. 42 for a circular path segment. In both diagrams a time period corresponding to an iteration is indicated by the vector quantity .DELTA.T, and a series of time periods which are staggered relative to the time periods .DELTA.T, and which correspond to the time periods during which successive .DELTA.X macromoves are executed, are indicated as the vector quantities .DELTA.T'.

d. Upgrading of XCP and YCP is Staggered

In the first exemplary system, discussed with reference to FIG. 9, the X axis macroposition XCP and the Y axis macroposition YCP are both upgraded during the first column of an iteration by an amount which is respectively .DELTA.X and .DELTA.Y. The times for upgrading XCP and YCP are so close that, for practical purposes, they may be considered as being upgraded substantially at the same time, or in step. In contrast, in the second exemplary system illustrated in FIG. 40, the X axis macroposition is upgraded toward the end of the first half of an iteration and the Y axis macroposition YCP is upgraded toward the end of the same iteration, so that the times for upgrading XCP and YCP are spaced substantially half a time period .DELTA.T apart. Thus, they are staggered with respect to one another by the same amount as are the times which separate the computations for deriving the X axis macromove .DELTA.X and the Y axis macromove .DELTA.Y.

e. Steps Performed For Looking Ahead Along The Y Axis Differ From Those Performed For Looking Ahead Along the X Axis

The look-ahead operations performed by the system of FIG. 40 for detecting proximity to a designated end point are closely comparable to the look-ahead operations performed by the system of FIG. 9 when generating a circular path segment. Due to the staggered upgrading of the XCP and the YCP macroposition numbers in the system of FIG. 40, however, the details of the look-ahead operations performed by the latter system differ from those of the system of FIG. 9.

It will be recalled that in the FIG. 9 system, both the XCP macroposition number and the YCP macroposition number are upgraded at the beginning of an iteration to the value representing the positions to be reached at the end of that iteration along the X and Y axes. Shortly after these upgrading operations are performed, a forward projection or "look ahead" is made along the "fast" axis (the axis along which motion is the faster) by adding to the upgraded macroposition number associated with the fast axis a number equal to one macromove for that axis. This sequence is performed regardless of whether it is the X or the Y axis along which motion is the faster. Consequently, at the start of each iteration a number is produced, representing the position that will be reached along the fast axis at the end of the iteration following that in which the forward projection, or look-ahead calculation, was performed. This number is then compared with the corresponding coordinate of the designated end point to determine whether or not it will be reached during the following iteration.

In the second exemplary embodiment, shown in FIG. 40, the forward projection or look-ahead computation is also performed at the start of each iteration and the objective is still to determine whether or not the designated path segment end point will be reached along the "fast" axis during the iteration following that in which the look-ahead is performed. And, as in the case of the first exemplary system, the forward projection is again made with reference to a macroposition number associated with the fast axis. However, as pointed out above, unlike the first exemplary system, the second exemplary system upgrades the XCP macroposition number not at the start of an iteration, but toward the end of the first half thereof and the upgrading of the YCP macroposition number occurs near the end of an iteration. Thus, when motion along the X axis is the faster, so that the forward projection must be made with reference to the SCP macroposition number, the magnitude of the forward projection for the look-ahead computation must be increased by one-half macromove because the number stored in the XCP register at the time of the look-ahead computation represents not the position at the beginning of the iteration during which the look-ahead is performed, but the position which was passed at the end of the first half of the previous iteration.

The foregoing remarks will be more readily understood with reference to FIGS. 43 and 44, which are vector diagrams illustrating the look-ahead operations along the X and Y axes respectively. Referring first to FIG. 43, a linear path segment 587 is shown as being extended during successive time periods .DELTA.T1, .DELTA.T2, .DELTA.T3, and .DELTA.T4 toward a designated path segment end point having the coordinates XCEP and YCEP. The last iteration associated with the linear path segment 587, performed during the time period .DELTA.T4, is shown as being divided into two equal zones A and B, and the end point of the path segment is shown as being reached during the second of the zones, zone B. The significance of this distinction is similar to the distinction between a small overrun and a large overrun which was made in connection with the first exemplary embodiment of FIG. 9, and will be further explained subsequently.

The first part in the look-ahead process performed during the time period .DELTA.T2 is to compute XCP.sub.1 - XCEP, which is the X coordinate distance from the designated path segment end point to the mid-iteration target point P1 passed midway through the time period .DELTA.T1. This distance is shown as the vector 589 in FIG. 43, and, as is indicated by the direction of the vector, is a negative quantity. As the next step in the look-ahead process during the time period .DELTA.T2 there is added to the previously calculated result XCP.sub.1 - XCEP a number representing 2.DELTA.X, which is the distance to be traveled along the X axis during two time periods .DELTA.T, and which is indicated in FIG. 43 by the vector 591. If XCP.sub.1 - XCEP is less than 2.DELTA.X, the sign of the quantity (SCP.sub.1 -XCEP) ' 2 .DELTA.X is opposite the sign of the quantity XCP.sub.1 -XCEP and this is used as an indication that the designated end point will be reached along the X axis during the first half of the time period .DELTA.T3.

Rearranging the terms of the last equation yields (XCP.sub.1 + 2 .DELTA. X) -XCEP which is seen to be, in effect, a comparison of the X axis end point coordinate XCEP with the mid-iteration X axis macroposition coordinate SCP.sub.1 projected forward by two macromoves. Thus, in effect, a two-macromove look-ahead is performed at the beginning of the iteration but is projected forward from a coordinate that was passed at the mid-point of the previous iteration.

As may be seen from FIG. 43, the two-macromove look-ahead performed during time period .DELTA.T2 does not produce a change in sign, i.e., the test produces a negative response. Therefore, it is known that the end point will not be reached during the first half of .DELTA.T3. During the same time period .DELTA.T2 a second test, which in effect extends the previous look-ahead by one-half macromove, is performed to determine whether or not the end point XCEP/YCEP will be reached during the second half of the iteration associated with the time period .DELTA.T3. This is done simply by adding one-half macromove, shown in FIG. 43 as the vector 592, to the previous result (XCP.sub.1 -XCEP) + 2 .DELTA. X, yielding the new sum (XCP.sub.1 -XCEP) + 2.5.DELTA.X. If the sign of the resulting sum is different than that of the previous sum, this is taken as an indication that the end point XCEP/YCEP will be reached along the X axis during the second half of the time period .DELTA.T3.

Rearranging the terms of the last equation yields (XCP.sub.1 + 2.5 .DELTA.X) -XCEP and, following the same reasoning as that advanced with respect to the 2 macromove look-ahead, it may be seen that the second test is, in effect, a 2.5 macromove look-ahead projected forward from the point XCP.sub.1 at the start of the time period .DELTA.T2. In the particular example shown in FIG. 43 the last result is also negative; that is, there is no sign reversal, since the end point is not reached during either half of the time period .DELTA.T3.

At the beginning of the next time period .DELTA.T3, the two look-ahead tests are again performed and the computations involved are indicated by the vectors 593, 595 and 597. The result of the first of the tests is again negative because the designated end point XCEP/YCEP is not reached during the first half of the time period .DELTA.T4. However, the response to the second test performed during the time period .DELTA.T3 and indicated by the vector 597 is positive. Thus, the sign of the quantity XCP.sub.3 -XCEP is negative, whereas the sign of the quantity XCP.sub.3 + 2.5 .DELTA.X-XCEP is positive. The sign reversal following the second test, but not the first, thus reveals that the designated end point XCEP/YCEP will be reached during the time period .DELTA.T4 and that it will be reached only during the second half of that time period.

FIG. 44 illustrates the look-ahead computations which are performed for a path segment which is so oriented that, in executing it, movement along the Y axis is faster than movement along the X axis. The path segment represented by the vector 599 is shown to be linear and to extend from a point P.sub.0 through a succession of points P.sub.1 - P.sub.6 through which it passes during time periods T1 - .DELTA.T3. The designated end point represented by the coordinates XCEP/YCEP is shown as being reached during the first half, or zone A, of the time period .DELTA.T4.

The first test which is illustrated in FIG. 44 is that which is performed during the time period .DELTA.T.sub.1 and whose purpose it is to predict whether or not the designated end point will be reached along the Y axis during the first half of the time period .DELTA.T2. The test is performed during the first portion of the time period .DELTA.T.sub.1 and, similarly to the test illustrated in FIG. 43, consists of calculating the Y coordinate distance from the end point XCEP/YCEP to the point P.sub.0 on the linear path segment 599. This distance is represented in FIG. 44 by the vector 601. The next step in the process is to add to the vector 601, which is a negative quantity, the quantity 1.5 .DELTA.Y or the Y coordinate distance to be traveled during the time period .DELTA.T.sub.1 and the first half of the time period .DELTA.T2. The result is YCP.sub.0 - YCEP + 1.5 .DELTA.Y. Its sign is the same as the sign of YCP.sub.0 -YCEP because 1.5 .DELTA.Y is less than YCP.sub.0 -YCEP, since the designated end point coordinate XCEP is not reached during the first half of the time period .DELTA.T2. A second test is then performed by adding the quantity 1/2 .DELTA.Y, represented in FIG. 44 by the vector 605, to the last result. The new result, YCP.sub.0 -YCEP + 2 .DELTA.Y is again negative because the designated end point YCEP is not reached during the second half of the time period .DELTA.T2 either.

At the beginning of the following time period .DELTA.T2 another pair of look-ahead operations or tests are performed, these being represented in FIG. 44 by the vectors 607, 609 and 611. The response to both of these tests is negative due to the fact that the designated end point coordinate YCEP is still not reached during the time period .DELTA.T3. Finally, during the following time period .DELTA.T3 when, as part of the first test the quantity 1.5 .DELTA.Y, shown as the vector 613, is added to the quantity YCP.sub.4 -YCEP, shown as the vector 615, the resulting sum, YCP.sub.4 -YCEP + 1.5 .DELTA.Y is positive because the vector 613 is larger than the vector 615, signifying that the Y coordinate distance from the end point XCEP/YCEP to the point P4 is less than 1.5 .DELTA.Y. In other words, the end point XCEP, YCEP will be reached during the first half of the time period .DELTA.T4. Thus, a reversal in sign from negative to positive occurs after the first look-ahead test during time period .DELTA.T.sub.3, and this change in sign is used to indicate that the end point will be reached during the first half of the following time period.

4. Operation of the Second Exemplary System

a. Summary

The various operational sequences performed by the second exemplary system of FIG. 40 during a time period .DELTA.T, otherwise referred to as an iteration, are shown in FIGS. 46 through 57. These Figures are flow charts similar to those used to describe the operation of the first exemplary system of FIG. 9. The sequence in which the flow charts of FIGS. 46 through 57 are implemented is shown in FIG. 45 which corresponds to the flow chart for the first exemplary embodiment appearing in FIG. 20.

Two sequences are indicated in the flow chart of FIG. 45 for going from a linear path segment to a circular path segment and another two sequences are indicated for going from a circular path segment to a linear path segment. Of the four transitions, three will be described in detail. The first, in which a transition is made from a linear path segment to a circular path segment (hereinafter to be referred to as "going from linear to circular"), with the end point in zone A as explained with reference to FIG. 43, involves a pair of transitional iterations, shown in FIGS. 47 and 48, which follow a "standard" linear iteration, shown in FIG. 46 and which in turn are followed by a standard circular iteration, shown in FIG. 49. This sequence of four iterations will be described with reference to the vector diagram comprising FIG. 58.

The second transitional sequence, also involving the process of going from linear to circular but with the end point in Zone B, involves three transitional iterations respectively shown in FIGS. 50-52. As in the case of a Zone A linear to circular transition, the three transitional iterations involved in a Zone B linear to circular transition also follow a standard linear iteration of the type shown in FIG. 46 and lead into a standard circular iteration of the type shown in FIG. 49. This sequence of five iterations will be explained with reference to another vector diagram which appears in FIG. 59. Finally, there will be described with reference to a third vector diagram comprising FIG. 60 the transitional sequence carried out when a circular path segment is to be continued by a linear one, with the end point for the circular path segment being in Zone B (a zone B circular to linear transition). Three transitional iterations are involved in the Zone B circular to linear transition and successive ones of these are shown in FIGS. 55, 56 and 57. They follow a standard circular iteration as shown in FIG. 49 and are in turn followed by a standard linear iteration of the type shown in FIG. 46.

A fourth sequence, indicated in FIG. 45 and involving a Zone A circular to linear transition, will be described only briefly and without reference to a vector diagram.

In the detailed description of the operations carried out by the system shown in FIG. 40, reference will be made to a set of Tables numbered VII through X1 which show all of the computational steps performed by the system. The Tables have been consolidated so as to appear on three sheets for ease of interpretation. However, reference will be made to these Tables throughout the detailed description which is to follow and it is suggested that they be removed from the specification in order to facilitate frequent reference to them.

b. Generating a Linear Path Segment

1. In General

The computational steps performed by the system of FIG. 40 during a "standard" linear iteration, that is, during a time period .DELTA.T in which a linear path segment is being generated and during which the designated end point of that path segment has not been detected, are shown in flow chart form in FIG. 46 and in detail in Tables VII, VIII and IX. ##SPC10## ##SPC11## ##SPC12## ##SPC13##

Table VII, organized in 10 columns of 100 steps each, shows those operations which are always performed during a given program step regardless of the mode in which the system operates.

Table VIII shows four different series of operations for each of the columns 400 and 900 of an iteration. The first pair, labeled 400A and 900A, applies during a standard linear iteration. The second pair, labeled 400B and 900B, applies to a standard circular iteration. The third pair, labeled 400C and 900C, applies to certain types of linear to circular transitional iterations, and the fourth pair, labeled 400D and 900D, is applicable to another type of linear to circular transitional iteration.

Table IX represents those computational steps which are peculiar to Mode 1 of the system of FIG. 40, the mode in which the system is placed in order to perform a standard linear or a standard circular iteration.

Turning now to the detailed description of the steps carried out by the system of FIG. 40 in performing a standard linear iteration, it may be assumed that the E.O.B. counter 186' has been placed in its S1 count state, and that a signal therefore appears on the S1 output of its associated decoder 187'. This signal is gated through the OR gate 570 of the Time Base Mode Selector 69' on to line M1' of the Multi-Mode Time Base Logic 67' in FIG. 40d. As explained with reference to the first exemplary embodiment of FIG. 9, the signal on the line M1' enables the first group of AND gates 175' so that, as the hundreds BCD to D converter 171' of the Time Base and Digital Sweep 63' (FIG. 40b) is stepped through its 10 count states 000 through 900, its output signals appear on the 1000 through 1900 output of the group of AND gates 175'. This set of signals is used to provide the gating necessary to place the system in its first principal mode of operation.

The operations which are performed during a standard linear iteration will be described with particular reference to FIG. 58 which is a vector diagram illustrating the last staggered linear iteration in which no overrun has been detected, this iteration occurring during time period .DELTA.T998 and being also shown in flow chart form in FIG. 46. It will be understood that, during the time periods preceding the particular time period .DELTA.T998, many iterations of the type shown in FIG. 46 will have been performed by the system in executing a linear path segment. With reference to FIG. 46, it will be noted that the microposition numbers stored in the XSC register 121' and in the YSC register 119' are updated during each of the 10 sub-periods, or columns, of the iteration during the program steps 16 through 26 of the respective columns. It will also be noted that the XCP and YCP macroposition registers 117' and 115' are upgraded during the initial program steps of the X400 and X900 columns of the iteration. The updating and upgrading operations will be explained subsequently and attention will now be directed to the specific steps involved in performing the look-ahead process which is shown to be carried out during the initial column of the iteration.

2. The Two Stage Look-Ahead Along the X and Y Axes

The look-ahead process was discussed in principle with reference to FIGS. 43 and 44. Its details are shown in Table IX. The first test is to determine the identity of the fast axis. This is achieved in the same manner in which it was performed in the first exemplary system, namely, by comparison of the I and J components of the path segment being generated. Accordingly, the I and J numbers are transmitted to the computer 53' during program steps 1033 and 1034 from the I and J registers 99' and 101' in response to R/I and R/J signals applied to the respective registers by their associated Program Gate Arrays 400' and 391' respectively. The requisite gating for producing the signals R/I and R/J are indicated in PGA 400' as condition 5 and in PGA 391' as condition 6.

Concurrently with the transmission of the number from the J register 101', a compare-instruct signal is sent to the computer 53' from its associated "FP" and "CX" PGA 453' (condition 1). During the following step 1035 the FAX flip-flop 455' which is connected to the compare outputs of the computer 53' is preset, thereby indicating by a logic 1 voltage level on its FAX output that motion along the X axis is faster than it is along the Y axis. On the other hand, if J is greater than I, the flip-flop is reset and this fact is indicated by a logic 1 voltage level on its FAX output.

The steps which follow comprise a two-stage look-ahead along the fast axis, as described in principle with reference to FIG. 43 and are quite similar to the look-ahead computations discussed in connection with the first embodiment of FIG. 9 in detail with reference to Tables VI and VIA in Section H.2.h.(4).

During program steps 1036-1046, calculations are performed to determine the X coordinate distance remaining from the mid-point of the previous iteration occurring during .DELTA.T997 and the designated end point XCEP/YCEP of the linear path segment illustrated in FIG. 58. Steps are then performed for comparing this remaining X coordinate distance with the quantity 2 .DELTA.X, so as to determine thereby whether or not the designated end point will be reached during the first half of the following iteration .DELTA.T999. Specifically, during program steps 1036 the Accumulator Register 53' is cleared in response to a signal from the CAR PGA 351 (condition 10). During the same program step the number stored in the XCP register 117' representing the X coordinate of the point along the path segment reached at mid-point of the previous iteration .DELTA.T997 is transmitted from the register to the computer 53' in response to a signal from the R/XCP PGA 421' (condition 2). During the following program step 1037 the contents of the Answer Register 53a', representing the just transmitted XCP number, are shifted one position to the right in order to bring it in alignment with the number stored in the XCEP register 95' which is then transmitted to the computer 53' during the following program step 1038 in response to a signal applied to the XCEP register 95' from its associated R/XCEP PGA 359' (condition 1).

In order to subtract the XCEP number from the XCP number, a subtract control signal is applied to the computer 53 from the SX PGA 479' (condition 3). The result, Xcp -XCEP, appearing in the Answer Register 53a' during program step 1039 is shifted one position to the left therein in order to bring it into alignment with the macromove number .DELTA.X stored in the .DELTA.X register 109' with which it is to be compared next (SAL PGA condition 1).

During the following two program steps 1040 and 1041 the macromove number stored in the .DELTA.X register 109' is read into the computer 53' twice, additively, in response to successive READ control signals applied to the .DELTA.X register 109' by its associated R/.DELTA.X PGA 409' (conditions 12 and 13). The number appearing in the Answer Register 53a' is XCP -XCEP +2 .DELTA.X and its sign will be the same as that of the number XCP -XCEP, provided that XCP -XCEP is not less than 2 .DELTA.X, or, in other words, that the X coordinate distance remaining from the mid-point of the iteration .DELTA.T997 to the designated end point XCEP/YCEP of the linear path segment illustrated in FIG. 58 is not less than 2 .DELTA.X. If this is not the case, there will be a sign reversal. To detect this sign reversal, the sign of the number XCP -XCEP appearing in the Answer Register 53a' during program step 1039 is stored in the ACNX sign storage flip-flop 465' during that program step, as previously explained in detail in Section G.2.d.(2)(b) with reference to the exemplary system of FIG. 9. This sign is then effectively compared with the sign of the number XCP -XCEP + 2 .DELTA.X which appears in the Answer Register 53a' during program step 1042. In particular, if the sign of the number appearing in the Answer Register 53a' during the program step 1047 is different from the sign of the number which had appeared in the Register during program step 1039 and which was stored in the ACNX flip-flop 465' during that program step, a signal represented by the symbol SST is produced during program step 1047 by the Fast Axis Projected Overrun Detector 71' and in response to that signal the Program Gate Array 183' of the Time Base Mode Selector 69' applies a pulse to the E.O.B. counter 186' (condition 1) so as to advance the Counter to its S2 count state. Advancement of the Counter 186' into its S2 count state therefore signifies that an overrun has been detected and that it will occur during the first half of the following iteration.

As explained previously with reference to FIG. 43, the test just described is, in effect, a 2 macromove look-ahead projected forward at the beginning of an iteration from a point along the X axis which was passed during the mid-point of the previous iteration. It will be readily seen that, as of the time when the projection is made, it is, in effect, a 1.5 macromove projection of position along the X axis from the position which is to be passed along the X axis at that time. It is in this sense that the term "Determine remaining distance and compare with 1.5 macromoves" is used in the first column of FIG. 46 and it is for this reason that the first projection forward is illustrated in FIG. 58 as the vector 615 which is 1.5 .DELTA.X in length and which is projected forward from the point P.sub.0 which is passed at the beginning of the iteration .DELTA.T998.

To perform the second look-ahead operation during the iteration .DELTA.T998, the 1/2 .DELTA.X is added to the previously accumulated result so as to increase, in effect, the forward projection from 1.5 .DELTA.X, represented by the vector 615 in FIG. 58, to 2 .DELTA.X, indicated in FIG. 58 as the vector 617. To accomplish this, during the program step 1048-1052 the macromove number stored in the .DELTA.X register 109' is additively read into the computer 53' five times in response to READ gating signals from the R/ .DELTA.X PGA 409' (condition 14). To give these operations the effect of adding 0.5 .DELTA.X to the previously accumulated sum in the Answer Register 53a', that sum is shifted one position to the left during a previous program step, 1042, in response to an appropriate control signal from the SAL PGA 469' (condition 3). The result, appearing in the Answer Register 53a' during the program step 1053, is XCP -XCEP + 2.5 .DELTA.X, where XCP is the macroposition number representing the X coordinate of the point passed during the mid-point of the previous iteration, .DELTA.T997. With reference to FIG. 58 it will be seen that the result may be restated as XCP.sub.0 -XCEP + 2 .DELTA.X. Means are provided for advancing the E.O.B. counter 186', provided it remained in its count state S1 after the first test and provided also that, as a result of the second test a reversal in the sign of the number stored in the Answer Register 53a' occurred and was signaled as an SST signal to the PGA 183' of the Time Base Mode Selector 69'. The means for so advancing the E.O.B. counter 186' is represented by condition 3 of the PGA 183'.

In the foregoing paragraphs the particular computational steps involved in performing the look-ahead operations for the .DELTA.T998 iteration have been set out. The results of the look-ahead tests performed during the .DELTA.T998 iteration are seen to be negative, since both the 1.5 .DELTA.X look-ahead vector 615 and the 2 .DELTA.X look-ahead vector 617 are smaller than the vector 614, representing the distance remaining to the end point coordinate XCEP. Consequently, the E.O.B. counter 186' will not have been advanced to its S3 count state during program step 1048, nor will it have been advanced to its S2 count state during program step 1053. These facts are indicated in FIG. 46 by crossing out the blocks which refer to the advancing of the E.O.B. counter 186'.

Before continuing with the remaining operations performed during the .DELTA.T998 iteration which is under discussion the look-ahead computation which would have been carried out had the Y axis been the fast axis will be briefly considered.

If it be assumed that motion along the Y axis is to progress faster than along the X axis, the situation which is depicted by FIG. 44, the comparison of J and I during steps 1033 and 1034 would reveal during the following program step 1035 that I is less than J, thereby causing the FAX flip-flop 455' to be cleared by resetting it. The identity of the fast axis would then be indicated by a logic 1 signal on the FAX output of the flip-flop 455'.

In the following three program steps, 1036-1038, the distance remaining along the Y axis to the designated end point XCEP/YCEP would be computed by subtracting YCEP from the macroposition number then stored in the YCP register 115', which, in the example illustrated in FIG. 44, is YCP.sub.0. Specifically, during program step 1036 the macroposition number YCP.sub.0 would be read from the YCP register 115' in response to a READ gating signal from its associated R/YCP PGA 425' (condition 2). Next, during program step 1037, the YCP.sub.0 number would be shifted one position to the right in the Answer Register 53a' in response to a control signal from the SAR PGA 411' (condition 19) in order to bring the YCP number into alignment with the YCEP number which is to be subtracted therefrom during the following program step. During that program step, No. 1038, the YCEP end point coordinate is read into the computer 53' from the YCEP register 97' by a signal applied to that register from its associated R/YCEP PGA 487' (condition 1) and is read into the computer subtractively by the concurrent application thereto of a subtract control signal from the SX PGA 579' (condition 3). The result, appearing in the Answer Register 53a' during the program step 1039 is YCP.sub.0 -YCEP and is shifted one position to the left in response to a control signal from the SAL PGA 463' (condition 1) in order to bring it into alignment with the .DELTA.Y macromove number which is to be added thereto during subsequent program steps, as will now be explained.

During program step 1040 the macromove number .DELTA.Y is read into the computer 53' from the .DELTA.Y register 107' in response to a gating signal from the R/ .DELTA.Y PGA 415' (condition 12). The sum, which appears during the following program step in Answer Register 53a', is YCP.sub.0 -YCEP + .DELTA.Y. To this result there is added during the program steps 1042-1046 the quantity 1/2 .DELTA.Y in order to complete the 1.5 .DELTA.Y look-ahead calculation, YCP.sub.0 -YCEP + 1.5 .DELTA.Y. This is achieved by first shifting the previously accumulated sum in the Answer Register 53a', YCP.sub.0 -YCEP + .DELTA.Y one position to the left during program step 1041 in response to a Shift Left signal from the SAL PGA 463' (condition 2) and by reading the macromove number .DELTA.Y into the computer 53' five times from the .DELTA.Y register 107' during program steps 1042-1046 in response to control signals from the R/ .DELTA.Y PGA 415' (condition 13). Due to the shifting to the left of the sum YCP.sub.0 -YCEP + .DELTA.Y the effect of additively reading the macromove number .DELTA.Y five times into the computer in its normal field is effectively to add 1/2 .DELTA.Y to the aforementioned sum. Consequently, the result stored in the Answer Register 53a' during program step 1047 is YCP.sub.0 -YCEP + 1.5 .DELTA.Y. In the manner explained previously with reference to the test for the X axis, if the sign of the sum stored in the Answer Register 53a' during program step 1047 differs from the sign of the sum previously stored in that register during program step 1039 an SST signal is applied by the Fast Axis Projected Overrun Detector 71' to the Time Base Mode Selector 69' whose Program Gate Array 183' is conditioned to advance the E.O.B. counter 186' to its S2 count state (condition 1).

To form the second look-ahead test during the time period .DELTA.T1, indicated by the 1/2 .DELTA.Y vector 605 in FIG. 44, the macromove number .DELTA.Y is read from the .DELTA.Y register 107' into the computer 53' five more times during the program steps 1048-1052 by the application to the register of five additional READ control signals from its associated R/ .DELTA.Y PGA 415' (condition 14). For the same reasons advanced with reference to the program steps 1042-1048 the effect of these operations is to increase the sum stored in the Answer Register 53a' so that, during program step 1053 it is YCP.sub.0 -YCEP + 2 .DELTA.Y. If the sign of this sum is different from the sign of the sum which had been stored in the Answer Register 53a' during the program step 1039, then, for the same reasons previously given with reference to the test for the X axis, the E.O.B. counter 186' is advanced from its S1 count state to its S2 count state by the application of an SST signal to the PGA 183' (condition 3).

3. Computing .DELTA.X and .DELTA.Y Macromoves

Two other major computational sequences shown to be performed during a typical linear iteration in the flow chart of FIG. 46 are those directed to computing macromove numbers .DELTA.X and .DELTA.Y. The computational sequence by which the .DELTA.X macromove number is derived is shown in FIG. 46 to occur during the program steps 435-462 and the computations for deriving the macromove number .DELTA.Y are shown as being carried out during the program steps 935-962. The computational steps for deriving .DELTA.X and .DELTA.Y are identical to the corresponding computational sequences for deriving those quantities as disclosed with reference to the first exemplary system, in FIG. 18 generally, and in Tables IV and IV-A in detail. The steps involved in completing the computation J.sup.. Q are shown in FIG. 18 to occur during program steps 1817-1864. Similarly, the multiplication of I.sup.. Q to compute .DELTA.X is shown in FIG. 18 to occur during program steps 1917-1964. Another operation, that of storing the four least significant digits of the product in the remainder registers XR and YR, which in FIG. 46 is shown to be performed during program steps 460-462 and 960-962 are indicated in FIG. 18 as being performed during program steps 1869-1871 and 1969-1971. These operations are explained in detail in Section G.2. d.(4) under the heading "Data Processing Steps Associated with Calculating Adjusted Macromoves." For an explanation of the reasons why these computations are made, reference should be made to the cited section. At this point, only the computations themselves and the control signals related to them will be described.

Referring first to the computations shown in FIG. 46 to be performed in Column X400, the detailed steps associated therewith are shown in Table VIII, Column 400A. This is so because the system is generating a linear path segment and therefore an enabling signal appears on the LIN line of the path type indicator 106'. Furthermore, since the iteration under discussion is one during which a designated end point has not yet been detected, an enabling signal is also produced by the inverter 577 on its PX2 output line (FIG. 40d). As indicated at the heading of Column 400A, it is these conditions which are required in order for that column of computations to be performed. The first step in the sequence is to read the number I into the computer 53' from the I register 99', and this is done during program step 4 3 5 in response to a READ gating signal from the R/I PGA (condition 3) associated with the register.

With the multiplicand I in the computer 53', the multiplier Q is transmitted from the Q register 103' during program step 437 in response to a READ gating signal from the R/Q PGA 389' (condition 1). During the following program steps 439-455 the multiplication of I.sup.. Q is carried out by the computer 53', this operation being initiated by a multiply control signal applied to the computer 53' during program step 437 from the PGA 393' (condition 1). The product I.sup.. Q appears in the Answer Register 53a' during program step 456 and is shifted four positions to the left by a Shift Left control signal from the SL4 PGA 347' (condition 1) so as to bring the four least significant digits of the product from the Overhanging Register 53b' into the Answer Register 53a'. The remainder digits from the previous multiplication of I.sup.. Q are next read additively into the computer 53' from the XR register 113' by a READ control signal from the R/XR PGA 400' during the program step 457, and the resulting sum is then returned to its original position by shifting it four positions to the right by means of Shift Right control signals from the SR4 PGA 501' (condition 1). With the four least significant digits of the product again out of the Answer Register 53a', the remaining digits of the product are transmitted from the Answer Register to the .DELTA.X register 109' by a WRITE control signal applied to the register by its associated W/ .DELTA.XPGA 401' during program step 459. The digits which were just transmitted from the Answer Register 53a but which had not been removed therefrom by that operation are next eliminated during program step 460 by a control signal from the ZR1 PGA 397' (condition 1). With the Answer Register 53a thus cleared, the four least significant digits of the product I.sup.. Q, as modified by the corresponding digits of the previous product I.sup.. Q, are shifted from the Overhanging Register 53b' into the Answer Register 53a' in response to Shift Left control signals from the SL4 PGA 347' (condition 3) and are transmitted to the XR register 113' during the following program step 462 by a WRITE control signal applied to the register by its associated W/XR PGA 403'. Finally, during the same program step, but following the transmission of the XR remainder digits, the entire Accumulator Register 53ab' is cleared by a CLEAR control signal from the CAR PGA 351' (condition 6).

Turning now to the steps involved in the computation of .DELTA.Y which are shown to occur in FIG. 46 during its Column 900, the steps involved are those detailed in Table VIII, Column 900A for the same reason as those cited in connection with Column 400A of that Table. Briefly, the number J is read into the computer 53 during program step 935 by a READ signal from the R/J PGA 391' and the number Q is read from the Q register 103' during program step 437 by a control signal from the R/Q PGA 389' (condition 2). In response to a multiply control signal applied to computer 53' from the X PGA 393' (condition 2), the multiplication of J.sup.. Q is performed during the program steps 939 - 955. The product is shifted four positions to the left in the Accumulator Register 53ab' during program step 956 by a signal from the SL4 PGA 347' (condition 2) and the remainder digits of the previously computed product of J.sup.. Q are additively read into the computer 53' from the YR register 111' by a READ control signal from the R/YR PGA 399'. During the following program step 958 the corrected product is shifted four positions to the right in the Accumulator Register 53ab' by a Shift Right control signal from the SR4 PGA 501' (condition 2). The number remaining in the Answer Register 53a' is transferred during the next program step 959 to the .DELTA.Y register 107' by a WRITE control signal from its associated PGA 395'. During the next two program steps 960 and 961 the Answer Register portion 53a' of the Accumulator Register 53ab' is cleared by a signal from the ZR1 PGA 397' (condition 2) and the digits remaining stored in the Overhanging Register portion 53b' are transferred into the just cleared Answer Register portion 53a' by Shift Left control signals from the SL4 PGA 347' (condition 4). As the final part of the computation, the digits just transferred into the Answer Register portion 53a' are transmitted therefrom into the YR remainder register 111' by application of a WRITE control signal to the register by its associated W/YR PGA 398'. The Register 53ab' is then cleared (CAR PGA 351' condition 7).

4. Updating the XSC and YSC Microposition Registers

The third major type of operation which is shown in 46 as being performed during a standard linear iteration is that of updating the XSC and YSC registers 121' and 119'. These operations are almost identical to the corresponding operations performed by the first exemplary system of FIG. 9 and discussed with reference to Table III in Section G.2.b. The most apparent difference is that the updating operations are performed slightly later during the iteration, during the band of program steps 16-26, in contrast to the band of program steps 00-10 during which the corresponding operations were shown in Table III to be performed in the first exemplary system.

Referring again to Table VII, the first step in updating the XSC register 121' is to clear the Answer Register 53a' by a CLEAR signal applied to computer 53' from its CAR PGA 351' (condition 3). During the same program step, but a short time later, the macromove number in the .DELTA.X register 109' is read into the computer 53' by a READ control signal applied to the register from its R/ .DELTA.X PGA 409' (condition 2). The .DELTA.X number appearing in the Answer Register 53a' during the next program step 017 is shifted to the right one position in order to divide it by 10. This is in response to a Shift Right control signal from the SAR PGA 411' (condition 1). Thus, when the current microposition number is read into the computer from the XSC register 121' during the following program step 018 by a control signal from its associated R/XSC PGA 412' (condition 1), the number in the Answer Register 53a' to which that microposition number is added is 0.1 .DELTA.X. The resulting sum which appears in the Answer Register 53a' during the program step 019 is XSC + 0.1 .DELTA.X, or the updated XCS microposition number. This number is then transmitted to the XSC register 121' during program step 021 by a WRITE control signal applied to the register by its control gate 413'.

The YSC register 119' is updated during the following seven program steps and in preparation thereto the Answer Register 53a' is cleared by a CLEAR control signal from the CAR PGA 351' (condition 4). After the Answer Register 53a' has been cleared, but during the same program step 021, the Y axis macromove number is read into the computer 53' from the .DELTA.Y register 107' by a READ control signal from the R/ .DELTA.Y PGA 415' (condition 2). The .DELTA.Y macromove number thus stored in the Answer Register 53a' is divided by 10 by shifting it one position to the right in the register during the program step 022 in response to a Shift Right control pulse from the SAR PGA 411' (condition 10). As a result, the number in the Answer Register 53a' during program step 023 is 0.1 .DELTA.Y to which the Y axis macroposition number is added during the program step 023 by transmitting that number from the YSC register 119' by application of a READ control signal thereto from its associated R/YSC PGA 417' (condition 1.) The resulting updated Y axis macroposition number YSC + 0.1 .DELTA.Y is entered into the YSC register 119' during a subsequent program step 026 by a WRITE control pulse applied to the register by the W/YSC program gate 419'. With the updating sequence thus completed the Accumulator Register 53ab' is cleared by a control signal from the CAR PGA 351' (condition 5).

The foregoing sequence for updating the number stored in the XSC register 121' is repeated during each of the columns or sub-periods X100, X200 and X300 of each iteration performed by the system of FIG. 40. This fact is indicated in Table VII by the arrows which extend horizontally from the computational steps listed in its first column, X000, related to the updating of the XSC register, through the following three Columns X100, X200 and X300. Furthermore, the operations associated with the updating of the YSC register 119' are performed in the same manner during each of the following eight columns X100 - X800 of each iteration performed by the system, as indicated in Table VII by the extension of horizontal arrows in that Table from the steps listed in the first Column X000 related to the updating of the YSC register 119' through the following eight columns of the Tables, X100 - X800.

The manner in which the X axis microposition number in the XCS register 121' is updated during the fifth Column X400 of each iteration differs from that in which the register is updated during the preceding four columns. Generally, during the Column X400, and prior to the updating of the XSC register 121', the macroposition number in the XCP register 117' is upgraded to a new value, that number is translated into machine coordinates, and the translated XCP number, referred to as the XMP number, is written into the XSC register 121' as the updated X axis macroposition number. The exact manner for upgrading the XCP register 117' and for translating the upgraded number in it into machine coordinates will be described subsequently. At this point it will suffice to say that there is stored in the XMP register 579 during program step 415 the new upgraded XMP number representing, in machine coordinates, the position along the X axis which should be reached during the sub-period of time represented by that column. The number stored in the XMP register 579 is then entered into the computer 53' during program step 416 and this number is turn is written into the XSC register 121' by a WRITE control signal applied to the register by its program gate 413' during program step 421.

During each of the following five sub-periods of time represented by Columns X500 - X900 of Table VII, the number in the XSC register 121' is updated by 0.1 .DELTA.X in the same manner as was described with reference to the first four columns X000 - X300 of Table VII. Thus, the appropriate READ control signals for entering the macromove number from the .DELTA.X register 109' into the computer 53' are indicated in the R/.DELTA.X PGA 409' as conditions 6-10. Similarly, the Shift Right control signals for dividing the .DELTA.X number by 10 are indicated in the SAR PGA 411' as conditions 5-9. Finally, the control signals for entering the microposition number to be updated, from the XSC register 121' into computer 53', are represented by conditions 5-9 in the R/XSC PGA 412'.

To summerize briefly, it is seen that the X axis microposition number stored in the XSC register 121' is updated once during each iteration by writing into the register the upgraded macroposition number for the X axis in machine coordinates, and that the XSC register is updated nine more times simply by adding 0.1 .DELTA.X to it each time. The same sequence is also followed in updating of the YSC register 119' except that it is updated with the upgraded Y axis macroposition number during the last sub-period of the iteration, represented by Column X900 in Table VII. Thus, the upgraded macroposition number YMP in machine coordinates is read into the YSC register 119' during Column X900, and 0.1 .DELTA.Y is added to that number during each of the first nine sub-periods, or Columns X000-X800 of the following iteration.

Specifically, in a manner similar to that applicable to the XCP register 117' and to be described subsequently, the number in the YCP register 115' is upgraded and translated into machine coordinates, and as so upgraded and translated, is stored in the YMP register 581 during program step 915. It is then read into the computer 53' from the YMP register 581 during program step 921 and is written into the YSC register 119' during program step 926 in response to a WRITE control signal applied to that register by its W/YSC PGA 419', as also indicated by the horizontal arrow extending from the corresponding step shown in Column X000.

5. Upgrading the XCP and YCP Macroposition Registers

As explained previously with reference to FIG. 46, the macroposition registers XCP and YCP 117' and 115' are upgraded in a staggered manner during Column X400 and X900 of the standard linear iteration. Referring further to FIG. 46, and in particular to the upgrading of the XCP register 117', the detailed steps involved appear in Table VII. In preparation for the upgrading of XCP register 117', the Accumulator Register 53ab' is cleared during program step 403 (CAR PGA 351' condition 1). Subsequently, during program step 404 the macromove number in the .DELTA.X register 109' is read into the computer 53' (R/ .DELTA.X PGA 409' condition 1) and during the following program step 405 the macroposition number then in the XCP register 117' is additively read into the computer 53' (R/XCP PGA 421' condition 1). The result, XCP + .DELTA.X, appearing in the Answer Register 53a' during program step 406, represents the target coordinate for the mid-point of this iteration. Thus, in the example illustrated in FIG. 46, which corresponds to the time period .DELTA.T 998 illustrated in FIG. 58, the new macroposition number appearing in the Answer Register 53a' during program step 406 is XCP.sub.1, shown in FIG. 58 as the X coordinate to be reached halfway through the present iteration .DELTA.T 998.

During the same program step the upgraded XCP number is transmitted to the XCP register 117' (W /XCP PGA). Similarly, to upgrade the YCP register 115', the Accumulator Register 53ab' is again cleared during program step 903 and, during the following program step 904, the macromove number .DELTA.Y is read into the computer from the .DELTA.Y register 107' by a READ control signal from the R/ .DELTA.Y PGA 415' (condition 1). The existing macroposition number is read into the computer 53' from the YCP register 115' by a control signal from the R/YCP PGA 425' (condition 1).

The resulting sum, appearing in the Answer Register 53a' during the following program step 906, representing the upgraded Y axis macroposition coordinate identified in FIG. 58 as YCP.sub.2, is written into the YCP register 115' during that program step by a WRITE signal from the W/YCP PGA 427'.

To convert the upgraded macroposition numbers stored in the XCP and YCP registers 117' and 115' from part coordinates into machine coordinates, each of the upgrading operations just described is followed by an operation whereby the offsets stored in the X OFF and Y OFF registers 365' and 367' are added to the macroposition numbers. Referring first to the upgraded XCP macroposition number, and with particular reference to Table VII, the number stored in the X OFF register 365' is read into the computer 53' during program step 408 in response to a READ control signal from the program gate 373' associated with that register. The number thus read into the computer is automatically added to the upgraded XCP number which, although transmitted from the computer to the XCP register 117' during the previous program step 406, remained in the Answer Register 53a' in the absence of an intervening CLEAR signal. Accordingly, there appears in the Answer Register 53a' during the next program step 409 a number which is, in effect, the XCP number in machine coordinates and which will be referred to as the XMP macroposition number. It is entered into the XMP register 579 by a WRITE control signal from its associated W/XMP program gate 579b during program step 415.

The sole reason for producing the XMP macroposition number is because that number is used for the 10th updating of the microposition coordinate number in the XSC register 121'. Toward this end, as explained previously, the number just stored in the XMP register 579 is read into the computer 53' during program step 416 by a READ control signal applied to the register by its associated R/XMP program gate 579a.

Subsequently, during program step 421 when the contents of the Answer Register 53a' are transferred to the XSC register 121', as indicated by the first horizontally extending line in the 021 program step row in Table VII, the XMP number is automatically entered into the XSC register 121'.

Similarly, with reference to the tenth updating of the YSC register 119', with the upgraded Y axis macroposition number YCP still in the Answer Register 53a', the Y axis offset number is read into the Answer Register from the Y OFF register 367' in response to a READ control signal from its associated program gate 381'. The result, which is the YCP number in machine coordinates, or YMP appears in the Answer Register 53a' during program step 909 and is written into the YMP register 581 during program step 915 by a WRITE control signal applied to the register by its associated W/YMP program gate 581b. This number is subsequently utilized to effect the 10th update of the YSC register 119' by again transferring it from the YMP register 581 to the computer 53' by means of a READ control signal applied to the register by its associated control gate 581a during program step 921. The number thus lodged in the Answer Register 53a' is automatically written into the YSC register 119' during program step 926 by a WRITE control signal produced by the W/YSC program gate 419' and represented by the first line extending toward the right in program step row 026 of Table VII.

c. Generating A Circular Path Segment

A general flow chart of the operations which are performed by the second exemplary system of FIG. 40 during a "standard" circular iteration appears in FIG. 49. FIG. 49 relates to a specific time period .DELTA.T2498 which is also identified specifically in the vector diagram comprising FIG. 60. The significance of this time period is that it is the last staggered circular iteration during which no overrun has been detected. It will be understood that typically, iterations of the type shown generally in FIG. 49 will have been repetitively performed many times during previous time periods .DELTA.T in generating the circular path segment. Further reference will be made to FIG. 60 in explaining the manner in which the circular path segment there shown is terminated and continued as a linear path segment. It will be sufficient to note at this point that, (a) the path segment which is executed during the time period .DELTA.T2498 corresponding to the iteration shown in FIG. 49 extends between the points P.sub.0 and P.sub.2, (b) the total excursion along the Y axis executed during that time period appears in FIG. 60 as the vector .DELTA.Y.sub.02 and finally (c) a vector quantity .DELTA.X.sub.13 is computed shortly before the point P.sub.1 is reached, this quantity representing the X axis macromove executed during the second half of the iteration .DELTA.T2498 and the first half of the following iteration .DELTA.T2499.

The computations performed during a standard linear iteration (FIG. 46) and a standard circular iteration correspond in several respects. First the manner in which the look-ahead operations are performed in the standard circular mode is identical to the manner in which those operations are performed in the standard linear mode, except for the sequence in which I and J are read to determine the fast axis. As explained in connection with the first exemplary system, (Section G. 2. d. ((2)(a)), the sequence is reversed for circular interpolation, so that J is read first (R/J PGA condition 5) and I is read second (R/I PGA condition 5). For this reason, except for the determination of the fast axis, the steps which are listed in Table IX and which relate to the look-ahead tests performed during the first part of an iteration are the same for a circular and a linear iteration. As in the case of FIG. 46, which relates to a linear iteration during which no overrun has been detected, those blocks in FIG. 49 which refer to the advancing of the E.O.B. counter 186' are crossed out.

Equally significantly, the updating and upgrading operations shown in FIG. 49 in relation to a circular iteration are identical to the corresponding operations shown in FIG. 46 with reference to a linear iteration. Again, since the operation of the second embodiment in updating and upgrading the microposition and macroposition registers respectively is the same in the linear and circular modes, those steps in Table VII which relate to these operations apply equally to both the linear and the circular mode of operation of the system.

Turning finally to the computation of .DELTA.X and .DELTA.Y in the circular mode, shown to occur in the X400 and the X900 columns of FIG. 49, these necessarily differ from the corresponding operations performed in the linear mode for reasons which have been given previously in discussing the basic concept of linear and circular interpolation. It will be helpful to observe, however, that the computational sequences performed by the second exemplary embodiment of FIG. 40 in deriving .DELTA.X and .DELTA.Y for a standard circular iteration are exactly the same as those which are carried out by the first exemplary embodiment of FIG. 9 in deriving the same quantities. This may be confirmed by comparing the operations which are shown to occur during steps 935-962 of FIG. 49 with the steps shown to be performed during the program steps 1417-1471 of FIG. 31. From that comparison it will be seen that the computations for deriving .DELTA.Y are the same in both of the exemplary embodiments. Similarly, a comparison of the operations carried out by the second exemplary system during steps 435-462 with the steps performed by the first exemplary embodiment during program steps 1917-1971 will reveal that the computations for deriving .DELTA.X are also identical in both exemplary embodiments.

The specific steps taken to derive .DELTA.X and .DELTA.Y are those given in Table VIII, Columns 400B and 900B. With reference to Column 400B, in preparation for performing the multiplication of J.sup.. Q, the multiplicand J is read into the computer 53' from the J register 101' in response to a READ control system from its associated R/J PGA 391' (condition 1). Next, the multiplier Q is read into the computer from the Q register 103' during program step 437 by a READ control signal from its R/Q PGA 389' (condition 3). It will be noted that both of the aforesaid conditions depend on an output on the CIRC line of the path type indicator 106', a signal which exists only when the system is to generate a circular path segment. The computer 53' is then instructed to multiply J.sup.. Q, this instruction originating from the X PGA 393' (condition 1). The product appears in the Accumulator Register 53ab' during program step 456 and is operated upon during the program steps 456-462 in the same manner and in response to the same control signals as described previously with reference to Column 400A of Table VIII. As a result of these operations all but the four least significant digits of the product are stored in the .DELTA.X register 109' and the four least significant digits of the product are lodged in the XR register 113'.

A similar sequence is carried out during steps listed in Column 900B to derive the macromove component number .DELTA.Y. The multiplicand I and the multiplier Q are successively read into the computer 53' from the registers 99' and 103' during program steps 935 and 937 in response to READ control signals applied to the registers by their respective Program Gate Arrays 400' and 389' (conditions 1 and 4 respectively). The numbers thus transferred are multiplied in the computer during program steps 939 - 955 in response to a multiply control signal applied to the computer by the X PGA 393' (condition 2) with the result appearing in the Accumulator Register 53ab' of the computer during program step 956. This product is split into two parts during the program steps 957-962 and stored in the .DELTA.Y and YR registers 107' and 111' in the same manner and in response to the same control signals as described previously with reference to Column 900A of Table VIII in relation to performing a linear iteration.

In principle at least, the upgrading of I by subtracting .DELTA.X and the upgrading of J by subtracting .DELTA.Y, as indicated in FIG. 49 with reference to a staggered circular iteration, are the same as the corresponding operations shown in FIG. 31 to be performed by the first exemplary system of FIG. 9 during a staggered circular iteration. There is a difference between the two, but it is only one of timing. Specifically, in the first exemplary embodiment shown in FIG. 9 and referred to with reference to FIG. 31 the I and J vector component numbers are upgraded by subtracting .DELTA.X and .DELTA.Y from the respectively, but this does not occur until immediately prior to the time when the upgraded I and J vector component numbers become needed for the subsequent computation of I.sup.. Q and J.sup.. Q respectively. In contrast, in the second embodiment of FIG. 40, as indicated by the flow chart of FIG. 49, the I vector component number is upgraded by subtracting .DELTA.X from it immediately after that .DELTA.X number becomes available, that is, immediately after the .DELTA.X number has been computed by multiplying J.sup.. Q. The upgraded I number, while available shortly before the second half of the iteration, i.e., toward the end of the 400 column of the iteration, is not utilized until half an iteration later when it is multiplied by Q to derive the next macromove number. Similarly, the J vector component number is computed by subtracting from it the macromove number .DELTA.Y immediately after that macromove number has been computed by multiplying I.sup.. Q. Again, the upgraded J vector component number simply remains stored and is not utilized until half an iteration later, at which time it is multiplied by Q to derive the next .DELTA.X macromove number.

The above difference between the first and second exemplary embodiments in timing the upgrading of I and J is of no consequence to the operation of the system. It does illustrate, however, the many equivalent alternatives between which a designer may choose without departing from the scope of the present invention.

The particular steps for upgrading of I and J are listed in Table VIII, Columns 400B and 900B. Referring first to the upgrading of I, it is performed in exactly the same manner and for exactly the same reason as described previously with reference to Tables VI and VI-A in Sections H.2.f.(1) and H.2.f.(3). Thus, the I number is entered into computer 53' from the I register 99' in response to a signal from the R/I PGA 400' (condition 4) and the macromove number .DELTA.X is subtracted therefrom during the following program step 463 by reading the number .DELTA.X from the .DELTA.X register 109' in response to a signal from the R/ .DELTA.X PGA 409' (condition 11) while concurrently applying a subtract control signal to the computer 53' from the SX PGA 479' (condition 1). Finally, the remainder is transmitted from the Answer Register 53a' during program step 464 to the I register 99' as the upgraded I number by a control signal applied to the register by its associated W/I PGA 355' (condition 1). The sequence is terminated by clearing the entire Accumulator Register 53ab' by a clear control signal from the CAR PGA 351' (condition 8).

In a similar manner, to upgrade the J number, it is first transferred during program step 962 from the J register 101' by a signal from the R/J PGA 391' (condition 4). The just computed .DELTA.Y number is then subtracted from the J number during the following program step 963 by the application of a READ control signal to the .DELTA.Y register 107' from its R/ .DELTA.Y PGA 415' (condition 11) and by the application of a subtract control signal to the computer 53' by its SX PGA 479' (condition 2) during the same program step. The remainder, representing the upgraded J number, is written into the J register 101' during program step 964 by application of a WRITE control signal to the register from its W/J PGA 357' (condition 1).

d. Going From a Linear Path Segment To a Circular Path Segment

1. Assuming That the Desired Transition Is In Zone A

Reference will now be made to FIG. 58 to explain the manner in which a transition is made in the second exemplary system of FIG. 40 in going from a linear path segment to a circular path segment. The linear path segment is represented by the vector 621, and its X and Y components are shown by the vectors I.sub.LIN and J.sub.LIN. It will be understood that the generation of the illustrated linear path segment 621 will have begun during the iteration .DELTA.T000 and that a FIG. 46 type standard linear iteration will have been performed during that time period and during each of the following time periods up to and including .DELTA.T998. However, in order to reduce the size of FIG. 58, only the last of these iterations is shown.

Progress along the linear path segment 621 extends through points P0, P1, P2, P3, and P4 during time periods .DELTA.T998 and .DELTA.T999. The desired transition point between the linear path segment 621 and the following tangential circular path segment 623 is XCEP/YCEP and is crossed during the first half of the next iteration, .DELTA.T1000. Hence, it is termed a "Zone A" transition.

During iteration .DELTA.T1000 the path which is actually executed is neither purely linear nor purely circular. Therefore, the point P5 which falls on the extension of the linear path segment 621 is not exactly on the actual path which is executed during the transitional time period .DELTA.T1000. It is, however, a close approximation. Subsequent points which are passed at the beginning and midpoint of successive iterations along the circular path segment 623 are shown as the points P6, P7, P8, and P9.

The block of data representing the circular path segment 623 typically includes the inverse radius vector components I.sub.BUF and J.sub.BUF of the starting radius vector extending from the center C of the path segment 623 to the desired transition point XCEP/YCEP. Stated differently, I.sub.BUF and J.sub.BUF represent the X and Y coordinate distance from the transition point XCEP/YCEP to the center C of the circular path segment 623. As will be explained in detail, the transition from the linear path segment 621 to the circular path segment 623 will be made by changing over from the linear mode to the circular mode at the beginning of iteration .DELTA.T1000 for the Y axis and at the start of the second half of the iteration .DELTA.T1000 for the X axis.

Turning now to the description of the entire sequence of transition from the linear path segment 621 to the circular path segment 623, let it be assumed that the initial series of iterations .DELTA.T1000 - .DELTA.T997 have been performed an that the FIG. 46 type of iteration to be carried out during the time period .DELTA.T998 is about to begin. As explained previously with reference to FIG. 46, neither of the look-ahead operations performed during this iteration reveals a proximity to the end point XCEP/YCEP and the path segment 621 is extended along the Y axis by the distance .DELTA.Y.sub.02 from the point P.sub.0 to the point P2 during iteration .DELTA.T998, and along the X axis by the distance .DELTA.X.sub.13 from the point P.sub.1 to the point P.sub.3, during the second half of iteration .DELTA.T998 and during the first half of the following .DELTA.T999.

At the beginning of the iteration .DELTA.T999 another pair of look-ahead operations are performed, as indicated by the vectors 625, 627 and 629. Since the designated end point XCEP/YCEP falls in Zone A of the time period .DELTA.T1000, proximity to it is revealed by the first, or 1.5 .DELTA.X, look-ahead test, causing the counter 186' to be advanced from its S1 to its S3 count state as a result. The operations which are performed during the iteration .DELTA.T999 are shown in FIG. 47 and it may be observed there that the particular block in the first column which refers to advancing of the counter 186' to its count state S3 is not crossed out. The advancing of the End of Block Counter 186' occurs during program steps 1047 and 1048, as shown in Table IX, and the necessary program gates for permitting a program clock pulse to be applied to the counter during those program steps are represented by conditions 1 and 2 of PGA 183' of the Time Base Mode Selector 69'.

For reasons which need not be explained in this description of the second exemplary system, it is desirable to use the J.sub.BUF and Q.sub.BUF numbers in calculating the .DELTA.X macromove component during the first of the linear to circular Zone A type transitional iterations, i.e., the iteration shown in FIG. 47. Thus, the J and Q numbers which are associated with the following circular path segment 623 are used to compute .DELTA.X.sub.35, the X coordinate distance from the point P3 to the point P5, and the equation used is .+-.J.sub.BUF .sup.. Q.sub.BUF = .DELTA.X.sub.35, which applies for a circular path segment. Insofar as the actual path generated thereby is concerned, however, the result will be the same as that which would be produced had .DELTA.X.sub.35 been produced by multiplying I.sup.. Q, using the numbers associated with the linear path segment 621. This is so because the two path segments 621 and 623 are tangential at the transition point XCEP/YCEP. FIG. 58 is shown with an exaggerated, enlarged scale. Thus, in actual fact or with a negligible error, the X coordinate distance from the point P.sub.3 to the point P.sub.5 will be the same for the circular path segment 623, produced by the computation .+-.J.sub.BUF .sup.. Q.sub.BUF as it would be for the linear path segment 621, computed as I.sup.. Q.

As indicated in the heading of Table VIII, Column 400C, one of the necessary conditions for transferring J.sub.BUF and Q.sub.BUF from buffer to active and for performing the computation .DELTA.X.sub.35 =.+-.J.sub.BUF.sup.. Q.sub.BUF is that the counter 186' be in its S5 count state. Accordingly, means are provided to advance the counter 186' to its S5 count state in response to its previous advancement to its S3 count state. These means are program gates which are part of the PGA 183' and are represented therein by conditions 6 and 7. As shown in Column X300 of Table VII, the counter 186' is advanced to its S4 count state during step 00 provided that it is found in its S3 count state during that program step. The counter 186' is further advanced automatically during step 397 near the end of the same Column X300. As a result, prior to the commencement of the following column of the iteration, the necessary conditions X400.sup.. S.sub.5.sup.. (G.sub.02 + G.sub.03) for Column 400 C of Table VIII are met, since, with the following path segment being a circular one, a signal will also be produced on the G.sub.02 + G.sub.03 output of the G BUFFER decode unit 221'. Referring to Table VIII, Column 400 C, the updating and upgrading operations are performed in the same manner as described with reference to Table VII and the standard linear iteration as shown in FIG. 46.

Turning to the computation of .+-.J.sub.BUF .sup.. Q.sub.BUF, the J number associated with the circular path segment 623 is transmitted from the J.sub.BUF register 47J' to the computer 53' during program step 435 (RD/J BUF PGA 353' condition 1). The Q number, also associated with the following path segment 623, is read from the Q BUF register 47Q' during program step 437 into the computer 53' (RD/Q BUF PGA 385' condition 1). The multiplication .+-.J.sub.BUF .sup.. Q.sub.BUF is then carried out by the computer 53' during the steps 439-455 (X PGA 393' condition 1). The product is handled in the same manner as described previously with reference to Column 400 A of Table VIII, with the four least significant digits being stored in the XR register 113' and the higher order digits being stored in the .DELTA.X register 109'. It will be noted that the computation performed during program steps 439-455 is in accordance with basic equation (8a), discussed in detail with reference to FIG. 6d, and that the resulting macromove number is represented in FIG. 58 as the vector .DELTA.X.sub.35 (LIN). The reason for characterizing .DELTA.X.sub.35 as a linear vector even though it is the result of a computation typical of a circular path segment is that, as explained previously, it is substantially the same as that which would have resulted had it been computed on the basis of I.sup.. Q using the numbers associated with the linear path segment 621. The macromove number .DELTA.X.sub.35 (LIN) is executed in ten substantially equal micromoves during the second half of the time period .DELTA.T999 and the first half of the following time period .DELTA.T1000.

The next major computation to be performed during time period .DELTA.T999 is that directed to deriving the Y axis macromove .DELTA.Y.sub.46 which will be required during the following time period .DELTA.T1000 to execute the required movement along the Y axis from point P4 to P6. In making this computation there is first derived the inverse X component I.sub.* of a radius vector R.sub.1 which extends from the center C of the path segment 623 to the point P5. Once this quantity has been derived, it is used to compute, in the manner described previously with reference to FIG. 6, the Y component of the chord D.sub.1 which extends between the points P4 and P6 and which is intersected at its midpoint by the radius vector R.sub.1. The number which is presently in the I BUF register 471' is the inverse X component of the "starting" radius vector which extends from the center C of the path segment 623 to the transition point XCEP/YCEP. Thus, in order to derive the inverse X component I.sub.* of the radius vector R.sub.1, the starting radius vector whose inverse X component is presently available in the I BUF register 471' must be "projected ahead" until it extends to the point P5. The calculations for deriving the inverse X component I.sub.* of the forward projected radius vector are labeled "Prorate Calculations for I" in FIG. 47 and are performed during Column 800 of the iteration, with the system in Mode 2.

In order to place the system in its second mode of operation, the End of Block Counter 186' is advanced to its S6 count state during program step 500 (see Table VII, Column X500). The program gate for causing the counter thus to be advanced is represented in PGA 183' by condition 10. With the counter 186' producing a signal on its S6 output, an enabling Logic 1 voltage level is passed through the OR gate 571 of the Time Base Mode Selector 69' to the M2' input line of the Multi-Mode Time Base Logic 67', thereby placing the system into its second operating mode. Consequently, the operations which are performed during the ninth sub-period of the time period .DELTA.T999 are those which are listed in Column 2800 of Table X. The "Prorate Calculations for I" are performed during program steps 2870 - 2876. The first operation in the process, executed during program steps 2870 - 2873, is to compute X.sub.A = XCP.sub.3 -XCEP, representing the X coordinate distance from the designated end point XCEP/YCEP to the point P3 and shown by the similarly labeled vector in FIG. 58. During program step 2870 the Accumulator Register 53ab' is cleared and the number XCP.sub.3 is read into the computer 53' from the XCP register 117' (CAR PGA 351' condition 12 and R/XCP PGA 421' condition 3). To subtract XCEP from XCP.sub.3 it is subtractively read from the XCEP register 95' into the computer 53' during program step 2871 (R/CXEP 359' condition 2 and SX PGA 479' condition 5). The next step in the "Prorate Calculations for I" is to compute X.sub.B = X.sub.A + .DELTA.X. The number X.sub.B is the X coordinate distance from the designated end point XCEP/YCEP to the point P5 and is also represented in FIG. 58 by a correspondingly labeled vector. To compute X.sub.B, the number .DELTA.X.sub.35 is additively read into the computer 53' from the .DELTA.X register 109' during program step 2872 (R/.DELTA.X PGA 409' condition 15) and the result, XCP.sub.3 -XCEP +.DELTA.X.sub.35 = X.sub.B is written into the Scratch Pad register 582 during the following program step 2873 (W/SP PGA 583 condition 2).

The "Prorate Calculations for I" are completed by the computation of I.sub.* = I.sub.BUF -X.sub.B. From FIG. 58 it may be observed that subtraction of the X.sub.B vector from the I.sub.BUF vector results in the vector labeled "I.sub.* ", which is the desired X coordinate distance from the point P.sub.5 to the center C of the circle, or, stated differently, the inverse X component of the desired radius vector R.sub.1.

To compute I.sub.* = I.sub.BUF -X.sub.B, the Accumulator Register 53ab' is first cleared and then the contents of the I.sub.BUF register 47I' are read into the computer 53', both during program step 2874 (RD/I BUF PGA 349' condition 2 and CAR PGA 351' condition 14). With the minuend thus stored in the computer 53', the subtrahend X.sub.B is next read subtractively into the computer from the Scratch Pad register 582 (R/SP PGA 585 condition 2 and SX PGA 479' condition 7). The result, I.sub.* = I.sub.BUF -X.sub.B, appearing in the Answer Register 53a' during program step 2876, is written into the I Active Register 99' during the same program step (W/I PGA 355' condition 2). Subsequently, but still during the same program step, the Prorate Calculations for I.sub.* are completed by clearing the Answer Register (CAR PGA 351 condition 16). The remaining operations, listed by way of horizontal arrows extending into Column 2800 of Table X, are all conditioned on the presence of an output signal on the S7 output of the decoder 187' and consequently are not performed during the iteration represented by FIG. 47.

The I.sub.* which was computed and stored in the I register 99' as a result of the Prorate Calculations just described is utilized during the final column or sub-period of the iteration in computing .DELTA.Y.sub.46. The computation, .+-.I.sub.* .sup.. Q.sub.BUF, is carried out during program steps 935-962. The specific steps performed as part of the computation are those listed in Column 900 D in Table VIII. By comparing Column 900D with Column 900B, the column which relates to a standard circular iteration, it may be seen that the steps which are performed as part of the computation .+-.I.sup.. Q.sub.BUF are exactly the same, with the only exceptions being that the source of the multiplier is the Q BUF register 47Q' (RD/Q BUF PGA 385' condition 2), and that the reading of I is in response to condition 2 of R/I PGA 400'. All of the other operations represented by the program steps in Column 900D are identical to those previously explained with reference to Column 900B and need not be described here again. Suffice it to say that the four least significant digits of the product are stored in the YR register 111' for subsequent use and that the higher order digits of the product, comprising the desired macromove number .DELTA.Y.sub.46, are stored in the .DELTA.Y register 107'.

The foregoing computation of .DELTA.Y.sub.46 completes the operations performed during .DELTA.T999. The following iteration, occuring during time period .DELTA.T1000, is shown generally in the flow chart of FIG. 48. As in the case of the previous iteration, the upgrading and updating operations are performed in the same manner as in the standard iteration, these steps having been explained previously with reference to Table VII. A principal feature of the iteration illustrated in FIG. 48 is the performance of prorate calculations for J and the subsequent transfer of the numbers from the Q and G Buffer Registers, Q BUF and G BUF. The latter transfer operations are conditioned on the presence of a signal on the S7 output of the counter 186'. Consequently, in response to the advancement of the counter 186' during the preceding iteration to its S6 count state, the counter is advanced to its S7 count state during the first program step 000 of the FIG. 48 iteration (PGA 183' condition 11).

The reasons behind the prorate calculations for J are similar to those considered previously with reference to the prorate calculations for I. Specifically, it will be recalled that the desired X component of motion was last computed as the macromove .DELTA.X.sub.35 and that this macromove was, in effect, the X coordinate distance from the point P3 to the point P5 on the linear path segment 621. The object of the prorate calculations for J is to permit the computation of the X component of a chord D.sub.2 extending from the point P5 to the point P7 and subtending the initial portion of the arc 623. As will be recalled from the basic analysis of circular interpolation with reference to FIG. 6, in order to compute the macromove component .DELTA.X.sub.57 it will be necessary first to derive the inverse Y component of the radius vector R.sub.2 which extends from the center C of the arc to the point P.sub.6, which is midway between points P.sub.5 and P.sub.7 on the arc. Thus, in effect, the starting radius vector extending from the center C to the transition point XCEP/YCEP must be "projected forward" by more than one-half macromove and the Y component J.sub.* of this forward projected radius vector R2 must be computed.

The prorate calculations involve three steps again, as in the case of the prorate calculation for I, with the first step comprising the calculation YCP.sub.4 -YCEP. The result, Y.sub.A, is seen in FIG. 58 to be the Y coordinate distance from the desired transition point XCEP/YCEP to the point P.sub.4. The necessary operations are listed in Column 2300 to Table X and include clearing of the Accumulator Register 53ab' during program step 2370 and the transmission of the number YCP.sub.4 from the YCP register 115' to the computer 53' during the same program step *CAR PGA 351' condition 11 and R/YCP PGA 425' condition 3). The end point coordinate number YCEP is then subtracted from the number YCP.sub.4 during program step 2371 by subtractively reading it into the computer 53' during program step 2371 (R/YCEP PGA 487' condition 2 and SX PGA 479' condition 4).

The second step of the prorate calculations is to add to the remainder Y.sub.A stored in the Answer Register 53a' the macromove number .DELTA.T.sub.46, which, it will be recalled, was just computed as a result of the computation performed during Column X900 of the preceding iteration during time period .DELTA.T999. The significance of this step will be understood when it is observed from FIG. 58 that the macromove number .DELTA.Y.sub.46 is positive, whereas the previously computed remainder Y.sub.A is negative. Thus, when Y.sub.A is added to .DELTA.Y.sub.46 the effect is to subtract Y.sub.A from .DELTA.Y.sub.46 so as to produce a remainder shown in FIG. 58 as the vector Y.sub.B. This remainder represents the Y coordinate distance from the point XCEP/YCEP to the point P.sub.6.

The operations involved are performed during program steps 2372-2373. During these program steps the macromove number .DELTA.Y.sub.46 is transmitted from the .DELTA.Y register 107' to the computer 53' (R/.DELTA.Y PGA 415' condition 15) and the result Y.sub.B = .DELTA.Y.sub.46 + Y.sub.A, appearing in the Answer Register 53a' during the following program step 2373, is transmitted therefrom to the Scratch Pad Register 582 during that program step for temporary storage (W/SP PGA 583 condition 1). It will now be readily seen from FIG. 58 that by subtracting the positive number Y.sub.B from the negative inverse radius vector component number J.sub.BUF, the desired inverse component number J.sub.* of the forward projected radius vector R2, representing the Y coordinate distance from the point P6 to the center C will be obtained. This is the third of the prorate calculations for J and is performed during program steps 2374-2375. After first clearing the Accumulator Register 53ab' (CAR PGA 351' condition 13) the J.sub.BUF component number is read from the J BUF register 47J' and is additively applied to the computer 53' (RD/J BUF PGA 353' condition 2). To subtract the number Y.sub.B, which is presently in the Scratch Pad Register 582, from the number Y.sub.BUF which is in the computer 53', the number Y.sub.B is subtractively read from the Scratch Pad Register 582 into the computer 53' during program step 2375 (R/SP PGA 585 condition 1 and SX PGA 479' condition 6). The result, J.sub.* = J.sub.BUF - YB, stored in the Answer Register 53a' during program step 2376, is transferred during that program step to the J active register 101' and the computation is closed by clearing the Answer Register 53a' (W/J PGA 357' condition 2 and CAR PGA 351' condition 15).

The J.sub.* number, just calculated, remains in the J active register 101' until the following sub-period for Column X400 of the .DELTA.T1000 iteration, at which time it is used as the multiplicand of the computation J.sub.* .sup.. Q. Before this computation is performed, however, the Q and G numbers associated with following circular path segment are transferred from buffer to active, these operations being performed during program steps 2377-2379, listed in Column 2300 of Table X. From Table X it will be observed that these transfer operations are conditioned on the counter 186' being in its S7 count state, a condition which was brought about by stepping the counter 186' into that count state at the beginning of the iteration .DELTA.T1000. The new Q number is read into the computer 53' from the Q BUF register 47Q' during program step 2377 (R/Q BUF PGA 385' condition 3) and is re-transmitted from the Answer Register 53a' during the following program step 2378 into the Q active register 103' (W/Q PGA 387' condition 1). During the same program step the G number associated with the following circular path segment is transmitted from the G BUF Register 47G' to the computer 53' (RD/G BUF PGA 251G' condition 1) and is again transmitted from the Answer Register 53a' during the program step 2379 into the G active register 105' (W/G PGA 409' condition 1).

Following the transfer of Q and G from buffer to active, the counter 186' is once again advanced, this time from its count state S7 to its count state S8 (PGA 183' condition 13). As a result, the M3' input line of the group of AND gates 179' forming part of the Multi-Mode Time Base Logic 67' is enabled, thereby placing the system in its third operating mode. This does not have any effect on the operation performed by the system until the next to the last sub-period of the iteration because none of the operations prior to that sub-period, or column, in FIG. 48, are programmed to take place only when the system is in its third operating mode. During the next to the last column of the iteration, however, labeled "3800," the designated end point coordinates XEP and YEP associated with the following circular path segment 623 are transferred as a direct result of the system having been placed in its third operating mode during that iteration.

Returning now to the computations directed to deriving the X axis macromove .DELTA.X.sub.57, these computations follow the equation .DELTA.X.sub.57 = .+-.J.sub.* .sup.. Q, where Q is the new macromove quotient which was just transferred into the active Q register 103'. The broad outlines of the computation of .DELTA.X.sub.57 appear in Column X400 of FIG. 48. Its details are listed in Column 400B of Table VIII.

It should be noted that the computation .+-.J.sub.* .sup.. Q is simply the standard equation for circular interpolation which was previously referred to with reference to FIG. 6 as the equation (18). Thus, the number J.sub.* is simply the required J component of a radius vector and the only way in which it differs from the J number shown, for example, in Column X400 of FIG. 49, is the manner in which it was derived. Thus, the computations which are performed during program steps 435-464 of the .DELTA.T1000 iteration shown in FIG. 48 follow exactly the same sequence as those which are performed during Column X400 of a standard circular iteration such as the one shown in FIG. 49 and described with reference to that Figure. Consequently, this series of operations need not be described again, since their sequence and the control signals which bring them about are precisely the same and are represented by the same program gate conditions as those appearing in Column X400 of FIG. 49. Thus, the first full circular macromove, .DELTA.X.sub.57 , becomes available during Column X400 of the iteration .DELTA.T1000 and is subsequently executed during the second half of that iteration and the first half of the following iteration .DELTA.T1001 through the process of updating, as explained previously with reference to a standard circular iteration.

As mentioned earlier, the designated end point coordinate numbers XEP and YEP are transferred during Column 3800 of the FIG. 48 iteration .DELTA.T1000 during program steps 3835-3837. The detailed steps appear in Table XI and involve the transmission of the XEP number during program step 3835 from the XEP register 47X' to the computer 53' (RD/XEP BUF PGA 359' condition 2) and the subsequent re-transmission of the XEP number from the Answer Register 53a' during program step 3836 to the XCEP active register 95' (W/XCEP PGA 375' condition 2). The Accumulator Register 53ab' is then cleared (CAR PGA 351' condition 26) and the YEP end point coordinate number is transmitted to the computer 53' from the YEP BUF Register 47Y' (RD/YEP BUF PGA 377' condition 2). The number appears in the Answer Register 53ab' during the following program step 3837 and is transmitted during that program step to the YCEP active register 97' (W/YCEP PGA 383' condition 2). During the same program step the entire Accumulator Register 53ab' is cleared (CAR PGA 351' condition 28).

Referring again to FIG. 58, the next macromove to be computed is .DELTA.Y.sub.68 for the Y coordinate distance from the point P6 to the point P8. Because the points P6 and P8 happen to have approximately the same Y coordinates in the vector diagram of FIG. 58, the macromove .DELTA.Y.sub.68 cannot be shown there. Nevertheless, whatever its size, it must be determined or computed before the commencement of the iteration .DELTA.T1001. In fact, the computation for deriving .DELTA.Y.sub.68 takes place during Column X900 of the iteration .DELTA.T1000 appearing in FIG. 48, and it is seen to conform to the previously described equation (19) appearing in FIG. 6 and also in FIG. 49. Thus, the multiplicand I used in the computation .+-.I.sup.. Q during Column X900 is that which was derived during Column X400 by subtracting .DELTA.X.sub.57 from the previous value of I, this previous I number having been stored in the I register 99' and representing the X coordinate distance from P5 to the center C of the circular path segment 623. Thus, the upgraded I number which is used in the computation of .+-.I .sup.. Q during Column X900 in FIG. 48 is the X coordinate distance from the point P7 to the center C, i.e., the inverse I component of the radius vector extending from the center C of the path segment 623 to the point P7 thereof. The computation of .+-.I.sup.. Q is then performed during program steps 935-962 in exactly the same manner as it is during a standard circular iteration such as that shown and described with reference to FIG. 49. Following that computation, the product is split into two parts with its four least significant digits being stored in the YR register 111' and with its higher order digits being stored in the .DELTA.Y register 107' as the macromove number .DELTA.Y.sub.68.

Following the computation of the .DELTA.Y.sub.68 number, that number is utilized immediately to upgrade the J number being held in the J active register 101' by subtracting .DELTA.Y.sub.68 therefrom. The upgrading of J is performed during program steps 963-964 in the same manner and in response to the same signals as described previously with reference to the corresponding operation in FIG. 49. The resulting upgraded J number, representing the Y coordinate distance from the point P8 to the center C of the circular path segment 623, will be used during the following iteration .DELTA.T1001, the standard circular iteration shown in FIG. 49, to compute the X axis macromove .DELTA.X.sub.79.

Having transferred all of the numbers associated with the path segment 623 from buffer to active, the tape reader 41' will now be started in order to cause the data block comprising the numbers associated with the path segment which follows the circular path segment 623 to be transferred from the tape to the buffer registers. The starting of the tape reader 41' is conditioned on the counter 186' being in its S9 count state and also on the Time Base and Digital Sweep 63' producing the number 991. Consequently, as a first part of initiating the starting of the tape reader 41' the counter 186' is advanced from its S8 count state to its S9 count state during program step 3879 (PGA 183' condition 16). Subsequently, during Column X900 and in particular during program step 991 an enabling signal is applied to the tape reader start control flip-flop 257' by the program gate 269' whose inputs are connected to the 900, 90, and 1 outputs of the Time Base and Digital Sweep 63' (FIG. 40b).

The iteration to be performed during program step .DELTA.T1001 is a standard circular iteration as shown in FIG. 49. Consequently, the system must be returned to its Mode 1 during the final steps of the iteration .DELTA.T1000. Accordingly, the counter 186' is rapidly stepped from its S9 count state through its count states S10-S16 to its S1 count state during program steps 992-999. These steps are shown in detail in Table VII, Column X900, and the appropriate program gates are represented in PGA 183' by the conditions 17-24. As a result, the system is placed in its Mode 1 during program step 999 of iteration .DELTA.T1000. Consequently, the following iteration .DELTA.T1001 is a standard circular iteration according to FIG. 49 and this type of iteration is repeated many times in generating the circular path segment 623. The flow chart appearing in FIG. 45 is based on the assumption that the FIG. 49-type standard circular iterations are repeated until time period .DELTA.T2498 which, in the example illustrated in FIG. 45, is followed by a series of transitional iterations leading into a linear path segment. This circular to linear transition will be explained subsequently with reference to FIG. 60, but first there will be described another type of linear to circular iteration, one in which the desired transition point is in Zone B, as shown in FIG. 59.

2. Assuming the Desired Transition is in Zone B

The transition from a linear path segment to a circular path segment under circumstances in which the desired transition occurs in Zone B is illustrated in FIG. 59. As might be expected, the operations which are performed in the latter case are for the most part analogous to those which are performed under the circumstances illustrated in FIG. 58. To stress the similarities, the vector diagrams comprising FIGS. 58 and 59 are drawn to the same scale and are identical in many respects. Thus, in both FIGS. 58 and 59 the initial iterations performed during time periods .DELTA.T1000 - .DELTA.T997 in generating the linear path segment 621 are foreshortened to conserve space. The first iteration shown fully is, in both cases, that performed during time period .DELTA.T998. In executing the final portion of the linear path segment, the points P0, P1, P2, P3 and P4 are traversed during iterations .DELTA.T998 and .DELTA.T999 and an additional point P5 is traversed before the designated end point XCEP/YCEP is reached during the second half of the iteration .DELTA.T1000.

The iteration performed during the time period .DELTA.T998 is again the standard linear iteration explained in detail previously with reference to FIG. 46 and need not be discussed further. Neither of the look-ahead operations, projected forward from the point P.sub.0 during that iteration, yields a positive result, since the end point XCEP/YCEP is more than 2 macromoves away from the point P.sub.0. During the following time period .DELTA.T999, proximity to the end point XCEP/YCEP is detected during the second of the look-ahead operations. This requires a different response by the system than that indicated in the circumstances depicted in FIG. 58 where a proximity to the end point XCEP/YCEP was detected as a result of the first look-ahead operation performed during the time period .DELTA.T999. The iteration performed during the time period .DELTA.T999 under the circumstances depicted in FIG. 59 is shown in FIG. 50. It will be noted that the third block in the first column of the FIG. 50 iteration is crossed out, indicating that the counter 186' was not advanced to its S3 count state, since the remaining distance to the designated end point XCEP/YCEP was not detected to be less than 1.5 macromoves. It will also be noted, however, that the fourth block in the first column of the iteration is not crossed out, thus indicating that the End of Block Counter 186' was advanced to its S2 count state as a result of the second, 2 macromove, look-ahead test which revealed that the remaining distance from the point P2 to the designated end point XCEP/YCEP along the X axis was between 1.5 and 2 macromoves.

The manner in which the look-ahead operations are performed have been explained previously. It need only be noted that the counter 186' is advanced to its S2 count state during program step 1053, as shown in Table IX, in response to an SST signal produced during that program step by the Fast Axis Projected Overrun Detector 71' (FIG. 40e). Because the counter 186' was not advanced to its S3 count at the beginning of time period .DELTA.T999, the computation of .DELTA.X.sub.35 during column X400 of the iteration shown in FIG. 50 is performed exactly as it would be during a standard linear iteration, such as that shown in FIG. 46. The first significant effect of advancing the counter 186' to its S2 count state at the beginning of time period .DELTA.T999 is to cause the numbers which are then stored in the I BUF and Q BUF registers 47I and 47Q', and which are associated with the following circular path segment 623, to be used during column X900 of the iteration to compute the new macromove number .DELTA.Y.sub.46. As explained previously, the reason why it is desirable to utilize these numbers which are associated with the following path segment need not be understood by the reader. It is sufficient to understand that, as in the case of the corresponding macromove computation discussed with reference to FIG. 58, .+-.I.sub.BUF .sup.. Q.sub.BUF yields essentially the same result for .DELTA.Y.sub.46 as if the linear path computation J.sup.. Q had been used, because the linear path segment 621 is tangential to the circular path segment 623. Thus, in effect, .DELTA.Y.sub.46, computed as .+-.I.sub.BUF.sup.. Q.sub.BUF, is the Y component of that portion of the linear path segment 621 which extends from the point P4 to the point P6. This is seen from FIG. 59 to be appropriate, since the transition point XCEP/YCEP does not occur until after the point P5 has been passed.

The operations necessary to compute .+-.T.sub.BUF.sup.. Q.sub.BUF are listed in Column 900C of Table VIII. As may be seen from the heading of that column, counter 186' must be in its S5 count state in order that the listed operations be performed by the system. Accordingly, during Column X800 of the FIG. 50 iteration the counter is advanced first from its S2 count state to its S4 count state during program steps 800 and 801 in response to the counter having been previously advanced to its S2 count state as a result of the second overrun test performed at the beginning of that iteration. At the end of the same column, X800, during program step 897, counter 186' is advanced to its S5 count state. The program gates for causing the counter 186' to be thus advanced are represented in the Program Gate Array 183' by the conditions 4, 5 and 8. Additionally, the steps are listed in Table VII, Column X800.

The multiplicand I.sub.BUF and the multiplier Q.sub.BUF are read from the buffer registers 47I' and 47Q' into the computer 53' during program steps 935 and 937 respectively (RD/I BUF PGA 349' condition 1 and RD/Q BUF PGA 385' condition 2). With respect to RD/I BUF PGA 349' condition 1, it will be noted that it calls for the presence of a signal on the G.sub.02 + G.sub.03 output of the G buffer decode unit 221' and that such a signal is indeed present at that output, since the following path segment is to be a circular one. Furthermore, with respect to the RD/Q BUF PGA 385' condition 1, it will be observed that it requires a PX2 signal at the output of the AND gate 575 of the Time Base Mode Selector 69'. That signal is produced under the existing conditions by the presence of the G.sub.02 + G.sub.03 signal at one of the inputs of the AND gate 575 and by the concurrent presence at the other input of the AND gate 575 of the signal produced at the S5 output of the decoder 187', the latter signal being passed to that input of the AND gate 575 through the OR gate 573.

The multiplication of .+-. I.sub.BUF.sup.. Q.sub.BUF is performed in the same manner as was explained with reference to the Column 900A of Table VIII except that, of course, the sources of the multiplier and of the multiplicand are different. As in the case of Column 900A, the multiplication process is initiated by a multiply control signal from the X PGA 393' (condition 2). The product of the multiplication is split into two parts, with its four least significant digits being stored in the YR register 111' and with its higher order digits being stored in the .DELTA.Y register 107' as the macromove number .DELTA.Y.sub.46. The macromove number .DELTA.Y.sub.46 thus computed is executed during the following iteration .DELTA.T1000 in 10 micromoves.

The operations which are performed during time period .DELTA.T1000 are shown in FIG. 51, which illustrates the second of the linear to circular transitional iterations performed when the desired transition point is in Zone B. During the first half of the time period .DELTA.T1000 the execution of the macromove number .DELTA.X.sub.35, which was computed during the previous iteration .DELTA.T999, will be completed and the new macromove number .DELTA.X.sub.57 will have to be computed during the Column X400 of the current iteration in order to provide the necessary data for executing movement along the X axis past the point P5. Of the total movement which is to be executed between the points P5 and P7 during the second half of time period .DELTA.T1000 and the first half of the following time period .DELTA.T1001, only the initial portion, that which extends from the point P5 to the point XCEP/YCEP is to be linear. The remaining and larger portion of the path segment, extending from the point XCEP/YCEP to the point P7 is seen to be part of the circular path segment 623. Consequently, the macromove .DELTA.X.sub.57 is better computed through the process of circular interpolation as the X component of the chord D1 which extends from the point P5 to the point P7. In order to perform this computation it will first be necessary to derive the Y component J.sub.* of the radius vector R1 extending from the center C of the arc 623 to the point P6.

As may be seen from FIG. 59, the radius vector R1 intersects the chord D1 at right angles and is the appropriate radius vector for computing the X component of that chord. As in the case of the transition explained with reference to FIG. 58, however, neither component of the radius vector R1 is initially given. It must, instead, be derived from the initially available Y component J.sub.BUF of the starting radius vector (not shown in FIG. 59) which extends from the center point C to the transition point XCEP/YCEP. The calculations necessary to derive J.sub.* from J.sub.BUF are listed as the "Prorate Calculations for J" in Column 2300 of the iteration shown in FIG. 51. These operations are analogous to the prorate calculations for I, which were explained previously with reference to FIGS. 47 and 58. An understanding of the efficacy of the prorate calculations for J will be readily gained by comparing them with the corresponding vectors in FIG. 59. Very briefly, Y.sub.A = YCP.sub.4 -YCEP is first computed and the negative number Y.sub.A is added to the positive macromove number .DELTA.Y.sub.46, thereby yielding the number Y.sub.B representing the Y coordinate distance from the point XCEP/YCEP to the point P6, which, it will be recalled, is on the linear path segment 621. Finally, the Y.sub.B number which is positive, is subtracted from the originally given number J.sub.BUF, which is negative, resulting in the larger negative number J.sub.*, representing the Y coordinate distance from the point P6 to the center point C of the path segment 623.

The particular steps which form part of the prorate calculations for J are listed in Table X in Column 2300. To place the system in its second operating mode the counter 186' is advanced at the beginning of the FIG. 51 iteration from its S5 count state to its S6 count state. From Table VII it is seen that this occurs during the first program step of the iteration in response to the counter having been advanced to its S5 count state during the previous iteration. The appropriate program gate is listed as condition 9 in the PGA 183'. To compute Y.sub.A = YCP.sub.4 - YCEP the Accumulator Register 53ab' is cleared and the number stored in the YCP register 115' is entered in the computer 53' during program step 2370 (CAR PGA 351' condition 11 and R/YCP PGA 425' condition 3). YCEP is subtracted from YCP.sub.4 during program step 2371 (R/YCEP PGA 487' condition 2 and SX PGA 479' condition 4). The next computation, Y.sub.B = Y.sub.A + .DELTA.Y.sub.46 is performed during the next program step 2372 by reading the .DELTA.Y.sub.46 macromove number from the .DELTA.Y register 107' (R/.DELTA.Y PGA 415' condition 15) and the result is written into the Scratch Pad register 582 during program step 2373 from the Answer Register 53a' (W/SP PGA 583 condition 1).

The third computation, J.sub.* = J.sub.BUF - Y.sub.B, is initiated by clearing the Accumulator Register 53ab' and by reading the numbers contained in the J BUF register 47J' into the computer 53' during program step 2374 (CAR PGA 351' condition 13 and RD/J BUF PGA 353' condition 2). The Y.sub.B number being held in the Scratch Pad register 582 is subtracted during program step 2375 (R/SP PGA 585 condition 1 and SX PGA 479' condition 6) from J.sub.BUF which is in the computer 53'. The result J.sub.* appears in the Answer Register 53a' during program step 2376 and is written into the J Active Register 101' (W/J PGA 357' condition 2). The entire Accumulator Register 53ab' is then cleared (CAR PGA 351' condition 15).

The J.sub.* stored in the J Active Register 101' as a result of the last operation is utilized during the following sub-period, or column, X400 of the FIG. 51 iteration to compute .DELTA.X.sub.57 = .+-.J.sub.*.sup.. Q.sub.BUF. The specific steps involved are listed in Column 400D of Table VIII. From the heading of that column it may be seen that each of the necessary conditions, X400, S6, and (G.sub.02 + G.sub.03) are present. First, the multiplicand J.sub.* is read from the J Active Register 101' into the computer 53' (R/J PGA 391' condition 2) and then the multiplier Q.sub.BUF is read into the computer from the Q BUF register 47Q' (RD/Q BUF PGA 385' condition 1). With reference to the latter condition it will be noted that a PX2 signal is still present at the output of the AND gate 575 of the Time Base Mode Selector 69' due to the presence of a signal on the S6 output of the decoder 187', as well as the presence of a signal on the G.sub.02 + G.sub.03 output of the G buffer decode 221'. The multiplication .+-.J.sup.. Q.sub.BUF is carried out subsequently during program steps 439-455 in response to a multiply control signal (X PGA 393' condition 1). Again, the four lowest order digits of the product are stored in the XR register 113' and the remaining digits of the product are stored in the .DELTA.X register 109' as the .DELTA.X.sub.57 macromove number.

The first half of the just calculated macromove .DELTA.X.sub.57 is executed during the second half of the FIG. 51 iteration during time period .DELTA.T1000 in 5 micromoves. During the same time, movement along the Y axis is in accordance with the macromove number .DELTA.Y.sub.46 whose execution is completed at the end of the FIG. 51 iteration during time period .DELTA.T1000. Thus, it becomes necessary before the beginning of the following time period .DELTA.T1001 to compute a new Y axis macromove number. As seen in FIG. 59, movement during time period .DELTA.T1001 is from the point P6 to the point P8 along the circular path segment 623. Since the desired movement is along a circular path segment during the entire time period .DELTA.T1001, the macromove number .DELTA.Y.sub.68 is computed through the method of circular interpolation in accordance with equation (19). Thus, referring further to FIG. 59, the macromove number .DELTA.Y.sub.68 is derived by computing the X component of the chord D2 connecting the points P6 and P8 on the arc 623. The appropriate radius vector for this computation is R.sub.2 which extends from the center C of the path 623 to the point P7 lying midway between the points P6 and P8 along the path segment 623. Therefore, in accordance with equation (19), the X component I.sub.* of the radius vector R2 must first be derived from the initially available X component I.sub.BUF of the starting radius vector (not shown) extending from the center point C to the transition point XCEP/YCEP. The necessary prorate calculations for I are listed in Column 2800 of Table X. The geometrical basis for these calculations may be readily seen from FIG. 59, where each of the quantities X.sub.A, X.sub.B and I.sub.* are represented by vectors. Furthermore, the operations which are performed to carry out the prorate calculations for I are exactly the same as those described in connection with the FIG. 47 iteration with reference to FIG. 58 and Table X. It will thus be sufficient to note that, as a result of the prorate calculations for I, the desired I.sub.* number representing the X component of the radius vector R.sub.2 is stored in the I active register 99' prior to the commencement of the final Column X900 of the FIG. 51 iteration.

Following the computation of I.sub.* and during Column 2800 of the FIG. 51 iteration, the Q and the G numbers associated with the following circular path segment 623 are transferred from buffer to active. The specific operations involved are those indicated in Column 2800 of Table X by the first six of the horizontally extending arrows extending into that column. All of the steps associated with the transferring of Q and G from buffer to active are conditioned on the presence of a signal on the S7 output of the decoder 187'. Consequently, during Column X500 the counter 186' is advanced from its S6 count state to its S7 count state in response to a signal produced by a program gate represented in the PGA 183' by condition 12. The transfer of G and Q is effected in the same manner as explained previously with reference to Column 2300 of Table X in response to control signals represented by RD/Q BUF PGA 385' condition 4, W/Q PGA 387' condition 2, RD/G BUF PGA 251' condition 2 and W/G PGA 409' condition 2.

Following the transfer of Q and G from buffer to active the counter 186' is stepped from its count state S7 to its count state S8 during program step 2882 (PGA 183' condition 14). As a result, the M3' input line to the third group of AND gates 179' becomes enabled, thereby placing the system in its third operating mode in which the output of the hundreds BCD to D converter 171' of the Time Base and Digital Sweep 63' is gated through and appears at the outputs of the AND gates 179'. These outputs are not utilized until the fourth column of the following iteration, shown in FIG. 52 and performed during time period .DELTA.T1001.

The new Y axis macromove number .DELTA.Y.sub.68 required for the following time period .DELTA.T1001 is computed during the last, X900 column of the FIG. 51 iteration. The multiplicand is the I.sub.* number which was just computed and which is stored in the I active register 99', and the multiplier is the Q number associated with the following path segment 623 and which was just transferred to the Q register 103' during the previous Column 2800.

The specific steps for computing .+-. I.sub.*.sup.. Q are those which are characteristic of circular interpolation and are listed in Column 900B of Table VIII. The program steps during which the multiplicand is read from the I Active Register 99' and the multiplier Q is read from the Q Active Register 103', as well as the time for performing the computation .+-. I.sub.*.sup.. Q, are apparent from Table VIII, and the conditions representing the program gates for generating the appropriate READ, WRITE and MULTIPLY control signals are listed in the appropriate Program Gate Arrays. They are, R/I PGA 400' condition 1, R/Q PGA 389' condition 4, and X PGA 393' condition 2. It will be noted that the transfer of the numbers in the I and Q Active Registers 99' and 103' prior to their multiplication is conditioned on the presence of a signal on the CIRC output of the Path Type Indicator 106' rather than on an output from the Time Base Mode Selector 69'. Consequently, the advancement of the counter 186' to its S8 count state and the possible removal of a signal from the G.sub.02 + G.sub.03 output of the G Buffer Decode Unit 221' has no effect on the transfer of the numbers from the I and Q registers. Stated differently, the reading of the numbers from the I and Q registers 99' and 103' is still controlled by the G number which is associated with the circular path segment 623, but that G number is now stored in the G Active Register 105' and is manifested by a signal on the CIRC output of the Path Type Indicator 106' associated with the G Active Register.

The last operation performed during the FIG. 51 iteration is that of upgrading J.sub.*, which is still stored in the J Active Register 101', so as to produce a number representing the inverse Y component of the radius vector (not shown) which extends from the center C of the path segment 623 to the point P8 thereon. This new J number will then be used during the next iteration, shown in FIG. 52 and performed during time period .DELTA.T1001, to compute, as the next macromove .DELTA.X.sub.79, the X component of the chord (not shown) which extends from the point P7 to the point P9 on the arc. To upgrade the J.sub.* the newly computed macromove number .DELTA.Y.sub.68 is subtracted from it. The operations involved in upgrading J.sub.* are listed as occurring during program steps 962-964 of Column 900B in Table VIII. The manner in which these steps are performed and the control signals required will not be repeated here, since they were explained previously with reference to the standard circular iteration shown in FIG. 49. From that description it will be recalled that the upgraded J number is stored in the J Active Register 101' during program step 964, following which the Accumulator Register 53ab' is cleared. This completes the operations which comprise the second of the Zone B type linear to circular transitional iterations, as shown in FIG. 51.

The third of the Zone B type linear to circular transitional iterations, performed during time period .DELTA.T1001 and illustrated generally in FIG. 52, is almost identical to a standard circular iteration of the type shown in FIG. 49. The FIG. 52 iteration is distinguished by the operations listed in its fourth column and in its last column, during which further numbers are transferred from buffer to active and during which also the transfer of data from the tape to the buffer register is initiated. Specifically, the changeover of the system to its third operating mode is first manifested during the fourth column of the FIG. 52 iteration, labeled appropriately "3300." During this column the XEP and YEP numbers, representing the designated end point of the circular path segment 623, are transferred from the buffer registers 47X' and 47Y' to the Active Registers 95' and 97' respectively. The operations in transferring the end point coordinate numbers from buffer to active are listed in Column 3300 of Table XI and are seen to correspond to the previously described transfer of those numbers from buffer to active with reference to the iteration shown in FIG. 48, and shown there to occur during Column 3800. Thus, the XCP number is transferred from buffer to active during program steps 3335 and 3336 (RD/XEP BUF PGA 359' condition 1, and W/XCEP PGA 375' condition 1).

After clearing the Accumulator Register 53ab' (CAR PGA 351' condition 25) the YEP number is transferred from buffer to active during program steps 3336 and 3337 (RD/YEP BUF PGA 377' condition 1, and W/YCEP PGA 383' condition 1). Then the Accumulator Register is again cleared (CAR PGA 351' condition 27).

For reasons which will appear subsequently, counter 186' is advanced from its S8 count state to its S9 count state during program step 3379, also shown in Table XI (PGA 183' condition 15). During the following Column X400, .DELTA.X.sub.79 is computed by multiplying .+-. J, Q in exactly the same manner as explained previously with reference to Column 400B of Table VIII and Column X400 of FIG. 49. Furthermore, following the computation of the new macromove number .DELTA.X.sub.79, the number in the I Active Register 99' is upgraded exactly as described with reference to Table VIII, Column 400B, and FIG. 49, Column X400, resulting in the storage of the upgraded I number, representing the inverse X component of the radius vector (not shown) extending from the center C of the circle to the point P9 on the arc 623. This upgraded I number is then used during Column X900 of the iteration to compute the Y axis macromove number .DELTA.Y.sub.8.sub.-10, followed by the upgrading of the J number then in the J Active Register 101' by subtracting the new .DELTA.Y.sub.8.sub.-10 number therefrom. The tape reader 41' is started next in order to initiate the transfer of data associated with the path segment following the circular path segment 623 into the Buffer Registers. The manner in which this occurs and the control signals which bring it about are the same as those described previously with reference to the second transitional Zone A type iteration shown in FIG. 48. As described there, the tape reader is started in response to the previous advancement of the counter 186' to its S9 count state during program step 991. Following this, again in the same manner as described with reference to FIG. 48 previously, the counter 186' is stepped through its count states S10-S16 to its count state S1 during program steps 992-999, thereby placing the system in its first operating mode in preparation for performance of a standard circular iteration during the next time period .DELTA.T1002. From this point on until the approach of the end of the path segment 623 the standard circular iteration of the type shown in FIG. 49 is performed repetitively during successive time periods, beginning with the time period .DELTA.T1002.

e. Going From a Circular Path Segment To a Linear Path Segment

1. Assuming the Desired Transition Is In Zone B

Let it be assumed that the circular path segment 623 shown to have been begun in FIG. 58 during the time period .DELTA.T1001 was continued for another approximately 1500 time periods .DELTA.T and that it was to be followed by another linear path segment. This is the situation illustrated in FIG. 60, and depicted by the lowermost branch of FIG. 45. The circular path segment 623 in FIG. 60 has been rotated clockwise relative to its orientation in FIG. 58 for convenience in viewing the drawing.

As in the case of FIGS. 58 and 59, the initial portion of the first path segment illustrated is abbreviated to conserve space. Only the final portion of the path segment 623 is shown fully and is seen to extend from the point P0 through the points P1-P5 to the designated transition point XCEP/YCEP where the following linear path segment 635 begins. The linear path segment 635 has an X component shown in FIG. 60 as the vector I.sub.BUF and a Y component shown as the vector J.sub.BUF. These vectors are represented as numbers in the I and J Buffer Registers 47I' and 47J' along with the number Q.sub.BUF stored in the Buffer Register 47Q' and representing the desired velocity along the path segment 635. Many standard circular iterations of the type shown in FIG. 49 will have occurred during the time periods .DELTA.T1001 - .DELTA.T2497 before the particular iteration performed during time period .DELTA.T2498 is carried out. During the last of these iterations, performed during time period .DELTA.T2497, the Y axis macromove number .DELTA.Y.sub.02 will have been computed.

The iteration performed during time period .DELTA.T2498 is the last standard circular iteration of the type shown in FIG. 49 during which proximity to the designated transition point XCEP/YCEP had not been detected. There follow during the time periods .DELTA.T2499 - .DELTA.T2501 three transitional iterations, shown in FIGS. 55, 56, and 57, during which a conversion is made from the circular path segment 623 to the linear path segment 635. Following the last of the transitional iterations a standard linear iteration of the type shown in FIG. 46 is performed during time period .DELTA.T2502, and this type of iteration is repeated during each of the subsequent time periods .DELTA.T2503 on until the end of the linear path segment 635 is approached.

It will be noted that the look-ahead operations illustrated in FIG. 60 are projected along the Y axis because, as drawn in FIG. 60, the path segment 623 has a larger macromove component along the Y axis than it has along the X axis. The operations that take place during the time period .DELTA.T2498 in extending the path segment 623 to the point P2 are those which have been explained previously with reference to FIG. 49. Proximity within 2.DELTA.Y macromoves of the designated end point XCEP/YCEP is detected by the second look-ahead test which is performed during the time period .DELTA.T2499 as illustrated in FIG. 55. As a result, the End of Block Counter 186' is advanced to its S2 count state. This has no effect upon the computation of .DELTA.X.sub.35 during Column X400 of the FIG. 55 iteration, which is performed in accordance with the circular interpolation equation .DELTA.X = .+-. J .sup.. Q. Thus, the operations performed during Column X400 shown in FIG. 55 are exactly the same as those performed during a standard circular iteration as shown in FIG. 49.

During Column X800 of the FIG. 55 iteration counter 186' is further advanced, first to its S4 count state during program steps 800 and 801, and then to its S5 count state during program step 897, as explained previously with reference to the corresponding column of FIG. 50. Even though the counter 186' has been advanced to its S5 count state, the next macromove computation performed during Column X900 of FIG. 55 remains the same as it would be in the case of a standard circular iteration as shown in FIG. 49. Thus, except for the advancement of the End of Block Counter from its count state S1 to its count state S5, all of the other operations of the system performed during time period .DELTA.T2499, as illustrated in FIG. 55, are exactly the same as they would be during the standard circular iteration as shown in FIG. 49. At the beginning of the second of the circular to linear transitional iterations, as shown in FIG. 56, the counter 186' is advanced one step further to its S6 count state (PGA 183' condition 9). The first macromove computation performed during Column X400 of the FIG. 56 iteration is still carried out in accordance with the circular interpolation equation .DELTA.X = .+-. J.sup.. Q. The result of this computation is .DELTA.X.sub.57 which would be the desired X axis excursion if the circular path segment 623 were to be continued to the mid-point of the following time period .DELTA.T2501. From FIG. 60 it may be seen that this is not the case and that, actually, the circular path segment is to be terminated during the second half of the previous iteration .DELTA.T2500. However, the error introduced by using a circular interpolation computation is much less than that which would appear to be the case from FIG. 60. In actual practice the resulting error will be negligible because the contiguous path segments 623 and 635 are mutually tangential. It appears significant only because of the large scale of FIG. 60.

In examining FIG. 56 there will be noted the presence of a crossed-out block labeled "Carry Out Prorate Calculations for J: Do Not Use Result." This simply means that the system is permitted to carry out the prorate calculations for J which it is conditioned to do in response to the counter 186' being in its S6 count state, as explained previously with reference to FIG. 51, but that the result is not used. The reason that the result is not used is that there is no need for "advancing" a radius vector as there was in the case where the following path segment represented by that radius vector was circular. Stated differently, where the path segment into which a transition is made is a linear one, as shown in FIG. 60, the I and J numbers associated with that path segment can be used in calculating macromoves without any changes being made to them. The same also applies to the prorate computation represented by the crossed-out block in Column 2800.

The .DELTA.Y.sub.68 macromove number representing the Y axis macromove to be executed during the following time period .DELTA.T2501 is computed during the last Column X900 of the FIG. 56 iteration during the time period .DELTA.T2500. This computation is in accordance with the linear interpolation equation .DELTA.Y = J.sup.. Q and both the multiplier and the multiplicand involved are those associated with the new path segment 635. Therefore, it becomes necessary prior to the computation of .DELTA.Y.sub.68 to transfer the data associated with the following path segment 635 from buffer to active. This is performed during the preceding column labeled "2800" in FIG. 56. As implied by the label "2800", the transfer of data from buffer to active is performed with the system in its second operating mode and this in turn is brought about by advancing the End of Block Counter to its S7 count state during program step 501 (see Table VII, Column X500, and PGA 183' condition 12). This places the system in Mode 2. In this mode, the Q and G numbers are transferred from buffer to active during program steps 2877-2879 in the manner and in response to the control signals described previously with reference to FIG. 51 (Section J. 4. d.(2)). Furthermore, the new I and J numbers are similarly transferred during program steps 2879-2881 (RD/I BUF PGA 349' condition 4, W/I PGA 355' condition 4, RD/J BUF PGA 353' condition 4 and W/J PGA 357' condition 4). It will be understood, of course, that in the process of transferring a number through the Accumulator Register 53ab' from buffer to active, the Register is cleared following the transmission from it of each number to its respective active register so as to be ready to receive the following number which is to be so transferred. (With respect to FIG. 54, see CAR PGA 351' conditions 17, 19, 21, and 23. With respect to FIG. 56, see CAR PGA 351' conditions 18, 20, 22, and 24).

As an incidental result of placing the system in Mode 2 the prorate calculations for I are also performed during Column 2800 of FIG. 56. However, the result of these computations is not written into the I active register 99' because neither signal G02 or G03 is present; instead the I number in the buffer register 47I' is read into the I active register 99' on program steps 2879 and 2880. Similiarly, the results of the "prorate J" operations shown crossed out in FIG. 56 are not written into the J active register 101', but instead the J number from the J buffer register 47J' is transferred to the J active register 101' during program steps 2880 and 2881. After these transfers, the End Of Block Counter 186' is advanced from state S7 to state S8 (see FIG. 56 and condition (14) in PGA 183').

As stated previously, the J and Q numbers just transferred from buffer to active are utilized during the following Column X900 of the FIG. 56 iteration to compute .DELTA.Y.sub.68 which is subsequently executed during the following, third transitional iteration, shown in FIG. 57 and carried out during time period .DELTA.T2501.

Referring to FIG. 57, the third of the circular to linear Zone B type transitional iterations shown there will be recognized as being basically a standard linear iteration of the type shown in FIG. 46. As in the case of all of the iterations, the upgrading and updating operations are the same as those shown in FIG. 46. Additionally, the computations for deriving .DELTA.X.sub.79 during Column X400 and .DELTA.Y.sub.8.sub.-10 during Column X900 are the same as those shown in the corresponding columns of FIG. 46. The first point of departure in FIG. 57 occurs in the fourth column, labeled "3300," during which the end point coordinates for the next path segment are transferred from the XEP and YEP registers to the XCEP and the YCEP registers respectively. These transfer operations are identical to those shown in the corresponding column of FIG. 52, which shows the third of the Zone B type linear to circular transitional iterations. Similarly, as in Column 3300 of FIG. 52, in the corresponding column of FIG. 57 the transfer of the end point coordinates is followed by advancement of the End of Block Counter 186' from its S8 count state to its S9 count state during program step 3379.

The second point of departure in FIG. 57 appears in Column X900 after the computation of .DELTA.Y.sub.8.sub.-10 and involves the starting of the tape reader 41' and the advancement of the counter 186' into its S1 count state in order to place the system into its Mode 1 operation for the following iteration. These last operations are also identical to the operations which occur during the corresponding program steps shown in FIG. 52 and are listed in detail in Table VII, Column X900, program steps 991-999.

Agreeably with the shape of the path segment 635 which is to be generated, the iteration performed during the following time period .DELTA.T2502 is a standard linear iteration of the type shown in FIG. 46. During this time period, therefore, the second half of the macromove .DELTA.X.sub.79 computed during the previous time period .DELTA.T2501 is completed and the .DELTA.Y.sub.8.sub.-10 macromove, also computed during that time period, is carried out. A further pair of macromove numbers for the X and Y axes are computed during the time period .DELTA.T2502, as explained with reference to FIG. 46, and many more iterations of the FIG. 46 type are repeated until the end of path segment 635 is approached.

2. Assuming the Desired Transition is in Zone A

In view of the detailed explanation given for the process of transition from a linear path segment to a circular path segment, and vice versa, with reference to FIGS. 58, 59 and 60, the steps for making a transition from a circular path segment to a linear path segment during Zone A of an iteration will be described only briefly. It should be noted that, while the explanation which will be offered will be brief, the flow charts and Tables provide a complete understanding of this type of a transition.

Let it be assumed that, in generating the circular path segment 623 a succession of standard circular iterations have been performed beginning with time period .DELTA.T1001 and that the last of these occurred during time period .DELTA.T2498 as shown in FIG. 60. Let it be assumed further that, during the following time period .DELTA.T2499, proximity to the end point XCEP/YCEP is detected as a result of the first look-ahead operation, thus revealing that the point falls in Zone A of the iteration which will be performed during time period .DELTA.T2500. In this event, the iterations which will be performed during time periods .DELTA.T2499 and .DELTA.T2500 respectively will be those illustrated in FIG. 53 and 54. Following the second of the transitional iterations, the system will be able to revert to a standard linear iteration of the type shown in FIG. 46. This sequence of iterations, from a FIG. 49 standard circular iteration through a FIG. 53 and a FIG. 54 transitional iteration to a FIG. 46 standard linear iteration is shown in the flow chart comprising FIG. 45.

The operations represented by FIG. 53 and 54 may be most readily understood by settings FIGS. 53 and 54 side-by-side on the one hand, arranging FIGS. 55, 56 and 57 similarly on the other hand, and comparing the two groups of Figures. Referring first to FIGS. 55, 56 and 57 and also to FIG. 60, it will be recalled that, because the desired transition point XCEP/YCEP occurred in Zone B, i.e., during the second half of the time period .DELTA.T2500, it was not until the end of the iteration during which the transition point was to occur that the first linear macromove, .DELTA.Y.sub.68, was computed. Indeed, during the first half of the following time period .DELTA.T2501 the X axis movement was still in accordance with the circular macromove number .DELTA.X.sub.57 which was computed during the previous transitional iteration performed during time period .DELTA.T2500. Finally, it was only at the end of the time period .DELTA.T2501, that following the time period during which the transition point XCEP/YCEP was passed, that the tape reader 41' was started.

In contrast, in the case of a linear to circular transition where the desired transition point is passed during the first half of the time period, it becomes desirable to compute both of the macromove numbers .DELTA.X and .DELTA.Y in accordance with the linear interpolation equations .DELTA.X = I.sup.. Q and .DELTA.Y = J.sup.. Q during the time period in which the iteration is to occur. Accordingly, during the FIG. 54 iteration performed in time period .DELTA.T2500, the transfer of data from buffer to active which, in the case of the FIG. 56 iteration is not performed until Column 2800, is carried out during Column 2300. Similarly, the transfer of the end point coordinates which did not occur until Column 3300 in the case of the FIG. 57 iteration performed during the time period .DELTA.T2501 for a Zone B transition, is performed during Column 3800 of the time period .DELTA.T2500, as shown in FIG. 54.

Since the transfer of data from buffer to active is to occur half a time period .DELTA.T earlier for a Zone A transition, depicted in FIGS. 53 and 54, than for a Zone B transition, depicted in FIGS. 55, 56 and 57, the End of Block Counter 186' must also be stepped through its count states earlier. This, too, may be confirmed by comparing FIGS. 53 and 54 with FIGS. 55, 56 and 57. Thus, for a Zone A linear to circular transition the counter 186' is stepped through its count states S3, S4, S5, S6 into count state S7 during Columns X300 and X500 of the FIG. 53 iteration performed in time period .DELTA.T2499 and during Column X000 of the FIG. 54 iteration taking place during time period .DELTA.T2500. Consequently, the condition necessary for the transfer of data from buffer to active is present during the period represented by the fourth column labeled "2300" of FIG. 54, in contrast to the FIG. 56 iteration where this condition was not present until the period represented by the column labeled "2800" of that iteration.

As a result of the transfer of the G number associated with the linear path segment 635 from buffer to active, a signal is on the LIN output of the path-type indicator 106'associated with the G Active Register 105', causing the computation of .DELTA.X during Column X400 of the iteration .DELTA.T2500 to be in accordance with the linear interpolation computation .DELTA.X = I.sup.. Q. Furthermore, due to the transfer of I and Q from buffer to active the numbers which will be used in this computation will be those associated with the linear path segment 635. The same also applies to the computation of .DELTA.Y during the last column of the iteration.

To cause the end point coordinates XEP and YEP to be transferred from buffer to active during time period .DELTA.T2500, the counter 186' is advanced from its S7 count state to its S8 count state during Column 2300 of the FIG. 54 iteration. Appearance of a signal on the S8 output of the decoder 187' places the system in its Mode 3 operation and as a result, as indicated in Table XI, the operations necessary to transfer the end point coordinates from buffer to active are carried out during program steps 3835 through 3837. Following this, the counter is once again advanced from its count state S8 to its count state S9. In response to the presence of a signal on the S9 output of the decoder 187', the tape reader is started during program step 991 (see Table VII, Column X900) and during the following program steps, again in response to the presence of a signal on the S9 output of the decoder 187', the sequence by which the counter is advanced through its count states S10-S16 into its count state S1 is begun. It follows, therefore, that a standard linear iteration in accordance with FIG. 46 is performed during the following time period .DELTA.T2501.

It will have been noted that, both in the case of a Zone A and a Zone B circular to linear transition, the look-ahead operations are performed only during the first of the transitional iterations. Thus, with reference to a Zone B transition, the look-ahead operations are not a part of the FIG. 56 and FIG. 57 iterations, and, for a Zone A transition, the look-ahead operations are omitted from the FIG. 54 transitional iteration. The reason for omitting these operations is simply that, once proximity to the designated transition point XCEP/YCEP has been detected during the preceding transitional iteration, performance of the look-ahead operations during the following transitional iterations becomes unnecessary. The cause of the interruption of the look-ahead operation during all but the first of the transitional iterations is that for both a Zone A and a Zone B circular to linear transition the system is switched out of Mode 1 operation during the first transitional iteration, when the counter 186' is advanced to its S5 count state (FIGS. 53 and 55). It will be recalled that, in order for the system to be in its Mode 1 operation the counter must be in one of its three initial count states S1-S3. It will also be recalled from the previous explanation of the look-ahead process with reference to Table IX that, in order for the look-ahead operations to be performed, the system must be in its first operating mode. It follows, therefore, that the look-ahead operations are only performed during the first transitional iteration and are not resumed again until the first standard linear iteration following the transitional iteration.

It may be confirmed from FIGS. 48, 51, and 52 that the above comments concerning the look-ahead operations apply also to the linear to circular transitional iterations.

K. possible Modifications to Both of the Exemplary Systems

In the foregoing description of two exemplary systems for performing interpolation according to the invention, as well as in the claims which follow, the assumption has been that, in order to make a tool cut a chosen path in a workpiece, the tool alone is moved. Clearly, this need not be so. The assumption had only been made to simplify both the specification and the claims. In practice, an equally valid assumption would be that movement along one or more of the axes is by the workpiece instead of the tool. Naturally, the workpiece would have to be moved along its assigned axis (or axes) in a direction exactly opposite to that in which the tool would travel along that axis. This might be achieved in several ways. The data block on the tape could represent the excursions to be made by the tool as if it alone were to be moved to cut the desired path in a stationary workpiece. This data could then be processed exactly as described, but the servo associated with the axis along which the workpiece is to be moved would be so connected as to reverse the direction of motion from that which would be required if the tool were to be moved along that axis. In the first exemplary embodiment disclosed herein, this could be done simply by reversing the input leads to the phase shifter 531 in FIG. 9a so as to reverse the sense of the feedback signal and by reversing the connection of the armature winding of the servo motor 21 so as to reverse its direction of rotation. The same changes could also be made to the corresponding components of the second exemplary system shown in FIG. 40.

Alternatively, the computations performed by the system could be modified in a manner which will be apparent to those skilled in the art so as to reverse the sense of movement along selected axes without requiring any change to the servos. Indeed, it is common practice to provide numerical controls with "axis reverse" switches to permit making of a "left-hand" part from data programmed for a "right-hand" part.

L. conclusion

What has been described is in part a method for deriving through a process of interpolation from blocks of data representing successive path segments a continuous, cyclic flow of numerical data representing an almost incredibly large number of extremely closely spaced points distributed along those path segments. Also disclosed have been two exemplary systems for carrying out this process of interpolation rapidly and automatically and featuring the use of a single time-shared computer made possible by the regular periodicity of the required computations.

The nature of the disclosed method and of the exemplary systems for performing it is illustrated by the data generated for a typical path segment. Such a path segment might be a straight line 6 inches long and represented on magnetic tape as a block of data comprising 6 digital numbers. If it be assumed that the desired speed at which movement along the 6-inch path segment is to occur is 1 inch per minute, the total time for executing a path segment will be 6 minutes. During this time, 180,000 successive positions will be generated for each of the axes along which movement along the path is to occur, or once every 2 milliseconds. The same applies in the case of a circular path segment, and the method and systems disclosed also permit a smooth transition from one path segment to the next, regardless of whether or not successive path segments are of the same type.

* * * * *


uspto.report is an independent third-party trademark research tool that is not affiliated, endorsed, or sponsored by the United States Patent and Trademark Office (USPTO) or any other governmental organization. The information provided by uspto.report is based on publicly available data at the time of writing and is intended for informational purposes only.

While we strive to provide accurate and up-to-date information, we do not guarantee the accuracy, completeness, reliability, or suitability of the information displayed on this site. The use of this site is at your own risk. Any reliance you place on such information is therefore strictly at your own risk.

All official trademark data, including owner information, should be verified by visiting the official USPTO website at www.uspto.gov. This site is not intended to replace professional legal advice and should not be used as a substitute for consulting with a legal professional who is knowledgeable about trademark law.

© 2024 USPTO.report | Privacy Policy | Resources | RSS Feed of Trademarks | Trademark Filings Twitter Feed