U.S. patent number 3,699,317 [Application Number 05/039,940] was granted by the patent office on 1972-10-17 for sampled data numerical contouring machine controller apparatus and method providable with on line capability for contour cornering deceleration and acceleration.
This patent grant is currently assigned to Westinghouse Electric Corporation. Invention is credited to Alan E. Middleditch.
| United States Patent |
3,699,317 |
| Middleditch |
October 17, 1972 |
SAMPLED DATA NUMERICAL CONTOURING MACHINE CONTROLLER APPARATUS AND
METHOD PROVIDABLE WITH ON LINE CAPABILITY FOR CONTOUR CORNERING
DECELERATION AND ACCELERATION
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.
|
Inventors: |
Middleditch; Alan E.
(Pittsburgh, PA) |
|
Assignee: |
Westinghouse Electric
Corporation (Pittsburgh, PA)
|
| Family
ID: |
21908191 |
| Appl.
No.: |
05/039,940 |
| Filed: |
May 22, 1970 |
| Current U.S.
Class: |
700/187; 318/570;
318/562 |
| Current CPC
Class: |
G05B
19/414 (20130101); G05B 2219/36368 (20130101); G05B
2219/50083 (20130101); G05B 2219/33088 (20130101); G05B
2219/41241 (20130101); G05B 2219/43183 (20130101); G05B
2219/41469 (20130101); G05B 2219/49164 (20130101); G05B
2219/34053 (20130101); G05B 2219/35286 (20130101); G05B
2219/41021 (20130101); G05B 2219/43006 (20130101); G05B
2219/41363 (20130101); Y02P 90/06 (20151101); G05B
2219/35436 (20130101); G05B 2219/34179 (20130101); G05B
2219/50019 (20130101); G05B 2219/43009 (20130101); G05B
2219/50193 (20130101); G05B 2219/43158 (20130101); G05B
2219/36366 (20130101); G05B 2219/34132 (20130101); G05B
2219/34153 (20130101); G05B 2219/35481 (20130101); G05B
2219/33268 (20130101); Y02P 90/02 (20151101); G05B
2219/37175 (20130101); G05B 2219/34156 (20130101); G05B
2219/41245 (20130101); G05B 2219/50048 (20130101); G05B
2219/41091 (20130101); G05B 2219/33098 (20130101) |
| Current International
Class: |
G05B
19/414 (20060101); G05b 015/02 (); G05b
021/02 () |
| Field of
Search: |
;340/172.5
;235/151.11 |
References Cited
[Referenced By]
U.S. Patent Documents
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.degree. 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.sub.1,
y.sub.1) and B(x.sub.2, y.sub.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.sub.y /V.sub.x = (y.sub.2 -y.sub.1)/(x.sub.2 -x.sub.1)(1.)
Further, as indicated by the actual cutting machine position
P.sub.M, zero path error requires the ratio of the axis following
errors to be:
E.sub.y /E.sub.x = V.sub.y /V.sub.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.sub.R to the actual cutting position P.sub.M. The point
P.sub. 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.sub.B between the succesive segments x.sub.A -x.sub.B and x.sub.B
-x.sub.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.sub.A -x.sub.B is increased through use
of reduce velocity between point x.sub.1 and x.sub.B. In addition
to the discontinuity at the corner x.sub.B, a discontinuity is
created at the stepped velocity reduction point x.sub.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.sub.A, x.sub.B and x.sub.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.sub.A -x.sub.A1, deceleration through ramped velocity
reduction to zero corner velocity over the segment leg x.sub.A2
-x.sub.B, and acceleration through ramped velocity increase from
zero corner velocity over the segment leg x.sub.B -x.sub.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.degree.-55.degree.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 " .times. 26" .times. 66" .times. high. The ambient
operating range of the controller 80 is 32.degree.F to 120.degree.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.degree.. 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.sup.4 's thumbwheel LM 10 Address MDI 10.sup.5 's thumbwheel
LM 11 Address MDI 10.sup.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.sup.0 5 2nd digit display selector
LP 10.sup.1 6 3rd digit display selector LP 10.sup.2 (least
significant) 7 4th digit display selector LP 10.sup.3 (least
significant) 8 5th digit display selector LP 10.sup.4 (least
significant) 9 6th digit display selector LP 10.sup.5 (least
significant) 10 7th digit display selector LP 10.sup.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 .fwdarw. 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
.noteq. 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
.noteq. 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.noteq. 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.noteq. 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.noteq.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.sup.0 R, 10.sup.1 R, 10.sup.2 R, 10.sup.3 R, 10.sup.4 R,
10.sup.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.sup.0 S and 10.sup.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 .mu. 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 .mu. 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 .sup.. A
B4C1 = C .sup.. B .sup.. A
B3C1 = D .sup.. C .sup.. B .sup.. A
B2C1 = E .sup.. D .sup.. C .sup.. B .sup.. A
B1C1 = F .sup.. E .sup.. D .sup.. C .sup.. B .sup.. 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 .mu. A727
and .mu. 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
.mu. A726 and .mu. 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 .mu.
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 .sup.. B .sup.. 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 .sup.. B .sup.. 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.sup.-.sup.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.sup.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 .times. 10.sup.5 inches to 2 .times. 10.sup.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
.DELTA.F.sub.i,j = command incremental movement (.DELTA. X or
.DELTA. Z in this case)
FRN = feedrate number
Output Data
D1.sub.j = distance to be traversed during acceleration
D2.sub.j = distance to be traversed from start of segment to point
where deceleration begins
D3.sub.j = length of segment
V10.sub.j = velocity at start of segment, if known without square
root calculation
V20.sub.j = velocity required at end of acceleration
DS = V.sub.I,j.sup.2 / 2ACC = stopping distance
ADT.sub.j = acceleration rate called for by precalculation
DDT.sub.j = deceleration rate called for by precalculation
TAN.sub.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.sub.j - D1.sub.j = distance to be traversed during constant
speed
D3.sub.j - D2.sub.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).sup.2
ACCDT = specified acceleration rate X sampling period
DS = 0 = stopping distance at end of previous segment
TAN.sub.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.sub.i,j.sub.+1 = .DELTA.F.sub.i,j.sub.+1
/.DELTA.F.sub.I,j.sub.+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.sub.i,j.sub.+1 = FRN.sub.j.sub.+1 .sup.. .DELTA. F.sub.i,j.sub.+1
.sup.. 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.sub.i,j.sub.+1 = V.sub.I,j.sub.+1 .sup.. TAN.sub.i,j.sub.+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.sub.i,j.sub.+1 - V.sub.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.sub.i,j - V.sub.i,j.sub.-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.sup.2 .sub.I,j.sub.-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.sub.j = 0
D2.sub.j = 0
D3.sub.j = .DELTA.F.sub.i
V10.sub.j = 0
V20.sub.j = V.sub.I,j or V20.sub.j = V.sub.MAX, if V20.sub.j
>V.sub.MAX
ADT.sub.j = ACCDT
DDT.sub.j = - ACCDT
A determination is next made in block 868 of the quantities
D1.sub.j, D2.sub.j and D3.sub.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.sub.j is
set equal to zero. If there is no deceleration, the quantity
D2.sub.j is set equal to D3.sub.j which equals the length of the j
segment. In addition, the velocity V20.sub.j required at the end of
the acceleration section is registered along with the stopping the
third section distance D3-D2. The quantities V20.sub.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.sub.I.sup.2.sub.,j /2 ACC
TEMP2 = DS .times. TAN.sub.I,j.sub.-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.sub.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.sub.j in accordance
with the equation:
D2.sub.j = TEMP4 - TEMP2
If deceleration to zero speed is not possible, block 884 changes
the deceleration rate in accordance with the following
equations:
D1.sub.j = 0
DDT.sub.j = - (TEMP1 .times. 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.sub.j and D2.sub.j in accordance with the following
equations:
D1.sub.j = TEMP3
D2.sub.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.sub.j and D2.sub.j in accordance with the following
equations:
D1.sub.j = TEMP1 - TEMP2
D2.sub.j = D1.sub.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.sub.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.sub.n.sub.+1 = v.sub.n + a DT
d.sub.n.sub.+1 = d.sub.n + v.sub.n.sub.+1 DT
where:
n = iteration index for the section
v.sub.n = average required speed during the nth sampling period
a = specified acceleration or deceleration rate d.sub.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.sub.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.sup.2 At the end of each segment section, the
iterations are reinitialized. The magnitude of the initial axis
positions d.sub.o and the specified acceleration or deceleration
rate are identified in the Precalculation Program. For reasons
already considered, the initial segment axis speeds v.sub.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.sub.o = - 1/2 a DT.sup.2, for the first section of a path segment
if starting from rest.
v.sub.o = v - 1/2 a DT.sup.2, for the first section of a path
segment if not starting from rest.
v.sub.o = specified v, for the second section of a path segment
where specified v is specified speed possibly modified.
v.sub.o = v + 1/2 a DT.sup.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.sub.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.sub.n,i = P.sub.n.sub.-1,i + p.sub.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.sub.n.sub.+1,i = D.sub.n,i - P.sub.n,i
The quanity D.sub.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.sub.n is the required
absolute position at the end of the n.sup.th sampling period. In
the first sample period calculation, D.sub.n,i equals P.sub.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.sup.th (i.e., the
fastest) axis velocity is determined by an addition operation as
follows:
VDT.sub.n.sub.+1,I = VDT.sub.n,I + ACCDTDT.
where:
VDT.sub.n,I = required distance of I.sup.th axis to be
ACCDTDT = 2XMINDIS, which is precalculated
The above equation is derived from:
v.sub.n.sub.+1,I = v.sub.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.sub.n.sub.+1,I = d.sub.n,I + VDT.sub.n.sub.+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.sub.n.sub.+1,i = d.sub.n.sub.+1,I S.sub.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.sub.n.sub.+1,i = DO.sub.i .+-. D.sub.n.sub.+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.sub.N.sub.+1,I = V20.sub.j .times. DT .times. CFRO, if
acceleration just complete
DIS = D3, if acceleration not just complete
ACCDTDT = DDT.sub.j .times. CFRO.sup.2, if acceleration not just
complete
VDT.sub.N.sub.+1,I = VDT.sub.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.sub.j .times. CFRO.sup.2
S.sub.i = TAN.sub.i,j for each i
VDT.sub.M.sub.+1,I = VDT.sub.M,I - ACCDTDT/2, if not starting from
rest
VDT.sub.M.sub.+1,I = V10.sub.j .times. DT .times. CFRO, if starting
from rest
DO.sub.i = P.sub.i,j.sub.-1 for each i
if .DELTA. F.sub.i,j > 0, set add operation for i in block
954
if .DELTA. F.sub.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.
* * * * *