Title:
SAMPLED DATA NUMERICAL CONTOURING MACHINE CONTROLLER APPARATUS AND METHOD PROVIDABLE WITH ON LINE CAPABILITY FOR CONTOUR CORNERING DECELERATION AND ACCELERATION
United States Patent 3699317
Abstract:
A numerical contouring controller employs ramped velocity commands for pre-corner slowdown and post-corner speedup in the relative movement between the controlled machine tool and a workpiece. The controller includes a digital computer which generates a command position trajectory. The computer operates in a closed position loop at a predetermined sampling frequency to compare accumulated position feedback data and the command position and thereby to generate command data to velocity loop controls which accurately position the machine tool slides. A program system operates the computer to make and implement the motion command determination including path speed change determinations and to make and implement nonmotion command determinations for machine tool, data input and machine operator interfacing.
US Patent References:
DEMAND COMPUTER SYSTEM FOR MACHINE TOOL CONTROL
Bottles et al. - April 1971 - 3573738

Contouring system accelerationdeceleration control
Benaglio et al. - August 1965 - 3204132


Application Number:
05/039940
Publication Date:
10/17/1972
Filing Date:
05/22/1970
View Patent Images:
Assignee:
Westinghouse Electric Corporation (Pittsburgh, PA)
Primary Class:
Other Classes:
318/562, 318/570
International Classes:
G05B19/414; G05B21/02; G05B15/02
Field of Search:
340/172.5 235/151.11
Primary Examiner:
Botz, Eugene G.
Claims:
What is claimed is

1. A numerical contouring controller for a machine having at least two members movable along or about respective motion axes, said controller comprising means for generating a command position trajectory, for each of the two axes in response to input numerical command data, means for generating feedback data relative to the position of each of the machine members, means for accumulating the position feedback data, means for detecting the accumulated position feedback data substantially at each of successive sample time points, means for generating command outputs in response to the command position trajectories and the sampled position feedback data, and means for operating the two machine members in response to the command outputs.

2. A controller as set forth in claim 1 wherein the time points are substantially equally spaced to provide a fixed time sampling system.

3. A controller as set forth in claim 2 wherein a digital computer detects the accumulated feedback data and generates the trajectories and the command outputs, and the sampling rate is greater than approximately 20 Hertz and less than a rate approximately equal to the ratio of 3 microseconds to the computer memory cycle time times 4 hundred.

4. A controller as set forth in claim 2 wherein a digital computer detects the accumulated feedback data and generates the trajectories and the command outputs, and the sampling rate is greater than approximately 20 Hertz and less than approximately 400 Hertz.

5. A controller as set forth in claim 1 wherein the input command data includes data representative of the end points of successive segments along a desired contour, the command position trajectories are formed by successive axis points corresponding to points along the segment between the segment end points, and means are provided for operating said feedback data detecting means and said position trajectory generating means at a predetermined sampling rate to generate feedback data detections and command point generations at the same sampling rate.

6. A controller as set forth in claim 5 wherein means are provided for each axis for determining in one sampling period the command point to be generated in the next sampling period.

7. A controller as set forth in claim 6 wherein the command points are absolute position values, said accumulating and detecting means includes means for determining absolute position values from each detected position feedback, and means are provided for generating an error representation of the difference between the absolute command and position values for each axis.

8. A controller as set forth in claim 1 wherein a digital computer detects the feedback data and generates the trajectories and the command outputs.

9. A controller as set forth in claim 8 wherein said accummulating means is a counter read each sample period by said computer.

10. A controller as set forth in claim 7 wherein means are provided for operating a digital computer to determine the position error for each axis after the feedback position detections and conversions to absolute values without any other intervening arithmetic operations.

11. A controller as set forth in claim 8 wherein means are provided for operating said computer to detect an operator feed hold request, means are provided for operating said computer during feed hold to prevent the command position trajectories from determining the command outputs and to set the command outputs substantially equal to zero.

12. A controller as set forth in claim 8 wherein means are provided for operating said computer to detect changes in the feedrate override value, and means are provided for operating said computer to change the time scales for the command position trajectories in proportion to changes in the feedrate override.

13. A controller as set forth in claim 8 wherein the input-command data pertains to successive contour segments and means are provided for operating said computer to determine whether a slowdown is required prior to the end of each segment, means are provided for operating said computer to determine a segment point at which to reduce speed in each segment determined to require slowdown, means are provided for operating said computer to implement in the command position trajectories a speed reduction from the segment operating speed value to a lower speed value for each segment determined to require slowdown, means are provided for operating said computer to implement in the generation of the command position trajectories any speed increase required by the command data for each segment following a slowdown segment.

14. A controller as set forth in claim 13 wherein means are provided for operating said computer to implement the slowdowns and speed increases as constant ramp speed changes in the command position trajectories.

15. A controller as set forth in claim 13 wherein the lower speed value is zero.

16. A controller as set forth in claim 13 wherein said computer is operated to determine a need for slowdown if the difference in any axis velocity between successive segments is greater than a specified deceleration rate times the sampling period.

17. A method for operating a machine having at least two members movable along or about respective axes, the steps of said method comprising: operating a computer for determining input numerical command data including data representative of the end points of successive segments along a desired contour, operating a computer for generating representations of successive axis points corresponding to points along the segments between the segment end points to form a command position trajectory for each of the two axes in response to the input command data, generating a sampling determinant at a predetermined rate, operating a computer for generating the successive trajectory command point representations at the sampling determinant rate, operating a computer for determining the successive command points for at least one axis, by adding the next previous command point to a position change quantity which is representative of sample period velocity times the sampling period, operating a computer for generating command outputs at least in response to the command position trajectories, and operating the two machine members in response to the command outputs.

18. A method for operating a machine as set forth in claim 17 wherein the sample period velocity is the average section velocity.

19. A method for operating a machine as set forth in claim 17, wherein the computer is operated to detect operator feedrate override setting and the position change quantity is made a function of the feedrate override.

20. A method for operating a machine as set forth in claim 19 wherein the feedrate override is represented as a percentage value, and the computer is further operated to apply the feedrate representation as a multiplier in the position change quantity.

21. A method for operating a machine as set forth in claim 17 wherein the computer is further operated to determine the position change quantity by adding the next previous sample period position quantity to any required acceleration or deceleration in the present sample period times the square of the sample period.

22. A method for operating a machine as set forth in claim 21 wherein the acceleration or deceleration value is constant.

23. A method for operating a machine as set forth in claim 17 wherein a first program is executed in the computer at a rate equal to the sampling rate, the successive trajectory command points and the command outputs are determined during the execution of the first program, at least one second program is executed in the computer during nonoperating periods of the first program, and predetermined calculations are made on the input command data during the second program execution to develop precalculated data for use in making the command point determinations during execution of the first program.

24. A method for operating a machine as set forth in claim 23 wherein the precalculated data includes representations of respective distances over which acceleration rate and constant speed and deceleration rate values are to be implemented in the trajectories, and the position change quantity is determined in accordance with the distance representations and the acceleration and deceleration and constant speed values.

25. A method for operating a machine as set forth in claim 24 wherein the precalculated data further includes the product of a constant specified acceleration or deceleration value and the sampling period so that the position change representation can be determined by an addition or subtraction operation during execution of the first program.

26. A method for operating a machine as set forth in claim 17 wherein the computer is further operated to determine the one axis as the fastest axis in each segment and to determine the slope of each segment relative to the fastest axis and to determine from the corresponding slope and the corresponding fastest axis command points for the other axis in each segment thereby to form the other axis command position trajectory.

27. A method for operating a machine having at least two members movable along or about respective axes, the steps of said method comprising: operating a computer for determining input numerical command data including data representative of the end points of successive segments along a desired contour, operating a computer for generating representations of successive axis points corresponding to points along the segments between the segment end points to form a command position trajectory for each of the two axes in response to the input command data, operating a computer for determining whether acceleration and deceleration are required in each segment, and to implement acceleration and deceleration determinations in generating the command position trajectories, generating a sampling determinant at a predetermined rate, operating a computer for generating the successive trajectory command point representations at the sampling determinant rate, operating a computer for generating command outputs at least in response to the command position trajectories, and operating the two machine members in response to the command outputs.

28. A method for operating a machine as set forth in claim 27, wherein the acceleration and deceleration rate values are specified as predetermined constants.

29. A method for operating a machine as set forth in claim 28 wherein segment deceleration is instituted when required to reach zero velocity at the end of segments in which deceleration is required.

30. A method for operating a machine having at least two members movable along or about respective axes, the steps of said method comprising: operating a computer for determining input numerical command data including data representative of the end points of successive segments along a desired contour, operating a computer for generating representations of successive axis points corresponding to points along the segments between the segment end points to form a command position trajectory for each of the two axes in response to the input command data, generating a sampling determinant at a predetermined rate, operating a computer for generating the successive trajectory command point representations at the sampling determinant rate, operating a computer for generating feedback data relative to tee position of each of the machine members, the position feedback data being accumulated, the accumulated feedback data being periodically detected by the computer at the sampling rate, and further operating the computer for generating the command outputs in response to the command position trajectories and the sampled position feedback data, and operating the two machine members in response to the command outputs.

31. A method for operating a machine as set forth in claim 30 wherein the computer is further operated to determine the successive command points for at least one axis by adding the next previous command point to a position change quantity which is representative of sample period velocity times the sampling period.

32. A method for operating a machine as set forth in claim 31 wherein the computer is further operated to determine the position change quantity by adding the next previous sample period position quantity to any required acceleration or deceleration in the present sample period times the square of the sample period.

33. A method for operating a machine as set forth in claim 31 wherein a first program is executed in the computer at a rate equal to the sampling rate, the successive trajectory command points and the command outputs are determined during the execution of the first program, at least one second program is executed in the computer during nonoperating periods of the first program, and predetermined calculations are made on the input command data during the second program execution to develop precalculated data for use in making the command point determinations during execution of the first program.

34. A method for operating a machine as set forth in claim 33 wherein the precalculated data includes representations of respective distances over which acceleration rate and constant speed and deceleration rate values are to be implemented in the trajectories, and the position change quantity is determined in accordance with the distance representations and the acceleration and deceleration and constant speed values.

35. A method for operating a machine as set forth in claim 30 wherein the computer is operated to determine whether acceleration and deceleration are required in each segment and to implement acceleration and deceleration determinations in generating the command position trajectories.

36. A method for operating a machine as set forth in claim 27 wherein the acceleration determination is made by comparing of a distance quantity representative of endpoint speed in each segment and a distance quantity representative of required speed in each next segment thereby avoiding square root calculations.

37. A numerical contouring controller for a machine having at least two members movable along or about respective axes, said controller comprising a digital computer, means for operating said computer to determine input numerical command data including data representative of the end points of successive segments along a desired contour, means for operating said computer to generate successive axis points corresponding to points along the segments between the segment end points thereby to form a command position trajectory for each of the two axes in response to the input command data, means for operating the computer to determine whether acceleration and deceleration are required in each segment and to implement acceleration and deceleration determinations in generating the command position trajectories, means for generating a sampling determinant at a predetermined rate, and means for operating said computer to generate the successive command points on the trajectory at the sampling determinant rate.

38. A numerical contouring controller for a machine having at least two members movable along or about respective axes, said controller comprising a digital computer, means for operating said computer to determine input numerical command data including data representative of the end points of successive segments along a desired contour, means for operating said computer to generate successive axis points corresponding to points along the segments between the segment end points thereby to form a command position trajectory for each of the two axes in response to the input command data, means for generating a sampling determinant at a predetermined rate, means for operating the computer to determine the successive command points, for at least one axis by adding the next previous command point to a position change quantity which is representative of sample period velocity times the sampling period, and means for operating said computer to generate the successive command points on the trajectory at the sampling determinant rate.

39. A numerical contouring controller as set forth in claim 38 wherein means are provided for operating the computer to determine the position change quantity by adding the next previous sample period velocity times the sample period to any required acceleration or deceleration in the present sample period times the square of the sample period.

40. A numerical contouring controller as set forth in claim 39 wherein the acceleration or deceleration value is constant.

41. A numerical contouring controller for a machine having at least two members movable along or about respective motion axes, said controller comprising a digital computer, means for operating said computer to generate a command position trajectory for each of the two axes in response to input numerical command data, means for generating feedback data relative to the position of each of the machine members, means for transferring the feedback position data from said generating means to said computer, means for operating said computer to generate command outputs in response to the command position trajectories and the position feedback data, and means for operating the machine members in response to the command outputs.

42. A numerical contouring controller as set forth in claim 41 wherein means are provided for operating said computer to generate interfacing data outputs in response to other data inputs, and means for responding to the interfacing data outputs to operate operator and machine interfacing devices.

43. A numerical contouring controller as set forth in claim 41 wherein the input command data includes data representative of the end points of successive segments along a desired contour, the command position trajectories are formed by successive command axis points corresponding to points along the segment between the segment end points and wherein means are provided for operating said computer to generate the successive command axis points in respective sample periods occurring at a predetermined rate.

44. A numerical contouring controller as set forth in claim 41 wherein means are provided for operating said computer to detect an operator feed hold request, means are provided for operating said computer during feed hold to prevent the command position trajectories from determining the command outputs and to set the command outputs substantially equal to zero.

45. A numerical contouring controller as set forth in claim 41 wherein means are provided for operating said computer to detect changes in the feedrate override value, and means are provided for operating said computer to change the time scales for the command position trajectories in proportion to changes in the feedrate override.

46. A numerical contouring controller as set forth in claim 41 wherein means are provided for operating said computer to determine whether a slowdown is required prior to the end of each segment, means are provided for operating said computer to determine a segment point at which to reduce speed in each segment determined to require a slowdown, means are provided for operating said computer to implement in the command position trajectories a speed reduction from the segment operating speed value to a lower speed value for each segment determined to require slowdown, means are provided for operating said computer to implement in the generation of the command position trajectories any speed increased required by the command data for each segment following a slowdown segment.

47. A numerical contouring controller as set forth in claim 46 wherein means are provided for operating said computer to implement the slowdowns and speed increases as ramp speed changes in the command position trajectories.

48. A numerical contouring controller as set forth in claim 47 wherein means are provided for operating said computer to determine a need for slowdown if the difference in any axis velocity between successive segments is greater than a specified deceleration rate times the sampling period.

49. A numerical contouring controller as set forth in claim 41 wherein means are provided for operating said computer to determine whether acceleration and deceleration are required in each segment and to implement acceleration and deceleration determinations in generating the command position trajectories.

50. A method for operating a machine having at least two members movable along or about respective axes, the steps of said method comprising generating feedback data relative to the position of each of the machine members, accumulating the position feedback data, transferring the position feedback data to the input of a digital computer, operating the computer to generate a command position trajectory for each of the two axes, operating the computer to generate command outputs in response to the command position trajectories and the position feedback data, and operating the two machine members in response to the command outputs.

51. A method for operating a machine as set forth in claim 50 wherein interfacing data outputs are generated in response to other data inputs and operator and machine interfacing devices are operated in response to the interfacing data outputs.

52. A method for operating a machine as set forth in claim 50 wherein the input command data includes data representative of the end points of successive segments along a desired contour, the command position trajectories are formed by successive command axis points corresponding to points along the segment between the segment end points and wherein the computer is operated to generate the successive command axis points in respective sample periods occurring at a predetermined rate.

53. A method for operating a machine as set forth in claim 50 wherein the computer is operated to determine whether acceleration and deceleration are required in each segment and to implement acceleration and deceleration determinations in generating the command position trajectories.

54. A method for operating a machine having at least two members movable along or about respective axes, the steps of said method comprising generating feedback data relative to the position of each of the machine members, writing the programs in a program system for a digital computer in assembly language, assembling and entering the program system into the computer memory, operating the computer in accordance with the program system to obtain input axis motion command data and other data and to obtain the generated position feedback data, operating said computer to generate data interfacing outputs in response to the other data, operating said computer to generate axis motion control data outputs in response to the axis motion command data, and operating predetermined machine tool and operator interface devices and the machine members in response to the data outputs.

55. A method for operating a machine as set forth in claim 54 wherein the input command data includes data representative of the end points of successive segments along a desired contour, the command position trajectories are formed by successive command axis points corresponding to points along the segment between the segment end points and the computer is operated to generate the successive command axis points in respective sample periods occurring at a predetermined rate.

56. A method for operating a machine as set forth in claim 54 wherein the computer is operated to determine whether acceleration and deceleration are required in each segment and to implement acceleration and deceleration determination in generating the command position trajectories.

57. A method for operating a machine as set forth in claim 54 wherein feedback data is generated relative to the position of each of the machine members, the position feedback data is accumulated, the accumulated feedback data is periodically detected by the computer at the sampling rate, and the computer is further operated to generate the command outputs in response to the command position trajectories and the sampled position feedback data.

58. A method for operating a machine as set forth in claim 55 wherein feedback data is generated relative to the position of each of the machine members, the position feedback data is accumulated, the accumulated feedback data is periodically detected by the computer at the sampling rate, and the computer is further operated to generate the command outputs in response to the command position trajectories and the sampled position feedback data.

59. A method for operating a machine as set forth in claim 56 wherein feedback data is generated relative to the position of each of the machine members, the position feedback data is accumulated, the accumulated feedback data is periodically detected by the computer at the sampling rate, and the computer is further operated to generate the command outputs in response to the command position trajectories and the sampled position feedback data.

60. A method for operating a machine as set forth in claim 52 wherein feedback data is generated relative to the position of each of the machine members, the position feedback data is accumulated, the accumulated feedback data is periodically detected by the computer at the sampling rate, and the computer is further operated to generate the command outputs in response to the command position trajectories and the sampled position feedback data.

61. A method for operating a machine as set forth in claim 53 wherein feedback data is generated relative to the position of each of the machine members, the position feedback data is accumulated, the accumulated feedback data is periodically detected by the computer at the sampling rate, and the computer is further operated to generate the command outputs in response to the command position trajectories and the sampled position feedback data.

62. A numerical contouring method for operating a machine having at least two members movable along or about respective axes, the steps of said method comprising obtaining numerical command data for each of successive contour segments, determining a representation of whether a speed reduction is required prior to the end of each segment, determining a representation of a segment point at which to reduce speed in each segment determined to require slowdown, generating a command position trajectory for each of the two axes in response to the command data, implementing in the generation of the command position trajectories a ramp speed reduction from the segment operating speed value to zero speed value over the distance from the determined slowdown point to the end of each segment determined to require slowdown, implementing in the generation of the command position trajectories a ramp speed increase from the starting point of each segment following a deceleration segment, determining command output at least in response to the command position trajectories, and operating the machine members in response to the command outputs.

63. A method for operating a machine as set forth in claim 62 wherein a digital computer is employed to generate the command position trajectories and to implement the ramp speed reductions and increases in the trajectories and to determine the command outputs.

64. A method for operating a machine as set forth in claim 63 wherein feedback data is generated relative to the position of each of the machine members, the position feedback data is accumulated, the accumulated feedback data is periodically detected by the computer, and the computer is further operated to generate the command outputs in response to the command position trajectories and the sampled position feedback data.

65. A method for operating a machine as set forth in claim 62 wherein the numerical command data includes data representative of the end points of successive segments along a desired contour, the computer forms the command position trajectories from successive command axis points corresponding to points along the segment between the segment end points and the computer generates the successive command axis points in respective sample periods occurring at a predetermined rate.

66. A method for operating a machine as set forth in claim 65 wherein feedback data is generated relative to the position of each of the machine members, the position feedback data is accumulated, the accumulated feedback data is periodically detected by the computer at the sampling rate, and the computer is further operated to generate the command output in response to the command position trajectories and the sample position feedback data.

67. A method for operating a machine as set forth in claim 65 wherein the computer is further operated to determine the successive command points for at least one axis by adding the next previous command point to a position change quantity which is representative of sample period velocity times the sampling period.

68. A method for operating a machine as set forth in claim 67 wherein the sample period velocity is the average velocity.

69. A method for operating a machine as set forth in claim 67 wherein the computer is further operated to determine the position change quantity by adding the next previous sample period velocity times the sample period to any required acceleration or deceleration in the present sample period times the square of the sample period.

70. A method for operating a machine as set forth in claim 69 wherein the acceleration or deceleration value is constant.

71. A method for operating a machine as set forth in claim 73 wherein the computer is further operated to determine the one axis as the fastest axis in each segment and to determine the slope of each segment relative to the fastest axis and to determine from the corresponding slope and the corresponding fastest axis command points for the other axis in each segment thereby to form the other axis command position trajectory.

72. A method for operating a machine wherein feedback data is generated relative to the position of each of the machine members, the position feedback data is accumulated, the accumulated feedback data is periodically detected by the computer at the sampling rate, and the computer is further operated to generate the command outputs in response to the command position trajectories and the sampled position feedback data.

73. A method for operating a machine having at least two members movable along or about respective axes, the steps of said method comprising operating a digital computer to determine input numerical command data including data representative of the end points of successive contour segments, operating the computer to determine the fastest axis in each segment, operating the computer to determine successive axis points corresponding to points along the segments between the segment end points for the fastest axis in each segment thereby to form a fastest axis command position trajectory, operating the computer to determine the slope of each segment relative to the fastest axis, operating the computer to determine from the corresponding slope and the corresponding fastest axis command points successive axis command points for the other axis in each segment thereby to form the other axis command position trajectory, operating the computer to generate command outputs at least in response to the command position trajectories, and operating the machine members in response to the command outputs.

74. A method for operating a machine as set forth in claim 73 wherein a sampling determinant is generated at a predetermined rate, and the computer is further operated to generate the successive trajectory command points at the sampling determinant rate.

75. A method for operating a machine as set forth in claim 74 wherein feedback data is generated relative to the position of each of the machine members, the position feedback data is accumulated, the accumulated feedback data is periodically detected by the computer at the sampling rate, and the computer is further operated to generate the command outputs in response to the command position trajectories and the sampled position feedback data.

76. A method for operating a digital numerical contouring computer used in a controller for a machine having at least two movable members along or about respective axes, the steps of said method comprising executing a first program at a predetermined clocked sampling rate, determining axis command position trajectories during successive first program executions by generating successive axis points corresponding to points along the segments between the segment end points in response to precalculated data, determining during the first program executions machine member command outputs in response at least to the command position trajectories, executing at least one second program during nonoperating periods of the first program, determining during the execution of the second program input numerical command data, and making predetermined precalculations on the input command data to develop the precalculated data for the first program during execution of the second program.

77. A computer operating method as set forth in claim 76 wherein there is further determined during the first program execution accumulated feedback data, and the feedback data and the command position trajectory are compared in each sample period to determine the command outputs.

78. A computer operating method as set forth in claim 77 wherein the first program further determines the successive command points for at least one axis by adding the next previous command point to a position change quantity which is representative of sample period velocity times the sampling period.

79. A computer operating method as set forth in claim 78 wherein the first program further determines the position change quantity by adding the next previous sample period velocity times the sample period to any required acceleration or deceleration in the present sample period times the square of the sample period.

80. A computer operating method as set forth in claim 79 wherein the acceleration or deceleration rate value is a constant.

81. A computer operating method as set forth in claim 80 wherein the precalculated data includes respective distances over which acceleration rate and constant speed and deceleration rate values are to be implemented in the trajectories, and the position change quantity is determined in accordance with the distances and the acceleration and deceleration and constant speed values.

82. A computer operating method as set forth in claim 81 wherein the precalculated data further includes the product of a constant specified acceleration or deceleration value and the sampling period so that the position change representation can be determined by an addition or subtraction operation during execution of the first program.

83. A computer operating method as set forth in claim 77 wherein the computer is further operated to determine one axis as the fastest axis in each segment and to determine the slope of each segment relative to the fastest axis and to determine from the corresponding slope and the corresponding fastest axis the trajectory command points for the other axis in each segment.

84. A computer operating method as set forth in claim 82 wherein the computer is further operated to determine one axis as the fastest axis in each segment and to determine the slope of each segment relative to the fastest axis and to determine from the corresponding slope and the corresponding fastest axis the trajectory command points for the other axis in each segment.

85. A computer operating method as set forth in claim 76 wherein the second program determines whether acceleration and deceleration are required in each segment and generates the precalculated data accordingly, and the first program implements the second program acceleration and deceleration determinations in generating the command position trajectories.

86. A method for operating a digital numerical contouring computer used in a controller for a machine having at least two members movable along or about respective axes, the steps of said method comprising determining a command position trajectory for each of the two axes in response to input numerical command data pertaining to successive contour segments, determining a representation of whether a speed reduction is required prior to the end of each segment, determining a representation of a segment point at which to reduce speed in each segment determined to require slowdown, implementing in the generation of the command position trajectories a speed reduction from the segment operating speed value to a lower speed value for each segment determined to require slowdown, implementing in the command position trajectories any speed increase required by the command data for each segment following a slowdown segment, and generating commands for output control in response at least to the command position trajectory.

87. A computer operating method as set forth in claim 86 wherein ramp speeds are implemented in the trajectories for slowdown and speedup.

88. A computer operating method as set forth in claim 87 wherein the slowdown speed ramps are implemented in the trajectories to generate a lower speed zero value equal to zero at the end of slowdown segments.

89. A numerical contouring controller for a machine having at least two members movable along or about respective motion axes, said controller comprising a digital computer, means for operating said computer to generate a command position trajectory for each of the two axes in response to input numerical command data pertaining to successive contour segments, means for operating said computer to determine whether a speed reduction is required prior to the end of each segment, means for operating said computer to determine a segment point at which to reduce speed in each segment determined to require slowdown, means for operating said computer to implement in the generation of the command position trajectories a speed reduction from the segment operating speed value to a lower speed value for each segment determined to require slowdown, means for operating said computer to implement in the generation of the command position trajectories any speed increase required by the command data for each segment following a slowdown segment, means for operating said computer to generate command outputs in response at least to the command position trajectories, and means for operating the two machine members in response to the command outputs.

90. A machine controller as set forth in claim 92 wherein means are provided for generating feedback data relative to the position of each of the machine members, means are provided for accumulating the position feedback data, means are provided for operating the computer to detect the accumulated feedback data periodically at the sampling rate, and means are provided for further operating to generate the command outputs in response to the command position trajectories and the sampled position feedback data.

