Abstract:
A mechanical element is moved from a first position to a second position along a vector path. Individual step controllers provide drive along each axis at respective velocities for vector movement. The velocity along the greatest distance axis is the master against which acceleration and velocity of the other axes is measured. Optional closed-loop operation insures synchronism of movement along the different axes.

Description:
The present invention relates to an apparatus and method for locating an element at any predetermined position as defined by multiple axes and, more particularly, to such apparatus and method for moving the element from one position to another along a vector path. 
     BACKGROUND 
     In the past, the matter of moving a mechanical element from one position to another where the two positions are defined by, say, a set of orthogonal units (x, y, z) has been accomplished serially by first moving to the new x location, then to the new y and finally to the new z. This kind of motion control was practically achieved through the use of servomotors and generators which were accompanied by well-known deficiencies and inaccuracies. Later, more acccuracy was obtained by using so-called step motors which provide a highly precise angular shaft output on being electrically pulsed. 
     In all known prior motion control apparatus, change in position was not accomplished vectorially, but rather along one axis at a time, namely x1-x2, y1-y2 and z1-z2. This meant that the time allotted for any change in position of a mechanical element was of necessity the summation of the individual times required for moving required amounts on each of the control axes which could be prohibitive. 
     SUMMARY OF THE PRESENT INVENTION 
     In the practice of the method of this invention, apparatus is provided for moving a mechanical element from an initial position to a predetermined second position, each position being defined by a set of axes and in which the movement is along a vector joining the two positions. The basic drive for each of the axes is a servo step controller or step motor, which for the situation of a two-axis controller includes two step motors driving the element along the first and second axes, respectively. The requirement of distance or change and direction for each axis is determined with the greatest distance axis being ascribed the &#34;master&#34; to which acceleration and velocity will be related in determining movements along the other axes. 
     A master division counter corresponding to the maximum distance produces a maximum output frequency (e.g., 40 kHz) for a specific energizing frequency. Counters for the other axes are then ascribed frequencies in accordance with the ratio of the respective axes distance to be traveled to the master distance. That is, the master counter will have the highest frequency and the other counters will be driven by frequencies that are correspondingly less. 
     Drive of the servo step controllers for the different axes simultaneously by the corresponding counters causes them to stay in synchronism to within a high degree of accuracy. All of the motion parameters are obtained by programming a microcomputer. That is, the distance and direction for each of the axes, acceleration and velocity for the longest moving axis are all obtained in this way. 
     In order to obtain precise synchronization, relative position feedback information is obtained which provides close-loop adjustment and thereby achieves absolute synchronization. This is accomplished by interpolating through the central processing unit accumulated actual displacements of the mechanical element with computed ones and making any required corrections. Specifically, the master position counter is continuously read, divided by the proper ratios and compared to an axis actual position counter. If the mechanical element is actually ahead of its computed position along any axis, then the axis counter output frequency is decreased in order to make drive along the axis slower. If behind, the driving frequency is increased. 
     To generate a ramped pulse train for achieving acceleration, the processor periodically increments the rate generator a fixed amount (dv) and by making the period a programmable variable (dt), acceleration is derived by the ratio dv/dt. By use of a lookup table the acceleration parameter is converted to a constant which is loaded into an acceleration timer. When this timer interrupts processor operation, the processing unit checks to determine if it must either increment the rate generator (accelerate), decrement the rate generator (decelerate) or disable the timer, the latter being accomplished only when operation is at cruising velocity. 
     On a start command being written to the apparatus, the direction acceleration timer is initiated and ramp up status is accordingly reflected. At this time, half of the farthest distance (i.e., master distance) is loaded into an alarm comparator interconnected with the master position counter. When the comparator interrupts, the processor mode will change from the current condition to the ramp down mode. If there is a sufficient distance to allow the apparatus to ramp up to its maximum program velocity (cruising velocity), thee processsor will subtract the distance required to ramp up from the total distance and reload this amount into the alarm comparator. This distance value is the position at which the ramp down must begin. When each axis position counter reaches its final count or distance, an interrupt is generated to disable them and signal a completed movement. 
     A further aspect of the present invention is that multiple apparatus of the kind described may be synchronized to provide control of a maximum of as many as 48 axes by the use of a common velocity clock. 
    
    
     DESCRIPTION OF THE DRAWING 
     FIG. 1 is a perspective view of one form of apparatus for practicing the method of the present invention. 
     FIG. 2 is a schematic depiction of an orthogonal, three axis system. 
     FIG. 3 is a function block diagram of the circuit apparatus of this invention. 
    
    
     DESCRIPTION OF PREFERRED EMBODIMENTS 
     With reference now to the drawing and particularly FIGS. 1 and 2, the apparatus of this invention is identified generally as at 10 and is seen to include a mechanical element 11 which it is desired to move to a new location involving change along the x, y and z axes. For this purpose and in a way that will be described the element 11 is driven along a pair of racks 12 defined as the x direction, and along a thread shaft 13 arranged at 90 degrees to rack 12 to define the y direction. Driving motion along shaft 14 which is orthogonal to both rack 12 and thread shaft 13 establishes the z direction. 
     With particular reference to FIG. 2, it is clear that in order to accomplish one of the primary desiderata of this invention, namely, the vectoring movement from, say, the point 0 to x1, y1, z1 that the movements in the respective directions must be at different velocities or rates in accordance with the respective distances to travel. That is, the distance y1 is greater than either x1 or z1, so that to make a vector movement, it is necessary that the component movements in the x, y and z axes all be accomplished in the same period of time. This is accomplished generally here by providing separate and adjustable speed driving means for each axis, with driving speed of each being selected in accordance with the distance required to be traveled along that axis. Thus, in the example shown in FIG. 2, the y1 distance is greatest therefore the y drive for vectoring movement must be the fastest and the x and z drives being correspondingly slower. 
     MULTIAXIS DRIVE SIGNAL GENERATION 
     The basic drive means relied upon to position the mechanical element along each axis is a so-called step controller (not shown) which rotates its output or drive shaft a precise angular amount for each electrical pulse presented to its energizing terminals. Turning now to FIG. 3, the fundamental source for the drive pulses is pulse generator 15 which in a practical embodiment provides a pulse train having a frequency of 22 MHz. The pulses pass through a rate generator 16 the operation of which will be described later, after which the pulse frequency is divided by a fixed amount (e.g., 3) in a prescaler 17. Next, the prescaled pulse train is once more divided in a master frequency divider 18 by the fixed amount 183 which provides a maximum frequency input to the master position counter 19 of 40 KHz. 
     In a similaar manner, the prescaled pulse is fed along lead 20 to energize axis 0 frequency divider 21, axis 1 frequency divider 22 and axis 2 frequency divider 23. Each of the frequency dividers is adjusted by data from the central processing unit 24 to provide a pulse frequency in the same ratio to the master frequency as the ratio of the corresponding axis distance to the largest axis distance (master). 
     In accordance with initial programming, the various axes are allotted x, y and z coordinate designations. For purposes of the present description, it is assumed that axis 0 is the x-axis, axis 1 is the y-axis and axis 2 is the z-axis. Accordingly, axis 1 frequency dividers will be identical in frequency to the master (i.e., 40 KHz) and it will provide the fastest rate pulses to the step controller driving in the y direction, which pulses will also be stored in the axis 1 position counter 24. The axis 0 and axis 2 dividers will, in turn, provide pulses at respective rates proportional to the ratio of change along each axis to the master axis. Pulses from dividers 21 and 23 are individually stored in position counters 26 and 27 and drive step controllers to position in the x and z directions. 
     Also the central processor provides via a latched output port 28 signals for driving the various step controllers in the correct direction. Still further, a threshold signal Enable Drive is provided to the step controllers through the same port. 
     CLOSED-LOOP SYNCHRONIZATION 
     The open-loop operation just described will provide synchronized positioning along multiple axes accurate to within approximately 0.5%. Under certain circumstances greater accuracy is required and this is accomplished here by a closed-loop operation which will be described at this time. 
     Essentially, the philosophy employed is to compare a computed intermediate coordinate position along a selected axis with its actual position and then increase or decrease the drive rate of the step controller for that particular axis, as required, to bring the computed and actual values into agreement. 
     This is accomplished by continuously reading out the accumulated value in the master coordinate axis counter, which in our present example is axis 1 position counter 25, and storing this value in the memory of the central processing unit 24. Thelast stored value from 25 is multiplied by the ratio of the total coordinate change to be made along axis 0 to the total coordinate change to be made along master axis 1 which is the computed value of where the mechanical element 11 should be at that moment, assuming the master axis positioning to be accurate. The computed value of axis 1 position is stored in the computer memory. 
     The count value accumulated in the axis 0 position counter 26 is then read out and temporarily stored in the computer, which value is representative of the actual position of the element 11 along axis 0. 
     Comparison of the computed value and actual value of the mechanical element with respect to axis 0 is then made with a resulting determination of whether the actual position of the element 11 is ahead or behind of its computed position. As a result of this determination, the axis 0 frequency divider 21 is commanded by the computer to increase or decrease, as the case may be. By conducting the described closed-loop comparisons on a continuous basis, the highest degree of positioning accuracy is obtained. 
     Axis 2 may also be tested in the same manner and corrected as needed. 
     ACCELERATION AND DECELERATION 
     Since the drive system includes gears, shafts, mechanical element 11, and anything carried by element 11 which, of necessity, entails a substantial amount of mass, it is advisable that special steps be taken to obviate the expected adverse effects of inertia. These steps include accelerating drive at the start to compensate for standing inertia, and decelerating drive as the element 11 approaches its new position to prevent overshoot. 
     On start of operation, the acceleration timer 29 is enabled by the central processing unit and a ramp-up condition is reflected. At this same time, one-half of the master distance (i.e., longest axis change to be made) in position counter 19 is loaded into alarm comparator 30. When one-half the master axis distance is achieved the comparator 30 sends a signal along 31 through an appropriate control latch 32 and priority interrupt control 33 to the processor 24 causing a change to the ramp-down mode. 
     The rate generator 16 is selectively actuatable by a signal from latched output port 34 to provide either (a) a pulse train of increasing frequency (ramp-up), (b) a pulse train of decreasing frequency (ramp-down), or (c) constant frequency pulses (cruising velocity). In the manner described in the immediately preceding paragraph, the rate generator 16 presents a ramp-up condition for the first half of the distance to be traversed so that the various step controllers accelerate during this phase. On interruption at the half-way point the rate generator is switched to the ramp-down mode so that the step controllers will decelerate thereby preventing overshoot. 
     For those situations where the repositioning distance is sufficiently large, the ramp-up condition will maintain until the maximum programmed velocity is achieved (so-called cruising velocity). The processor will automatically subtract the distance required for ramp-up from the total master distance and reload this value in the alarm comparator 30. That is, the alarm comparator will now generate an interrupt signal at the point at which ramp-down must start. 
     When the final position is reached by mechanical element 11, a further interrupt is generated and the step controllers are all stopped. 
     With respect to the processor manner of generating a frequency pulse train, the processor increments the rate generator 16 a fixed amount dv for a period which is a programmable variable dt. The acceleration so derived, a=dv/dt is converted to a constant via a stored look-up table, which constant is loaded into acceleration timer 29. On interruption by the timer 29, the processor unit 24 commands the rate generator 16 to ramp-up, ramp-down or cruising velocity operation, and for the latter to disable timer 29 during that period. 
     In a practical construction of the invention, the following commercially available circuit apparatus were utilized for the indicated items: 
     pulse generator 15--Part Ser. No. 74S04 Texas Instruments Dallas, Tex. 
     rate generator 16--Part Ser. No. 7497 Texas Instruments Dallas, Tex. 
     prescaler 17--Part Ser. No. 74S163 frequency divider 18--Part Ser. No. AM 9513; position counter 19; Advanced Micro Devices; frequency dividers 21, 22, 23; position counters 25, 26, 27; alarm comparator 30 
     central processing unit 24--Model P8085A Intel Corporation 
     latched output port 28--Model P8255A-5,  Intel Corporation 
     acceleration timer 29--Model P8155 Intel Corporation 
     control latch 32--Part Ser. No. 74LS74, Texas Instruments, Dallas, Tex. 
     priority interrupt control 33--Model P8359A, Intel Corporation 
     A practical construction of the system of this invention was operated and accomplished the various functions described herein under control of the following program listing: ##SPC1## 
     In the preceding description, the manner of entering the positional data (e.g., x1, y1, z1) has not been discussed. It is contemplated that a common method of entry will be made via a peripheral (e.g., keyboard) to a data bus 35, which is shown by the three arrows also identified by the letters x, y and z. Optionally, the positional data may be entered into the system via a shaft encoder 36 which through a circuit 37 provides a direct input into the central processing unit 24 of both the amount of positional coordinate change and the direction thereof. This same information is entered into an up-down counter 38 and then to latch 32 for use in generating a termination of movement interrupt signal when the desired position is reached by the mechanical element.