System for adapting an automatic screw machine to achieve computer numeric control

A system for adapting existing conventional screw machines to be capable of computer numerical control operation. The system incorporates the use of a VersaCam device which replaces the turret cam of a single spindle screw machine. The VersaCam system monitors the motion of the screw machine camshaft and actuates the turret slide in synchronization with the camshaft. The VersaCam system also provides a means of specifying the desired turret slide trajectory for any given job.

BACKGROUND OF THE INVENTION 
The present invention relates generally to automatic screw machines, and 
more particularly, to a system for adapting screw machines into computer 
numeric control ("CNC") operated machines by incorporating a unique 
VersaCam device in place of a conventional hard cam. 
Conventional automatic screw machines have been known for some time. These 
machines have a high capability for producing a large number of identical 
parts. When small quantities are required, however, the time and expense 
to produce the special control cams necessary for operation of the 
machine, makes the use of a conventional automatic screw machine less 
desirable. 
One of the operational functions of the screw machine is the movement of 
the machine tool relative to the work piece, which is generally 
accomplished by longitudinal movement of a tool turret and lateral 
movement of two or more cross slides. At least two cross slides are 
usually provided on a conventional screw machine. The cross slides 
typically move lateral to the spindle of the machine. Other cross slides 
may be positioned at specified angles relative to the basic cross slides. 
Other functions important to the machine include the indexing of the tool 
turret, the feedout of the stock, and the control of the spindle speeds. 
In conventional single-spindle automatic screw machines, the timed 
sequence of the above functions is controlled mechanically through cams, 
trip dogs, trip levers and cam followers, which result in the engagement 
of the conventional machine mechanisms through clutches, gears, and 
similar devices at the proper time. Such an arrangement of mechanical 
devices is found in any conventional automatic screw machine. 
A cam made for one job can often be used on other jobs, although any change 
in machine speed or feed rate in any part of the sequence will result in 
slowing down the entire job. The alternative is to make a complete new set 
of cams specifically designed for the new job. For these and other known 
reasons it is desirable that some or all of the operations of the 
automatic screw machine be controlled by a numeric control system. With a 
numerical control system, the machine functions can be controlled through 
electrical signals by a software program, and the requirements of each job 
can be programmed into the apparatus. There are newly made automatic screw 
machines which have this numerical control capability. However, there are 
a vast number of existing automatic screw machines of the conventional 
variety which do not have this capability. Therefore, a system for 
retrofitting these conventional machines is needed. 
BRIEF SUMMARY OF THE INVENTION 
Accordingly, a system for retrofitting a conventional automatic screw 
machine to accept numerical control is provided by the present invention. 
The present invention may also be incorporated into newly manufactured 
screw machines that do not have CNC capability. A conventional automatic 
screw machine includes a plurality of mechanical timing means which 
operate through engaging means, such as clutches and gears, to connect a 
main driving means to various operating mechanisms of the machine. These 
mechanisms control the individual functions of the machine, for example, 
spindle speed, the indexing of the tool turret and the feeding of stock 
through the spindle. Also, the movement of the turret slide, towards and 
away from the work piece, and the movement of the cross slides are 
controlled through cam means usually including a cam and a camshaft, which 
are driven by drive shaft means which in turn is driven by the main 
driving means. 
The VersaCam system of the present invention is a versatile replacement for 
the turret cam of a single-spindle screw machine. The VersaCam can drive 
the cam follower so as to mimic any possible cam profile. The VersaCam is 
a CNC machine with a mechanical output that displaces the cam follower of 
a cam-logic machine. It comprises a mechanism to drive a cam follower, an 
actuator to power this mechanism, a sensor to determine the position of 
the mechanism, a control system which causes the mechanism to follow a 
desired trajectory (as a function of cam drive shaft position), a means 
for specifying desired trajectory, and a sensor to determine the position 
of the cam drive shaft. 
The VersaCam system of the present invention is not designed to replace the 
mechanical timing of conventional machines but rather will use and work 
with the mechanical timing found in conventional machines. Further, the 
VersaCam system does not require disconnecting the cross slides, but uses 
them as they are normally used in the operation of conventional machines. 
The VersaCam system depends on the position of the driving camshaft for 
its operation. The VersaCam system uses an electric drive and is designed 
to drive the turret without modification to the turret. 
In another embodiment of the present invention the screw machine turret 
slide may be actuated directly, rather than through the cam follower. A 
linear actuator may be provided, in direct contact with the turret slide, 
which actuator may be hydraulic, ball-screw based, or of other common 
hardware. 
The present invention will be explained in greater detail in the following 
brief description of the drawings and detailed description of preferred 
embodiments.