91. A numerical contouring controller for a machine having at least two members movable along or about respective axes, said controller comprising a digital computer, means for operating said computer to determine input numerical command data, means for operating said computer to determine a command position trajectory for each of the two axes from the input data, means for operating said computer to determine command outputs in response at least to the command position trajectories, means for operating said computer to detect an operator feed hold request, means for operating said computer during feed hold to prevent the command position trajectories from determining the command outputs and to set the command outputs substantially equal to zero, and means for operating the two machine members in response to the command outputs.

92. A numerical contouring controller for a machine having at least two members movable along or about respective axes, said controller comprising a digital computer, means for operating said computer to determine input numerical command data, means for operating said computer to determine a command position trajectory for each of the two axes from the input data, means for operating said computer to determine command outputs in response at least to the command position trajectories, means for operating said computer to detect changes in the operator feedrate override value, means for operating said computer to change the time scales for the command position trajectories in proportion to changes in the feedrate override, and means for operating the machine members in response to the command position trajectories.

Description:
BACKGROUND OF THE INVENTION

The present invention relates to numerical control systems and methods for operating machine tools, and in its more particular aspects it relates to numerical machine tool control systems and methods arranged to control relative tool workpiece motion along a desired path with sampled data and segment acceleration and deceleration operating characteristics.

Numerical control provides automatic machine operation with the use of stored position command numbers which define the relative movement needed between the workpiece and the tool to produce the desired metal working, garment cutting, or other machining operation. In the point-to-point type of numerical control, position numbers command successive points at which successive machining operations are to take place and, with some exception, no machine work is performed along the path between the successive command work points. Illustrative prior art pertinent to numerical point-to-point controllers includes U.S. Pat. No. 2,820,187 issued to J. T. Parsons et al. on Jan. 14, 1958 and entitled "Motor Controlled Apparatus For Positioning Machine Tool" and U.S. Pat. No. 3,430,036 issued to J. L. Patrick on Feb. 25, 1969 and entitled "Multiphase Clock Control System For Machine Tools."

In the more complicated contouring type of control to which the present invention is principally related, position numbers define successive command points which correspond to successive segments along the desired workpiece contour, and active control is placed on the relative working motion between the tool and the workpiece over the entire segment defined contour of the workpiece. The interpolation capability of the numerical controller is used to produce motion control over the segments between successive command points on the contour. Naturally, the quality of the resultant machined contour depends in large measure upon the nature and quality of the numerical contouring control.

It should also be noted that some controller operating features can be implemented in both contouring and point-to-point controls. For example, point-to-point controlled machine tools can include limited contouring capabilities such as linear milling.

Some consideration of previous numerical manufacturing systems and controllers is essential to a proper understanding of the kinds of fundamental progress still needed in the numerical machine tool control art. It is noteworthy as a beginning point that the growth in numerical control applications in manufacturing operations and particularly in low production job shop operations has been due principally to the fact that numerically machined parts can be reliably produced with reduced manufacturing cost, extended manufacturing capability and/or improved quality as compared to results achievable with the older non-numerical machining techniques. Generally, the structuring of a total system for implementing numerical contouring machining operations and the structuring of the numerical controller itself have been deficient in that they have limited the extent to which improvement can be obtained in part cost and quality and further they have limited the extent to which fuller integration and better management control can be achieved in larger or total manufacturing systems involving a plurality of controlled low and/or higher production machines which are interrelated in a production process.

In any numerical contouring system, it is necessary first to obtain a drawing or other geometric description of the part to be produced. To avoid direct manual programming, a part programmer typically uses a high level language such as the well known and versatile three dimensional Automatically Programmed Tools or APT language which defines the part manufacturing instructions for the machine tool on the basis of the part geometry, the part orientation, the required tool or tools, the tool geometry, contour cutting speeds, and various supportive miscellaneous functions such as spindle speeds and coolant flows.

The APT instructional statement is entered into a digital computer where it is operated on by the APT compiler or processor program to generate a translated and much more detailed set of coded numeric instructions. The APT output instructions define among other things the points on a path to be followed by the cutter to produce the desired contour on the workpiece. The cutter path points are defined in terms of an orthogonal coordinate system referenced to the part.

A sufficient number of linear and/or circular contour segments are defined by the cutter path points to enable the retention of desired tolerances in the finished part. After post processing, the numerical controller uses command path points and its interpoint interpolation capability to provide motion instructions for the machine tool relative to the various machine motion axes.

Usually, the numerical controller operates with linear interpolation if the contour is a straight line or a free form curve defined by a series of straight line segments. Some controllers operate with circular interpolation where circular segments are required by the post processed output from the processor. In some prior art numerical controllers, parabolic interpolation may even have been provided where parabolic segments have been called for by the processor output.

It is common to refer to the processor output as the cutter location file and it is analogous to an assembly level language associated with general purpose digital computers. The cutter location file is often stored on a punched paper tape or a magnetic disc although other storage or transfer mediums can be employed.

Since the cutter location file is prepared independently of the characteristics of the particular machine tool and numerical controller which may ultimately be used to manufacture the part defined by the file, it is necessary that additional data processing be performed on the cutter location file once a selection has been made of the machine tool-numerical controller combination to be used. The supplemental data processing is performed by a post processor program which is designed for use with the particular machine tool-numerical controller combination and stored in a digital computer to operate on the cutter location file data.

The principal purpose of the post processor is to develop a series of numerical commands which can be applied to a particular numerical controller associated with a particular machine tool in order to cause the machine tool to operate on a workpiece and produce the originally defined part within specified tolerances. As in the case of the processor output, the post processor generated data may be stored on a punched paper tape although other storage or transfer mediums may be employed.

It should be specifically noted, as related in a paper entitled "Real Time Control Of Machine Tools" published by D. J. Evans in the April 1969 proceedings of the Numerical Control Society, that it is also possible to use a data controller as a direct transfer interface for direct flow of post processed standard format data from a central or supervisory digital computer to the numerical contouring controller which then operates a machine tool to make a part in accordance with the data. A tape reader may be used supplementally with the data controller for input of more conventional tape programs if desired.

The Evans paper generally is aimed at showing how hierarchical or other digital computer combinations can be used with point-to-point and/or contouring numerical controllers to produce integrated supervision and control over a total manufacturing system. Advantages associated with such direct supervisory digital computer use include increased data availability for management control over production and profits, increased machine cutting time, decreased production lead time, decreased spoiled parts, decreased or eliminated tape reader and tape handling requirements, extended automation to embrace scheduling and control of work product flow to and from machines and throughout the manufacturing system, software flexibility protection against system obsolescence, and extended application of numerical control to assembly machines, inspection machines, testing machines and medium production machines such as transfer machines.

Among other pertinent previous and prior art publications, U.S. Pat. No. 3,465,298 issued to N. L. La Duke et al. on Sept. 2, 1969 and entitled "Time Shared Automatic Machine Tool Control System", a paper entitled "Computer Controlled Machine Tools" and published by D.T. N. Williamson in the June 24, 1955 issue of Machinery, papers respectively entitled "Bunker-Ramo System 70 Direct Numerical Control" and "Application Of On Line Control To Machine Tools Permits Real Time Computer-Aided-Manufacturing" and respectively presented by A. J. McCall and E. E. Miller at the University of Cincinnati Machine Tool Controls Seminar on Sept. 9-13, 1969 and a paper entitled "Basic Principles: Computing Machines In Control Systems" and published in a reprint from the November-December 1960 and March 1961 issues of Electro-Technology also relate to the area of digital computer supervised numerical controllers associated with machine tools. More recent illustrations of numerical control industry interest in direct or supervisory computer numerical control systems include a paper entitled "A New Computerized Monitoring System For The NC Machine Shop" by M. Schulman, a paper entitled "Cutting Tool Coding: The Key To Complete NC" by C. Natoni, a paper entitled "Computers and Numerical Control: A Shotgun Marriage?" by E. R. Reese and a paper entitled "A Process Planning Language And Scheduling System For An NC Complex" by G. P. Putnam all of which were abstracted in the April 1970 NC Scene and scheduled to be presented at the Apr. 8-10, 1970 meeting of the Numerical Control Society in Boston, Massachusetts. In citing herein these and all other prior art or previous publications and patents and commercial products to illustrate the pertaining historic background, no representation is made that an exhaustive analysis has been made of all pertinent previous and prior art subject matter and no representation is made that the cited items disclose best previous or prior art subject matter pertaining to the point under illustration.

Regardless of the manner in which the post processor output is interfaced with the numerical contouring controller, there are certain fundamental functions which a post processor is normally designed to fulfill while developing numerical control commands from the cutter location file data generated by the processor. In the first place, the post processor is provided with the capability of decoding the cutter file data into a form suitable for further processing. Thus, instructions in the cutter file typically may include coded designations for axis identifications, miscellaneous machine tool functions, special operations, etc. and these must all be interpreted during the execution of the post processor program.

Since the cutter location file definition of the segments which form the command cutting path is made in terms of a coordinate system referenced to the part, the post processor must transform the cutting path commands from the part coordinate system to the machine tool coordinate system. Further, the post processor makes machine tool diagnoses such as whether movements beyond slide limits, clamp collisions or machine tool head collisions are involved in the relative tool and workpiece motions required by the cutter location file. If a mistake is diagnosed, that mistake may be corrected before further use is made of the part program.

One of the key elements in most present post processor programs may be referred to as the motion element and it is generally designed to accommodate the cutter location file to the particular machine tool-controller combination to be used in making the part. The motion element generates numerical control commands which reflect the dynamic capabilities of the machining system. In particular, the cutter file description is examined on a data block by data block basis to determine whether the corners between the successive linear and/or circular segments represented by the successive data blocks can be negotiated with specified contour tolerances at the prescribed corner entering and exit velocities. Generally, the velocity along a working path segment is reduced to lower values as required to produce corner motion into the next segment which results in a part contour within tolerances.

Typically, the test for the velocity reduction determination is whether the segment-to-segment path speed change exceeds a particular value which is a function of the allowable path tolerance, the angle of the corner, the servo characteristics, and the position loop gain. More information on the factors and theories related to contouring corner accuracy is available in the prior art such as a paper entitled "Effect Of Servo System Characteristics On the Accuracy Of Contouring Around A Corner" authored by H. E. Vigour and identified as Paper 62-250 AIEE Proceedings 1962.

If the required speed change between linear and/or circular segments is excessive, the post processor automatically determines a path point on the entering side of the corner at which feedrate must be reduced to reach some lower corner velocity. If the slowdown point or points are on the segment entering the corner, that point is accepted and step velocity reduction instructions, i.e., one or more velocity step change data blocks, are added to the cutter file instructions for that segment. If the slowdown point is on a path point prior to the segment entering the corner, the block of data for the first prior segment is recalled to produce the necessary step velocity reduction instruction block or blocks for that segment. However, the second prior block instructions may have to be recalled to add one or more step velocity reduction blocks for the second prior segment if another slowdown point is then required at a path point prior to the first prior segment. The programmed processing of data becomes extremely complicated with increasing numbers of segments which are recalled for reprocessing. Post processors vary in the extent and the manner to which reprocessing of prior segment data is undertaken to satisfy cornering accuracy requirements.

Once a corner slowdown point is identified for a linear or circular segment, the post processor typically generates the step velocity reduction instructions to provide from one to five or more stepped velocity reductions spaced in time to allow the machine slides to reach steady state velocities between changes. The various axis speed reduction instructions are generated so that the machine axis speeds are stepped down in the ratio necessary to define the specified slopes, and to define the specified tool orientation where tool rotation axes are involved. Similar considerations apply to stepped velocity changes during startup and stopping along a linear or circular segment.

For soft or low position loop gain machining systems such as many of those which employ the well known 1,000 Series contouring controller presently manufactured by the Bendix Corporation, the well known 3,300 Series contouring controller presently manufactured by the Bunker-Ramo Corporation, or the well known Mark Century 7,500 Series contouring controller presently manufactured by the General Electric Company, it is typical to employ a post processor which generates at most one block of velocity reduction data, i.e., at most one step reduction in velocity are made to some finite velocity at the corner. In turn, no more than one velocity stepup block are used to define one step increase in velocity for the segment following a corner. Similar to the case of velocity stepdown, the speed increases for the various axes are ratioed to define the prescribed path slope and the prescribed tool orientation.

In machining systems which involve hard or high position loop gain, the post processor typically generates up to five blocks or more of velocity stepdown data for pre-cornering slowdown to a reduced finite corner velocity and up to ten blocks of velocity stepup data for post-cornering speedup. The extended step velocity change data required in high gain machining systems stems from the fact that greater corner overshoot occurs more readily with the higher loop gain.

The post processor motion element may alternatively identify the path segment point at which deceleration or acceleration is required for cornering and generate an instruction block for the controller to initiate controller regulated slowdown at that segment point. If a post processor operates on this basis, it must be constructed to reflect the controller deceleration and acceleration control capability. U.S. Pat. No. 3,204,132 entitled "Contouring System Acceleration-Deceleration Control" and issued to R. V. Benaglio et al. on Feb. 7, 1962 illustrates an acceleration-deceleration control capability built into a prior art hard wired numerical contouring controller. That control employs an R-C circuit which generates an exponential ramp starting at the acceleration or deceleration initiation point to raise or lower the command velocity respectively from or to some small percentage of the full feedrate.

Additional functions of the post processor motion element include the provision of compensation for circle radii necessitated by the bandwidth limitations of the servo associated with the machining system in which the numerical instructions are to be used. Linearity checks are also made to assure the retention of specified contour cutting paths during tool rotation.

Various manuscript printout instructions are usually included in a post processor to provide for hard copies of diagnoses, listings of numerical and other instructions, training information, machine tool operator display instructions and other desired types of information. Finally, the post processor also provides for coding all developed instructions including numerical path commands into the standard EIA or other format and for punching the instructions on paper tape or otherwise preparing the instructions for transfer to some other storage medium.

The numerical path commands generated by the post processor define contour points through which the relative tool and workpiece motion is to be directed to produce the desired part contour. The interpolation capability of the numerical controller is used to generate a machine tool command position trajectory which includes the post processor defined contour points.

In the ideal case, the command position trajectory precisely defines the desired part contour. In practice, the command position trajectory precisely defines the part contour only if that contour is a straight line or a circle. It can only approximate the desired contour if the contour is a free form curve since, as already described, it is usually feasible only to derive the command position trajectory from a linearly and/or circularly segmented approximation to the desired contour. In any case, the dynamic response characteristics of the control loop and the machine apparatus cause some departure of the actual relative motion of the tool and the workpiece from the command position trajectory. However, the numerical control commands are developed to reflect servo and machine tool dynamic response characteristics so that cutting path departures from the command position trajectory are within desired part contour tolerances.

To implement the numerical control commands, the contouring controller operates with respective control loop arrangements for the respective motion axes under control. Each axis control most typically includes an inner high gain lead-lag compensated feedback velocity control loop which is closed about the axis electric motor or other prime mover and an outer position feedback control loop which is usually closed about the prime mover. The position control loop compares the trajectory command position with measured position along the machine axis and generates a velocity command for the velocity control loop.

As previously indicated, the position control loop typically is characterized with a low gain and it typically operates as a Type I control with proportional operation. Numerical commands for each linear segment are translated into appropriate ramp inputs to the axis position loops, and in turn properly valued and synchronized relative command velocities are generated for the various motion axes to achieve a cutting path slope corresponding to the segment slope. Circular cutting paths are directed by the use of a circular interpolator which usually employs digital circuitry to generate approximate sinusoidal time functions with 90° phase differences as the position loop inputs. As a result of the operation of the Type I control with a ramp position command, actual cutting position along linear segments lags the command cutting position by a constant amount of following error which is inversely proportional to the magnitude of the position loop gain. Following error also exists on circular segments in the Type I control and it varies as a result of the sinusoidal position command input.

If the numerical contouring controller is adjusted for a position loop gain which is too small at the specified feedrate, corner overshoot may be kept small but corner accuracy may nonetheless be inadequate because of the corner cutoff or undershoot produced when the command velocities for the corner exit segment are initiated. With larger position loop gain at the specified feedrate, the tendency to corner overshoot and corner inaccuracy is increased, and retention of part tolerances at path corners is achieved as required with the use of the previously described post processor programmed pre-corner velocity reduction steps and any necessary post-corner velocity increase steps.

Although each axis position control loop is usually closed about the prime mover, it is sometimes closed about the lead screw or the axis slide and in such cases some reduction in system stability is traded off for compensation of gearing inaccuracy. Therefore, accuracy of machine positioning along the command position trajectory usually depends both on the accuracy of the feedback transducers and on tool deflection. In the usual case of position loop closure about the prime mover, the accuracy of the drive train elements including the gearing and the lead screws also affects the machine positioning accuracy.

The position feedback transducer used in the position control loop may be an incremental or an absolute device which operates with a predetermined resolution. By the term transducer resolution as used for both digital and analog transducers, it is herein meant to refer to the smallest change in linear or rotary position that can be detected by the transducer. For further background information on feedback transducers, reference is made to a paper entitled "Feedback Transducers And Their Location -- Methods Of Obtaining Feedback Signals -- Effect Of Drive Train Structural Dynamics On Performance -- Location Of Feedback Transducers As Influenced By Drive Train Dynamics" and presented by R. Coughlin at the University of Cincinnati Machine Tool Controls Seminar In September 1969.

Incremental transducer devices usually produce pulse trains where each pulse represents an incremental position movement, typically 0.0001 inches. The pulse train is essentially a velocity signal and it is therefore integrated to represent position, often with the use of a binary up/down counter. If absolute signals are generated by the feedback transducer, a pulse train is typically generated by differentiating action of a circuit driven by the absolute position signal.

The most common numerical contouring controllers employ analog hardware for velocity loop implementation and digital circuit hardware for position loop and sequencing controls implementation. Typically, as more fully described in a paper entitled "Principles Of Data Processing In Numerical Control Of Machine Tools" published by J. L. McKelvie in the Electro-Technology reprint to which reference has previously been made in U.S. Pat. No. 3,069,608 issued to J. W. Forrester et al. on Dec. 18, 1962 and entitled "Numerical Control Servo System", a pulse train is generated to define interpolatively the command position-time trajectory for each motion axis. Each pulse represents a fundamental increment of relative tool-part movement, and the rate of pulse generation defines the axis command feedrate. Position feedback pulses are summed with the command train pulses and applied as an input to the position control loop ultimately to develop the axis velocity command for the velocity control loop.

Synchronization and proper valuation of the repetition rates of the command pulse trains for the various axes results in an overall command position trajectory along the desired contour. The Forrester pulse type numerical contouring controller operates as a sampled data system in the limited sense that position command pulses are discrete, but command position increment pulse generation rates may range as high as or higher than 33,300 pulses per second which approximately corresponds to a feedrate of about 200 inches per minute. Further, feedback measurements are discrete but all feedback pulses are directly responded to so that the control is well into the region within which it behaves essentially as a continuous controller.

As indicated in the McKelvie paper, a binary multiplier can be used in producing linear pulse interpolation, but a digital differential analyzer is generally required if circular interpolation is to be implemented. Reference is made to U.S. Pat. No. 2,841,328 entitled "Digital Differential Analyzer" and issued to F. G. Steele et al. on July 1, 1958 wherein there is presented further background information on digital differential analyzers.

Additional prior patents pertaining to the Forrester pulse type of numerical contouring controller include U.S. Pat. No. 2,899,653 entitled "Transducer" and issued to R. W. Capron on Aug. 11, 1959; U.S. Pat. No. 3,002,115 entitled "Electrical System For Controlling Movement Of Objects" issued to E. C. Johnson et al. on Sept. 26, 1961; U.S. Pat. No. 3,006,550 entitled "Digital Multiplier" and issued to E. C. Johnson et al. on Oct. 31, 1961; U.S. Pat. No. 3,011,110 entitled "Phase Or Frequency Modulated Digital Servo System" and issued to Yu-Chi Ho et al. on Nov. 28, 1961; U.S. Pat. No. 3,122,691 entitled "Digital Contouring System With Automatic Feedrate Control" and issued to R. M. Centner et al. on Feb. 25, 1964; U.S. Pat. No. 3,128,374 entitled "Control System" and issued to Yu-Chi Ho et al. on Apr. 7, 1964; U.S. Pat. No. 3,266,677 entitled "Pulse Ratio Control System" and issued to J. W. Forrester et al. on Dec. 28, 1965; and U.S. Pat. No. 3,431,478 entitled "Machine Tool Numerical Control System" and issued to J. W. Forrester et al. on Mar. 4, 1969. Among additional numerical contouring controller prior patents, notation is also made of U.S. Pat. No. 3,226,649 issued on Dec. 28, 1965 and U.S. Pat. No. 3,308,279 issued on Mar. 7, 1967.

Other prior art patents of varying degrees of pertinency to both point-to-point and numerical contouring controllers are listed in an article entitled "Numerical Control -- Here Is The Patent Situation" and published by H. W. Mergler in the February 1962 issued of Control Engineering. The patents listed in that article are numerous and accordingly have not been studied to determine their detailed prior art worth but nonetheless their disclosure content is, for reasons including the limitations of their apparent general scope, believed to be limited in worth to background information.

Numerical commands may also be implemented by means of a numerical contouring controller which operates without a conventional position control loop. Instead, a velocity control loop operates in response to an axis velocity command, a feedback velocity signal for the controlled axis and position feedback signals for the controlled axis and one of the other motion axes. The joint operation of the cross-coupled position feedback signals for each axis along with synchronized and properly valued velocity commands for the various axes assures precise path accuracy. Greater detail on this type of numerical contouring controller is presented in U.S. Pat. No. 3,099,781 entitled "Digital Control For Machine Positioning" and issued to L. W. Herchenroeder on July 30, 1963 and U.S. Pat. No. 3,148,316 entitled "Contouring Control Apparatus" and issued to L. W. Herchenroeder on Sept. 8, 1964. Electrical stepping motors have also been used to apply command position trajectories without the use of any velocity control loop and without position loop closure about any moving parts, but such schemes have been limited to low precision contouring and to higher cutting speeds which avoid cogging effects on part surfaces.

Although the Herchenroeder velocity control loop arrangement is characterized with cross-coupled position feedback loops to correct path errors, it is without further modification characterized with relatively poor tool displacement reaction excessive corner overshoot and, in some applications, system instability problems.

The Forrester pulse type position control loop arrangement does provide better reaction to tool displacement, but path accuracy is dependent upon axis response matching. Normally, matching of the response characteristics for the various axes in the hardware implementations of the Forrester pulse type numerical contouring controller is achieved by matching the closed position loop gains and the transient response characteristics relative to a standard step signal input.

The preceding comments are believed generally to relate the state of the prior art in numerical contouring machining systems. As already indicated, the entire system for converting the description of a part into a final product has provided at best only limited opportunity for further cost and quality improvement. Nonetheless, further improvement desirably should be made at least in the efficiency of reducing the part description into numerical contouring control commands, the extent of management controls over manufacturing systems, the machine tool operator/numerical contouring control interface and the dynamic performance of the numerical contouring controller itself.

Digital computer supervisory systems have provided some improvement or hold the promise of providing future improvement in some of these areas, but such improvement is limited. Further, the prior art numerical contouring controllers have placed a limit on the extent to which digital computer supervisory systems can be implemented in applying direct numerical computer control and the total manufacturing system concept.

Total digital computer supervisory manufacturing systems and direct numerical computer control have been limited in development for reasons including the fact that added difficulties and investment cost have been involved in implementing special hardware to interface the supervisory digital computers with the conventional digital-analog hard wired controllers for post processor command data flow to the latter. The fact that prior art numerical contouring controllers in general require a tape reader input, unless the added interfacing expense just indicated is undertaken, also leads to reenforcement against expansion by users into direct numerical computer control and total digital computer supervisory manufacturing systems because part program tape libraries tend to be accumulated to make the tape reader subsystem approach appear more desirable at least over the short run.

Limited expansion into direct numerical computer control and total digital computer supervisory manufacturing systems has meant limited realization of all the advantages associated with such systems as outlined in previous publications including the aforementioned Evans paper and the aforementioned McCall paper. Limited expansion has also meant continuance of many state of the art disadvantages including substantial machine downtime due to tape reader malfunction.

It is also significant that there has been no opportunity in prior numerical contouring machine systems for removal of the system requirement that the dynamic machine tool-numerical controller characteristics be reflected in the motion element of the post processor. This requirement should if possible be avoided since it causes the post processor output tapes or direct numerical control command output data to be lengthier than would otherwise be necessary and further it has substantially limited the utility of post processor tapes or direct numerical control command data to the particular machine tool-numerical controller combination incorporated in the post processor program.

Post processor programs have generally been further deficient from a machining system standpoint in that they make relative coarse approximations of maximum allowable velocity change in determining whether stepped velocity reductions are required for cornering purposes. No use is made of the more complex and more accurate method for determining maximum cornering velocity described in the noted Vigour paper. Part contour accuracy is assured with the use of slowdown point approximations and stepped velocity reductions but the price for this assurance is increased machining time over that which could otherwise be achieved. The feedrates can be increased to decrease machining time but retention of cornering tolerances requires proper operator judgement. On the other hand, even if the post processor velocity reduction determinations are made more finely in relation to cornering accuracy requirements, better machining time results can be achieved but the post processor tape or output data is inflexibly limited to use with the machine tool substantially at the specified position loop gains. Moreover, if the actual loop gains differ in fact from the specified loop gains because of drift either cornering accuracy or machining time is adversely affected.

With respect to numerical contouring controllers per se, the prior art devices including the Forrester pulse type hard wired digital-analog units have been limited in dynamic performance. Although relatively good steady state cutting path accuracy has been achieved by matching the steady state gains of respective motion axes, i.e., thereby making the axis control signals and the axis following errors proportional to the command slope in the case of linear segments for example, slight variations in the gain or drift in the gains with use has to some extent limited obtainable steady state path cutting accuracy.

