Abstract:
Programming positioning apparatus is described for performing a programmed motion in a quick and smooth manner avoiding shock loads that shorten equipment life. 
     The described apparatus is a hard-wired digital system which is preprogrammed with respect to maximum acceleration and maximum velocity; receives the programmed distance data, makes the required calculations relating to the time periods the system operates according to a maximum acceleration mode, a maximum velocity mode and a maximum deceleration mode in order to perform the programmed motion at maximum speed while keeping the acceleration forces within acceptable limits; and produces motion command pulses supplied to the drive. The maximum acceleration can be held to a constant value fixed beforehand, or can be varied so that the acceleration will automatically adapt itself to produced inertia-forces or to the capability of the motor to drive its load.

Description:
BACKGROUND OF THE INVENTION 
     The invention relates to a programmable positioning apparatus, and also to acceleration control systems particularly useful therein. The invention is especially suited for use in numerical control machines for precisely positioning an article, such as a machine tool or a workpiece, a programmed distance and is therefore described with respect to that application. 
     The productivity of a numerical control machine tool is greatly influenced by the speed at which it performs a programmed motion. On the other hand, too rapid acceleration and deceleration or too high a velocity of operation can produce shock loads, undue friction, or other effects that shorten the life of the equipment. 
     An object of the present invention is to provide a programmable positioning system performing a programmed motion very quickly and smoothly so as to increase the productivity of the apparatus while at the same time eliminating shock loads and excessive velocities which are liable to shorten the life of the apparatus. 
     Another object of the invention is to provide a novel digital acceleration control system to control the acceleration and deceleration of a driven article according to a rate which may be fixed beforehand, or which may be permitted to vary with inertia-forces, drive capability, or the like. 
     SUMMARY OF THE PRESENT INVENTION 
     According to the invention, the apparatus controls the drive to first accelerate the article at a predetermined maximum rate of acceleration until either (a) the article attains a predetermined maximum velocity, or (b) the article traverses one-half the programmed distance before attaining the predetermined maximum velocity. When (a) occurs, the apparatus continuously computes the distance-to-go for the article to have moved its programmed distance, controls the drive to move the article at the predetermined maximum velocity until its distance-to-go is equal to the distance traversed to obtain the predetermined maximum velocity, and then decelerates the drive at the same rate as the predetermined maximum acceleration rate. When (b) occurs, the drive is controlled so that immediately after the article has traversed one-half the programmed distance, the article is decelerated at the same rate as the predetermined maximum acceleration rate. 
     More particularly, the apparatus of the present invention comprises data input means for inputting the programmed distance data (hereinafter referred to as &#34;D&#34;), acceleration data (hereinafter referred to as &#34;C&#34;), relating to the predetermined rate of acceleration, and velocity data (hereinafter referred to as &#34;V&#34;) relating to the predetermined maximum velocity. The apparatus computes or establishes the distance (hereinafter referred to as &#34;B&#34;) corresponding to the distance to be traversed by the article when accelerated at the predetermined rate of acceleration from zero velocity to the predetermined maximum velocity. Generally, the acceleration data (C) and velocity data (V) would be established and stored for each axis and remain unchanged, and only the distance data (D) would be programmed for each desired motion. 
     The apparatus further includes acceleration control means for generating an acceleration electrical signal corresponding to the predetermined rate of acceleration, and velocity control means for generating a velocity electrical signal corresponding to the predetermined maximum velocity. The apparatus continuously computes a distance (hereinafter referred to as &#34;d&#34;) corresponding to the remaining distance-to-go for the article to reach the programmed distance. Normally, the drive is controlled by the predetermined acceleration electrical signal so as to drive the article at the maximum acceleration rate, but the maximum velocity electrical signal is used to drive the article whenever the programmed distance D is more than twice the distance B, and the computed distance-to-go is more than the distance B but less than (D-B). 
     The systems described below are hard-wired digital systems, wherein the acceleration control means comprises an acceleration generator generating a first series of electrical pulses at a repetition rate corresponding to the predetermined rate of acceleration, and the velocity control means comprises a velocity generator generating a second series of electrical pulses at a repetition rate corresponding to the predetermined maximum velocity. The system, at the appropriate time and according to the conditions mentioned above, enables one or the other series of pulses to be used as the motion command pulses supplied to the drive. 
     The system further includes acceleration sign determining means monitoring the distance-to-go (d) and switching, in response thereto, the acceleration generator from acceleration operation to deceleration operation. 
     According to another aspect of the invention, the acceleration generator comprises a pulse generator producing pulses at a predetermined pulse repetition rate, a summing register, and means adding into the latter register during acceleration, and subtracting from it during deceleration, the pulses produced by the pulse generator. The acceleration generator further includes an error register, means clearing the error register at the start of the positioning operation, means adding into the error register the acceleration data (C) relating to the predetermined rate of acceleration, and means subtracting from the error register the quantity in the summing register whenever a pulse is generated by the pulse generator. A sign detector detects the sign of the error register, and so long as the error register is negative, a motion command pulse is produced. With each generation of a motion command pulse, the acceleration data (C) is added into the error register until the error register becomes zero or positive, at which time the generation of further motion command pulses ceases until the next subtraction of the amount in the summing register makes the error register negative. 
     The acceleration data (C) may be a constant value for each axis stored in the apparatus. It may be held fixed, or it may be influenced by a varying value, varying for example with the inertia-forces produced by the acceleration of the article or with the following-error occurring during the acceleration of the article. 
     Further features and advantages of the invention will be apparent from the description below. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The invention is herein described, by way of example only, with reference to several preferred embodiments thereof illustrated in the accompanying drawings, wherein: 
     FIG. 1 is a block diagram illustrating one form of positioning system constructed in accordance with the invention to provide a maximum acceleration, velocity and deceleration operation; 
     FIGS. 2a and 2b are diagrams helpful in understanding the present invention; 
     FIG. 3 is a block diagram of the Constant Acceleration Generator used in the system of FIG. 1; 
     FIG. 4 is a block diagram of the Mode Selection Logic used in the system of FIG. 1; 
     FIG. 5 is a block diagram of the Acceleration Sign Select Logic used in the system of FIG. 1; 
     FIG. 6 is a block diagram of the Constant Velocity Generator used in the system of FIG. 1; 
     FIG. 7 is a block diagram of the Termination Logic used in the system of FIG. 1; 
     FIG. 8 is a block diagram of a digital adaptive acceleration control system constructed in accordance with the invention; 
     FIG. 9 is a block diagram of a digital overload detector adaptive acceleration control system constructed in accordance with the invention; and 
     FIG. 10 is a chart illustrating the movement effected by a positioning system in accordance with the invention. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS 
     General Layout of FIGS. 1-7 System 
     FIG. 1 illustrates one form of positioning system constructed in accordance with the invention, but before proceeding with its description, it will be helpful to first refer to FIGS. 2a and 2b and the following preliminary explanation. 
     It is well known that the mechanical forces acting on a moving body are directly related to its acceleration. Thus, shock loads will be avoided if the acceleration is held at a prescribed value which has been selected to keep these forces within acceptable limits. In addition, every drive system has a limit as to the velocity at which it can operate, to avoid undue friction, etc., and if the velocity is held at the maximum value, such effects can also be kept within acceptable limits. 
     The positioning system of the present invention recognises the foregoing considerations, continuously makes the necessary computations, and automatically controls the acceleration and velocity of the drive at their maximum acceptable limits. 
     In positioning the article according to different programmed distances, either one of two situations may be encountered as illustrated in FIGS. 2a and 2b. 
     FIG. 2a illustrates the situation wherein the programmed distance &#34;D&#34; is greater than twice the distance &#34;B&#34;, the latter corresponding to the distance to be traversed by the article when accelerated at the maximum prescribed acceleration from zero velocity to the maximum prescribed velocity. In such a case, the article is driven during a first time interval (T1) at a velocity which increases at the maximum acceleration rate until it reaches the maximum prescribed velocity (Vm), at which time it is driven during a second time interval (T2) at a constant velocity (the prescribed maximum velocity Vm) until the third time interval (T3) wherein the velocity is decreased at the prescribed acceleration rate until it reaches zero velocity. Time interval T1 is the time it takes for the article to traverse distance B, when it reaches the prescribed maximum velocity, Vm; since the article is decelerated during time interval T3 at the same rate as it was accelerated during time interval T1, time interval T3 (which ends with zero velocity) will be exactly the same as time interval T1 (which started from zero velocity). 
     It will be appreciated that whenever the programmed distance D is more than twice the distance B, the control as illustrated in FIG. 2a will result in positioning the article in the shortest period of time permitted by the acceleration and velocity limitations of the system. 
     FIG. 2b illustrates the situation wherein the programmed distance &#34;D&#34; is less than twice the distance &#34;B&#34;. In such a case, the maximum velocity (Vm&#39;) will not be attained. Here, the article is driven at the prescribed maximum acceleration for a period of time T1&#39; until it traverses one-half the programmed distance D at which time it is decelerated at the prescribed maximum rate (during time interval T2&#39;) until it attains zero velocity. Such a control in this type of situation will result in the positioning of the article in the shortest possible time consistent with the prescribed maximum acceleration limitation. 
     FIG. 1 illustrates one form of positioning system constructed to operate as described above. The input data to this positioning system for each axis are quantities labeled V, C, and D, wherein, as indicated above: &#34;D&#34; is the programmed distance of axis motion, &#34;V&#34; is the prescribed maximum velocity for that axis, and &#34;C&#34; is a quantity that establishes the prescribed maximum acceleration and deceleration of the axis. 
     The quantities C and V determine the value of B, namely the distance required to reach the maximum prescribed velocity B for the prescribed maximum acceleration C. Generally, the arrangement would be that quantities V and C would be established and stored for each axis and remain unchanged; only the distance D would be programmed for each desired motion. The control would then automatically provide the acceleration maximum velocity and deceleration as had been prescribed. 
     Turning now to FIG. 1, the system therein illustrated comprises a data store 2 in which the operating parameters B, C and V are stored. This data establish the values of maximum acceleration, deceleration, and velocity. The quantity B is preferably established from C within the apparatus itself, so that only C and V are stored. This data may be stored as digital numbers in switches, read-only-memories, magnetic memories, or other media. The quantity V may alternatively be a potentiometer setting. The positioning system is arranged so that a variation in the value V will not affect the completion of the programmed motion with a deceleration to zero velocity. 
     Further included is a data store 4 for the programmed distance D. This store may be in the form of switches, integrated circuits, punched tape, magnetic tape or other media convenient for digital storage. Data store 4 will also contain the identification as to which axes are to operate, in what direction, and also auxilliary &#34;on-off&#34; commands for valves and motor starters. 
     A Mode Select Logic 6 receives the B and D data inputted from stores 2 and 4 via lines 5 and 7, respectively. It also receives data &#34;d&#34; relating to the distance-to-go as computed in Termination Logic Unit 8, the &#34;d&#34; data being fed thereto via line 9. Mode Select Logic Unit 6 determines if the axis positioning should be in the constant acceleration mode or in the constant velocity mode, and produces an enabling signal fed to the Constant Acceleration Generator 10 via line 11, or fed to the Constant Velocity Generator 12 via line 13. 
     The Constant Acceleration Generator 10, when enabled by the signal on line 11, receives the prescribed acceleration data via line 14 from store 2, and produces a series of pulses ΔDa at a repetition rate in accordance with the prescribed constant acceleration. In addition it receives, via line 16 from Acceleration Sign Select Logic 18, a sign signal which determines the sign of the acceleration, a positive signal determining acceleration and a negative signal determining deceleration. 
     The Constant Velocity Generator 12 receives the velocity data V via line 20 from data store 2 and, when enabled by an enabling signal on line 13 from Mode Select Logic 6, produces a series of pulses ΔDv at a repetition rate corresponding to the prescribed maximum velocity. 
     Pulses ΔDa are outputted from Constant Acceleration Generator 10 via line 24, and pulses ΔDv are outputted from Constant Velocity Generator 12 via line 26, both of the lines being connected to output line 28 where the enabled pulses appear as the axis motion command pulses ΔD applied to the respective axis drive. 
     Axis pulses ΔD are also supplied via line 30 to Termination Logic 8 which computes the distance-to-go &#34;d&#34; applied via line 9 to Mode Select Logic 6. Distance &#34;d&#34; is also applied to Acceleration Sign Select Logic 18 via line 32 and is used in determining the sign of Logic 18, that is whether Constant Acceleration Generator 10 operates in the acceleration mode or in the deceleration mode. 
     Termination Logic 8 is preloaded with the programmed distance D via line 34 and continuously computes the distance-to-go &#34;d&#34; which, as indicated above, is applied to the Mode Select Logic 6 via line 9 and to the Acceleration Sign Select Logic 18 via line 32. When the axis is at its programmed position (i.e., d = zero), Termination Logic 8 produces an &#34;axis-done&#34; signal on line 36 which is supplied to Read-Out Control Logic 38. 
     Similar systems are provided for each drive axis, and when the &#34;axis-done&#34; signals of all the axis are supplied (via lines 36a, 36b, 36c) to the Read-Out Control Logic 38, the latter selects the next programmed data from store 4 via line 40, and also performs any initializing required to start the next operation. 
     Read-Out Control Logic 38 also provides a &#34;start&#34; signal to gate 42 to preload the programmed distance data D from store 4 into Termination Logic 8. Further, it provides a &#34;clear&#34; signal via line 44 to the Constant Acceleration Generator 10, which signal resets the Constant Acceleration Generator so that the latter is always in a cleared condition at the start of a new positioning operation. 
     CONSTANT ACCELERATION GENERATOR 10 (FIG. 3) 
     The Constant Acceleration Generator 10 is shown more particularly in FIG. 3. It includes a pulse generator 46 producing pulses ΔM at a predetermined pulse repetition rate. As will be shown below, a simplification results if the rate of the ΔM pulses is the same as of the ΔDv pulses from the Constant Velocity Generator 12. 
     Pulses ΔM from generator 46 are fed to a summing register MR so that the contents of the latter register are the algebraic sum of the ΔM pulses. A sign signal is supplied via line 16 from the Acceleration Sign Select Logic 28 to specify whether the ΔM pulses should be added or subtracted in register MR. Addition will result in an acceleration, while a subtraction will result in a deceleration. The contents of register MR are always at zero at the start of a positioning motion. It is incremented in one direction during the acceleration and in the opposite direction in the deceleration, so that it will always return to zero at the end of the positioning motion. 
     The Constant Acceleration Generator 10 further includes an error register ER which is cleared via line 44 at the start of the programmed motion. After that, the contents of the error register ER reflect the results of a series of additions and subtractions. Subtracted from the error register is the quantity in register MR whenever a ΔM pulse is present. The acceleration data &#34;C&#34; inputted from line 14 is added to the error register as many times as necessary to maintain its contents zero or positive, the sign of the error register ER being detected by a sign detector 48. Whenever the contents of error register ER are negative, an output pulse is produced on line 24 which constitutes an axis motion command pulse ΔDa; it also causes the value C to be added into the error register ER. This operation repeats until the error register becomes zero or positive, at which time the production of the axis motion command pulses ΔDa ceases until the next subtraction of the quantity in register MR makes the error register ER negative again. 
     The Constant Acceleration Generator 10 operates as follows: 
     At the beginning of each programmed motion, register MR is zero (this being its state at the end of the preceding operation); the error register ER is also zero as it is cleared by the &#34;start&#34; signal on line 44. 
     Assuming a constant-acceleration mode signal is received on line 11 from the Mode Select Logic 6, pulse generator 46 feeds ΔM pulses to summing register MR via gate 50, line 52, gate 54 enabled by a positive signal on line 16 from the Acceleration Sign select Logic 18 and summing point 56. As will be shown later, the sign signal on line 16 is positive during the first or acceleration phase of a programmed motion whereby the ΔM pulses are added in register MR, and is negative in the later or deceleration phase of the programmed motion whereby the ΔM pulses are subtracted from register MR. 
     With each ΔM pulse, the quantity in register MR is subtracted from error register ER, this being effected via line 58, gate 60 and summing point 62. Sign detector 48 checks the sign of error register ER, and when it is negative, it produces, via gate 64, an axis motion command pulse ΔDa fed to the output line 24. These are the pulses fed to the drive during the acceleration and deceleration phases of the programmed motion. 
     With each axis motion command pulse ΔDa, the acceleration quantity &#34;C&#34; is added (via line 14, gate 66, and summing points 68, 62) into error register ER tending to make it zero or positive. When error register ER becomes zero or positive, the generation of the ΔDa pulses ceases, until the next ΔM pulses from the pulse generator makes the error register again negative by subtracting the contents of the summing register MR from the contents of the error register ER. 
     The arrangement described above produces a motion having a constant acceleration characteristic where the constant &#34;C&#34; defines the magnitude of the acceleration. This will be shown more particularly below particularly with respect to the example described in FIG. 10. 
     MODE SELECT LOGIC 6 (FIG. 4) 
     The Mode Select Logic 6 is shown in FIG. 4. The programmed distance data D and the value &#34;B&#34; defined above are supplied (via lines 7 and 5 respectively) to a comparator 70 which determines whether &#34;D&#34; is less than &#34;28.&#34; If it is, a signal is supplied on its output line 72; and if it is not, a signal is supplied on its output line 74. 
     In addition, the distance-to-go &#34;d&#34; (computed in Termination Logic 9 in a manner to be described below) is fed to two other comparators, 76 and 78. In comparator 76, the value &#34;d&#34; is compared to &#34;B.&#34; If it is found to be less than &#34;B,&#34; an output signal is supplied on line 80 whereas it is found to be greater than &#34;B&#34;, and output signal is supplied on line 82. In comparator 78, the distance-to-go &#34;d&#34; is compared to &#34;D&#34; - &#34;B&#34;, and if it is found to be greater, an output signal is supplied on line 84, whereas if it is found to be less, an output signal is supplied on line 86. 
     Lines 72, 80 and 84 are all directly connected to line 11, on which appears the Constant Acceleration Mode signal; whereas lines 74, 82 and 86 are all connected via gates 88, 90, to line 13, on which appears the Constant Velocity Mode signal. 
     From the foregoing it will be appreciated that a Constant Acceleration Mode signal will appear on line 11 if a signal appears on any one of lines 72, 80, 84. That is to say, the Mode Select Logic 6 will enable the Constant Acceleration Generator 10 to generate the motion command pulses ΔDa at all times except where the programmed distance &#34;D&#34; is more than twice &#34;B&#34; (determined by comparator 70), and the computed distance &#34;d&#34; is more than &#34;B&#34; but less than &#34;D-B&#34; (determined by comparators 76 and 78 respectively). During such times, no Constant Acceleration Mode signal will appear on line 11, thereby disabling the Constant Acceleration Generator 10, but rather a Constant Velocity Mode signal will appear on line 13, thereby enabling the Constant Velocity Generator 12. 
     ACCELERATION SIGN SELECT LOGIC 18 (FIG. 5) 
     FIG. 5 illustrates the Acceleration Sign Select Logic 18. The distance-to-go &#34;d&#34; supplied via line 9 is compared in comparator 92 with the value &#34;B&#34;, and where &#34;d&#34; is less, a signal is produced on output line 94. In addition, the distance-to-go &#34;d&#34; is compared with one-half the programmed distance &#34;D&#34; in comparator 96, and if it is found to be less, an output signal is produced on line 98. Further, the programmed distance &#34;D&#34; is compared in comparator 100 with twice the value &#34;B,&#34; and if found to be greater, an output signal is produced on line 102, whereas if it is found to be equal or less, an output signal is produced on line 104. 
     An output signal on both lines 94 and 102 will (via gate 106) produce an output signal on line 16; and similarly, an output signal on both lines 98 and 104 will (via gate 108) produce an output signal on line 16. The signal on line 16 is normally of negative sign to produce a deceleration operation, and the absence of a negative signal indicates a positive signal output to command an acceleration operation, this being schematically indicated by the provision of inverter 110. 
     From the foregoing, it will be seen that a minus signal producing a deceleration operation will result whenever: (1) the programmed distance &#34;D&#34; is greater than twice the distance &#34;B&#34; (comparator 100), and in addition the ditsnce-to-go &#34;d&#34; is less than the distance &#34;B&#34; (comparator 92); or (2) the programmed distance &#34;D&#34; is less than twice the distance &#34;B&#34; (comparator 100), and also the distance-to-go &#34;d&#34; is less than one-half the programmed distance &#34;D&#34; (comparator 96). 
     CONSTANT VELOCITY GENERATOR 12 (FIG. 6) 
     The Constant Velocity Generator 12 is shown in FIG. 6. It receives the programmed velocity data &#34;V&#34; via line 20, and the Constant Velocity Mode signal from Mode Select Logic 6 via line 13, and produces a series of digital pulses ΔDv on line 26. The latter pulses constitute the axis motion command pulses supplied to the drive when the system is operating according to the Constant Velocity Mode. 
     Each ΔDv pulse represents the command to the axis drive to move a step of motion, which step depends on the resolution of the axis drive system. The rates of the resultant commanded motion must be at the prescribed velocity &#34;V,&#34; which has been established as the fastest that is desired. A number of different approaches are available that will satisfy the logic needs of this type of system. 
     FIG. 6 illustrates but one method for providing the necessary ΔDv pulses. It includes a fixed frequency pulse generator 110 which produces pulses at a rate higher than will be needed. This may be crystal-controlled if great accuracy is desired, although generally there will be no need for high precision for this frequency. A rate multiplier 112, which may be one of the integrated-circuit units commercially available today, is used to produce an output which is the product of the fixed frequency and the digital number &#34;V&#34; supplied via line 20. The output of rate multiplier 112 is gated via gate 114 by the Constant Velocity Mode signal supplied on line 13 from the Mode Select Logic 6, to produce the axis motion command pulses ΔDv. 
     The rate of generation of the ΔDv pulses is preferably to be the same as that of the ΔM pulses in the Constant Acceleration Generator 10 in order to simplify the circuits involved. 
     From the foregoing, it will be seen that whenever the Constant Acceleration Generator 10 is enabled by Mode Select Logic 6, the ΔDa pulses produced by that generator will appear on output line 28 as the axis motion command pulses ΔD supplied to the drive, whereas if the Constant Velocity Generator 12 is enabled, its output pulses ΔDv will appear on output line 28 as the axis motion command pulses. 
     The ΔD pulses appearing on line 28 are supplied to the axis drive for effecting the positioning movement, and in addition, are supplied via line 30 to Termination Logic 8. 
     TERMINATION LOGIC 8 (FIG. 7) 
     Termination Logic 8 is shown in FIG. 7. It is preloaded with the programmed distance D via line 34, which distance is stored in its register dR. The axis motion command pulses ΔD appearing on its input line 30 are subtracted, via summing point 116, from the programmed distance D preloaded into register dR, so that the quantity in that register is always the distance-to-goal &#34;d.&#34; This value appears on output line 9. 
     A zero detector 118 continuously monitors the value &#34;d&#34; in register &#34;dR&#34;, and when it is zero, it produces an &#34;axis done&#34; signal on output line 36. As indicated above with respect to the description of FIG. 1, when an &#34;axis-done&#34; signal is produced with respect to all the axes, this is conveyed to the Program-Read-Out Control Logic 38, causing the latter to initiate a new operation. 
     OPERATION OF SYSTEM OF FIGS. 1-7 
     The operation of the system illustrated in FIG. 1-7 will be apparent from the foregoing description. The maximum acceleration of the system is prescribed by quantity &#34;C,&#34; and the maximum velocity is prescribed by quantity &#34;V,&#34; both of which are stored in data store 2. From the latter data, there is established the value &#34;B,&#34; which corresponds to the distance to be traversed by the article when accelerated at the prescribed maximum acceleration from zero velocity to the prescribed maximum velocity. 
     The foregoing information is introduced, together with the programmed distance D from data store 4, into Mode Select Logic 6, which determines whether the system is to operate according to the Constant Acceleration Mode or according to the Constant Velocity Mode. If according to the Constant Acceleration Mode, an enabling signal is produced on line 11 enabling the Constant Acceleration Generator 10 to produce a series of outpt pulses ΔDa constituting the axis motion command pulses ΔD; and if a Constant Velocity Mode operation is determined, an enabling signal is produced on output line 13 enabling Constant Velocity Generator 12 to produce the digital pulses ΔDv constituting the axis motion command pulses ΔD. Acceleration Sign Select Logic 18 also receives the foregoing data, and in addition, receives the distance-to-go &#34;d&#34; computed in Termination Logic 8, and produces an output signal on line 16 the sign of which causes the Constant Acceleration Generator 10 to operate according to an acceleration operation or a deceleration operation. 
     The axis motion command pulses ΔD appearing on line 28 are supplied to the axis drive, and in addition, to Termination Logic 8 which computes the distance-to-go &#34;d.&#34; When &#34;d&#34; is zero, the operation is completed for that axis, and an &#34;axis done&#34; signal is produced on line 36 to the Read-Out Control Logic 38 telling it to start a new program read-out operation. 
     It will thus be seen that the digital system illustrated in FIGS. 1-7 produces a precisely controlled motion consisting of an acceleration at a constant maximum rate, a maximum velocity, and a deceleration at the constant maximum rate until the article is moved to the programmed position, at which time the velocity is zero. The acceleration and peak velocity are at prescribed values, and to keep the positioning time to a minimum, the largest possible values are assigned to these parameters consistent with what the system is capable of withstanding. 
     VARYING THE ACCELERATION AND DECELERATION 
     As indicated earlier, one of the limitations in a positioning system is that the inertia force produced by the acceleration must be within the mechanical stress safety limits and the drive motor capability. But these forces are also dependent on the weight as well as the acceleration of the moving members. A given drive system will be able to move lighter weights with greater acceleration than heavier ones. If the weight of what is to be positioned does not always remain the same, but can vary considerably, then it would be desirable to provide for changing the value of &#34;c&#34; which determines the commanded acceleration. Otherwise the acceleration would have to be established at a low value sufficient to suit the heaviest object that may have to be positioned, while objects of lesser weight will take longer to be moved than need be. Thus it is desirable for some applications to be able to vary the acceleration. This can be accomplished in a number of different ways. 
     One way of varying the acceleration to accommodate different loads, is to identify the different loads and store a value of &#34;C&#34; in the memory for that particular load. The identification can be from a coded number read from the workpiece, tote box or pallet entered by the operator by a selector switch or a keyboard. A drawback of this method is that it will require considerable hardware or memory capacity for storing the required information, and moreover, it could handle only those objects for which advanced preparation had been made. 
     Another manner of accommodating different objects to be positioned would be to weight the object, for example by a load-cell prior to the programmed motion, and either compute or extract from a store the appropriate quantity &#34;C&#34; for that weight. The disadvantages mentioned in the preceding paragraph would also apply to some extent to this approach. 
     SYSTEM OF FIG. 8 
     FIG. 8 illustrates another arrangement that could be used for varying the acceleration data &#34;C&#34; to monitor the inertia forces. In the system of FIG. 8, a force-sensor 120 is used to monitor the inertia forces, and produces an output to a comparator 122 which compares the sensed force with a limit force prescribed by input line 124. 
     In the system of FIG. 8, the maximum acceleration data &#34;C&#34; is stored in register &#34;CR&#34;. In this case, the quantity &#34;C&#34; is inversely proportional to the acceleration that it will produce; thus, to decrease the acceleration, the quantity &#34;C&#34; must be increased in value. 
     The system of FIG. 8 establishes a limit as to the maximum acceleration attainable, by not allowing the quantity &#34;C&#34; to go below a value of &#34;MIN-C&#34;. The latter quantity is set at a value that will not cause the acceleration of light-weight objects to be excessive. The &#34;MIN-C&#34; value is fed into register CR via gate 126 at the start of the programmed operation. This value is also fed to a comparator 128 which continuously checks to see whether the value &#34;C&#34; is greater than the &#34;MIN-C&#34; value. 
     The system of FIG. 8 operates as follows: 
     The servo or stepper motor 130 continuously drives the load 132 at the constant acceleration prescribed by the value &#34;C&#34; which is stored in register CR and which is fed to the Positioning Control system 134. The latter system provides the axis motion command pulses ΔD to the Power Drive 136 as described above. Register CR, which controls the acceleration of the Positioning Control system 134, is loaded with the &#34;MIN-C&#34; data at the start of the programmed motion, via gate 126. 
     A pulse generator 138 supplies the pulses for modifying the quantity &#34;C&#34; in register CR. The output of pulse generator 138 is applied to a gate 140 which gate, when enabled by the acceleration enabling signal, produces ΔC pulses which are supplied to a pair of gates 142, 144 at the two output ends of comparator 122. 
     Whenever the force sensed by sensor 120 is greater than the limit, as determined by comparator 122, gate 142 is opened to add a ΔC pulse to register C, thereby increasing the value in the register and decreasing the acceleration. On the other hand, when the sensed force is less than the force limit, gate 144 is opened rather than gate 142. If at the time gate 144 is opened, the &#34;C&#34; value in register CR is greater than the initial &#34;MIN-C&#34; value, gate 146 is opened and a ΔC pulse is subtracted from the value in register CR, thereby decreasing the &#34;C&#34; value therein, and increasing the acceleration. 
     SYSTEM OF FIG. 9 
     FIG. 9 illustrates another system for automatically adapting the value of the acceleration to suit the capability of the motor to drive the load. The system of FIG. 9 is based on monitoring the following-error, i.e., the difference between the actual and the commanded positions of the load. A digital signal indicating the value of the following-error will often be available from the drive system itself, but if not available, the necessary hardware (a number of which are known) can be provided. 
     In the system of FIG. 9, the motor 150 drives the load 152 in accordance with Positioning Control system 154 which provides the command motion pulses ΔD supplied to the power drive 156 for driving the motor. The Positioning Control system 154 receives the acceleration data &#34;C,&#34; which is normally stored in a register CR, and supplies the motion command pulses ΔD to the power drive 156 for driving the motor 150. 
     The motion command pulses ΔD are also fed to a following-error register FER, where they are accumulated to thereby provide an indication in that register of the commanded position of the load. The actual position of the load is determined by position transducer 158, which supplies actual-position pulses ΔP to following-error register FER, being subtracted from that register. The output of the following-error register thus represents the following-error between the commanded and actual positions. 
     The C-register CR is preloaded with the &#34;MIN-C&#34; data at the start of the operation via gate 159. 
     A comparator 160 receives this following-error in one input 161 and compares it with &#34;error-limit&#34; information supplied through another input 162. If the following-error is greater than the limit, an output signal is applied to summing point 163 to thereby add a ΔC acceleration pulse via gate 164 to the C-register CR. This increases the value in register CR, thereby reducing the acceleration of the motor drive as explained above. 
     The system of FIG. 9 operates as follows: 
     Prior to the start of the positioning motion, the quantity &#34;C&#34; is initialized at a value of &#34;MIN-C,&#34; via gate 159 which provides the maximum acceleration that is desired. If the force required to overcome the inertia of the load at that commanded acceleration is greater than the drive motor can supply, the actual position will not keep up with the commanded position, and the following-error will increase. Generally, the drive system will be arranged to accommodate a limited amount of following-error; beyond that limit the drive system may lose track of the position, and the motion may be uncontrolled. Should the situation continue of a commanded acceleration calling for a motor drive response greater than can be produced, the operating limits of the following error will be exceeded. 
     An operating limit for the following-error is established by comparator 160 to provide the required margin of safety. If during the acceleration portion of the motion, the following-error should exceed that operating limit, the quantity in register CR is increased via gate 164, which thereby reduces the commanded acceleration. The commanded acceleration will continue to be reduced until the following-error becomes less than the operating limit. When this is done, the value of the commanded acceleration established by the quantity &#34;C&#34; will have been made slightly less than the actual acceleration capability available from the drive system for that particular inertia and friction loads that are present for that motion. 
     After the acceleration to the prescribed peak velocity is complete, the value of &#34;C&#34; will be kept unchanged. Its value will determine the precise distance from the programmed end point to initiate the slow-down. It will also determine the value of the constant deceleration to cause the motion commanded to be completed with a zero velocity. 
     It should be noted that the drive motor for a given inertia load can decelerate quicker than it can accelerate. The reason for this is that during acceleration the friction load will reduce the drive system force available to increase the velocity, while during deceleration, the friction adds to the force supplied by the motor to help slow-down the velocity. The significance of that fact is that the value of &#34;C&#34; determined so as to match the acceleration capabilities of the drive, is thereby assured of being adequate for that drive system to follow the deceleration as commanded. 
     EXAMPLE (FIG. 10) 
     FIG. 10 illustrates one example of the trace generated by the novel positioning system having constant acceleration and deceleration. 
     This example has the following parameters: 
     
         C = 21 
    
     Acceleration, (+ ΔM), range of distance: 
     
         O ≦ D &lt;60 
    
     deceleration, (- ΔM), range of distance: 
     
         60 ≦ D &lt; 120 
    
     
         T = unit of time 
    
     
         T = Σ/Δ/ 
    
     The algorithms that follow state the logic operations shown in FIG. 3 that result in the constant acceleration operation. 
     
         (1) E.sub.OLD + (ΔDa) . C - (ΔM) . M = E.sub.NEW 
    
     
         (2) m = Σ(Δm) . s.sub.a 
    
     
         (3) ΔD.sub.a = (D&lt;O) 
    
     Here: 
     ΔD a  = the axis motion command pulse generated by this logic 
     ΔM = timing pulse supplied at a fixed frequency 
     S a  = acceleration sign, plus for acceleration and minus for deceleration 
     C = constant which determines the value of the acceleration 
     M = number of timing pulses produced during the acceleration from zero to the current velocity. During deceleration it is the number of timing pulses that will be produced as the velocity goes from its current value to zero at the motion end-point. The velocity is the commanded value. 
     For convenience in the tabulating of the example, the control algorithm is arranged in the following form: 
     
         E.sub.2 - (ΔM) . M = E.sub.1 
    
     
         e.sub.1 + (Δda) . C = E.sub.2 
    
     The value of &#34;M&#34;, the number of time units at which the deceleration will begin can be determined from eqn. (4) ##EQU1## Here 
     
         d = 60 
    
     
         C = 21 
    
     
         m = ? 
    
     Solving, we have: 
     m 2  +  m - 2520 = O 
     
         m = 49.7029 
    
     or to the nearest integer, M = 50, the point deceleration starts. That value will be used to compute the exact value of &#34;D&#34; ##EQU2## or derived from eqn. (6) ##EQU3## Here, we will let D 1  and M 1  be the current point and the quantities D 2  and M 2  be the end point of the acceleration. Then: 
     D 2  =  60 
     M 2  =  50 (see above) ##EQU4## 
     Next needed is the formula to compute the position during the deceleration, in this example the total distance is 120. As the M-quantity is symmetrical as it is measured from the starting point for acceleration and from the end-point for deceleration, therefore the following formula can be written: ##EQU5## Equations (7) and (8) are used to compute the exact position. The error is the difference between the generated and the computed position, &#34;D.&#34;  Note that on the average the error is well below one unit of position. That indicates the precise accuracy at which this novel positioning system generates a constant acceleration and deceleration. 
     It will be seen that the foregoing algorithms, and the acceleration control system described above operating in accordance therewith, could be used in other systems for coordinating a first quantity to a second quantity and a third quantity so that the first quantity varies according to the square of the second quantity at a rate according to the third quantity. In the acceleration control system described, the first quantity is distance, the second quantity is time, and the third quantity is the desired rate of acceleration, which can be constant or variable as described above. However, such a system could be used in other applications, for example where the second quantity is units of distance or of angular rotation, and the third quantity is a constant or variable quantity. 
     Many other variations, modifications and applications of the illustrated embodiments will be apparent. 
     
         __________________________________________________________________________GENERATED                       COMPUTED__________________________________________________________________________T     M    E.sub.1            ΔD               ΣEΔD                     E.sub.2                           ΣEΔD                                  Error__________________________________________________________________________0     0    0     0  0     01     1    -1    1  1     20    0.024 -0.9762     2    18    03     3    15    04     4    11    05     5    6     06     6    0     0              0.864 -0.1367     7    -7    1  2     14    1.176 -0.8248     8    6     0              1.536 -0.4649     9    -3    1  3     18    1.944 -1.05610    10   8     0              2.400 -0.60011    11   -3    1  4     18    2.904 -1.09612    12   6     0              3.456 -0.54413    13   -7    1  5     14    4.056 -0.94414    14   0     0              4.704 -0.29615    15   -15   1  6     6     5.400 -0.60016    16   -10   1  7     11    6.144 -0.85617    17   -6    1  8     15    6.936 -0.06418    18   -3    1  9     18    7.776 -1.22419    19   -1    1  10    20    8.664 -1.33620    20   0     0              9.600 -0.40021    21   -21   1  11    0     10.584                                 -0.41622    22   -22   1  12    -1    11.616                                 -0.384            1  13    2023    23   -3    1  14    18    12.696                                 -1.30424    24   -6    1  15    15    13.824                                 -1.17625    25   -10   1  16    11    15.000                                 -1.00026    26   -15   1  17    6     16.224                                 -0.77627    27   -21   1  18    0     17.496                                 -0.50428    28   -28   1  19    -7    18.816                                 -0.184            1  20    1429    29   -15   1  21    6     20.184                                 -0.81630    30   -24   1  22    -3    21.600                                 -0.400            1  23    1831    31   -13   1  24    8     23.064                                 -0.93632    32   -24   1  25    -3    24.576                                 -0.424            1  26    1833    33   -15   1  27    6     26.136                                 -0.86434    34   -28   1  28    -7    27.744                                 -0.256            1  29    1435    35   -21   1  30    0     29.400                                 -0.60036    36   -36   1  31    -15   31.104                                 +0.104            1  32    637    37   -31   1  33    -10   32.856                                 -0.144            1  34    1138    38   -27   1  35    -6    34.656                                 -0.344            1  36    1539    39   -24   1  37    -3    36.504                                 -0.496            1  38    1840    40   -22   1  39    -1    38.400                                 -0.600            1  40    2041    41   -21   1  41    0     40.344                                 -0.65642    42   -42   1  42    -21   42.336                                 +0.336            1  43    043    43   -43   1  44    -22   44.376                                 +0.376            1  45    -1            1  46    2044    44   -24   1  47    -3    46.464                                 -0.536            1  48    1845    45   -27   1  49    -6    48.600                                 -0.400            1  50    1546    46   -31   1  51    -10   50.784                                 -0.216            1  52    1147    47   -36   1  53    -15   53.016                                 +0.016            1  54    648    48   -42   1  55    -21   55.296                                 +0.296            1  56    049    49   -49   1  57    -28   57.624                                 +0.624            1  58    -7            1  59    1450    50   -36   1  60    -15   60.000                                 0.000            1  61    651    49   -43   1  62    -22   62.376                                 0.376            1  63    -1            1  64    2052    48   -28   1  65    -7    64.704                                 -0.296            1  66    1453    47   -33   1  67    -12   66.984                                 -0.016            1  68    954    46   -37   1  69    -16   69.216                                 0.216            1  70    555    45   -40   1  71    -19   71.400                                 0.400            1  72    256    44   -42   1  73    -21   73.536                                 0.536            1  74    057    43   -43   1  75    -22   75.624                                 0.624            1  76    -1            1  77    2058    42   -22   1  78    -1    77.664                                 -0.336            1  79    2059    41   -21   1  80    0     79.656                                 -0.34460    40   -40   1  81    -19   81.600                                 0.600            1  82    261    39   -37   1  83    -16   83.496                                 0.496            1  84    562    38   -33   1  85    -12   85.344                                 0.344            1  86    963    37   -28   1  87    -7    87.144                                 0.144            1  88    1464    36   -22   1  89    -1    88.896                                 -0.104            1  90    2065    35   -15   1  91    6     90.600                                 -0.40066    34   -28   1  92    -7    92.256                                 0.256            1  93    1467    33   -19   1  94    2     93.864                                 -0.13668    32   -30   1  95    -9    95.424                                 0.424            1  96    1269    31   -19   1  97    270    30   -28   1  98    -7    98.400                                 0.400            1  99    1471    29   -15   1  100   6     99.816                                 -0.18472    28   -22   1  101   -1    101.184                                 0.184            1  102   2073    27   - 7   1  103   14    102.504                                 -0.49674    26   -12   1  104   9     103.776                                 -0.22475    25   -16   1  105   5     105.000                                 0.00076    24   -19   1  106   2     106.176                                 0.17677    23   -21   1  107   0     107.304                                 0.30478    22   -22   1  108   -1    108.384                                 0.384            1  109   2079    21   -1    1  110   20    109.416                                 -0.58480    20   0     0              110.40081    19   -19   1  111   2     111.336                                 0.33682    18   -16   1  112   5     112.224                                 0.22483    17   -12   1  113   9     113.064                                 0.06484    16   -7    1  114   14    113.856                                 -0.14485    15   -1    1  115   20    114.600                                 -0.40086    14   6     0              115.29687    13   -7    1  116   14    115.944                                 -0.05688    12   2     0              116.54489    11   -9    1  117   12    117.096                                 0.09690    10   2     0              117.60091    9    -7    1  118   14    118.056                                 0.05692    8    6     0              118.46493    7    -1    1  119   20    118.824                                 -0.17694    6    14    0              119.136                                 0.13695    5    9     0              119.400                                 0.40096    4    5     097    3    2     098    2    0     0              119.904                                 0.90499    1    -1    1  120   20    119.856                                 -0.144100   0                         120.000                                 0.000__________________________________________________________________________