DESCRIPTION OF PREFERRED EMBODIMENT(S) 
Referring now to the drawings, and particularly FIG. 1, there is shown 
generally at reference numeral 10 a single-spindle automatic screw 
machine. The machine 10 is shown in a retrofitted condition, by the 
present invention, to be operable as a computer numeric control machine. 
The present invention has been termed a VersaCam and is identified by 
reference numeral 12. 
The VersaCam 12 is actually an electro-mechanical system with several 
functional subsystems as shown in FIG. 4. Also shown in FIG. 1, and 
described in greater detail hereinafter, is the operator interface unit 14 
of the present invention. 
Referring now to FIG. 2, an enlarged partial perspective view is shown of 
the VersaCam 12 in association with cam follower 16 of a machine 10. 
The VersaCam system of the present invention may be packaged in a single 
housing 18, which mounts to the cam drive shaft (in place of the hard cam) 
via rotary bearings. An adjustable restraining link 20 may position the 
housing in the desired orientation. The sensor 22 which measures the cam 
drive shaft 24 position may be a rotary optical incremental encoder, 
mounted to the VersaCam housing, and gear driven from the cam drive shaft. 
The mechanism which drives the cam follower 16 may be a linear wedge 26 
(the cam wedge) which is moved inward and outward by means of a ball-screw 
28. The bottom of the cam wedge may ride on rollers. The actuator 30 may 
be a conventional DC electric servo-motor with a pulse-width-modulated 
servo-amplifier. The sensor 32 which determines the position of the 
mechanism may be a rotary optical incremental encoder which is mounted to 
the back side of the servo-motor. In addition there may be a mechanical 
limit switch which is tripped when the cam wedge is in a certain position. 
This switch may be used to determine the revolution number of the optical 
encoder. The control system may be implemented on a microcontroller, 
microprocessor, and/or digital signal processor chip, depending on 
computability speed requirements. The desired trajectory profile and other 
parameters may be stored in local memory. The controller may incorporate a 
small keypad and an alpha-numeric display. 
Desired trajectories may be specified by means of a software package which 
preferably runs on personal computers. The operator may specify, in 
tabular format, the operations, positions, etc. for each tool in sequence. 
The software may then calculate the detailed trajectory necessary to 
implement the operations. The trajectory parameters may be downloaded into 
the VersaCam controller via a serial communications port. 
FIG. 3 illustrates in greater detail the physical mechanism of the 
conventional machine 10 and the VersaCam 12. Components shown in FIG. 3 
which are typically common to a conventional machine are a turret slide 
cushion 40, an adjusting screw 42 connected to the turret slide and a 
turret slide rack 44 which engages the teeth of the cam follower 16. A 
connecting rod 46, roll disk 48, and turret disk 50 are known to those of 
ordinary skill in the art. 
In the boxed, dashed zone 52 of FIG. 3 another embodiment of the present 
invention is shown. The boxed zone depicts a direct linear drive unit 54 
which may be used in place of the wedge drive unit 12. These two units 54, 
12 would not be used together but as alternatives to each other. The 
linear actuator 54 could be hydraulic, ball-screw based, or other similar 
configuration. 
The slider block, and the gear rack 44, to which the adjusting screw 42 is 
attached can slide with respect to the main turret slide 36. When used 
normally, the load path is as follows: 
the cam applies force to the lead lever 16; 
the lead lever 16 applies force to the turret slide (gear) rack 44; 
the gear rack applies force to the adjusting screw 42; 
the adjusting screw applies force to the slider block 45; 
the slider block applies force to the connecting rod 46; 
the connecting rod applies force to the turret change roll disk 48; and 
the turret change roll disk applies force to the turret slide 36. 
When the tool turret is indexed, the turret change roll disk rotates 
through one full revolution, and the connecting rod causes the relative 
position between the slider block and the turret slide to change. If the 
turret slide is fully retracted, this results in the cam follower lifting 
off of the cam. If the turret slide is not retracted, the cam follower 
will stay on the cam and the turret slide will retract. 
There are two approaches to using direct linear actuation. In the first of 
these, the linear actuator may push, but not be attached to, the slider 
block (via the adjusting screw in the drawing). This permits the 
mechanical tool-change retract mechanism to be used normally. The linear 
actuator cannot be attached to the slider block because, when the turret 
slide is fully retracted, the retract mechanism would fight the linear 
actuator, trying to pull it. The disadvantage of this approach is that the 
linear actuator, if based on a ball-screw, would require its own linear 
guideway system to support the ball-screw. 
The second approach is to disable the mechanical retract mechanism and to 
use the servomotor to retract the turret slide during tool changes. The 
linear actuator could then be attached directly to any point on the turret 
slide, and the turret slide guideway would also serve as the guideway for 
a ball-screw. This approach has two disadvantages. First, a 
reasonably-sized servomotor would be slower than the retract mechanism, 
therefore increasing part cycle times. (This apparently is a drawback of 
some retrofit systems currently on the market.) Second, the actual 
indexing of the tool turret would still be accomplished mechanically, and 
the relative timing between the mechanical (trip-dog) actuation and the 
software turret retractions would be critical. 
In order to achieve the functionality of a turret cam, the VersaCam system 
must monitor the motion of the screw-machine camshaft 24, and it must 
actuate the turret slide 36 in precise synchronization with the camshaft. 
In addition, since it is intended to replace all turret cams, the VersaCam 
system must provide a means of specifying the desired turret slide 
trajectory for any given job. 
The VersaCam system has many subsystems. In this document, a distinction is 
drawn between functional subsystems and physical subsystems. A functional 
subsystem is defined by its inputs, outputs, and the relationship between 
them. A physical subsystem is the particular hardware and software chosen 
to implement a functional subsystem(s). The functional subsystems and 
their interrelationships are of primary importance. 
There are many possible variations of physical subsystems which could be 
employed to produce the functionality of the VersaCam system. Furthermore, 
the physical subsystems of the VersaCam system do not necessarily 
correspond directly to its functional subsystems. Functional subsystems 
may share physical subsystems. As an example of a shared physical 
subsystem, software components of all of the functional subsystems may 
execute on the same microprocessor within the VersaCam controller. A 
less-obvious example is the attachment of the VersaCam mechanism to the 
camshaft: it provides a load path for the mechanism of the Turret Slide 
Actuation Subsystem, and, it provides a drive means for the position 
sensor of the Camshaft Monitoring Subsystem. 
As shown in FIG. 4, the VersaCam system may include the following five 
major functional subsystems: 
Turret Slide Trajectory Design Subsystem 80; 
Camshaft Monitoring Subsystem 82; 
Cam Simulator Subsystem 84; 
Turret Slide Actuation Subsystem 86; and an 
Operator Interface Subsystem 88. 
The Turret Slide Trajectory Design Subsystem 80 generates a time-based 
turret slide trajectory on the basis of operator input 90. 
The Camshaft Monitoring Subsystem 82 provides camshaft state 92 (position, 
velocity, and acceleration) to the Cam Simulator Subsystem. 
The Cam Simulator Subsystem 84 generates commanded turret slide states 94 
(position, velocity, and acceleration) in real time, based upon the 
nominal time-based trajectory and upon the actual camshaft state 92 
(position, velocity, and acceleration). It causes the turret slide to 
maintain precise synchronization with the camshaft-driven mechanisms, 
regardless of perturbations in camshaft velocity. 
The Turret Slide Actuation Subsystem 86 causes the turret slide to 
physically track its commanded state (position, velocity, and 
acceleration). The Operator Interface Subsystem 88 provides the operator 
with the appropriate control of, and feedback from, all subsystems of the 
VersaCam system. All of the above functional subsystems are described in 
detail hereinafter. 
The Turret Slide Trajectory Design Subsystem 80 is a software system which 
inputs high-level, operator-specified parameters 90 and produces a 
complete set of detailed trajectory parameters which describe the desired 
motion of the screw machine turret slide as a function of time. All time 
parameters are relative to the start of a machine cycle 95, and assume a 
constant machine cycle time (which implies a constant camshaft rotational 
velocity). 
The portion of the Turret Slide Trajectory Design Subsystem which permits 
the screw machine operator to make precise tool offset adjustments 
executes on the VersaCam controller. The remainder of Trajectory Design 
Subsystem may also execute on the VersaCam controller. Alternatively, or 
in addition, it may execute on a stand-alone computer such as an IBM PC. 
If the complete Trajectory Design Subsystem does not execute on the 
VersaCam controller, the computed trajectory parameters may be computed on 
a stand-alone computer and be transferred to the VersaCam controller prior 
to using the trajectory. If the software can execute on both platforms, 
then it is also possible to specify parameters on both platforms, either 
fully or partially. 
The generation of optimal trajectories for the VersaCam is manageable if 
tool motion is first considered independently of machine timing. In 
general, tool motion requirements are a function of the particular tool, 
the piece being fabricated, the stock being used, and the spindle speed. 
Machine timing should be designed for compatibility with the tool motion, 
not vice versa. Thus when a tool is cutting metal, or is not clear of the 
metal, the required tool motion dictates what the other mechanisms must or 
must not do. On the other hand, when the tool is clear of the workpiece, 
the other mechanisms may have priority (in which case the turret must 
simply stay clear of the action). 
A screw machine turret, cam, and tool holders have so many possible 
adjustments (degrees of freedom) that use of the machine (and the VersaCam 
in particular) will be greatly facilitated if some conventions are adopted 
about how the redundant adjustments should be employed. The following 
suggested conventions are believed to be consistent with standard screw 
machine practice, to be essentially optimal with respect to cycle time, 
and to provide a reasonably intuitive mapping between part geometry and 
machine set-up. 
In a departure from normal robot (and CNC machine tool) conventions, 
consider each tool to be independent (no explicit common tool or workpiece 
coordinate system). Let each tool's maximum penetration into the stock 
occur at the same (maximum) turret slide position, unless turret slide 
travel is explicitly "cut down" for a given tool by the setup man. ("Cut 
down" would be used for tools which are unusually long.) 
The above approach has the following implications: 
1. The "Stop" will be the shortest tool (and it implicitly establishes the 
workpiece datum, which is the "stopped" surface of the stock). Any tool 
shorter than the stop could not reach the stock, much less cut it. 
2. The length (radius installed in the tool turret) of any other tool, 
minus the length of the "stop", determines that tool's maximum penetration 
into the stock. (This should be both intuitive and familiar to setup men.) 
3. The VersaCam system does not need to know anything explicit about the 
workpiece dimensions (other that the depth of individual cuts), because 
they are determined by tool length adjustments (both mechanical and 
software) alone. 
4. The max excursion position of the turret can be established via software 
at run-time, because the VersaCam kinematics are embedded in the 
controller anyway. In general, however, the VersaCam wedge will be fully 
extended at the max excursion position; this is equivalent to the lobes of 
a hard cam extending to the maximum radius of the cam (which is the normal 
practice). The mechanical turret slide offset adjustment can be used 
exactly as it is with a hard cam. Turret slide offset adjustments 
(mechanical and/or software) would normally be used to adjust the 
workpiece reference surface (that surface which hits the stop) relative to 
tools mounted to cross-slides (such as the cut-off tool). 
5. The turret slide excursions are minimized (and cycle time optimized), 
because there is no turret slide motion required to compensate for 
unmatched tool lengths. 
The following general approach may be used to generate optimal cycles. 
1. Fully specify all metal cutting operations of the turret tools, the 
associated turn-around operations, and any other required turret slide 
motions. The computer can determine the total amount of time required for 
such actions. 
2. Specify tool changes as necessary between cutting actions. These can, in 
general, overlap turn-around operations. The computer can determine the 
time (if any) which must be added to the turn-around operations in order 
to allow for the tool change to complete. 
3. Estimate the elapsed times required for independent cross-slide motions 
(i.e. ones which cannot be performed simultaneously with turret tool 
cutting actions). These should be programmed as explicit dwells or as 
minimum turn-around durations (as described above for tool changes) in the 
turret slide trajectory. 
4. Select a machine cycle time which is slightly greater than the sum of 
all the above elapsed times. 
5. Select cross-slide cams. Determine how many 100ths of motion are needed 
for each independent cross-slide operation. If necessary, adjust the 
corresponding dwell times or turn-around durations in the turret slide 
trajectory. 
6. There will be, in general, some "slack" time (when the screw machine is 
doing nothing) at the beginning/end of the turret slide trajectory cycle. 
This is unavoidable, inasmuch as the available cycle times are discrete 
quantities, and the first one slower than the optimal time is the fastest 
cycle time that can be used. It is also desirable to have some amount of 
slack time, however, because it provides a safety margin for 
mis-estimation of cross-slide operation times, and permits the set-up man 
some flexibility in the installation of side-cams, etc. 
The computer now has all the information necessary to compute optimal 
turret trajectories. The setup man now simply installs side cams, trip 
dogs, etc., at the appropriate positions in order to complete the machine 
setup. 
As an alternative to the foregoing setup procedure for optimal cycles, the 
setup man can install the side cams, etc., where he sees fit, although he 
obviously cannot install them arbitrarily. In general, all he really has 
the freedom to do is to install them at a "later" position on the camshaft 
than is really necessary. Then, he can adjust turn-around durations and 
dwell times such that the computer agrees with his placement of the side 
cams, etc. The computer can then compute the entire (sub-optimal) turret 
slide trajectory. If the set-up man has used up more than the available 
amount of slack time, however, he will have to change his mechanical setup 
or else use a slower cycle time. 
A complete turret slide trajectory is made up of multiple motion "segments" 
which together span an entire machine cycle. The boundary conditions of 
each segment are constrained such that the turret slide position and 
velocity are continuous (no step changes) over the entire trajectory. Note 
that a complete turret slide trajectory is cyclic, thus the "first" 
segment is actually the successor of the "last" segment, and the 
constraints on segment boundary conditions apply to this pair of segments 
also. 
We have chosen to represent a trajectory segment by the coefficients of the 
polynomial X=P(t), where X 96 represents turret position and t 98 
represents the elapsed time since the start of the machine cycle, and by 
the initial and final values of time for the segment. The final value of 
time for a given segment is equivalent to the initial value of time for 
the following segment. Equations for turret velocity and acceleration are 
obtained by differentiating the polynomial which describes each segment. 
2nd-order polynomials may be used to represent trajectory segments; this 
represents a good tradeoff between complexity, smoothness, and overall 
performance. Thus the turret slide acceleration is constant for the 
duration of a given segment. However, if it were desired to reduce the 
trajectory "jerk" (rate of change of acceleration), this could be 
accomplished by fitting a higher order polynomial to each trajectory 
segment while imposing the additional boundary value condition that 
acceleration be continuous across segment boundaries. Even trajectory 
"jounce" (rate of change of jerk) can be limited in this manner, if 
desired. 
An "operation" specifies a set of one or more trajectory segments. Given 
the set of operator-input parameters for a given operation, software 
algorithms automatically compute all of the segment parameters for the 
segments within that operation. 
Five types of operations are: Feed-In, Dwell, Feed-Out, Turn-Around, and 
Position. Note that the above operations cannot be used in an arbitrary 
sequence. Some of the operations fully or partially specify their own 
boundary conditions, and some inherit some or all of their boundary 
conditions from adjacent operations. The boundary condition constraints 
are satisfied when the operations are used in their customary and intended 
sequences; otherwise, the system signals the operator that the trajectory 
is "incomplete". 
The Feed-In operation is used for normal cutting operations in which the 
turret tooling is advancing into the feedstock. The Feed-In operation 
preferably uses the following operator-specified parameters: 
Initial position (millimeters or inches); 
Feed-in rate (mm/spindle-rev or in/spindle-rev); and 
Final Position (millimeters or inches). 
The initial velocity is equal to the feed rate, and the final velocity is 
zero. Note that the initial and final position can be specified directly, 
or one can be specified directly and the other specified indirectly via a 
feed distance, or "throw". 
The Dwell operation preferably causes the turret slide to remain in a given 
position for a specific number of spindle revolutions. It is used 
immediately following a Feed-In operation. The Dwell operation uses the 
following operator-specified parameter: Duration (spindle revolutions). 
The dwell position is equal to the final position of the operation which 
precedes it. The turret-slide velocity is zero throughout a Dwell 
operation. 
The Feed-Out operation is used for cutting operations in which the turret 
tooling is retracting out of the feedstock, such as when a tap is being 
unscrewed. The feed-out operation preferably has the following 
operator-specified parameters: 
Feed-out rate (mm/spindle-rev or in/spindle-rev); and 
Final Position (millimeters or inches). 
The initial position is equal to the final position of the operation which 
precedes it. The initial velocity is zero, and the final velocity is equal 
to the feed-out rate. Note that the final position can be specified 
directly, or it can be specified indirectly via a feed distance, or 
"throw". 
The Turn-Around operation computes the time-optimal trajectory which 
connects adjacent operations. The Turn-Around operation automatically 
provides the rapid out/in motions normally employed to get tools into 
cutting position in minimum time. The turn-around operation preferably has 
the following (optional) operator-specified parameters: 
Minimum "clear" position (millimeters or inches); and 
Minimum "clear" period (seconds, or hundredths of a cycle) 
The initial position and velocity are equal to the final position and 
velocity of the operation which precedes it. The final position and 
velocity are equal to the initial position and velocity of the operation 
which succeeds it. 
The optional operator-specified parameters provide a means by which the 
operator can allow adequate time and clearance for tool index operations, 
cross-slide operations, etc. The minimum clear position is specified such 
that, when the turret slide is retracted beyond the minimum clear 
position, there is no possibility of interference between the turret 
tooling and any other devices on the screw machine. The clear period is 
the period for which the turret slide is retracted to or beyond the 
minimum clear position. The default for the clear position is the minimum 
possible retract distance, and the default for the clear period is zero. 
The Position operation is used to precisely position the turret slide in a 
specified location for a specified duration. It differs from the Dwell 
operation in two ways: it includes a pre-defined approach trajectory to 
the specified position (this trajectory maximizes the positioning 
accuracy), and its duration is not specified in terms of spindle 
revolutions. One use of the Position operation is to position the turret 
slide for a feed-stop operation. 
The Position operation preferably uses the following operator-specified 
parameters: 
Final Position (millimeters or inches); and 
Duration (seconds, or hundredths of a machine cycle) 
The initial position is a function of the Final Position and of the 
approach trajectory. The final velocity is zero. The initial velocity is a 
function of the approach trajectory. 
The VersaCam trajectory design 80 provides a benefit which is not available 
using a conventional turret cam. Using a hard cam, there is normally no 
efficient way to independently and precisely adjust the extension of the 
tools in the tool turret. The normal practice is to loosen the tool 
holders and tap the tools with a brass hammer, using trial and error to 
get within the part tolerance. The VersaCam trajectory design, however, 
allows the operator to enter a precise tool offset adjustment for a given 
tool into the VersaCam controller, using the controller's numeric keypad. 
The trajectory design Subsystem 80 then makes the appropriate offset 
adjustment to the turret slide trajectory during the period of time in 
which the given tool is being used. 
The Camshaft Monitoring Subsystem 82 provides camshaft state 92 (position, 
velocity, and acceleration) information to the other VersaCam functional 
subsystems. In general, all camshaft state variables can be sensed, or 
else a subset of them can be sensed and the remainder of them estimated by 
a state observer. To minimize the cost of the sensor system, and because 
there is mechanical (rotational) noise on the camshaft that is not 
desirable, it is preferred to directly measure the position of the 
camshaft, and to use state observer/filter techniques to obtain accurate 
estimates of camshaft position, velocity, and acceleration. 
The camshaft monitoring system thus preferably comprises two primary 
subsystems: the Camshaft Position Sensor (including its electronic 
interface), and Camshaft Observer Subsystem. 
The Camshaft Position Sensor is a position transducer which measures the 
angle of the turret camshaft relative to the machine frame. An incremental 
optical encoder, with a 1024 counts per revolution quadrature output and 
an index channel, may be used. The encoder may be driven in a 1:1 ratio by 
the camshaft relative to the machine frame. Associated with the encoder is 
an electronic circuit which receives the quadrature signal and converts it 
to a binary count of 4096 counts per revolution. This circuit interfaces 
to a microprocessor in the VersaCam controller. The electrical power to 
the encoder, and to its associated electronics, may be supplied by a 
battery in the event of an AC power failure; this prevents the absolute 
position information from being lost (which would require a 
re-registration procedure to be performed). 
The Camshaft Observer Subsystem is a software system which processes the 
signal from the Camshaft Position Sensor, produces a better estimate of 
camshaft position than can be obtained by the sensor alone, and provides 
velocity and acceleration information as well. The raw sensor output has 
several deficiencies. 1) It does not provide the velocity or the 
acceleration of the camshaft. 2) It contains discretization noise. 3) The 
camshaft is subject to backlash to which the turret slide should not 
respond to (but which the sensor measures). 
The camshaft of a screw machine is driven with respect to the spindle via a 
gear train which exhibits backlash. At certain times, cross-slide return 
springs may, via the cross-slide cams, suddenly back-drive the camshaft 
through this backlash region. In such situations the spindle does not 
undergo any acceleration, thus we do not wish the turret slide to undergo 
any acceleration. If the turret slide were to track the transformed 
camshaft acceleration, it could result in a tool being accelerated rapidly 
into the stock during a cutting operation, possibly breaking a tool or 
ruining the part being machined. 
The Camshaft Observer Subsystem may include a P-I filter which produces 
pseudo-continuous (as opposed to discretized) acceleration, velocity, and 
position outputs. The error between the observed position and the measured 
position is used to force the observed position to track the measured 
position. The output of the P-I filter is input to a 2nd-order, 
state-variable, low-pass filter, which further reduces discretization 
noise. 
In addition to reducing discretization noise and providing acceleration and 
velocity outputs, the Camshaft Observer Subsystem can detect the position 
errors characteristic of the camshaft backlash phenomenon. To minimize the 
effect of this phenomenon on the filter output, the gains of both filter 
stages are changed when backlash is detected. This gain-scheduling 
algorithm increases the time constant of both filter stages for the 
duration of the backlash phenomenon, resulting in the observed camshaft 
position, velocity, and acceleration being largely unaffected by the 
backlash phenomenon. 
The camshaft serves as a mechanical transmission which powers or activates 
various mechanisms on the screw machine, causing one part to be made 
during each full revolution of the camshaft. For our purposes, the 
important attribute of the camshaft is that it controls the machine, it 
establishes the relationship between the operations of the various 
devices, and it controls the rate at which the various operations 
progress. Thus we use the term "machine cycle,", or simply "cycle", 
synonymously with "one full revolution of the camshaft." 
The time-based trajectory which is generated by the Turret Slide Trajectory 
Design Subsystem is computed assuming that the camshaft speed is a known, 
constant value. In general, however, this is not precisely true 
(especially when the machine is starting and stopping). Since the turret 
slide must be precisely synchronized with the other mechanisms that are 
driven from the camshaft, the turret slide trajectory should be made to 
conform to the actual camshaft speed. Because a physical cam does 
precisely synchronize its output drive with the camshaft, regardless of 
camshaft speed, the subsystem which performs this synchronization function 
is termed the Cam Simulator Subsystem 84. It preferably has two primary 
components: 
Time-Base to Cycle-Base Conversion Subsystem; and 
Cycle-Base to Time-Base Conversion Subsystem. 
Since the camshaft angle, rather than time, is the independent variable 
that controls turret slide position, velocity, etc., the first thing done 
by the Cam Simulator Subsystem 84 is to convert time-based trajectory 
parameters to cycle-based parameters. This can be done to each of the 
segment parameters, the complete set of which completely describes the 
entire trajectory. In this manner, the entire trajectory can be converted 
off-line, prior to actual trajectory execution. Alternatively, individual 
turret-slide states (position, velocity, acceleration) can be converted as 
they are used during trajectory execution. 
Trajectory parameters with units of time (seconds) are converted to units 
of "cycles" by dividing by the nominal machine-cycle period 
(seconds/cycle). Parameters with units of position (meters) do not require 
conversion. Parameters with units of velocity (meters/second) are 
converted to units of (meters/cycle) by multiplying by the nominal cycle 
period (seconds/cycle). Parameters with units of acceleration 
(meters/second.sup.2) are converted to units of (meters/cycle.sup.2) by 
multiplying by the square of the nominal cycle period (seconds/cycle). 
During trajectory execution, the actual camshaft state 92 (position in 
cycles, velocity in cycles/second, and acceleration in 
cycles/second.sup.2) is used, together with the desired cycle-based 
turret-slide state 100 (position in meters, velocity in meters/cycle, and 
acceleration in meters/cycle.sup.2), to determine the desired time-based 
turret-slide state (position in meters, velocity in meters/second, and 
acceleration in meters/second.sup.2). The turret-slide position requires 
no conversion. To obtain the corrected turret velocity (meters/second), 
the cycle-based turret velocity (meters/cycle) is multiplied by the actual 
camshaft velocity (cycles/second). To obtain the corrected turret 
acceleration (meters/second.sup.2), the camshaft velocity and acceleration 
are combined with the cycle-based turret velocity and acceleration as 
follows: 
(meters/second.sup.2)=(meters/cycle.sup.2)*(cycles/second).sup.2 
+(meters/cycle)*(cycles/second.sup.2) 
The Turret Slide Actuation Subsystem 86 provides a means by which the screw 
machine turret slide can be made to move in the desired manner. It 
preferably has two major functional subsystems: 
Controlled Actuator; and 
Transmission System. 
The Controlled Actuator Subsystem is a motor system which can follow motion 
commands to the appropriate level of accuracy. The Transmission System 
connects the Controlled Actuator to the screw machine turret slide 
mechanically, and also provides software functions which describe the 
relationship between the Controlled Actuator and the turret slide. These 
functional subsystems are described in greater detail hereinafter. 
The Controlled Actuator Subsystem preferably includes all of the functional 
subsystems necessary to provide a mechanical motion output which tracks a 
commanded motion input. These functional subsystems include: 
Motor; 
Motor Feedback System; 
Motor Amplifier; and 
Feedback Control Law. 
A brush-type electric DC servomotor may be chosen for the VersaCam system. 
Alternative motor types which could be used include brushless DC 
servomotors, electric stepper motors, and hydraulic motors. The particular 
motor selected can operate at the voltage levels obtained by simply 
rectifying and filtering, for example, the 205 VAC, 3-phase power used to 
operate a typical conventional screw machine; this eliminates the need for 
a bulky and expensive power transformer or for separate electrical service 
to the VersaCam system. 
In controlling a DC servomotor, useful feedback parameters include: motor 
position, motor velocity, motor acceleration, motor current, and motor 
output torque. However, knowing only the motor position and the motor 
current, it is possible to obtain very good estimates of motor velocity, 
motor acceleration, and motor output torque which permit near-optimal 
control of the motor. Thus in order to minimize sensor costs, it is 
advantageous to directly sense only motor position and motor current. 
The motor state feedback system preferably includes the following primary 
functional subsystems: 
Motor Position Feedback Subsystem; 
Motor Current Feedback Subsystem; and 
Motor State Observer Subsystem. 
A motor position sensor may be mounted directly to the motor shaft. One 
preferred sensor is an incremental optical encoder, with a 1024 counts per 
revolution quadrature output and an index channel. Associated with the 
encoder is an electronic circuit which inputs the quadrature signal and 
converts it to a binary count of 4096 counts per revolution. This circuit 
interfaces to a microprocessor in the VersaCam controller. The electrical 
power to the encoder, and to its associated electronics, may be supplied 
by a battery in the event of an AC power failure; this prevents the 
absolute position information from being lost (which would require a 
re-registration procedure to be performed). 
Because the particular design selected for the Turret Slide Actuation 
Subsystem requires that the motor make multiple revolutions in order to 
move the turret slide through its full range of motion, the 
once-per-revolution index pulse provided by the motor encoder does not 
establish an absolute motor position. For this reason, the Transmission 
System provides a "home position" output when the mechanical transmission 
is at a particular location. This output enables the Motor Feedback 
Subsystem to determine the absolute revolution number of the motor. A 
software component of the Motor Feedback Subsystem converts the encoder 
count information, the encoder index pulse information, and the 
Transmission System "home position" information into an absolute motor 
shaft angle. 
Motor current may be sensed by connecting a low-ohmage resistor in series 
with the motor, and then measuring the voltage drop across this resistor. 
Alternatively, devices may be used which measure the magnitude of the 
motor current by measuring the strength of the magnetic field produced by 
the current. 
The basis of the Motor State Observer Subsystem is a dynamic motor 
simulation, which is based on a mathematical model of the motor. The 
inputs to the motor simulation may be the motor current and the motor 
shaft (output) torque. The outputs of the simulation may be motor 
acceleration, velocity, and position. 
Since the current of the physical motor is measured and is thus known, it 
is used as the current input for the simulated motor. The motor shaft 
torque is not directly known, and is the remaining input to the simulated 
motor through which the simulated motor can be controlled. 
The position output of the simulated motor is compared to the measured 
position of the physical motor. The resulting error is used to generate an 
observed motor shaft torque, via a feedback control law, which is used as 
the torque input to the simulated motor. The feedback control law forces 
the position of the simulated motor to track the position of the physical 
motor. Thus, within the limitations of the accuracy of the mathematical 
motor model and the bandwidth of the observer feedback loop, the observer 
acceleration, velocity, and motor shaft torque are also equal to those of 
the physical motor. 
The function of a motor amplifier is to produce a high-power output, which 
can directly power a motor, as specified by a low-power control input. For 
the brush-type DC servomotor used in the VersaCam system, the basic 
amplifier should produce a short-term average voltage across the motor 
terminals which is specified by a low-power control input. 
A four-quadrant PWM (Pulse-Width Modulation) type amplifier may be used on 
the basis of its good energy efficiency, low heat generation, and compact 
size. A PWM amplifier rapidly switches the voltage across the motor 
terminals between the full supply voltage and zero volts. The average 
voltage is controlled by varying the ratio of the time that the two 
different voltages are applied. 
The preferred amplifier design operates off of a DC voltage supply of 
approximately 300 V. This voltage supply is normally provided by 
rectifying and filtering the 205 VAC 3-phase power used to operate the 
screw machine. 
In the event of a power failure, the screw machine will not stop 
immediately (unless it is declutched) but will instead coast to a stop. In 
order to prevent damage to tooling during this coastdown period, it is 
desirable for the VersaCam Turret Actuation Subsystem to continue 
actuating the turret slide in synchronization with the camshaft. This can 
be made possible by connecting a battery system (preferably 300 V) to the 
amplifier power inputs. This battery system need only supply the amplifier 
with current during the brief coastdown period. It can be recharged 
automatically when AC power is recovered. 
The Actuated Motor is caused to track its commanded position, velocity, and 
acceleration by means of a two-stage feedback control law. The output of 
the feedback control law is a motor voltage command to the motor 
amplifier. The inputs to the feedback control law are the outputs of the 
Motor State Observer Subsystem (observed motor position, velocity, 
acceleration, and output torque), and the commanded motor state. The two 
stages of the control law are: 
Motor Acceleration Control Law; and 
Motor Current Control Law. 
The first stage of the feedback control law is a simple state-space control 
law that is used to calculate the desired acceleration of the motor, given 
the commanded and observed motor state variables. Then, using a standard 
mathematical model of the motor, the motor current required to produce the 
desired motor acceleration is computed algebraically. This desired motor 
current is used as the input to the Motor Current Control Law. 
The Motor Current Control Law is used to force the actual motor current to 
track the desired motor current. The inputs to this control law are the 
desired motor current and the measured motor current, the output is the 
motor voltage command to the motor amplifier. Because of the high 
bandwidth requirements of the current control system, the current control 
law is preferably implemented using electronic hardware rather than 
software. 
The Transmission System provides the interface, both mechanical and 
computational, between the Controlled Actuator and the screw machine 
turret slide. It comprises three primary functional subsystems: 
Transmission Mechanism; 
Kinematics Mathematical Relationships; and 
Transmission Position Feedback. 
The primary function of the Transmission Mechanism is to provide a 
mechanical transmission between the Controlled Actuator and the 
screw-machine turret slide. One of the simplest possible mechanism designs 
would be a direct ball-screw drive between the motor and the turret slide. 
However, any such direct linear drive system would require extensive 
modifications to the screw machine in order to provide for the mechanical 
attachment of the drive system. Thus the turret slide may preferably be 
actuated via the stock turret-cam follower; that is, the stock turret-cam 
follower is used as a component of the VersaCam Transmission Mechanism. 
Having made the decision to actuate the turret slide via the cam follower, 
there is a multitude of possible mechanisms which could successfully 
interface between the Controlled Actuator and the cam follower. Examples 
of such mechanisms include: 
Spiral-shaped rotary cam actuation; 
Wedge-shaped linear cam actuation; and 
Pinned lever actuation. 
The prototype Transmission Mechanism makes use of wedge-shaped linear cam 
actuation. This mechanism uses a ball-screw to convert the rotary motion 
of the Controlled Actuator to linear motion of a wedge-shaped linear cam. 
When the linear cam is fully retracted, the turret slide return spring 
pushes the turret slide, and thus turret-cam follower, to its minimum 
position. As the linear cam is extended, its wedge shape pushes the cam 
follower, and thus the turret slide, toward its maximum position. 
A pinned-lever actuation system is another attractive mechanism 
alternative. This mechanism makes use of a lever on which the roller of 
the cam follower rides. The lever is pinned at a fixed position on one 
side of the roller. On the other side of the roller, a ball-screw (which 
is at approximately a right angle to the lever) may be used to rotate the 
lever through an appropriate angle about the pinned joint. As a result of 
the rotation of the lever, the cam follower is moved through its required 
range of motion. 
Pinned-lever actuation has several advantages over wedge-shaped linear cam 
actuation. First, it makes use of rotary joints only, thus it does not 
require the expense of a linear guideway. Second, it is easier to seal the 
mechanism from oil, metal chips, etc. Third, (for the Brown & Sharpe 2G 
screw machine, at least) it can be packaged into a volume which is less 
likely to inconvenience people working in the vicinity of the machine. 
Rotary cam actuation is, of the various alternatives discussed herein, the 
mechanism most similar to the normal cam actuation. Using this scheme, a 
cam, which is preferably of a spiral shape is servo-actuated so as to 
engage the cam follower. Thus any desired turret slide position can be 
achieved by rotating the cam to a corresponding angle. 
The function of the Kinematics Mathematical Relationships is to compute the 
relationships between the position, velocity, and acceleration of the 
screw machine turret and the position, velocity, and acceleration of the 
Controlled Actuator. Obviously, the mathematical description is dependent 
upon the type of mechanism. 
For a very simple mechanical transmission such as a direct ball-screw 
drive, the Mathematical Relationships are straightforward: the motor, 
position, velocity, or acceleration is multiplied by a constant in order 
to obtain the turret slide position, velocity, or acceleration. 
If the turret cam is actuated via the cam-follower, using a non-linear 
mechanism, the kinematic equations of the VersaCam Transmission Mechanism 
are quite complex. However, polynomial curve-fitting techniques may be 
used in order to make the Kinematics Mathematical equations relatively 
simple. Only the polynomial approximations to the kinematic equations are 
embedded in the VersaCam system, thus the kinematic equations can be 
evaluated quickly by a microprocessor in the VersaCam controller. 
To obtain polynomial approximations to the kinematic equations, the exact 
kinematic equation relating turret slide position to Controlled Actuator 
position is first derived. That equation is then used to generate a set of 
actuator position, turret slide position! points which cover the entire 
range of motion of the system. That set of points is input into polynomial 
curve-fitting software which generates sets of polynomial coefficients for 
the equations X=P1(Phi) and Phi=P2(X) (where X represents turret slide 
position and Phi represents Controlled Actuator shaft angle). The order of 
polynomials P1 and P2 are chosen to be as small as possible, yet still 
maintain the maximum curve-fit error to within a specified tolerance. 
The equations relating turret velocity and acceleration with actuator 
velocity and acceleration can be obtained by differentiating the kinematic 
equations relating the positions of the turret slide and actuator. Now 
having accurate polynomial representations of the positional 
relationships, one may differentiate the polynomial approximations, rather 
than laboriously differentiating the exact equations. 
Because the VersaCam trajectory is initially specified in terms of turret 
slide positions, velocities, and accelerations, the Kinematics 
Mathematical Relationships Subsystem is used to compute the corresponding 
Controlled Actuator positions, velocities, and accelerations (which are 
then used as inputs to the Controlled Actuator). Similarly, when the 
actual turret slide position is displayed to the operator, the kinematics 
software is used to calculate the turret slide position based upon the 
measured motor position. 
To provide a means by which the VersaCam controller can determine the 
absolute position of the VersaCam motor (the motor encoder itself cannot 
indicate the motor revolution number), a position-sensing device has been 
incorporated into the Transmission System. The device selected may be a 
mechanical limit switch, configured so as to be "on" when the motor has 
rotated beyond a given point, and so as to be "off" if the motor has not 
rotated beyond that point. Thus information is provided which specifies 
the direction of motor rotation required in order to reach the trip point. 
The trip point is preferably chosen to lie approximately midway between 
two adjacent motor index pulses. Thus, after finding the trip point, the 
motor can proceed to rotate to an adjacent index pulse, which then 
provides a precise absolute motor position. 
The Operator Interface Subsystem 88 provides the operator with the 
appropriate control over, and feedback from, preferably all functional 
subsystems of the VersaCam system. In general, each functional subsystem 
may require input from the operator, and it may have to prompt the 
operator in order to obtain such input. In addition, the operator will 
require feedback from various VersaCam functional subsystems in order to 
verify that they are programmed as desired, and that they are operating 
properly. 
If provided a large number of independent operator I/O devices for the 
VersaCam system, one could dedicate one input device and one display 
device to each functional subsystem. The I/O software for each functional 
subsystem would then be straightforward: it could format the output 
display, and it could write to the display at any time. 
As a practical matter, one embodiment of the VersaCam system operates with 
one primary display device and one primary input device at a time 
(although there may also be some secondary devices such as control 
switches and indicator lights). The primary input device may be a keypad 
or a computer keyboard (although it could easily be a touchscreen or other 
such device). The primary display may be a device that supports 
alpha-numeric display, such as a small alpha-numeric LCD display or a 
full-size computer monitor. Thus the primary input device and the primary 
display may be shared by many functional subsystems. 
The complexity of sharing the operator I/O devices can be separated from 
the VersaCam functional subsystems by using the concept of "virtual" I/O 
devices. Although restricted to a single pair of physical I/O devices, one 
can implement as many virtual I/O devices as desired by sharing the 
physical devices in a well-defined way, such as by separating the display 
screen into different regions or by allowing only one virtual I/O device 
at a time to use the physical I/O devices. Regardless of how the virtual 
devices are implemented, one can provide dedicated virtual I/O devices to 
all of the functional subsystems. 
The scheme chosen to provide virtual I/O device support is a "windowing" 
system. In general, each virtual display can be shown in a "window" on the 
physical display device. (A given window may or may not be visible on the 
screen at any given time.) Operator input is then routed to the functional 
subsystem which "owns" the window in which the visible cursor resides 
(although certain keys may be dedicated to specific functional 
subsystems). The software subsystem which implements the windowing 
capability can support different types of display and input devices 
without requiring changes to the functional subsystem software. 
On a large display screen, it is possible for many or all windows to be 
shown on the screen simultaneously. On a small screen, it may be possible 
to show only the active (input) window. A relatively large window may 
support menu-driven operation. Alternatively, a single-cell window may be 
created for each operator input parameter, resulting in a user interface 
very similar to a spreadsheet. 
To illustrate the flexibility afforded by this approach, consider the 
following example. It is expected that the Turret Slide Trajectory Design 
Subsystem 80 will operate on both the VersaCam controller, using a keypad 
and a small (4 by 20 characters) alphanumeric display, and on a personal 
computer using a standard keyboard and a full-size display. However, the 
majority of the trajectory design software can run on either platform with 
no modification whatsoever. The functional subsystem I/O software can be 
left unchanged using only a 4.times.20 section of the PC screen for the 
display; only the windowing support software need be changed to support 
the different hardware platforms. Even if it is desired to make optimal 
use of each type of display, the functional subsystem I/O software can 
query the windowing support software as to the size of available windows 
and then implement the optimal interface for that window size, with there 
still being no modifications required to the remainder of the functional 
subsystem software.