Some improvement in steady state path cutting accuracy may have been obtainable with the use of special cross-coupled position feedback hardware similar to that disclosed in the previously noted Herchenroeder patents. However, precise path cutting accuracy has been theoretically obtainable only with the use of an error integrating controller with appropriate compensation or with a very high position loop gain but both of these approaches have led to problems of corner overshoot. The use of an uncompensated integrator has not been possible because of system stability requirements. It is also noteworthy that limited cornering capability of prior art numerical contouring controls has limited the extent to which position loop gain can be raised for better steady state path accuracy.

Matching of axis transient responses to a step change in the axis position command generally has enabled relatively good cutting path accuracy to be achieved during the transient period following axis step speed changes which involve only a path cutting speed change without a change in path direction. Thus, on linear segments for example, transient matching has enabled the ratio of the velocity control signals and the ratio of the transient following errors in the matched axis control channels to be made substantially equal to the command slope following a step change in the speed at which motion is commanded to occur along the segment. However, where a change in path direction has been required to command a corner, command and cutting path accuracy has been considerably poorer. As illustrated by the case of a corner between linear segments, the ratio of the step axis command velocity changes needed to move into the post-corner segment from the axis command velocities existing at the corner has not been equal to the ratio of the post-corner axis command velocities. Therefore, the ratio of step responses has not been proper for command and cornering path accuracy during the cornering transient period. Cornering accuracy has accordingly been limited in the prior art even with the use of transient response matching of axes.

Although the stepdown and stepup changes in velocity called for by step velocity change blocks generally have involved command velocity change ratios which define motion along the command segment, the step velocity changes nonetheless constitute discontinuities in the command position trajectory which lead to cutting path error if the transient responses are even slightly different and in any case leading to working speed changes which degrade the working surface finish. Further, the cornering step velocity changes per se, as well as the previously noted post processor approximation methods used for determining the step velocity changes, give rise to a loss in production time.

Generally, discontinuities in the command position trajectory and its derivatives have persisted in the prior art without satisfactory solution of the undesirable effects resulting from the discontinuities. The previously referenced Benaglio patent employs an exponential ramp signal initiated by an acceleration or deceleration tape block signal and that approach does provide some smoothing of the position command trajectory. However, the amount of smoothing is limited by the initial steep decay of the exponential deceleration ramp and the initial steep rise of the exponential acceleration ramp. The smoothing is also limited to the extent that step velocity changes occur at the corners when the startup value of the acceleration ramp is applied. Further, the Benaglio arrangement requires a fixed ramp time constant which is reflected in the post processor calculations of acceleration and deceleration initiation points, and in practice fulfillment of that requirement has been difficult to achieve with the drift prone R-C timing control referred to in the Benaglio patent and with otherwise economically justifiable timing control circuitry. Although prior art step changes in velocity called for by step velocity change blocks have enabled some relative cornering improvement to have been obtained with some deficiency in machining speed and path and cornering accuracy and surface finish, etc. prior art exponentially ramped acceleration and deceleration has not effectively provided any further improvement.

Prior art numerical contouring controllers have further been limited in the extent to which sampling techniques have been implemented to reduce the amount of data processing needed in the controller without affecting operating accuracy. As a result, the potential benefits obtainable with the employment of sampled data digital computer controllers in numerical contouring control systems have not been realized. Reference is made to a paper entitled "Computer Function Or NC Function In Computer Directed Machinery" and presented by L. R. Sanders at the IEEE Machine Tool Conference in Detroit, Mich. on Oct. 27-29, 1969 where notation is made on the difficulty involved in applying digital computers to contouring control. Reference is also made to an article entitled "Using Computers In NC Applications" and published by R. C. Downe in the March 1970 issue of NC Scene where notation is again made on the difficulty of digital computer implementation. Similar commentary with emphasis on the comparative economics of hard wire and digital computer types of controls is presented in the April, 1970 NC Management Report published by the Chilton Company.

Limited flexibility and cost effectiveness have also limited the worth of prior art numerical contouring controllers. Thus, each of the various types of prior art hard wired controllers have generally been limited to the use of data generated by the post processor designed for use with that type of controller. Limitation has also been placed on the realistic possibilities for improvement in operator interface with the prior art numerical controllers. The hard wired controller has also been particularly susceptible to obsolescence because changes in controller function and operation, which implement newly developing numerical control system theories or new hardware components, normally require substantial hardware redesign and therefore ultimately place excessive cost on the machine tool users.

Finite register sizes in prior art hard wired numerical contouring controllers have also limited controller flexibility. Post processors have been required to place a limitation on linear path segment length and this restriction is undesirable even though long linear paths are possible by operating the post processor to divide lengthy paths into smaller sections.

As a result of difficulties encountered in wired circuit implementation, prior art numerical contouring controllers have further been more or less limited to linear and circular interpolation. It is also noteworthy that the hard wired prior art numerical contouring controllers have had limited capability for implementing developing concepts in adaptive and optimizing control.

With respect to cost effectiveness, extension of numerical contouring control capability to time sharing use for operating multiple machine tools has generally not been economically feasible with the use of prior art hard wired numerical contouring controllers. Similarly, the cost of hardware implementation of controller test functions and miscellaneous tool interface functions along with the required motion control functions has become more and more prohibitive in the hard wired prior art numerical contouring controllers as the number of desired miscellaneous machine tool functions has increased. Perhaps most importantly, wide variation in user functional requirements impede efficiency in production of hard wired numerical controllers because of the hardware variation or supplementation needed for satisfying the requirements.

SUMMARY OF THE INVENTION

In accordance with the broad principles of the invention, a numerical contouring control system and method employs a controller which preferably operates in a closed position loop in response to numerical command input data and feedback position data which is accumulated and sampled on a predetermined basis. The controller preferably operates on the numerical command input data to generate a smooth command position trajectory as a reference for the position loop. In addition, the controller preferably includes a digital computer to generate the reference trajectory, develop output position error commands, and efficiently provide machine tool and operator interface functions. It is preferred that the computer program system be formed from programs written in assembly language and that the operating programs themselves provide service for data input requests in those instances in which these provisions are needed for economic justification for the particular type of computer used.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a schematic diagram of a numerical controller arranged to provide five axis contouring control in accordance with the principles of the invention;

FIG. 2 is a schematic view illustrating six reference axes of motion for a machine tool;

FIG. 3 shows a perspective view of a conventional profile and contour milling machine having five axes of motion;

FIGS. 4A-C show a schematic diagram of a numerical contouring computer controller arranged in accordance with the principles of the invention to provide contouring control for a two axis lathe;

FIG. 5 shows a front elevation view of a two axis Bullard vertical turret lathe which can be operated by the controller of FIGS. 4A-C in accordance with the principles of the invention;

FIGS. 6A-H show various curves which illustrate certain concepts related to contouring control and which further illustrate some of the improvements achieved with the practice of the present invention;

FIG. 7 shows a plan view of a display and operating panel for use with the controller of FIGS. 4A-C and the machine tool of FIG. 5;

FIG. 7A schematically illustrates switch amplifier circuitry for use with an MDI input;

FIG. 8 schematically shows tape reader control amplifier and tape and channel drive circuitry associated with a tape reader employed in the controller of FIGS. 4A-C;

FIG. 9 shows a schematic diagram of photo-diode channel circuitry associated with the tape reader;

FIGS. 10 and 10A show schematic diagrams of tape reader control and MDI input circuitry;

FIGS. 11A-G show schematic diagrams of various pushbutton switch inputs, limit switch inputs and relay contact inputs for the controller of FIGS. 4A-C;

FIGS. 12 and 13 show schematic diagrams of processing circuitry associated with feedback position transducers in the controller of FIGS. 4A-C;

FIGS. 14A-B show a schematic diagram of X and Z axis counter circuitry;

FIG. 15 shows a schematic diagram of a clock circuit employed in the controller of FIGS. 4A-C;

FIG. 16 shows a schematic circuit diagram of service request interrupt and address circuitry employed with the digital computer employed in the controller of FIGS. 4A-C;

FIG. 17 shows a schematic diagram of input interface and expander circuitry employed with the computer;

FIG. 18 shows a schematic diagram of input output address interface circuitry employed with the computer;

FIGS. 19A-B show schematic diagrams of output interface and expander circuitry employed with the computer;

FIGS. 20A-B show schematic diagrams of transfer buffer and noninverting isolating NAND circuitry associated with the expander circuitry of FIGS. 19A-B;

FIGS. 21 and 22 show schematic diagrams of lamp driver circuits associated with the circuitry of FIGS. 20A-B;

FIGS. 23 and 24 show schematic diagrams of relay driver circuitry associated with the circuitry of FIGS. 20A-B;

FIG. 25 shows a schematic diagram of a readout driver circuit associated with the transfer buffer circuitry of FIGS. 20A-B;

FIG. 26 shows a schematic diagram of readout and offset display circuitry associated with the readout driver circuitry of FIG. 25;

FIG. 27 shows a schematic diagram of commutator and reference voltage circuitry associated with motion control circuitry coupled to the output of the computer;

FIG. 28 shows a schematic diagram of a buffer and decoder circuit portion of a digital-to-analog converter in the motion control circuitry;

FIGS. 29A-B show schematic diagrams of a digital-to-analog converting switching amplifier circuit and a servo amplifier controller employed in the motion control circuitry;

FIG. 30 shows a schematic diagram of the manner in which numerical command data flows from the input tape through the computer;

FIG. 31 shows a flow chart representative of a Main Program which forms one of two major parts of the program system for the computer;

FIG. 32 shows a flow chart representative of an AUTO CYCLE Program which forms a part of the Main Program;

FIG. 33 graphically illustrates the manner in which the program executions are interrelated over a short period of computer operating time;

FIG. 34 illustrates three consecutive segments of a contour to be machined;

FIG. 35 shows a flow chart representative of a Precalculation Program which forms a part of the Main Program;

FIG. 35A shows a flow chart representative of an Acceleration Check Program which forms a part of the Precalculation Program;

FIG. 35B shows a flow chart representative of a Section Calculations Program which forms a part of the Precalculation Program;

FIG. 36 shows a flow chart representative of a Motion Control Program which forms the other major part of the computer program system;

FIG. 37 illustrates certain quantities associated with three successive sample periods over the command position trajectory.

DESCRIPTION OF THE PREFERRED EMBODIMENT

I. THE GENERALIZED SYSTEM AND METHOD OF THE INVENTION

More specifically, there is shown in FIG. 1 a control system 10 for implementing numerical contouring control in accordance with the principles of the invention. The system 10 preferably employs a programmed digital computer system 12 which is connected as a controller in a control loop arrangement 14 for each of a plurality of machine motion axes. It is noteworthy, however, that some features of the invention can be implemented in hard wired controls.

As shown in FIG. 2, a machine tool may have six coordinate reference axes including the orthogonal X, Y and Z axes and the rotational a, b, and c axes about each of the orthogonal axes. A machine tool may have motion axes corresponding to any or all of the reference axes of FIG. 2, or it may have various motion axes which are referable to the reference axes of FIG. 2. Thus, although machine tools in practice rarely have more than five motion axes they may have as many as eight or nine or more motion axes.

In this instance, the numerical contouring control system 10 is shown as providing motion control for a profile and contour milling machine along five motion axes, i.e., the X, Y, Z, a and c axes as shown in FIG. 3, because the commercial numerical contouring control application of the invention described subsequently herein has been standardized to accommodate flexibly up to five motion axes of control by relatively inexpensive software and hardware modularization. The coupling of the contouring control system 10 to the machine tool is schematically illustrated in FIG. 1 as being completed through respective machine members which produce the movement of the tool or the workpiece along or about the various machine tool motion axes.

The control loop arrangement 14 for each motion axis preferably includes an outer closed position control loop 16 as indicated for the X-axis, and each position loop 16 includes the digital computer system 12 and means 18 for converting digital computer output motion command data to an analog command signal. The later signal is a velocity command signal which is summed with a velocity feedback signal from a tachometer as indicated by the reference character 20 at the input of an inner velocity control loop 22 indicated for the X-axis. The resultant analog velocity error signal is amplified by an electronic amplifier 24 and applied to an axis drive system 26 to operate an electric motor or other prime mover which is coupled by suitable means such as gearing and a lead screw mechanism to the machine member for that axis. The feedback tachometer in this case is coupled to the prime mover output shaft to obtain the velocity feedback signal.

In stepping motor applications of certain features of the invention, the velocity loop 22 normally is not required since the computer output command signals are then in the form of step motor advance or reverse signals which are essentially position command signals. With the use of the velocity loop 22 or similar velocity loops in the control loop arrangement 14 for each motion axis, contouring requirements coupled with computer capabilities presently necessitate velocity loop closure externally of the computer as indicated for the velocity loop 22 since velocity control must be extremely fast. However, many features of the present invention can be compatibly applied with velocity loop closure through the digital computer system 12 either in the preferred outer position control loop type of numerical contouring controller or in the Herchenroeder type of numerical contouring controller to which reference has been made previously herein.

Position feedback signals are provided in each position control loop 16 by a suitable transducer 28 which in this case is coupled to the most common position feedback source, i.e., the prime mover output shaft. However, other position feedback source points such as those previously indicated can be employed within the framework of the invention. Since each position loop 16 is closed through the preferred digital computer system 12 by application of the position feedback signals thereto, there is realized the advantage of real time motion control computing flexibility with a resultant capability for improved motion control which leads to improved contouring performance, better part quality and more efficient and more economic manufacturing processes. Further, the digital computer system 12 and its software flexibility characterize the numerical contouring control system 10 with interfacing flexibility and corresponding compatibility with existing and future numerical control equipment which a user may have or obtain and thereby makes the development and integration of total digital computer manufacturing systems much more readily obtainable. Many other advantages are also associated with the digital computer system 12 as will become more evident throughout this description.

In applications which make use of stepping motors as prime movers for the various axes, position control does not normally involve loop closure in the conventional sense, i.e., only command stepping pulses to the motor are registered and no other position feedback data is collected on actual changes in physical position of any moving parts. Accordingly, the position control loop for the stepping motor application often is regarded as running open loop, but in any case many features of the present invention can be compatibly applied with stepping motor implementation of position control commands.

In order to reduce the computer memory capacity and duty cycle requirements and thereby provide for economic and efficient application of a digital computer to real time numerical contouring control, a position increment counter is included in the feedback path of each closed position control loop 16 as indicated by the reference character 30. The counter outputs are transferred to the digital computer system 12 during each of successive sampling time periods under the control of the digital computer system 12 as indicated by the reference character 32. Generally, as more fully described subsequently herein, it is preferred that fixed time sampling be employed, but variable time sampling such as that corresponding to fixed distance sampling can be employed in some applications of the invention system and method if desired. With the implementation of sampling techniques, digital computer implementation of various features of the invention is facilitated.

With computer products presently available, the application of unique computer software structuring and/or the application of sampling techniques in the position feedback path and in the computer operation in the forward control path make possible the use of minicomputers as dedicated machine tool numerical contouring controllers on a one for one basis at a price competitive with hard wired numerical contouring controllers in many or most applications. Thus, the commercial numerical contouring controller implementation of the invention subsequently to be described herein can be manufactured for sale at a price level competitive with that for conventional hard wired numerical contouring controllers in at least the following applications: machining centers; multiaxis vertical turret lathes, multiaxis horizontal boring mills; multiturret chuckers; and engine latches. In contrast, direct implementation of the conventional Forrester pulse type numerical contouring control position loop with a computer is at best difficult and at worst not possible with present day minicomputers because of excessive memory requirements and duty cycle time requirements as indicated for example in the aforementioned Sanders paper.

Although sampling techniques have been employed in the conception and development of the present invention, the structuring of the numerical contouring control system operating parameters is not built on sampled data system design theory. Such theory is presented for example in a paper entitled "Sampled-Data Processing Techniques For Feedback Control Systems" and published by A. R. Bergen and J. R. Ragazzini in the AIEE Transactions in November 1954. Instead, the numerical contouring control system 10 functions with sampled data operation while still appearing to be a continuous controller to the controlled apparatus, i.e., the machine tool. Further detail on the sampling operation characteristics of the present invention is presented subsequently herein.

The program system for the digital computer system 12 is stored in the computer core memory ad executed to develop contouring motion control commands in real time as well as various nonmotion control commands and other outputs. Most generally, the program structure and content can take various forms. To facilitate state-of-the-art minicomputer implementation of the invention, the programs are preferably written in assembly language form thereby conserving core memory use and program execution time. For the same reason, the standard executive program package usually available for conventional process control computers is omitted and instead the operating programs are structured to function in conjunction with hardware interrupts in managing the flow of input data into the digital computer system 12. All nonmotion program functions and all housekeeping program functions are executed substantially without interfering with motion control program functions. Nonetheless, improved and less costly machining performance is achieved.

In generating motion control commands, the program system operates as a linear or circular or other nonlinear interpolator on incremental or absolute input numerical control command data to generate a command position trajectory for each motion axis. Successive points on the command position trajectory are generated at the preselected sampling rate and compared with the correspondingly sampled feedback position data during successive sampling periods. Position error is determined from the comparison and may be digitally compensated with or without a gain to obtain a velocity command determination for computer output to the velocity axis 22 under control.

Each axis command position trajectory is preferably made smooth from segment to segment by on line determination and application of pre-corner deceleration and post-corner acceleration thereby substantially avoiding position trajectory discontinuities due to step velocity changes and enabling better cutter path accuracy, better cornering accuracy, higher position loop gain or a reducable sampling rate or some overall improved combination of these system characteristics. In the preferred implementation of the invention, the segment velocity curve and higher derivative curves do have discontinuities, and these have not been eliminated since the performance benefits for smoothing discontinuities in the higher derivative curves quickly diminish in value with the increasing order of the curves. In any case, the availability of software flexibility makes it convenient to implement smoothing of higher order derivatives of the command position trajectory when application conditions so warrant. Although the sampling action produces discontinuities along the command position trajectory, the sampling rate is made high enough to keep transients at a low level so as to substantially avoid path error similar to the kind previously described as resulting from step velocity changes.

In placing the numerical contouring controller system 10 into operation, the position loop gains are balanced for the various axes to provide for linear path segment cutting accuracy. As a result of improved cornering obtainable with the generation of smooth command position trajectory, higher position loop gain can be employed to produce comparatively higher tool load reaction as well as improved path accuracy or reduced sensitivity to imbalancing drift in the axis gains. It is also noteworthy that position loop gain can be flexibly modified during system use substantially without limitation from post processor output data for reasons subsequently considered more fully herein. Further, with digital computer software flexibility, position loop operation can be conveniently modified with developments in cross-coupled position feedback to avoid or reduce the need for axis balancing.

The nonmotion functions associated with the operation of the digital computer system 12 include generating information signals for operating displays and readouts 34, responding to operator and machine tool contact closure inputs, and generating of command signals for operating the magnetic logic, i.e., the machine tool relays associated with tool selection, spindle speed, coolant flows and other miscellaneous functions. With the use of the digital computer system 12, standard hardware can be economically extended with software implementations to provide improved machine tool interface capability as compared with hard wired numerical contouring controllers which require increasingly complicated and expensive hard wired circuitry for increasing size of machine tool interface requirements. Further, the digital computer system 12 even provides the opportunity for software expansion to achieve additional functional requirements imposed on conventional post processors and thereby cutback on post processor programming time and provide post processor data or tape output savings.

Numerical control commands are applied to the digital computer system 12 by a command data input unit 36 under the control of a hardware interrupt system 38. In some user applications, the data input unit 36 will preferably be a paper tape reader or a magnetic tape reader while in other user applications the data input unit 36 will preferably be a data link unit which provides direct data flow to the digital computer system 12 from a supervisory digital computer 40.

A tape reader input involves various user advantages. For example, machine tool operators need relatively little retraining to operate a paper tape input computer contouring controller since most numerical contouring controllers now use tape readers. Further, many existing processor tapes can be retained by users for post processing into a form compatible with the computer 12.

As a result of reduced post processor functional requirements in the preferred practice of the invention which involves acceleration and deceleration calculations in the on line digital computer system 12, post processor tape preparation cost savings up to 20 percent or more are realized. Further, existing post processor tapes which may have been accumulated by a user can often be employed with the digital computer system 12 if the computer 12 is loaded with a suitable front end program for decoding the tape content into a form acceptable for processing by the standard program system in the computer 12 to perform motion control and other functions. The interfacing capability of the digital computer system 12 with the outputs from various post processors exists for both tape reader and data link implementations of the invention.

A computer data link input also has various user advantages. In the first place, hard copy tapes and the costs associated therewith are eliminated. Secondly, tape reader malfunctions historically are the major cause of machine downtime and the major maintenance item for numerical contouring controllers, and these disadvantages are accordingly avoided with the use of a data link. The data link interfacing capability of the digital computer system 12 coupled with the computer software flexibility enables the facilitated development and/or implementation of total digital computer manufacturing systems. Thus, in general the efficiency of generating numerical commands from cutter location files for controller implementation is substantially improved.

In this instance, the supervisory digital computer 40 is shown as being the unit within which the post processor output data is stored for transmission to the digital computer system 12 by tape or by data link. The post processor program itself is executed in the supervisory computer 40 to generate the numerical command data for ultimate application in the numerical contouring control system 10. Magnetic discs 42 may be used for storing the post processor output data until needed for transfer to the system 10 in data link applications of the invention or until needed for output to a tape in tape reader applications of the invention. Generally, the post processor can be resident in a computer other than the supervisory computer 40 and in that case the post processor disc output is transferred for use with the supervisory computer 40.

Because of the various resultant advantages, it is preferred that the preferred acceleration and deceleration calculations be performed in the numerical contouring control system 10. However, acceleration and deceleration calculations may be performed within the post processor computer in some applications which involve implementation of various features of the invention. If acceleration and deceleration calculations are performed in the post processor computer, the instructions for acceleration and deceleration become a part of the post processor numerical command data output which is transmitted to the numerical contouring control system 10.

An operator control 44 is included in the numerical contouring control system 10 to provide shop flexibility in the monitoring of machine tool operations. This flexibility is improved over the prior art by the extension of operator-numerical controller interfacing made possible by the digital computer system 12.

II. COMMAND POSITION TRAJECTORY

In order to clarify the contribution made to the pertaining art by the present invention insofar as contour cutting performance is concerned, there are shown various schematic curves in FIGS. 6A-6H. These curves illustrate the improved preferred practices under the present invention as contrasted with conventional prior art practice for the most common case of linear segment contouring. In addition, various general concepts associated with contour machining operations are illustrated by these curves.

In FIG. 6A there is shown a linear segment 50 on a command contour in the X-Y plane. Numerical contouring controller interpolation is to be provided between post-processor defined end points A(x 1 , y 1 ) and B(x 2 , y 2 ) in generating a command position-time trajectory for implementation in the machine tool. To generate the command contour segment slope necessary to move linearly from point A to point B, the ratio of the Y-axis velocity and the X-axis velocity is:

V y /V x = (y 2 -y 1 )/(x 2 -x 1 )(1.)

Further, as indicated by the actual cutting machine position P M , zero path error requires the ratio of the axis following errors to be:

E y /E x = V y /V x (2.)

Path following error is a term used in the pertaining art and it equals the distance along the contour segment from the position reference P R to the actual cutting position P M . The point P Me represents a cutting position which could occur as a result of cutting path error.

In FIG. 6B, there is shown a linearly segmented contour 52 in the X-Y plane and the manner in which it is generated through synchronized X-axis and Y-axis command position trajectories 54 and 56. The slopes (velocities) of portion 58 and 60 of the X and Y trajectories 54 and 56 are proportioned to generate the command slope for the segment 62 on the contour 52; the slopes of portions 64 and 66 of the X and Y trajectories 54 and 56 are proportioned to generate the command slope for the segment 68 on the contour 52; etc. A typical actual cutting path produced by a prior art numerical contouring controller is illustrated by dotted line 70. Point 72 illustrates corner undershoot error and point 74 illustrates corner overshoot error.

In FIG. 6C, there is illustrated in greater detail the conventional prior art ramping method for generating the command position trajectory over successive linear segments. A discontinuity occurs between the successive position reference ramps at the corner point x B between the succesive segments x A -x B and x B -x C . In FIG. 6G, there is illustrated the conventional method of using stepped velocity changes for slowdown or speedup. The time to traverse the segment x A -x B is increased through use of reduce velocity between point x 1 and x B . In addition to the discontinuity at the corner x B , a discontinuity is created at the stepped velocity reduction point x 1 . In connection with both FIGS. 6B and 6C, position reference ramps are similarly generated for the other motion controlled axes to provide the velocity ratios necessary for producing the desired command slopes for the contour segments.

In FIG. 6E, there are illustrated some aspects of the performance improvement which can be achieved with the use of the present invention. Thus, the contour points x A , x B and x C are defined by the X-axis position command trajectory, but that trajectory is smoothed by the application of acceleration through ramped velocity increase from zero corner velocity over the segment leg x A -x A1 , deceleration through ramped velocity reduction to zero corner velocity over the segment leg x A2 -x B , and acceleration through ramped velocity increase from zero corner velocity over the segment leg x B -x B1 . Similar generation of command position trajectories on the other motion controlled axes provides the proper velocity ratios necessary at all times for generating the desired command slopes for the contour segments.

In FIG. 6F there is illustrated the X-axis velocity-time function corresponding to FIG. 6E. FIGS. 6D and 6H show respective prior art stepped velocity function curves corresponding respectively to FIGS. 6C and 6G.

III. HARDWARE FOR TWO-AXIS NUMERICAL CONTOURING COMPUTER CONTROLLER APPLICATION OF THE INVENTION SYSTEM AND METHOD

A. DIGITAL COMPUTER CENTRAL PROCESSOR

In FIGS. 4A-4C, there is shown in greater detail a numerical contouring controller 80 (FIG. 4B) provided with power from a power supply 82 and arranged in accordance with the principles of the invention to provide contouring control for a two-axis Bullard 26 inch vertical turret lathe 84 FIG. 4A which is illustrated in FIG. 5. The indicated X and Z axes are placed under motion control. The numerical contouring controller 80 operates with a general control loop arrangement for each axis like that described for the system 10 in FIG. 1.

A digital minicomputer central processing unit (CPU) 86 is preferably included in the numerical contouring controller 80 to make the necessary determinations for generating real time motion and nonmotion commands for implementation by the lathe 84. The CPU 86 can be any suitable unit such as the CPU used in the process computer system known as the P-2000 and sold by Westinghouse Electric Corporation. The P-2000 has a calculated mean time between failures of about 2 years particularly since it makes extensive use of integrated circuitry.

The P-2000 presently has a core memory cycle time of 3 microseconds and it operates with a 16 bit word length and with hardware multiplication and division capability. It provides up to 64 buffered input/output channels and the size core memory, which provides the advantage or permanence over hard wired controllers, can range from 4 K up to 32 K depending upon the kind of machine tool controlled and the kinds and amounts of functions performed. In addition, mass memory can be employed with the P-2000. Other characteristics of the P-2000 include a temperature operating range of 0°-55°C, automatic power failure protection, scratch pad memory, and availability of double precision arithmetic.

The P-2000 CPU and the additional associated equipment which form the numerical contouring controller 80 are housed in a cabinet (not shown) 50 " × 26" × 66" × high. The ambient operating range of the controller 80 is 32°F to 120°F at up to 95 percent relative humidity. It operates with the use of power at 120 V and 60 Hz. In other applications of the invention, a wide variety of commercially available or developable digital computer systems or digital minicomputer systems can be used in place of the P-2000.

In implementing the invention with the P-2000 CPU, no use is made of most of the peripheral systems standard to the P-2000 series of computer systems. Thus, the standard analog input system and the standard contact closure input and output systems are not employed. Instead, special digital interfacing circuitry is employed in the controller 80 as subsequently described more fully herein. In FIGS. 4A-C and subsequent figures pertaining to electrical circuitry, manufacturing drawings have been employed as the basis for the illustrated circuits and accordingly manufacturing L, K and Z drawing numbers are applied to the figures respectively corresponding thereto. Generally, the more detailed figures are indexed to FIGS. 4A-C by means of the L numbers shown in the boxes in FIGS. 4A-C. Further, a wiring list subsequently presented herein makes use of the manufacturing drawing numbers as an index.

It is also noteworthy that dashed lines about circuitry in a figure designates the fact that it is mounted on a common printed circuit board. Further, as a matter of convenience, circuit elements, are designated by circuit element numbers such as C1, R5, Q12, etc. in the figures in correspondence to the manufacturing drawings and therefore these numbers are all different on any one drawing but are often common from drawing to drawing. Because of modularization design techniques a number of illustrated circuits on particular boards are not used in this particular implementation of the invention. Input and output circuit terminals which are used generally are indicated by a signal name printed respectively to the far left or far right of a figure.

B. COMMAND DATA INPUT

Although command data may be automatically entered into the CPU 86 by data link or other means (not indicated), it is preferred in the present application to employ a commercially available paper tape reader 90 as shown in FIGS. 4A-C for this purpose. The tape reader 90 is a 300 cps unit of the photoelectric type with automatic rewind. Eight channel 1 inch tape coded in EIA RS244A or RS358 is used in the tape reader 90. In other applications, higher speed tape readers can be employed if desired.

In the automatic mode of operation, the CPU 86 generates a tape block read address to a tape control circuit 92 in FIGS. 9 and 10. The address signal CO, R6 and the bit signal OXA14 operate an ADVANCE NAND flip-flop memory 94. NAND circuit 61 accordingly operates a flip-flop 71 in FIG. 10A to generate an enabling signal FEOBM once an end of block signal EOB is obtained from the tape and thereafter it is assumed that the tape information is valid. In turn, a NAND flip-flop 73 is set by means of SPRK as soon as a legitimate sprocket hole is detected, and a TAPE CHARACTER signal is generated by NAND block 75 to indicate through a service request interrupt circuit 79 (FIGS. 4A-C) to the CPU 86 that the tape can be read for buffered channel input. Flip-flop 77 generates SPRKEL to prevent multireading of tape characters because of whip or backlash in the tape.

A signal DRRT is generated by NAND gates 96 and 97 in FIG. 9 if a tape forward signal OTF1 is output by the CPU 86. In FIG. 8, a power amplifier 98, comprising a first stage transistor such as the 2N4410 type and a second stage transistor such as the 2N5298 type, then raises the amplitude and voltage level of the logic signal DRRT to a drive signal TRF which causes conventional electronically controlled drive circuitry 101 to start the tape reader 90 in its tape block reading cycle.

With respect of FIG. 9, photoelectric diodes 102-109 are coupled to respective like filter and amplifier circuits 110 which square up and amplify any generated sprocket signals while rejecting noise. Suitable first and second stage transistors 111 and 112 are employed along with R-C coupling and filter circuitry. Outputs of the second stage transistor 172 in the circuits 110 are applied to respective NAND blocks 113 in the circuits 110, and the transistor outputs are further applied to a NAND circuit 114 as designated by CH1-CH8 to develop signals for application to conventional parity error circuitry 115 in FIGS. 4A-C (details from manufacturing drawings L70 and L71 not shown). The transistor outputs are also directly applied to the parity error circuitry 115 as indicated by signals TCH2-TCH8. Signals TCH-TCH8 from the NANDS 113 are additionally applied to the parity error circuitry 115. The functions of the parity error circuitry 114 include checking for parity and also providing an EOB signal at end of block and an EOR signal at the end of the tape.

Bit signals IEA0-IEA7 generated by output NAND blocks form a tape data word for computer buffered channel input. Photo-diode 116 generates a signal through a transistor amplifier 117 more slowly than the other photo-diodes operate through the amplifiers 110.

The photo-diode 116 accordingly generates a sprocket signal SPRK which instructs the computer to call for a read in of the character detected by the photo-diodes 102-109 and formed by the bit signal IEA0-IEA7. When the signal SR5AD is routed to the output NAND blocks, the detected character bit signals are buffered into the computer. The described read process continues automatically until the EOB signal is generated by the tape, and a NAND block 118 (FIG. 10A) then generates EARLY STOP to reset by hardware signal the ADVANCE memory flip-flop and stop the tape reader 90 until the next block read instruction from the computer.

A NAND block 119 resets the ADVANCE and FEOBM flip-flops 94 and 71 upon command by computer bit signal OXA11. A REWIND memory 120 causes tape rewind through NAND blocks 121 and 122 (FIG. 9) and amplifier circuit 123 (FIG. 8).

Manual command data input is provided in FIG. 7A by a sign thumbwheel switch 80 and a plurality of magnitude thumb-wheel switches 81-85 and 87. The magnitude thumbwheel switches are used in the manual data, the reference and the offset modes.

In the manual data input mode, the thumbwheel switches are used to input sequence number, preparatory codes, axis command, arc offset, auxiliary function and offset number. In the offset mode, the thumbwheel switches are used in relation to the offset and the offset number. When the control is in the reference mode, the thumbwheel switches are used in relation to the axis offset.

Computer address signals OTF5-OTF10 are sequentially applied through respective power amplifier blocks 88 to the respective magnitude thumbwheel switches to generate position detection signals for the switches. Address signal OTF4 is applied through a power amplifier 88 to the sign thumbwheel switch 80 to produce a sign signal, and address signal OTF12 is applied through a power amplifier 88 to an address switch 89 to determine the computer routing of the thumbwheel switch signals.

The thumbwheel and address switch signals are applied to a group of AND blocks 90 through 97 so as to develop signals MDI-CH1 through MDI-CH8 in EIA code. The latter signals are transferred through respective conventional noise filter circuits 91 and conventional transistor amplifiers 92 to respective gating NANDS 93. A signal MDI ADDRESS gates the NAND blocks 93 to generate computer input bit signals IEA0-IEA7 which are applied to the input expander circuit 292 as indicators of the various MDI switch positions and the input data corresponding thereto.

C. OPERATOR PANEL CONTROLS AND MACHINE TOOL CONTACTS

Improved shop floor flexibility and better machine-operator interfacing is enabled by the use of the present invention. Thus, as shown in FIGS. 4A-C, operator pushbutton switches 150, operator selector switches 151, and machine tool limit switches 152 and relays 153 are coupled to the CPU 86 through attenuator circuitry mounted in this instance on four printed circuit boards 154A, B, C and D and through input filter printed circuit boards 157, 158, 159, 160, 161, 162 and 163. The operator pushbuttons and selector switches referred to herein are illustrated on the control panel in FIG. 7 and/or in the circuit schematics.

As shown in greater detail in FIG. 11A, like attenuator circuits 164 are respectively associated with all input contacts 150-153. It includes a pair of resistors 165 and 166 which drop the -110V DC voltage on an input bus 167, if applied to the attenuator circuit by series contact closure, to -20V DC on an output line 168. If the series contact is open and voltage is applied from the bus 167, a resistor 169 pulls up the potential on the output line 168 to +24V DC.

Each filter printed circuit board is associated with a predetermined class of input contacts which typically involve attenuator circuits on different attenuator printed circuit boards 154A-D. The filter printed circuit boards are alike as detailed in FIGS. 11A-11F. Thus, for uniformity with the 16 bit word length P-2000 computer, each filter printed circuit board includes sixteen like filter and address circuits 170 including an input noise filter circuit 171 to which there is applied the output of any associated attentuator circuit 164. NAND block 172 is then used to develop a logic level signal for application to an address NAND block 173. NAND blocks 174, 175 and 176 carry a computer C, R address signal to address lines 177 and 178 so as to enable the word input IEA0-IEA15 at the output of the NAND blocks 173 to be channeled to respective OR address busses in the input expander circuit 292 for entry into the CPU 86.

As shown in FIG. 11A, the filter board 157 has applied to it the following input contacts which are continuously scanned by the CPU 86:

a. A normally closed contact of a noise suppressed EMERGENCY STOP relay is operated if control power is lost, a pushbutton switch EMERGENCY STOP is operated, any of a predetermined number of machine tool overtravel contacts are operated or any of a predetermined number of machine tool overload contacts are operated. Generally, in the case of a power failure, the running program in the computer is placed in nonvolatile core storage, the axis drives are stopped, the core memory is prevented from getting reset and a CONTROL ON lamp described subsequently herein is turned off.

b. A contact operated by a CYCLE STOP pushbutton causes motion to terminate at the completion of commands in the present block of tape. It also provides reset for parity error, command error, end of program, program stop, and optional stop.

c. A normally closed contact of a noise suppressed NOTR relay is operated if any of predetermined limit switches at the ends of machine tool table travel are operated.

d. A normally closed contact of a machine tool relay 23CR is operated when a delay in the execution of the next block of tape is needed to allow time for machine sequencing to be completed (such as turret rotation).

e. A contact which is operated by a CONTROL ON pushbutton is operated when it is desired to start the controller.

In FIG. 11B, the filter board 161 has applied to it contacts from the following selector switches:

a. MODE selector switch - This device provides for AUTOMATIC, SINGLE CYCLE, MANUAL DATA INPUT, OFFSET, MANUAL, REFERENCE and TEST modes of operation.

b. WORD selector switch - This device selects the type of word displayed on readout.

c. MANUAL AXIS SELECT switch - This selects the X or Z axis in manual operation.

d. TAPE selector switch - This device selects the type of operation for manual tape control pushbutton switches in the AUTOMATIC and SINGLE CYCLE modes of operation with the cycle start light off. The types of operation available are block position, run position, O Position and N/O In Position.

e. RS358 - This is a pushbutton which provides for the use of RS358 tape coding.

f. BLOCK DELETE - Operation of this pushbutton causes the controller to ignore all information in a tape block having a block delete character.

The filter printed circuit board 158 shown in FIG. 11C pertains to the automatic, single cycle, and test modes and the following inputs are applied to it:

a. OPTIONAL STOP - This pushbutton stops control motion at the completion of commands in a block containing the MO1 code.

b. TAPE FORWARD - This pushbutton initiates forward operation of the tape reader.

c. TAPE REWIND - This pushbutton initiates rewind operation of the tape reader.

d. TAPE STOP - This pushbutton causes the tape reader to stop at the next end of block character EOB in the forward direction or immediately in the rewind direction.

e. CYCLE START (two separate locations) - This pushbutton initiates automatic operation of the controller and is effective only in the AUTOMATIC, SINGLE CYCLE, MANUAL DATA INPUT and TEST modes of operation. Blocks of tape are processed sequentially in the tape reader until the cycle start command is terminated by any of a number of different actions.

f. FEED HOLD - This pushbutton commands the feedrate to be zero.

g. TAPE DELAY contact from machine tool - This contact prevents tape advance to provide time for hydraulic startup.

The filter circuit board 159 in FIG. 11D provides for computer entries related to the MDI, manual and offset modes. Thus, various pushbuttons provide for entry of manual jog selections in the manual mode of operation. A RETURN ZERO pushbutton switch provides for return of the selected axis to the established zero point. The CYCLE START and FEED HOLD signals are also needed for the manual data input mode of operation and they are therefore applied to the filter circuit board 159. A STORE pushbutton provides for data storage in the offset and manual data input modes of operation. An OFFSET pushbutton switch provides for storing the offset number in the control.

In FIG. 11E, inputs associated with the reference mode of operation are applied to the filter printed circuit board 160. A SET ZERO pushbutton establishes a floating zero for the selected axis. The MACHINE ZERO pushbutton switch provides for returning the selected axis to machine zero. A TRANSFER pushbutton switch causes the value on magnitude thumbwheel switches on the operator's panel to be transferred to the offset for the selected axis. Switches HORIZONTAL HOME and VERTICAL HOME are used to signal the CPU 86 when the next feedback MKR pulse should be detected for machine zero.

The filter printed circuit board 162 in FIG. 11F provides for entry of the feedrate selection from a FEEDRATE OVERRIDE selector switch and for inputs from a JOG SELECT switch. Jog movement can be made fast, medium, slow or at any of five specific increment rates. Placement of the JOG SELECT switch in the pendant position a remote JOG SELECT switch at the machine tool location to be coupled to the CPU 86 through the filter circuit board 163 shown in FIG. 11G.

D. POSITION FEEDBACK

As shown in FIGS. 4A-C, the position feedback signals for the X and Z axes are applied through encoder logic circuitry 207 and 209 and counters 211 and 213 to the input of the CPU 86 thereby closing the outer position control loop through the digital computer system as preferred. In this instance, feedback position transducers 204 and 206 (FIGS. 4A-C and 12) coupled to the X and Z axis drives are conventional photoelectric devices having a transducer resolution of 0.0001 inches, but resolvers or other suitable transducers, preferably having the same transducer resolution, may be employed along with suitable circuitry for feedback pulse development and processing if desired.

Because of common printed circuit board locations, the encoding and logic circuitry for both of the transducers 204 and 206 is shown in FIGS. 12 and 13. However, the feedback operation of only the X-axis will be described herein because of the like circuitry employed in the X and Z axes.

The X transducer 204 generates a QUAD pulse output and a REF pulse output which are of equal frequency (i.e., one pulse per 0.0001 inches slide movement in this case) but phase displaced by 90°. An MKR pulse is generated once each revolution for use in setting machine absolute zero.

The transducer feedback signals QUAD, REF and MKR are applied to encoder input logic including respective fast high noise rejection filters 1F and then each feedback signal is routed for squaring up through a pair of NAND blocks 208 and 210, 212 and 214, and 216 and 218. NAND blocks 220, 222 and 224 are operated as inverters so that the feedback pulse trains and their complements are made available for further logic processing purposes.

In FIG. 13, the X-axis feedback signals 1REF and 1REF and 1Q and 1Q are applied to a direction discriminator circuit 226 comprising clocked flip-flops 228 and 230 and NAND blocks 232, 234, 236, 238, 240 and 242. The discriminator circuit 226 determines whether the successive pulses in the pulse train output QUAD or REF are to be added or subtracted in the programmed computer calculation actual machine tool position as described more fully subsequently. A one bit from the NAND block 240 indicates an add pulse while a one bit from the NAND block 242 indicates a subtract pulse.

Add pulses are forwarded through NAND block 244 for storage in a NAND flip-flop 246 while subtract pulses are forwarded through NAND block 248 for storage in a NAND flip-flop 250. The outputs of the flip-flops 246 and 250 are routed through respective series of NANDS 252, 254, 256 and 258, 260, 262 which are used for timing purposes. The outputs from the NAND blocks 254 and 260 respectively form the add pulse train 1AD and the substract pulse train 1S. An output from either NAND block 256 or 262 resets the input direction discriminator 226. It should be noted that the circuitry at the bottom of the printed circuit board shown in FIG. 13 is a half adder which is not used in the present system but it is placed in use when the printed circuit board is included in point-to-point numerical controllers.

Since the two axis counters are alike, only the X-axis counter 211 is shown in greater detail in FIGS. 14A-B. It has a 12 bit counting capacity which provides for counting up to a total of 2047 pulses. This provides a safety margin over the approximately 250 pulse capacity needed to achieve machining speeds up to 150 inches/minute at the sampling rate of 100 Hz preferred for the present implementation of the invention. From another standpoint, it also allows the use of higher sampling rates and/or machining speeds in other applications. Although the counter circuit structure is not per se a part of the present invention, it will be described herein as an aid to an understanding of the principles involved.

In FIG. 14B, the add feedback pulses 1AD are applied to a NAND block 264 for registration in a NAND flip-flop register 266 and the subtract feedback pulses 1S are applied to a NAND block 311 for registration in a NAND flip-flop register 270. The feedback pulse register outputs are coupled by NAND blocks 271, 272, 273 and 274, 275, 276 respectively to counting circuitry in FIG. 14A which is formed by UP/DOWN counters 277, 278 and 279 such as the TI74193 type.

The respective counter output stages are coupled to NAND blocks 280 through 291 which generate bit signals IEA0-IEA11 for input to the CPU 86 through the input expander circuit 292 and for other uses. A READ signal enables the NAND blocks 281-291 for bit outputs to the computer when the accumulated feedback pulse count is to be sampled for motion control. Bit outputs IEA12-IEA15 are similarly generated by NAND blocks 293-296 which are coupled to the last output stage of the counter 279. The last two output stages of the counter 279 are coupled to a logic circuit 297 (FIG. 14B) for comparison with each other so as to apply an AXIS OVERFLOW interrupt signal to the CPU service request interrupt circuit 79 and shut the machine down if some circuit or other fault has caused the count to flow into the third stage of the counter 279. Signals UPM and DNM are applied to NAND blocks 298 and 299 from the output of the pulse registers 266 and 270 to avoid racing problems. Computer bit signal OXA6 is used to reset an overflow register 301 in the circuit 297.

The READ signal is generated by a buffer 303 in FIG. 14B in response to application of address signal C4 and R7 to NAND block 304 at the beginning of each sampling period. Simultaneously, a NAND flip-flop 305 is set to provide temporary storage of any feedback pulse in the position register flip-flop 266 or 270 through signal RM and thereby avoid loss of any feedback position pulses during the short computer READ time period. After the count accumulated over the previous sampling period is transferred to the computer, READ goes to 0 and a pair of JK flip-flops generate signal B along with signal A at the input of NAND block 306. Following the next TA pulse, RM changes state at the input of NAND blocks 307 and 268 to release the feedback pulse registers 266 and 270 from their temporary storage state and allow continued feedback pulse counting. Any temporarily stored pulse is thereby counted before the next feedback pulse can be generated.

The B signal is also coupled to a NAND block 308 so as to generate a signal CCLR after the next TB clock pulse. The counters 277, 278 and 279 are thereby reset to zero in each feedback data sampling period before any temporarily stored feedback pulse is released for counting.

A logic circuit 309 is also included in FIG. 14B to provide for ignoring feedback pulses during machine return to zero operation. The circuit 309 includes a NAND flip-flop 310 which generates a signal IGNORE for application to pulse feedback NANDS 264 and 311 and for output as XNULL.

E. CLOCK

Very accurate timing signals are needed to time the sampling period for the CPU 86 and in turn the application of segment acceleration and deceleration for improved cornering capability, to provide commutation of bit weighting signals in the digital to analog conversion of CPU output motion control words and to serve various other purposes in the system circuitry. For this reason, a special clock circuit 312 (FIGS. 4A-C) is employed instead of the standard clock normally available with the P-2000 CPU.

As shown in greater detail in FIG. 15, the clock circuit 312 includes a conventional crystal device 313 which generates a 4 MHz signal through a buffer 314 for application to a conventional BCD UP counter 315 such as the SN7490 type. Buffers 316 and 317 generate signals 4M1 and 4M2 which are not used in this implementation of the invention.

The counter output at junction 318 is a 400 KHz signal which is applied to BCD counter 319 for division to a 40 KHz signal at junction 320. Again, the 40 KHz signal is applied to a BCD counter 321 for division to a 4 KHz signal which in turn is applied to a BCD counter 322 for division to a 400 Hz signal at junction 323. The 400 Hz signal is applied to a clocked flip-flop circuit 324 which generates a 100 Hz or 100C interrupt signal for application to the service request interrupt circuit 79 thereby to control accurately the CPU sampling period.

It is desirable to develop a two phase clock output for logic circuit timing control purposes. Therefore, the 4 MHz signal is also applied to the input of a phase splitter circuit 325 which is formed by a pair of clocked flip-flops 326 and 327 and a pair of output buffers 328 and 329. Clock pulse train TA and TB at 1 MHz are applied to NAND block 301 to obtain the signal 1 MC for commutation in motor command digital to analog conversion circuitry subsequently described more fully. The two phase displaced clock pulse trains are also used in the position feedback counters 211 and 213 and the feedback encoder logic circuitry 207 and 209.

F. COMPUTER SERVICE REQUEST INTERRUPT AND ADDRESS FUNCTIONS

As already considered, the input signals which require CPU hardware interrupt priority through the service request interrupt circuit 79 are the 100 C sampling period cycling signal from the clock 312, the feedback counter AXIS OVERFLOW signal for either the X or Z axis, and the read in signal TAPE CHARACTER from the tape reader control circuitry in FIG. 10A. As shown in FIG. 16, the X and Z axis overflow signals are applied to respective NAND blocks which form an OR circuit 333 to develop the signal axis overflow signal COF. The additional leads to the detailed OR circuit 333 are not used but are included for use with machine tools having more than two motion axes. The remaining OR circuits 333 are spares.

The COF and TAPE CHARACTER and 100 C signals are respectively applied to an amplifier circuit 335 including NAND blocks 337 and 339 and a conventional transistor amplifier 341 for entry into the CPU 86. When the computer is ready for buffered entry of the tape character, the signals BCOLO and ROWO5 forward bias a transistor 357 to operate NAND gate 359 and generate SR5AD which gates the tape character NAND block 125 in FIG. 9. Two similar service request interrupt address transistor circuits are shown but not used in the present application.

General addressing for the acceptance and routing of inputs and the routing of outputs is provided by a row group and a column group of address signals RO-R7 and CO-C7 generated by an input/output address circuit 77 in FIGS. 4A-C. Different combinations of these signals define the input or output location for data transfer. As shown in FIG. 18, the R address signals R0-R7 are generated through like gate circuits 343 including a Zener diode 345 and a buffer block 347. The C address signals C0-C7 are applied to like gate circuits 349 including serially connected Zener diode, and NAND and buffer elements 351, 353 and 355. The following table identifies the various input and output addresses and the data content of the words to be transferred to or from those locations. A number of column and row combinations are not included in the table because they are not needed in this application:

COMPUTER ADDRESS SIGNAL TABLE

Code For Types of Address Signals

INPUTS OUTPUTS PI = Pseudo Interrupt RD = Relay Driver SI = Status Input BD = Light Driver Li = Logic Input LM = Logic with memory SRI = Service Request Interrupt LP = Logic Pulse

Output Signals Row 0 Column 0 - Function: Light Driver No. 1 Bit No. Signal Type ____________________________________________________________ ______________ 0 Cycle Stop Lite 1 Tape Error Lite BD 2 Position Fault Lite BD 3 Set Reference Lite BD 4 1 Axis in Position Lite BD 5 2 Axis in Position Lite BD 6 3 Axis in Position Lite BD 7 4 Axis in Position Lite BD 8 5 Axis in Position Lite BD 9 Block Delete Lite 10 Program Stop Lite BD 11 End of Program Lite BD 12 Optional Stop Lite BD 13 Control On Lite BD 14 Contouring Mode Lite BD 15 Test Lite BD ____________________________________________________________ ______________

row 1 Column 0 - Function: Light Driver No. 2

Bit No. Signal Type ____________________________________________________________ ______________ 0 Storage Permissible Lite BD 1 Cycle Start Lite BD 2 Feedhold Lite BD 3 Retract Lite BD 4 Machine Zero Lite BD 5 RS358 BD ____________________________________________________________ ______________

row 2 Column 0 - Function: M Code BCD Output (MOUT)

Bit No. Signal Type ____________________________________________________________ ______________ 0 Units M1 RD 1 Units M2 RD 2 Units M4 RD 3 Units M8 RD 4 Tens M10 RD 5 Tens M20 RD 6 Tens M40 RD 7 Tens M80 RD 8 M00 RD 9 M01 RD 10 M30 RD 11 M06 RD 12 M02 RD 13 Position Error RD 14 Start Canned Cycle Time 15 M code decoded RD ____________________________________________________________ ______________

row 3 Column 0 - Function: T&S Code BCD Output for 86" Machine Only

Bit No. Signal Type ____________________________________________________________ ______________ 0 SO1 RD 1 SO2 RD 2 SO4 RD 3 SO8 RD 4 S10 RD 5 S20 RD 6 S40 RD 7 S80 RD 8 T10 RD 9 T20 RD 10 T80 RD 11 T80 RD ____________________________________________________________ ______________

row 5 Column 0 - Function: (SELECT) tape reader control & Input Character Control

Bit No. Signal Type ____________________________________________________________ ______________ 0 LM 1 Tape reader drive forward LM 2 Tape reader drive reverse LM 3 Parity ignore LM 4 Address MDI sign thumbwheel LM 5 Address MDI units thumbwheel LM 6 Address MDI tens thumbwheel LM 7 Address MDI 100's thumbwheel LM 8 Address MDI 1000's thumbwheel LM 9 Address MDI 10 4 's thumbwheel LM 10 Address MDI 10 5 's thumbwheel LM 11 Address MDI 10 6 's thumbwheel LM 12 Address character selector switch LM 13 MDI CH8 LM ____________________________________________________________ ______________

row 6 Column 0 - Function: Counter Reset & Tape Control

Bit No. Signal Type ____________________________________________________________ ______________ 0 1 axis FDBK counter ignore position LP and null pulses command 1 2 axis FDBK counter ignore position LP and null pulses command 2 3 axis FDBK counter ignore position LP and null pulses command 3 4 axis FDBK counter ignore position LP and null pulses command 4 5 axis FDBK counter ignore position LP and null pulses command 5 Parity Error Clear LP 6 1 axis reset signal for FDBK LP counter overflow or feedback fault 7 2 axis reset signal for FDBK LP counter overflow or feedback fault 8 3 axis reset signal for FDBK LP counter overflow or feedback fault 9 4 axis reset signal for FDBK LP counter overflow or feedback fault 10 5 axis reset signal for FDBK LP counter overflow or feedback fault 11 Reader initialization LP 12 Reset ignore signals (Bits 0-5 LP for all axes above) 13 Reset tape reader EOB memory LP 14 Advance tape reader LP 15 Rewind tape reader LP ____________________________________________________________ ______________

row 7 Column 0 - Function: (DISPCH) Readout Display Control

Bit No. Signal Type ____________________________________________________________ ______________ 0 BCD digit to be displayed 1 LP 1 BCK digit to be displayed 2 LP 2 BCD digit to be displayed 4 LP 3 BCD digit to be displayed 8 LP 4 1st digit display selector LP 10 0 5 2nd digit display selector LP 10 1 6 3rd digit display selector LP 10 2 (least significant) 7 4th digit display selector LP 10 3 (least significant) 8 5th digit display selector LP 10 4 (least significant) 9 6th digit display selector LP 10 5 (least significant) 10 7th digit display selector LP 10 6 (least significant) 11 Sign digit display selector LP 12 Sign data bit (1 for +, 0 for -) LP 13 0 = no decimal Decimal between 3rd & 4th 14 Decimal 15 Decimal ____________________________________________________________ ______________

Row 0 Column 1 - Function: 1 Axis velocity reference to DAC(V1CH)

Bit No. Signal Type ____________________________________________________________ ______________ 0 Magnitude of velocity reference LM in binary LSB 1 Magnitude of velocity reference LM in binary 2 Magnitude of velocity reference LM in binary 3 Magnitude of velocity reference LM in binary 4 Magnitude of velocity reference LM in binary 5 Magnitude of velocity reference LM in binary 6 Magnitude of velocity reference LM in binary 7 Magnitude of velocity reference LM in binary 8 Magnitude of velocity reference LM in binary 9 Magnitude of velocity reference LM in binary 10 Magnitude of velocity reference LM in binary 11 Magnitude of velocity reference LM in binary 12 Magnitude of velocity reference LM in binary 13 Magnitude of velocity reference LM in binary MSB 14 Sign bit (0 for +, 1 for -) LM ____________________________________________________________ ______________

row 1 Column 1 - Function: 1 Axis velocity reference to DAC(V2CH)

Bit No. Signal Type ____________________________________________________________ ______________ 0 Magnitude of velocity reference LM in binary LSB 1 Magnitude of velocity reference LM in binary 2 Magnitude of velocity reference LM in binary 3 Magnitude of velocity reference LM in binary 4 Magnitude of velocity reference LM in binary 5 Magnitude of velocity reference LM in binary 6 Magnitude of velocity reference LM in binary 7 Magnitude of velocity reference LM in binary 8 Magnitude of velocity reference LM in binary 9 Magnitude of velocity reference LM in binary 10 Magnitude of velocity reference LM in binary 11 Magnitude of velocity reference LM in binary 12 Magnitude of velocity reference LM in binary 13 Magnitude of velocity reference LM in binary MSB 14 Sign bit (0 for +, 1 for -) LM ____________________________________________________________ ______________

row 2 Column 1 - Function: 3 Axis velocity reference to DAC (V3CH)

Bit No. Signal Type ____________________________________________________________ ______________ 0 Magnitude of velocity reference LM in binary LSB 1 Magnitude of velocity reference LM in binary 2 Magnitude of velocity reference LM in binary 3 Magnitude of velocity reference LM in binary 4 Magnitude of velocity reference LM in binary 5 Magnitude of velocity reference LM in binary 6 Magnitude of velocity reference LM in binary 7 Magnitude of velocity reference LM in binary 8 Magnitude of velocity reference LM in binary 9 Magnitude of velocity reference LM in binary 10 Magnitude of velocity reference LM in binary 11 Magnitude of velocity reference LM in binary 12 Magnitude of velocity reference LM in binary 13 Magnitude of velocity reference LM in binary MSB 14 Sign bit (0 for +, 1 for -) LM ____________________________________________________________ ______________

row 3 Column 1 - Function: 4 Axis velocity reference to DAC (V4CH)

Bit No. Signal Type ____________________________________________________________ ______________ 0 Magnitude of velocity reference LM in binary LSB 1 Magnitude of velocity reference LM in binary 2 Magnitude of velocity reference LM m in binary 3 Magnitude of velocity reference LM in binary 4 Magnitude of velocity reference LM in binary 5 Magnitude of velocity reference LM n in binary 6 Magnitude of velocity reference LM in binary 7 Magnitude of velocity reference LM f in binary 8 Magnitude of velocity reference LM in binary 9 Magnitude of velocity reference LM in binary 10 Magnitude of velocity reference LM in binary 11 Magnitude of velocity reference LM in binary 12 Magnitude of velocity reference LM in binary 13 Magnitude of velocity reference LM in binary 14 Sign bit (0 for +, 1 for -) LM ____________________________________________________________ ______________

row 4 Column 1 - Function: 5 Axis velocity reference to to DAC (V5CH)

Bit No. Signal Type ____________________________________________________________ ______________ 0 Magnitude of velocity reference LM in binary LSB 1 Magnitude of velocity reference LM in binary 2 Magnitude of velocity reference LM in binary 3 Magnitude of velocity reference LM in binary 4 Magnitude of velocity reference LM in binary 5 Magnitude of velocity reference LM in binary 6 Magnitude of velocity reference LM in binary 7 Magnitude of velocity reference LM in binary 8 Magnitude of velocity reference LM in binary 9 Magnitude of velocity reference LM in binary 10 Magnitude of velocity reference LM in binary 11 Magnitude of velocity reference LM in binary 12 Magnitude of velocity reference LM in binary 13 Magnitude of velocity reference LM in binary MSB 14 Sign bit (0 for +, 1 for -) LM ____________________________________________________________ ______________

row 5 Column 1 - Function: (SEQOSD) Seq. No. & OS NO. Display Control

Bit No. Signal Type ____________________________________________________________ ______________ 0 BCD digit to be displayed 1 LP 1 BCD digit to be displayed 2 LP 2 BCD digit to be displayed 4 LP 3 BCD digit to be displayed 8 LP 4 1st digit of OS No. display sel. LP (least significant) 5 2nd digit of OS No. display sel. LP (most significant) 6 1st digit of Seq. No. display sel. LP (least significant) 7 2nd digit of Seq. No. display sel. LP 8 3rd digit of Seq. No. display sel. LP 9 4th digit of Seq. No. display sel. (most significant) ____________________________________________________________ ______________

SR5AD - Function: Data From Tape Reader

Bit No. Signal Type ____________________________________________________________ ______________ 0 Raw data from tape - Track 1 LI 1 Raw data from tape - Track 2 LI 2 Raw data from tape - Track 3 LI 3 Raw data from tape - Track 4 LI 4 Raw data from tape - Track 5 LI 5 Raw data from tape - Track 6 LI 6 Raw data from tape - Track 7 LI 7 Raw data from tape - Track 8 LI ____________________________________________________________ ______________

row 0 Column 4 - Function: All Modes

Bit No. Signal Type ____________________________________________________________ ______________ 0 Emergency Stop PI 1 Cycle Stop PI 2 Overtravel Limit Switch PI 3 Head Up Limit Switch PI 4 Motion Inhibit Interlock PI 5 Control On Pushbutton PI ____________________________________________________________ ______________

row 1 Column 4 - Function: Auto & Single Cycle & Test Modes

Bit No. Signal Type ____________________________________________________________ ______________ 0 Optional Stop Pushbutton PI 1 Tape Run Forward PB PI 2 Tape Rewind PB PI 3 Tape Stop PB PI 4 Cycle Start PB PI 5 Feed Hold Pushbutton PI 6 Spindle Retract PB PI 7 Tool Changer Cycle Complete PI 8 Tape Reader Delay Automatic Cycle PI ta Spindle Stop Interlock ock ta 9 13 Not Rewind PILI 14 Not Advance PI/LI End of Block Tape Reader 15 Parity Error - Tape Reader PI/LI ____________________________________________________________ ______________

row 2 Column 4 - Function: Manual & MDI & Offset Modes

Bit No. Signal Type ____________________________________________________________ ______________ 0 Jog Forward (+) PB PI P 1 Jog Reverse (-) PB PI 2 Return to Zero PB PI 3 Jog Right PI 4 Jog Left PI 5 Jog Up PI 6 Jog Down PI 7 Cycle Start PB PI 8 Feed Hold PB PI 9 Store MDI Magnitude PB PI 10 Store Offset Number PB PI 11 Calibrate Offset PB PI 12 Increment Offset PB PI ____________________________________________________________ ______________

row 3 Column 4 - Function: Reference Mode

Bit No. Signal Type ____________________________________________________________ ______________ 0 Transfer MDI Magnitude to PI Position Offset 1 Set Present Position to Zero PB PI 2 Seek Machine Zero & Recalibrate PB PI 3 Determine Absolute Position PB PI t 4 1 Axis Slowdown (Range) L.S. Closed PI 5 2 Axis Slowdown (Range) L.S. Closed PI 6 3 Axis Slowdown (Range) L.S. Closed PI 7 4 Axis Slowdown (Range) L.S. Closed PI 8 5 Axis Slowdown (Range) L.S. Closed PI 11 5 Axis Null Pulse LI 12 4 Axis Null Pulse LI 13 3 Axis Null Pulse LI 14 2 Axis Null Pulse LI 15 1 Axis Null Pulse LI ____________________________________________________________ ______________

row 4 column 4

Bit No. Signal Type ____________________________________________________________ ______________ 0 Mode Selector Switch 1 (LSB) SI 1 Mode Selector Switch 2 (LSB SI 2 Mode Selector Switch 4 (MSB) SI 3 Display Word Selector witch 1 SI (LSB) 4 Display Word Selector Switch 2 SI (MSB) 5 Jog Axis Control 1 Selector Switch SI (WB) 6 Jog Axis Control 2 Selector Switch SI (WB) 7 Jog Axis Control 4 Selector Switch SI (MSB) 8 Tape Control Selector Switch 1 SI (LSB) 9 Tape Control Selector Switch 2 SI (MSB) 10 Decode RS358 (0 ➝ EIEIA) SI (1 = RS358) 11 Block Delete On/Off Selector Switch SI 12 Tool Changer/Turrent In Position SI 13 X axis Symmetry SI 14 Y Axis Work/Inv. Symmetry Selector SI Switch 15 Z Axis Work/Inv. Symmetry Selector SI ____________________________________________________________ ______________

switch Row 5 Column 4 Bit No. Signal Type ____________________________________________________________ ______________ 0 Feedrate Override Selector Switch 1 SI (LSB) 1 Feedrate Override Selector Switch 2 SI 2 Feedrate Override Selector Switch 4 SI 3 Feedrate Override Selector Switch 8 SI (MSB) 4 Jog Speed/Distance 1 Selector Switch SI (LSB) 5 Jog Speed/Distance 2 Selector Switch SI 6 Jog Speed/Distance 4 Selector Switch SI (MSB) 7 Jog Speed Remote 4 SI 8 Tape Test SI 9 Accel. Speed Test SI 10 Spindle Reverse SI ____________________________________________________________ ______________

row 6 Column 4 - Function: Data Input From MDI Thumbwheels & Character Selector Switch

Bit No. Signal Type ____________________________________________________________ ______________ 0 MDI Digit in BCD (1); Character LI Selector Switch & MDI & Thumbwheel in EIA; Track 1 1 MDI Digit in BCD (2); Character LI Selector Switch in MDI & Thumbwheel in EIA; Track 2 2 MDI Digit in BCD (4); Character LI Selector Switch in MDI & Thumbwheel in EIA; Track 3 3 MDI Digit in BCD (8); Character LI Selector Switch in MDI & Thumbwheel in EIA; Track 4 4 Character Selector Switch in MDI LI & Thumbwheel in EIA; Track 5 5 Character Selector Switch in MDI LI & Thumbwheel in EIA; Track 6 6 Character Selector Switch in MDI LI & Thumbwheel in EIA; Track 7 7 Character Selector Switch in MDI LI & Thumbwheel in EIA; Track 8 8 1 Feedback System Fault LI 9 2 Feedback System Fault LI 10 3 Feedback System Fault LI 11 4 Feedback System Fault LI 12 1 Axis Counter Overflow LI 13 2 Axis Counter Overflow LI 14 3 Axis Counter Overflow LI 15 4 Axis Counter Overflow LI ____________________________________________________________ ______________

row 7 Column 4 - Function: 1 Axis Change in Position (DEL1FB)

Bit No. Signal Type ____________________________________________________________ ______________ 0 Range Normally Used (Binary Code) LI (LSB) 1 Range Normally Used (Binary Code) LI 2 Range Normally Used (Binary Code) LI 3 Range Normally Used (Binary Code) LI 4 Range Normally Used (Binary Code) LI 5 Range Normally Used (Binary Code) LI 6 Range Normally Used (Binary Code) LI 7 Range Normally Used (Binary Code) LI 8 RAnge Normally Used (Binary Code) LI 9 Range Normally Used (Binary Code) LI (MSB) 10 Sign Bit (2's Complement) LI 11 Overflow bit (If 10 ≠ 11, overflow) LI 12 Hardwired to be same as Bit 11 LI 13 Hardwired to be same as Bit 11 LI 14 Hardwired to be same as Bit 11 LI 15 Hardwired to be same as Bit 11 LI ____________________________________________________________ ______________

row 0 Column 5 - Function: 2 Axis Change in Position (DEL2FB)

Bit No. Signal Type ____________________________________________________________ ______________ 0 Range Normally Used (Binary Code) LI (LSB) 1 Range Normally Used (Binary Code) LI 2 Range Normally Used (Binary Code) LI 3 Range Normally Used (Binary Code) LI 4 Range Normally Used (Binary Code) LI 5 Range Normally Used (Binary Code) LI 6 Range Normally Used (Binary Code) LI 7 Range Normally Used (Binary Code) LI 8 Range Normally Used (Binary Code) LI 9 Range Normally Used (Binary Code) LI (MSB) 10 Sign Bit (2's Complement) LI 11 Overflow bit (If 10 ≠ 11, overflow) LI 12 Hardwired to be same as Bit 11 LI 13 Hardwired to be same as Bit 11 LI 14 Hardwired to be same as Bit 11 LI 15 Hardwired to be same as Bit 11 LI ____________________________________________________________ ______________

row 1 Column 5 - Function: 3 Axis Change in Position (DEL3FB)

Bit No. Signal Type ____________________________________________________________ ______________ 0 Range Normally Used (Binary Code) LI (LSB) 1 Range Normally Used (Binary Code) LI 2 Range Normally used (Binary Code) LI 3 RAnge Normally Used (Binary Code) LI 4 Range Normally Used (Binary Code) LI 5 Range Normally Used (Binary Code) LI 6 Range Normally Used (Binary Code) LI 7 Range Normally Used (Binary Code) LI 8 Range Normally Used (Binary Code) LI 9 Range Normally Used (Binary Code) LI (MSB) 10 Sign Bit (2's Complement) LI 11 Overflow bit (If 10≠ 11, overflow) LI 12 Hardwired to be same as Bit 11 LI 13 Hardwired to be same as Bit 11 LI 14 Hardwired to be same as Bit 11 LI 15 Hardwired to be same as Bit 11 LI ____________________________________________________________ ______________

row 2 Column 5 - Function: 4 Axis Change in Position (DEL4FB)

Bit No. Signal Type ____________________________________________________________ ______________ 0 Range Normally Used (Binary Code) LI (LSB) 1 Range Normally Used (Binary Code) LI 2 Range Normally Used (Binary Code) LI 3 Range Normally Used (Binary Code) LI 4 Range Normally Used (Binary Code) LI 5 Range Normally Used (Binary Code) LI 6 Range Normally Used (Binary Code) LI 7 Range Normally Used (Binary Code) LI 8 Range Normally Used (Binary Code) LI 9 Range Normally Used (Binary Code) LI (MSB) 10 Sign Bit 2's Complement) LI 11 Overflow bit (If 10≠ 11, overflow) LI 12 Hardwired to be same as Bit 11 LI 13 Hardwired to be same as Bit 11 LI 14 Hardwired to be same as Bit 11 LI 15 Hardwired to be same as Bit 11 LI ____________________________________________________________ ______________

Row 3 Column 5 - Function: 5 Axis Change in Position

(DEL5FB) Bit No. Signal Type ____________________________________________________________ ______________ 0 Range Normally Used (Binary Code) LI (LSB) 1 Range Normally Used (Binary Code) LI 2 Range Normally Used (Binary Code) LI 3 Range Normally Used (Binary Code) LI 4 Range Normally Used (Binary Code) LI 5 Range Normally Used (Binary Code) LI 6 Range Normally Used (Binary Code) LI 7 Range Normally Used (Binary Code) LI 8 Range Normally Used (Binary Code) LI 9 Range Normally Used (Binary Code) LI (MSB) 10 Sign Bit (2's Complement) LI 11 Overflow bit (If 10≠11, overflow) LI 12 Hardwired to be same as Bit 11 LI 13 Hardwired to be same as Bit 11 LI 14 Hardwired to be same as Bit 11 LI 15 Hardwired to be same as Bit 11 LI ____________________________________________________________ ______________

row 4 Column 5 - Function: Pendant

Pushbuttons Bit No. Signal Type ____________________________________________________________ ______________ 0 Bullard jog fast SI 1 Bullard jog medium SI 2 Bullard jog slow SI 3 Bullard jog 1 SI 4 Bullard jog .1 SI 5 Bullard jog .01 SI 6 Bullard jog .001 SI 7 Bullard jog .0001 SI ____________________________________________________________ ______________

row 0 Column 6 - Function: 1 Axis Feedback Counter for Absolute Positioning (ABS1FB)

Bit No. Signal Type ____________________________________________________________ ______________ 0 Binary (LSB) LI 1 Binary LI 2 Binary LI 3 Binary LI 4 Binary LI 5 Binary LI 6 Binary LI 7 Binary LI 8 Binary LI 9 Binary LI 10 Binary LI 11 Binary LI 12 Binary LI 13 Binary LI 14 Binary (MSB) LI 15 Sign Bits (2's Complement) LI ____________________________________________________________ ______________

row 1 Column 6 - Function: 2 Axis Feedback Counter for Absolute Positioning (ABS2FB)

Bit No. Signal Type ____________________________________________________________ ______________ 0 Binary (LSB) LI 1 Binary LI 2 Binary LI 3 Binary LI 4 Binary LI 5 Binary LI 6 Binary LI 7 Binary LI 8 Binary LI 9 Binary LI 10 Binary LI 11 Binary LI 12 Binary LI 13 Binary LI 14 Binary (MSB) LI 15 Sign Bit (2's Complement) LI ____________________________________________________________ ______________

row 2 Column 6 - Function: 3 Axis Feedback Counter for Absolute Positioning (ABS3FB)

Bit No. Signal Type ____________________________________________________________ ______________ 0 Binary (LSB) LI 1 Binary LI 2 Binary LI 3 Binary LI 4 Binary LI 5 Binary LI 6 Binary LI 7 Binary LI 8 Binary LI 9 Binary LI 10 Binary LI 11 Binary LI ) 12 Binary LI 13 Binary LI 14 Binary (MSB) LI 15 Sign Bit (2's Complement) LI ____________________________________________________________ ______________

row 3 Column 6 - Function: 4 Axis Feedback Counter for Absolute Positioning (ABS4FB)

Bit No. Signal Type ____________________________________________________________ ______________ 0 Binary (LSB) LI 1 Binary LI 2 Binary LI 3 Binary LI 4 Binary LI 5 Binary LI 6 Binary LI 7 Binary LI 8 Binary LI 9 Binary LI 10 Binary LI 11 Binary LI 12 Binary LI 13 Binary LI 14 Binary (MSB) LI 15 Sign Bit (2's Complement) LI ____________________________________________________________ ______________

row 4 Column 6 - Function: 5 Axis Feedback Counter for Absolute Positioning (ABS5FB)

Bit No. Signal Type ____________________________________________________________ ______________ 0 Binary (LSB) LI 1 Binary LI 2 Binary LI 3 Binary LI 4 Binary LI 5 Binary LI 6 Binary LI 7 Binary LI 8 Binary LI 9 Binary LI 10 Binary LI 11 Binary LI 12 Binary LI 13 Binary LI Binary (MSB) 14 LI 15 Sign Bit (2's Complement) LI ____________________________________________________________ ______________

sri's - Function: Service Request Interrupt

Bit No. Signal Type ____________________________________________________________ ______________ 1 Power fail from power supply SRI 3 Feedback system fault SRI 5 Tape reader character SRI 6 Sync pulse SRI ____________________________________________________________ ______________

g. expander and interfacing circuitry for computer input bits

in place of the standard P-2000 contact closure input system, solid state logic circuitry is preferably used to interface the CPU 86 with the circuitry from which data word inputs are to be accepted. As shown generally in FIGS. 4A-C and in greater detail in FIG. 17, an input bit interfacing circuit board 361 has circuitry coupled to the appropriate computer input/output connector to enter 16 bit input words which are developed in the external input circuitry as the CPU 86 undergoes programmed operation. Each input bit path includes an interfacing circuit 363 having a power gate 363 which generates a bit signal in the word group of bit signals IDO-ID15. The IDRO designations represent bit signal ground return paths.

The input bit expander circuit 292 has its outputs connected to the inputs of the respective power gate bit paths in the input bit interface circuits 363. Each bit path to the associated input interfacing circuit 363 is coupled with a pair of input bit paths through a pair of NAND blocks 369 and 371. The input word channel through the interface circuitry 361 accordingly is merged from two word channels at the input of the input expander circuit 292 comprising respectively bit signals IEAO-IEA15 and IEBO-IEB15. Each of the bit locations in the respective words IEA and IEB forms an OR bust to which the associated inputs are coupled.

H. EXPANDER AND INTERFACING CIRCUITRY FOR COMPUTER OUTPUT BITS

As in the case of the input interfacing circuitry, solid state logic circuitry is preferably used to interface the CPU 86 with the various circuits placed under computer control. Thus, as shown generally in FIGS. 4A-C and in greater detail in FIGS. 19A-B, an output bit interfacing circuit board 330 is coupled to the appropriate computer input/output connector to accept 16 bit output words which are generated during the programmed operation of the CPU 86 to provide motion and nonmotion commands. Each bit path in the interfacing circuitry 330 includes a buffer element 332 to which there is applied through a Zener diode 334 the associated bit signal from the word group of bit signals OD0-OD15. The buffers 332 in turn generate a word output formed by bit signals OI0-OI15. Computer output paths ODR0 ODR15 are ground return paths for the bit signals.

The computer output interfacing circuitry 330 is coupled to an output bit expander circuit board 340 which is generally shown in FIGS. 4A-C and in greater detail in FIGS. 19A-B. Each of the interface circuit output signals OI0 OI15 is applied to a pair of buffers 342 and 344 thereby branding each bit path into two parallel bit paths to provide for logic circuit expansion into two word channels. The resultant output bit signals for the respective output word channels from the output expander 340 are designated OXA0 OXA15 and OXB0-OXB15. In general, the bit signals in the OXB word are channeled through downstream circuitry for motion control use and the bit signals in the OXA word are channeled through downstream circuitry for nonmotion control use.

I. TRANSFER BUFFER AND ISOLATING NAND CIRCUITRY

As shown in FIGS. 4A-C, nonmotion commands are routed from the output expander circuitry 340 to a plurality of like transfer buffer circuit boards 346, in this case a total of four transfer buffer circuits 348, 350, 352 and 354 which route, accept and hold the current nonmotion command output word so that the much faster CPU 86 can move on to generating the next nonmotion or motion command output word. The transfer buffer circuitry 346 is shown in greater detail in FIGS. 20A-B where the buffer circuit board 348 is shown to include eight bit latch elements 356 in each of two bit latch word groups 358 and 360 which provide further branching of each associated output expander word path into two transfer buffer output word channels. The four transfer buffers accordingly provide a total of 16 word channels.

Each bit latch 356 in each bit latch group 358 or 360 is associated with a pair of adjacent bit paths in the word channel formed by that group 358 or 360. Thus, the bit latches 356 in each of the two bit latch groups 358 and 360 in each buffer transfer circuit board 348, 350, 352 or 354 have applied as inputs thereto the signal sets OXAO and OXA1, OXA2 and OXA3, etc. The bit latches 356 process the bit inputs independently, and in the respective word paths generate respective bit signals OTA0 and OTA1, OTA2 and OTA3, etc. in the transfer buffer circuit 348, OTB0 and OTB1, OTB2 and OTB3, etc. in the transfer buffer circuit 350, OTC0 and OTC1, and OTC2 and OTC3, etc. in the transfer buffer circuit 352, and OTD0 and OTD1, OTD2 and OTD3 etc. in the transfer buffer circuit 345, etc. as generally indicated in FIGS. 4A-C. Some of the available bit paths and/or word channels are not needed for the present lathe control application and they are simply left inactive, but the circuitry associated therewith is inexpensively included in the printed circuit board designs to provide for expanded functioning as required from job order to job order. In FIGS. 20A-B, the A and AZ signals correspond respectively to the OX and OT signals to and from the buffer boards of FIGS. 4A-C. The AG and BG signals are R, C address signals.

In order to apply the nonmotion output instructions to the controlled devices such as lamps and magnetic relays, it is necessary to isolate the transfer buffers 348, 350, 352 and 354 from the voltage levels used for operating the controlled devices. Thus, noninverting isolating NAND circuit boards 362, 364, 366, 368, 370 and 372 are employed as shown in FIGS. 4A-C for this purpose in the word paths indicated respectively by the OTA, OTB, OTC, OTD, OTE and OTJ signal sets from the buffer circuitry. The OTF bit signals from the buffer circuitry are routed over a direct word channel to the data input circuitry for addressing manual data input as indicated by the reference character 361. As shown in FIGS. 20A-B, the non-inverting isolating NAND circuitry provides a pair of series connected NAND elements 374 and 376 in each bit path. The isolated input signals in the respective word channels which are used in the present application are respectively designated ONA0-ONA15, ONB0-ONB15, ONC0-ONC15 and OND0-OND15. The remaining isolating NAND circuits are included to provide circuit capacity for other machine tool applications of the controller 80.

Nonmotion commands OXA0-OXA15 are also routed in an additional direct word channel from the expander circuitry 340 to a readout driver circuit 380 shown generally in FIGS. 4A-C and in greater detail in FIG. 26. Bit signals OXA0, OXA2, OXA6 and OXA7 are also transferred by direct bit paths from the expander circuitry 340 to the feedback pulse counters 211 and 213 in FIGS. 14A-B as indicated by reference character 384 in FIGS. 4A-C, the tape reader input system also directly receives bit signals OXA11 through OXA15 over respective direct bit paths for tape reader control purposes.

With the implementation of nonmotion machine tool functions by the CPU 86, substantially economy is realized because of the flexibility in programming the CPU 86 to meet functional requirements and because of the ease with which computer input and output word channels are included or deleted to interface the CPU 86 with the machine tool and the tool operator. Thus, a single hardware design of printed circuit boards and printed circuit board rack interconnections can be used to provide a wide latitude of differing machine tool interface requirements in a variety of applications. As a result, original equipment manufacturers may realize reduced inventory costs for the stocking of numerical controllers. Further, the wiring between the entire numerical control contouring controller and the machine tool is shortened and simplified so that a single lower cost cable link may be used by the original equipment manufacturer to assemble the controller and the machine tool and so that better reliability, simpler maintenance and less machine downtime are made possible for the user.

J. READOUT DRIVER, DISPLAYS AND RELAYS

1. LAMPS

As shown in FIGS. 4A-C, the various display lamps shown on the panel in FIG. 7 are operated by lamp driver circuit boards 385 and 387 which are coupled to the isolating NAND circuitry for computer instructions. Each lamp driver circuit board 385 or 387 includes respective solid state switch circuits 386 for the lamps as shown in FIGS. 21 and 22. Each switch circuit 386 is conventionally arranged to include a transistor 388 which becomes forward biased when a computer designated one bit appears at its base input. When the transistor 388 becomes conductive, another transistor 390 becomes forward biased to allow current to flow in the associated lamp energization circuit 392. The following is a list of each lamp shown and its function:

CONTROL ON The panel switch associated with this lamp applies power to the controller and removes the reset on all logic functions. The lamp remains on until reset by control overt temperature thermostat trip, emergency stop, machine overload, power loss to the controller, power failure or low voltage. PARITY ERROR This indicates a parity error has been detected on the tape. Operation of the cycle stop pushbutton on the panel of FIG. 7 clears parity error. COMMAND ERROR This lamp indicates that an unallowed command has been read by the tape reader. Such a command could be an undefined speed or feedrate or an incorrect manual data input entry or the like. The automatic cycle will stop when the CPU buffered command data is used. Clearance is produced by pressing the CYCLE STOP pushbutton. OVERTEMPERATURE This indicates that the controller is operating at a high temperature and should be stopped as soon as possible. POSITION ERROR Operation of this lamp indicates the position feedback counters have overflowed. The CYCLE START lamp is turned off and the SET REFERENCE lamp is turned on. The POSITION ERROR lamp is reset by setting reference on the axis that had the fault. SET REFERENCE In the REFERENCE MODE, this lamp is off if reference has been set on the axes indicated by the address selector switch on the panel in FIG. 7. In any mode other than REFERENCE, the light is off if reference has been set on all axes. Automatic operation cannot begin until REFERENCE has been set on all axes. PROGRAM END This lamp indicates that an MO2 or M30 has been read from the tape and all commands in the last block of data have been completed. All buffers and active storage registers except sequence number, present axis position, and tool offset are cleared when this lamp is energized. PROGRAM STOP This lamp indicates that an M00 OR M01 has been read from the tape and that all commands in the last block of data have been completed. PROGRAM STOP is reset by pressing the CYCLE STOP pushbutton. OPTIONAL STOP This light is energized when the corresponding pushbutton is depressed on the panel of FIG. 7. The control motion will stop at completion of the commands in a block containing M01. If the lamp is not energized, the control ignores M01 commands. The OPTIONAL STOP lamp is deenergized by pressing the CYCLE STOP pushbutton. CONTOURING This lamp indicates that the control is in the contouring mode of automatic control. TEST This lamp indicates that the control is in the TEST MODE and is executing tape commands at a feedrate much higher than the normal feedrate. This lamp is also energized when the TEST pushbutton is operated to cause all of the panel lights to be energized. IN POSITION These lamps indicate that the axes are at commanded positions in the automatic mode. In the MANUAL MODE, these lamps are on unless the RETURN TO ZERO pushbutton is pressed for one of the axes or unless an incremental move is being made in which case the IN POSITION lamps are deenergized until the axis is in position. CYCLE START This lamp is operated when the CYCLE START pushbutton is depressed in the AUTOMATIC, SINGLE CYCLE MDI or TEST MODES. When the lamp is on, the control is performing an automatic cycle. CYCLE STOP This lamp is also energized by the corresponding pushbutton. BLOCK DELETE This lamp is operated by the associated panel pushbutton and it indicates that the control will ignore all information in a block having a block delete character. RS 358 This lamp is operated by the associated panel pushbutton and it indicates that the RS 358 coding is being used. When this lamp is off, the RS 244A coding is being used. MACHINE ZERO This lamp is operated by the associated panel pushbutton when the selected axis is being returned to machine zero. STORE This lamp is operated by the associated panel pushbutton which provides for data storage as determined by the settings of the ADDRESS and MAGNITUDE switches in the offset and MDI MODES. Energization of the lamp indicates that it is permissible to store information in the control. FEED HOLD This lamp is operated by the FEED HOLD pushbutton when a holding action is applied by the operator to the machine tool.

2. RELAYS

In this application, magnetic relays in the machine tool interface include as shown in FIGS. 23 and 24 S-relays for spindle speed control, M-relays for miscellaneous functions required for the customer application, T-relays for tool selection and an ER-relay which is operated when the POSITION ERROR lamp is energized indicating the velocity references are set at zero value. Some of the M-relays in this application are also used for tool selection. Typically, the input tape specifies spindle speeds, tool selections and miscellaneous functions such as coolant flow. Once a spindle speed instruction is executed by program control of one or more S-relays, that command spindle speed is held by local control until a new spindle speed command is established.

Relay driver boards 394 and 396 are operated by the isolating NAND circuitry in response to computer commands as shown in FIGS. 4A-C and as shown in greater detail in FIGS. 23 and 24. A switch circuit 398 is provided for each relay driver bit path, and only one of the switch circuits 398 is detailed in each of the FIGS. 23 and 24. An output transistor switch 400 becomes conductive to energize the associated relay coil when a forward bias is applied to transistor 402, i.e., when a one bit is applied at input 404 to cause current cutoff in diode 406 and current flow through series diodes 408 and 410.

3. READOUT DRIVER, READOUT DISPLAY AND OFFSET DISPLAY

As shown in greater detail in FIG. 25, the input word for the readout driver board 384 comprises BCD bit signals OXA0-OXA15 from the output expander circuitry 340. The first two bits OXA0-OXA2 are stored in a bit latch 420 and the second two bits are applied to another bit latch 422. The bit latch outputs are applied to buffers 424, 426, 428 and 430 for application to conventional cathode filament numeral display units in FIG. 26 (and FIG. 7) for readout display of numeric values and to buffers 425, 427, 429 and 431 for application to numeral display units 433 and 435 for offset number display.

When a readout display address CO and R7 exists, buffers 444 through 458 and bit latches 460 and 462 are enabled. The buffer elements 444-456 then generate a corresponding unit selection word signal 10 0 R, 10 1 R, 10 2 R, 10 3 R, 10 4 R, 10 5 R and SR in response to the bit signals OXA4-OXA11. When offset address C1 and R5 exists, buffers 464 and 466 are enabled to respond to the bit signals OXA4 and OXA5 and generate the display unit selection word signal 10 0 S and 10 1 S.

The BCD designation in the signals CH1-CH4 or CH1-1- CH4-1 determines the value of the number shown in selected display units. Bit latch and decode circuitry internal to the display units makes this possible. A sign display unit 468 in the readout display is plus or minus according to the state of the buffer 458 when a one bit select signal S is generated by buffer 461 in response to application of a one bit signal OXA12 to the bit latch 460. Line 470 provides filament power for the display units and line 472 supplies logic level power for the display units.

Decimal point selection is provided by bit signals OXA13-OXA15 through the bit latches 460 and 462 and conventional transistor amplifier circuits 474, 476 and 478. In this instance, only the circuit 474 with its signal DP1 is used and it is applied to the display unit 426 in order to locate the decimal point between the fourth and fifth numeric positions on axis command and arc offset readouts.

The display arrangement permits display of any one of the following types of information: axis information by means of the word selector switch; sequence number by means of the N/O position of the address selector switch; preparatory codes and auxiliary function by means of the G, M, S, T or F address selector switch positions; arc offsets; and tool offsets and cutter compensation. When the address selector switch is at an offset character, the offset number is displayed in the units 433 and 435 and the value of the offset is shown in the readout display units.

K. MOTION CONTROL CIRCUITRY

The circuitry used to implement motion commands along the X-axis and Z-axis is shown generally in FIGS. 4A-C and in greater detail in FIGS. 27, 28 and 29A-B. A commutator and reference circuit board 500 is provided to FIG. 27 to generate bit weighting signals and an accurate temperature stabilized reference voltage which are used in the X-axis and the Z-axis motion controls.

Each axis control includes a buffer and decoder circuit board 502 which generates a train of pulses at a frequency proportional to the position error defined by the computer output word formed by bits OXB0--OXB11 and a sign bit OXB14. An amplifier 504 includes circuitry needed for driving switching inputs to an amplifier stage from which there is obtained an analog output voltage proportional to the digital position error command. The analog output voltage is used as a velocity command signal which is summed with a feedback velocity signal to produce a velocity error signal.

Compensated power amplifier circuitry 506 responds to the velocity error signal and generates a current signal at the level necessary to drive an electric torque motor 508 which in turn operates a hydraulic valve (not shown), in this case a Pegasus 22 ohm, 200 ma valve. The fluid flow and the speed of drive hydraulic motor (not shown) are thereby made proportional to velocity error so that the commanded motion between the tool and workpiece may be implemented through the associated machine slide. Since the X and Z axis controls are substantially alike, only the X-axis control will be described in greater detail.

1. COMMUTATOR AND REFERENCE CIRCUITRY

As shown in FIG. 27, the commutator and reference block 500 includes a temperature stabilized voltage regulating circuit 510 which generates a +5V reference and a -5V reference for use in driving the analog output amplifier in block 504. The reference voltage is obtained from a circuit including an integrated circuit block 512 such as a Fairchild μ A723 which is preferably housed in a temperature controlled over as indicated by the dotted box enclosing the block 512. The reference voltage is applied to the input of an amplifier 514 which preferably includes an integrated circuit stage such as a Fairchild μ A709. The DC output voltage signals are held very stable against temperature drift by the circuit 510.

In addition, the commutator and reference block 500 includes circuitry 516 for weighting the computer motion control output bits to enable the generation of a train of position error pulses at a frequency proportional to the position error signified by the computer output command word. The weighting signals are pulse train signals B1C1-- B6C1 which are derived from the clock signal 1MC and generated with differing pulse frequencies.

The clock signal 1MC is applied to a NAND block 518 which in turn is coupled to interconnected flip-flops 520, 522 and 524 and with a pair of AND blocks 526 and 528. The flip-flops 518, 520 and 522 respectively generate 500 KC, 250 KC, and 125 KC outputs. A pair of integrated circuit binary counters 530 and 532 form a six bit counter coupled to the output of the flip-flop 522. Only the binary counter bit terminals A--F are accordingly used, and the pulse trains at these terminals have differing frequencies (i.e., in the ratio of 32/16/8/4/2/1) but the pulse generating time intervals are the same from pulse train to pulse train.

To commutate the pulses in the pulse trains while retaining the same frequencies, the signals A, B, C, D, E and F are applied respectively to NAND blocks 536, 538, 540, 542 and 544 to obtain increased drive capability. In the respective B through F pulse train circuit paths, pairs of NAND blocks 546 and 548, 550 and 552, 554 and 556, 558 and 560, and 562 and 564 perform an AND function on differing combinations of the input pulse trains to generate the output trains B5C1-B1C1. The pulse train A is simply passed through NAND blocks 534 and 535. The logic equations which apply are:

B6C1 = A

B5C1 = B . A

B4C1 = C . B . A

B3C1 = D . C . B . A

B2C1 = E . D . C . B . A

B1C1 = F . E . D . C . B . A

NAND blocks 566 and 568 are provided to generate an X-axis pulse signal PM1 which is used to square up the weighted pulses generated in the X-axis buffer and decoder 502. Similar signals are generated for each of the other motion axes placed under control.

2. BUFFER AND DECODER CIRCUITRY

The circuit 502 includes a sine flip-flop register 570, an upper tier position error register formed by flip-flops 572-582 for most significant digits represented by bit signals OXB6--OXB11, and a lower tier position error register formed by flip-flops 584-594 for lower significant digits represented by bit signals OXB0-OXB5. Weighting NAND blocks 598--608 and 610--620 generate respective weighted pulse trains for bit paths which have a one bit input. The upper tier weighted pulse trains are added by NAND block 622 and the lower tier weighted pulse trains are added by NAND block 624. NAND blocks 626 and 628 generate the upper and lower tier position error pulse trains 1PMD and 1PLD if a positive sign is registered in the flip-flop 570. NAND blocks 630 and 632 generate the upper and lower tier position error pulse trains 1NMD and 1NLD if a negative sign is registered in the flip-flop 570. The pulse train PM1 is inverted by NAND block 634 and applied to the input of NAND blocks 626, 628, 630 and 632 to square up the weighted position error pulse trains as previously indicated. The pulse trains 1PMD and 1PLD or the pulse trains 1NMD and 1NLD have frequencies proportional to the magnitude of the position error count stored by the position error register from the last computer output motion control word.

3. DIGITAL TO ANALOG CONVERTING AMPLIFIER CIRCUITRY

Conventional transistor pulse amplifier circuits 640, 642, 644 and 646 are provided as shown in FIG. 29A to raise the current magnitude of the respective input pulse trains to a level adequate for driving the power amplifier circuitry 506. The input amplifier stage transistors Q5 through Q12 may, for example, be the 2N3251 type while the output transistors Q1-Q4 and Q13- Q16 may be the 2N3251 type. Input Zener diodes D5-D8 may be the 1N750 type while output Zener diodes D1-D4 and D9-D12 may be the 1N746 type.

A pair of amplifier output pulse train signals is produced by each activated amplifier circuit 640, 642, 644 or 646 for application to switching paths 648, 650, 652 and 654 (FIG. 29B) which are summed at a junction 656. The summing junction 656 is located at an input to a stabilized output amplifier 658 preferably formed with integrated circuit units 660 and 662 such as Fairchild μ A727 and μ A741 types respectively.

The respective switching paths include series connected field effect transistors Q17 and Q19 FIG. 29B which have their source terminals connected to the stabilized +5V reference Q21 and Q23 which have their source terminals connected to the stabilized -5V reference. The respective switching paths are also shunt connected to common from the drain terminals of Q17, Q19, Q21 and Q23 through field effect transistors Q18, Q20, Q22 and Q24. All of the field effect transistors may, for example, be the TIS73 type. Input summing resistors R37, R39, R41 and R42 are connected in the respective switching paths, and respective resistor-capacitor circuits 664, 666, 668 and 670 smooth out the input voltage signals to the output amplifiers 658.

The +5V or -5V reference is coupled to the input of the output amplifier 658 through a particular input switching path when the series field effect transistor in that path is made conductive and the shunt field effect transistor is made nonconductive by the application of pulses to the field effect transistor gate terminals. If no pulses are applied to the series field effect transistor gates in a particular input switching path, that input path is shunted to common through the shunt field effect transistor switch associated with it.

The input paths 648 and 650 respectively carry position error pulse trains to the input of the output amplifier 658 respectively proportional to the weighted bits from the upper tier and lower tier position error registers in FIG. 28 when positive position error exists. Similarly, the input paths 652 and 654 carry negative pulse trains to the input of the output amplifier 658 respectively proportional to the weighted bits from the upper tier and lower tier of the position error register in FIG. 28 when negative position error exists.

The output amplifier 658 further includes a feedback filter 672 for voltage smoothing and capacitors C5, C6, C11 and C12 for noise reduction. Input resistors R52, R53, R55 and potentiometer P1 provide for zero adjust. The magnitude of the analog voltage output from the amplifier 658 is proportional to the position error register content and its sign is the sign stored in the position error register.

4. POWER AMPLIFIER CIRCUITRY

The analog position error voltage is applied through a gain adjust potentiometer P2 as a velocity command signal to a summing junction 674 at the input of a conventional DC servo preamplifier 676 which is lead-lag compensated by feedback circuitry 678. The preamplifier 676 has two stages which may respectively be integrated circuit μ A726 and μ A709 amplifier types. The X-axis tachometer generator 673 is coupled to the output motor drive 508 and it generates a signal proportional to drive velocity for summing at the junction 674 with the velocity command to develop a velocity error signal. The input to the amplifier 676 accordingly forms the input of the inner velocity control loop of the machine tool motion control loop arrangement.

A conventional hydraulic servo power amplifier 680 generates a current output in response to the voltage output of the servo preamplifier 676 in order to drive the electric torque motor 508 in proportion to the velocity error. The power amplifier 680 may include a first stage integrated circuit amplifier such as the μ A709 type and a second stage amplifier comprising a suitable pair of complementary transistors.

L. TABLE OF COMMERCIALLY AVAILABLE DEVICES FOR SOME OF THE SYSTEM ELECTRONIC LOGIC COMPONENTS

Type Usable Device(s) ____________________________________________________________ ______________ [Note: MC=Motorola DTL; SN=Texas Inst. TTL] AND MC833P 1 Input NAND (Inverter) MC836P; SN7404N 2 Input NAND MC846P; SN7400N 3 Input NAND MC862P; SN7410N 4 Input NAND MC830P; SN7420N Power Gate MC844P Buffer MC832P; SN7440N Single Shot MC851P Clocked Flip-Flop MC845P Exclusive OR SN7486 Bit Latch BL SN7475 UP/DOWN Counter SN74193 Dual J-K Flip-Flop SN7473 J-K Flip Flop With SN7472 AND Inputs Synchronous Binary Counter 9316(Fairchild) ____________________________________________________________ ______________

M. TABLE OF LOGIC FUNCTIONS FOR SOME OF THE SYSTEM ELECTRONIC LOGIC COMPONENTS

AND

1. the output Z of an "AND" assumes the 1 state if and only if all the inputs assume the 1 state.

2. The "AND" is used to expand the number of logic element inputs by connecting the "AND" output to a logic element node input.

3. Z = A . B . C

NAND

1. the output Z of a "NAND" assumes the 0 state if and only if all inputs assume the 1 state.

2. NANDS can have from one to four inputs and a node input.

3. The outputs of NANDS can be connected together to form the "OR" function.

4. Z = A . B . C

PG

1. the PG (power gate) has the same logic as a NAND.

2. the PG can handle a larger output current than the NAND.

3. the PG is generally used to drive relays or indicating lights.

4. PG has four inputs and a node input.

B

1. the B (buffer) has the same logic as a NAND.

2. the B can be connected to a larger number of inputs than a NAND.

3. the output of a "B" should not be connected to the output of another logic element to form the "OR" function.

N. LIST OF WIRING CONNECTIONS

This list provides an index to connections between inputs and outputs among many of the circuits in the figures. In some relatively few instances manufacturing drawing sheet numbers are referred to but not shown in the figures because of similarity to other manufacturing drawings or for reasons of convenience. Further, some circuit interconnections are not itemized in this list but most of those are indicated in FIGS. 4A-C.

Page L35

Input - Source Page Output - Destination Page TB/ L9 4, L94, L36 TB L8 2, L84, L94 TA/ L3 6 TA L8 2, L84, L94

Page L36

Input - Source Page Output - Destination Page TA/ L35 100C L66 TB/ L35 1MC L37

Page L37

Input - Source Page Output - Destination Page 1MC L36 PM1 L42 DRSTOP/ L95 PM2 L46 Page L38 Input - Source Page Output - Destination Page B1C1-B6C1 L46, L42 +5VR L48, L44 -5VR L48, L44

Page L42

Input - Source Page Output - Destination Page OXB14 L5 1PMD L43 OXB8-OXB11 L5 1NMD L43 OXB7 L4 1PLD L43 OXB6 L4 1NLD L43 PM1 L37 B1C1-B6C1 L38 RO L64 OXB0-OXB5 L4

Page L43

Input - Source Page Output - Destination Page 1PMD L42 1PLD L42 1NMD L42 1NLD L42

Page L44

Input - Source Page Output - Destination Page +5VR L38 -5VR L38 Page L46 Input - Source Page Output - Destination Page OXB14 L5 2PMD L47 OXB6-OXB11 L5 2NMD L47 PM2 L37 2PLD L47 B1C1-B6C1 L38 2NLD L47 R1 L68 C1 L64 OXB0-OXB5 L4

Page L47

Input - Source Page Output - Destination Page 2PMD L46 2PLD L46 2NMD L46 2NLD L46

Page L48

Input - Source Page Output - Destination Page +5VR L38 -5VR L38 Page L63 Input - Source Page Output - Destination Page R1 K4, L6, L46 R0 K3, L6, L84, L42 R3 K6, L7 R2 K5, L7 R5 L30, K8, L8 R4 K7, K9, L8 R7 L29, L82 R6 L74, L9

Page L64

Input - Source Page Output - Destination Page C1 L30, L9, L46, L42 C0 L29, L6, L7, L74, L8 C5 K9, L84 C4 K3, K4, K5, K6, K7 K8, L82, L74

Page L66

Input - Source Page Output - Destination Page TAPECHARACTER L71 SR5AD L68, L70, L74 100C L36 COF L67

Page L67

Input - Source Page Output - Destination Page 2AXISOVERFLOW L83 COF L66 1AXISOVERFLOW L81 Page L68 Input - Source Page Output - Destination Page SR5AD L66 TCH1-TCH8 L70 IEA0/-IEA7/ K3, K4, K5, L80, L81, L83, L73 TCH2/-TCH8/ L71 SPRK L71, L74

Page L69

Input - Source Page Output - Destination Page OTF1 & OTF2 L8 1+3+6+7 L71 ADVANCE L74 NOCH L70 RWDLC L74 ANYCH L71 ENABLE/ L74

Page L70

Input - Source Page Output - Destination Page TCH1-TCH8 L68 PE2/ L70 NOCH L69 PE L13, K4 ASCII K7 PE/ L74 PE2/ L70 FEOBM L71 OTF3 L8 1.2.40DDP L71 SR5AD L66

Page L71

Input - Source Page Output - Destination Page SR5AD/ L74 EARLYSTOP/ L74 ADVANCE L74 FEOBM L70 parityignore/ L96 ENABRDINTPARCL/ L74 ANYCH L69 TAPECHARACTER L66 ENABLE/ L69 1.2.4.ODDP L70 PARCL/ L74 EOR L74 READINIT/ L74 TCH2/-Tch8/ L68 SPRK L68 1+3+6+7 L69

Page L72

Input - Source Page Output - Destination Page OTF4-OTF10 L8 MDICH1/-MDICH8/ L73 OTF12 & OTF13 L8 Page L73 Input - Source Page OUtput - Destination Page MDICH1/-MDICH8/ L72 IEA0/-IEA7/ L68, K3, K4, K5, L80, L81, L83

Page L74

Input - Source Page OUtput - Destination Page R6 L63 OADD6 L82, L84 CO L64 RWDLC L69 SR5AD L66 RWD/ K4 OXA11-OXA15 L5 SR5AD/ L71 OXA5 L4 READINIT/ L71 EARLYSTOP/ L71 IGNORERESET/ L82, L84 PE/ L70 PARCL/ L71 ENABRDINTPARCL/ L71 ADVANCE/ K4 C4 L64 ADVANCE L69, L71 SPRK L68 MDIADDRESS L81, L83 EOR L71 ENABLE/ L69

Page L81

Input - Source Page Output - Destination Page MDIADDRESS L74 IEA0/-IEA7/ L68, K3, K4 OXA6 L4 K5, L80, L83, L73 IEA8/-IEA11/ K3, K4, K5, L80, L83 IEA12/ K3, K4, K5, L80, L81, L83 IEA13/-IEA15/ K3, K4, K5, L80, L83 1AXISOVERFLOW L67

Page L82

Input - Source Page Output - Destination Page TA L35 XNULL/ L96 IREF L92 IQ L92 XRANGE K6 IMKR L92 C4 L64 R7 L63 IA0 L94 IS L94 IGNORERESET/ L74 TB L35 OXAO L4 OADD6 L74

Page L83

Input - Source Page Output - Destination Page IEA1/-IEA7/ L68, K3, K4, K5, IEAO/ L68, K3, L81, L73 K4, K5, IEA8/-IEA13/ K3, K4, K5, L81 L80, L81, IEA14 K3, K4, K5, L81 L73 L83 IEA15/ K3, K4, MDIADDRESS L74 K5, L80, OXA7 L4 L81 IEA14/ K3, K4, K5, L80, L81, L83 2AXISOVERFLOW L67

Page L84

Input - Source Page Output - Destination Page TA L35 ZNULL/ L96 2REF L92 2Q L92 ZRANGE K6 2MKR L92 C5 L63 2AD L94 2S L94 IGNORERESET L74 TB L35 OXA2 L4 OADD6 L74

Page L92

Input - Source Page Output - Destination Page 2REF L84, L94 2REF/ L94 1Q L82, L94 1Q/ L94 1REF/ L94 1REF L82, L94 1MKR L82 2Q/ L94 2Q L84, L94 2MKR L84

Page L94

Input - Source Page Output - Destination Page TB L35 2AD L84 2REF L92 1AD L82 TB/ L35 2AD+2S/ L94 1Q L92 1S L82 1REF L92 1AD+1S/ L94 1AD+1S/ L94 2S L84 1Q/ L92 2REF/ L92 2Q/ L92 TA L35 TB/ L35 1REF/ L92 2Q L92 2AD+2S/ L94

O. POWER SUPPLY CONNECTION TABLE

The following table lists various printed circuit boards illustrated in the various figures along with the manufacturing L-sheet or K-sheet drawing numbers. Although not detailed, the power supply circuitry indicated by the reference character 82 in FIGS. 4A-C does include the voltage and common terminals listed for connection to the printed circuit boards as well as other terminals needed for connection to other elements. In some instances, the various figures show the power supply connections to the board circuitry while in other instances they do not for reasons of convenience.

Power Supply Terminal Printed Circuit Board Connections Service Request Interrupt 26V; 5V; PSC & Address - L66, L67 Attenuator - K3-K9 24V; PSC Lamp Driver - L17, L18 24V; PSC 5V Logic Power Supply 24V; PSC Relay Driver - L19, L20 24V; PSC D/A Buffer & Decoder - L42, L46 5V Input Bit Interface - 78, L79 5V; PSC Input Expander - L80 5V; PSC Transfer Buffer - L6-L9 5V; PSC Non Inverting Isolating 5V; PSC NANDS - L13, L14 Output Expander - L4, L5 5V; PSC Output Bit Interface - L2, L3 5V; PSC Readout Driver - L29, L30 5V; PSC Input Filter - K3-K9 5V; PSC D/A Commutator & 5V PSC; 24V, Reference - L37, L38 SPSC; SPSP; SPSN I/O Address Interface - L63, L64 5V; 25V; PSC L. D. Service Preamplifier - SPSP; SPSN; L45, L49 SPSC Servo Valve Power Amplifier - VPSP; VPSN; L45, L49 VPSC Photo Diode - L68, L69 15V; - 15V; 5V Tape Control & MDI Input - 15V; -15V; 5V L73, L74 Encoder Logic And Synch - L94 5V; PSC Clock - L35, L36 5V; PSC Switch Amplifiers and 15V; PSC; -24V Decoder - L72 Encoder Input & Logic - L92 5V; 24V; PSC; -24V Axis Counter - L81-L84 5V Parity Error - L70, L71 5V D/A Switch & Amplifier L43, L47 SPSP; SPSN; SPSC; PSC

IV. PROGRAM SYSTEM FOR NUMERICAL CONTOURING

COMPUTER IN 2-AXIS APPLICATION OF THE

INVENTION SYSTEM AND METHOD

A. GENERAL CONSIDERATIONS

A program system stored in the computer core memory operates the CPU 86 to provide motion and nonmotion control in response to input command data and feedback data. At this point, some consideration of the special requirements of machine tool motion control and the implications of those requirements will provide a better foundation for understanding the significance of the structure and functioning of the computer and its program system, the interaction of the computer and its program system with other elements of the numerical contouring controller, and the structure and functioning of the numerical contouring control system as a whole.

Process control computers have been used for on line control of various processes such as steel rolling, paper mill operations, oil refinery operations, electric power generation, etc. but realization of an economically competitive digital computer control system for closed loop machine tool contouring has been obstructed by inability to satisfy two basic requirements which differentiate the machine tool field of application from most other fields of industrial application. In particular, machine tool operations require much higher resolution in the position calculations because provision must be made for controlling position in increments as small as 0.0001 inches over travel distances as large as 100 inches or more. In addition, machine tool operations involve wider servo bandwidth and accordingly require a much higher rate of sampling. Moreover, to achieve feedrates as low for example as 0.01 inches/minute with a 5 percent speed tolerance, even greater resolution and word length requirements are imposed on the position calculations to an extent dependent on the sampling rate. Thus, duty cycle requirements imposed on the fastest present and currently projected digital minicomputers by these requirements have generally been considered to be too high to permit their implementation for machine tool control purposes with economic justification. Typically, larger computers cannot even meet the required calculating speeds.

With the preferred employment of a digital minicomputer in a numerical contouring control system as described herein, there is provided an economic numerical contouring computer control product which satisfies both the accuracy and the sampling rate requirements of machine tool operations. In the implementation of the present invention with a numerical contouring control computer, the rate of sampling accumulated position feedback data is high enough to satisfy the limitations imposed by servo bandwidth yet it is valued low enough to enable the motion control duty cycle requirements on the CPU 86 to be maintained at manageable levels. As already indicated, the preferred frequency or sampling rate in this case is 100 Hz and it is noteworthy that this is a relatively low rate as compared to historic pulse feedback generation rates in the machine tool industry yet it is still 100 times greater than the 1 Hz sample rate typically used in most industrial applications.

In other numerical machine tool control applications of the invention, the sampling rate can be less or greater than 100 Hz. In most cases, it is preferred that the sampling rate be no less than 20 Hz because the contour accuracy begins to fall rapidly for lower sampling rates. In the present case with the P-2000 minicomputer, it is preferred that the sampling rate be no higher than 400 Hz because higher sampling rates impose excessive duty cycle requirements on the P-2000. In the case of other minicomputers having faster instruction times, it is preferred that the sampling rate be no higher than a value equal to 400 times the ratio of the memory cycle time of the faster minicomputer to the memory cycle time of the P-2000.

It is possible that sampling rates below 20 Hz can be used successfully in numerical machine tool control applications. However, special algorithms based on sampled data system design theory would have to be developed to determine whether that possibility is realizable.

Although not preferred in the present implementation of the invention, it is also possible to use asynchronous sampling such as fixed distance sampling instead of the fixed time sampling employed herein. One of the principal difficulties with fixed distance sampling, however, is that accurate stopping at points within the fixed distance sample is problematical.

With a sample rate of 100 Hz, programs written in assembly language, and avoidance of executive program control, a basic package of motion control with required positioning accuracy, data input functions, machine tool interface functions, and operator interface functions can be implemented in accordance with the principles of the present invention with the duty cycle capability of a digital minicomputer having a 4K core memory. To achieve a preselected velocity resolution of 5 percent on a minimum speed of 0.01 inches/minute, a position resolution of 10 - 7 is required in the position calculations. In order to provide for this position resolution and for travel distances selected to be as great as 100 inches, a position range of 10 9 is needed in the calculations. This range involves the use of 30 bit numbers, i.e., double precision arithmetic in a 16 bit machine. Since such arithmetic is extremely time consuming, the calculations are simplified by the use of iterative procedures. Resultant truncation error is held sufficiently low to satisfy speed accuracy requirements.

1. SOFTWARE STRUCTURE

To conserve core memory and duty cycle requirements, it is preferred that no executive program package be used in the present case although difficulties are accordingly created in program structuring to provide for input service requests. The program system preferably does comprise in this case a Motion Control Program which is executed synchronously at the preferred 100 Hz sampling rate and a Main Program which runs cyclicly between executions of the Motion Control Program.

The synchronous Motion Control Program should require no more than about 40 percent of the computer duty cycle, i.e., less than about 4 milliseconds maximum at the 100 Hz sampling rate. The Main Program therefore usually runs over half of the computer operating time to perform those functions required for nonmotion control and those functions supportive to the execution of the Motion Control Program.

The Main Program performs certain precalculations relative to numerical command input data for use in the Motion Control Program in this particular implementation of the invention, and the Main Program accordingly must perform these precalculations rapidly enough to keep the synchronous Motion Control Program supplied with the necessary precalculated data. Ordinarily, the precalculated data is made available to the Motion Control Program as required, but in those few instances where the Main Program may be slowed down in precalculated data generation, the machine feedrate may be simply and automatically reduced.

Input interfacing priorities are handled by an input service system in which the Main Program defines selected inputs which are to be scanned by the synchronous Motion Control Program. Inputs which are detected by the Motion Control Program are acted upon by the Main Program in determining and implementing whatever action is required by the input.

Apart from the input service system, standard hardware external interrupt channels are used for certain input functions because of their frequency and importance. As already described, the 100C, TAPE CHARACTER, and COF SIGNALS are applied to the service request interrupt circuitry in FIG. 16 as interrupt inputs to the CPU 86.

The 100C signal preferably provides highly accurate clocking of the synchronous Motion Control Program, in order to hold the sampling rate and slope of the position reference reasonably constant and thereby maintain surface finish quality. As previously considered, the COF signal indicates a feedback counter overflow and in this implementation of the invention the COF signal is presumed to mean an external feedback circuit or similar fault has occurred and machine tool motion is accordingly immediately brought to a stop. The TAPE CHARACTER signal generally occurs at the tape block processing rate of the paper tape reader 90, i.e., 300 cps in this case. The CPU 86 accepts input channel buffered tape data when the Main Program is running and ready to buffer the raw tape data in the core memory.

Although the internal computer buffering and transfer of command input data among buffers is not per se a part of the present invention, the flow of input tape command data will be generally described herein to clarify the overall functioning of the programmed computer system. With reference to FIG. 30, data from paper tape 700 is transferred to a raw tape data buffer 702 in the core memory where it is stored until the Main Program decodes the raw data as indicated by the reference character 704 and transfers the decoded data to a converted tape data buffer 706 in the core memory. Two additional converted tape data buffers 708 and 710 provide for a total storage capacity for three succesive blocks of converted tape data. During contouring motion these relate to three successive segments on the command contour as indicated by the successive j numbers in the blocks 706, 708 and 710. A block of converted tape data is transferred from the buffer 706 to the buffer 708 and then to the buffer 710 as successive tape data blocks are read into the raw tape data buffer 702 and decoded in the block 704. After the converted tape data in the buffer 710 is no longer useful, it is replaced with the next segment data.

As indicated by the reference character 712, a Precalculation Program makes calculations on the basis of the converted numerical tape command data for a particular segment at any one time, i.e., the current segment j for which the converted command data is stored in the buffer 708. In making the j segment precalculations, the next prior and the next subsequent segment command data in the buffers 706 and 710 is also referred to by the Precalculation Program as indicated by the dotted lines in FIG. 30.

The segment data resulting from the precalculations is stored in a precalculated data or work buffer 714, or work buffer 716 or work buffer 717 where it is made available for real time use by the Motion Control Program as indicated by the reference character 718. As illustrated in FIG. 30, the work buffer 714 is initialized for j segment data, the work buffer carries precalculated data corresponding to the j - 1 segment, the work buffer 717 carries precalculated data corresponding to the next previous segment (j - 2). As a result of the execution of the Motion Control Program, output commands are generated as indicated by the reference character 720 for insertion in the velocity control loop employed in this implementation of the invention.

Generally, other buffering and buffered data flow arrangements through the Precalculation Program can be employed if desired. For example, it may be desirable to buffer up work data in as many as twenty or more buffers.

A standard internal buffer overflow interrupt is also provided as shown in FIGS. 4A-C to terminate operations in the event of some command data input or processing malfunction. A power failure interrupt causes the CPU 86 to execute a Power Fail Program which relies on power supply energy storage to place the pertinent registered data in permanent core memory and to initialize itself for restart.

Core memory and instruction time requirements are preferably conserved by writing the program statements in assembly language for entry into the CPU 86. The use of higher level language such as Fortran and its compiler would be more convenient but in many machine tool applications unworkable in minicomputers because of the resultant excessive core memory and duty cycle requirements. Thus, typical digital minicomputers are limited to as few as 32 relatively simple instructions including add, subtract, multiply and divide. Minicomputer execution time might typically be as great as 5 microseconds to process an add instruction and as great as 35 microseconds to process a multiplication instruction.

With the use of program writing in assembly language, arithmetic operations are enabled to be performed more efficiently in the fixed point format. The inherently large digital computer register size substantially overcomes prior art register size limitations considered previously herein, yet with the use of fixed point binary arithmetic care must be used in the program preparation to avoid the generation of data out of register size.

With the fixed P-2000 16 bit word length, the 14 bit plus sign digital to analog conversion system described in connection with FIG. 28, a sampling rate of 100 Hz, and a resolution of 0.0001 inches in feedback position, the controller is capable of accurately operating at traverse speeds of up to 500 inches/minute, contouring speeds in the range of 0.01 to 150. Certain other characteristics of the digital computer numerical contouring controller 80 are implied by the basic fixed parameters and the specified machining speed and feedrate number size parameters.

The required size of the X and Z axis counters 211 and 213 shown in FIGS. 4A-C is greater than 10 bits to provide for the distance traveled during one sampling period at the maximum specified traverse speed. If a faster sampling rate is employed, a smaller counter can be employed.

Limitations are also imposed on the system parameters of the numerical contouring controller 80 by the precision at which algorithm calculations are carried out. The resolution in binary points of various fixed point parameters and the limitations they impose on the system have been generally considered already and they are considered in more detail subsequently in connection with the description of the Motion Control Program.

The following is a list of the more significant contouring controller system parameters and the calculated limits applicable to the controller 80 for the exemplary parameters considered to this point:

Position Loop Gain Equal to or greater than 5.1. Slide Positions Range of -2 × 10 5 inches to 2 × 10 5 . Feedrate - Range of .01 inches/minute to 125 inches/ minute. Segment Length Less than 1680 inches. Path Slope Greater than 1/32800. Feedrate Tolerance .005 inches/minute. Due to Computer

B. OVERVIEW OF MAIN PROGRAM

Insofar as programming is concerned, the present invention is related principally to the motion calculation and control algorithm and the fundamentals of the software structure. Even though some major parts of the subject matter content of the Main Program do not per se form a part of the present invention, the entire Main Program will be generally described herein for the purpose of developing the environment in which the present invention may be practiced.

As indicated in a basic flow chart shown in FIG. 31, the Main Program first operates in block 730 to determine output data for the readout and offset displays operated by the readout driver 384. Since the readout driver 384 is always on, program attention is more or less continually required for the readout. Generally, the readout is serviced to the extent of updating at least one digit in the readout in virtually every pass through the Main Program. The appearance to the machine tool operator is that the readout is being continually serviced by the CPU 86.

Next, the mode position is detected from the operator panel MODE selector switch shown in FIG. 11B as indicated by block 732. If the new reading MODE (N) is the same as the previous reading MODE (N-1) or if it is a change among the AUTOMATIC CYCLE, SINGLE CYCLE and MDI motion modes as detected in blocks 734 and 736, block 738 causes the pertaining mode program to be executed. If the new reading MODE (N) is different from and if it is not a change among the AUTOMATIC CYCLE, SINGLE CYCLE and MDI modes, block 740 stops all axes and block 738 then initiates the pertaining mode program.

The mode programs include those which provide for the usual modes of numerical contouring controller operation, i.e., AUTOMATIC CYCLE, SINGLE CYCLE, MDI, OS, REFERENCE, and MANUAL as indicated by the reference characters 742 through 752. In addition, a TEST mode is providable by program block 754 for the implementation of diagnostic routines desired by a customer. With the flexibility of the TEST mode, numerical contouring controller testing is made highly convenient because any of predetermined points in the hardware equipment (not indicated in the Figures) can be tested with the use of appropriate software. Further, once the TEST Program is run, it can be removed from core memory and replaced with the normal operations programs. Accordingly, testing substantially does not require dedication of any part of the computer capacity.

Since the present invention does not per se include the subject matter of the MDI (Manual Data Input) mode and its interfacing with the Motion Control Program, no further detail will be presented herein on the MDI Program 746. For similar reasons, no further detail will be presented on the MANUAL Program 752 which pertains to the MANUAL modes of operation including manual jog and incremental jog. The subject matter of the OFFSET Program 748 and the REFERENCE Program 750 likewise will not be further detailed here.

The AUTOMATIC and SINGLE CYCLE Program basic flow charts are shown in FIG. 32. Block 756 identifies the particular contact closure inputs from pushbuttons, limit switches and relay contacts that the synchronous Motion Control Program is to inspect for this mode of operation. When the Motion Control Program is run, a detection is made as to whether any input service request has been made and an identification is made for each input service request. Block 758 detects the identified inputs and block 760 initiates execution of the program required by the input. If more than one input service is required, the input service programs are executed in the order shown. The program list is illustrative and may be modified include whatever input service a particular application of the numerical contouring computer controller 80 requires.

The interaction of the Main Program and the Motion Control Program with the input service system enable the CPU 86 to process input service requests compatibly with motion control and machine tool interface requirements without need for an executive program package. The 100 Hz execution rate of the Motion Control Program is consistent with motion control needs, as previously explained, as well as with input service requirements. For example, the Motion Control Program is run once every ten milliseconds yet it is not possible for a pushbutton switch to change state in that period of time.

If no inputs require service, and the CYCLE START pushbutton is not depressed as detected by block 760, the calculations for numeric display are updated by block 762 for output at block 730 in the Main Program. Block 764 operates if CYCLE START is on to determine whether the converted data buffers 706, 708 and 710 are ready for use in the Precalculation Program. If they are, the Precalculation Program is executed as indicated by block 766 to develop the command data needed for the real time operation of the Motion Control Program.

Where precalculation is not yet possible, the possibility of converting raw tape data from the buffer 702 is detected in block 768. Available raw tape data is decoded by a Convert Program and entered in the converted data buffer 706 as indicated by block 770. After conversion, the data is put in the proper form by block 772 for use by the Precalculation Program. As previously indicated, the input data buffering system itself does not form a part of the present invention, and it is related herein only to clarify the program system operation. The Convert Program will not be considered in any greater detail herein for similar reasons.

If both precalculation and data conversion are not yet possible, block 774 detects whether tape data is available for the buffer 702, and if it is not the program moves to the display calculations block 762 previously considered. If tape data available, it is transferred to the raw tape data buffer 702 by block 776 and the data is then put in the proper form by block 778 for decoding by the Convert Program in the block 770.

Cycle detection is provided by block 780 at the end of all of the flow paths which start at the block 768. The Main program is directly restarted if the cycling is automatic. In SINGLE CYCLE operation, block 782 flags the Motion Control Program to this effect and ends the cycling.

To illustrate the interrelationship of the Main Program and the Motion Control Program, there is illustrated in FIG. 33 a schematic diagram of the program execution operations over a short period of computer time. At point 800 the Main Program begins operation. In rapid succession, the display outputs are generated and the MODE selector switch is read. Next, the bid flags are checked but none are set. During the next time period indicated by the reference character 802, the Precalculation Program is executed to fill a converted data buffer. At point 804, the Precalculation Program is interrupted by a service request interrupt for a tape character input. The Precalculation Program is executed until point 806 at which time an interruption occurs for execution of the Motion Control Program.

During the execution of the Motion Control Program, another tape reader character is entered into the CPU 86 as indicated by the reference character 808. Preferably, the Motion Control Program should not be interrupted, however, until velocity command outputs are executed therein. During the last part of the Motion Control Program execution, the contact closure inputs specified by the Main Program are checked and any required bid flags are set accordingly. At the completion of the run of the Motion Control Program, the Main Program restarts at the instructional point at which it had been interrupted as indicated by the reference character 810. Accordingly, the Precalculation Program continues to fill the converted data buffer as two additional tape reader characters are entered into the CPU 86. At time point 812, the Main Program is again interrupted for execution of the Motion Control Program. This execution of the Motion Control Program requires less time than the previous execution, and at its termination a return is made to the Main Program as indicated by the reference character 814.

C. PRECALCULATION PROGRAM

1. INTRODUCTION

In general, the Precalculation Program is arranged to make on line determinations of segment acceleration and deceleration and otherwise to develop the decoded numerical command input data for use by the real time Motion Control Program. The Precalculation Program is executed each time a block of motion command data is to be processed for development into the quantities required for real time use.

Segment acceleration and deceleration in the form of ramped velocity change is preferably employed in the implementation of the invention in order to smooth the command position trajectory for reasons previously considered. Further, in the case of linear interpolation, the respective axis speed change rate values are properly ratioed to hold slope during deceleration or acceleration over a segment section.

The acceleration and deceleration subject matter of the present invention can be embodied in the post processor computer 40 in FIG. 2 or like computers for development of necessary precalculated Motion Control Program data and recording of the developed data as data blocks on the post processor output tape or in the post processor discs for transfer to the CPU 86. However, it is preferred that it be embodied in the on line computer because of the many advantages associated with on line implementation including a substantial reduction in the size of the numerical control tapes from the post processor or in the required data handling capacity of any provided data link with the post processor.

Within the implementation context just considered, it is preferred that as many precalculations as possible including acceleration and deceleration command data precalculations be performed in the Precalculation Program in order to require only relatively few and relatively simple calculations to be performed in real time for the high iteration rate Motion Control Program. However, the principles of the invention can be implemented with improved computer hardware or with improved algorithms which may enable the relative duties and the relative structure of the real time Motion Control Program and the Precalculation Program to vary from that described herein. These presupposed improved algorithms are not a part of this disclosure. In fact, one of the key advantages of computer implementation of the invention is that path control strategy can be flexibly varied with convenience to implement position loop algorithm improvements, and, more generally, that the program system as a whole can be flexibly modified with convenience to implement improvements embracing subject matter areas such as nonlinear interpolation, control loop structure, stepping motor control systems, adaptive control, position feedback cross-coupling, thread cutting, surface finish quality control, etc.

As illustrated schematically in FIG. 34, it is further preferred that the acceleration and deceleration precalculated determinations for a particular segment j be derived entirely from considerations of that segment, the following segment, (j + 1), and the state of the position trajectory at the start of that segment, i.e., at the end of (j - 1). Reference back to earlier segments to make recalculations for those earlier segments as a result of current segment calculations may be implemented consistently with the principles of the invention but substantial calculation complexity with corresponding increase in computer duty cycle is incurred. Furthermore, the worth of instituting such recalculations is questionable since the present invention can be implemented without such recalculations and still achieve overall improvement in the tradeoff of position loop gain and cornering performance at a particular sampling rate.

In addition, it is preferred as illustrated in FIG. 34 that each segment be divided at most into only three sections including an acceleration section D1, a constant speed section D2-D1 and a deceleration section D3-D2. This method enables prior art discontinuities in command position trajectories to be removed, but discontinuities still exist in the derivatives of the command position trajectory. As previously considered, however, the higher order discontinuities have comparatively little impact on path accuracy and cornering performance. The system sampling action does cause discontinuities in the command position trajectory, but this has minimal effect on path accuracy and cornering performance because the sampling rate has been set within a range which makes minicomputer implementation possible while substantially retaining the appearance continuous control behavioral characteristics for the numerical contouring controller 80.

The division of each path segment into three sections is generally made according to segment length, specified segment speed, segment starting speed, and the specified speed of the following segment (j + 1). Controlled acceleration or deceleration is preferably inherent in the command position trajectories of all axes if the change in the required j segment speed of any axis exceeds a predetermined low limit. Thus, controlled acceleration and deceleration are included in the command position trajectories only if it takes more than one sampling period at a specified speed change rate to change speed of any axis as required at the ends of the j segment.

If acceleration or deceleration is found to be unnecessary, the corresponding section of the j segment is set to zero length. Preferably, the acceleration and deceleration rates are equal and all axes start acceleration and deceleration simultaneously in the case of linear interpolation in order to make the command position trajectory identical to the specified contour. If deceleration is found to be necessary in the case of linear interpolation, the axis speeds are preferably reduced to zero at the end of the j segment so that the axis accelerations can be properly ratioed to hold command slope in the next segment. This may require the specified deceleration rate to be increased in the j segment. For example, in the case of the end of free form curves where the segment length may be very small and controlled deceleration can only take place during a single segment. This usually requires a higher deceleration rate than that specified, but very little degradation in cornering is experienced.

When the programmed feedrate exceeds a predetermined maximum value, it may be reduced. If the specified feedrate is unobtainable during motion through the j segment at the specified acceleration rate, the feedrate is lowered accordingly for the j segment. The resultant command feedrate is determined to be unobtainable if it cannot be attained and then, if deceleration is necessary, reduced to zero within the j segment length D3. If the feedrate is reduced, the length of the second section D2-D1 of the j segment is preferably set to zero. If deceleration is necessary in the j segment, but acceleration is unnecessary and the speed cannot be reduced to zero at the specified deceleration within the j segment, the deceleration rate is increased accordingly.

In the implementation of the motion control algorithm, it is preferred that the use of square root calculations be avoided in order to conserve computer processor utilization time wherever possible. If changes in the feedrate are necessary, accurate square root calculations are ordinarily needed to determine the new feedrate. However, such calculations are avoided by calculating the distance within which the new speed can be reduced to zero at the specified deceleration. Thus, when feedrate changes are necessary, the starting speeds for the various sections of the j segment are not calculated during the execution of the Precalculation Program. In addition, the need for acceleration is determined by a comparison of distances rather than speeds.

The following is a summary of the data flow to and from the Precalculation Program along with a definition of certain parameters associated with that data:

Input Data

ΔF i ,j = command incremental movement (Δ X or Δ Z in this case)

FRN = feedrate number

Output Data

D1 j = distance to be traversed during acceleration

D2 j = distance to be traversed from start of segment to point where deceleration begins

D3 j = length of segment

V10 j = velocity at start of segment, if known without square root calculation

V20 j = velocity required at end of acceleration

DS = V I ,j 2 / 2ACC = stopping distance

ADT j = acceleration rate called for by precalculation

DDT j = deceleration rate called for by precalculation

TAN i ,j = slope of path with respect to fastest axis

Related Parameters

DT = sampling period

ACC = desired value for segment speed change rate

i = axis number = X or Z

I = fastest axis

j = segment number

D2 j - D1 j = distance to be traversed during constant speed

D3 j - D2 j = distance to be traversed during deceleration

2. PRECALCULATION PROGRAM FLOW CHART

Before the Precalculation Program is allowed to run, the following parameters are initialized as indicated:

MINDIS = 1/2 X ACC(DT) 2

ACCDT = specified acceleration rate X sampling period

DS = 0 = stopping distance at end of previous segment

TAN i ,1 = 1 for each i - slopes of previous segment (j = 2 represents the first segment processed)

The flow chart illustrated in FIG. 35 for the Precalculation Program implements the principles of the invention in the most common case of linear interpolation with acceleration and deceleration in the AUTOMATIC or SINGLE CYCLE modes. There is no precalculation logic shown for the MDI mode of operation nor for circular nor other nonlinear interpolation since these subject areas do not per se form a part of the present invention. However, the principles of the invention can be embodied in the implementation of the specific cases of MDI and nonlinear interpolation preliminary calculations.

As indicated by block 830, the calculations to be made for the j segment require first that the distances to be moved along the axes and that the feedrate number be determined from the converted data buffer. Thus, for the numerical controller 80, the distances obtained are those for the X and Z axes.

The fastest axis in the (j+1) segment is next determined in block 832. The fastest axis is determined by finding the axis which requires the largest position change in the (j+1) segment. The slopes are then determined for all of the axes in relation to the fastest axis in the (j+1) segment in block 834 in accordance with the following equation:

TAN i ,j +1 = ΔF i ,j +1 /ΔF I ,j +1

In this case, either the X or the Z axis will be the fastest axis and only one tangent accordingly needs to be calculated for the (j+1) segment.

The required velocity for each linear axis and each rotary axis in the (j+1) segment are then determined in blocks 836 and 838 respectively to make it possible to determine whether deceleration is required at the end of segment j in accordance with the preferred deceleration test. If the feedrate number is supplied in units of speed, the following equation is used to determine the linear axis velocities:

If the feedrate number is supplied in units of reciprocal time, the following equation is employed for velocity determination of linear axes:

V i ,j +1 = FRN j +1 . Δ F i ,j +1 . K

For rotary axes in block 838, the tangent values found in block 834 are employed in the following equation to determine the rotary axis velocities:

V i ,j +1 = V I ,j +1 . TAN i ,j +1

As previously indicated, deceleration is implemented in order to reduce the speed represented by the gradient of the command position trajectory to zero at the end of each segment unless the change in velocity is small. In the latter nondeceleration case, only nominal path discontinuities are introduced into the command position trajectory since the corner velocity change is less than that which would be produced by the specified acceleration over the sampling time period. The following equation is employed to determine whether deceleration is necessary at the end of the j segment along any axis i:

V i ,j +1 - V i ,j > ACCDT

As indicated in block 842, it is next determined whether acceleration is required at the beginning of the j segment. If the end velocity of the previous segment (j-1) is zero, acceleration is required. If the end point velocity of the previous segment (j-1) is different from zero and known, the following equation is reflected in the determination of whether acceleration is required:

V i ,j - V i ,j -1 > ACCDT

Since the end point velocity for the segment (j-1) may not be known because specified speed was not reached in the (j-1) segment and accordingly the end point velocity was not calculated to avoid square root operations, the segment to segment velocity comparison is made in terms of the stopping distance in the (j-1) segment at the specified acceleration rate. The stopping distance for the fastest axis in the (j-1) segment is known to be:

V 2 I ,j -1 /2 ACC

In FIG. 35A, there is shown in greater detail the Acceleration Check Program provided in the block 842 to determine whether acceleration is required at the start of the j segment under the variety of conditions which may exist in relation to the axis velocities at the end of the (j-1) segment. After entry into the program, temporary work distances TMP1 and TMP2 are initialized as indicated in block 884. The specified velocity in the (j-1) segment is examined in block 846, the specified velocity in the j segment is examined in blocks 848 and 850 and the value of the temporary working quantity TMP1 is examined in blocks 852 and 854 in the process of determining the final value to assign to the working quantity TMP1 in block 856. Three of the logic flow paths also lead through block 855 where TMP2 is made negative prior to operating block 856. It is next determined in block 858 whether the speed change is too small and if it is, the next axis is checked as indicated by the block 860. If the speed change is too small for the last axis run of the program, a no acceleration determination is made by the block 862. For any axis run of the Acceleration Check Program in which the speed change is determined not to be too small in the block 858, an acceleration determination is made by the block 864. After completion of the acceleration determination in block 862 or 864, a return is made to the Precalculation Program. The next block 866 provides for initializing the work buffer into which the final operating data is to be put for the Motion Control Program.

All distances used in determining the necessity for acceleration in block 842 may be stored in single precision at a binary point of zero. As contrasted with the deceleration test, the test for acceleration is preferably performed on (j-1) segment modified speeds because, if it is based on originally specified speeds, a reduction in speed would then increase the path errors due to transient effects following the corner. The test for acceleration on the basis of modified speeds is possible since only data relating to the previous and current segments is required.

It is noteworthy that the deceleration test is preferably made using the originally specified speeds in order that a single pass of the Precalculation Program may be used. However, the run speed of the j segment may subsequently be reduced due to excessive speed. If deceleration had been found to be unnecessary, the speed reduction merely reduces the cornering overshoot.

The quantities which are initialized in the work buffer by the block 866 are as follows:

D1 j = 0

D2 j = 0

D3 j = ΔF i

V10 j = 0

V20 j = V I ,j or V20 j = V MAX , if V20 j >V MAX

ADT j = ACCDT

DDT j = - ACCDT

A determination is next made in block 868 of the quantities D1 j , D2 j and D3 j which together provide for defining the length of each of the three sections into which the j segment is to be divided. If there is to be no acceleration, D1 j is set equal to zero. If there is no deceleration, the quantity D2 j is set equal to D3 j which equals the length of the j segment. In addition, the velocity V20 j required at the end of the acceleration section is registered along with the stopping the third section distance D3-D2. The quantities V20 j , D1, D2, D3 are all needed for initialization at the start of each section in the real time operation of the Motion Control Program. The stopping distance, in terms of the speed at the end of the segment and the specified deceleration rate, is needed for the next pass of the Precalculation Program for the segment j+1.

The section parameter determinations to be made in the block 868 are complicated by a variety of conditions. In the first place, there are four combinations of acceleration and deceleration possible for the j segment as determined in the blocks 840 and 842.

Another condition that may complicate the determinations in the block 868 is the fact that the specified speed for the j segment may have to be reduced. For example, one special case requiring speed reduction occurs when reaching specified j segment speed and decelerating to zero speed cannot be achieved in the j segment. Further, a requirement may arise to change the direction of j segment acceleration and this in turn may depend on whether the specified speed is modified. For example, the (j-1) segment speed may be accelerated to a speed just short of the j segment specified speed. The j segment may then require reduction of its specified speed in order to decelerate to zero speed at the end of the j segment. The resultant reduced j segment speed may then be less than the end of the (j-1) segment speed and in that case deceleration is initiated immediately at the specified deceleration rate or higher if necessary.

There are also a variety of cases in which the deceleration rate may need to be changed in order to reach zero corner speed at the end of the j segment. For example, the speed at the start of the j segment may be too high such as where acceleration was applied during the entire (j-1) segment.

In FIG. 35B, there is shown a more detailed flow chart representation of the logic content of a Section Calculations Program used in the block 868. Temporary working distances which are used in the execution of the block 868 are initialized as follows:

TEMP1 = V I 2 ,j /2 ACC

TEMP2 = DS × TAN I ,j -1

TEMP3 = TEMP1 - TEMP2

TEMP4 = D3

TEMP5 = 0

Blocks 870, 872 and 874 set up the logic paths for the different combinations of j segment acceleration and deceleration. Block 876 determines whether the initial j segment speed is higher than the specified j segment speed in accordance with the following relationship:

TEMP 1 < TEMP2

If so, the acceleration direction is changed in block 878 in accordance with the following equations:

ADT = - ACCDT

D1 j = TEMP3

A determination is next made in block 880 as to whether j segment deceleration to zero speed is possible in accordance with the following relationship:

TEMP4 > TEMP2

If deceleration to zero speed is possible, block 882 identifies the slowdown point by calculating the quantity D2 j in accordance with the equation:

D2 j = TEMP4 - TEMP2

If deceleration to zero speed is not possible, block 884 changes the deceleration rate in accordance with the following equations:

D1 j = 0

DDT j = - (TEMP1 × ACCDT)/TEMP4

If the initial j segment speed is not higher than the specified j segment speed, a determination is then made in block 886 as to whether the specified speed can be reached in the j segment in accordance with the following relationship:

TEMP4 > TEMP1 + TEMP3

If specified j segment speed can be reached, block 888 calculates both D1 j and D2 j in accordance with the following equations:

D1 j = TEMP3

D2 j = TEMP4 - TEMP1

If it is determined that specified j segment speed cannot be reached in block 886, the j segment run speed is reduced in block 890 preferably in accordance with the following equation:

TEMP1 = TEMP2 + TEMP4/2

Next, the modified run speed is compared to the initial j segment speed in block 892 in accordance with the following relationship:

TEMP1 < TEMP2

If the initial speed is still too high, a determination is made in the block 880 as to whether deceleration to zero speed is possible and the same flow paths are followed as previously described in connection with the blocks 882 and 884. If the initial speed instead is not too high, block 894 provides for calculating the quantities D1 j and D2 j in accordance with the following equations:

D1 j = TEMP1 - TEMP2

D2 j = D1 j

Block 896 also determines whether the initial j segment speed is greater than the specified j segment speed in accordance with the same relationship described in connection with the block 876. If the initial speed is too high, the acceleration direction is changed in block 898 in accordance with the following equations:

ADT = ACCDT

TEMP5 = TEMP2 - TEMP4

If the initial j segment speed is not too high, the temporary working quantity TEMP5 is determined by block 900 in accordance with the following equation:

TEMP5 = TEMP2 + TEMP4

Both flow paths from the block 896 ultimately go to block 902 where it is determined whether the specified run speed for the j segment can be reached in accordance with the following relationship:

TEMP4 > TEMP3

If the run speed can be reached, the quantity D1 is calculated in block 904 in accordance with the following equation:

D1 = TEMP3

Next, TEMP5 and D2 are calculated respectively in blocks 906 and 908 in accordance with the following equations:

TEMP5 = TEMP1

D2 = TEMP4

If the specified j segment run speed cannot be reached in the j segment as determined in the block 902, block 910 sets the quantity D1 equal to TEMP4 and the block 908 determines the quantity D2 as previously described.

All of the flow paths from the blocks 882, 884, 888, 894 and 908 merge and enter block 910 where the initial j segment speed may be calculated for the case of starting from rest in accordance with the following equation:

V10 j = - ACCDT/2

Next, the stopping distance is identified in block 912 in accordance with the following equation:

DS = TEMP5

After completion of the execution of the block 912, the execution of the Precalculation Program proceeds from the block 868 to the block 914. As indicated, the block 914 updates the work buffer with the motion control output quantities determined in the block 868.

D. MOTION CONTROL PROGRAM

1. INTRODUCTION

The Motion Control Program is executed synchronously at 100 Hz to provide sampled data operation for the numerical contouring controller 80 in the position control loop. The program structure is preferably arranged in this implementation of the invention to embrace relatively simple calculations with reliance on the Precalculation Program to perform the more time consuming calculations. With the flexibility of computer software, however, other algorithms and other software structures than those described herein can be employed in implementing the broad principles of the invention.

A smooth command position trajectory is generated to produce reduced corner overshoot and undershoot as a result of the implementation of constant acceleration rate and constant deceleration rate sections as specified in accordance with the output data from the Precalculation Program. As a result of the positioning control determinations, high path accuracy is enabled, improved surface finish is achieved, and improved performance is achieved from the combined standpoint of corner accuracy and position loop gain for at least most of the preferred range of sampling rates previously indicated and in particular for the 100 Hz sample rate described herein.

The compensation including the gain of the position loop can be conveniently adjusted. If the position loop gain is changed internally or externally of the CPU 86, a simple change in the programmed value of the specified acceleration rate provides the necessary program modifications needed to achieve automatic adjustment in motion control commands to accommodate the changed gain for retention of desired corner tolerance. For example, with an increased position loop gain, the specified acceleration and deceleration rates are decreased and the acceleration-deceleration calculations of the Precalculation Program result in modified section lengths which are implemented by the Motion Control Program to retain desired cornering accuracy at the elevated position loop gain.

The positioning performance produced as a result of execution of the Motion Control Program in the numerical controller 80 also results in comparative savings in machining time at least in some applications. With respect to corners that would conventionally not be provided with programmed stepped velocity reduction, the lost time due to controlled acceleration and deceleration is 0.15 seconds per corner at a contouring speed of 125 inches/minute, a trajectory acceleration value of 14 inches/second/second and at the sampling rate of 100 Hz described herein. However, programmed cornering speeds are usually much lower than 125 inches/minute and accordingly the loss in time per corner would be proportionately lower. In any case, there will be applications where production time is actually lower with the implementation of controlled acceleration and deceleration in accordance with the principles of the invention. This is because a constant deceleration rate and a constant acceleration rate can result in faster cornering than the conventional stepped velocity method of decreasing and increasing speed at a path corner.

The Motion Control Program description which follows is limited to the AUTOMATIC CYCLE and SINGLE CYCLE modes of operation, and no specific description is presented on the subject of motion control for manual jog, incremental jog, and MDI operations nor of the interfacing of those operations with the Motion Control Program because those operations and their interfacings are not per se a part of the present invention. No specific description is presented on circular nor other forms of nonlinear interpolation for similar reasons.

Generally, the Motion Control Program is structured preferably to calculate the command position trajectory for only one axis with respect to its position at the starting point of the segment. In order to determine interpolatively the successive command position points in the successive sampling periods in each section of the segment, equations of the following form are employed:

v n +1 = v n + a DT

d n +1 = d n + v n +1 DT

where:

n = iteration index for the section

v n = average required speed during the nth sampling period

a = specified acceleration or deceleration rate d n = the required position at the end of the nth sampling period and the beginning of the (n+1)th sampling period relative to the start of the segment section. Alternately d n = the position reference during the nth sampling period.

Use of these equations is the sampled equivalent of implementing an equation of the form:

s = u t + 1/2 a DT 2 At the end of each segment section, the iterations are reinitialized. The magnitude of the initial axis positions d o and the specified acceleration or deceleration rate are identified in the Precalculation Program. For reasons already considered, the initial segment axis speeds v o may not be precalculated and in that case they are found by the value given by the iteration at the end of the previous section. In general, the initial axis speeds are found as follows:

v o = - 1/2 a DT 2 , for the first section of a path segment if starting from rest.

v o = v - 1/2 a DT 2 , for the first section of a path segment if not starting from rest.

v o = specified v, for the second section of a path segment where specified v is specified speed possibly modified.

v o = v + 1/2 a DT 2 , for the third section of a path segment.

It is preferred that the command position trajectories of the remaining axes with respect to their segment starting positions be determined from the calculated axis position by a single multiplication of the calculated position against the slope of the uncalculated axis relative to the calculated axis. Preferably the fastest axis is the calculated axis in order to keep the multiplication factor at a fractional value. In this manner, truncation errors will accumulate along the trajectory but they will not accumulate excessively insofar as the velocity resolution is concerned and they will not accumulate independently for each axis. Accordingly, accumulation of truncation errors contributes only very slightly to cutting velocity tolerance and it causes substantially no path error in excess of the desired resolution. Further, the end of each segment section is preferably determined by comparing the trajectory position with the section length precalculated in the Precalculation Program, and accumulated truncation errors accordingly have no effect on the starting points for deceleration, acceleration and path segment.

In order to facilitate the implementation of feedrate override it is preferred that the time increment used in the real time calculations be modified in proportion to any feedrate change. The finite time it takes to adjust the FEEDRATE OVERRIDE switch in FIG. 11F is relied upon to avoid objectionable discontinuities in the command position trajectory.

FEED HOLD may be implemented by inhibiting the incrementation of position along the command position trajectory or by setting the time increment equal to zero. Controlled deceleration is not necessary when implementing FEED HOLD since no change in direction is involved.

Before the first execution of the Motion Control Program, the following quantities are initialized:

j = 1 identifies segment 2 to be implemented d = 3 previous segment complete DT = 1/100 SEC DIS =0 OFRO = 1 previous feedrate override V = DV = D = 0

in FIG. 36, there is shown a flow chart for the Motion Control Program. As it starts for the sample period (n+1), the status of the Main Program is stored by block 930 in sufficient detail to permit its resumption exactly where it was interrupted once the Motion Control Program is executed. As illustrated schematically in FIG. 37 and as indicated by block 932, the axis feedback position counters 211 and 213 are read immediately to determine the change in position p n ,i for all axes during the sample period just completed. In FIG. 37, the sample period completed is designated as n and the sample period just being started is designated (n+1).

Block 934 next determines the absolute position of all axes at the end of the sample period n in accordance with the following equation:

P n ,i = P n -1 ,i + p n ,i

With respect to the accuracy of numerical operations, the input values of position and incremental position may be stored in double precision with a binary point of zero. The core image of absolute slide positions may be obtained by adding the single precision position feedback to the double precision core image of the previous position.

In block 936, it is determined whether the position loop should be closed for control. If not, block 938 generates a velocity command of zero for all motion axes and block 940 provides requests for input service in the manner described in connection with the Main Program. The Motion Control Program run is then terminated and the Main Program is restarted. For motion control to be instituted, flags must be set by the initialization procedure and by the existence of equality between the absolute axis position values and the reference axis position values on the first program run.

In order to minimize transport delay and thus promote system stability it is preferred that block 938 next generate the position error for each axis and a corresponding output velocity command with or without for application to the buffer and decode circuitry 502 in the external axis motion controls. The position error is determined by a subtraction operation by the following equation:

PE n +1 ,i = D n ,i - P n ,i

The quanity D n in the above equation is the command position for the beginning of the present sample period (n+1) as calculated in the previous sample period n that is, D n is the required absolute position at the end of the n th sampling period. In the first sample period calculation, D n ,i equals P n ,i. With respect to considerations of accuracy, the velocity output commands may be obtained by subtracting the double precision slide positions from the double precision command positions and, depending upon the application, multiplying the result by a gain factor.

Block 940 next determines whether the FEED HOLD pushbutton has been operated and if it has, the program execution immediately moves to the block 942 for action which will be described subsequently herein. If it has not been depressed, the program execution moves to block 944 where a representation of the I th (i.e., the fastest) axis velocity is determined by an addition operation as follows:

VDT n +1 ,I = VDT n ,I + ACCDTDT.

where:

VDT n ,I = required distance of I th axis to be

ACCDTDT = 2XMINDIS, which is precalculated

The above equation is derived from:

v n +1 ,I = v n ,I + DV

where:

DV = ACCDT

At this point in the description, it should be noted that the description of the Motion Control Program is presented in terms of linear motion only. Rotary motion calculations are identical except that angular quantities are employed.

After the fastest axis velocity is determined, block 946 determines by an addition operation the fastest axis accumulated segment command position for the beginning of the next sample period (n+2). The equation used is:

d n +1 ,I = d n ,I + VDT n +1 ,I

If the current segment section will not be completed by the implementation of the accumulated segment command position determined in block 946, block 948 advances the program to block 950 where a determination is made of the accumulated segment command positions for the other axes for the next sample period (n+2). In making the end of section determination, the block 948 compares the new accumulated segment command position with the section end distance D1, D2, or D3 defined by the Precalculation Program. As previously indicated, the required distances of the remaining axes are calculated by multiplying the fastest axis distance by the respective segment slopes in the equation d n +1 ,i = d n +1 ,I S i . All slopes are determined by dividing two double precision numbers and storing the single precision fractional result at a binary point of 15. Since the required position of each axis is related to the position of the fastest axis at each sampling instant, the error in the path reference does not increase due to cumulative rounding errors. Further, the end of the segment is found to the same tolerance as any other point since it is detected by a comparison of distances in the block 948.

If the section has a constant specified velocity, the section positions determined in the blocks 946 and 950 are equal from sampling period to sampling period. If the section has a specified constant acceleration rate or specified constant deceleration rate, the change in velocity reflected in the determinations of blocks 946 and 950 is the same amount from sample period to sample period.

If linear interpolation is being employed as determined in block 952, the absolute command positions for all the axes are then determined in block 954 for insertion into the position loop in the next sample period (n+2). The following equation is employed:

D n +1 ,i = DO i ± D n +1 ,i Thus, the absolute command positions for all axes are found by adding the accumulated segment command positions to the coordinates of the starting point of the segment. Next, block 956 determines the current feedrate override in accordance with the setting of the FEEDRATE OVERRIDE selector switch in FIG. 11F. In implementing the determination made in the block 956 the effective time period used in the calculations is made proportional to any change in the feedrate. In particular, in the block 944 the distance VDT is modified proportionally to feedrate override changes and ACCDTDT is modified in proportion to the square of the feedrate override. In the case of feed hold, changes in command position reference are inhibited by the direct program flow from the block 940 to the block 942. In the block 942, the CCI inputs are serviced for return to the Main Program.

In the case of circular or other nonlinear interpolation, block 953 employs an appropriate algorithm in determining the individual accumulated segment command positions for the next sample period. These values are then employed in the block 954 rather than the earlier calculated linear interpolation values. It is preferred that the branch to nonlinear interpolation formed by the block 952 be located subsequent to the linear interpolation blocks 944, 946 and 950 in order to synchronize the various motions.

When a particular section is about to be completed and the current segment will not be completed as indicated in block 949, block 951 provides initializing for the next section in the current segment. The following quantities are initialized as indicated:

D = DIS

k = k+1

DIS = D2, if acceleration just complete

ACCDTDT = 0, if acceleration just complete

VDT N +1 ,I = V20 j × DT × CFRO, if acceleration just complete

DIS = D3, if acceleration not just complete

ACCDTDT = DDT j × CFRO 2 , if acceleration not just complete

VDT N +1 ,I = VDT N ,I - ACCDTDT/2 , if acceleration not just complete where:

CFRO = current feedrate override value.

N = last iteration of previous section.

In cases where the segment will be completed as indicated by the block 949, block 953 provides initialization for the next segment. Thus, the following quantities are initialized as indicated:

j = j+1

k = 1

D = 0

DIS = D1

ACCDTDT = ADT j × CFRO 2

S i = TAN i ,j for each i

VDT M +1 ,I = VDT M ,I - ACCDTDT/2, if not starting from rest

VDT M +1 ,I = V10 j × DT × CFRO, if starting from rest

DO i = P i ,j -1 for each i

if Δ F i ,j > 0, set add operation for i in block 954

if Δ F i ,j < 0, set subtract operation for i in block 954.

F. STATEMENT OF PROGRAMS WRITTEN IN ASSEMBLY LANGUAGE

The following printout of a program listing substantially represents a program system written in assembly language and stored in a P-2000 core memory between 4K and 8K in size. With more judicious use of core areas and increased use of subroutining, it is expected that substantially the same subject matter and related additions can be programmed in less than 4K of core memory. In accordance with the broad aspects and many of the more particular aspects of the invention, a numerical contouring controller prototype employed the P-2000 to provide improved motion and nonmotion control for a Bullard vertical turret lathe like the lathe shown in FIG. 5.

The X and Z axis slides of the lathe were operated with contouring control. The rotational axis in the X-Y plane was operated at a speed selected from a range of differing speed values. External motion control channels like those described herein in FIGS. 4A-C were employed. Command data input and machine tool and operator interfacing were provided substantially in the manner described in connection with FIGS. 4A-C.

The program listing includes a main program similar to the Main Program described herein. The precalculation part of the main program has been routinely modified since its printout to provide the initializations necessary for the first and the last segment calculations on a path.

A sync program is included in the program listing and its execution rate and the read in rate of position feedback data were clocked in the prototype by a clock circuit like that described herein at the preferred 100 Hz sampling rate. In the automatic and single cycle modes, constant acceleration and deceleration rates are implemented by the sync program in accordance with precalculated section parameters from the main program.

The test for acceleration in the prototype sync program is simply based on whether deceleration was implemented in the previous segment and the more sophisticated test described herein is not employed. If deceleration was implemented, acceleration is implemented in the current segment and otherwise velocity is stepped to the new required value. The principal reason for the acceleration test simplification in the prototype was the limited time available for prototype development. It is excepted that the acceleration test described herein or a similar test can be implemented in the prototype controller with relatively small core requirements. The only known change in the sync program from the printout listing has been a minor one related to IN POSITION dead band.

Although the detailed prototype flow charting corresponding to the program printout does have the above indicated and other differences from the flow charting described herein, the prototype does essentially implement many of the features of the invention.

Most developed control software may be characterized with relatively minor faults known as bugs which sometimes take long periods of time to detect and/or diagnose. Ordinarily, the correction of such faults is within the skill of control programmers. The prototype program listing is known to contain some faults of this kind including the two already indicated, but all of these that have been detected have required only control programmer skill for correction in the prototype itself (i.e., the program system resident in the prototype is slightly more updated than the following printout of the program listing).

As an aid to the reader, the following notes are made relative to the format of the program listing:

a. The first line on each page contains the title of the program and the page number for that program.

b. The first column of four hexadecimal digits is a machine language statement of the memory address of the instruction which is described on that line.

c. The second column of four hexadecimal digits is a machine language statement of the contents of the memory address in purely hexadecimal notation.

d. Each row in the third column of five hexadecimal digits is separated into fields of two digits, one digit and two digits, and it expresses the contents of the memory address separated into the instruction format. The fields contain:

1. operation code - left two digits

2. addressing mode - middle single digit

3. operand address - right two digits

e. The fourth column of one letter, i.e., A, indicates that the first column addresses are absolute addresses.

f. The fifth column of four decimal digits is a sequential record number listing corresponding to the punched card or other program input records.

g. Each row in the sixth column of up to eight characters, letters or numerals contains the symbolic title assigned to the corresponding memory address by the programmer in the assembly language.

h. Each row in the seventh column of three letters contains the operation code assigned to the corresponding memory address by the programmer in the assembly language. The operation code includes a large number of directives to the assembler program and the various available machine instructions.

i. Each row in the eighth column of up to fifteen characters represents the operand address assigned to the corresponding memory location by the programmer in the assembly language.

j. The remaining columns contain comments made by the programmer to aid in understanding the program operation.




<- Previous Patent (STRAPPED-DOWN ATTITU...)   |   Next Patent (INCREMENTAL SLOPE ME...) ->